From 3255a6349d54afcd910d0eac3a5ff9d4b1d4e9a2 Mon Sep 17 00:00:00 2001 From: Eduardo Dantas Date: Sat, 9 Sep 2023 13:02:25 -0300 Subject: [PATCH 01/10] fix: items xml loading (wrong attributes) (#1584) Fix from: https://github.com/opentibiabr/canary/commit/6a7a19e3361c4a6dabf6e65f1ce9a3bb0abc448f For use of 13.21 protocol: https://github.com/opentibiabr/canary/pull/1523 --- data/items/items.xml | 4681 +++++++++-------------- src/items/functions/item/item_parse.cpp | 7 + src/items/functions/item/item_parse.hpp | 2 + src/items/items.hpp | 1 + src/items/items_definitions.hpp | 1 + 5 files changed, 1881 insertions(+), 2811 deletions(-) diff --git a/data/items/items.xml b/data/items/items.xml index 407a6819416..bda90e379c8 100644 --- a/data/items/items.xml +++ b/data/items/items.xml @@ -224,8 +224,7 @@ - + @@ -249,48 +248,42 @@ - + - + - + - + - + - + @@ -367,19 +360,16 @@ - + - + - + @@ -405,27 +395,23 @@ - + - + - + - + @@ -511,18 +497,15 @@ - + - + - + @@ -570,68 +553,59 @@ - + - + - + - + - + - + - + - + - + @@ -641,8 +615,7 @@ - + @@ -652,8 +625,7 @@ - + @@ -663,8 +635,7 @@ - + @@ -674,8 +645,7 @@ - + @@ -685,8 +655,7 @@ - + @@ -698,8 +667,7 @@ - + @@ -711,8 +679,7 @@ - + @@ -724,16 +691,14 @@ - + - + @@ -1146,8 +1111,7 @@ - + @@ -2396,8 +2360,9 @@ - + + + @@ -2524,11 +2489,11 @@ - + - + @@ -2544,13 +2509,12 @@ - + - + @@ -2563,8 +2527,7 @@ - + @@ -2577,15 +2540,13 @@ - + - + @@ -3532,11 +3493,11 @@ - + - + @@ -3556,27 +3517,27 @@ - + - + - + - + - + - + @@ -4159,67 +4120,67 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4344,11 +4305,11 @@ - + - + @@ -4708,8 +4669,9 @@ - + + + @@ -4787,91 +4749,91 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5674,7 +5636,7 @@ - + @@ -5682,7 +5644,7 @@ - + @@ -5743,8 +5705,7 @@ - + @@ -5819,32 +5780,32 @@ - + - + - + - + - + - + - + @@ -5867,7 +5828,7 @@ - + @@ -5901,11 +5862,11 @@ - + - + @@ -5945,7 +5906,7 @@ - + @@ -6005,7 +5966,7 @@ - + @@ -6216,8 +6177,7 @@ - + @@ -6258,8 +6218,7 @@ - + @@ -6267,8 +6226,7 @@ - + @@ -7007,8 +6965,7 @@ - + @@ -7018,8 +6975,7 @@ - + @@ -7034,8 +6990,7 @@ - + @@ -7123,56 +7078,49 @@ - + - + - + - + - + - + - + @@ -7586,14 +7534,14 @@ - - - - - - - + + + + + + + + @@ -7957,8 +7905,7 @@ - + @@ -8066,8 +8013,7 @@ - + @@ -9109,8 +9055,7 @@ - + @@ -9210,19 +9155,19 @@ - + - + - + - + @@ -9301,13 +9246,15 @@ - + + + - + + + @@ -10162,8 +10109,7 @@ - + @@ -10228,8 +10174,7 @@ - + @@ -10423,18 +10368,16 @@ - + - + - + @@ -10454,7 +10397,7 @@ - + @@ -10491,8 +10434,7 @@ - + @@ -10667,8 +10609,7 @@ - + @@ -10750,8 +10691,7 @@ - + @@ -10804,8 +10744,7 @@ - + @@ -12346,8 +12285,7 @@ - + @@ -12697,8 +12635,7 @@ - + @@ -13143,12 +13080,12 @@ - + - + + + @@ -13464,7 +13401,7 @@ - + @@ -13620,8 +13557,7 @@ - + @@ -13801,7 +13737,7 @@ - + @@ -13823,8 +13759,7 @@ - + @@ -13839,19 +13774,19 @@ - + - + - + @@ -13965,8 +13900,7 @@ - + @@ -13974,24 +13908,20 @@ - + - + - + - + @@ -14029,8 +13959,8 @@ - + + @@ -14050,15 +13980,13 @@ - + - + @@ -14076,14 +14004,12 @@ - + - + @@ -14109,8 +14035,7 @@ - + @@ -14138,8 +14063,7 @@ - + @@ -14160,15 +14084,15 @@ - + - + - + + @@ -14235,8 +14159,7 @@ - + @@ -14276,8 +14199,7 @@ - + @@ -14302,8 +14224,7 @@ - + @@ -15182,8 +15103,7 @@ - + @@ -15390,7 +15310,7 @@ - + @@ -15414,8 +15334,7 @@ - + @@ -15836,8 +15755,7 @@ - + @@ -15890,7 +15808,7 @@ - + @@ -15978,7 +15896,7 @@ - + @@ -15986,11 +15904,11 @@ - + - + @@ -16002,20 +15920,18 @@ - + - + - + @@ -16028,19 +15944,19 @@ - + - + - + - + @@ -16048,17 +15964,17 @@ - + - + - + @@ -16071,11 +15987,11 @@ - + - + @@ -16085,11 +16001,11 @@ - + - + @@ -16109,15 +16025,14 @@ - + - + @@ -16157,8 +16072,7 @@ - + @@ -16314,8 +16228,7 @@ - + @@ -16894,7 +16807,7 @@ - + @@ -16958,8 +16871,7 @@ - + @@ -16973,8 +16885,7 @@ - + @@ -16993,7 +16904,7 @@ - + @@ -17100,14 +17011,12 @@ - + - + @@ -17379,21 +17288,18 @@ - - + + - - + + - - + + @@ -17445,8 +17351,7 @@ - + @@ -17462,8 +17367,7 @@ - + @@ -17501,8 +17405,7 @@ - + @@ -17533,8 +17436,7 @@ - + @@ -17543,8 +17445,7 @@ - + @@ -17560,8 +17461,7 @@ - + @@ -17576,8 +17476,7 @@ - + @@ -17601,8 +17500,7 @@ - + @@ -17714,8 +17612,7 @@ - + @@ -17812,8 +17709,7 @@ - + @@ -17829,8 +17725,7 @@ - + @@ -17988,8 +17883,7 @@ - + @@ -17998,8 +17892,7 @@ - + @@ -18008,8 +17901,7 @@ - + @@ -18071,8 +17963,7 @@ - + @@ -18126,8 +18017,7 @@ - + @@ -18144,8 +18034,7 @@ - + @@ -18154,34 +18043,32 @@ - + - + - + - + - + - - + + @@ -18285,8 +18172,7 @@ - + @@ -18353,8 +18239,7 @@ - + @@ -18409,8 +18294,7 @@ - + @@ -18425,8 +18309,7 @@ - + @@ -18531,14 +18414,12 @@ - + - + @@ -18635,7 +18516,7 @@ - + @@ -18659,8 +18540,7 @@ - + @@ -18668,14 +18548,12 @@ - + - + @@ -18697,12 +18575,10 @@ - + - + @@ -18723,8 +18599,7 @@ - + @@ -18840,8 +18715,7 @@ - + @@ -18881,7 +18755,7 @@ - + @@ -19008,8 +18882,7 @@ - + @@ -19019,7 +18892,7 @@ - + @@ -19027,8 +18900,7 @@ - + @@ -19278,7 +19150,7 @@ - + @@ -19490,14 +19362,14 @@ - + + + - + @@ -19513,8 +19385,7 @@ - + @@ -19530,24 +19401,21 @@ - + - + - + @@ -19562,8 +19430,7 @@ - + @@ -19573,8 +19440,7 @@ - + @@ -19583,8 +19449,7 @@ - + @@ -19594,8 +19459,7 @@ - + @@ -19621,8 +19485,7 @@ - + @@ -19643,8 +19506,7 @@ - + @@ -19652,8 +19514,7 @@ - + @@ -19680,8 +19541,7 @@ - + @@ -19882,8 +19742,7 @@ - + @@ -20031,17 +19890,17 @@ - + - + - + @@ -20068,8 +19927,7 @@ - + @@ -20079,16 +19937,14 @@ - + - + @@ -20109,14 +19965,13 @@ - + - + @@ -20176,8 +20031,7 @@ - + @@ -20185,8 +20039,7 @@ - + @@ -20199,14 +20052,12 @@ - + - + @@ -20224,8 +20075,7 @@ - + @@ -20310,8 +20160,7 @@ - + @@ -20505,7 +20354,7 @@ - + @@ -20610,23 +20459,19 @@ - + - + - + - + @@ -20951,101 +20796,85 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -21083,11 +20912,11 @@ - + - + @@ -21188,33 +21017,39 @@ - + + + - + + + - + + + - + + + - - + + + + + + @@ -21292,7 +21127,6 @@ - @@ -21311,8 +21145,7 @@ - + @@ -21324,8 +21157,7 @@ - + @@ -21361,29 +21193,26 @@ - + - + - - + + - + @@ -21392,16 +21221,15 @@ - - + + - + @@ -21413,8 +21241,7 @@ - + @@ -21425,11 +21252,11 @@ - + - + @@ -21519,12 +21346,11 @@ - + - + @@ -21534,22 +21360,19 @@ - + - + - + @@ -21561,8 +21384,7 @@ - + @@ -21572,8 +21394,7 @@ - + @@ -21585,8 +21406,7 @@ - + @@ -21598,14 +21418,12 @@ - + - + @@ -21620,14 +21438,12 @@ - + - + @@ -21637,8 +21453,7 @@ - + @@ -21668,8 +21483,7 @@ - + @@ -21734,13 +21548,11 @@ - + - + @@ -21783,8 +21595,7 @@ - + @@ -21839,8 +21650,7 @@ - + @@ -21946,8 +21756,7 @@ - + @@ -22354,8 +22163,7 @@ - + @@ -22375,8 +22183,7 @@ - + @@ -22501,8 +22308,7 @@ - + @@ -22524,24 +22330,21 @@ - + - + - + @@ -22556,8 +22359,7 @@ - + @@ -22573,8 +22375,7 @@ - + @@ -22629,14 +22430,12 @@ - + - + @@ -22681,8 +22480,7 @@ - + @@ -22691,8 +22489,7 @@ - + @@ -22711,8 +22508,7 @@ - + @@ -22740,8 +22536,7 @@ - + @@ -22798,8 +22593,7 @@ - + @@ -22936,8 +22730,7 @@ - + @@ -22979,37 +22772,31 @@ - + - + - + - + - + - + @@ -23083,8 +22870,7 @@ - + @@ -23121,20 +22907,19 @@ - + - + - + + - + + @@ -23181,8 +22966,8 @@ - + + @@ -23211,8 +22996,8 @@ - + + @@ -23225,8 +23010,8 @@ - + + @@ -23249,8 +23034,8 @@ - + + @@ -23275,8 +23060,8 @@ - + + @@ -23344,14 +23129,12 @@ - + - + @@ -23367,14 +23150,12 @@ - + - + @@ -23432,8 +23213,9 @@ - + + + @@ -23666,8 +23448,7 @@ - + @@ -23692,14 +23473,12 @@ - + - + @@ -23709,8 +23488,7 @@ - + @@ -23842,14 +23620,12 @@ - + - + @@ -23906,8 +23682,8 @@ - + + @@ -23926,8 +23702,8 @@ - + + - + + @@ -24015,20 +23791,20 @@ - + + - + + - + + @@ -24046,8 +23822,8 @@ - + + @@ -24066,20 +23842,20 @@ - + + - + + - + + @@ -24238,7 +24014,7 @@ - + @@ -24533,8 +24309,8 @@ - + + @@ -24544,8 +24320,8 @@ - + + @@ -24573,8 +24349,8 @@ - + + @@ -24582,37 +24358,36 @@ - + - + - + - + - + - + - + - + @@ -24701,8 +24476,8 @@ - + + @@ -24715,8 +24490,8 @@ - + + @@ -24769,14 +24544,12 @@ - + - + @@ -24854,13 +24627,11 @@ - + - + @@ -25202,8 +24973,9 @@ - + + + @@ -25218,8 +24990,7 @@ - + @@ -25231,8 +25002,7 @@ - + @@ -25244,8 +25014,7 @@ - + @@ -25255,8 +25024,7 @@ - + @@ -25275,8 +25043,7 @@ - + @@ -25293,8 +25060,7 @@ - + @@ -25328,8 +25094,7 @@ - + @@ -25350,16 +25115,16 @@ - + + - + + @@ -25369,16 +25134,15 @@ - + + - + @@ -25548,8 +25312,7 @@ - + @@ -25560,8 +25323,8 @@ - + + @@ -25621,8 +25384,7 @@ - + @@ -25632,14 +25394,12 @@ - + - + @@ -25726,20 +25486,17 @@ - + - + - + @@ -26172,13 +25929,11 @@ - + - + @@ -26227,8 +25982,7 @@ - + @@ -26243,8 +25997,8 @@ - + + @@ -26487,14 +26241,12 @@ - + - + @@ -26637,8 +26389,7 @@ - + @@ -26648,13 +26399,11 @@ - + - + @@ -26716,8 +26465,7 @@ - + @@ -26779,8 +26527,7 @@ - + @@ -26805,12 +26552,14 @@ - - + + + + + + - + @@ -26827,8 +26576,7 @@ - + @@ -26837,8 +26585,7 @@ - + @@ -26899,32 +26646,27 @@ - + - + - + - + - + @@ -26935,16 +26677,15 @@ - + - + + @@ -26965,8 +26706,7 @@ - + @@ -26974,8 +26714,7 @@ - + @@ -27144,11 +26883,11 @@ - + - + @@ -27187,10 +26926,12 @@ - - + + + + + + @@ -27205,11 +26946,11 @@ - + - + @@ -27289,8 +27030,7 @@ - + @@ -27331,8 +27071,7 @@ - + @@ -27456,8 +27195,8 @@ - + + @@ -27467,67 +27206,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -27541,8 +27268,7 @@ - + @@ -27618,8 +27344,7 @@ - + @@ -27730,8 +27455,7 @@ - + @@ -27740,8 +27464,7 @@ - + @@ -27754,8 +27477,7 @@ - + @@ -27864,12 +27586,10 @@ - + - + @@ -27889,8 +27609,7 @@ - + @@ -27941,8 +27660,7 @@ - + @@ -27992,14 +27710,12 @@ - + - + @@ -28021,8 +27737,7 @@ - + @@ -28045,14 +27760,12 @@ - + - + @@ -28060,16 +27773,14 @@ - + - + @@ -28082,14 +27793,12 @@ - + - + @@ -28102,8 +27811,7 @@ - + @@ -28238,14 +27946,12 @@ - + - + @@ -28345,8 +28051,9 @@ - + + + @@ -28355,15 +28062,15 @@ - + - + + + @@ -28636,8 +28343,7 @@ - + @@ -29147,8 +28853,7 @@ - + @@ -29182,8 +28887,7 @@ - + @@ -29193,48 +28897,40 @@ - + - + - + - + - + - + - + - + @@ -29312,16 +29008,15 @@ - + - + + @@ -29336,12 +29031,12 @@ - + + - + + @@ -29463,14 +29158,12 @@ - + - + @@ -29492,8 +29185,7 @@ - + @@ -29508,14 +29200,12 @@ - + - + @@ -29532,18 +29222,15 @@ - + - + - + @@ -29581,8 +29268,7 @@ - + @@ -29594,8 +29280,7 @@ - + @@ -29700,29 +29385,24 @@ - + - + - + - + - + @@ -29730,19 +29410,16 @@ - + - + - + @@ -29767,8 +29444,7 @@ - + @@ -29776,8 +29452,7 @@ - + @@ -29822,8 +29497,7 @@ - + @@ -29833,25 +29507,21 @@ - + - + - + - + @@ -29872,8 +29542,7 @@ - + @@ -30068,8 +29737,9 @@ - + + + @@ -30089,8 +29759,9 @@ - + + + @@ -30170,8 +29841,7 @@ - + @@ -30213,8 +29883,9 @@ - + + + @@ -30568,47 +30239,40 @@ - + - + - + - + - + - + - + @@ -30618,8 +30282,7 @@ - + @@ -30643,14 +30306,14 @@ - + - + + + @@ -31052,8 +30715,7 @@ - + @@ -31166,8 +30828,8 @@ - + + @@ -31186,8 +30848,8 @@ - + + @@ -31214,8 +30876,8 @@ - + + @@ -31239,8 +30901,8 @@ - + + @@ -31320,20 +30982,17 @@ - + - + - + @@ -31347,8 +31006,7 @@ - + @@ -31418,8 +31076,7 @@ - + @@ -31545,24 +31202,19 @@ - + - + - + - + - + @@ -31614,15 +31266,13 @@ - + - + @@ -31635,8 +31285,7 @@ - + @@ -31644,13 +31293,11 @@ - + - + @@ -31658,20 +31305,17 @@ - + - + - + @@ -31691,13 +31335,11 @@ - + - + @@ -31738,8 +31380,9 @@ - + + + @@ -31777,8 +31420,9 @@ - + + + @@ -31842,16 +31486,14 @@ - + - + @@ -31860,8 +31502,7 @@ - + @@ -32102,8 +31743,9 @@ - + + + @@ -32506,8 +32148,7 @@ - + @@ -32693,7 +32334,7 @@ - + @@ -32767,8 +32408,8 @@ - + + @@ -32788,8 +32429,8 @@ - + + @@ -32804,14 +32445,14 @@ - + + - + + @@ -32826,8 +32467,8 @@ - + + @@ -32871,18 +32512,17 @@ - + + - + + - + @@ -34918,14 +34558,12 @@ - + - + @@ -34940,41 +34578,44 @@ - + - + - + + + - + + + - + + + - + + + - + + + @@ -35111,8 +34752,9 @@ - + + + @@ -35166,8 +34808,7 @@ - + @@ -35186,13 +34827,11 @@ - + - + @@ -35207,24 +34846,20 @@ - + - + - + - + @@ -35484,22 +35119,20 @@ - + - + - + + @@ -35622,14 +35255,12 @@ - + - + @@ -35645,12 +35276,11 @@ - + - + + @@ -35692,8 +35322,7 @@ - + @@ -35709,26 +35338,22 @@ - + - + - + - + @@ -35745,8 +35370,7 @@ - + @@ -35802,8 +35426,7 @@ - + @@ -35846,15 +35469,13 @@ - + - + @@ -35863,14 +35484,12 @@ - + - + @@ -35881,8 +35500,7 @@ - + @@ -35902,17 +35520,14 @@ - + - + - + @@ -35933,14 +35548,12 @@ - + - + @@ -36001,8 +35614,7 @@ - + @@ -36063,8 +35675,7 @@ - + @@ -36090,8 +35701,7 @@ - + @@ -36104,8 +35714,7 @@ - + @@ -36114,8 +35723,7 @@ - + @@ -36283,14 +35891,16 @@ - + + + - + + + @@ -36303,20 +35913,17 @@ - + - + - + @@ -36492,8 +36099,7 @@ - + @@ -36512,8 +36118,7 @@ - + @@ -36523,8 +36128,7 @@ - + @@ -36535,13 +36139,11 @@ - + - + @@ -36549,13 +36151,11 @@ - + - + @@ -36957,8 +36557,7 @@ - + @@ -37070,19 +36669,16 @@ - + - + - + @@ -37222,8 +36818,7 @@ - + @@ -37253,8 +36848,7 @@ - + @@ -37293,12 +36887,12 @@ - + + - + + @@ -37309,16 +36903,15 @@ - + - + + @@ -37336,8 +36929,7 @@ - + @@ -37346,8 +36938,7 @@ - + @@ -37461,32 +37052,27 @@ - + - + - + - + - + @@ -37498,19 +37084,19 @@ - + - + - + - + @@ -37567,7 +37153,7 @@ - + @@ -37620,8 +37206,7 @@ - + @@ -37639,15 +37224,14 @@ - + - + @@ -37657,8 +37241,7 @@ - + @@ -38161,8 +37744,8 @@ - + + @@ -38263,14 +37846,12 @@ - + - + @@ -38320,8 +37901,8 @@ - + + @@ -38505,8 +38086,7 @@ - + @@ -38514,13 +38094,11 @@ - + - + @@ -38591,8 +38169,7 @@ - + @@ -38663,8 +38240,7 @@ - + @@ -38679,8 +38255,7 @@ - + @@ -38690,8 +38265,7 @@ - + @@ -38708,8 +38282,7 @@ - + @@ -38771,8 +38344,7 @@ - + @@ -38780,8 +38352,7 @@ - + @@ -38800,8 +38371,7 @@ - + @@ -38815,15 +38385,13 @@ - + - + @@ -38847,8 +38415,7 @@ - + @@ -38895,8 +38462,7 @@ - + @@ -38922,8 +38488,7 @@ - + @@ -38931,8 +38496,7 @@ - + @@ -38941,14 +38505,12 @@ - + - + @@ -38960,8 +38522,7 @@ - + @@ -38980,8 +38541,7 @@ - + @@ -39068,20 +38628,17 @@ - + - + - + @@ -39139,16 +38696,14 @@ - + - + @@ -39188,8 +38743,7 @@ - + @@ -39241,46 +38795,39 @@ - + - + - + - + - + - + - + @@ -39335,8 +38882,7 @@ - + @@ -39353,14 +38899,12 @@ - + - + @@ -39389,13 +38933,11 @@ - + - + @@ -39408,13 +38950,11 @@ - + - + @@ -39423,8 +38963,7 @@ - + @@ -39460,17 +38999,15 @@ - + - + + - + @@ -39478,8 +39015,7 @@ - + @@ -39505,13 +39041,14 @@ - + + + - + + @@ -39689,8 +39226,7 @@ - + @@ -39764,13 +39300,11 @@ - + - + @@ -39808,8 +39342,8 @@ - + + @@ -39860,14 +39394,12 @@ - + - + @@ -39911,12 +39443,12 @@ - + + - + + @@ -40077,8 +39609,7 @@ - + @@ -40220,8 +39751,7 @@ - + @@ -40291,8 +39821,7 @@ - + @@ -40319,8 +39848,8 @@ - + + @@ -40355,15 +39884,13 @@ - + - + @@ -40421,8 +39948,7 @@ - + @@ -40446,8 +39972,7 @@ - + @@ -40457,22 +39982,19 @@ - + - + - + @@ -40480,8 +40002,8 @@ - + + @@ -40642,13 +40164,11 @@ - + - + @@ -40702,8 +40222,7 @@ - + @@ -40718,8 +40237,8 @@ - + + @@ -40728,8 +40247,7 @@ - + @@ -40737,18 +40255,17 @@ - + + - + + - + @@ -40829,13 +40346,15 @@ - + + + - + + + @@ -41144,8 +40663,7 @@ - + @@ -41220,14 +40738,12 @@ - + - + @@ -41236,23 +40752,20 @@ - + - + - + @@ -41264,8 +40777,7 @@ - + @@ -41276,46 +40788,38 @@ - + - + - + - + - + - + - + - + @@ -41337,8 +40841,7 @@ - + @@ -41359,13 +40862,11 @@ - + - + @@ -41384,12 +40885,12 @@ - + + - + + @@ -41426,24 +40927,24 @@ - + + - + + - + - + @@ -41457,15 +40958,13 @@ - + - + @@ -41611,16 +41110,14 @@ - + - + @@ -41629,8 +41126,7 @@ - + @@ -41641,15 +41137,13 @@ - + - + @@ -41664,24 +41158,20 @@ - + - + - + - + @@ -41822,8 +41312,7 @@ - + @@ -41861,7 +41350,7 @@ - + @@ -41905,13 +41394,11 @@ - + - + @@ -42065,20 +41552,17 @@ - + - + - + @@ -42361,20 +41845,19 @@ - + - + - + @@ -42382,17 +41865,17 @@ - + - + - + @@ -42401,8 +41884,7 @@ - + @@ -42451,16 +41933,14 @@ - + - + @@ -42477,8 +41957,7 @@ - + @@ -42495,8 +41974,7 @@ - + @@ -42569,8 +42047,8 @@ - + + @@ -42578,12 +42056,12 @@ - + + - + + @@ -42601,13 +42079,13 @@ - + + - + + @@ -42626,23 +42104,23 @@ - + + - + + - + + - + + @@ -42651,8 +42129,8 @@ - + + @@ -42660,25 +42138,25 @@ - + + - + + - + + - + + - + + @@ -42790,14 +42268,12 @@ - + - + @@ -42902,19 +42378,16 @@ - + - + - + @@ -42962,20 +42435,17 @@ - + - + - + @@ -43009,7 +42479,7 @@ - + @@ -43044,7 +42514,7 @@ - + @@ -43074,12 +42544,12 @@ - + - + @@ -43154,15 +42624,15 @@ - + - + - + @@ -43171,13 +42641,11 @@ - + - + @@ -43191,8 +42659,7 @@ - + @@ -43205,8 +42672,7 @@ - + @@ -43218,8 +42684,7 @@ - + @@ -43229,8 +42694,7 @@ - + @@ -43372,20 +42836,16 @@ - + - + - + - + @@ -43394,15 +42854,13 @@ - + - + @@ -43411,16 +42869,13 @@ - + - + - + @@ -43435,8 +42890,9 @@ - + + + @@ -43473,8 +42929,8 @@ - + + @@ -43486,8 +42942,8 @@ - + + @@ -43498,8 +42954,8 @@ - + + @@ -43537,8 +42993,7 @@ - + @@ -43547,8 +43002,7 @@ - + @@ -43573,8 +43027,7 @@ - + @@ -43588,8 +43041,7 @@ - + @@ -43809,11 +43261,10 @@ - + - + + @@ -43860,8 +43311,9 @@ - + + + @@ -43878,14 +43330,12 @@ - + - + @@ -43931,8 +43381,7 @@ - + @@ -43940,15 +43389,13 @@ - - + + - - + + @@ -43969,13 +43416,12 @@ - + - + @@ -44095,8 +43541,7 @@ - + @@ -44233,16 +43678,15 @@ - + + - + @@ -44384,48 +43828,44 @@ - + + + - + - + - + - + - - + + - - + + - - + + @@ -44504,8 +43944,7 @@ - + @@ -44520,8 +43959,7 @@ - + @@ -44549,21 +43987,19 @@ - + - + - + @@ -44579,8 +44015,7 @@ - + @@ -44592,23 +44027,19 @@ - + - + - + - + @@ -44650,8 +44081,7 @@ - + @@ -44704,8 +44134,9 @@ - + + + @@ -44760,8 +44191,7 @@ - + @@ -44798,8 +44228,7 @@ - + @@ -44903,43 +44332,37 @@ - + - + - + - + - - + + - - + + @@ -44985,8 +44408,8 @@ - + + @@ -45007,8 +44430,7 @@ - + @@ -45123,8 +44545,7 @@ - + @@ -45154,8 +44575,7 @@ - + @@ -45380,7 +44800,7 @@ - + @@ -46605,7 +46025,7 @@ - + @@ -46649,12 +46069,11 @@ - + - + @@ -46763,7 +46182,7 @@ - + @@ -46913,13 +46332,13 @@ - + + - + + @@ -46986,19 +46405,19 @@ - + - + - + @@ -47040,8 +46459,7 @@ - + @@ -47061,26 +46479,21 @@ - + - + - + - + - + @@ -47120,8 +46533,7 @@ - + @@ -47167,14 +46579,12 @@ - + - + @@ -47225,19 +46635,16 @@ - + - + - + @@ -47426,8 +46833,9 @@ - + + + @@ -47446,8 +46854,7 @@ - + @@ -47476,37 +46883,36 @@ - + - + - - + + + + + + - + + + - + - + @@ -47559,8 +46965,7 @@ - + @@ -47720,8 +47125,7 @@ - + @@ -47785,8 +47189,7 @@ - + @@ -47865,8 +47268,7 @@ - + @@ -48049,8 +47451,7 @@ - + @@ -48058,8 +47459,7 @@ - + @@ -48069,8 +47469,7 @@ - + @@ -48138,41 +47537,41 @@ - + - + - + - + - + - + - + - + @@ -48276,8 +47675,7 @@ - + @@ -48358,18 +47756,15 @@ - + - + - + @@ -48465,8 +47860,9 @@ - + + + @@ -48572,8 +47968,7 @@ - + @@ -48588,8 +47983,7 @@ - + @@ -48620,8 +48014,7 @@ - + @@ -48727,8 +48120,7 @@ - + @@ -48807,16 +48199,14 @@ - + - + @@ -48825,8 +48215,7 @@ - + @@ -48835,8 +48224,7 @@ - + @@ -48845,8 +48233,7 @@ - + @@ -48855,8 +48242,7 @@ - + @@ -48865,8 +48251,7 @@ - + @@ -48875,8 +48260,7 @@ - + @@ -49419,21 +48803,20 @@ - + - + - + @@ -49445,8 +48828,7 @@ - + @@ -49456,35 +48838,32 @@ - - + + - - + + - + - + - - + + - + @@ -49492,17 +48871,16 @@ - - + + - + - + + + @@ -49924,8 +49302,7 @@ - + @@ -50065,8 +49442,7 @@ - + @@ -50075,8 +49451,7 @@ - + @@ -50088,8 +49463,7 @@ - + @@ -50209,8 +49583,7 @@ - + @@ -50281,12 +49654,12 @@ - + - + + + @@ -50299,7 +49672,7 @@ - + @@ -50329,35 +49702,30 @@ - - + + - + - + - + - + @@ -50370,22 +49738,22 @@ - + - + - + - + @@ -50456,7 +49824,7 @@ - + @@ -50562,8 +49930,7 @@ - + @@ -50594,18 +49961,15 @@ - + - + - + @@ -50615,8 +49979,7 @@ - + @@ -50637,8 +50000,7 @@ - + @@ -50648,15 +50010,13 @@ - + - + @@ -50679,8 +50039,7 @@ - + @@ -50710,8 +50069,7 @@ - + @@ -50733,38 +50091,32 @@ - + - + - + - + - + - + @@ -50992,8 +50344,7 @@ - + @@ -51617,13 +50968,11 @@ - + - + @@ -51743,14 +51092,12 @@ - + - + @@ -51800,23 +51147,19 @@ - + - + - + - + @@ -51883,11 +51226,11 @@ - + - + @@ -51916,8 +51259,7 @@ - + @@ -51975,12 +51317,12 @@ - + - + @@ -52001,60 +51343,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -52070,11 +51412,11 @@ - + - + @@ -52288,7 +51630,7 @@ - + @@ -52338,8 +51680,8 @@ - + + @@ -52699,12 +52041,7 @@ - - - - - - + @@ -52860,25 +52197,19 @@ - + - - - - - + - + - + @@ -52911,8 +52242,7 @@ - + @@ -52958,8 +52288,7 @@ - + @@ -53060,7 +52389,7 @@ - + @@ -53071,12 +52400,12 @@ - + - + @@ -53099,31 +52428,31 @@ - + - + - + - + - + - + - + @@ -53134,12 +52463,12 @@ - + - + @@ -53241,8 +52570,7 @@ - + @@ -53252,14 +52580,12 @@ - + - + @@ -53274,24 +52600,22 @@ - + - + + + - + - + @@ -53407,8 +52731,7 @@ - + @@ -53470,8 +52793,7 @@ - + @@ -53530,7 +52852,7 @@ - + @@ -53737,23 +53059,19 @@ - + - + - + - + @@ -53829,25 +53147,23 @@ - - + + - - + + - + - + @@ -53871,10 +53187,11 @@ - + + + + - @@ -53909,8 +53226,7 @@ - + @@ -54190,8 +53506,7 @@ - + @@ -54464,8 +53779,7 @@ - + @@ -54651,22 +53965,19 @@ - + - + - + @@ -54679,26 +53990,26 @@ - + - + - + - + + @@ -54762,12 +54073,12 @@ - + - + @@ -54792,29 +54103,24 @@ - + - + - + - + - + @@ -54851,14 +54157,12 @@ - + - + @@ -54915,22 +54219,22 @@ - + - + - + - + @@ -54996,28 +54300,28 @@ - + - + - + - + - + @@ -55054,8 +54358,8 @@ - + + @@ -55091,8 +54395,7 @@ - + @@ -55184,56 +54487,47 @@ - + - + - + - + - + - + - + - + - + @@ -55506,17 +54800,17 @@ - + - + - + @@ -56621,8 +55915,7 @@ - + @@ -56685,8 +55978,7 @@ - + @@ -56707,8 +55999,7 @@ - + @@ -56720,8 +56011,7 @@ - + @@ -56906,8 +56196,7 @@ - + @@ -57161,33 +56450,28 @@ - + - + - + - + - + @@ -57299,36 +56583,36 @@ - + - + - + - + - + - + @@ -57445,34 +56729,34 @@ - + - + - + - + - + - + @@ -57491,7 +56775,7 @@ - + @@ -57509,15 +56793,15 @@ - + - + - + @@ -57877,8 +57161,7 @@ - + @@ -57923,34 +57206,29 @@ - + - + - + - + - + @@ -58037,18 +57315,16 @@ - + - + - + + @@ -58358,14 +57634,12 @@ - + - + @@ -58497,8 +57771,8 @@ - + + @@ -58532,24 +57806,24 @@ - + + - + + - + + - + + @@ -58704,8 +57978,7 @@ - + @@ -58749,29 +58022,29 @@ - + + - + - + - + - + @@ -58837,22 +58110,22 @@ - + - + - + - + @@ -58901,32 +58174,32 @@ - + - + - + - + - + - + @@ -58970,16 +58243,16 @@ - + + - + + - + + @@ -58991,8 +58264,7 @@ - + @@ -59000,8 +58272,7 @@ - + @@ -59291,6 +58562,7 @@ + @@ -59323,8 +58595,7 @@ - + @@ -59436,63 +58707,63 @@ - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + @@ -59557,6 +58828,7 @@ + @@ -59571,6 +58843,7 @@ + @@ -59632,26 +58905,25 @@ - + - + + - + + - + + @@ -59673,7 +58945,7 @@ - + @@ -59851,8 +59123,7 @@ - + @@ -59961,8 +59232,7 @@ - + @@ -59970,47 +59240,40 @@ - + - + - + - + - + - + - + @@ -60049,7 +59312,7 @@ - + @@ -60138,12 +59401,12 @@ - + - + @@ -60152,7 +59415,7 @@ - + @@ -60283,14 +59546,12 @@ - + - + @@ -60310,7 +59571,7 @@ - + @@ -60318,12 +59579,12 @@ - + - + @@ -60745,54 +60006,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -60801,20 +60014,6 @@ - - - - - - - - - - - - - - @@ -60955,16 +60154,15 @@ - + - + + - + + @@ -60987,16 +60185,16 @@ - + + - + + @@ -61018,24 +60216,24 @@ - + + - + - + - + - + @@ -61085,8 +60283,8 @@ - + + @@ -61116,34 +60314,10 @@ - + + - - - - - - - - - - - - - - - - - - - - - - - - @@ -61509,13 +60683,13 @@ - + + - + + @@ -61524,8 +60698,8 @@ - + + @@ -61534,8 +60708,8 @@ - + + @@ -61559,14 +60733,12 @@ - + - + @@ -61784,7 +60956,7 @@ - + @@ -61801,7 +60973,7 @@ - + @@ -61809,20 +60981,20 @@ - + - + - + @@ -61872,7 +61044,7 @@ - + @@ -61880,20 +61052,20 @@ - + - + - + @@ -61912,23 +61084,23 @@ - - + + + + + + - + - + @@ -61968,28 +61140,24 @@ - + - + - + - + @@ -62023,8 +61191,7 @@ - + @@ -62724,14 +61891,12 @@ - + - + @@ -62741,20 +61906,17 @@ - + - + - + @@ -62774,8 +61936,7 @@ - + @@ -62790,50 +61951,42 @@ - + - + - + - + - + - + - + - + @@ -62845,33 +61998,33 @@ - + - + - + - + - + - + @@ -63070,14 +62223,12 @@ - + - + @@ -63100,18 +62251,15 @@ - + - + - + @@ -63159,7 +62307,7 @@ - + @@ -63421,8 +62569,7 @@ - + @@ -63430,141 +62577,120 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + @@ -63631,8 +62757,7 @@ - + @@ -63683,31 +62808,27 @@ - + - + - + - + - + @@ -63733,61 +62854,61 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -63803,12 +62924,12 @@ - + - + @@ -63932,30 +63053,25 @@ - + - + - + - + - + @@ -63976,28 +63092,24 @@ - + - + - + - + @@ -64014,39 +63126,33 @@ - + - + - + - + - + - + @@ -64054,20 +63160,22 @@ - - + + + + + + - + + - + @@ -64080,8 +63188,7 @@ - + @@ -64089,61 +63196,61 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -64158,22 +63265,22 @@ - + - + - + - + @@ -64324,70 +63431,68 @@ - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -64405,10 +63510,10 @@ - + - + @@ -64477,38 +63582,31 @@ - + - + - + - + - + - + - + @@ -64517,8 +63615,7 @@ - + @@ -64567,22 +63664,22 @@ - + - + - + - + - + - + @@ -64590,7 +63687,7 @@ - + @@ -64605,12 +63702,12 @@ - + - + @@ -64620,7 +63717,7 @@ - + @@ -64630,7 +63727,7 @@ - + @@ -64640,7 +63737,7 @@ - + @@ -64650,7 +63747,7 @@ - + @@ -64690,37 +63787,37 @@ - + - + - + - + - + - + - + @@ -64730,7 +63827,7 @@ - + @@ -64770,37 +63867,37 @@ - + - + - + - + - + - + - + @@ -64826,107 +63923,107 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -64954,7 +64051,7 @@ - + @@ -64967,163 +64064,163 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -65134,8 +64231,7 @@ - + @@ -65148,19 +64244,16 @@ - + - + - + @@ -65168,31 +64261,29 @@ - + - + - + - + - + @@ -65211,8 +64302,8 @@ - + + @@ -65237,27 +64328,27 @@ - + - + - + - + - + @@ -65447,8 +64538,7 @@ - + @@ -65461,42 +64551,37 @@ - + - + - + - + - + - + @@ -65504,56 +64589,56 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -65687,78 +64772,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -65928,7 +65010,7 @@ - + @@ -65952,33 +65034,29 @@ - + - + - + - + - + @@ -66042,8 +65120,7 @@ - + @@ -66724,8 +65801,7 @@ - + @@ -67617,8 +66693,7 @@ - + @@ -67806,7 +66881,7 @@ - + @@ -67850,106 +66925,105 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -67960,7 +67034,7 @@ - + @@ -68004,23 +67078,20 @@ - + - + - + - + @@ -68031,10 +67102,9 @@ - + - + @@ -68071,43 +67141,37 @@ - + - + - + - + - + - + - + @@ -68116,7 +67180,7 @@ - + @@ -68324,36 +67388,35 @@ - + - + - + - + - + - + - + @@ -68435,30 +67498,26 @@ - + - + - + - + @@ -69101,15 +68160,15 @@ - + - + - + @@ -69255,7 +68314,7 @@ - + diff --git a/src/items/functions/item/item_parse.cpp b/src/items/functions/item/item_parse.cpp index b3324f8dd73..0500d82915c 100644 --- a/src/items/functions/item/item_parse.cpp +++ b/src/items/functions/item/item_parse.cpp @@ -73,6 +73,7 @@ void ItemParse::initParse(const std::string &tmpStrValue, pugi::xml_node attribu ItemParse::parseCleavePercent(tmpStrValue, valueAttribute, itemType); ItemParse::parseReflectDamage(tmpStrValue, valueAttribute, itemType); ItemParse::parseTransformOnUse(tmpStrValue, valueAttribute, itemType); + ItemParse::parsePrimaryType(tmpStrValue, valueAttribute, itemType); } void ItemParse::parseDummyRate(pugi::xml_node attributeNode, ItemType &itemType) { @@ -940,3 +941,9 @@ void ItemParse::parseTransformOnUse(const std::string_view &tmpStrValue, pugi::x itemType.m_transformOnUse = pugi::cast(valueAttribute.value()); } } + +void ItemParse::parsePrimaryType(const std::string_view &tmpStrValue, pugi::xml_attribute valueAttribute, ItemType &itemType) { + if (tmpStrValue == "primarytype") { + itemType.m_primaryType = asLowerCaseString(valueAttribute.as_string()); + } +} diff --git a/src/items/functions/item/item_parse.hpp b/src/items/functions/item/item_parse.hpp index 28a8e71fc53..510129df918 100644 --- a/src/items/functions/item/item_parse.hpp +++ b/src/items/functions/item/item_parse.hpp @@ -155,6 +155,7 @@ const phmap::flat_hash_map ItemParseAttribut { "cleavepercent", ITEM_PARSE_CLEAVEPERCENT }, { "reflectdamage", ITEM_PARSE_REFLECTDAMAGE }, { "reflectpercentall", ITEM_PARSE_REFLECTPERCENTALL }, + { "primarytype", ITEM_PARSE_PRIMARYTYPE }, }; const phmap::flat_hash_map ItemTypesMap = { @@ -308,6 +309,7 @@ class ItemParse : public Items { static void parseCleavePercent(const std::string &tmpStrValue, pugi::xml_attribute valueAttribute, ItemType &itemType); static void parseReflectDamage(const std::string &tmpStrValue, pugi::xml_attribute valueAttribute, ItemType &itemType); static void parseTransformOnUse(const std::string_view &tmpStrValue, pugi::xml_attribute valueAttribute, ItemType &itemType); + static void parsePrimaryType(const std::string_view &tmpStrValue, pugi::xml_attribute valueAttribute, ItemType &itemType); private: // Parent of the function: static void parseField diff --git a/src/items/items.hpp b/src/items/items.hpp index 98201893de8..6d0559cc0f7 100644 --- a/src/items/items.hpp +++ b/src/items/items.hpp @@ -239,6 +239,7 @@ class ItemType { std::string description; std::string runeSpellName; std::string vocationString; + std::string m_primaryType; std::unique_ptr abilities; std::unique_ptr conditionDamage; diff --git a/src/items/items_definitions.hpp b/src/items/items_definitions.hpp index 85dee43bf1a..0c38634fcf3 100644 --- a/src/items/items_definitions.hpp +++ b/src/items/items_definitions.hpp @@ -465,6 +465,7 @@ enum ItemParseAttributes_t { ITEM_PARSE_CLEAVEPERCENT, ITEM_PARSE_REFLECTPERCENTALL, ITEM_PARSE_REFLECTDAMAGE, + ITEM_PARSE_PRIMARYTYPE, }; struct ImbuementInfo { From cacb7c6827fd12c8bfe9326538a02d443c67984a Mon Sep 17 00:00:00 2001 From: Luan Santos Date: Sun, 10 Sep 2023 08:17:19 -0700 Subject: [PATCH 02/10] fix: store xp and gold pouch (#1583) --- .luarc.json | 3 + data/modules/scripts/gamestore/init.lua | 300 +++++++++++++----------- 2 files changed, 161 insertions(+), 142 deletions(-) create mode 100644 .luarc.json diff --git a/.luarc.json b/.luarc.json new file mode 100644 index 00000000000..440870ada6a --- /dev/null +++ b/.luarc.json @@ -0,0 +1,3 @@ +{ + "workspace.maxPreload": 10000 +} \ No newline at end of file diff --git a/data/modules/scripts/gamestore/init.lua b/data/modules/scripts/gamestore/init.lua index 44a95897fd9..d879b1ca6cb 100644 --- a/data/modules/scripts/gamestore/init.lua +++ b/data/modules/scripts/gamestore/init.lua @@ -2,7 +2,7 @@ GameStore = { ModuleName = "GameStore", Developers = { "Cjaker", "metabob", "Rick" }, Version = "1.1", - LastUpdated = "25-07-2020 11:52AM" + LastUpdated = "25-07-2020 11:52AM", } --== Enums ==-- @@ -34,7 +34,6 @@ GameStore.OfferTypes = { OFFER_TYPE_HIRELING_OUTFIT = 24, OFFER_TYPE_HUNTINGSLOT = 25, OFFER_TYPE_ITEM_BED = 26, - OFFER_TYPE_ITEM_UNIQUE = 27, } GameStore.SubActions = { @@ -53,7 +52,7 @@ GameStore.SubActions = { BLESSING_ALL_PVP = 12, CHARM_EXPANSION = 13, TASKHUNTING_THIRDSLOT = 14, - PREY_THIRDSLOT_REDIRECT = 15 + PREY_THIRDSLOT_REDIRECT = 15, } GameStore.ActionType = { @@ -71,7 +70,7 @@ GameStore.CoinType = { } GameStore.Storages = { - expBoostCount = 51052 + expBoostCount = 51052, } GameStore.ConverType = { @@ -79,12 +78,12 @@ GameStore.ConverType = { SHOW_MOUNT = 1, SHOW_OUTFIT = 2, SHOW_ITEM = 3, - SHOW_HIRELING = 4 + SHOW_HIRELING = 4, } GameStore.ConfigureOffers = { SHOW_NORMAL = 0, - SHOW_CONFIGURE = 1 + SHOW_CONFIGURE = 1, } function convertType(type) @@ -98,7 +97,6 @@ function convertType(type) [GameStore.OfferTypes.OFFER_TYPE_CHARGES] = GameStore.ConverType.SHOW_ITEM, [GameStore.OfferTypes.OFFER_TYPE_HIRELING] = GameStore.ConverType.SHOW_HIRELING, [GameStore.OfferTypes.OFFER_TYPE_ITEM_BED] = GameStore.ConverType.SHOW_NONE, - [GameStore.OfferTypes.OFFER_TYPE_ITEM_UNIQUE] = GameStore.ConverType.SHOW_ITEM, } if not types[type] then @@ -113,7 +111,7 @@ function useOfferConfigure(type) [GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE] = GameStore.ConfigureOffers.SHOW_CONFIGURE, [GameStore.OfferTypes.OFFER_TYPE_HIRELING] = GameStore.ConfigureOffers.SHOW_CONFIGURE, [GameStore.OfferTypes.OFFER_TYPE_HIRELING_NAMECHANGE] = GameStore.ConfigureOffers.SHOW_CONFIGURE, - [GameStore.OfferTypes.OFFER_TYPE_HIRELING_SEXCHANGE] = GameStore.ConfigureOffers.SHOW_CONFIGURE + [GameStore.OfferTypes.OFFER_TYPE_HIRELING_SEXCHANGE] = GameStore.ConfigureOffers.SHOW_CONFIGURE, } if not types[type] then @@ -132,14 +130,14 @@ GameStore.ClientOfferTypes = { GameStore.HistoryTypes = { HISTORY_TYPE_NONE = 0, HISTORY_TYPE_GIFT = 1, - HISTORY_TYPE_REFUND = 2 + HISTORY_TYPE_REFUND = 2, } GameStore.States = { STATE_NONE = 0, STATE_NEW = 1, STATE_SALE = 2, - STATE_TIMED = 3 + STATE_TIMED = 3, } GameStore.StoreErrors = { @@ -147,14 +145,14 @@ GameStore.StoreErrors = { STORE_ERROR_NETWORK = 1, STORE_ERROR_HISTORY = 2, STORE_ERROR_TRANSFER = 3, - STORE_ERROR_INFORMATION = 4 + STORE_ERROR_INFORMATION = 4, } GameStore.ServiceTypes = { SERVICE_STANDERD = 0, SERVICE_OUTFITS = 3, SERVICE_MOUNTS = 4, - SERVICE_BLESSINGS = 5 + SERVICE_BLESSINGS = 5, } GameStore.SendingPackets = { @@ -165,7 +163,7 @@ GameStore.SendingPackets = { S_OpenStore = 0xFB, -- 251 S_StoreOffers = 0xFC, -- 252 S_OpenTransactionHistory = 0xFD, -- 253 - S_CompletePurchase = 0xFE -- 254 + S_CompletePurchase = 0xFE, -- 254 } GameStore.RecivedPackets = { @@ -184,29 +182,26 @@ GameStore.ExpBoostValues = { [2] = 45, [3] = 90, [4] = 180, - [5] = 360 + [5] = 360, } GameStore.DefaultValues = { - DEFAULT_VALUE_ENTRIES_PER_PAGE = 26 + DEFAULT_VALUE_ENTRIES_PER_PAGE = 26, } GameStore.DefaultDescriptions = { - OUTFIT = { "This outfit looks nice. Only high-class people are able to wear it!", - "An outfit that was created to suit you. We are sure you'll like it.", - "Legend says only smart people should wear it, otherwise you will burn!" }, - MOUNT = { "This is a fantastic mount that helps to become faster, try it!", - "The first rider of this mount became the leader of his country! legends say that." }, - NAMECHANGE = { "Are you hunted? Tired of that? Get a new name, a new life!", - "A new name to suit your needs!" }, + OUTFIT = { "This outfit looks nice. Only high-class people are able to wear it!", "An outfit that was created to suit you. We are sure you'll like it.", "Legend says only smart people should wear it, otherwise you will burn!" }, + MOUNT = { "This is a fantastic mount that helps to become faster, try it!", "The first rider of this mount became the leader of his country! legends say that." }, + NAMECHANGE = { "Are you hunted? Tired of that? Get a new name, a new life!", "A new name to suit your needs!" }, SEXCHANGE = { "Bored of your character's sex? Get a new sex for him now!!" }, EXPBOOST = { "Are you tired of leveling slow? try it!" }, PREYSLOT = { - "It's hunting season! Activate a prey to gain a bonus when hunting a certain monster. Every character can purchase one Permanent Prey Slot, which enables the activation of an additional prey. \nIf you activate a prey, you can select one monster out of nine. The bonus for your prey will be selected randomly from one of the following: damage boost, damage reduction, bonus XP, improved loot. The bonus value may range from 5% to 50%. Your prey will be active for 2 hours hunting time: the duration of an active prey will only be reduced while you are hunting." }, + "It's hunting season! Activate a prey to gain a bonus when hunting a certain monster. Every character can purchase one Permanent Prey Slot, which enables the activation of an additional prey. \nIf you activate a prey, you can select one monster out of nine. The bonus for your prey will be selected randomly from one of the following: damage boost, damage reduction, bonus XP, improved loot. The bonus value may range from 5% to 50%. Your prey will be active for 2 hours hunting time: the duration of an active prey will only be reduced while you are hunting.", + }, PREYBONUS = { - "You activated a prey but do not like the randomly selected bonus? Roll for a new one! Here you can purchase five Prey Bonus Rerolls! \nA Bonus Reroll allows you to get a bonus with a higher value (max. 50%). The bonus for your prey will be selected randomly from one of the following: damage boost, damage reduction, bonus XP, improved loot. The 2 hours hunting time will start anew once you have rolled for a new bonus. Your prey monster will stay the same." }, - TEMPLE = { - "Need a quick way home? Buy this transportation service to get instantly teleported to your home temple. \n\nNote, you cannot use this service while having a battle sign or a protection zone block. Further, the service will not work in no-logout zones or close to your home temple." } + "You activated a prey but do not like the randomly selected bonus? Roll for a new one! Here you can purchase five Prey Bonus Rerolls! \nA Bonus Reroll allows you to get a bonus with a higher value (max. 50%). The bonus for your prey will be selected randomly from one of the following: damage boost, damage reduction, bonus XP, improved loot. The 2 hours hunting time will start anew once you have rolled for a new bonus. Your prey monster will stay the same.", + }, + TEMPLE = { "Need a quick way home? Buy this transportation service to get instantly teleported to your home temple. \n\nNote, you cannot use this service while having a battle sign or a protection zone block. Further, the service will not work in no-logout zones or close to your home temple." }, } --==Parsing==-- @@ -239,7 +234,9 @@ local function queueSendStoreAlertToUser(message, delay, playerId, storeErrorCod end function onRecvbyte(player, msg, byte) - if not configManager.getBoolean(STOREMODULES) then return true end + if not configManager.getBoolean(STOREMODULES) then + return true + end if player:getVocation():getId() == 0 and not GameStore.haveCategoryRook() then return player:sendCancelMessage("Store don't have offers for rookgaard citizen.") end @@ -322,15 +319,14 @@ function parseRequestStoreOffers(playerId, msg) local actionType = msg:getByte() local oldProtocol = player:getClient().version < 1200 + local categoryName = msg:getString() if oldProtocol then - local categoryName = msg:getString() - local category = GameStore.getCategoryByName(categoryName, player) + local category = GameStore.getCategoryByName(categoryName) if category then addPlayerEvent(sendShowStoreOffersOnOldProtocol, 350, playerId, category) end elseif actionType == GameStore.ActionType.OPEN_CATEGORY then - local categoryName = msg:getString() local category = GameStore.getCategoryByName(categoryName) if category then addPlayerEvent(sendShowStoreOffers, 50, playerId, category) @@ -383,7 +379,7 @@ function parseRequestStoreOffers(playerId, msg) local searchString = msg:getString() local results = GameStore.fuzzySearchOffer(searchString) if not results or #results == 0 then - return addPlayerEvent(sendStoreError, 250, playerId, GameStore.StoreErrors.STORE_ERROR_INFORMATION, "No results found for \"" .. searchString .. "\".") + return addPlayerEvent(sendStoreError, 250, playerId, GameStore.StoreErrors.STORE_ERROR_INFORMATION, 'No results found for "' .. searchString .. '".') end local searchResultsCategory = { @@ -400,27 +396,34 @@ function parseBuyStoreOffer(playerId, msg) local id = msg:getU32() local offer = GameStore.getOfferById(id) local productType = msg:getByte() + if not offer then + return false + end -- All guarding conditions under which the offer should not be processed must be included here - if (table.contains(GameStore.OfferTypes, offer.type) == false) -- we've got an invalid offer type - or (not player) -- player not found + if + (table.contains(GameStore.OfferTypes, offer.type) == false) -- we've got an invalid offer type + or not player or (player:getVocation():getId() == 0) and (not GameStore.haveOfferRook(id)) -- we don't have such offer - or (not offer) -- we could not find the offer + or not offer or (offer.type == GameStore.OfferTypes.OFFER_TYPE_NONE) -- offer is disabled - or (offer.type ~= GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_EXPBOOST and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYBONUS and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYSLOT and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_TEMPLE and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_INSTANT_REWARD_ACCESS and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_POUCH and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_NAMECHANGE and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_SEXCHANGE and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_SKILL and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT and - not offer.id) then + or ( + offer.type ~= GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_EXPBOOST + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYBONUS + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYSLOT + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_TEMPLE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_INSTANT_REWARD_ACCESS + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_POUCH + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_NAMECHANGE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_SEXCHANGE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_SKILL + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT + and not offer.id + ) + then return queueSendStoreAlertToUser("This offer is unavailable [1]", 350, playerId, GameStore.StoreErrors.STORE_ERROR_INFORMATION) end @@ -461,7 +464,8 @@ function parseBuyStoreOffer(playerId, msg) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_MOUNT then GameStore.processMountPurchase(player, offer.id) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE then - local newName = msg:getString(); GameStore.processNameChangePurchase(player, offer, productType, newName) + local newName = msg:getString() + GameStore.processNameChangePurchase(player, offer, productType, newName) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE then GameStore.processSexChangePurchase(player) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_EXPBOOST then @@ -477,9 +481,12 @@ function parseBuyStoreOffer(playerId, msg) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_CHARGES then GameStore.processChargesPurchase(player, offer.itemtype, offer.name, offer.charges, offer.moveable) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_HIRELING then - local hirelingName = msg:getString(); local sex = msg:getByte(); GameStore.processHirelingPurchase(player, offer, productType, hirelingName, sex) + local hirelingName = msg:getString() + local sex = msg:getByte() + GameStore.processHirelingPurchase(player, offer, productType, hirelingName, sex) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_HIRELING_NAMECHANGE then - local hirelingName = msg:getString(); GameStore.processHirelingChangeNamePurchase(player, offer, productType, hirelingName) + local hirelingName = msg:getString() + GameStore.processHirelingChangeNamePurchase(player, offer, productType, hirelingName) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_HIRELING_SEXCHANGE then GameStore.processHirelingChangeSexPurchase(player, offer) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_HIRELING_SKILL then @@ -533,7 +540,7 @@ end local function getCategoriesRook() local tmpTable, count = {}, 0 for i, v in pairs(GameStore.Categories) do - if (v.rookgaard) then + if v.rookgaard then tmpTable[#tmpTable+1] = v count = count + 1 end @@ -561,7 +568,7 @@ function openStore(playerId) end local GameStoreCategories, GameStoreCount = nil, 0 - if (player:getVocation():getId() == 0) then + if player:getVocation():getId() == 0 then GameStoreCategories, GameStoreCount = getCategoriesRook() else GameStoreCategories, GameStoreCount = GameStore.Categories, #GameStore.Categories @@ -589,7 +596,7 @@ function openStore(playerId) end end - if (GameStoreCategories) then + if GameStoreCategories then msg:addU16(GameStoreCount) for _, category in ipairs(GameStoreCategories) do addCategory(category) @@ -614,16 +621,18 @@ function Player.canBuyOffer(self, offer) disabled = 1 end - if offer.type ~= GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_EXPBOOST and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYSLOT and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYBONUS and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_TEMPLE and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_POUCH and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_SKILL and - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT and - not offer.id then + if + offer.type ~= GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_EXPBOOST + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYSLOT + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYBONUS + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_TEMPLE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_POUCH + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_SKILL + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT + and not offer.id + then disabled = 1 end @@ -637,7 +646,7 @@ function Player.canBuyOffer(self, offer) local pounch = self:getItemById(23721, true) if pounch then disabled = 1 - disabledReason = "You already have a " .. item:getName() .. "." + disabledReason = "You already have Loot Pouch." end elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_BLESSINGS then if self:getBlessingCount(offer.blessid) >= 5 then @@ -716,7 +725,7 @@ function Player.canBuyOffer(self, offer) disabled = 1 disabledReason = "You can't buy XP Boost for today." end - if (remainingBoost > 0) then + if remainingBoost > 0 then disabled = 1 disabledReason = "You already have an active XP boost." end @@ -783,7 +792,7 @@ function sendShowStoreOffers(playerId, category, redirectId) categoryLimit = 0 end - if not (oldProtocol) then + if not oldProtocol then msg:addU32(redirectId or 0) msg:addByte(0) -- Window Type msg:addByte(0) -- Collections Size @@ -821,14 +830,14 @@ function sendShowStoreOffers(playerId, category, redirectId) end local canBuy = player:canBuyOffer(offer) - if (canBuy.disabled == 1) then + if canBuy.disabled == 1 then for index, disableTable in ipairs(disableReasons) do - if (canBuy.disabledReason == disableTable.reason) then + if canBuy.disabledReason == disableTable.reason then offer.disabledReadonIndex = index end end - if (offer.disabledReadonIndex == nil) then + if offer.disabledReadonIndex == nil then offer.disabledReadonIndex = #disableReasons table.insert(disableReasons, canBuy.disabledReason) end @@ -865,16 +874,16 @@ function sendShowStoreOffers(playerId, category, redirectId) msg:addByte(off.coinType or 0x00) msg:addByte((off.disabledReadonIndex ~= nil) and 1 or 0) - if (off.disabledReadonIndex ~= nil) then - msg:addByte(0x01); + if off.disabledReadonIndex ~= nil then + msg:addByte(0x01) msg:addU16(off.disabledReadonIndex) off.disabledReadonIndex = nil -- Reseting the table to nil disable reason end - if (off.state) then - if (off.state == GameStore.States.STATE_SALE) then + if off.state then + if off.state == GameStore.States.STATE_SALE then local daySub = off.validUntil - os.date("*t").day - if (daySub >= 0) then + if daySub >= 0 then msg:addByte(off.state) msg:addU32(os.time() + daySub * 86400) msg:addU32(off.basePrice) @@ -893,7 +902,7 @@ function sendShowStoreOffers(playerId, category, redirectId) local tryOnType = 0 local type = convertType(offer.type) - msg:addByte(type); + msg:addByte(type) if type == GameStore.ConverType.SHOW_NONE then msg:addString(offer.icons[1]) elseif type == GameStore.ConverType.SHOW_MOUNT then @@ -963,7 +972,7 @@ function sendShowStoreOffersOnOldProtocol(playerId, category) msg:addByte(GameStore.SendingPackets.S_StoreOffers) msg:addString(category.name) - if not (category.offers) then + if not category.offers then msg:addU16(0) msg:sendToPlayer(player) player:sendButtonIndication(haveSaleOffer, 1) @@ -975,7 +984,7 @@ function sendShowStoreOffersOnOldProtocol(playerId, category) for _, offer in ipairs(category.offers) do if limit > 0 then -- Blocking offers that are not on coin currency. On old protocol we cannot change or validate any currency instead the default (Coin) - if (not (offer.coinType) or offer.coinType == GameStore.CoinType.Coin) then + if not offer.coinType or offer.coinType == GameStore.CoinType.Coin then count = count + 1 end limit = limit - 1 @@ -984,7 +993,7 @@ function sendShowStoreOffersOnOldProtocol(playerId, category) msg:addU16(count) for _, offer in ipairs(category.offers) do - if (count > 0 and offer.coinType == GameStore.CoinType.Coin) then + if count > 0 and offer.coinType == GameStore.CoinType.Coin then count = count - 1 local name = "" if offer.type == GameStore.OfferTypes.OFFER_TYPE_ITEM and offer.count then @@ -997,9 +1006,9 @@ function sendShowStoreOffersOnOldProtocol(playerId, category) name = name .. (offer.name or "Something Special") local newPrice = nil - if (offer.state == GameStore.States.STATE_SALE) then + if offer.state == GameStore.States.STATE_SALE then local daySub = offer.validUntil - os.sdate("*t").day - if (daySub < 0) then + if daySub < 0 then newPrice = offer.basePrice end end @@ -1010,10 +1019,10 @@ function sendShowStoreOffersOnOldProtocol(playerId, category) msg:addString(name) msg:addString(offer.description or GameStore.getDefaultDescription(offer.type, offer.count)) msg:addU32(offerPrice) - if (offer.state) then - if (offer.state == GameStore.States.STATE_SALE) then + if offer.state then + if offer.state == GameStore.States.STATE_SALE then local daySub = offer.validUntil - os.sdate("*t").day - if (daySub >= 0) then + if daySub >= 0 then msg:addByte(offer.state) msg:addU32(os.stime() + daySub * 86400) msg:addU32(offer.basePrice) @@ -1075,7 +1084,7 @@ function sendStoreTransactionHistory(playerId, page, entriesPerPage) msg:addByte(#entries) for k, entry in ipairs(entries) do - if not (oldProtocol) then + if not oldProtocol then msg:addU32(0) end msg:addU32(entry.time) @@ -1085,7 +1094,7 @@ function sendStoreTransactionHistory(playerId, page, entriesPerPage) msg:addByte(0x0) -- 0 = transferable tibia coin, 1 = normal tibia coin end msg:addString(entry.description) - if not (oldProtocol) then + if not oldProtocol then msg:addByte(0) -- details end end @@ -1359,7 +1368,7 @@ end GameStore.canUseHirelingName = function(name) local result = { - ability = false + ability = false, } if name:len() < 3 or name:len() > 14 then result.reason = "The length of the hireling name must be between 3 and 14 characters." @@ -1373,18 +1382,18 @@ GameStore.canUseHirelingName = function(name) end local matchtwo = name:match("^%s+") - if (matchtwo) then + if matchtwo then result.reason = "The hireling name can't have whitespace at begin." return result end local matchthree = name:match("[^a-zA-Z ]") - if (matchthree) then + if matchthree then result.reason = "The hireling name has invalid characters" return result end - if (count > 1) then + if count > 1 then result.reason = "The hireling name have more than 1 whitespace." return result end @@ -1395,7 +1404,7 @@ GameStore.canUseHirelingName = function(name) for k, word in ipairs(words) do for k, nameWord in ipairs(split) do if nameWord:lower() == word then - result.reason = "You can't use word \"" .. word .. "\" in your hireling name." + result.reason = "You can't use word \"" .. word .. '" in your hireling name.' return result end end @@ -1403,8 +1412,8 @@ GameStore.canUseHirelingName = function(name) local tmpName = name:gsub("%s+", "") for i = 1, #words do - if (tmpName:lower():find(words[i])) then - result.reason = "You can't use word \"" .. words[i] .. "\" with whitespace in your hireling name." + if tmpName:lower():find(words[i]) then + result.reason = "You can't use word \"" .. words[i] .. '" with whitespace in your hireling name.' return result end end @@ -1415,7 +1424,7 @@ end GameStore.canChangeToName = function(name) local result = { - ability = false + ability = false, } if name:len() < 3 or name:len() > 14 then result.reason = "The length of your new name must be between 3 and 14 characters." @@ -1429,12 +1438,12 @@ GameStore.canChangeToName = function(name) end local matchtwo = name:match("^%s+") - if (matchtwo) then + if matchtwo then result.reason = "Your new name can't have whitespace at begin." return result end - if (count > 1) then + if count > 1 then result.reason = "Your new name have more than 1 whitespace." return result end @@ -1445,7 +1454,7 @@ GameStore.canChangeToName = function(name) for k, word in ipairs(words) do for k, nameWord in ipairs(split) do if nameWord:lower() == word then - result.reason = "You can't use word \"" .. word .. "\" in your new name." + result.reason = "You can't use word \"" .. word .. '" in your new name.' return result end end @@ -1453,17 +1462,17 @@ GameStore.canChangeToName = function(name) local tmpName = name:gsub("%s+", "") for i = 1, #words do - if (tmpName:lower():find(words[i])) then - result.reason = "You can't use word \"" .. words[i] .. "\" with whitespace in your new name." + if tmpName:lower():find(words[i]) then + result.reason = "You can't use word \"" .. words[i] .. '" with whitespace in your new name.' return result end end if MonsterType(name) then - result.reason = "Your new name \"" .. name .. "\" can't be a monster's name." + result.reason = 'Your new name "' .. name .. "\" can't be a monster's name." return result elseif Npc(name) then - result.reason = "Your new name \"" .. name .. "\" can't be a npc's name." + result.reason = 'Your new name "' .. name .. "\" can't be a npc's name." return result end @@ -1473,7 +1482,7 @@ GameStore.canChangeToName = function(name) for i = 1, name:len() do local m = name:sub(i, i) if m == c then - result.reason = "You can't use this letter \"" .. c .. "\" in your new name." + result.reason = "You can't use this letter \"" .. c .. '" in your new name.' return result end end @@ -1576,14 +1585,14 @@ function GameStore.processStackablePurchase(player, offerId, offerCount, offerNa if inbox and inbox:getEmptySlots() > 0 then if (isKeg and offerCount > 500) or offerCount > 100 then local parcel = inbox:addItem(PARCEL_ID, 1) - parcel:setAttribute(ITEM_ATTRIBUTE_STORE, systemTime()); + parcel:setAttribute(ITEM_ATTRIBUTE_STORE, systemTime()) if parcel then - parcel:setAttribute(ITEM_ATTRIBUTE_NAME, '' .. offerCount .. 'x ' .. offerName .. ' package.') + parcel:setAttribute(ITEM_ATTRIBUTE_NAME, "" .. offerCount .. "x " .. offerName .. " package.") local pendingCount = offerCount local limit = isKeg and 500 or 100 - while (pendingCount > 0) do + while pendingCount > 0 do local pack - if (pendingCount > limit) then + if pendingCount > limit then pack = limit else pack = pendingCount @@ -1620,9 +1629,7 @@ end function GameStore.processHouseRelatedPurchase(player, offer) local function isCaskItem(itemId) - return (itemId >= ITEM_HEALTH_CASK_START and itemId <= ITEM_HEALTH_CASK_END) or - (itemId >= ITEM_MANA_CASK_START and itemId <= ITEM_MANA_CASK_END) or - (itemId >= ITEM_SPIRIT_CASK_START and itemId <= ITEM_SPIRIT_CASK_END) + return (itemId >= ITEM_HEALTH_CASK_START and itemId <= ITEM_HEALTH_CASK_END) or (itemId >= ITEM_MANA_CASK_START and itemId <= ITEM_MANA_CASK_END) or (itemId >= ITEM_SPIRIT_CASK_START and itemId <= ITEM_SPIRIT_CASK_END) end local inbox = player:getSlotItem(CONST_SLOT_STORE_INBOX) @@ -1667,7 +1674,8 @@ function GameStore.processOutfitPurchase(player, offerSexIdTable, addon) elseif player:hasOutfit(looktype, _addon) then return error({ code = 0, message = "You already own this outfit." }) else - if not (player:addOutfitAddon(looktype, _addon)) -- TFS call failed + if + not (player:addOutfitAddon(looktype, _addon)) -- TFS call failed or (not player:hasOutfit(looktype, _addon)) -- Additional check; if the looktype doesn't match player sex for example, -- then the TFS check will still pass... bug? (TODO) then @@ -1692,8 +1700,8 @@ function GameStore.processNameChangePurchase(player, offer, productType, newName if productType == GameStore.ClientOfferTypes.CLIENT_STORE_OFFER_NAMECHANGE then local tile = Tile(player:getPosition()) - if (tile) then - if (not tile:hasFlag(TILESTATE_PROTECTIONZONE)) then + if tile then + if not tile:hasFlag(TILESTATE_PROTECTIONZONE) then return error({ code = 1, message = "You can change name only in Protection Zone." }) end end @@ -1713,7 +1721,9 @@ function GameStore.processNameChangePurchase(player, offer, productType, newName local message = string.format("You have purchased %s for %d coins.", offer.name, offer.price) addPlayerEvent(sendStorePurchaseSuccessful, 500, playerId, message) - newName = newName:lower():gsub("(%l)(%w*)", function(a, b) return string.upper(a) .. b end) + newName = newName:lower():gsub("(%l)(%w*)", function(a, b) + return string.upper(a) .. b + end) db.query("UPDATE `players` SET `name` = " .. db.escapeString(newName) .. " WHERE `id` = " .. player:getGuid()) message = "You have successfully changed you name, relogin!" addEvent(function() @@ -1741,7 +1751,7 @@ function GameStore.processExpBoostPuchase(player) player:setStoreXpBoost(50) player:setExpBoostStamina(currentExpBoostTime + 3600) - if (player:getStorageValue(GameStore.Storages.expBoostCount) == -1 or expBoostCount == 6) then + if player:getStorageValue(GameStore.Storages.expBoostCount) == -1 or expBoostCount == 6 then player:setStorageValue(GameStore.Storages.expBoostCount, 1) end @@ -1776,7 +1786,7 @@ function GameStore.processTempleTeleportPurchase(player) player:teleportTo(player:getTown():getTemplePosition()) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have been teleported to your hometown.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have been teleported to your hometown.") end function GameStore.processHirelingPurchase(player, offer, productType, hirelingName, chosenSex) @@ -1793,7 +1803,9 @@ function GameStore.processHirelingPurchase(player, offer, productType, hirelingN return error({ code = 1, message = result.reason }) end - hirelingName = hirelingName:lower():gsub("(%l)(%w*)", function(a, b) return string.upper(a) .. b end) + hirelingName = hirelingName:lower():gsub("(%l)(%w*)", function(a, b) + return string.upper(a) .. b + end) local hireling = player:addNewHireling(hirelingName, chosenSex) if not hireling then @@ -1828,9 +1840,11 @@ function GameStore.processHirelingChangeNamePurchase(player, offer, productType, return error({ code = 1, message = result.reason }) end - newHirelingName = newHirelingName:lower():gsub("(%l)(%w*)", function(a, b) return string.upper(a) .. b end) + newHirelingName = newHirelingName:lower():gsub("(%l)(%w*)", function(a, b) + return string.upper(a) .. b + end) - local message = 'Close the store window to select which hireling should be renamed to ' .. newHirelingName + local message = "Close the store window to select which hireling should be renamed to " .. newHirelingName addPlayerEvent(sendStorePurchaseSuccessful, 200, playerId, message) addPlayerEvent(HandleHirelingNameChange, 550, playerId, offer, newHirelingName) @@ -1846,7 +1860,7 @@ function GameStore.processHirelingChangeSexPurchase(player, offer) return error({ code = 1, message = "You cannot buy hireling change sex on client 10, please relog on client 12 and try again." }) end - local message = 'Close the store window to select which hireling should have the sex changed.' + local message = "Close the store window to select which hireling should have the sex changed." addPlayerEvent(sendStorePurchaseSuccessful, 200, playerId, message) addPlayerEvent(HandleHirelingSexChange, 550, playerId, offer) @@ -1860,7 +1874,7 @@ function GameStore.processHirelingSkillPurchase(player, offer) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) local skill = offer.id - HIRELING_STORAGE.SKILL player:enableHirelingSkill(skill) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'A new hireling skill has been added to all your hirelings') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "A new hireling skill has been added to all your hirelings") end function GameStore.processHirelingOutfitPurchase(player, offer) @@ -1871,7 +1885,7 @@ function GameStore.processHirelingOutfitPurchase(player, offer) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) local outfit = offer.id - HIRELING_STORAGE.OUTFIT player:enableHirelingOutfit(outfit) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'A new hireling outfit has been added to all your hirelings') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "A new hireling outfit has been added to all your hirelings") end --==Player==-- @@ -1963,7 +1977,7 @@ function Player.makeCoinTransaction(self, offer, desc) local op = true if desc then - desc = offer.name .. ' (' .. desc .. ')' + desc = offer.name .. " (" .. desc .. ")" else desc = offer.name end @@ -1981,7 +1995,7 @@ function Player.makeCoinTransaction(self, offer, desc) -- When the transaction is suscessfull add to the history if op then - GameStore.insertHistory(self:getAccountId(), GameStore.HistoryTypes.HISTORY_TYPE_NONE, desc, (offer.price) * -1, offer.coinType) + GameStore.insertHistory(self:getAccountId(), GameStore.HistoryTypes.HISTORY_TYPE_NONE, desc, offer.price * -1, offer.coinType) end return op @@ -2038,12 +2052,14 @@ end local function getHomeOffers(playerId) local player = Player(playerId) - if not player then return {} end + if not player then + return {} + end local GameStoreCategories = GameStore.Categories local offers = {} - if (GameStoreCategories) then + if GameStoreCategories then for k, category in ipairs(GameStoreCategories) do if category.offers then for _, offer in ipairs(category.offers) do @@ -2077,14 +2093,14 @@ function sendHomePage(playerId) local homeOffers = getHomeOffers(player:getId()) for p, offer in pairs(homeOffers) do local canBuy = player:canBuyOffer(offer) - if (canBuy.disabled == 1) then + if canBuy.disabled == 1 then for index, disableTable in ipairs(disableReasons) do - if (canBuy.disabledReason == disableTable.reason) then + if canBuy.disabledReason == disableTable.reason then offer.disabledReadonIndex = index end end - if (offer.disabledReadonIndex == nil) then + if offer.disabledReadonIndex == nil then offer.disabledReadonIndex = #disableReasons table.insert(disableReasons, canBuy.disabledReason) end @@ -2107,8 +2123,8 @@ function sendHomePage(playerId) msg:addByte(offer.coinType or 0x00) msg:addByte((offer.disabledReadonIndex ~= nil) and 1 or 0) - if (offer.disabledReadonIndex ~= nil) then - msg:addByte(0x01); + if offer.disabledReadonIndex ~= nil then + msg:addByte(0x01) msg:addU16(offer.disabledReadonIndex) offer.disabledReadonIndex = nil -- Reseting the table to nil disable reason end @@ -2117,7 +2133,7 @@ function sendHomePage(playerId) local type = convertType(offer.type) - msg:addByte(type); + msg:addByte(type) if type == GameStore.ConverType.SHOW_NONE then msg:addString(offer.icons[1]) elseif type == GameStore.ConverType.SHOW_MOUNT then @@ -2178,12 +2194,12 @@ end -- Hireling Helpers function HandleHirelingNameChange(playerId, offer, newHirelingName) - local player = Player(playerId); + local player = Player(playerId) local cb = function(playerId, data, hireling) local offer = data.offer local newHirelingName = data.newHirelingName - local player = Player(playerId); + local player = Player(playerId) if not hireling then return player:showInfoModal("Error", "Your must select a hireling.") end @@ -2195,7 +2211,7 @@ function HandleHirelingNameChange(playerId, offer, newHirelingName) local oldName = hireling.name hireling.name = newHirelingName - if not player:makeCoinTransaction(data.offer, oldName .. ' to ' .. newHirelingName) then + if not player:makeCoinTransaction(data.offer, oldName .. " to " .. newHirelingName) then return player:showInfoModal("Error", "Transaction error") end @@ -2203,18 +2219,18 @@ function HandleHirelingNameChange(playerId, offer, newHirelingName) if lamp then lamp:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "This mysterious lamp summons your very own personal hireling.\nThis item cannot be traded.\nThis magic lamp is the home of " .. hireling:getName() .. ".") end - logger.debug('{} has been renamed to {}', oldName, newHirelingName) + logger.debug("{} has been renamed to {}", oldName, newHirelingName) sendUpdatedStoreBalances(playerId) end - player:sendHirelingSelectionModal('Choose a Hireling', 'Select a hireling below', cb, { offer = offer, newHirelingName = newHirelingName }) + player:sendHirelingSelectionModal("Choose a Hireling", "Select a hireling below", cb, { offer = offer, newHirelingName = newHirelingName }) end function HandleHirelingSexChange(playerId, offer) - local player = Player(playerId); + local player = Player(playerId) local cb = function(playerId, data, hireling) - local player = Player(playerId); + local player = Player(playerId) if not hireling then return player:showInfoModal("Error", "Your must select a hireling.") end @@ -2230,20 +2246,20 @@ function HandleHirelingSexChange(playerId, offer) local changeTo, sexString, lookType if hireling.sex == HIRELING_SEX.FEMALE then changeTo = HIRELING_SEX.MALE - sexString = 'male' + sexString = "male" lookType = HIRELING_OUTFIT_DEFAULT.male else changeTo = HIRELING_SEX.FEMALE - sexString = 'female' + sexString = "female" lookType = HIRELING_OUTFIT_DEFAULT.female end hireling.sex = changeTo hireling.looktype = lookType - logger.debug('{} sex was changed to {}', hireling:getName(), sexString) + logger.debug("{} sex was changed to {}", hireling:getName(), sexString) sendUpdatedStoreBalances(playerId) end - player:sendHirelingSelectionModal('Choose a Hireling', 'Select a hireling below', cb, { offer = offer }) + player:sendHirelingSelectionModal("Choose a Hireling", "Select a hireling below", cb, { offer = offer }) end From db2031bc037d5a1712f6cb42553b8234f7c96390 Mon Sep 17 00:00:00 2001 From: Luan Luciano Date: Sun, 10 Sep 2023 12:54:44 -0300 Subject: [PATCH 03/10] improve: 'OutputMessagePool::sendAll' to hasTraceableContext (#1586) - Adding **OutputMessagePool::sendAll** to the _function `hasTraceableContext`_ function - Place list `hasTraceableContext` in it in **alphabetical order**. --- src/game/scheduling/task.hpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/game/scheduling/task.hpp b/src/game/scheduling/task.hpp index 183c51e5b55..540b0f4760a 100644 --- a/src/game/scheduling/task.hpp +++ b/src/game/scheduling/task.hpp @@ -45,13 +45,14 @@ class Task { bool hasTraceableContext() const { return std::set { - "Game::checkLight", - "Game::checkCreatures", - "Game::checkImbuements", - "Game::updateForgeableMonsters", - "Game::createFiendishMonsters", - "Game::createInfluencedMonsters", - "GlobalEvents::think", + "Game::checkCreatures" + "Game::checkImbuements" + "Game::checkLight" + "Game::createFiendishMonsters" + "Game::createInfluencedMonsters" + "Game::updateForgeableMonsters" + "GlobalEvents::think" + "OutputMessagePool::sendAll" "Webhook::run" } .contains(context); From 1e693808bfe09edb2fb46a3a41cb5e1dfaebdad6 Mon Sep 17 00:00:00 2001 From: Luan Santos Date: Sun, 10 Sep 2023 09:50:47 -0700 Subject: [PATCH 04/10] fix: missing commas in traceable context list (#1587) --- src/game/scheduling/task.hpp | 133 ++++++++++++++++++----------------- 1 file changed, 67 insertions(+), 66 deletions(-) diff --git a/src/game/scheduling/task.hpp b/src/game/scheduling/task.hpp index 540b0f4760a..72379a8ec31 100644 --- a/src/game/scheduling/task.hpp +++ b/src/game/scheduling/task.hpp @@ -1,66 +1,67 @@ -/** - * Canary - A free and open-source MMORPG server emulator - * Copyright (©) 2019-2022 OpenTibiaBR - * Repository: https://github.com/opentibiabr/canary - * License: https://github.com/opentibiabr/canary/blob/main/LICENSE - * Contributors: https://github.com/opentibiabr/canary/graphs/contributors - * Website: https://docs.opentibiabr.com/ - */ - -#pragma once - -class Task { -public: - // DO NOT allocate this class on the stack - Task(std::function &&f, std::string context) : - context(std::move(context)), func(std::move(f)) { - assert(!context.empty() && "Context cannot be empty!"); - } - - Task(std::function &&f, std::string context, uint32_t delay) : - delay(delay), context(std::move(context)), func(std::move(f)) { - assert(!context.empty() && "Context cannot be empty!"); - } - - virtual ~Task() = default; - void operator()() { - func(); - } - - void setEventId(uint64_t id) { - eventId = id; - } - - uint64_t getEventId() const { - return eventId; - } - - uint32_t getDelay() const { - return delay; - } - - std::string getContext() const { - return context; - } - - bool hasTraceableContext() const { - return std::set { - "Game::checkCreatures" - "Game::checkImbuements" - "Game::checkLight" - "Game::createFiendishMonsters" - "Game::createInfluencedMonsters" - "Game::updateForgeableMonsters" - "GlobalEvents::think" - "OutputMessagePool::sendAll" - "Webhook::run" - } - .contains(context); - } - -private: - uint32_t delay = 0; - uint64_t eventId = 0; - std::string context {}; - std::function func {}; -}; +/** + * Canary - A free and open-source MMORPG server emulator + * Copyright (©) 2019-2022 OpenTibiaBR + * Repository: https://github.com/opentibiabr/canary + * License: https://github.com/opentibiabr/canary/blob/main/LICENSE + * Contributors: https://github.com/opentibiabr/canary/graphs/contributors + * Website: https://docs.opentibiabr.com/ + */ + +#pragma once + +class Task { +public: + // DO NOT allocate this class on the stack + Task(std::function &&f, std::string context) : + context(std::move(context)), func(std::move(f)) { + assert(!context.empty() && "Context cannot be empty!"); + } + + Task(std::function &&f, std::string context, uint32_t delay) : + delay(delay), context(std::move(context)), func(std::move(f)) { + assert(!context.empty() && "Context cannot be empty!"); + } + + virtual ~Task() = default; + void operator()() { + func(); + } + + void setEventId(uint64_t id) { + eventId = id; + } + + uint64_t getEventId() const { + return eventId; + } + + uint32_t getDelay() const { + return delay; + } + + std::string getContext() const { + return context; + } + + bool hasTraceableContext() const { + return std::set { + "Game::checkCreatures", + "Game::checkImbuements", + "Game::checkLight", + "Game::createFiendishMonsters", + "Game::createInfluencedMonsters", + "Game::updateForgeableMonsters", + "GlobalEvents::think", + "OutputMessagePool::sendAll", + "SpawnMonster::checkSpawnMonster", + "Webhook::run", + } + .contains(context); + } + +private: + uint32_t delay = 0; + uint64_t eventId = 0; + std::string context {}; + std::function func {}; +}; From 5549d87f9d00a977f75823d8a0bd909c6bfd50dc Mon Sep 17 00:00:00 2001 From: Luan Santos Date: Sun, 10 Sep 2023 10:17:19 -0700 Subject: [PATCH 05/10] improve: switch to Stylua formatter (#1582) Stylua is easier to configure than what we had before, since it's already available as a code action. It also parses the code while it formats which will help catch syntax errors on PRs automatically. --- .github/workflows/lua-format.yml | 16 +- data-canary/lib/core/load.lua | 6 +- data-canary/lib/core/quests.lua | 8 +- data-canary/lib/core/storages.lua | 15 +- data-canary/lib/lib.lua | 2 +- data-canary/monster/amphibics/azure_frog.lua | 22 +- data-canary/monster/amphibics/bog_frog.lua | 21 +- data-canary/monster/amphibics/coral_frog.lua | 22 +- .../monster/amphibics/crimson_frog.lua | 22 +- data-canary/monster/amphibics/deathspawn.lua | 19 +- data-canary/monster/amphibics/filth_toad.lua | 20 +- data-canary/monster/amphibics/green_frog.lua | 23 +- .../monster/amphibics/infernal_frog.lua | 22 +- data-canary/monster/amphibics/orchid_frog.lua | 22 +- data-canary/monster/amphibics/salamander.lua | 22 +- data-canary/monster/amphibics/toad.lua | 26 +- data-canary/monster/bosses/apocalypse.lua | 32 +- .../monster/bosses/apprentice_sheng.lua | 36 +- data-canary/monster/bosses/bazir.lua | 36 +- data-canary/monster/bosses/black_knight.lua | 34 +- data-canary/monster/bosses/bullwark.lua | 28 +- data-canary/monster/bosses/custodian.lua | 32 +- data-canary/monster/bosses/dharalion.lua | 38 +- data-canary/monster/bosses/shadowpelt.lua | 38 +- data-canary/monster/demons/demon.lua | 30 +- data-canary/monster/demons/destroyer.lua | 22 +- data-canary/monster/demons/fury.lua | 22 +- data-canary/monster/demons/hellhound.lua | 22 +- data-canary/monster/demons/hellspawn.lua | 20 +- data-canary/monster/demons/juggernaut.lua | 22 +- data-canary/monster/dragons/dragon.lua | 22 +- data-canary/monster/dragons/dragon_lord.lua | 22 +- data-canary/monster/dragons/hydra.lua | 22 +- data-canary/monster/dragons/ice_dragon.lua | 20 +- data-canary/monster/dragons/wyrm.lua | 22 +- .../monster/familiars/druid_familiar.lua | 19 +- .../monster/familiars/knight_familiar.lua | 19 +- .../monster/familiars/paladin_familiar.lua | 19 +- .../monster/familiars/sorcerer_familiar.lua | 19 +- data-canary/monster/giants/behemoth.lua | 22 +- data-canary/monster/giants/cyclops.lua | 22 +- data-canary/monster/giants/cyclops_drone.lua | 22 +- data-canary/monster/giants/cyclops_smith.lua | 22 +- data-canary/monster/humanoids/frost_troll.lua | 22 +- data-canary/monster/humanoids/goblin.lua | 22 +- .../monster/humanoids/island_troll.lua | 22 +- data-canary/monster/humanoids/troll.lua | 22 +- data-canary/monster/humans/amazon.lua | 22 +- data-canary/monster/humans/assassin.lua | 22 +- data-canary/monster/humans/bandit.lua | 22 +- data-canary/monster/humans/hunter.lua | 22 +- data-canary/monster/humans/monk.lua | 22 +- data-canary/monster/humans/valkyrie.lua | 22 +- data-canary/monster/magicals/frazzlemaw.lua | 22 +- data-canary/monster/magicals/guzzlemaw.lua | 20 +- data-canary/monster/mammals/bat.lua | 22 +- data-canary/monster/mammals/cave_rat.lua | 22 +- data-canary/monster/mammals/winter_wolf.lua | 22 +- data-canary/monster/mammals/wolf.lua | 22 +- data-canary/monster/reptiles/crocodile.lua | 20 +- data-canary/monster/reptiles/snake.lua | 23 +- data-canary/monster/reptiles/tortoise.lua | 20 +- data-canary/monster/slimes/defiler.lua | 22 +- data-canary/monster/slimes/slime.lua | 27 +- data-canary/monster/undeads/ghoul.lua | 20 +- data-canary/monster/undeads/mummy.lua | 22 +- data-canary/monster/undeads/skeleton.lua | 20 +- data-canary/monster/vermins/poison_spider.lua | 20 +- data-canary/monster/vermins/sandcrawler.lua | 22 +- data-canary/monster/vermins/spider.lua | 20 +- data-canary/monster/vermins/wasp.lua | 22 +- data-canary/npc/canary.lua | 17 +- .../scripts/actions/imbuement_shrine.lua | 2 +- .../actions/other/bed_modification_kits.lua | 2 +- data-canary/scripts/actions/other/carpets.lua | 2 +- .../scripts/actions/other/cask_kegs.lua | 2 +- .../scripts/actions/other/change_gold.lua | 2 +- .../actions/other/christmas_bundle.lua | 10 +- .../scripts/actions/other/clay_lump.lua | 12 +- .../actions/other/construction_kits.lua | 4 +- .../scripts/actions/other/costume_bag.lua | 6 +- data-canary/scripts/actions/other/destroy.lua | 2 +- data-canary/scripts/actions/other/dolls.lua | 34 +- data-canary/scripts/actions/other/fluids.lua | 2 +- data-canary/scripts/actions/other/food.lua | 2 +- data-canary/scripts/actions/other/music.lua | 2 +- data-canary/scripts/actions/other/potions.lua | 71 +- .../scripts/actions/other/skill_trainer.lua | 2 +- .../scripts/actions/other/spellbook.lua | 12 +- .../scripts/actions/other/sugar_oat.lua | 2 +- .../scripts/actions/other/surprise_bag.lua | 6 +- .../scripts/actions/other/wall_mirror.lua | 2 +- .../scripts/actions/quests/annihilator.lua | 6 +- data-canary/scripts/actions/quests/quests.lua | 8 +- data-canary/scripts/actions/tools/crowbar.lua | 3 +- .../scripts/actions/tools/fire_bug.lua | 2 +- .../scripts/actions/tools/gold_converter.lua | 2 +- data-canary/scripts/actions/tools/machete.lua | 3 +- .../actions/tools/magic_gold_converter.lua | 4 +- .../scripts/actions/tools/rust_remover.lua | 16 +- data-canary/scripts/actions/tools/sickle.lua | 3 +- .../scripts/actions/tools/skinning.lua | 133 +- .../scripts/actions/tools/toolgear.lua | 16 +- data-canary/scripts/actions/worldboard.lua | 6 +- data-canary/scripts/bestiary/charms.lua | 58 +- .../creaturescripts/#modal_window_example.lua | 8 +- .../scripts/creaturescripts/advance_save.lua | 4 +- .../creaturescripts/extended_opcode.lua | 2 +- .../scripts/creaturescripts/free_quest.lua | 5 +- data-canary/scripts/creaturescripts/login.lua | 29 +- .../scripts/creaturescripts/player_death.lua | 23 +- .../globalevents/global_server_save.lua | 2 +- data-canary/scripts/globalevents/startup.lua | 4 +- .../item_classification/item_tiers.lua | 10 +- data-canary/scripts/lib/register_actions.lua | 63 +- .../scripts/lib/register_bestiary_charm.lua | 16 +- .../scripts/lib/register_item_tier.lua | 16 +- .../scripts/lib/register_monster_type.lua | 132 +- data-canary/scripts/lib/register_npc_type.lua | 18 +- data-canary/scripts/lib/register_spells.lua | 78 +- data-canary/scripts/movements/decay_to.lua | 2 +- data-canary/scripts/movements/trap.lua | 2 +- .../movements/unscripted_movements.lua | 5946 +++++++-------- data-canary/scripts/movements/walkback.lua | 3 +- .../scripts/reward_chest/boss_death.lua | 4 +- .../scripts/reward_chest/reward_chest.lua | 3 +- .../scripts/spells/attack/annihilation.lua | 2 +- .../scripts/spells/attack/brutal_strike.lua | 2 +- .../scripts/spells/attack/front_sweep.lua | 2 +- .../spells/attack/strong_ethereal_spear.lua | 2 +- .../scripts/spells/healing/cure_poison.lua | 3 +- .../scripts/spells/healing/heal_monsters.lua | 8 +- .../spells/healing/heal_monsters_9x9.lua | 8 +- .../spells/healing/intense_healing.lua | 3 +- .../scripts/spells/healing/magic_patch.lua | 3 +- .../scripts/spells/healing/mass_healing.lua | 2 +- .../scripts/spells/party/enchant_party.lua | 6 +- .../scripts/spells/party/heal_party.lua | 6 +- .../scripts/spells/party/protect_party.lua | 6 +- .../scripts/spells/party/train_party.lua | 6 +- data-canary/scripts/spells/support/charge.lua | 2 +- .../spells/support/chivalrous_challenge.lua | 2 +- .../scripts/spells/support/divine_dazzle.lua | 2 +- .../scripts/spells/support/find_fiend.lua | 39 +- .../scripts/spells/support/find_person.lua | 10 +- data-canary/scripts/spells/support/food.lua | 2 +- data-canary/scripts/spells/support/haste.lua | 2 +- .../scripts/spells/support/strong_haste.lua | 2 +- .../scripts/spells/support/swift_foot.lua | 2 +- .../scripts/weapons/scripted_weapons.lua | 2 +- .../scripts/weapons/unscripted_weapons.lua | 1744 ++--- data-otservbr-global/lib/compat/compat.lua | 118 +- data-otservbr-global/lib/core/load.lua | 4 +- data-otservbr-global/lib/core/quests.lua | 2680 ++++--- data-otservbr-global/lib/core/storages.lua | 481 +- data-otservbr-global/lib/lib.lua | 12 +- .../lib/others/dawnport_lib.lua | 29 +- data-otservbr-global/lib/others/load.lua | 4 +- .../lib/quests/bigfoot_burden.lua | 30 +- data-otservbr-global/lib/quests/grimvale.lua | 14 +- .../lib/quests/killing_in_the_name_of.lua | 395 +- data-otservbr-global/lib/quests/quest.lua | 16 +- .../lib/quests/svargrond_arena.lua | 118 +- .../lib/quests/the_queen_of_the_banshees.lua | 38 +- .../lib/quests/their_masters_voice.lua | 14 +- data-otservbr-global/lib/tables/load.lua | 4 +- .../lib/tables/teleport_item_destinations.lua | 2 +- data-otservbr-global/lib/tables/town.lua | 2 +- data-otservbr-global/lib/vip/vip_system.lua | 8 +- data-otservbr-global/migrations/22.lua | 6 +- .../monster/amphibics/azure_frog.lua | 12 +- .../monster/amphibics/bog_frog.lua | 11 +- .../monster/amphibics/coral_frog.lua | 12 +- .../monster/amphibics/crimson_frog.lua | 12 +- .../monster/amphibics/deathspawn.lua | 9 +- .../monster/amphibics/filth_toad.lua | 14 +- .../monster/amphibics/green_frog.lua | 14 +- .../monster/amphibics/infernal_frog.lua | 14 +- .../monster/amphibics/makara.lua | 8 +- .../monster/amphibics/orchid_frog.lua | 12 +- .../monster/amphibics/salamander.lua | 14 +- .../monster/amphibics/toad.lua | 14 +- .../monster/aquatics/abyssal_calamary.lua | 13 +- .../monster/aquatics/blood_crab.lua | 12 +- .../monster/aquatics/calamary.lua | 10 +- .../monster/aquatics/crab.lua | 12 +- .../monster/aquatics/crustacea_gigantica.lua | 10 +- .../monster/aquatics/deathling_scout.lua | 22 +- .../aquatics/deathling_spellsinger.lua | 16 +- .../monster/aquatics/deepling_brawler.lua | 12 +- .../monster/aquatics/deepling_elite.lua | 14 +- .../monster/aquatics/deepling_guard.lua | 14 +- .../aquatics/deepling_master_librarian.lua | 14 +- .../monster/aquatics/deepling_scout.lua | 12 +- .../monster/aquatics/deepling_spellsinger.lua | 12 +- .../monster/aquatics/deepling_tyrant.lua | 14 +- .../monster/aquatics/deepling_warrior.lua | 14 +- .../monster/aquatics/deepling_worker.lua | 12 +- .../monster/aquatics/deepsea_blood_crab.lua | 13 +- .../monster/aquatics/fish.lua | 11 +- .../monster/aquatics/jellyfish.lua | 14 +- .../monster/aquatics/manta_ray.lua | 12 +- .../monster/aquatics/northern_pike.lua | 11 +- .../monster/aquatics/quara_constrictor.lua | 12 +- .../aquatics/quara_constrictor_scout.lua | 12 +- .../monster/aquatics/quara_hydromancer.lua | 14 +- .../aquatics/quara_hydromancer_scout.lua | 14 +- .../monster/aquatics/quara_mantassin.lua | 14 +- .../aquatics/quara_mantassin_scout.lua | 12 +- .../monster/aquatics/quara_pincher.lua | 12 +- .../monster/aquatics/quara_pincher_scout.lua | 12 +- .../monster/aquatics/quara_predator.lua | 14 +- .../monster/aquatics/quara_predator_scout.lua | 12 +- .../aquatics/renegade_quara_constrictor.lua | 14 +- .../aquatics/renegade_quara_hydromancer.lua | 14 +- .../aquatics/renegade_quara_mantassin.lua | 14 +- .../aquatics/renegade_quara_pincher.lua | 12 +- .../aquatics/renegade_quara_predator.lua | 14 +- .../monster/aquatics/shark.lua | 12 +- .../monster/birds/agressive_chicken.lua | 18 +- .../monster/birds/agrestic_chicken.lua | 10 +- .../monster/birds/berserker_chicken.lua | 14 +- .../monster/birds/cave_parrot.lua | 13 +- .../monster/birds/chicken.lua | 10 +- .../monster/birds/demon_parrot.lua | 12 +- .../monster/birds/dire_penguin.lua | 14 +- .../monster/birds/flamingo.lua | 10 +- .../monster/birds/headpecker.lua | 8 +- .../monster/birds/jungle_moa.lua | 8 +- .../monster/birds/marsh_stalker.lua | 12 +- data-otservbr-global/monster/birds/parrot.lua | 13 +- .../monster/birds/penguin.lua | 12 +- data-otservbr-global/monster/birds/pigeon.lua | 11 +- .../monster/birds/seagull.lua | 13 +- .../monster/birds/terror_bird.lua | 12 +- .../monster/bosses/apocalypse.lua | 24 +- .../monster/bosses/apprentice_sheng.lua | 28 +- .../monster/bosses/armenius.lua | 26 +- data-otservbr-global/monster/bosses/bazir.lua | 28 +- .../monster/bosses/bibby_bloodbath.lua | 24 +- .../monster/bosses/big_boss_trolliver.lua | 26 +- .../monster/bosses/black_knight.lua | 22 +- .../monster/bosses/brain_parasite.lua | 4 +- .../monster/bosses/bullwark.lua | 24 +- .../monster/bosses/chikhaton.lua | 25 +- .../monster/bosses/clubarc_the_plunderer.lua | 32 +- .../monster/bosses/custodian.lua | 20 +- .../monster/bosses/dharalion.lua | 28 +- .../monster/bosses/diblis_the_fair.lua | 28 +- .../monster/bosses/diseased_bill.lua | 24 +- .../monster/bosses/diseased_dan.lua | 24 +- .../monster/bosses/diseased_fred.lua | 24 +- .../monster/bosses/ekatrix.lua | 32 +- .../monster/bosses/energized_raging_mage.lua | 29 +- .../monster/bosses/fleshslicer.lua | 23 +- .../monster/bosses/freegoiz.lua | 26 +- .../monster/bosses/gaffir.lua | 26 +- .../monster/bosses/general_murius.lua | 28 +- .../monster/bosses/glitterscale.lua | 23 +- .../monster/bosses/grandfather_tridian.lua | 28 +- .../monster/bosses/gravelord_oshuran.lua | 38 +- data-otservbr-global/monster/bosses/groam.lua | 22 +- .../monster/bosses/guard_captain_quaid.lua | 22 +- .../monster/bosses/hairman_the_huge.lua | 24 +- data-otservbr-global/monster/bosses/heoni.lua | 25 +- .../monster/bosses/incredibly_old_witch.lua | 23 +- .../monster/bosses/infernatil.lua | 28 +- .../monster/bosses/jesse_the_wicked.lua | 22 +- .../monster/bosses/koshei_the_deathless.lua | 29 +- .../monster/bosses/kraknaknork's_demon.lua | 33 +- .../monster/bosses/kraknaknork.lua | 39 +- .../monster/bosses/kroazur.lua | 24 +- data-otservbr-global/monster/bosses/lisa.lua | 24 +- .../monster/bosses/mad_mage.lua | 28 +- .../monster/bosses/mad_technomancer.lua | 24 +- .../monster/bosses/morik_the_gladiator.lua | 26 +- .../monster/bosses/morshabaal.lua | 25 +- .../monster/bosses/munster.lua | 36 +- .../monster/bosses/pythius_the_rotten.lua | 27 +- .../monster/bosses/raging_mage.lua | 38 +- .../monster/bosses/raxias.lua | 34 +- .../monster/bosses/renegade_orc.lua | 32 +- .../monster/bosses/robby_the_reckless.lua | 22 +- .../monster/bosses/rukor_zad.lua | 24 +- .../bosses/smuggler_baron_silvertoe.lua | 28 +- .../monster/bosses/spider_queen.lua | 31 +- .../monster/bosses/splasher.lua | 25 +- .../monster/bosses/teleskor.lua | 32 +- .../monster/bosses/the_abomination.lua | 24 +- .../monster/bosses/the_astral_source.lua | 25 +- .../monster/bosses/the_blightfather.lua | 24 +- .../monster/bosses/the_book_of_death.lua | 23 +- .../monster/bosses/the_brainstealer.lua | 22 +- .../monster/bosses/the_collector.lua | 23 +- .../monster/bosses/the_evil_eye.lua | 26 +- .../monster/bosses/the_first_dragon.lua | 35 +- .../monster/bosses/the_frog_prince.lua | 23 +- .../monster/bosses/verminor.lua | 32 +- data-otservbr-global/monster/bosses/visco.lua | 32 +- .../monster/bosses/warlord_ruzad.lua | 26 +- .../monster/bosses/weakened_demon.lua | 36 +- .../monster/bosses/weakened_shlorg.lua | 32 +- .../monster/bosses/williwasp.lua | 32 +- .../monster/bosses/yaga_the_crone.lua | 24 +- .../monster/bosses/zarabustor.lua | 38 +- .../monster/bosses/zavarash.lua | 28 +- .../monster/bosses/zevelon_duskbringer.lua | 28 +- .../monster/bosses/zoralurk.lua | 28 +- .../monster/bosses/zushuka.lua | 24 +- .../monster/constructs/animated_snowman.lua | 12 +- .../monster/constructs/biting_book.lua | 12 +- .../monster/constructs/clay_guardian.lua | 14 +- .../constructs/damaged_crystal_golem.lua | 12 +- .../constructs/damaged_worker_golem.lua | 14 +- .../monster/constructs/diamond_servant.lua | 12 +- .../constructs/diamond_servant_replica.lua | 14 +- .../constructs/enraged_crystal_golem.lua | 22 +- .../monster/constructs/eternal_guardian.lua | 12 +- .../monster/constructs/glooth_golem.lua | 14 +- .../monster/constructs/golden_servant.lua | 12 +- .../constructs/golden_servant_replica.lua | 14 +- .../monster/constructs/ice_golem.lua | 12 +- .../monster/constructs/infected_weeper.lua | 18 +- .../monster/constructs/iron_servant.lua | 12 +- .../constructs/iron_servant_replica.lua | 12 +- .../monster/constructs/lava_golem.lua | 12 +- .../monster/constructs/magma_crawler.lua | 14 +- .../monster/constructs/metal_gargoyle.lua | 12 +- .../monster/constructs/orewalker.lua | 12 +- .../monster/constructs/rotten_golem.lua | 12 +- .../monster/constructs/rustheap_golem.lua | 22 +- .../monster/constructs/sandstone_scorpion.lua | 14 +- .../monster/constructs/shrieking_cry-stal.lua | 8 +- .../monster/constructs/stone_devourer.lua | 12 +- .../monster/constructs/stone_golem.lua | 12 +- .../monster/constructs/walker.lua | 12 +- .../monster/constructs/war_golem.lua | 14 +- .../monster/constructs/weeper.lua | 14 +- .../monster/constructs/worker_golem.lua | 14 +- .../monster/dawnport/brittle_skeleton.lua | 10 +- .../monster/dawnport/crazed_dwarf.lua | 11 +- .../monster/dawnport/dawn_bat.lua | 11 +- .../monster/dawnport/dawn_scorpion.lua | 11 +- .../monster/dawnport/dawnfly.lua | 13 +- .../monster/dawnport/juvenile_cyclops.lua | 11 +- .../monster/dawnport/lesser_fire_devil.lua | 11 +- .../monster/dawnport/meadow_strider.lua | 13 +- .../monster/dawnport/mountain_troll.lua | 11 +- .../monster/dawnport/muglex_clan_assassin.lua | 16 +- .../monster/dawnport/muglex_clan_footman.lua | 18 +- .../dawnport/muglex_clan_scavenger.lua | 18 +- .../monster/dawnport/sacred_snake.lua | 11 +- .../monster/dawnport/salamander_trainer.lua | 13 +- .../monster/dawnport/scar_tribe_shaman.lua | 17 +- .../monster/dawnport/scar_tribe_warrior.lua | 11 +- .../monster/dawnport/spidris_elitesumom.lua | 19 +- .../dawnport/troll-trained_salamander.lua | 11 +- .../monster/dawnport/troll_marauder.lua | 11 +- .../monster/dawnport/woodling.lua | 11 +- .../monster/demons/askarak_demon.lua | 12 +- .../monster/demons/askarak_lord.lua | 14 +- .../monster/demons/askarak_prince.lua | 12 +- .../monster/demons/brachiodemon.lua | 10 +- .../monster/demons/dark_torturer.lua | 14 +- .../monster/demons/dawnfire_asura.lua | 14 +- data-otservbr-global/monster/demons/demon.lua | 18 +- .../monster/demons/demon_outcast.lua | 18 +- .../monster/demons/destroyer.lua | 14 +- .../monster/demons/diabolic_imp.lua | 14 +- .../monster/demons/duskbringer.lua | 14 +- .../monster/demons/fire_devil.lua | 12 +- .../monster/demons/floating_savant.lua | 16 +- .../monster/demons/frost_flower_asura.lua | 12 +- data-otservbr-global/monster/demons/fury.lua | 14 +- .../monster/demons/gozzler.lua | 14 +- .../monster/demons/grimeleech.lua | 14 +- .../monster/demons/hellfire_fighter.lua | 10 +- .../monster/demons/hellflayer.lua | 14 +- .../monster/demons/hellhound.lua | 14 +- .../monster/demons/hellspawn.lua | 14 +- .../monster/demons/herald_of_gloom.lua | 14 +- .../monster/demons/infernal_demon.lua | 8 +- .../monster/demons/juggernaut.lua | 14 +- .../monster/demons/many_faces.lua | 8 +- .../monster/demons/midnight_asura.lua | 14 +- .../monster/demons/nightfiend.lua | 12 +- .../monster/demons/plaguesmith.lua | 14 +- .../monster/demons/shaburak_demon.lua | 14 +- .../monster/demons/shaburak_lord.lua | 14 +- .../monster/demons/shaburak_prince.lua | 14 +- .../monster/demons/shadow_hound.lua | 14 +- .../monster/demons/true_dawnfire_asura.lua | 14 +- .../demons/true_frost_flower_asura.lua | 12 +- .../monster/demons/true_midnight_asura.lua | 10 +- .../monster/demons/vexclaw.lua | 22 +- .../monster/dragons/dragon.lua | 13 +- .../monster/dragons/dragon_hatchling.lua | 12 +- .../monster/dragons/dragon_lord.lua | 13 +- .../monster/dragons/dragon_lord_hatchling.lua | 20 +- .../monster/dragons/draken_abomination.lua | 18 +- .../monster/dragons/draken_elite.lua | 13 +- .../monster/dragons/draken_spellweaver.lua | 14 +- .../monster/dragons/draken_warmaster.lua | 20 +- .../monster/dragons/elder_wyrm.lua | 13 +- .../monster/dragons/frost_dragon.lua | 12 +- .../dragons/frost_dragon_hatchling.lua | 13 +- .../monster/dragons/ghastly_dragon.lua | 11 +- .../monster/dragons/hydra.lua | 13 +- data-otservbr-global/monster/dragons/wyrm.lua | 12 +- .../monster/elementals/cliff_strider.lua | 12 +- .../monster/elementals/earth_elemental.lua | 14 +- .../monster/elementals/energy_elemental.lua | 14 +- .../monster/elementals/fire_elemental.lua | 13 +- .../monster/elementals/foam_stalker.lua | 12 +- .../elementals/high_voltage_elemental.lua | 12 +- .../monster/elementals/ironblight.lua | 14 +- .../elementals/knowledge_elemental.lua | 14 +- .../monster/elementals/lava_lurker.lua | 12 +- .../elementals/massive_earth_elemental.lua | 14 +- .../elementals/massive_energy_elemental.lua | 14 +- .../elementals/massive_fire_elemental.lua | 12 +- .../elementals/massive_water_elemental.lua | 14 +- .../monster/elementals/raging_fire.lua | 13 +- .../elementals/ravenous_lava_lurker.lua | 12 +- .../monster/elementals/sulphur_spouter.lua | 8 +- .../elementals/turbulent_elemental.lua | 8 +- .../monster/elementals/water_elemental.lua | 14 +- .../monster/event_creatures/bones.lua | 12 +- .../event_creatures/eclipse_knight.lua | 13 +- .../event_creatures/essence_of_darkness.lua | 12 +- .../monster/event_creatures/fluffy.lua | 10 +- .../event_creatures/grynch_clan_goblin.lua | 15 +- .../monster/event_creatures/hacker.lua | 12 +- .../memory_creatures/memory_of_a_banshee.lua | 13 +- .../memory_creatures/memory_of_a_book.lua | 11 +- .../memory_of_a_carnisylvan.lua | 12 +- .../memory_creatures/memory_of_a_dwarf.lua | 11 +- .../memory_creatures/memory_of_a_faun.lua | 13 +- .../memory_of_a_frazzlemaw.lua | 13 +- .../memory_creatures/memory_of_a_fungus.lua | 12 +- .../memory_creatures/memory_of_a_golem.lua | 11 +- .../memory_creatures/memory_of_a_hero.lua | 13 +- .../memory_creatures/memory_of_a_hydra.lua | 13 +- .../memory_creatures/memory_of_a_lizard.lua | 13 +- .../memory_creatures/memory_of_a_mammoth.lua | 11 +- .../memory_of_a_manticore.lua | 11 +- .../memory_creatures/memory_of_a_pirate.lua | 11 +- .../memory_creatures/memory_of_a_scarab.lua | 17 +- .../memory_creatures/memory_of_a_shaper.lua | 13 +- .../memory_creatures/memory_of_a_vampire.lua | 13 +- .../memory_creatures/memory_of_a_werelion.lua | 13 +- .../memory_creatures/memory_of_a_wolf.lua | 11 +- .../memory_creatures/memory_of_a_yalahari.lua | 11 +- .../memory_creatures/memory_of_an_amazon.lua | 11 +- .../memory_creatures/memory_of_an_elf.lua | 13 +- .../memory_of_an_insectoid.lua | 11 +- .../memory_creatures/memory_of_an_ogre.lua | 13 +- .../monster/event_creatures/minishabaal.lua | 16 +- .../event_creatures/party_skeleton.lua | 11 +- .../monster/event_creatures/pinata_dragon.lua | 26 +- .../monster/event_creatures/primitive.lua | 10 +- .../monster/event_creatures/spectral_scum.lua | 11 +- .../event_creatures/the_halloween_hare.lua | 14 +- .../event_creatures/the_mutated_pumpkin.lua | 24 +- .../monster/event_creatures/undead_minion.lua | 10 +- .../extra_dimensional/breach_brood.lua | 10 +- .../extra_dimensional/courage_leech.lua | 8 +- .../extra_dimensional/dread_intruder.lua | 14 +- .../instable_breach_brood.lua | 12 +- .../extra_dimensional/instable_sparkion.lua | 14 +- .../extra_dimensional/reality_reaver.lua | 14 +- .../monster/extra_dimensional/sparkion.lua | 14 +- .../stabilizing_dread_intruder.lua | 14 +- .../stabilizing_reality_reaver.lua | 14 +- .../monster/extra_dimensional/yielothax.lua | 22 +- .../monster/familiars/druid_familiar.lua | 13 +- .../monster/familiars/knight_familiar.lua | 13 +- .../monster/familiars/paladin_familiar.lua | 13 +- .../monster/familiars/sorcerer_familiar.lua | 19 +- .../monster/fey/arctic_faun.lua | 14 +- data-otservbr-global/monster/fey/boogy.lua | 14 +- .../monster/fey/dark_faun.lua | 16 +- data-otservbr-global/monster/fey/dryad.lua | 12 +- data-otservbr-global/monster/fey/faun.lua | 14 +- data-otservbr-global/monster/fey/nymph.lua | 14 +- data-otservbr-global/monster/fey/pixie.lua | 22 +- data-otservbr-global/monster/fey/pooka.lua | 14 +- .../monster/fey/swan_maiden.lua | 14 +- .../monster/fey/tainted_soul.lua | 14 +- .../monster/fey/twisted_pooka.lua | 14 +- data-otservbr-global/monster/fey/wisp.lua | 14 +- .../giants/beast_hulking_prehemoth.lua | 14 +- .../monster/giants/behemoth.lua | 14 +- .../monster/giants/cyclops.lua | 12 +- .../monster/giants/cyclops_drone.lua | 12 +- .../monster/giants/cyclops_smith.lua | 12 +- .../monster/giants/frost_giant.lua | 14 +- .../monster/giants/frost_giantess.lua | 22 +- .../monster/giants/hulking_prehemoth.lua | 8 +- .../monster/giants/ogre_brute.lua | 14 +- .../monster/giants/ogre_rowdy.lua | 12 +- .../monster/giants/ogre_ruffian.lua | 12 +- .../monster/giants/ogre_sage.lua | 18 +- .../monster/giants/ogre_savage.lua | 14 +- .../monster/giants/ogre_shaman.lua | 18 +- .../monster/giants/orclops_doomhauler.lua | 14 +- .../monster/giants/orclops_ravager.lua | 14 +- .../monster/humanoids/broken_shaper.lua | 14 +- .../monster/humanoids/chakoya_toolshaper.lua | 12 +- .../monster/humanoids/chakoya_tribewarden.lua | 12 +- .../monster/humanoids/chakoya_windcaller.lua | 14 +- .../monster/humanoids/cheese_thief.lua | 14 +- .../monster/humanoids/corym_charlatan.lua | 12 +- .../monster/humanoids/corym_skirmisher.lua | 12 +- .../monster/humanoids/corym_vanguard.lua | 14 +- .../humanoids/crazed_summer_rearguard.lua | 14 +- .../humanoids/crazed_summer_vanguard.lua | 14 +- .../humanoids/crazed_winter_rearguard.lua | 14 +- .../humanoids/crazed_winter_vanguard.lua | 14 +- .../monster/humanoids/dwarf.lua | 12 +- .../monster/humanoids/dwarf_geomancer.lua | 14 +- .../monster/humanoids/dwarf_guard.lua | 12 +- .../monster/humanoids/dwarf_henchman.lua | 13 +- .../monster/humanoids/dwarf_miner.lua | 11 +- .../monster/humanoids/dwarf_soldier.lua | 12 +- .../monster/humanoids/dworc_fleshhunter.lua | 12 +- .../monster/humanoids/dworc_venomsniper.lua | 12 +- .../monster/humanoids/dworc_voodoomaster.lua | 14 +- .../monster/humanoids/elf.lua | 12 +- .../monster/humanoids/elf_arcanist.lua | 14 +- .../monster/humanoids/elf_overseer.lua | 14 +- .../monster/humanoids/elf_scout.lua | 12 +- .../monster/humanoids/elite_pirat.lua | 12 +- .../monster/humanoids/enslaved_dwarf.lua | 14 +- .../monster/humanoids/execowtioner.lua | 22 +- .../monster/humanoids/firestarter.lua | 12 +- .../monster/humanoids/frost_troll.lua | 12 +- .../humanoids/furious_orc_berserker.lua | 12 +- .../monster/humanoids/furious_troll.lua | 16 +- .../humanoids/glooth_powered_minotaur.lua | 13 +- .../monster/humanoids/goblin.lua | 12 +- .../monster/humanoids/goblin_assassin.lua | 14 +- .../monster/humanoids/goblin_leader.lua | 12 +- .../monster/humanoids/goblin_scavenger.lua | 14 +- .../monster/humanoids/insane_siren.lua | 12 +- .../monster/humanoids/island_troll.lua | 12 +- .../humanoids/little_corym_charlatan.lua | 13 +- .../monster/humanoids/lost_basher.lua | 14 +- .../monster/humanoids/lost_berserker.lua | 14 +- .../monster/humanoids/lost_exile.lua | 22 +- .../monster/humanoids/lost_husher.lua | 14 +- .../monster/humanoids/lost_thrower.lua | 14 +- .../monster/humanoids/minotaur.lua | 12 +- .../monster/humanoids/minotaur_amazon.lua | 12 +- .../monster/humanoids/minotaur_archer.lua | 12 +- .../monster/humanoids/minotaur_bruiser.lua | 11 +- .../humanoids/minotaur_cult_follower.lua | 14 +- .../humanoids/minotaur_cult_prophet.lua | 14 +- .../humanoids/minotaur_cult_zealot.lua | 12 +- .../monster/humanoids/minotaur_guard.lua | 12 +- .../monster/humanoids/minotaur_hunter.lua | 14 +- .../monster/humanoids/minotaur_invader.lua | 12 +- .../monster/humanoids/minotaur_mage.lua | 12 +- .../monster/humanoids/minotaur_occultist.lua | 11 +- .../monster/humanoids/minotaur_poacher.lua | 11 +- .../monster/humanoids/minotaur_totem.lua | 14 +- .../monster/humanoids/mooh'tah_warrior.lua | 19 +- .../monster/humanoids/moohtant.lua | 20 +- .../monster/humanoids/orc.lua | 12 +- .../monster/humanoids/orc_berserker.lua | 14 +- .../monster/humanoids/orc_leader.lua | 12 +- .../monster/humanoids/orc_marauder.lua | 14 +- .../monster/humanoids/orc_rider.lua | 14 +- .../monster/humanoids/orc_shaman.lua | 18 +- .../monster/humanoids/orc_spearman.lua | 12 +- .../monster/humanoids/orc_warlord.lua | 14 +- .../monster/humanoids/orc_warrior.lua | 12 +- .../monster/humanoids/pirat_artillerist.lua | 12 +- .../monster/humanoids/pirat_bombardier.lua | 14 +- .../monster/humanoids/pirat_cutthroat.lua | 12 +- .../monster/humanoids/pirat_mate.lua | 14 +- .../monster/humanoids/pirat_scoundrel.lua | 12 +- .../humanoids/running_elite_orc_guard.lua | 18 +- .../monster/humanoids/shaper_matriarch.lua | 14 +- .../humanoids/soul-broken_harbinger.lua | 16 +- .../monster/humanoids/swamp_troll.lua | 12 +- .../monster/humanoids/troll.lua | 12 +- .../monster/humanoids/troll_champion.lua | 12 +- .../monster/humanoids/troll_guard.lua | 12 +- .../monster/humanoids/troll_legionnaire.lua | 14 +- .../monster/humanoids/twisted_shaper.lua | 22 +- .../monster/humanoids/worm_priestess.lua | 14 +- .../monster/humanoids/young_troll.lua | 11 +- .../monster/humans/acolyte_of_darkness.lua | 14 +- .../monster/humans/acolyte_of_the_cult.lua | 18 +- .../monster/humans/adept_of_the_cult.lua | 18 +- .../monster/humans/adventurer.lua | 11 +- .../monster/humans/amazon.lua | 13 +- .../monster/humans/angry_adventurer.lua | 11 +- .../monster/humans/assassin.lua | 14 +- .../monster/humans/bandit.lua | 12 +- .../monster/humans/barbarian_bloodwalker.lua | 14 +- .../monster/humans/barbarian_brutetamer.lua | 18 +- .../monster/humans/barbarian_headsplitter.lua | 12 +- .../monster/humans/barbarian_skullhunter.lua | 12 +- .../monster/humans/black_sphinx_acolyte.lua | 26 +- .../monster/humans/blood_hand.lua | 14 +- .../monster/humans/blood_priest.lua | 14 +- .../monster/humans/burning_gladiator.lua | 12 +- .../monster/humans/carnisylvan_sapling.lua | 7 +- .../monster/humans/cobra_assassin.lua | 12 +- .../monster/humans/cobra_scout.lua | 12 +- .../monster/humans/cobra_vizier.lua | 14 +- .../monster/humans/crazed_beggar.lua | 12 +- .../monster/humans/crypt_defiler.lua | 12 +- .../monster/humans/dark_apprentice.lua | 14 +- .../monster/humans/dark_carnisylvan.lua | 12 +- .../monster/humans/dark_magician.lua | 14 +- .../monster/humans/dark_monk.lua | 14 +- .../humans/enlightened_of_the_cult.lua | 18 +- .../monster/humans/feverish_citizen.lua | 14 +- .../monster/humans/gang_member.lua | 12 +- .../monster/humans/gladiator.lua | 14 +- .../monster/humans/glooth_bandit.lua | 14 +- .../monster/humans/glooth_brigand.lua | 14 +- .../monster/humans/grave_robber.lua | 12 +- .../humans/hardened_usurper_archer.lua | 11 +- .../humans/hardened_usurper_knight.lua | 13 +- .../humans/hardened_usurper_warlock.lua | 11 +- data-otservbr-global/monster/humans/hero.lua | 14 +- .../monster/humans/hulking_carnisylvan.lua | 10 +- .../monster/humans/hunter.lua | 12 +- .../monster/humans/ice_witch.lua | 14 +- .../monster/humans/infernalist.lua | 18 +- .../monster/humans/lion_archer.lua | 8 +- .../monster/humans/lion_knight.lua | 8 +- .../monster/humans/lion_warlock.lua | 8 +- .../monster/humans/mad_scientist.lua | 14 +- data-otservbr-global/monster/humans/monk.lua | 14 +- .../monster/humans/monk_of_the_order.lua | 10 +- .../monster/humans/mutated_human.lua | 14 +- .../monster/humans/necromancer.lua | 18 +- .../monster/humans/necromancer_servant.lua | 12 +- data-otservbr-global/monster/humans/nomad.lua | 22 +- .../monster/humans/nomad_blue.lua | 22 +- .../monster/humans/nomad_female.lua | 22 +- .../monster/humans/novice_of_the_cult.lua | 18 +- .../monster/humans/pirate_buccaneer.lua | 12 +- .../monster/humans/pirate_corsair.lua | 12 +- .../monster/humans/pirate_cutthroat.lua | 12 +- .../monster/humans/pirate_marauder.lua | 12 +- .../monster/humans/poacher.lua | 12 +- .../monster/humans/poisonous_carnisylvan.lua | 16 +- .../monster/humans/priestess.lua | 18 +- .../humans/priestess_of_the_wild_sun.lua | 12 +- .../monster/humans/renegade_knight.lua | 14 +- .../monster/humans/shadow_pupil.lua | 16 +- .../monster/humans/smuggler.lua | 12 +- .../monster/humans/stalker.lua | 20 +- .../monster/humans/usurper_archer.lua | 12 +- .../monster/humans/usurper_knight.lua | 14 +- .../monster/humans/usurper_warlock.lua | 12 +- .../monster/humans/valkyrie.lua | 12 +- .../monster/humans/vicious_squire.lua | 14 +- .../monster/humans/vile_grandmaster.lua | 14 +- .../monster/humans/warlock.lua | 18 +- .../monster/humans/wild_warrior.lua | 14 +- data-otservbr-global/monster/humans/witch.lua | 12 +- .../monster/lycanthropes/werebadger.lua | 14 +- .../monster/lycanthropes/werebear.lua | 14 +- .../monster/lycanthropes/wereboar.lua | 14 +- .../monster/lycanthropes/werefox.lua | 26 +- .../monster/lycanthropes/werehyaena.lua | 12 +- .../lycanthropes/werehyaena_shaman.lua | 22 +- .../monster/lycanthropes/werelion.lua | 14 +- .../monster/lycanthropes/werelioness.lua | 14 +- .../monster/lycanthropes/werewolf.lua | 18 +- .../monster/magicals/animated_feather.lua | 12 +- .../monster/magicals/arachnophobica.lua | 14 +- .../monster/magicals/armadile.lua | 14 +- .../monster/magicals/bashmu.lua | 12 +- .../monster/magicals/blue_djinn.lua | 12 +- .../monster/magicals/bog_raider.lua | 14 +- .../monster/magicals/bonelord.lua | 16 +- .../monster/magicals/brain_squid.lua | 12 +- .../monster/magicals/braindeath.lua | 18 +- .../monster/magicals/burning_book.lua | 12 +- .../monster/magicals/choking_fear.lua | 14 +- .../monster/magicals/crypt_warden.lua | 12 +- .../monster/magicals/crystalcrusher.lua | 14 +- .../monster/magicals/cursed_book.lua | 12 +- .../monster/magicals/dragonling.lua | 14 +- .../monster/magicals/efreet.lua | 18 +- .../monster/magicals/elder_bonelord.lua | 14 +- .../monster/magicals/energetic_book.lua | 12 +- .../magicals/energuardian_of_tales.lua | 12 +- .../monster/magicals/enfeebled_silencer.lua | 14 +- .../monster/magicals/fahim_the_wise.lua | 16 +- .../monster/magicals/feral_sphinx.lua | 14 +- .../monster/magicals/feversleep.lua | 14 +- .../monster/magicals/flying_book.lua | 13 +- .../monster/magicals/forest_fury.lua | 12 +- .../monster/magicals/frazzlemaw.lua | 14 +- .../monster/magicals/gargoyle.lua | 14 +- .../monster/magicals/gazer.lua | 12 +- .../monster/magicals/girtablilu_warrior.lua | 14 +- .../monster/magicals/green_djinn.lua | 22 +- .../monster/magicals/gryphon.lua | 13 +- .../monster/magicals/guardian_of_tales.lua | 12 +- .../monster/magicals/guzzlemaw.lua | 14 +- .../monster/magicals/icecold_book.lua | 12 +- .../monster/magicals/juvenile_bashmu.lua | 18 +- .../monster/magicals/lamassu.lua | 12 +- .../monster/magicals/lumbering_carnivor.lua | 14 +- .../monster/magicals/manticore.lua | 13 +- .../monster/magicals/marid.lua | 18 +- .../monster/magicals/medusa.lua | 14 +- .../monster/magicals/menacing_carnivor.lua | 16 +- .../magicals/merikh_the_slaughterer.lua | 16 +- .../monster/magicals/midnight_panther.lua | 14 +- .../monster/magicals/nightmare.lua | 14 +- .../monster/magicals/nightmare_scion.lua | 14 +- .../monster/magicals/nightstalker.lua | 12 +- .../monster/magicals/phantasm.lua | 18 +- .../monster/magicals/phantasm_summon.lua | 21 +- .../monster/magicals/rage_squid.lua | 12 +- .../monster/magicals/retching_horror.lua | 22 +- .../monster/magicals/rorc.lua | 22 +- .../monster/magicals/shiversleep.lua | 19 +- .../monster/magicals/shock_head.lua | 22 +- .../monster/magicals/sight_of_surrender.lua | 14 +- .../monster/magicals/silencer.lua | 14 +- .../monster/magicals/sphinx.lua | 20 +- .../monster/magicals/spiky_carnivor.lua | 16 +- .../monster/magicals/squid_warden.lua | 12 +- .../monster/magicals/terrorsleep.lua | 22 +- .../monster/magicals/thanatursus.lua | 22 +- .../monster/magicals/venerable_girtablilu.lua | 12 +- .../monster/magicals/weakened_frazzlemaw.lua | 14 +- .../monster/mammals/badger.lua | 12 +- data-otservbr-global/monster/mammals/bat.lua | 12 +- data-otservbr-global/monster/mammals/bear.lua | 12 +- .../monster/mammals/beast_gore_horn.lua | 14 +- .../monster/mammals/beast_gorerilla.lua | 12 +- .../monster/mammals/beast_sabretooth.lua | 13 +- .../monster/mammals/black_sheep.lua | 10 +- data-otservbr-global/monster/mammals/boar.lua | 12 +- .../monster/mammals/brown_horse.lua | 21 +- data-otservbr-global/monster/mammals/cat.lua | 13 +- .../monster/mammals/cave_rat.lua | 12 +- .../monster/mammals/clomp.lua | 14 +- .../monster/mammals/crystal_wolf.lua | 14 +- data-otservbr-global/monster/mammals/deer.lua | 12 +- .../monster/mammals/desperate_white_deer.lua | 13 +- data-otservbr-global/monster/mammals/dog.lua | 21 +- .../monster/mammals/donkey.lua | 20 +- .../monster/mammals/doom_deer.lua | 14 +- .../monster/mammals/dromedary.lua | 12 +- .../monster/mammals/elephant.lua | 12 +- .../monster/mammals/enraged_squirrel.lua | 10 +- .../monster/mammals/enraged_white_deer.lua | 22 +- .../monster/mammals/evil_sheep.lua | 12 +- .../monster/mammals/evil_sheep_lord.lua | 18 +- .../monster/mammals/exotic_bat.lua | 22 +- data-otservbr-global/monster/mammals/fox.lua | 22 +- .../monster/mammals/ghost_wolf.lua | 12 +- .../monster/mammals/ghoulish_hyaena.lua | 14 +- .../monster/mammals/giant_beaver.lua | 6 +- .../monster/mammals/gloom_wolf.lua | 12 +- .../monster/mammals/gnarlhound.lua | 12 +- .../monster/mammals/gore_horn.lua | 8 +- .../monster/mammals/gorerilla.lua | 8 +- .../monster/mammals/grey_horse.lua | 21 +- .../monster/mammals/horse.lua | 21 +- .../monster/mammals/hot_dog.lua | 12 +- .../monster/mammals/husky.lua | 12 +- .../monster/mammals/hyaena.lua | 12 +- .../monster/mammals/killer_rabbit.lua | 18 +- .../monster/mammals/kongra.lua | 14 +- data-otservbr-global/monster/mammals/lion.lua | 22 +- .../monster/mammals/mammoth.lua | 12 +- .../monster/mammals/merlkin.lua | 14 +- .../monster/mammals/modified_gnarlhound.lua | 11 +- data-otservbr-global/monster/mammals/mole.lua | 12 +- .../monster/mammals/mushroom_sniffer.lua | 11 +- .../monster/mammals/mutated_bat.lua | 14 +- .../monster/mammals/mutated_rat.lua | 14 +- .../monster/mammals/mutated_tiger.lua | 14 +- .../monster/mammals/nighthunter.lua | 8 +- .../monster/mammals/noble_lion.lua | 14 +- .../monster/mammals/panda.lua | 12 +- .../monster/mammals/parder.lua | 8 +- data-otservbr-global/monster/mammals/pig.lua | 10 +- .../monster/mammals/polar_bear.lua | 12 +- .../monster/mammals/poodle.lua | 19 +- .../monster/mammals/rabbit.lua | 10 +- data-otservbr-global/monster/mammals/rat.lua | 12 +- .../monster/mammals/roaring_lion.lua | 22 +- .../monster/mammals/sabretooth.lua | 9 +- .../monster/mammals/sheep.lua | 12 +- .../monster/mammals/sibang.lua | 14 +- .../monster/mammals/silver_rabbit.lua | 10 +- .../monster/mammals/skunk.lua | 12 +- .../monster/mammals/squirrel.lua | 10 +- .../monster/mammals/starving_wolf.lua | 14 +- .../monster/mammals/stone_rhino.lua | 14 +- .../monster/mammals/terrified_elephant.lua | 14 +- .../monster/mammals/thieving_squirrel.lua | 13 +- .../monster/mammals/thornfire_wolf.lua | 14 +- .../monster/mammals/tiger.lua | 14 +- .../monster/mammals/vampire_pig.lua | 14 +- .../monster/mammals/vulcongra.lua | 12 +- .../monster/mammals/war_wolf.lua | 12 +- .../monster/mammals/water_buffalo.lua | 12 +- .../monster/mammals/white_deer.lua | 11 +- .../monster/mammals/white_lion.lua | 14 +- .../monster/mammals/wild_dog.lua | 12 +- .../monster/mammals/wild_horse.lua | 21 +- .../monster/mammals/winter_wolf.lua | 12 +- data-otservbr-global/monster/mammals/wolf.lua | 12 +- data-otservbr-global/monster/mammals/yeti.lua | 22 +- .../monster/nostalgia/old_bear.lua | 20 +- .../monster/nostalgia/old_bonelord.lua | 24 +- .../monster/nostalgia/old_bug.lua | 18 +- .../monster/nostalgia/old_giant_spider.lua | 18 +- .../monster/nostalgia/old_pig.lua | 18 +- .../monster/nostalgia/old_spider.lua | 18 +- .../monster/nostalgia/old_wasp.lua | 20 +- .../monster/nostalgia/old_wolf.lua | 20 +- .../monster/plants/bane_bringer.lua | 12 +- .../monster/plants/branchy_crawler.lua | 10 +- .../monster/plants/carniphila.lua | 12 +- .../monster/plants/cloak_of_terror.lua | 10 +- .../monster/plants/glooth_anemone.lua | 14 +- .../monster/plants/haunted_treeling.lua | 12 +- .../monster/plants/hideous_fungus.lua | 18 +- .../monster/plants/humongous_fungus.lua | 14 +- .../monster/plants/leaf_golem.lua | 12 +- .../monster/plants/omnivora.lua | 14 +- .../monster/plants/spit_nettle.lua | 14 +- .../monster/plants/stalking_stalk.lua | 8 +- .../monster/plants/swampling.lua | 12 +- .../monster/plants/wilting_leaf_golem.lua | 22 +- .../ratmiral_blackwhiskers.lua | 20 +- .../a_pirates_tail_quest/tentuglys_head.lua | 10 +- .../megasylvan_yselda.lua | 12 +- .../ancient_feud/katex_blood_tongue.lua | 26 +- .../quests/ancient_feud/srezz_yellow_eyes.lua | 12 +- .../quests/ancient_feud/utua_stone_sting.lua | 12 +- .../ancient_feud/yirkas_blue_scales.lua | 12 +- .../quests/ancient_tombs/ashmunrah.lua | 18 +- .../monster/quests/ancient_tombs/dipthrah.lua | 26 +- .../monster/quests/ancient_tombs/horestis.lua | 26 +- .../monster/quests/ancient_tombs/mahrdis.lua | 26 +- .../quests/ancient_tombs/morguthis.lua | 26 +- .../monster/quests/ancient_tombs/omruc.lua | 26 +- .../monster/quests/ancient_tombs/rahemos.lua | 26 +- .../quests/ancient_tombs/shredderthrower.lua | 12 +- .../monster/quests/ancient_tombs/thalas.lua | 26 +- .../quests/ancient_tombs/vashresamun.lua | 26 +- .../quests/annihilator/angry_demon.lua | 16 +- .../bigfoots_burden/bosses/abyssador.lua | 12 +- .../bigfoots_burden/bosses/deathstrike.lua | 12 +- .../bigfoots_burden/bosses/gnomevil.lua | 12 +- .../bigfoots_burden/humorless_fungus.lua | 13 +- .../bigfoots_burden/minion_of_versperoth.lua | 12 +- .../quests/bigfoots_burden/strange_slime.lua | 9 +- .../quests/bigfoots_burden/versperoth.lua | 11 +- .../quests/cults_of_tibia/animated_clomp.lua | 12 +- .../cults_of_tibia/animated_cyclops.lua | 10 +- .../cults_of_tibia/animated_guzzlemaw.lua | 12 +- .../cults_of_tibia/animated_moohtant.lua | 12 +- .../quests/cults_of_tibia/animated_mummy.lua | 10 +- .../cults_of_tibia/animated_ogre_brute.lua | 12 +- .../cults_of_tibia/animated_ogre_savage.lua | 12 +- .../cults_of_tibia/animated_ogre_shaman.lua | 16 +- .../quests/cults_of_tibia/animated_rhino.lua | 20 +- .../cults_of_tibia/animated_rotworm.lua | 10 +- .../quests/cults_of_tibia/animated_skunk.lua | 10 +- .../cults_of_tibia/animated_stone_golem.lua | 18 +- .../cults_of_tibia/barkless_devotee.lua | 14 +- .../cults_of_tibia/barkless_fanatic.lua | 22 +- .../bosses/dorokoll_the_mystic.lua | 11 +- .../bosses/dorokoll_the_mystic_stop.lua | 19 +- .../bosses/eliz_the_unyielding.lua | 13 +- .../bosses/eliz_the_unyielding_stop.lua | 19 +- .../bosses/eshtaba_the_conjurer.lua | 15 +- .../bosses/eshtaba_the_conjurer_stop.lua | 23 +- .../bosses/essence_of_malice.lua | 22 +- .../cults_of_tibia/bosses/last_planegazer.lua | 10 +- .../quests/cults_of_tibia/bosses/leiden.lua | 19 +- .../bosses/malkhar_deathbringer.lua | 11 +- .../bosses/malkhar_deathbringer_stop.lua | 19 +- .../bosses/mezlon_the_defiler.lua | 14 +- .../bosses/mezlon_the_defiler_stop.lua | 19 +- .../bosses/pillars/containment_crystal.lua | 11 +- .../bosses/pillars/destroyed_pillar.lua | 9 +- .../bosses/pillars/pillar_of_death.lua | 9 +- .../bosses/pillars/pillar_of_draining.lua | 10 +- .../bosses/pillars/pillar_of_healing.lua | 10 +- .../bosses/pillars/pillar_of_protection.lua | 9 +- .../bosses/pillars/pillar_of_summoning.lua | 9 +- .../cults_of_tibia/bosses/ravenous_hunger.lua | 30 +- .../bosses/summons/dark_soul.lua | 14 +- .../bosses/summons/dread_minion.lua | 13 +- .../bosses/summons/enraged_sand_brood.lua | 11 +- .../bosses/summons/freed_soul.lua | 11 +- .../bosses/summons/liquor_spirit.lua | 17 +- .../bosses/summons/sand_brood.lua | 11 +- .../bosses/summons/sand_vortex.lua | 21 +- .../bosses/summons/security_golem.lua | 11 +- .../bosses/summons/soul_reaper.lua | 11 +- .../bosses/summons/sphere_of_wrath.lua | 11 +- .../bosses/summons/stolen_soul.lua | 9 +- .../bosses/summons/vermin_swarm.lua | 19 +- .../bosses/summons/voidshard.lua | 11 +- .../bosses/the_armored_voidborn.lua | 16 +- .../bosses/the_corruptor_of_souls.lua | 11 +- .../cults_of_tibia/bosses/the_false_god.lua | 22 +- .../bosses/the_remorseless_corruptor.lua | 11 +- .../cults_of_tibia/bosses/the_sandking.lua | 22 +- .../bosses/the_sandking_fake.lua | 21 +- .../bosses/the_sinister_hermit_clean.lua | 23 +- .../bosses/the_sinister_hermit_dirty.lua | 23 +- .../bosses/the_souldespoiler.lua | 28 +- .../bosses/the_source_of_corruption.lua | 25 +- .../bosses/the_unarmored_voidborn.lua | 22 +- .../cults_of_tibia/bosses/wine_cask.lua | 15 +- .../bosses/zarcorix_of_yalahar.lua | 21 +- .../cults_of_tibia/containment_machine.lua | 9 +- .../quests/cults_of_tibia/cult_believer.lua | 14 +- .../quests/cults_of_tibia/cult_enforcer.lua | 14 +- .../quests/cults_of_tibia/cult_scholar.lua | 14 +- .../cults_of_tibia/goldhanded_cultist.lua | 14 +- .../quests/cults_of_tibia/minotaur_idol.lua | 13 +- .../quests/cults_of_tibia/misguided_bully.lua | 14 +- .../cults_of_tibia/misguided_shadow.lua | 12 +- .../quests/cults_of_tibia/misguided_thief.lua | 22 +- .../cults_of_tibia/orc_cult_fanatic.lua | 12 +- .../cults_of_tibia/orc_cult_inquisitor.lua | 14 +- .../quests/cults_of_tibia/orc_cult_minion.lua | 12 +- .../quests/cults_of_tibia/orc_cult_priest.lua | 14 +- .../quests/cults_of_tibia/orc_cultist.lua | 12 +- .../dangerous_depth/aggressive_lava.lua | 15 +- .../dangerous_depth/aggressive_matter.lua | 13 +- .../bosses/ancient_spawn_of_morgathla.lua | 10 +- .../bosses/the_baron_from_below.lua | 24 +- .../bosses/the_count_of_the_core.lua | 22 +- .../bosses/the_duke_of_the_depths.lua | 22 +- .../the_duke_of_the_depths_immortal.lua | 22 +- .../bosses/the_hungry_baron_from_below.lua | 15 +- .../quests/dangerous_depth/captured_dwarf.lua | 12 +- .../quests/dangerous_depth/ember_beast.lua | 13 +- .../quests/dangerous_depth/fiery_blood.lua | 13 +- .../quests/dangerous_depth/fiery_heart.lua | 15 +- .../dangerous_depth/gnome_pack_crawler.lua | 11 +- .../dangerous_depth/lava_lurker_attendant.lua | 19 +- .../quests/dangerous_depth/lost_gnome.lua | 11 +- .../quests/dangerous_depth/makeshift_home.lua | 13 +- .../quests/dangerous_depth/organic_matter.lua | 12 +- .../quests/dangerous_depth/snail_slime.lua | 13 +- .../quests/dark_trails/canopic_jar.lua | 12 +- .../dark_trails/death_priest_shargon.lua | 18 +- .../quests/dark_trails/depowered_minotaur.lua | 8 +- .../dark_trails/greater_canopic_jar.lua | 18 +- .../dark_trails/greater_death_minion.lua | 11 +- .../dark_trails/lesser_death_minion.lua | 11 +- .../dark_trails/superior_death_minion.lua | 11 +- .../quests/dark_trails/the_ravager.lua | 20 +- .../quests/dark_trails/tremor_worm.lua | 10 +- .../feaster_of_souls/irgix_the_flimsy.lua | 30 +- .../feaster_of_souls/the_dread_maiden.lua | 26 +- .../feaster_of_souls/the_fear_feaster.lua | 24 +- .../quests/feaster_of_souls/the_pale_worm.lua | 28 +- .../quests/feaster_of_souls/the_unwelcome.lua | 26 +- .../quests/feaster_of_souls/unaz_the_mean.lua | 24 +- .../feaster_of_souls/vok_the_freakish.lua | 26 +- .../bosses/ascending_ferumbras.lua | 15 +- .../bosses/death_dragon.lua | 16 +- .../bosses/destabilized_ferumbras.lua | 21 +- .../bosses/enraged_soul.lua | 10 +- .../bosses/ferumbras_mortal_shell.lua | 30 +- .../bosses/ferumbras_soul_splinter.lua | 21 +- .../ferumbras_ascendant/bosses/mazoran.lua | 24 +- .../ferumbras_ascendant/bosses/plagirath.lua | 24 +- .../ferumbras_ascendant/bosses/ragiaz.lua | 24 +- .../ferumbras_ascendant/bosses/razzagorn.lua | 30 +- .../bosses/redeemed_soul.lua | 16 +- .../ferumbras_ascendant/bosses/shulgrax.lua | 34 +- .../bosses/sin_devourer.lua | 12 +- .../ferumbras_ascendant/bosses/tarbaz.lua | 28 +- .../bosses/the_lord_of_the_lice.lua | 12 +- .../bosses/the_shatterer.lua | 22 +- .../ferumbras_ascendant/bosses/zamulosh.lua | 30 +- .../ferumbras_ascendant/bosses/zamulosh2.lua | 18 +- .../ferumbras_ascendant/bosses/zamulosh3.lua | 20 +- .../ferumbras_ascendant/damned_soul.lua | 13 +- .../ferumbras_ascendant/desperate_soul.lua | 14 +- .../ferumbras_ascendant/disgusting_ooze.lua | 16 +- .../ferumbras_ascendant/ferumbras_essence.lua | 13 +- .../lovely/lovely_deer.lua | 18 +- .../lovely/lovely_frazzlemaw.lua | 20 +- .../lovely/lovely_polar_bear.lua | 20 +- .../lovely/lovely_rotworm.lua | 18 +- .../lovely/lovely_scorpion.lua | 18 +- .../lovely/lovely_snake.lua | 21 +- .../lovely/lovely_souleater.lua | 20 +- .../lovely/lovely_yielothax.lua | 20 +- .../ferumbras_ascendant/rage_of_mazoran.lua | 13 +- .../summons/enthralled_demon.lua | 13 +- .../summons/rift_fragment.lua | 13 +- .../summons/rift_invader.lua | 17 +- .../traps/bone_capsule.lua | 14 +- .../ferumbras_ascendant/traps/despair.lua | 12 +- .../traps/electric_sparks.lua | 19 +- .../traps/eruption_of_destruction.lua | 14 +- .../ferumbras_ascendant/traps/guilt.lua | 15 +- .../quests/ferumbras_ascendant/traps/void.lua | 21 +- .../forgotten_knowledge/animated_sword.lua | 13 +- .../forgotten_knowledge/baby_dragon.lua | 9 +- .../bosses/dragonking_zyrtarch.lua | 13 +- .../bosses/lady_tenebris.lua | 26 +- .../forgotten_knowledge/bosses/lloyd.lua | 24 +- .../bosses/melting_frozen_horror.lua | 28 +- .../bosses/mounted_thorn_knight.lua | 17 +- .../bosses/solid_frozen_horror.lua | 13 +- .../bosses/soul_of_dragonking_zyrtarch.lua | 24 +- .../bosses/the_blazing_time_guardian.lua | 30 +- .../bosses/the_enraged_thorn_knight.lua | 28 +- .../bosses/the_freezing_time_guardian.lua | 26 +- .../bosses/the_last_lore_keeper.lua | 36 +- .../bosses/the_shielded_thorn_knight.lua | 17 +- .../bosses/the_time_guardian.lua | 26 +- .../bosses/thorn_steed.lua | 15 +- .../bound_astral_power.lua | 13 +- .../forgotten_knowledge/corrupted_soul.lua | 15 +- .../cosmic_energy_prism_a.lua | 11 +- .../cosmic_energy_prism_a_invu.lua | 19 +- .../cosmic_energy_prism_b.lua | 11 +- .../cosmic_energy_prism_b_invu.lua | 19 +- .../cosmic_energy_prism_c.lua | 11 +- .../cosmic_energy_prism_c_invu.lua | 19 +- .../cosmic_energy_prism_d.lua | 13 +- .../cosmic_energy_prism_d_invu.lua | 19 +- .../quests/forgotten_knowledge/dragon_egg.lua | 16 +- .../forgotten_knowledge/dragon_servant.lua | 11 +- .../quests/forgotten_knowledge/frozen_man.lua | 14 +- .../forgotten_knowledge/frozen_minion.lua | 11 +- .../quests/forgotten_knowledge/icicle.lua | 11 +- .../quests/forgotten_knowledge/lost_time.lua | 11 +- .../forgotten_knowledge/possessed_tree.lua | 11 +- .../forgotten_knowledge/shadow_fiend.lua | 11 +- .../forgotten_knowledge/shadow_tentacle.lua | 19 +- .../forgotten_knowledge/soulcatcher.lua | 15 +- .../sword_of_vengeance.lua | 13 +- .../the_distorted_astral_source.lua | 15 +- .../forgotten_knowledge/thorn_minion.lua | 13 +- .../forgotten_knowledge/time_keeper.lua | 11 +- .../forgotten_knowledge/time_waster.lua | 13 +- .../unbound_blightwalker.lua | 11 +- .../forgotten_knowledge/unbound_defiler.lua | 13 +- .../forgotten_knowledge/unbound_demon.lua | 15 +- .../unbound_demon_outcast.lua | 17 +- .../quests/grave_danger/black_cobra.lua | 13 +- .../grave_danger/bosses/count_vlarkorth.lua | 28 +- .../quests/grave_danger/bosses/duke_krule.lua | 28 +- .../quests/grave_danger/bosses/earl_osam.lua | 28 +- .../quests/grave_danger/bosses/king_zelos.lua | 24 +- .../grave_danger/bosses/lord_azaram.lua | 24 +- .../grave_danger/bosses/scarlett_etzel.lua | 21 +- .../quests/grave_danger/bosses/sir_baeloc.lua | 26 +- .../grave_danger/bosses/sir_nictros.lua | 33 +- .../grave_danger/cart_packed_with_gold.lua | 11 +- .../quests/grave_danger/condensed_sins.lua | 19 +- .../quests/grave_danger/dark_druid.lua | 13 +- .../quests/grave_danger/dark_knight.lua | 13 +- .../quests/grave_danger/dark_paladin.lua | 13 +- .../quests/grave_danger/dark_sorcerer.lua | 13 +- .../monster/quests/grave_danger/fetter.lua | 19 +- .../quests/grave_danger/frozen_soul.lua | 13 +- .../grave_danger/retainer_of_baeloc.lua | 13 +- .../quests/grave_danger/risen_soldier.lua | 13 +- .../quests/grave_danger/shard_of_magnor.lua | 13 +- .../quests/grave_danger/soul_scourge.lua | 11 +- .../quests/grave_danger/soulless_minion.lua | 9 +- .../quests/grave_danger/squire_of_nictros.lua | 13 +- .../quests/grave_danger/vampiric_blood.lua | 13 +- .../heart_of_destruction/aftershock.lua | 27 +- .../quests/heart_of_destruction/anomaly.lua | 30 +- .../heart_of_destruction/charged_anomaly.lua | 27 +- .../charged_disruption.lua | 17 +- .../quests/heart_of_destruction/charger.lua | 17 +- .../charging_outburst.lua | 27 +- .../quests/heart_of_destruction/crackler.lua | 15 +- .../heart_of_destruction/damage_resonance.lua | 17 +- .../depolarized_crackler.lua | 17 +- .../heart_of_destruction/disruption.lua | 17 +- .../heart_of_destruction/eradicator.lua | 24 +- .../heart_of_destruction/eradicator2.lua | 34 +- .../quests/heart_of_destruction/foreshock.lua | 29 +- .../quests/heart_of_destruction/frenzy.lua | 15 +- .../quests/heart_of_destruction/greed.lua | 13 +- .../quests/heart_of_destruction/outburst.lua | 28 +- .../heart_of_destruction/overcharge.lua | 17 +- .../overcharged_disruption.lua | 17 +- .../heart_of_destruction/realityquake.lua | 28 +- .../quests/heart_of_destruction/rupture.lua | 28 +- .../spark_of_destruction.lua | 13 +- .../heart_of_destruction/the_destruction.lua | 17 +- .../heart_of_destruction/the_hunger.lua | 15 +- .../quests/heart_of_destruction/the_rage.lua | 17 +- .../heart_of_destruction/unstable_spark.lua | 15 +- .../heart_of_destruction/world_devourer.lua | 28 +- .../quests/hero_of_rathleton/deep_terror.lua | 24 +- .../empowered_glooth_horror.lua | 16 +- .../quests/hero_of_rathleton/energy_pulse.lua | 13 +- .../feeble_glooth_horror.lua | 21 +- .../hero_of_rathleton/glooth-generator.lua | 13 +- .../hero_of_rathleton/glooth_horror.lua | 21 +- .../hero_of_rathleton/glooth_masher.lua | 13 +- .../hero_of_rathleton/glooth_slasher.lua | 13 +- .../hero_of_rathleton/glooth_trasher.lua | 13 +- .../hero_of_rathleton/professor_maxxen.lua | 36 +- .../strong_glooth_horror.lua | 17 +- .../tentacle_of_the_deep_terror.lua | 17 +- .../weakened_glooth_horror.lua | 17 +- .../quests/hidden_threats/cave_spider.lua | 16 +- .../quests/in_service_of_yalahar/azerus.lua | 17 +- .../quests/in_service_of_yalahar/azerus2.lua | 25 +- .../quests/in_service_of_yalahar/inky.lua | 10 +- .../in_service_of_yalahar/rift_brood.lua | 13 +- .../in_service_of_yalahar/rift_lord.lua | 10 +- .../in_service_of_yalahar/rift_phantom.lua | 11 +- .../in_service_of_yalahar/rift_scythe.lua | 13 +- .../in_service_of_yalahar/rift_worm.lua | 19 +- .../in_service_of_yalahar/sharptooth.lua | 12 +- .../in_service_of_yalahar/tormented_ghost.lua | 11 +- .../quests/in_service_of_yalahar/yalahari.lua | 9 +- .../monster/quests/isle_of_evil/boogey.lua | 16 +- .../monster/quests/isle_of_evil/dirtbeard.lua | 14 +- .../quests/isle_of_evil/doctor_perhaps.lua | 16 +- .../quests/isle_of_evil/evil_mastermind.lua | 16 +- .../monster/quests/isle_of_evil/mephiles.lua | 12 +- .../monster/quests/isle_of_evil/monstor.lua | 16 +- .../killing_in_the_name_of/bretzecutioner.lua | 12 +- .../killing_in_the_name_of/bruise_payne.lua | 12 +- .../killing_in_the_name_of/deathbine.lua | 10 +- .../killing_in_the_name_of/demodras.lua | 16 +- .../killing_in_the_name_of/esmeralda.lua | 12 +- .../killing_in_the_name_of/ethershreck.lua | 12 +- .../quests/killing_in_the_name_of/fazzrah.lua | 12 +- .../killing_in_the_name_of/flameborn.lua | 12 +- .../killing_in_the_name_of/fleshcrawler.lua | 14 +- .../quests/killing_in_the_name_of/gorgo.lua | 12 +- .../quests/killing_in_the_name_of/hemming.lua | 16 +- .../quests/killing_in_the_name_of/hide.lua | 12 +- .../killing_in_the_name_of/kerberos.lua | 10 +- .../killing_in_the_name_of/leviathan.lua | 12 +- .../paiz_the_pauperizer.lua | 12 +- .../killing_in_the_name_of/ribstride.lua | 18 +- .../killing_in_the_name_of/shardhead.lua | 10 +- .../killing_in_the_name_of/stonecracker.lua | 12 +- .../sulphur_scuttler.lua | 12 +- .../killing_in_the_name_of/the_bloodtusk.lua | 12 +- .../killing_in_the_name_of/the_bloodweb.lua | 12 +- .../killing_in_the_name_of/the_many.lua | 12 +- .../the_noxious_spawn.lua | 20 +- .../killing_in_the_name_of/the_old_widow.lua | 16 +- .../killing_in_the_name_of/the_snapper.lua | 10 +- .../quests/killing_in_the_name_of/thul.lua | 16 +- .../tiquandas_revenge.lua | 12 +- .../killing_in_the_name_of/tormentor.lua | 12 +- .../killing_in_the_name_of/tromphonyte.lua | 12 +- .../killing_in_the_name_of/zanakeph.lua | 12 +- .../kilmaresh/a_shielded_astral_glyph.lua | 13 +- .../quests/kilmaresh/amenef_the_burning.lua | 10 +- .../quests/kilmaresh/an_astral_glyph.lua | 15 +- .../monster/quests/kilmaresh/bragrumol.lua | 32 +- .../monster/quests/kilmaresh/earworm.lua | 10 +- .../monster/quests/kilmaresh/mozradek.lua | 24 +- .../quests/kilmaresh/neferi_the_spy.lua | 14 +- .../monster/quests/kilmaresh/sister_hetai.lua | 16 +- .../quests/kilmaresh/sun-marked_goanna.lua | 14 +- .../kilmaresh/urmahlullu_the_immaculate.lua | 17 +- .../quests/kilmaresh/urmahlullu_the_tamed.lua | 17 +- .../kilmaresh/urmahlullu_the_weakened.lua | 24 +- .../kilmaresh/wildness_of_urmahlullu.lua | 17 +- .../quests/kilmaresh/wisdom_of_urmahlullu.lua | 17 +- .../monster/quests/kilmaresh/xogixath.lua | 32 +- .../monster/quests/liquid_black/jaul.lua | 24 +- .../monster/quests/liquid_black/obujos.lua | 24 +- .../monster/quests/liquid_black/tanjis.lua | 24 +- .../quests/marapur/timira_the_many-headed.lua | 6 +- .../an_observer_eye.lua | 12 +- .../an_observer_eye_(imune).lua | 19 +- .../reflection_of_mawhawk.lua | 8 +- .../reflection_of_obujos.lua | 12 +- .../mysterious_ornate_chest/ugly_monster.lua | 14 +- .../pits_of_inferno/countess_sorrow.lua | 16 +- .../quests/pits_of_inferno/demon_goblin.lua | 18 +- .../quests/pits_of_inferno/dracola.lua | 12 +- .../quests/pits_of_inferno/flamethrower.lua | 11 +- .../quests/pits_of_inferno/massacre.lua | 12 +- .../quests/pits_of_inferno/mr._punish.lua | 12 +- .../quests/pits_of_inferno/the_handmaiden.lua | 12 +- .../quests/pits_of_inferno/the_imperor.lua | 12 +- .../quests/pits_of_inferno/the_plasmother.lua | 16 +- .../primal_ordeal_quest/lava_creature.lua | 8 +- .../primal_ordeal_quest/magma_bubble.lua | 22 +- .../primal_ordeal_quest/magma_crystal.lua | 12 +- .../primal_ordeal_quest/plunder_patriarch.lua | 22 +- .../primal_ordeal_quest/the_end_of_days.lua | 20 +- .../primal_ordeal_quest/the_primal_menace.lua | 20 +- .../primal_ordeal_quest/unchained_fire.lua | 6 +- .../monster/quests/roshamuul/bad_dream.lua | 11 +- .../quests/roshamuul/flame_of_omrafir.lua | 13 +- .../monster/quests/roshamuul/gaz'haragoth.lua | 39 +- .../monster/quests/roshamuul/horadron.lua | 16 +- .../roshamuul/minion_of_gaz'haragoth.lua | 21 +- .../roshamuul/nightmare_of_gaz'haragoth.lua | 19 +- .../monster/quests/roshamuul/omrafir.lua | 24 +- .../quests/roshamuul/prince_drazzak.lua | 24 +- .../monster/quests/roshamuul/terofar.lua | 12 +- .../quests/soul_war/aspect_of_power.lua | 8 +- .../quests/soul_war/dreadful_harvester.lua | 10 +- .../quests/soul_war/goshnars_cruelty.lua | 30 +- .../quests/soul_war/goshnars_greed.lua | 28 +- .../quests/soul_war/goshnars_hatred.lua | 30 +- .../quests/soul_war/goshnars_malice.lua | 28 +- .../quests/soul_war/goshnars_megalomania.lua | 28 +- .../quests/soul_war/goshnars_spite.lua | 30 +- .../monster/quests/soul_war/hateful_soul.lua | 10 +- .../quests/soul_war/malicious_soul.lua | 10 +- .../monster/quests/soul_war/mean_maw.lua | 13 +- .../monster/quests/soul_war/mirror_image.lua | 11 +- .../quests/soul_war/spiteful_spitter.lua | 12 +- .../svargrond_arena/greenhorn/achad.lua | 11 +- .../greenhorn/axeitus_headbanger.lua | 21 +- .../svargrond_arena/greenhorn/bloodpaw.lua | 11 +- .../svargrond_arena/greenhorn/bovinus.lua | 11 +- .../greenhorn/colerian_the_barbarian.lua | 11 +- .../greenhorn/cursed_gladiator.lua | 13 +- .../svargrond_arena/greenhorn/frostfur.lua | 11 +- .../greenhorn/orcus_the_cruel.lua | 13 +- .../svargrond_arena/greenhorn/rocky.lua | 13 +- .../greenhorn/the_hairy_one.lua | 11 +- .../svargrond_arena/scrapper/avalanche.lua | 13 +- .../svargrond_arena/scrapper/drasilla.lua | 13 +- .../scrapper/grimgor_guteater.lua | 13 +- .../scrapper/kreebosh_the_exile.lua | 25 +- .../quests/svargrond_arena/scrapper/slim.lua | 13 +- .../scrapper/spirit_of_earth.lua | 13 +- .../scrapper/spirit_of_fire.lua | 13 +- .../scrapper/spirit_of_water.lua | 13 +- .../scrapper/the_dark_dancer.lua | 17 +- .../svargrond_arena/scrapper/the_hag.lua | 17 +- .../warlord/darakan_the_executioner.lua | 21 +- .../svargrond_arena/warlord/deathbringer.lua | 13 +- .../warlord/fallen_mooh'tah_master_ghar.lua | 21 +- .../warlord/gnorre_chyllson.lua | 13 +- .../warlord/norgle_glacierbeard.lua | 13 +- .../warlord/svoren_the_mad.lua | 13 +- .../warlord/the_masked_marauder.lua | 13 +- .../warlord/the_obliverator.lua | 17 +- .../svargrond_arena/warlord/the_pit_lord.lua | 13 +- .../svargrond_arena/warlord/webster.lua | 13 +- .../quests/the_curse_spreads/black_vixen.lua | 36 +- .../quests/the_curse_spreads/bloodback.lua | 28 +- .../quests/the_curse_spreads/darkfang.lua | 28 +- .../quests/the_curse_spreads/feroxa.lua | 23 +- .../quests/the_curse_spreads/feroxa2.lua | 21 +- .../quests/the_curse_spreads/feroxa3.lua | 21 +- .../quests/the_curse_spreads/feroxa4.lua | 21 +- .../quests/the_curse_spreads/feroxa5.lua | 30 +- .../quests/the_curse_spreads/shadowpelt.lua | 28 +- .../quests/the_curse_spreads/sharpclaw.lua | 28 +- .../the_dream_courts/bosses/alptramun.lua | 20 +- .../the_dream_courts/bosses/faceless_bane.lua | 32 +- .../bosses/izcandar_the_banished.lua | 20 +- .../bosses/malofur_mangrinder.lua | 20 +- .../the_dream_courts/bosses/maxxenius.lua | 30 +- .../the_dream_courts/bosses/plagueroot.lua | 22 +- .../bosses/the_nightmare_beast.lua | 18 +- .../quests/the_dream_courts/generator.lua | 19 +- .../the_dream_courts/horrible_dream.lua | 17 +- .../the_dream_courts/lucifuga_aranea.lua | 12 +- .../the_dream_courts/mind-wrecking_dream.lua | 13 +- .../the_dream_courts/nightmare_tendril.lua | 13 +- .../the_dream_courts/nightmarish_dream.lua | 13 +- .../the_dream_courts/plant_abomination.lua | 13 +- .../the_dream_courts/plant_attendant.lua | 13 +- .../the_dream_courts/the_cold_of_winter.lua | 13 +- .../the_dream_courts/the_heat_of_summer.lua | 13 +- .../the_dream_courts/unpleasant_dream.lua | 13 +- .../the_dream_courts/whirling_blades.lua | 13 +- .../blazing_fire_elemental.lua | 13 +- .../blistering_fire_elemental.lua | 13 +- .../charged_energy_elemental.lua | 13 +- .../the_elemental_spheres/earth_overlord.lua | 12 +- .../the_elemental_spheres/energy_overlord.lua | 12 +- .../the_elemental_spheres/fire_overlord.lua | 12 +- .../the_elemental_spheres/ice_overlord.lua | 12 +- .../jagged_earth_elemental.lua | 13 +- .../lord_of_the_elements.lua | 16 +- .../muddy_earth_elemental.lua | 13 +- .../overcharged_energy_elemental.lua | 20 +- .../roaring_water_elemental.lua | 13 +- .../slick_water_elemental.lua | 13 +- .../the_explorer_society/blue_butterfly.lua | 17 +- .../the_explorer_society/pink_butterfly.lua | 17 +- .../the_explorer_society/purple_butterfly.lua | 17 +- .../the_explorer_society/red_butterfly.lua | 19 +- .../the_explorer_society/yellow_butterfly.lua | 19 +- .../quests/the_first_dragon/angry_plant.lua | 13 +- .../bosses/fallen_challenger.lua | 13 +- .../bosses/gelidrazah_the_frozen.lua | 12 +- .../the_first_dragon/bosses/kalyassa.lua | 24 +- .../the_first_dragon/bosses/tazhadur.lua | 12 +- .../the_first_dragon/bosses/zorvorax.lua | 20 +- .../the_first_dragon/dragon_essence.lua | 13 +- .../quests/the_first_dragon/dragon_warden.lua | 13 +- .../quests/the_first_dragon/dragon_wrath.lua | 19 +- .../the_first_dragon/haunted_dragon.lua | 14 +- .../quests/the_first_dragon/ice_dragon.lua | 22 +- .../the_first_dragon/somewhat_beatable.lua | 21 +- .../the_first_dragon/spirit_of_fertility.lua | 13 +- .../the_first_dragon/unbeatable_dragon.lua | 13 +- .../the_inquisition/a_carved_stone_tile.lua | 21 +- .../quests/the_inquisition/annihilon.lua | 14 +- .../quests/the_inquisition/dreadbeast.lua | 13 +- .../the_inquisition/eye_of_the_seven.lua | 14 +- .../quests/the_inquisition/golgordan.lua | 12 +- .../quests/the_inquisition/hellgorak.lua | 15 +- .../quests/the_inquisition/latrivan.lua | 22 +- .../quests/the_inquisition/madareth.lua | 14 +- .../quests/the_inquisition/the_count.lua | 16 +- .../the_inquisition/the_weakened_count.lua | 12 +- .../quests/the_inquisition/ungreez.lua | 12 +- .../quests/the_inquisition/ushuriel.lua | 22 +- .../quests/the_inquisition/zugurosh.lua | 12 +- .../quests/the_new_frontier/baron_brute.lua | 13 +- .../quests/the_new_frontier/coldheart.lua | 13 +- .../quests/the_new_frontier/doomhowl.lua | 13 +- .../quests/the_new_frontier/dreadwing.lua | 13 +- .../quests/the_new_frontier/fatality.lua | 13 +- .../quests/the_new_frontier/haunter.lua | 13 +- .../quests/the_new_frontier/incineron.lua | 13 +- .../quests/the_new_frontier/menace.lua | 13 +- .../the_new_frontier/mooh'tah_master.lua | 21 +- .../monster/quests/the_new_frontier/rocko.lua | 13 +- .../the_new_frontier/shard_of_corruption.lua | 13 +- .../quests/the_new_frontier/the_axeorcist.lua | 21 +- .../the_new_frontier/the_dreadorian.lua | 13 +- .../quests/the_new_frontier/tirecz.lua | 13 +- .../quests/the_new_frontier/tremorak.lua | 13 +- .../bosses/ancient_lion_archer.lua | 8 +- .../bosses/ancient_lion_knight.lua | 12 +- .../bosses/ancient_lion_warlock.lua | 8 +- .../quests/the_order_of_lion/bosses/drume.lua | 16 +- .../quests/the_order_of_lion/bosses/kesar.lua | 11 +- .../the_order_of_lion/lion_commander.lua | 19 +- .../the_order_of_lion/usurper_commander.lua | 21 +- .../baleful_bunny.lua | 12 +- .../the_percht_queens_island/bonny_bunny.lua | 13 +- .../bright_percht_sleigh.lua | 17 +- .../cold_percht_sleigh.lua | 17 +- .../dark_percht_sleigh.lua | 17 +- .../the_percht_queens_island/percht.lua | 12 +- .../percht_minion.lua | 13 +- .../the_percht_queens_island/schiach.lua | 12 +- .../the_percht_queen.lua | 12 +- .../the_percht_queens_island/warm_fire.lua | 12 +- .../quests/the_secret_library/biting_cold.lua | 11 +- .../quests/the_secret_library/bone_jaw.lua | 19 +- .../the_secret_library/bosses/brokul.lua | 28 +- .../the_secret_library/bosses/ghulosh.lua | 22 +- .../the_secret_library/bosses/gorzindel.lua | 22 +- .../bosses/grand_canon_dominus.lua | 26 +- .../bosses/grand_chaplain_gaunder.lua | 28 +- .../bosses/grand_commander_soeren.lua | 28 +- .../bosses/grand_master_oberon.lua | 20 +- .../bosses/grand_master_oberon_functions.lua | 8 +- .../bosses/preceptor_lazare.lua | 26 +- .../bosses/thawing_dragon_lord.lua | 22 +- .../bosses/the_scourge_of_oblivion.lua | 28 +- .../the_secret_library/brother_chill.lua | 11 +- .../the_secret_library/brother_freeze.lua | 11 +- .../the_secret_library/concentrated_death.lua | 11 +- .../the_secret_library/dark_knowledge.lua | 11 +- .../the_secret_library/dazed_leaf_golem.lua | 14 +- .../quests/the_secret_library/demon_blood.lua | 11 +- .../quests/the_secret_library/demon_slave.lua | 11 +- .../quests/the_secret_library/force_field.lua | 12 +- .../the_secret_library/furious_scorpion.lua | 11 +- .../the_secret_library/ghulosh'_deathgaze.lua | 17 +- .../the_secret_library/imp_intruder.lua | 11 +- .../the_secret_library/invading_demon.lua | 11 +- .../quests/the_secret_library/jailer.lua | 10 +- .../the_secret_library/knowledge_raider.lua | 11 +- .../quests/the_secret_library/librarian.lua | 11 +- .../quests/the_secret_library/lokathmor.lua | 26 +- .../the_secret_library/lokathmor_stuck.lua | 19 +- .../the_secret_library/malicious_minion.lua | 12 +- .../quests/the_secret_library/mazzinor.lua | 22 +- .../quests/the_secret_library/mean_minion.lua | 11 +- .../neutral_deepling_warrior.lua | 13 +- .../the_secret_library/oberons_bile.lua | 19 +- .../the_secret_library/oberons_hate.lua | 19 +- .../quests/the_secret_library/oberons_ire.lua | 19 +- .../the_secret_library/oberons_spite.lua | 19 +- .../ravenous_beyondling.lua | 11 +- .../the_secret_library/rift_breacher.lua | 11 +- .../quests/the_secret_library/rift_minion.lua | 11 +- .../quests/the_secret_library/rift_spawn.lua | 11 +- .../the_secret_library/spawn_of_havoc.lua | 11 +- .../stolen_knowledge_of_armor.lua | 11 +- .../stolen_knowledge_of_healing.lua | 11 +- .../stolen_knowledge_of_lifesteal.lua | 11 +- .../stolen_knowledge_of_spells.lua | 11 +- .../stolen_knowledge_of_summoning.lua | 11 +- .../stolen_tome_of_portals.lua | 11 +- .../supercharged_mazzinor.lua | 11 +- .../the_secret_library/the_blazing_rose.lua | 11 +- .../the_book_of_secrets.lua | 11 +- .../the_devourer_of_secrets.lua | 11 +- .../the_diamond_blossom.lua | 11 +- .../the_secret_library/the_lily_of_night.lua | 11 +- .../the_secret_library/the_scion_of_havoc.lua | 11 +- .../the_secret_library/the_spellstealer.lua | 11 +- .../quests/the_secret_library/war_servant.lua | 11 +- .../the_secret_library/wild_knowledge.lua | 11 +- .../the_secret_library/yalahari_despoiler.lua | 11 +- .../fury_of_the_emperor.lua | 17 +- .../lizard_abomination.lua | 13 +- .../wrath_of_the_emperor/mutated_zalamon.lua | 13 +- .../scorn_of_the_emperor.lua | 17 +- .../snake_god_essence.lua | 13 +- .../wrath_of_the_emperor/snake_thing.lua | 13 +- .../spite_of_the_emperor.lua | 17 +- .../wrath_of_the_emperor/the_keeper.lua | 13 +- .../wrath_of_the_emperor.lua | 17 +- .../monster/raids/arachir_the_ancient_one.lua | 14 +- .../monster/raids/barbaria.lua | 16 +- .../monster/raids/battlemaster_zunzu.lua | 12 +- .../monster/raids/brutus_bloodbeard.lua | 10 +- .../monster/raids/captain_jones.lua | 12 +- .../monster/raids/chayenne.lua | 24 +- .../monster/raids/chizzoron_the_distorter.lua | 26 +- .../monster/raids/control_tower.lua | 9 +- .../monster/raids/deadeye_devious.lua | 12 +- .../monster/raids/draptor.lua | 14 +- .../monster/raids/egg_the_welter.lua | 19 +- .../monster/raids/fernfang.lua | 16 +- .../monster/raids/ferumbras.lua | 28 +- .../monster/raids/fleabringer.lua | 10 +- .../monster/raids/foreman_kneebiter.lua | 22 +- .../monster/raids/frost_servant.lua | 13 +- .../monster/raids/furyosa.lua | 38 +- .../monster/raids/ghazbaran.lua | 28 +- .../monster/raids/giant_spider_wyda.lua | 20 +- .../monster/raids/glooth_battery.lua | 18 +- .../monster/raids/glooth_bomb.lua | 24 +- .../monster/raids/glooth_fairy.lua | 8 +- .../monster/raids/grand_mother_foulscale.lua | 16 +- .../monster/raids/grorlam.lua | 12 +- .../monster/raids/hirintror.lua | 24 +- .../monster/raids/lethal_lissy.lua | 16 +- .../monster/raids/man_in_the_cave.lua | 16 +- .../monster/raids/mawhawk.lua | 22 +- .../monster/raids/morgaroth.lua | 28 +- .../monster/raids/necropharus.lua | 16 +- .../monster/raids/ocyakao.lua | 22 +- .../monster/raids/orc_armor.lua | 20 +- .../monster/raids/orc_helmet.lua | 20 +- .../monster/raids/orc_sambackpack.lua | 20 +- .../monster/raids/orc_shield.lua | 20 +- .../monster/raids/orshabaal.lua | 28 +- .../monster/raids/ron_the_ripper.lua | 12 +- .../monster/raids/rottie_the_rotworm.lua | 10 +- .../monster/raids/rotworm_queen.lua | 10 +- .../monster/raids/sir_valorcrest.lua | 16 +- .../monster/raids/spawn_of_the_welter.lua | 13 +- .../monster/raids/spyrat_facing_east.lua | 25 +- .../monster/raids/spyrat_facing_north.lua | 25 +- .../monster/raids/spyrat_facing_south.lua | 25 +- .../monster/raids/spyrat_facing_west.lua | 25 +- .../monster/raids/the_horned_fox.lua | 20 +- .../monster/raids/the_pale_count.lua | 26 +- .../monster/raids/the_voice_of_ruin.lua | 12 +- .../monster/raids/the_welter.lua | 28 +- data-otservbr-global/monster/raids/tyrn.lua | 24 +- .../monster/raids/white_pale.lua | 24 +- data-otservbr-global/monster/raids/xenia.lua | 12 +- .../monster/raids/yakchal.lua | 16 +- data-otservbr-global/monster/raids/zomba.lua | 10 +- .../monster/raids/zulazza_the_corruptor.lua | 24 +- .../monster/reptiles/adult_goanna.lua | 14 +- .../monster/reptiles/boar_man.lua | 15 +- .../monster/reptiles/carnivostrich.lua | 14 +- .../monster/reptiles/cobra.lua | 12 +- .../monster/reptiles/corrupt_naga.lua | 6 +- .../monster/reptiles/crape_man.lua | 14 +- .../monster/reptiles/crocodile.lua | 12 +- .../monster/reptiles/dreadmaw.lua | 12 +- .../monster/reptiles/emerald_tortoise.lua | 8 +- .../monster/reptiles/fungosaurus.lua | 6 +- .../monster/reptiles/harpy.lua | 14 +- .../monster/reptiles/killer_caiman.lua | 14 +- .../monster/reptiles/liodile.lua | 14 +- .../monster/reptiles/lizard_chosen.lua | 14 +- .../monster/reptiles/lizard_dragon_priest.lua | 18 +- .../monster/reptiles/lizard_high_guard.lua | 14 +- .../monster/reptiles/lizard_legionnaire.lua | 12 +- .../monster/reptiles/lizard_magistratus.lua | 14 +- .../monster/reptiles/lizard_noble.lua | 14 +- .../monster/reptiles/lizard_sentinel.lua | 12 +- .../monster/reptiles/lizard_snakecharmer.lua | 18 +- .../monster/reptiles/lizard_templar.lua | 12 +- .../monster/reptiles/lizard_zaogun.lua | 14 +- .../monster/reptiles/mantosaurus.lua | 9 +- .../monster/reptiles/mercurial_menace.lua | 8 +- .../monster/reptiles/naga_archer.lua | 8 +- .../monster/reptiles/naga_warrior.lua | 8 +- .../monster/reptiles/noxious_ripptor.lua | 14 +- .../monster/reptiles/rhindeer.lua | 14 +- .../monster/reptiles/rogue_naga.lua | 6 +- .../monster/reptiles/sea_serpent.lua | 14 +- .../monster/reptiles/seacrest_serpent.lua | 14 +- .../monster/reptiles/serpent_spawn.lua | 14 +- .../monster/reptiles/snake.lua | 13 +- .../monster/reptiles/stampor.lua | 14 +- .../monster/reptiles/stonerefiner.lua | 22 +- .../monster/reptiles/thornback_tortoise.lua | 12 +- .../monster/reptiles/tortoise.lua | 12 +- .../monster/reptiles/two-headed_turtle.lua | 10 +- .../monster/reptiles/wyvern.lua | 14 +- .../monster/reptiles/young_goanna.lua | 14 +- .../monster/reptiles/young_sea_serpent.lua | 14 +- .../monster/slimes/acid_blob.lua | 16 +- .../monster/slimes/death_blob.lua | 18 +- .../monster/slimes/defiler.lua | 14 +- .../monster/slimes/devourer.lua | 14 +- .../monster/slimes/glooth_blob.lua | 16 +- .../monster/slimes/ink_blob.lua | 14 +- .../monster/slimes/mercury_blob.lua | 18 +- .../monster/slimes/midnight_spawn.lua | 12 +- data-otservbr-global/monster/slimes/slime.lua | 17 +- .../monster/slimes/son_of_verminor.lua | 15 +- .../monster/slimes/squidgy_slime.lua | 17 +- .../monster/traps/deathslicer.lua | 12 +- .../monster/traps/deaththrower.lua | 19 +- .../monster/traps/demon_summoner.lua | 24 +- .../monster/traps/floor_blob.lua | 11 +- .../monster/traps/hell_hole.lua | 21 +- .../monster/traps/hive_pore.lua | 18 +- .../monster/traps/lavahole.lua | 11 +- .../monster/traps/magic_pillar.lua | 14 +- .../monster/traps/magicthrower.lua | 12 +- .../monster/traps/mechanical_fighter.lua | 10 +- data-otservbr-global/monster/traps/mimic.lua | 10 +- data-otservbr-global/monster/traps/pillar.lua | 10 +- .../monster/traps/plaguethrower.lua | 12 +- data-otservbr-global/monster/undeads/ahau.lua | 20 +- .../monster/undeads/bane_of_light.lua | 15 +- .../monster/undeads/banshee.lua | 14 +- .../monster/undeads/betrayed_wraith.lua | 14 +- .../monster/undeads/blightwalker.lua | 12 +- .../monster/undeads/blood_beast.lua | 14 +- .../monster/undeads/bonebeast.lua | 14 +- .../monster/undeads/bony_sea_devil.lua | 8 +- .../monster/undeads/burster_spectre.lua | 14 +- .../monster/undeads/capricious_phantom.lua | 8 +- .../monster/undeads/crypt_shambler.lua | 12 +- .../monster/undeads/crypt_warrior.lua | 12 +- .../monster/undeads/cursed_ape.lua | 9 +- .../monster/undeads/cursed_prospector.lua | 12 +- .../monster/undeads/death_priest.lua | 14 +- .../monster/undeads/demon_skeleton.lua | 12 +- .../monster/undeads/distorted_phantom.lua | 8 +- .../monster/undeads/druid's_apparition.lua | 16 +- .../monster/undeads/elder_mummy.lua | 12 +- .../monster/undeads/evil_prospector.lua | 12 +- .../monster/undeads/falcon_knight.lua | 12 +- .../monster/undeads/falcon_paladin.lua | 12 +- .../monster/undeads/flimsy_lost_soul.lua | 12 +- .../monster/undeads/freakish_lost_soul.lua | 12 +- .../monster/undeads/gazer_spectre.lua | 16 +- .../monster/undeads/ghost.lua | 12 +- .../monster/undeads/ghoul.lua | 14 +- .../monster/undeads/grave_guard.lua | 12 +- .../monster/undeads/gravedigger.lua | 14 +- .../monster/undeads/grim_reaper.lua | 14 +- .../monster/undeads/hand_of_cursed_fate.lua | 14 +- .../monster/undeads/hazardous_phantom.lua | 6 +- .../monster/undeads/honour_guard.lua | 12 +- .../monster/undeads/iks_ahpututu.lua | 8 +- .../monster/undeads/iks_aucar.lua | 11 +- .../monster/undeads/iks_chuka.lua | 14 +- .../monster/undeads/iks_churrascan.lua | 11 +- .../monster/undeads/iks_pututu.lua | 10 +- .../monster/undeads/infernal_phantom.lua | 8 +- .../monster/undeads/knight's_apparition.lua | 18 +- data-otservbr-global/monster/undeads/lich.lua | 18 +- .../monster/undeads/lost_soul.lua | 12 +- .../monster/undeads/mean_lost_soul.lua | 12 +- .../monster/undeads/mould_phantom.lua | 8 +- .../monster/undeads/mummy.lua | 12 +- .../monster/undeads/paladin's_apparition.lua | 18 +- .../monster/undeads/pirate_ghost.lua | 14 +- .../monster/undeads/pirate_skeleton.lua | 20 +- .../monster/undeads/putrid_mummy.lua | 14 +- .../monster/undeads/ripper_spectre.lua | 16 +- .../monster/undeads/rot_elemental.lua | 14 +- .../monster/undeads/skeleton.lua | 12 +- .../undeads/skeleton_elite_warrior.lua | 12 +- .../monster/undeads/skeleton_warrior.lua | 12 +- .../monster/undeads/sorcerer's_apparition.lua | 16 +- .../monster/undeads/souleater.lua | 14 +- .../monster/undeads/spectre.lua | 14 +- .../monster/undeads/tarnished_spirit.lua | 12 +- .../monster/undeads/tomb_servant.lua | 12 +- .../monster/undeads/undead_cavebear.lua | 12 +- .../monster/undeads/undead_dragon.lua | 22 +- .../undeads/undead_elite_gladiator.lua | 14 +- .../monster/undeads/undead_gladiator.lua | 14 +- .../monster/undeads/undead_mine_worker.lua | 12 +- .../monster/undeads/undead_prospector.lua | 14 +- .../monster/undeads/vampire.lua | 14 +- .../monster/undeads/vampire_bride.lua | 14 +- .../monster/undeads/vampire_viscount.lua | 14 +- .../monster/undeads/vibrant_phantom.lua | 8 +- .../monster/undeads/vicious_manbat.lua | 12 +- .../monster/undeads/white_shade.lua | 14 +- .../monster/undeads/zombie.lua | 12 +- .../monster/vermins/afflicted_strider.lua | 14 +- .../monster/vermins/ancient_scarab.lua | 18 +- .../monster/vermins/blemished_spawn.lua | 10 +- .../monster/vermins/brimstone_bug.lua | 12 +- data-otservbr-global/monster/vermins/bug.lua | 12 +- .../monster/vermins/burrowing_beetle.lua | 13 +- .../monster/vermins/butterfly.lua | 19 +- .../monster/vermins/carrion_worm.lua | 12 +- .../monster/vermins/cave_chimera.lua | 12 +- .../monster/vermins/cave_devourer.lua | 12 +- .../monster/vermins/centipede.lua | 12 +- .../monster/vermins/chasm_spawn.lua | 12 +- .../monster/vermins/cockroach.lua | 9 +- .../monster/vermins/crawler.lua | 14 +- .../monster/vermins/crystal_spider.lua | 14 +- .../monster/vermins/deepworm.lua | 12 +- .../monster/vermins/diremaw.lua | 12 +- .../monster/vermins/drillworm.lua | 12 +- .../monster/vermins/emerald_damselfly.lua | 14 +- .../monster/vermins/exotic_cave_spider.lua | 20 +- .../monster/vermins/eyeless_devourer.lua | 10 +- .../monster/vermins/giant_spider.lua | 18 +- .../monster/vermins/hibernal_moth.lua | 13 +- .../monster/vermins/hive_overseer.lua | 18 +- .../monster/vermins/insect_swarm.lua | 21 +- .../monster/vermins/insectoid_scout.lua | 12 +- .../monster/vermins/insectoid_worker.lua | 12 +- .../monster/vermins/kollos.lua | 12 +- .../monster/vermins/lacewing_moth.lua | 13 +- .../monster/vermins/ladybug.lua | 12 +- .../monster/vermins/lancer_beetle.lua | 14 +- .../monster/vermins/larva.lua | 12 +- .../monster/vermins/lavafungus.lua | 12 +- .../monster/vermins/lavaworm.lua | 10 +- .../monster/vermins/lesser_swarmer.lua | 12 +- .../monster/vermins/parasite.lua | 11 +- .../monster/vermins/poison_spider.lua | 12 +- .../monster/vermins/rotworm.lua | 12 +- .../monster/vermins/sacred_spider.lua | 12 +- .../monster/vermins/sandcrawler.lua | 12 +- .../monster/vermins/scarab.lua | 14 +- .../monster/vermins/scorpion.lua | 12 +- data-otservbr-global/monster/vermins/slug.lua | 12 +- .../monster/vermins/spider.lua | 12 +- .../monster/vermins/spidris.lua | 14 +- .../monster/vermins/spidris_elite.lua | 12 +- .../monster/vermins/spitter.lua | 14 +- .../monster/vermins/streaked_devourer.lua | 10 +- .../monster/vermins/sulphider.lua | 10 +- .../monster/vermins/swarmer.lua | 14 +- .../monster/vermins/swarmer_hatchling.lua | 12 +- .../monster/vermins/tarantula.lua | 14 +- .../monster/vermins/terramite.lua | 12 +- .../monster/vermins/tremendous_tyrant.lua | 10 +- .../monster/vermins/tunnel_tyrant.lua | 12 +- .../monster/vermins/undertaker.lua | 8 +- .../monster/vermins/varnished_diremaw.lua | 10 +- .../monster/vermins/wailing_widow.lua | 20 +- data-otservbr-global/monster/vermins/wasp.lua | 12 +- .../monster/vermins/waspoid.lua | 12 +- .../monster/vermins/wiggler.lua | 22 +- .../monster/wild_magics/wild_fire_magic.lua | 14 +- .../monster/wild_magics/wild_fury_magic.lua | 14 +- .../monster/wild_magics/wild_nature_magic.lua | 14 +- .../monster/wild_magics/wild_water_magic.lua | 14 +- data-otservbr-global/npc/a_bearded_woman.lua | 150 +- data-otservbr-global/npc/a_beautiful_girl.lua | 4 +- data-otservbr-global/npc/a_beggar.lua | 6 +- data-otservbr-global/npc/a_behemoth.lua | 4 +- data-otservbr-global/npc/a_confused_frog.lua | 4 +- data-otservbr-global/npc/a_dark_priestess.lua | 4 +- .../npc/a_dead_bureaucrat1.lua | 10 +- .../npc/a_dead_bureaucrat2.lua | 8 +- .../npc/a_dead_bureaucrat3.lua | 8 +- .../npc/a_dead_bureaucrat4.lua | 10 +- data-otservbr-global/npc/a_dragon_lord.lua | 4 +- data-otservbr-global/npc/a_dragon_mother.lua | 19 +- data-otservbr-global/npc/a_drillworm.lua | 4 +- data-otservbr-global/npc/a_dwarven_ghost.lua | 4 +- data-otservbr-global/npc/a_fading_memory.lua | 6 +- .../npc/a_fluffy_squirrel.lua | 13 +- data-otservbr-global/npc/a_frog.lua | 20 +- .../npc/a_ghostly_guardian.lua | 4 +- data-otservbr-global/npc/a_ghostly_knight.lua | 4 +- data-otservbr-global/npc/a_ghostly_sage.lua | 14 +- data-otservbr-global/npc/a_ghostly_woman.lua | 10 +- .../npc/a_ghostly_woman_ghostland.lua | 4 +- data-otservbr-global/npc/a_goblin_exile.lua | 4 +- data-otservbr-global/npc/a_grumpy_cyclops.lua | 4 +- data-otservbr-global/npc/a_lost_basher.lua | 4 +- data-otservbr-global/npc/a_lost_husher.lua | 4 +- data-otservbr-global/npc/a_lost_soul.lua | 4 +- data-otservbr-global/npc/a_lost_thrower.lua | 4 +- .../npc/a_majestic_warwolf.lua | 14 +- .../npc/a_nightmare_scion.lua | 4 +- data-otservbr-global/npc/a_prisoner.lua | 20 +- data-otservbr-global/npc/a_restless_soul.lua | 6 +- .../npc/a_sleeping_dragon.lua | 92 +- data-otservbr-global/npc/a_starving_dog.lua | 4 +- .../npc/a_strange_chalice.lua | 20 +- data-otservbr-global/npc/a_strange_fellow.lua | 4 +- data-otservbr-global/npc/a_swan.lua | 12 +- data-otservbr-global/npc/a_sweaty_cyclops.lua | 58 +- data-otservbr-global/npc/a_tainted_soul.lua | 4 +- data-otservbr-global/npc/a_tortured_soul.lua | 4 +- data-otservbr-global/npc/a_vulcongra.lua | 4 +- .../npc/a_weakened_forest_fury.lua | 32 +- .../npc/a_wrinkled_bonelord.lua | 52 +- data-otservbr-global/npc/a_wyrm.lua | 4 +- data-otservbr-global/npc/abran_ironeye.lua | 4 +- .../npc/admiral_wyrmslicer.lua | 4 +- data-otservbr-global/npc/adrenius.lua | 4 +- data-otservbr-global/npc/ahmet.lua | 44 +- data-otservbr-global/npc/ajax.lua | 8 +- data-otservbr-global/npc/al_dee.lua | 182 +- data-otservbr-global/npc/alaistar.lua | 9 +- data-otservbr-global/npc/albert.lua | 4 +- data-otservbr-global/npc/albinius.lua | 115 +- data-otservbr-global/npc/aldo.lua | 13 +- data-otservbr-global/npc/alesar.lua | 9 +- data-otservbr-global/npc/alesar_functions.lua | 6 +- data-otservbr-global/npc/alexander.lua | 31 +- data-otservbr-global/npc/alia.lua | 145 +- data-otservbr-global/npc/alissa.lua | 9 +- data-otservbr-global/npc/alkestios.lua | 44 +- data-otservbr-global/npc/allen.lua | 7 +- data-otservbr-global/npc/alternative_rock.lua | 8 +- data-otservbr-global/npc/alwin.lua | 4 +- data-otservbr-global/npc/alyxo.lua | 11 +- data-otservbr-global/npc/amanda.lua | 212 +- data-otservbr-global/npc/amarie.lua | 6 +- .../npc/ambassador_of_rathleton.lua | 45 +- data-otservbr-global/npc/amber.lua | 813 +- data-otservbr-global/npc/amra.lua | 9 +- .../npc/an_ancient_priest.lua | 4 +- data-otservbr-global/npc/an_apparition.lua | 4 +- .../npc/an_imprisoned_goblin.lua | 4 +- .../npc/an_old_dragon_lord.lua | 16 +- data-otservbr-global/npc/an_orc_guard.lua | 9 +- data-otservbr-global/npc/anderson.lua | 80 +- data-otservbr-global/npc/andrew_lyze.lua | 14 +- data-otservbr-global/npc/anerui.lua | 43 +- data-otservbr-global/npc/aneus.lua | 72 +- data-otservbr-global/npc/angelina.lua | 4 +- data-otservbr-global/npc/angelo.lua | 7 +- data-otservbr-global/npc/angus.lua | 574 +- data-otservbr-global/npc/appaloosa.lua | 34 +- data-otservbr-global/npc/archery.lua | 13 +- data-otservbr-global/npc/archery_rook.lua | 13 +- data-otservbr-global/npc/ariella.lua | 38 +- data-otservbr-global/npc/arito.lua | 17 +- data-otservbr-global/npc/arkarra.lua | 6 +- data-otservbr-global/npc/arkhothep.lua | 4 +- data-otservbr-global/npc/arkulius.lua | 50 +- data-otservbr-global/npc/armenius.lua | 12 +- data-otservbr-global/npc/arnold.lua | 4 +- data-otservbr-global/npc/aruda.lua | 6 +- data-otservbr-global/npc/ashari.lua | 4 +- data-otservbr-global/npc/ashtamor.lua | 6 +- data-otservbr-global/npc/asima.lua | 27 +- data-otservbr-global/npc/asnarus.lua | 9 +- data-otservbr-global/npc/asphota.lua | 9 +- data-otservbr-global/npc/asrak.lua | 4 +- data-otservbr-global/npc/asralius.lua | 9 +- data-otservbr-global/npc/atrad.lua | 23 +- data-otservbr-global/npc/atur.lua | 6 +- data-otservbr-global/npc/aurita.lua | 21 +- data-otservbr-global/npc/auron.lua | 9 +- data-otservbr-global/npc/avar_tar.lua | 67 +- .../npc/awarness_of_the_emperor.lua | 8 +- data-otservbr-global/npc/azalea.lua | 145 +- data-otservbr-global/npc/azil.lua | 9 +- data-otservbr-global/npc/baa_leal.lua | 62 +- data-otservbr-global/npc/baltim.lua | 9 +- .../npc/bambi_bonecrusher.lua | 4 +- data-otservbr-global/npc/barazbaz.lua | 10 +- data-otservbr-global/npc/barbara.lua | 20 +- data-otservbr-global/npc/barnabas_dee.lua | 16 +- data-otservbr-global/npc/barney.lua | 4 +- data-otservbr-global/npc/barry.lua | 16 +- data-otservbr-global/npc/bashira.lua | 11 +- data-otservbr-global/npc/basilisk.lua | 4 +- data-otservbr-global/npc/battlemart.lua | 7 +- data-otservbr-global/npc/baxter.lua | 13 +- data-otservbr-global/npc/beatrice.lua | 11 +- data-otservbr-global/npc/benevola.lua | 10 +- data-otservbr-global/npc/benjamin.lua | 15 +- data-otservbr-global/npc/berenice.lua | 11 +- data-otservbr-global/npc/bertha.lua | 13 +- data-otservbr-global/npc/bertram.lua | 17 +- data-otservbr-global/npc/bezil.lua | 9 +- data-otservbr-global/npc/bigfoot_soldier.lua | 4 +- data-otservbr-global/npc/bill_the_worker.lua | 4 +- data-otservbr-global/npc/billy.lua | 181 +- data-otservbr-global/npc/black_bert.lua | 9 +- data-otservbr-global/npc/blind_orc.lua | 63 +- .../npc/blossom_bonecrusher.lua | 4 +- data-otservbr-global/npc/bo_ques.lua | 52 +- data-otservbr-global/npc/bob_the_worker.lua | 4 +- data-otservbr-global/npc/bolfona.lua | 9 +- data-otservbr-global/npc/bonifacius.lua | 9 +- data-otservbr-global/npc/boozer.lua | 9 +- data-otservbr-global/npc/borkas.lua | 9 +- data-otservbr-global/npc/boveas.lua | 4 +- data-otservbr-global/npc/bozarn.lua | 4 +- data-otservbr-global/npc/bozo.lua | 723 +- data-otservbr-global/npc/braden.lua | 4 +- data-otservbr-global/npc/bradford.lua | 4 +- data-otservbr-global/npc/brasith.lua | 29 +- data-otservbr-global/npc/brengus.lua | 9 +- data-otservbr-global/npc/brewster.lua | 175 +- data-otservbr-global/npc/briasol.lua | 13 +- .../npc/bright_percht_sleigh.lua | 4 +- data-otservbr-global/npc/brodrosch.lua | 84 +- .../npc/broken_servant_sentry.lua | 32 +- data-otservbr-global/npc/brom.lua | 4 +- data-otservbr-global/npc/bron.lua | 50 +- data-otservbr-global/npc/bruce.lua | 16 +- data-otservbr-global/npc/bruno.lua | 18 +- data-otservbr-global/npc/brutus.lua | 4 +- data-otservbr-global/npc/buddel.lua | 100 +- data-otservbr-global/npc/buddel_helheim.lua | 97 +- data-otservbr-global/npc/buddel_okolnir.lua | 100 +- .../npc/buddel_raider_camp.lua | 100 +- data-otservbr-global/npc/buddel_tyrsung.lua | 100 +- data-otservbr-global/npc/budrik.lua | 16 +- .../npc/bunny_bonecrusher.lua | 36 +- .../npc/busty_bonecrusher.lua | 6 +- data-otservbr-global/npc/cael.lua | 59 +- data-otservbr-global/npc/cameron.lua | 4 +- data-otservbr-global/npc/canary.lua | 13 +- data-otservbr-global/npc/captain_bluebear.lua | 111 +- .../npc/captain_breezelda.lua | 28 +- data-otservbr-global/npc/captain_chelop.lua | 26 +- data-otservbr-global/npc/captain_cookie.lua | 20 +- .../npc/captain_dreadnought.lua | 280 +- data-otservbr-global/npc/captain_fearless.lua | 80 +- .../npc/captain_greyhound.lua | 76 +- data-otservbr-global/npc/captain_gulliver.lua | 60 +- data-otservbr-global/npc/captain_haba.lua | 6 +- .../npc/captain_haba_open_sea.lua | 24 +- data-otservbr-global/npc/captain_harava.lua | 46 +- data-otservbr-global/npc/captain_jack.lua | 14 +- data-otservbr-global/npc/captain_jack_rat.lua | 4 +- data-otservbr-global/npc/captain_kurt.lua | 4 +- data-otservbr-global/npc/captain_max.lua | 41 +- .../npc/captain_max_calassa.lua | 25 +- data-otservbr-global/npc/captain_pelagia.lua | 64 +- data-otservbr-global/npc/captain_seagull.lua | 82 +- data-otservbr-global/npc/captain_seahorse.lua | 61 +- data-otservbr-global/npc/captain_sinbeard.lua | 68 +- data-otservbr-global/npc/captain_tiberius.lua | 4 +- .../npc/captain_waverider.lua | 16 +- .../npc/captain_waverider_island.lua | 16 +- data-otservbr-global/npc/caramellia.lua | 44 +- data-otservbr-global/npc/carina.lua | 29 +- data-otservbr-global/npc/carlos.lua | 25 +- data-otservbr-global/npc/carlson.lua | 18 +- data-otservbr-global/npc/cassino.lua | 18 +- data-otservbr-global/npc/cedrik.lua | 148 +- data-otservbr-global/npc/ceiron.lua | 12 +- data-otservbr-global/npc/cerdras.lua | 28 +- data-otservbr-global/npc/cerebrir.lua | 4 +- data-otservbr-global/npc/chantalle.lua | 17 +- data-otservbr-global/npc/charles.lua | 52 +- data-otservbr-global/npc/charlotta.lua | 4 +- data-otservbr-global/npc/charos.lua | 18 +- data-otservbr-global/npc/chartan.lua | 15 +- data-otservbr-global/npc/chatterbone.lua | 4 +- data-otservbr-global/npc/chavis.lua | 20 +- data-otservbr-global/npc/chemar.lua | 55 +- data-otservbr-global/npc/chephan.lua | 9 +- data-otservbr-global/npc/chester_kahs.lua | 162 +- data-otservbr-global/npc/chief_grarkharok.lua | 13 +- data-otservbr-global/npc/chondur.lua | 637 +- data-otservbr-global/npc/chrak.lua | 11 +- data-otservbr-global/npc/christine.lua | 9 +- data-otservbr-global/npc/christoph.lua | 4 +- data-otservbr-global/npc/chrystal.lua | 9 +- data-otservbr-global/npc/chuck_the_worker.lua | 4 +- data-otservbr-global/npc/chuckles.lua | 9 +- data-otservbr-global/npc/cillia.lua | 12 +- data-otservbr-global/npc/cipfried.lua | 213 +- data-otservbr-global/npc/clark.lua | 4 +- data-otservbr-global/npc/cledwyn.lua | 85 +- data-otservbr-global/npc/clyde.lua | 9 +- data-otservbr-global/npc/cobra.lua | 4 +- .../npc/cold_percht_sleigh.lua | 4 +- data-otservbr-global/npc/coltrayne.lua | 141 +- data-otservbr-global/npc/commander_stone.lua | 27 +- data-otservbr-global/npc/cornelia.lua | 23 +- data-otservbr-global/npc/cornell.lua | 24 +- data-otservbr-global/npc/corym_butler.lua | 14 +- data-otservbr-global/npc/corym_footman.lua | 14 +- data-otservbr-global/npc/corym_ratter.lua | 18 +- data-otservbr-global/npc/corym_servant.lua | 30 +- data-otservbr-global/npc/corym_slave.lua | 14 +- data-otservbr-global/npc/corym_worker_01.lua | 10 +- data-otservbr-global/npc/corym_worker_02.lua | 14 +- data-otservbr-global/npc/corym_worker_03.lua | 10 +- data-otservbr-global/npc/corym_worker_04.lua | 10 +- data-otservbr-global/npc/corym_worker_05.lua | 10 +- data-otservbr-global/npc/costello.lua | 46 +- .../npc/cranky_lizard_crone.lua | 32 +- data-otservbr-global/npc/crowned_tree.lua | 4 +- data-otservbr-global/npc/cruleo.lua | 15 +- data-otservbr-global/npc/curos.lua | 25 +- data-otservbr-global/npc/dabui.lua | 4 +- data-otservbr-global/npc/dagomir.lua | 4 +- data-otservbr-global/npc/dalbrect.lua | 191 +- data-otservbr-global/npc/dallheim.lua | 279 +- data-otservbr-global/npc/dancing_fairy.lua | 13 +- data-otservbr-global/npc/dane.lua | 25 +- data-otservbr-global/npc/daniel_steelsoul.lua | 26 +- data-otservbr-global/npc/dankwart.lua | 9 +- data-otservbr-global/npc/danlon.lua | 4 +- data-otservbr-global/npc/dario.lua | 13 +- .../npc/dark_percht_sleigh.lua | 4 +- data-otservbr-global/npc/dedoras.lua | 16 +- data-otservbr-global/npc/demon_skeleton.lua | 4 +- data-otservbr-global/npc/demonguard.lua | 4 +- data-otservbr-global/npc/denominator.lua | 130 +- data-otservbr-global/npc/dermot.lua | 18 +- data-otservbr-global/npc/digger.lua | 9 +- data-otservbr-global/npc/dixi.lua | 174 +- data-otservbr-global/npc/djema.lua | 4 +- data-otservbr-global/npc/doctor_gnomedix.lua | 4 +- data-otservbr-global/npc/donald_mcronald.lua | 9 +- data-otservbr-global/npc/dorbin.lua | 9 +- data-otservbr-global/npc/dorian.lua | 118 +- data-otservbr-global/npc/doubleday.lua | 4 +- data-otservbr-global/npc/doug.lua | 4 +- data-otservbr-global/npc/dove.lua | 11 +- data-otservbr-global/npc/dr_merlay.lua | 4 +- data-otservbr-global/npc/dreadeye.lua | 4 +- data-otservbr-global/npc/dream_butterfly.lua | 4 +- data-otservbr-global/npc/dregor.lua | 4 +- data-otservbr-global/npc/drog.lua | 4 +- data-otservbr-global/npc/dronk.lua | 4 +- data-otservbr-global/npc/druid_yandur.lua | 4 +- data-otservbr-global/npc/drystan_wildweed.lua | 4 +- data-otservbr-global/npc/dukosch.lua | 14 +- data-otservbr-global/npc/duncan.lua | 114 +- data-otservbr-global/npc/duria.lua | 26 +- data-otservbr-global/npc/dustrunner.lua | 4 +- data-otservbr-global/npc/eathar.lua | 4 +- data-otservbr-global/npc/ebenizer.lua | 6 +- data-otservbr-global/npc/eclesius.lua | 6 +- data-otservbr-global/npc/edala.lua | 112 +- data-otservbr-global/npc/eddy.lua | 13 +- data-otservbr-global/npc/edgar-ellen.lua | 54 +- data-otservbr-global/npc/edmund.lua | 9 +- data-otservbr-global/npc/edoch.lua | 9 +- data-otservbr-global/npc/edowir.lua | 8 +- data-otservbr-global/npc/edron_guardsman.lua | 6 +- data-otservbr-global/npc/edvard.lua | 13 +- data-otservbr-global/npc/eighty.lua | 6 +- data-otservbr-global/npc/eirik.lua | 4 +- data-otservbr-global/npc/elane.lua | 122 +- data-otservbr-global/npc/elathriel.lua | 368 +- data-otservbr-global/npc/elbert.lua | 4 +- data-otservbr-global/npc/eleonore.lua | 10 +- data-otservbr-global/npc/elf_guard.lua | 24 +- data-otservbr-global/npc/elgar.lua | 8 +- data-otservbr-global/npc/eliyas.lua | 50 +- data-otservbr-global/npc/eliza.lua | 4 +- data-otservbr-global/npc/elliott.lua | 6 +- data-otservbr-global/npc/elvith.lua | 63 +- data-otservbr-global/npc/elyen_ravenlock.lua | 28 +- data-otservbr-global/npc/emael.lua | 9 +- data-otservbr-global/npc/emberwing.lua | 4 +- data-otservbr-global/npc/emily.lua | 4 +- data-otservbr-global/npc/emma.lua | 125 +- data-otservbr-global/npc/emperor_kruzak.lua | 28 +- data-otservbr-global/npc/emperor_rehal.lua | 28 +- data-otservbr-global/npc/eranth.lua | 4 +- data-otservbr-global/npc/erayo.lua | 45 +- data-otservbr-global/npc/eremo.lua | 338 +- data-otservbr-global/npc/eroth.lua | 18 +- data-otservbr-global/npc/eruaran.lua | 72 +- data-otservbr-global/npc/eshaya.lua | 131 +- data-otservbr-global/npc/esrik.lua | 11 +- data-otservbr-global/npc/ethan.lua | 4 +- data-otservbr-global/npc/etzel.lua | 4 +- data-otservbr-global/npc/eustacio.lua | 8 +- data-otservbr-global/npc/eva.lua | 6 +- data-otservbr-global/npc/evan.lua | 9 +- data-otservbr-global/npc/ezean.lua | 9 +- data-otservbr-global/npc/ezebeth.lua | 4 +- data-otservbr-global/npc/fa_hradin.lua | 50 +- data-otservbr-global/npc/fadil.lua | 9 +- data-otservbr-global/npc/falk.lua | 4 +- data-otservbr-global/npc/falonzo.lua | 168 +- data-otservbr-global/npc/faloriel.lua | 67 +- data-otservbr-global/npc/faluae.lua | 4 +- data-otservbr-global/npc/fayla.lua | 9 +- data-otservbr-global/npc/feizuhl.lua | 11 +- data-otservbr-global/npc/fenbala.lua | 20 +- data-otservbr-global/npc/fenech.lua | 29 +- data-otservbr-global/npc/fergus.lua | 4 +- data-otservbr-global/npc/ferks.lua | 6 +- data-otservbr-global/npc/ferryman_kamil.lua | 10 +- .../npc/ferryman_kamil_meluna.lua | 10 +- data-otservbr-global/npc/ferus.lua | 145 +- data-otservbr-global/npc/fillias.lua | 4 +- data-otservbr-global/npc/finarfin.lua | 6 +- data-otservbr-global/npc/fiona.lua | 13 +- data-otservbr-global/npc/flint.lua | 9 +- data-otservbr-global/npc/flora.lua | 30 +- data-otservbr-global/npc/florentine.lua | 11 +- data-otservbr-global/npc/frafnar.lua | 4 +- data-otservbr-global/npc/frank_the_plank.lua | 4 +- data-otservbr-global/npc/frans.lua | 9 +- data-otservbr-global/npc/frederik.lua | 9 +- data-otservbr-global/npc/freezhild.lua | 5 +- data-otservbr-global/npc/frodo.lua | 103 +- data-otservbr-global/npc/frok_the_guard.lua | 4 +- data-otservbr-global/npc/frosty.lua | 58 +- data-otservbr-global/npc/fynn.lua | 4 +- data-otservbr-global/npc/fyodor.lua | 9 +- data-otservbr-global/npc/gabel.lua | 65 +- data-otservbr-global/npc/gail.lua | 15 +- data-otservbr-global/npc/galuna.lua | 11 +- data-otservbr-global/npc/gamel.lua | 12 +- data-otservbr-global/npc/gamon.lua | 42 +- data-otservbr-global/npc/garamond.lua | 725 +- data-otservbr-global/npc/gareth.lua | 35 +- data-otservbr-global/npc/gate_guardian.lua | 4 +- data-otservbr-global/npc/gederas.lua | 4 +- data-otservbr-global/npc/gelagos.lua | 18 +- .../npc/gelidrazahs_thirst.lua | 9 +- .../npc/george_the_boyscout.lua | 4 +- data-otservbr-global/npc/gerimor.lua | 555 +- data-otservbr-global/npc/gewen.lua | 56 +- data-otservbr-global/npc/ghorza.lua | 9 +- .../npc/ghost_of_a_priest.lua | 36 +- data-otservbr-global/npc/ghostly_wolf.lua | 10 +- data-otservbr-global/npc/giri.lua | 9 +- data-otservbr-global/npc/gladys.lua | 9 +- data-otservbr-global/npc/gnomad.lua | 40 +- data-otservbr-global/npc/gnomadness.lua | 10 +- data-otservbr-global/npc/gnomailion.lua | 9 +- data-otservbr-global/npc/gnomally.lua | 105 +- data-otservbr-global/npc/gnomargery.lua | 156 +- data-otservbr-global/npc/gnomaticus.lua | 8 +- data-otservbr-global/npc/gnombold.lua | 155 +- data-otservbr-global/npc/gnome.lua | 4 +- data-otservbr-global/npc/gnome_trooper.lua | 8 +- data-otservbr-global/npc/gnomegica.lua | 9 +- data-otservbr-global/npc/gnomejam.lua | 9 +- data-otservbr-global/npc/gnomelvis.lua | 11 +- data-otservbr-global/npc/gnomenursey.lua | 4 +- data-otservbr-global/npc/gnomeral.lua | 26 +- data-otservbr-global/npc/gnomercy.lua | 28 +- data-otservbr-global/npc/gnomerik.lua | 39 +- data-otservbr-global/npc/gnomerrow.lua | 9 +- data-otservbr-global/npc/gnomespector.lua | 8 +- data-otservbr-global/npc/gnomette.lua | 9 +- data-otservbr-global/npc/gnomewart.lua | 8 +- data-otservbr-global/npc/gnomfurry.lua | 9 +- data-otservbr-global/npc/gnomillion.lua | 6 +- data-otservbr-global/npc/gnomilly.lua | 156 +- data-otservbr-global/npc/gnomincia.lua | 9 +- data-otservbr-global/npc/gnominer.lua | 10 +- data-otservbr-global/npc/gnominus.lua | 32 +- .../npc/gnomish_operative_cathing.lua | 10 +- .../npc/gnomish_operative_gt-m-01.lua | 10 +- .../npc/gnomish_operative_raiders.lua | 10 +- .../npc/gnomish_operative_resonating.lua | 10 +- .../npc/gnomish_operative_volcano.lua | 10 +- data-otservbr-global/npc/gnomission.lua | 32 +- data-otservbr-global/npc/gnommander.lua | 84 +- data-otservbr-global/npc/gnomole.lua | 28 +- data-otservbr-global/npc/gnomus.lua | 100 +- data-otservbr-global/npc/gnomux.lua | 15 +- data-otservbr-global/npc/golem_guardian.lua | 4 +- data-otservbr-global/npc/gordon.lua | 4 +- data-otservbr-global/npc/gorn.lua | 55 +- data-otservbr-global/npc/graham.lua | 4 +- data-otservbr-global/npc/graubart.lua | 24 +- data-otservbr-global/npc/gree_dee.lua | 9 +- data-otservbr-global/npc/gregor.lua | 435 +- data-otservbr-global/npc/grizzly_adams.lua | 231 +- data-otservbr-global/npc/grodrik.lua | 4 +- data-otservbr-global/npc/grof_the_guard.lua | 6 +- data-otservbr-global/npc/grombur.lua | 5 +- data-otservbr-global/npc/grubokk.lua | 4 +- data-otservbr-global/npc/grumpy_stone.lua | 4 +- data-otservbr-global/npc/guard_bazaya.lua | 4 +- data-otservbr-global/npc/guard_inurta.lua | 4 +- data-otservbr-global/npc/guard_saros.lua | 6 +- data-otservbr-global/npc/guard_senet.lua | 4 +- .../npc/guardian_of_the_deep_seas.lua | 4 +- data-otservbr-global/npc/guide_alexena.lua | 32 +- data-otservbr-global/npc/guide_behil.lua | 30 +- data-otservbr-global/npc/guide_davina.lua | 30 +- data-otservbr-global/npc/guide_edna.lua | 24 +- data-otservbr-global/npc/guide_elena.lua | 32 +- data-otservbr-global/npc/guide_jonathan.lua | 28 +- data-otservbr-global/npc/guide_kroak.lua | 4 +- data-otservbr-global/npc/guide_kunibert.lua | 28 +- data-otservbr-global/npc/guide_luke.lua | 30 +- data-otservbr-global/npc/guide_meruka.lua | 4 +- data-otservbr-global/npc/guide_rahlkora.lua | 32 +- data-otservbr-global/npc/guide_thelandil.lua | 26 +- data-otservbr-global/npc/guide_tiko.lua | 32 +- data-otservbr-global/npc/gundralph.lua | 6 +- data-otservbr-global/npc/gurbasch.lua | 60 +- data-otservbr-global/npc/h.l..lua | 9 +- data-otservbr-global/npc/haani.lua | 9 +- data-otservbr-global/npc/habdel.lua | 45 +- data-otservbr-global/npc/hagor.lua | 4 +- data-otservbr-global/npc/hairycles.lua | 336 +- data-otservbr-global/npc/hal.lua | 18 +- data-otservbr-global/npc/halif.lua | 9 +- data-otservbr-global/npc/halvar.lua | 46 +- data-otservbr-global/npc/hamilton.lua | 4 +- data-otservbr-global/npc/hamish.lua | 182 +- data-otservbr-global/npc/hanna.lua | 41 +- data-otservbr-global/npc/hardek.lua | 13 +- .../npc/harkath_bloodblade.lua | 4 +- data-otservbr-global/npc/harlow.lua | 25 +- data-otservbr-global/npc/harlow_trade.lua | 5 +- data-otservbr-global/npc/harlow_vengoth.lua | 10 +- data-otservbr-global/npc/harog.lua | 13 +- data-otservbr-global/npc/haroun.lua | 35 +- data-otservbr-global/npc/harsky.lua | 20 +- data-otservbr-global/npc/hawkyr.lua | 4 +- .../npc/heavenly_messenger.lua | 4 +- data-otservbr-global/npc/helor.lua | 4 +- data-otservbr-global/npc/hemor_the_guard.lua | 4 +- data-otservbr-global/npc/henricus.lua | 133 +- data-otservbr-global/npc/herbert.lua | 21 +- data-otservbr-global/npc/hexel.lua | 4 +- data-otservbr-global/npc/hireling.lua | 51 +- data-otservbr-global/npc/hjaern.lua | 42 +- data-otservbr-global/npc/hofech.lua | 9 +- data-otservbr-global/npc/hoggle.lua | 6 +- data-otservbr-global/npc/hugo.lua | 94 +- data-otservbr-global/npc/humgolf.lua | 38 +- data-otservbr-global/npc/humnog_the_guard.lua | 4 +- data-otservbr-global/npc/humphrey.lua | 98 +- data-otservbr-global/npc/huntsman.lua | 11 +- data-otservbr-global/npc/hyacinth.lua | 284 +- data-otservbr-global/npc/ikassis.lua | 8 +- data-otservbr-global/npc/imalas.lua | 11 +- .../npc/imbuement_assistant.lua | 13 +- data-otservbr-global/npc/imbul.lua | 16 +- data-otservbr-global/npc/inigo.lua | 646 +- data-otservbr-global/npc/inkaef.lua | 27 +- data-otservbr-global/npc/iptar-sin.lua | 197 +- data-otservbr-global/npc/irea.lua | 9 +- data-otservbr-global/npc/iriana.lua | 9 +- data-otservbr-global/npc/irmana.lua | 73 +- data-otservbr-global/npc/irvin.lua | 4 +- data-otservbr-global/npc/ishebad.lua | 16 +- data-otservbr-global/npc/ishina.lua | 50 +- data-otservbr-global/npc/isika.lua | 9 +- data-otservbr-global/npc/isimov.lua | 175 +- data-otservbr-global/npc/iskan.lua | 11 +- data-otservbr-global/npc/isolde.lua | 4 +- data-otservbr-global/npc/ivalisse.lua | 26 +- data-otservbr-global/npc/iwan.lua | 11 +- data-otservbr-global/npc/iwar.lua | 11 +- data-otservbr-global/npc/iyad.lua | 76 +- data-otservbr-global/npc/izsh.lua | 32 +- data-otservbr-global/npc/jack.lua | 132 +- data-otservbr-global/npc/jack_drone.lua | 16 +- data-otservbr-global/npc/jack_fate.lua | 66 +- data-otservbr-global/npc/jack_fate_goroma.lua | 28 +- data-otservbr-global/npc/jack_springer.lua | 14 +- data-otservbr-global/npc/jack_the_worker.lua | 4 +- data-otservbr-global/npc/jacob.lua | 22 +- data-otservbr-global/npc/jagran.lua | 4 +- data-otservbr-global/npc/jakahr.lua | 9 +- data-otservbr-global/npc/james.lua | 9 +- data-otservbr-global/npc/jamesfrancis.lua | 15 +- data-otservbr-global/npc/janz.lua | 9 +- data-otservbr-global/npc/jason.lua | 4 +- data-otservbr-global/npc/jean_claude.lua | 4 +- data-otservbr-global/npc/jean_pierre.lua | 62 +- data-otservbr-global/npc/jefrey.lua | 6 +- data-otservbr-global/npc/jerom.lua | 10 +- data-otservbr-global/npc/jeronimo.lua | 18 +- data-otservbr-global/npc/jessica.lua | 11 +- data-otservbr-global/npc/jezzara.lua | 11 +- data-otservbr-global/npc/jimbin.lua | 4 +- data-otservbr-global/npc/jimmy.lua | 4 +- data-otservbr-global/npc/john.lua | 9 +- data-otservbr-global/npc/jondrin.lua | 8 +- data-otservbr-global/npc/jorge.lua | 11 +- data-otservbr-global/npc/jossel.lua | 4 +- data-otservbr-global/npc/julian.lua | 9 +- data-otservbr-global/npc/julius.lua | 24 +- data-otservbr-global/npc/junkar_mines.lua | 22 +- data-otservbr-global/npc/junkar_robsons.lua | 22 +- data-otservbr-global/npc/junkar_thais.lua | 22 +- data-otservbr-global/npc/kais.lua | 98 +- data-otservbr-global/npc/kallimae.lua | 9 +- data-otservbr-global/npc/kalvin.lua | 4 +- data-otservbr-global/npc/karith.lua | 58 +- data-otservbr-global/npc/karl.lua | 24 +- data-otservbr-global/npc/kasmir.lua | 175 +- data-otservbr-global/npc/kawill.lua | 76 +- data-otservbr-global/npc/kaya.lua | 6 +- data-otservbr-global/npc/kazzan.lua | 24 +- data-otservbr-global/npc/kendra.lua | 34 +- data-otservbr-global/npc/kendra_thais.lua | 36 +- data-otservbr-global/npc/kepar.lua | 6 +- data-otservbr-global/npc/kevin.lua | 6 +- data-otservbr-global/npc/khanna.lua | 27 +- data-otservbr-global/npc/kihil_the_guard.lua | 4 +- data-otservbr-global/npc/king_tibianus.lua | 328 +- data-otservbr-global/npc/kjesse.lua | 145 +- data-otservbr-global/npc/klaus.lua | 19 +- data-otservbr-global/npc/klesar.lua | 4 +- data-otservbr-global/npc/klom_stonecutter.lua | 77 +- data-otservbr-global/npc/knight_hykrion.lua | 4 +- data-otservbr-global/npc/kromrek.lua | 4 +- data-otservbr-global/npc/kroox.lua | 11 +- data-otservbr-global/npc/kulag_the_guard.lua | 6 +- data-otservbr-global/npc/lailene.lua | 11 +- data-otservbr-global/npc/lardoc_bashsmite.lua | 62 +- data-otservbr-global/npc/larek.lua | 9 +- .../npc/larfion_the_shaman.lua | 4 +- data-otservbr-global/npc/lavirias.lua | 4 +- data-otservbr-global/npc/lazaran.lua | 14 +- data-otservbr-global/npc/lea.lua | 16 +- data-otservbr-global/npc/lector.lua | 11 +- data-otservbr-global/npc/lee_delle.lua | 188 +- data-otservbr-global/npc/leeland.lua | 43 +- data-otservbr-global/npc/legola.lua | 64 +- .../npc/lesser_messenger_of_heaven.lua | 4 +- data-otservbr-global/npc/liane.lua | 19 +- data-otservbr-global/npc/lightfoot.lua | 4 +- data-otservbr-global/npc/lily.lua | 340 +- data-otservbr-global/npc/lisander.lua | 8 +- data-otservbr-global/npc/livielle.lua | 9 +- .../npc/lizard_tunnel_guard.lua | 4 +- data-otservbr-global/npc/llathriel.lua | 4 +- data-otservbr-global/npc/lokur.lua | 6 +- data-otservbr-global/npc/lora.lua | 4 +- data-otservbr-global/npc/lorbas.lua | 24 +- data-otservbr-global/npc/lorek.lua | 32 +- data-otservbr-global/npc/loria.lua | 4 +- data-otservbr-global/npc/lorietta.lua | 145 +- data-otservbr-global/npc/lothar.lua | 94 +- data-otservbr-global/npc/lou_toose.lua | 4 +- data-otservbr-global/npc/loui.lua | 109 +- data-otservbr-global/npc/lubo.lua | 66 +- data-otservbr-global/npc/lucius.lua | 4 +- data-otservbr-global/npc/lugri.lua | 13 +- data-otservbr-global/npc/lukosch.lua | 14 +- data-otservbr-global/npc/luna.lua | 13 +- data-otservbr-global/npc/lunch.lua | 4 +- data-otservbr-global/npc/lungelen.lua | 4 +- data-otservbr-global/npc/lurik.lua | 21 +- data-otservbr-global/npc/lynda.lua | 77 +- data-otservbr-global/npc/lyonel.lua | 9 +- data-otservbr-global/npc/maealil.lua | 173 +- data-otservbr-global/npc/maelyrra.lua | 67 +- data-otservbr-global/npc/maeryn.lua | 90 +- data-otservbr-global/npc/malor.lua | 66 +- data-otservbr-global/npc/malunga.lua | 11 +- data-otservbr-global/npc/marcus.lua | 4 +- data-otservbr-global/npc/maria.lua | 9 +- data-otservbr-global/npc/marina.lua | 14 +- data-otservbr-global/npc/maris.lua | 22 +- data-otservbr-global/npc/maris_fenrock.lua | 24 +- data-otservbr-global/npc/maris_mistrock.lua | 47 +- data-otservbr-global/npc/maritima.lua | 10 +- data-otservbr-global/npc/markwin.lua | 17 +- data-otservbr-global/npc/marlene.lua | 52 +- data-otservbr-global/npc/maro.lua | 9 +- data-otservbr-global/npc/marvik.lua | 4 +- data-otservbr-global/npc/marvin.lua | 32 +- data-otservbr-global/npc/maryza.lua | 28 +- data-otservbr-global/npc/maun.lua | 9 +- data-otservbr-global/npc/mazarius.lua | 8 +- data-otservbr-global/npc/mehkesh.lua | 11 +- data-otservbr-global/npc/melchior.lua | 20 +- data-otservbr-global/npc/melfar.lua | 31 +- data-otservbr-global/npc/melian.lua | 72 +- data-otservbr-global/npc/memech.lua | 11 +- data-otservbr-global/npc/menacing_mummy.lua | 4 +- data-otservbr-global/npc/menesto.lua | 30 +- data-otservbr-global/npc/meraya.lua | 4 +- .../npc/messenger_of_heaven.lua | 4 +- .../npc/messenger_of_santa.lua | 9 +- data-otservbr-global/npc/miles_the_guard.lua | 6 +- data-otservbr-global/npc/milos.lua | 6 +- data-otservbr-global/npc/mirabell.lua | 44 +- data-otservbr-global/npc/miraia.lua | 101 +- data-otservbr-global/npc/moe.lua | 122 +- data-otservbr-global/npc/morax.lua | 4 +- data-otservbr-global/npc/mordecai.lua | 9 +- data-otservbr-global/npc/morgan.lua | 78 +- data-otservbr-global/npc/morpel.lua | 9 +- data-otservbr-global/npc/mortimer.lua | 228 +- data-otservbr-global/npc/mortis.lua | 4 +- data-otservbr-global/npc/morun.lua | 4 +- data-otservbr-global/npc/mother_of_jack.lua | 36 +- data-otservbr-global/npc/mr._west.lua | 16 +- data-otservbr-global/npc/mr_brandon.lua | 8 +- data-otservbr-global/npc/mr_morris.lua | 401 +- data-otservbr-global/npc/mugluf.lua | 9 +- data-otservbr-global/npc/mugruu.lua | 9 +- data-otservbr-global/npc/muhad.lua | 30 +- data-otservbr-global/npc/muriel.lua | 43 +- data-otservbr-global/npc/murim.lua | 8 +- data-otservbr-global/npc/muzir.lua | 6 +- data-otservbr-global/npc/myra.lua | 159 +- .../npc/mysterious_ornate_chest.lua | 4 +- data-otservbr-global/npc/nah_bob.lua | 33 +- data-otservbr-global/npc/naji.lua | 6 +- data-otservbr-global/npc/narsai.lua | 9 +- data-otservbr-global/npc/navigator.lua | 133 +- data-otservbr-global/npc/neill.lua | 4 +- data-otservbr-global/npc/nelliem.lua | 9 +- data-otservbr-global/npc/nelly.lua | 9 +- data-otservbr-global/npc/nemal.lua | 4 +- data-otservbr-global/npc/nezil.lua | 9 +- data-otservbr-global/npc/nibble.lua | 4 +- data-otservbr-global/npc/nicholas.lua | 9 +- data-otservbr-global/npc/nielson.lua | 80 +- data-otservbr-global/npc/nienna.lua | 9 +- data-otservbr-global/npc/nilsor.lua | 12 +- data-otservbr-global/npc/nina.lua | 18 +- data-otservbr-global/npc/ninev.lua | 197 +- data-otservbr-global/npc/ninos.lua | 15 +- data-otservbr-global/npc/nipuna.lua | 9 +- data-otservbr-global/npc/nokmir.lua | 7 +- data-otservbr-global/npc/nomad.lua | 98 +- data-otservbr-global/npc/noodles.lua | 14 +- data-otservbr-global/npc/noozer.lua | 13 +- data-otservbr-global/npc/nor.lua | 4 +- data-otservbr-global/npc/norbert.lua | 9 +- data-otservbr-global/npc/norf.lua | 92 +- data-otservbr-global/npc/norma.lua | 156 +- .../npc/norman_the_foreman.lua | 4 +- data-otservbr-global/npc/normod.lua | 4 +- data-otservbr-global/npc/norris.lua | 4 +- data-otservbr-global/npc/nurik.lua | 26 +- data-otservbr-global/npc/nydala.lua | 15 +- .../npc/nymph_challenging.lua | 4 +- data-otservbr-global/npc/oberon's_bile.lua | 4 +- data-otservbr-global/npc/oberon's_hate.lua | 4 +- data-otservbr-global/npc/oberon's_ire.lua | 4 +- data-otservbr-global/npc/oberon's_spite.lua | 4 +- data-otservbr-global/npc/obi.lua | 154 +- data-otservbr-global/npc/oblivion.lua | 30 +- data-otservbr-global/npc/ocelus.lua | 6 +- data-otservbr-global/npc/odemara.lua | 9 +- data-otservbr-global/npc/oiriz.lua | 9 +- data-otservbr-global/npc/old_adall.lua | 16 +- data-otservbr-global/npc/old_rock_boy.lua | 4 +- data-otservbr-global/npc/oldrak.lua | 12 +- data-otservbr-global/npc/oliver.lua | 18 +- data-otservbr-global/npc/olrik.lua | 9 +- data-otservbr-global/npc/omrabas.lua | 117 +- data-otservbr-global/npc/omur.lua | 9 +- data-otservbr-global/npc/one_eyed_joe.lua | 22 +- data-otservbr-global/npc/ongulf.lua | 211 +- data-otservbr-global/npc/orc_berserker.lua | 4 +- data-otservbr-global/npc/oressa.lua | 271 +- data-otservbr-global/npc/ormuhn.lua | 380 +- data-otservbr-global/npc/orockle.lua | 9 +- data-otservbr-global/npc/ortheus.lua | 8 +- data-otservbr-global/npc/oswald.lua | 85 +- data-otservbr-global/npc/ottokar.lua | 18 +- data-otservbr-global/npc/padreia.lua | 35 +- data-otservbr-global/npc/paladin_narai.lua | 4 +- data-otservbr-global/npc/palimuth.lua | 40 +- data-otservbr-global/npc/palomino.lua | 34 +- data-otservbr-global/npc/paolo.lua | 4 +- data-otservbr-global/npc/parlan.lua | 4 +- data-otservbr-global/npc/partos.lua | 32 +- data-otservbr-global/npc/pat_the_worker.lua | 4 +- data-otservbr-global/npc/paulie.lua | 6 +- data-otservbr-global/npc/peaceful_pooka.lua | 4 +- data-otservbr-global/npc/peggy.lua | 9 +- data-otservbr-global/npc/pemaret.lua | 31 +- data-otservbr-global/npc/penny.lua | 25 +- data-otservbr-global/npc/perac.lua | 9 +- data-otservbr-global/npc/percy_silverhand.lua | 4 +- data-otservbr-global/npc/percybald.lua | 58 +- data-otservbr-global/npc/peremin.lua | 4 +- data-otservbr-global/npc/perod.lua | 11 +- data-otservbr-global/npc/peter.lua | 18 +- data-otservbr-global/npc/petros.lua | 42 +- data-otservbr-global/npc/phillip.lua | 54 +- data-otservbr-global/npc/pig.lua | 10 +- data-otservbr-global/npc/pino.lua | 42 +- data-otservbr-global/npc/plunderpurse.lua | 287 +- data-otservbr-global/npc/polly.lua | 4 +- data-otservbr-global/npc/pompan.lua | 13 +- data-otservbr-global/npc/prezil.lua | 145 +- data-otservbr-global/npc/prisoner.lua | 6 +- data-otservbr-global/npc/puffels.lua | 390 +- data-otservbr-global/npc/pugwah.lua | 9 +- data-otservbr-global/npc/pukosch.lua | 14 +- data-otservbr-global/npc/pydar.lua | 88 +- data-otservbr-global/npc/pyro_peter.lua | 4 +- data-otservbr-global/npc/pyromental.lua | 4 +- .../npc/pythius_the_rotten.lua | 21 +- data-otservbr-global/npc/quandons_ghost.lua | 4 +- data-otservbr-global/npc/queen_eloise.lua | 163 +- data-otservbr-global/npc/quentin.lua | 197 +- data-otservbr-global/npc/quero.lua | 9 +- data-otservbr-global/npc/rabaz.lua | 13 +- data-otservbr-global/npc/rachel.lua | 28 +- data-otservbr-global/npc/raffael.lua | 6 +- data-otservbr-global/npc/rafzan.lua | 50 +- data-otservbr-global/npc/rahkem.lua | 169 +- data-otservbr-global/npc/ramina.lua | 9 +- data-otservbr-global/npc/rapanaio.lua | 8 +- data-otservbr-global/npc/rapanaio_boat.lua | 24 +- .../npc/rapanaio_isle_of_evil.lua | 24 +- data-otservbr-global/npc/rashid.lua | 105 +- data-otservbr-global/npc/rashid_custom.lua | 105 +- data-otservbr-global/npc/rata_mari.lua | 30 +- data-otservbr-global/npc/ray.lua | 9 +- data-otservbr-global/npc/raymond_striker.lua | 60 +- data-otservbr-global/npc/razan.lua | 83 +- data-otservbr-global/npc/rebel.lua | 4 +- data-otservbr-global/npc/red_lilly.lua | 78 +- data-otservbr-global/npc/redward.lua | 9 +- data-otservbr-global/npc/reed.lua | 18 +- data-otservbr-global/npc/rehon.lua | 4 +- data-otservbr-global/npc/repenter.lua | 4 +- data-otservbr-global/npc/richard.lua | 168 +- data-otservbr-global/npc/riddler.lua | 45 +- data-otservbr-global/npc/robert.lua | 9 +- data-otservbr-global/npc/robin.lua | 4 +- data-otservbr-global/npc/robson.lua | 30 +- .../npc/rock_in_a_hard_place.lua | 9 +- data-otservbr-global/npc/rock_steady.lua | 33 +- .../npc/rock_with_a_soft_spot.lua | 145 +- data-otservbr-global/npc/roderick.lua | 4 +- data-otservbr-global/npc/rodney.lua | 9 +- data-otservbr-global/npc/roger_the_worker.lua | 4 +- data-otservbr-global/npc/rokyn.lua | 6 +- data-otservbr-global/npc/romella.lua | 37 +- data-otservbr-global/npc/romir.lua | 9 +- data-otservbr-global/npc/rose.lua | 9 +- data-otservbr-global/npc/rosemarie.lua | 4 +- data-otservbr-global/npc/ross.lua | 4 +- data-otservbr-global/npc/roswitha.lua | 8 +- data-otservbr-global/npc/rotem_valos.lua | 6 +- data-otservbr-global/npc/rottin_wood.lua | 127 +- data-otservbr-global/npc/roughington.lua | 4 +- data-otservbr-global/npc/rowenna.lua | 11 +- data-otservbr-global/npc/rudolph.lua | 9 +- .../npc/runtel_blackspark.lua | 9 +- data-otservbr-global/npc/ruprecht.lua | 17 +- data-otservbr-global/npc/saideh.lua | 6 +- data-otservbr-global/npc/salbra.lua | 4 +- data-otservbr-global/npc/sam.lua | 52 +- data-otservbr-global/npc/samir.lua | 4 +- data-otservbr-global/npc/sandomo.lua | 12 +- data-otservbr-global/npc/sandra.lua | 70 +- data-otservbr-global/npc/sane_mage.lua | 38 +- data-otservbr-global/npc/santa_claus.lua | 27 +- data-otservbr-global/npc/santiago.lua | 15 +- data-otservbr-global/npc/sarina.lua | 11 +- data-otservbr-global/npc/satsu.lua | 9 +- data-otservbr-global/npc/scott.lua | 11 +- data-otservbr-global/npc/scott_the_scout.lua | 4 +- data-otservbr-global/npc/scrutinon.lua | 36 +- data-otservbr-global/npc/scutty.lua | 4 +- data-otservbr-global/npc/sebastian.lua | 86 +- data-otservbr-global/npc/sebastian_nargor.lua | 20 +- data-otservbr-global/npc/ser_tybald.lua | 521 +- data-otservbr-global/npc/serafin.lua | 13 +- data-otservbr-global/npc/servant_sentry.lua | 18 +- data-otservbr-global/npc/sessek.lua | 9 +- data-otservbr-global/npc/seymour.lua | 345 +- data-otservbr-global/npc/shadowpunch.lua | 4 +- data-otservbr-global/npc/shalmar.lua | 4 +- data-otservbr-global/npc/shanar.lua | 13 +- data-otservbr-global/npc/shanoya.lua | 4 +- data-otservbr-global/npc/sharon.lua | 4 +- data-otservbr-global/npc/shauna.lua | 79 +- data-otservbr-global/npc/sherry_mcronald.lua | 11 +- data-otservbr-global/npc/shiantis.lua | 11 +- data-otservbr-global/npc/shimun.lua | 9 +- data-otservbr-global/npc/shiriel.lua | 9 +- data-otservbr-global/npc/shirith.lua | 4 +- data-otservbr-global/npc/shoddy_beggar.lua | 75 +- data-otservbr-global/npc/sholley.lua | 8 +- .../npc/shortsighted_dwarf.lua | 4 +- data-otservbr-global/npc/siestaar.lua | 6 +- data-otservbr-global/npc/siflind.lua | 11 +- data-otservbr-global/npc/sigurd.lua | 9 +- data-otservbr-global/npc/silas.lua | 9 +- data-otservbr-global/npc/simon_the_beggar.lua | 124 +- data-otservbr-global/npc/sinatuki.lua | 8 +- data-otservbr-global/npc/sinclair.lua | 43 +- data-otservbr-global/npc/sirik.lua | 4 +- data-otservbr-global/npc/sissek.lua | 6 +- data-otservbr-global/npc/sister_of_jack.lua | 47 +- data-otservbr-global/npc/skeleton_guard.lua | 4 +- data-otservbr-global/npc/skip.lua | 4 +- data-otservbr-global/npc/skjaar.lua | 34 +- data-otservbr-global/npc/smiley.lua | 4 +- data-otservbr-global/npc/snake_eye.lua | 17 +- data-otservbr-global/npc/soilance.lua | 9 +- .../npc/sorcerer_estrella.lua | 4 +- data-otservbr-global/npc/spectulus.lua | 586 +- data-otservbr-global/npc/stan.lua | 9 +- data-otservbr-global/npc/storkus.lua | 58 +- data-otservbr-global/npc/strange_pipe.lua | 31 +- data-otservbr-global/npc/strange_pipe1.lua | 31 +- data-otservbr-global/npc/strange_pipe2.lua | 31 +- data-otservbr-global/npc/strange_pipe3.lua | 31 +- data-otservbr-global/npc/stricken_soul.lua | 6 +- data-otservbr-global/npc/stutch.lua | 20 +- data-otservbr-global/npc/sundara.lua | 9 +- data-otservbr-global/npc/suzy.lua | 6 +- data-otservbr-global/npc/sven.lua | 18 +- data-otservbr-global/npc/svenson.lua | 22 +- data-otservbr-global/npc/swolt.lua | 9 +- data-otservbr-global/npc/sylvester.lua | 4 +- data-otservbr-global/npc/taegen.lua | 48 +- data-otservbr-global/npc/talesia.lua | 4 +- data-otservbr-global/npc/talila.lua | 17 +- data-otservbr-global/npc/talphion.lua | 9 +- data-otservbr-global/npc/tamara.lua | 4 +- data-otservbr-global/npc/tamed_lion.lua | 4 +- data-otservbr-global/npc/tamerin.lua | 6 +- data-otservbr-global/npc/tamoril.lua | 29 +- data-otservbr-global/npc/tanaro.lua | 9 +- data-otservbr-global/npc/tandros.lua | 9 +- data-otservbr-global/npc/tanyt.lua | 66 +- data-otservbr-global/npc/tarak_inner.lua | 4 +- data-otservbr-global/npc/tarak_sunken.lua | 4 +- data-otservbr-global/npc/tarun.lua | 9 +- data-otservbr-global/npc/tefrit.lua | 9 +- data-otservbr-global/npc/tehlim.lua | 4 +- data-otservbr-global/npc/telas.lua | 46 +- data-otservbr-global/npc/telas_golem.lua | 6 +- data-otservbr-global/npc/tereban.lua | 4 +- .../npc/tereban_functions.lua | 178 +- data-otservbr-global/npc/terrence.lua | 6 +- data-otservbr-global/npc/tesha.lua | 11 +- .../npc/testserver_assistant.lua | 23 +- data-otservbr-global/npc/tezila.lua | 9 +- data-otservbr-global/npc/thanita.lua | 4 +- data-otservbr-global/npc/the_beggar_king.lua | 20 +- .../npc/the_blind_prophet.lua | 33 +- data-otservbr-global/npc/the_bone_master.lua | 16 +- data-otservbr-global/npc/the_crone.lua | 6 +- data-otservbr-global/npc/the_destiny_seer.lua | 4 +- data-otservbr-global/npc/the_dream_master.lua | 14 +- data-otservbr-global/npc/the_empress.lua | 27 +- data-otservbr-global/npc/the_first_dragon.lua | 68 +- data-otservbr-global/npc/the_gate_keeper.lua | 4 +- data-otservbr-global/npc/the_librarian.lua | 41 +- data-otservbr-global/npc/the_lootmonger.lua | 7 +- data-otservbr-global/npc/the_oracle.lua | 18 +- data-otservbr-global/npc/the_orc_king.lua | 78 +- .../npc/the_queen_of_the_banshees.lua | 190 +- .../npc/theodore_loveless.lua | 18 +- data-otservbr-global/npc/thomas.lua | 9 +- data-otservbr-global/npc/thorgrin.lua | 20 +- data-otservbr-global/npc/thorwulf.lua | 396 +- data-otservbr-global/npc/tibra.lua | 150 +- data-otservbr-global/npc/tigo.lua | 13 +- data-otservbr-global/npc/tim_the_guard.lua | 6 +- data-otservbr-global/npc/timothy.lua | 12 +- data-otservbr-global/npc/timur.lua | 13 +- data-otservbr-global/npc/tired_tree.lua | 4 +- data-otservbr-global/npc/todd.lua | 37 +- data-otservbr-global/npc/tokel.lua | 9 +- data-otservbr-global/npc/tom.lua | 220 +- data-otservbr-global/npc/tomruk_the_ruddy.lua | 36 +- data-otservbr-global/npc/tony.lua | 8 +- data-otservbr-global/npc/tooth_fairy.lua | 4 +- data-otservbr-global/npc/toothless_tim.lua | 4 +- data-otservbr-global/npc/topsy.lua | 20 +- data-otservbr-global/npc/torence.lua | 4 +- data-otservbr-global/npc/tothdral.lua | 9 +- data-otservbr-global/npc/towncryer.lua | 16 +- data-otservbr-global/npc/trimegis.lua | 4 +- data-otservbr-global/npc/trisha.lua | 158 +- data-otservbr-global/npc/tristan.lua | 380 +- data-otservbr-global/npc/tulf.lua | 4 +- data-otservbr-global/npc/turvy.lua | 11 +- data-otservbr-global/npc/tylius.lua | 4 +- data-otservbr-global/npc/tyrias.lua | 182 +- data-otservbr-global/npc/ubaid.lua | 75 +- data-otservbr-global/npc/ukea.lua | 9 +- data-otservbr-global/npc/ula.lua | 4 +- data-otservbr-global/npc/ulala.lua | 12 +- data-otservbr-global/npc/ulrik.lua | 9 +- data-otservbr-global/npc/umar.lua | 63 +- data-otservbr-global/npc/uncle.lua | 100 +- data-otservbr-global/npc/undal.lua | 4 +- data-otservbr-global/npc/urkalio.lua | 9 +- data-otservbr-global/npc/urks_the_mute.lua | 32 +- data-otservbr-global/npc/ursula.lua | 4 +- data-otservbr-global/npc/uso.lua | 380 +- data-otservbr-global/npc/ustan.lua | 10 +- data-otservbr-global/npc/uzgod.lua | 45 +- data-otservbr-global/npc/uzon.lua | 86 +- data-otservbr-global/npc/vad_inchi.lua | 4 +- data-otservbr-global/npc/valentina.lua | 13 +- data-otservbr-global/npc/valindara.lua | 17 +- data-otservbr-global/npc/vanys.lua | 4 +- data-otservbr-global/npc/vascalir.lua | 1188 ++- data-otservbr-global/npc/velvet.lua | 9 +- data-otservbr-global/npc/vera.lua | 11 +- data-otservbr-global/npc/vescu.lua | 113 +- data-otservbr-global/npc/victor.lua | 9 +- data-otservbr-global/npc/vigintius.lua | 4 +- data-otservbr-global/npc/vincent.lua | 9 +- data-otservbr-global/npc/virgil.lua | 6 +- data-otservbr-global/npc/vladruc.lua | 4 +- data-otservbr-global/npc/vulturenose.lua | 22 +- data-otservbr-global/npc/vuzrog.lua | 4 +- data-otservbr-global/npc/wally.lua | 9 +- data-otservbr-global/npc/walter_jaeger.lua | 86 +- data-otservbr-global/npc/walter_the_guard.lua | 20 +- data-otservbr-global/npc/warbert.lua | 4 +- data-otservbr-global/npc/weaponmaster.lua | 4 +- data-otservbr-global/npc/wentworth.lua | 126 +- data-otservbr-global/npc/wesley.lua | 4 +- data-otservbr-global/npc/willard.lua | 13 +- data-otservbr-global/npc/willem.lua | 4 +- data-otservbr-global/npc/william.lua | 4 +- data-otservbr-global/npc/willie.lua | 480 +- data-otservbr-global/npc/willow.lua | 4 +- data-otservbr-global/npc/woblin.lua | 60 +- data-otservbr-global/npc/wyat.lua | 4 +- data-otservbr-global/npc/wyda.lua | 42 +- data-otservbr-global/npc/wyrdin.lua | 84 +- data-otservbr-global/npc/xed.lua | 9 +- data-otservbr-global/npc/xelvar.lua | 17 +- data-otservbr-global/npc/xodet.lua | 27 +- data-otservbr-global/npc/xorlosh.lua | 7 +- data-otservbr-global/npc/yalahari.lua | 38 +- data-otservbr-global/npc/yaman.lua | 50 +- data-otservbr-global/npc/yana.lua | 81 +- data-otservbr-global/npc/yanni.lua | 9 +- data-otservbr-global/npc/yasir.lua | 9 +- data-otservbr-global/npc/yawno.lua | 4 +- data-otservbr-global/npc/yberius.lua | 175 +- data-otservbr-global/npc/yoem.lua | 13 +- data-otservbr-global/npc/yonan.lua | 14 +- data-otservbr-global/npc/yulas.lua | 9 +- data-otservbr-global/npc/zaidal.lua | 9 +- data-otservbr-global/npc/zalamon.lua | 79 +- data-otservbr-global/npc/zarak.lua | 388 +- data-otservbr-global/npc/zarifan.lua | 20 +- data-otservbr-global/npc/zebron.lua | 46 +- .../npc/zedrulon_the_fallen.lua | 145 +- data-otservbr-global/npc/zerbrus.lua | 275 +- data-otservbr-global/npc/zeronex.lua | 4 +- data-otservbr-global/npc/zethra.lua | 14 +- data-otservbr-global/npc/zirella.lua | 15 +- data-otservbr-global/npc/zirkon.lua | 4 +- data-otservbr-global/npc/ziyad.lua | 66 +- data-otservbr-global/npc/zizzle.lua | 12 +- data-otservbr-global/npc/zlak.lua | 15 +- data-otservbr-global/npc/znozel.lua | 6 +- data-otservbr-global/npc/zoltan.lua | 76 +- data-otservbr-global/npc/zora.lua | 11 +- data-otservbr-global/npc/ztiss.lua | 13 +- data-otservbr-global/npc/zuma_magehide.lua | 9 +- data-otservbr-global/npc/zumtah.lua | 17 +- data-otservbr-global/npc/zurak.lua | 8 +- data-otservbr-global/npc/zurak_arena.lua | 8 +- .../scripts/actions/addons/addons.lua | 20 +- .../actions/addons/afflicted_outfit.lua | 6 +- .../adventurers_guild/adventurers_stone.lua | 6 +- .../scripts/actions/arena_pvp/arena_10x10.lua | 2 +- .../scripts/actions/arena_pvp/arena_2x2.lua | 7 +- .../scripts/actions/dawnport/lever.lua | 2 +- .../actions/dawnport/vocation_door.lua | 13 +- .../scripts/actions/falcons/falcon_shield.lua | 2 +- .../scripts/actions/farmine/boat.lua | 2 +- .../actions/kazordoon/elevator_lever.lua | 2 +- .../scripts/actions/kazordoon/ore_wagons.lua | 4 +- .../scripts/actions/kazordoon/stone.lua | 2 +- .../scripts/actions/mounts/mounts.lua | 94 +- .../scripts/actions/mounts/music_box.lua | 26 +- .../actions/object/imbuement_shrine.lua | 2 +- .../scripts/actions/object/rope_down.lua | 4 +- .../other/anniversary_reward_boxes.lua | 8 +- .../scripts/actions/other/bag_you_covet.lua | 4 +- .../scripts/actions/other/bag_you_desire.lua | 4 +- .../scripts/actions/other/balloons.lua | 2 +- .../actions/other/bed_modification_kits.lua | 2 +- .../scripts/actions/other/blueberry_bush.lua | 2 +- .../scripts/actions/other/cask_kegs.lua | 2 +- .../scripts/actions/other/clay_lump.lua | 14 +- .../actions/other/construction_kits.lua | 16 +- .../scripts/actions/other/costume_bags.lua | 12 +- .../scripts/actions/other/cup_cakes.lua | 10 +- .../actions/other/cup_of_molten_gold.lua | 2 +- .../scripts/actions/other/destroy.lua | 4 +- .../scripts/actions/other/dolls.lua | 18 +- .../scripts/actions/other/dryad_garden.lua | 3 +- .../scripts/actions/other/enchanting.lua | 14 +- .../actions/other/fireworks_rocket.lua | 2 +- .../scripts/actions/other/fishing.lua | 6 +- .../scripts/actions/other/fluids.lua | 16 +- .../scripts/actions/other/food.lua | 244 +- .../scripts/actions/other/gems.lua | 26 +- .../scripts/actions/other/gold_converter.lua | 2 +- .../actions/other/golden_outfit_display.lua | 32 +- .../scripts/actions/other/hireling_food.lua | 22 +- .../actions/other/jean_pierre_food.lua | 18 +- .../actions/other/magic_gold_converter.lua | 4 +- .../scripts/actions/other/magic_tree.lua | 4 +- .../scripts/actions/other/muck_remover.lua | 2 +- .../scripts/actions/other/music.lua | 6 +- .../actions/other/offline_training.lua | 2 +- .../actions/other/offline_training_book.lua | 2 +- .../scripts/actions/other/ore_wagon.lua | 2 +- .../actions/other/others/quest_system1.lua | 30 +- .../actions/other/others/quest_system2.lua | 239 +- .../scripts/actions/other/party_hat.lua | 2 +- .../scripts/actions/other/piggy_bank.lua | 2 +- .../scripts/actions/other/potions.lua | 90 +- .../scripts/actions/other/primal_bag.lua | 8 +- .../actions/other/rafzane_elevator.lua | 18 +- .../scripts/actions/other/special_boxes.lua | 95 +- .../actions/other/special_firework_rocket.lua | 4 +- .../actions/other/string_of_mending.lua | 4 +- .../scripts/actions/other/surprise_bag.lua | 74 +- .../scripts/actions/other/sweet_heart.lua | 6 +- .../actions/other/thais_exhibition.lua | 240 +- .../scripts/actions/other/transform_to.lua | 4 +- .../scripts/actions/other/ursagrodon.lua | 10 +- .../quests/a_pirates_tail/ratmiral_lever.lua | 6 +- .../quests/a_pirates_tail/tentugly_lever.lua | 6 +- .../quests/adventurers_guild/treasure.lua | 18 +- .../iksupan_entrance.lua | 2 +- .../adventures_of_galthen/iksupan_exit.lua | 2 +- .../megasylvan_yselda_lever.lua | 6 +- .../yselda_entrances.lua | 2 +- .../adventures_of_galthen/yselda_shortcut.lua | 2 +- .../actions/quests/barbarian_test/horn.lua | 18 +- .../actions/quests/barbarian_test/mead.lua | 10 +- .../actions/quests/bigfoot_burden/beer.lua | 2 +- .../actions/quests/bigfoot_burden/crystal.lua | 4 +- .../quests/bigfoot_burden/extractor.lua | 5 +- .../quests/bigfoot_burden/matchmaker.lua | 4 +- .../actions/quests/bigfoot_burden/music.lua | 4 +- .../actions/quests/bigfoot_burden/pig.lua | 2 +- .../actions/quests/bigfoot_burden/repair.lua | 4 +- .../actions/quests/bigfoot_burden/rewards.lua | 31 +- .../actions/quests/bigfoot_burden/spores.lua | 6 +- .../actions/quests/bigfoot_burden/stone.lua | 4 +- .../bigfoot_burden/warzone1_crystal.lua | 2 +- .../mission4_levers_puzzle.lua | 4 +- .../quests/cults_of_tibia/analyser.lua | 3 +- .../quests/cults_of_tibia/bosses_levers.lua | 80 +- .../quests/cults_of_tibia/counter_agent.lua | 3 +- .../quests/cults_of_tibia/cult_symbol.lua | 5 +- .../quests/cults_of_tibia/last_object.lua | 3 +- .../quests/cults_of_tibia/lever_mota.lua | 8 +- .../quests/cults_of_tibia/magnifier.lua | 2 +- .../quests/cults_of_tibia/misguided.lua | 8 +- .../actions/quests/cults_of_tibia/torch.lua | 2 +- .../crude_lava_pump_achievements.lua | 11 +- .../dangerous_depth/gnomish_pesticide.lua | 2 +- .../quests/dangerous_depth/lever_barrel.lua | 2 +- .../actions/quests/dark_trails/corpse.lua | 4 +- .../lever_death_priest_shargon.lua | 10 +- .../quests/dark_trails/lever_the_ravager.lua | 10 +- .../actions/quests/dawnport/legion_helmet.lua | 4 +- .../quests/dawnport/vocation_reward.lua | 25 +- .../actions/quests/demon_oak/demon_oak.lua | 56 +- .../quests/demon_oak/demon_oak_chest.lua | 6 +- .../actions/quests/devil_helmet/lever.lua | 2 +- .../quests/dreamer_challenge/documents.lua | 26 +- .../dreamer_challenge/lever_brotherhood.lua | 20 +- .../dreamer_challenge/lever_nightmare.lua | 20 +- .../dreamer_challenge/stone_teleport.lua | 12 +- .../dreamer_challenge/tic_tac_teleport.lua | 22 +- .../quests/dreamer_challenge/walls.lua | 10 +- .../quests/elemental_spheres/lever.lua | 18 +- .../lord_of_elements_lever.lua | 63 +- .../quests/elemental_spheres/machine1.lua | 7 +- .../quests/elemental_spheres/machine2.lua | 4 +- .../quests/elemental_spheres/soils1.lua | 2 +- .../quests/elemental_spheres/soils2.lua | 6 +- .../quests/explorer_society/findings.lua | 20 +- .../actions/quests/fathers_burden/corpse.lua | 6 +- .../feaster_of_souls/dread_maiden_lever.lua | 8 +- .../quests/feaster_of_souls/entrances.lua | 2 +- .../feaster_of_souls/fear_feaster_lever.lua | 8 +- .../feaster_of_souls/pale_worm_lever.lua | 8 +- .../feaster_of_souls/portal_minis_feaster.lua | 18 +- .../actions/quests/feaster_of_souls/slab.lua | 2 +- .../feaster_of_souls/unwelcome_lever.lua | 8 +- .../quests/ferumbras_ascendant/bone_flute.lua | 8 +- .../ferumbras_ascendant/bone_flute_wall.lua | 2 +- .../boots_of_homecoming.lua | 8 +- .../ferumbras_ascendant/color_levers.lua | 10 +- .../ferumbras_ascendant/ferumbras_amulet.lua | 8 +- .../ferumbras_ascendant/ferumbras_lever.lua | 4 +- .../ferumbras_mana_keg.lua | 6 +- .../flower_puzzle_lever.lua | 10 +- .../ferumbras_ascendant/habitat_corrupted.lua | 8 +- .../ferumbras_ascendant/habitat_desert.lua | 8 +- .../ferumbras_ascendant/habitat_dimension.lua | 8 +- .../ferumbras_ascendant/habitat_grass.lua | 8 +- .../ferumbras_ascendant/habitat_ice.lua | 8 +- .../ferumbras_ascendant/habitat_mushroom.lua | 8 +- .../ferumbras_ascendant/habitat_roshamuul.lua | 8 +- .../ferumbras_ascendant/habitat_venom.lua | 8 +- .../ferumbras_ascendant/mazoran_lever.lua | 8 +- .../ferumbras_ascendant/mysterious_scroll.lua | 4 +- .../ferumbras_ascendant/plagirath_lever.lua | 8 +- .../ferumbras_ascendant/purified_soul.lua | 4 +- .../ferumbras_ascendant/ragiaz_lever.lua | 12 +- .../quests/ferumbras_ascendant/rat_lever.lua | 4 +- .../ferumbras_ascendant/razzagorn_lever.lua | 8 +- .../quests/ferumbras_ascendant/reward.lua | 10 +- .../quests/ferumbras_ascendant/sacrifice.lua | 12 +- .../scroll_of_ascension.lua | 4 +- .../ferumbras_ascendant/shulgrax_lever.lua | 8 +- .../quests/ferumbras_ascendant/statue.lua | 4 +- .../ferumbras_ascendant/tarbaz_lever.lua | 8 +- .../ferumbras_ascendant/tarbaz_notes.lua | 4 +- .../ferumbras_ascendant/teleportation_rod.lua | 4 +- .../the_shatterer_lever.lua | 4 +- .../the_shatterer_levers.lua | 24 +- .../ferumbras_ascendant/zamulosh_lever.lua | 12 +- .../actions/quests/first_dragon/lever.lua | 6 +- .../actions/quests/first_dragon/rewards.lua | 50 +- .../quests/first_dragon/sacrifice_items.lua | 6 +- .../quests/first_dragon/treasure_chest.lua | 50 +- .../quests/forgotten_knowledge/bird_cage.lua | 6 +- .../forgotten_knowledge/dragonking_lever.lua | 10 +- .../quests/forgotten_knowledge/fount.lua | 2 +- .../forgotten_knowledge/girl_picture.lua | 2 +- .../forgotten_knowledge/horror_lever.lua | 12 +- .../quests/forgotten_knowledge/lantern.lua | 8 +- .../forgotten_knowledge/last_lore_lever.lua | 25 +- .../forgotten_knowledge/lloyd_lever.lua | 12 +- .../quests/forgotten_knowledge/lost_time.lua | 4 +- .../quests/forgotten_knowledge/old_desk.lua | 8 +- .../quests/forgotten_knowledge/plant.lua | 76 +- .../forgotten_knowledge/secret_wall.lua | 2 +- .../servants_mechanism.lua | 12 +- .../forgotten_knowledge/tenebris_lever.lua | 8 +- .../thorn_knight_lever.lua | 8 +- .../time_guardian_lever.lua | 20 +- .../forgotten_knowledge/time_machine.lua | 4 +- .../grave_danger/baeloc_nictros_lever.lua | 6 +- .../grave_danger/cobra_bastion/scarlett.lua | 19 +- .../grave_danger/count_vlarkorth_lever.lua | 8 +- .../quests/grave_danger/duke_krule_lever.lua | 8 +- .../quests/grave_danger/earl_osam_lever.lua | 8 +- .../quests/grave_danger/king_zelos_lever.lua | 8 +- .../quests/grave_danger/lord_azaram_lever.lua | 8 +- .../actions/quests/gravedigger/ashes.lua | 2 +- .../actions/quests/gravedigger/blood.lua | 4 +- .../actions/quests/gravedigger/brain.lua | 6 +- .../actions/quests/gravedigger/caixa.lua | 2 +- .../actions/quests/gravedigger/candles.lua | 2 +- .../actions/quests/gravedigger/cape.lua | 2 +- .../actions/quests/gravedigger/chalk.lua | 2 +- .../actions/quests/gravedigger/flask.lua | 2 +- .../actions/quests/gravedigger/hallowed.lua | 2 +- .../quests/gravedigger/inscriptions.lua | 6 +- .../actions/quests/gravedigger/key1.lua | 2 +- .../actions/quests/gravedigger/monks.lua | 6 +- .../actions/quests/gravedigger/palanca.lua | 2 +- .../actions/quests/gravedigger/pyramids1.lua | 4 +- .../actions/quests/gravedigger/pyramids2.lua | 6 +- .../actions/quests/gravedigger/sacrifice.lua | 4 +- .../actions/quests/gravedigger/scroll.lua | 2 +- .../actions/quests/gravedigger/statue.lua | 5 +- .../actions/quests/gravedigger/tears.lua | 2 +- .../actions/quests/gravedigger/tincture.lua | 2 +- .../grimvale/ancient_feud_entrances.lua | 2 +- .../quests/grimvale/closed_silvered_trap.lua | 6 +- .../grimvale/portal_minis_ancient_feud.lua | 24 +- .../quests/grimvale/portal_minis_grimvale.lua | 32 +- .../heart_of_destruction/anomaly_lever.lua | 4 +- .../heart_of_destruction/charges_lever.lua | 4 +- .../heart_of_destruction/cracklers_lever.lua | 4 +- .../heart_of_destruction/eradicator_lever.lua | 8 +- .../heart_of_destruction/final_lever.lua | 14 +- .../heart_of_destruction/outburst_lever.lua | 4 +- .../heart_of_destruction/quake_lever.lua | 4 +- .../heart_of_destruction/rupture_lever.lua | 4 +- .../heart_of_destruction/sparks_lever.lua | 4 +- .../machines_deep_terror.lua | 6 +- .../machines_glooth_horror.lua | 6 +- .../hero_of_rathleton/machines_lava.lua | 6 +- .../machines_professor_maxxen.lua | 6 +- .../quests/hero_of_rathleton/reward.lua | 6 +- .../actions/quests/hot_cuisine/cookbook1.lua | 4 +- .../actions/quests/hot_cuisine/cookbook2.lua | 4 +- .../quests/hunter_outfit/music_sheet.lua | 12 +- .../actions/quests/ice_islands/cure.lua | 2 +- .../actions/quests/ice_islands/paint.lua | 2 +- .../actions/quests/ice_islands/yakchal.lua | 8 +- .../quests/in_service_of_yalahar/charm.lua | 2 +- .../quests/in_service_of_yalahar/ghost.lua | 6 +- .../in_service_of_yalahar/last_fight.lua | 14 +- .../in_service_of_yalahar/mechanism.lua | 10 +- .../in_service_of_yalahar/morik_summon.lua | 3 +- .../in_service_of_yalahar/mr_west_door.lua | 12 +- .../quests/in_service_of_yalahar/reward.lua | 12 +- .../yalahar_machine_war_golems.lua | 16 +- .../quests/inquisition/brother_lever.lua | 18 +- .../actions/quests/inquisition/rewards.lua | 4 +- .../quests/inquisition/vampire_hunt.lua | 4 +- .../actions/quests/kilmaresh/peeler.lua | 1 - .../kilmaresh/portal_minis_kilmaresh.lua | 18 +- .../actions/quests/kilmaresh/scissors.lua | 1 - .../actions/quests/kilmaresh/scissorsfun.lua | 79 +- .../actions/quests/koshei_amulet/bag.lua | 6 +- .../actions/quests/koshei_amulet/switch.lua | 6 +- .../actions/quests/lions_rock/lions_rock.lua | 34 +- .../quests/liquid_black/seashell_key.lua | 6 +- .../actions/quests/lower_roshamuul/bone.lua | 4 +- .../actions/quests/lower_roshamuul/chalk.lua | 2 +- .../quests/lower_roshamuul/mixture.lua | 2 +- .../lower_roshamuul/resonance_chamber.lua | 16 +- .../quests/marapur/boss_lever_timira.lua | 2 +- .../quests/marapur/teleports_timira.lua | 1 - .../oramond/chavis_tasks/to_take_roots.lua | 18 +- .../quests/oramond/glooth_fairy_lever.lua | 8 +- .../the_ancient_sewers.lua | 6 +- .../quests/others/black_knight_quest.lua | 2 +- .../quests/others/calassa_comb_door.lua | 2 +- .../others/desert_dungeon_lever_quest.lua | 18 +- .../actions/quests/others/fire_bug.lua | 6 +- .../actions/quests/others/gooey_mass.lua | 34 +- .../actions/quests/others/hellgate_lever.lua | 4 +- .../actions/quests/others/holy_water.lua | 15 +- .../actions/quests/others/life_ring_lever.lua | 4 +- .../quests/others/serpentine_tower_lever.lua | 2 +- .../quests/others/steal_from_thieves.lua | 4 +- .../quests/pits_of_inferno/bazir_mirror.lua | 8 +- .../pits_of_inferno/fire_throne_lever.lua | 2 +- .../quests/pits_of_inferno/fountain.lua | 4 +- .../actions/quests/pits_of_inferno/levers.lua | 36 +- .../actions/quests/pits_of_inferno/oil.lua | 2 +- .../actions/quests/pits_of_inferno/walls.lua | 4 +- .../quests/postman/waldos_posthorn.lua | 2 +- .../rottin_wood_and_married_men/corpse.lua | 2 +- .../rottin_wood_and_married_men/trap.lua | 6 +- .../quests/secret_library/brokul_lever.lua | 21 +- .../quests/secret_library/ghulosh_lever.lua | 8 +- .../quests/secret_library/gorzindel_lever.lua | 8 +- .../secret_library/library_entrances.lua | 2 +- .../quests/secret_library/lokathmor_lever.lua | 8 +- .../quests/secret_library/mazzinor_lever.lua | 8 +- .../scourge_of_oblivion_lever.lua | 8 +- .../secret_service/amazon_disguise_kit.lua | 2 +- .../actions/quests/secret_service/lever.lua | 38 +- .../actions/quests/secret_service/ring.lua | 2 +- .../quests/secret_service/rust_bugs.lua | 2 +- .../actions/quests/secret_service/tools.lua | 4 +- .../quests/soul_war/goshnar_cruelty_lever.lua | 8 +- .../quests/soul_war/goshnar_greed_lever.lua | 8 +- .../quests/soul_war/goshnar_hatred_lever.lua | 8 +- .../quests/soul_war/goshnar_malice_lever.lua | 8 +- .../soul_war/goshnar_megalomania_lever.lua | 8 +- .../quests/soul_war/goshnar_spite_lever.lua | 8 +- .../quests/soul_war/reward_soul_war.lua | 6 +- .../quests/soul_war/soulwar_entrances.lua | 2 +- .../quests/spike_tasks/ghost_detector.lua | 16 +- .../actions/quests/spike_tasks/lode_stone.lua | 7 +- .../quests/spike_tasks/spirit_shovel.lua | 4 +- .../quests/spike_tasks/thermometer.lua | 2 +- .../quests/spirit_hunters/magical_device.lua | 6 +- .../active_teleport_switches.lua | 2 +- .../quests/the_ancient_tombs/lever.lua | 7 +- .../the_ancient_tombs/oasis_lever_door.lua | 6 +- .../the_ancient_tombs/ruins_instruments.lua | 6 +- .../the_ape_city/mission9_catacombs_lever.lua | 2 +- .../mission9_catacombs_snake_destroyer.lua | 3 +- .../quests/the_cursed_crystal/MedusaOil.lua | 25 +- .../quests/the_cursed_crystal/Misc.lua | 23 +- .../quests/the_cursed_crystal/Ointment.lua | 16 +- .../the_dream_courts/dream_courts_lever.lua | 20 +- .../entrances_dream_courts.lua | 2 +- .../actions/quests/the_dream_courts/lever.lua | 6 +- .../nightmare_beast_lever.lua | 8 +- .../bargate_lever.lua | 2 +- .../the_hidden_city_of_beregar/ore wagon.lua | 38 +- .../the_hunt_for_the_sea_serpent/bait.lua | 6 +- .../actions/quests/the_outlaw_camp/oven.lua | 3 +- .../the_secret_library/asura_mirror.lua | 2 +- .../the_secret_library/bastion_access.lua | 2 +- .../quests/the_secret_library/energybasin.lua | 13 +- .../the_shattered_isles/nargor_maps.lua | 8 +- .../tortoise_egg_nargor.lua | 4 +- .../quests/the_tainted_soul/star_herb.lua | 2 +- .../the_thieves_guild/climbing_vine.lua | 2 +- .../the_thieves_guild/fish_napping_door.lua | 2 +- .../the_thieves_guild/fish_napping_key.lua | 2 +- .../the_brainstealer_lever.lua | 2 +- .../quests/what_a_foolish/cat_basket.lua | 11 +- .../quests/what_a_foolish/contract.lua | 2 +- .../actions/quests/what_a_foolish/crate.lua | 2 +- .../actions/quests/what_a_foolish/cushion.lua | 7 +- .../quests/what_a_foolish/disguise.lua | 2 +- .../actions/quests/what_a_foolish/flask.lua | 6 +- .../actions/quests/what_a_foolish/watch.lua | 4 +- .../quests/what_a_foolish/worn_cloth.lua | 5 +- .../wrath_of_the_emperor/mission01_lights.lua | 6 +- ...mission02_firstcontact_repair_teleport.lua | 2 +- .../mission03_the_keeper.lua | 2 +- .../mission08_uninvited_guests_lever.lua | 2 +- ...mission10_a_message_of_freedom_sceptre.lua | 12 +- .../mission11_payback_time_lever.lua | 6 +- .../actions/rookgaard/banana_quest.lua | 4 +- .../scripts/actions/rookgaard/chest.lua | 2 +- .../actions/rookgaard/doublet_quest.lua | 4 +- .../actions/rookgaard/honey_flower_quest.lua | 4 +- .../scripts/actions/rookgaard/sewer_lever.lua | 6 +- .../actions/roshamuul/prison/golden.lua | 10 +- .../scripts/actions/roshamuul/prison/keys.lua | 12 +- .../scripts/actions/shrines/feyrist_exit.lua | 2 +- .../scripts/actions/spellbook.lua | 13 +- .../actions/system/quest_reward_common.lua | 13 +- .../scripts/actions/tools/grinder.lua | 2 +- .../scripts/actions/tools/hammer.lua | 12 +- .../scripts/actions/tools/present.lua | 6 +- .../scripts/actions/tools/rust_remover.lua | 17 +- .../scripts/actions/tools/skinning.lua | 12 +- .../scripts/actions/tools/toolgear.lua | 14 +- .../actions/valuables/random_items.lua | 30 +- .../scripts/actions/worldboard.lua | 8 +- .../worldchanges/deeplings/bosses_reward.lua | 23 +- .../the_mummys_curse/horestis_jars.lua | 18 +- .../scripts/bestiary/charms.lua | 38 +- .../creaturescripts/customs/freequests.lua | 3 +- .../scripts/creaturescripts/customs/vip.lua | 8 +- .../creaturescripts/familiar/on_login.lua | 4 +- .../monster/gaz_haragoth_heal.lua | 2 +- .../monster/lower_roshamuul.lua | 2 +- .../monster/omrafir_explode.lua | 3 +- .../creaturescripts/monster/shared_life.lua | 4 +- .../monster/shlorg_teleport.lua | 4 +- .../monster/the_pale_count_kill.lua | 2 +- .../monster/urmahlullu_change.lua | 28 +- .../creaturescripts/monster/white_deer.lua | 4 +- .../monster/white_deer_scout.lua | 4 +- .../creaturescripts/monster/zavarash_hide.lua | 6 +- .../others/#modal_window_example.lua | 8 +- .../creaturescripts/others/advance_save.lua | 4 +- .../creaturescripts/others/dawnport.lua | 5 +- .../scripts/creaturescripts/others/login.lua | 47 +- .../creaturescripts/others/login_events.lua | 2 +- .../others/offline_training.lua | 3 +- .../creaturescripts/others/player_death.lua | 43 +- .../others/rookgaard_advance.lua | 2 +- .../the_great_dragon_hunt.lua | 4 +- .../quests/bigfoot_burden/bosses_warzone.lua | 6 +- .../quests/bigfoot_burden/parasite.lua | 6 +- .../quests/bigfoot_burden/versperoth_kill.lua | 2 +- .../quests/bigfoot_burden/wiggler_kill.lua | 2 +- .../cults_of_tibia/bosses_mission_cults.lua | 4 +- .../cults_of_tibia/carlin_vortex_spawn.lua | 2 +- .../quests/cults_of_tibia/check_tile.lua | 8 +- .../cults_of_tibia/destroyed_pillar.lua | 2 +- .../quests/cults_of_tibia/evaporate.lua | 2 +- .../quests/cults_of_tibia/machine.lua | 2 +- .../cults_of_tibia/minotaur_task_count.lua | 2 +- .../quests/cults_of_tibia/pillar_health.lua | 2 +- .../quests/cults_of_tibia/sandking.lua | 21 +- .../bosses_mission_depths.lua | 9 +- .../dangerous_depths/lost_exile_task.lua | 6 +- .../dark_trails/kill_death_priest_shargon.lua | 2 +- .../elemental_spheres/overlord_kill.lua | 12 +- .../ferumbras_ascendant/bone_capsule.lua | 4 +- .../ferumbras_ascendant/bosses_kill.lua | 26 +- .../ferumbras_ascendant/death_dragon.lua | 8 +- .../disgusting_ooze_death.lua | 6 +- .../ferumbras_mortal_shell_death.lua | 8 +- .../ferumbras_soul_splinter.lua | 4 +- .../rift_invader_death.lua | 10 +- .../the_shatterer_kill.lua | 20 +- .../ferumbras_ascendant/zamulosh_clone.lua | 4 +- .../astral_glyph_death.lua | 4 +- .../forgotten_knowledge/astral_source.lua | 6 +- .../forgotten_knowledge/bosses_kill.lua | 2 +- .../bound_astral_power.lua | 9 +- .../forgotten_knowledge/distorted_source.lua | 8 +- .../quests/forgotten_knowledge/dragon_egg.lua | 8 +- .../forgotten_knowledge/energy_prism.lua | 2 +- .../lloyd_preparedeath.lua | 10 +- .../forgotten_knowledge/melting_death.lua | 6 +- .../forgotten_knowledge/replica_servants.lua | 10 +- .../soulcatcher_summon.lua | 4 +- .../thorn_knight_death.lua | 12 +- .../grave_danger/cobra_bastion/scarlett.lua | 8 +- .../cobra_bastion/ugly_monster.lua | 14 +- .../quests/grimvale/feroxa_transform.lua | 8 +- .../aftershock_transform.lua | 4 +- .../charged_anomaly_death.lua | 2 +- .../eradicator_transform.lua | 8 +- .../foreshock_transform.lua | 4 +- .../heart_of_destruction/heart_boss_death.lua | 12 +- .../quests/hero_of_rathleton/bosses_kill.lua | 27 +- .../hero_of_rathleton/glooth_horror.lua | 8 +- .../quests/hero_of_rathleton/tentacle.lua | 6 +- .../in_service_of_yalahar/azerus_kill.lua | 5 +- .../diseased_trio_kill.lua | 13 +- .../quara_leader_kill.lua | 8 +- .../quests/inquisition/inquisition_boss.lua | 18 +- .../inquisition/inquisition_ungreez.lua | 2 +- .../quests/killing_in_the_name_of/kill.lua | 2 +- .../quests/kilmaresh/bragrumol.lua | 4 +- .../quests/kilmaresh/fafnar.lua | 8 +- .../quests/kilmaresh/mozradek.lua | 4 +- .../quests/kilmaresh/xogixath.lua | 4 +- .../liquid_black/deepling_boss_kill.lua | 6 +- .../raging_mage_tower/raging_mage_1.lua | 14 +- .../raging_mage_tower/raging_mage_2.lua | 26 +- .../raging_mage_tower/yielothax_kill.lua | 4 +- .../quests/spike_tasks/lower_spike_kill.lua | 2 +- .../quests/spike_tasks/middle_spike_kill.lua | 2 +- .../quests/spike_tasks/upper_spike_kill.lua | 2 +- .../quests/svargrond_arena/arena_kill.lua | 2 +- .../the_first_dragon/death_dragon_essence.lua | 6 +- .../the_first_dragon/death_first_dragon.lua | 2 +- .../death_somewhat_beatable.lua | 2 +- .../the_primal_menace_killed.lua | 4 +- .../wrath_of_the_emperor/bosses_kill.lua | 20 +- .../wrath_of_the_emperor/keeper_kill.lua | 2 +- .../lizard_magistratus_kill.lua | 2 +- .../lizard_noble_kill.lua | 2 +- .../wrath_of_the_emperor/zalamon_kill.lua | 22 +- .../scripts/custom/change_gold.lua | 2 +- .../custom/monster_training_machine.lua | 22 +- .../custom/movement_trainer_entrance.lua | 2 +- .../scripts/custom/movement_trainer_exit.lua | 2 +- .../scripts/globalevents/customs/rain.lua | 10 +- .../globalevents/dawnport_magic_effect.lua | 2 +- .../globalevents/others/check_mount.lua | 2 +- .../others/global_server_save.lua | 2 +- .../globalevents/others/online_record.lua | 2 +- .../others/spawns_npc_by_time.lua | 13 +- .../scripts/globalevents/others/startup.lua | 62 +- .../quests/cobra_minis_custodian.lua | 4 +- .../quests/cobra_minis_gaffir.lua | 4 +- .../globalevents/quests/cobra_minis_quaid.lua | 4 +- .../globalevents/quests/demon_oak_voices.lua | 16 +- .../quests/ferumbras_ascendant_effect_1.lua | 30 +- .../quests/ferumbras_ascendant_effect_2.lua | 28 +- .../globalevents/quests/grimvale_feroxa.lua | 4 +- .../quests/pits_of_inferno_bosses.lua | 17 +- .../secret_library_grand_canon_dominus.lua | 4 +- .../secret_library_grand_chaplain_gaunder.lua | 4 +- .../secret_library_grand_commander_soeren.lua | 4 +- .../secret_library_preceptor_lazare.lua | 4 +- .../quests/their_master_voice_mad_mage.lua | 14 +- .../globalevents/spawn/grimvale_respawn.lua | 14 +- .../scripts/globalevents/spawn/mawhawk.lua | 6 +- .../scripts/globalevents/spawn/raids.lua | 42 +- .../scripts/globalevents/spawn/rashid.lua | 5 +- .../spawn/thawing_dragon_lord.lua | 4 +- .../scripts/globalevents/spawn/tyrn.lua | 6 +- .../scripts/globalevents/update.lua | 4 +- .../scripts/globalevents/vip/online_coins.lua | 2 +- .../globalevents/vip/online_tokens.lua | 2 +- .../worldchanges/dream_courts_worldchange.lua | 16 +- .../globalevents/worldchanges/fury_gates.lua | 39 +- .../worldchanges/nightmare_isle.lua | 13 +- .../globalevents/worldchanges/yasir.lua | 48 +- .../item_classification/item_tiers.lua | 10 +- .../scripts/lib/register_actions.lua | 160 +- .../scripts/lib/register_bestiary_charm.lua | 16 +- .../scripts/lib/register_item_tier.lua | 16 +- .../scripts/lib/register_monster_type.lua | 132 +- .../scripts/lib/register_npc_type.lua | 18 +- .../scripts/lib/register_spells.lua | 82 +- .../scripts/modal_window/#example.lua | 8 +- .../equipment/unscripted_equipments.lua | 6513 ++++++++--------- .../movements/oramond/oramond_entrance.lua | 4 +- .../scripts/movements/oramond/seacrest.lua | 4 +- .../scripts/movements/oramond/teleport.lua | 16 +- .../movements/oramond/voting_oramond.lua | 2 +- .../movements/others/dawnport_tiles.lua | 37 +- .../others/dawnport_vocation_trial.lua | 69 +- .../scripts/movements/others/dough.lua | 2 +- .../scripts/movements/others/swimming.lua | 14 +- .../scripts/movements/others/trap.lua | 2 +- .../scripts/movements/others/walkback.lua | 2 +- .../bigfoot_burden/gnomebase_teleport.lua | 15 +- .../quests/bigfoot_burden/task_ear.lua | 5 +- .../quests/bigfoot_burden/task_shooting.lua | 2 +- .../quests/bigfoot_burden/task_truffles.lua | 2 +- .../quests/bigfoot_burden/task_x_ray.lua | 2 +- .../bigfoot_burden/versperoth_spawn.lua | 4 +- .../quests/bigfoot_burden/warzone_boss.lua | 9 +- .../children_of_the_revolution/click.lua | 27 +- .../quests/children_of_the_revolution/spy.lua | 9 +- .../children_of_the_revolution/stair.lua | 2 +- .../children_of_the_revolution/symbol.lua | 5 +- .../children_of_the_revolution/teleport.lua | 2 +- .../children_of_the_revolution/temple.lua | 3 +- .../quests/cults_of_tibia/begin_task.lua | 13 +- .../quests/cults_of_tibia/boss_timer.lua | 14 +- .../quests/cults_of_tibia/check_oasis.lua | 3 +- .../quests/cults_of_tibia/energy_fence.lua | 32 +- .../movements/quests/cults_of_tibia/ice.lua | 15 +- .../quests/cults_of_tibia/ice_death.lua | 20 +- .../quests/cults_of_tibia/looktype.lua | 9 +- .../quests/cults_of_tibia/river_teleport.lua | 4 +- .../quests/cults_of_tibia/sand_entrance.lua | 2 +- .../movements/quests/cults_of_tibia/tar.lua | 7 +- .../quests/cults_of_tibia/task_teleport.lua | 11 +- .../quests/dangerous_depth/boss_entrance.lua | 6 +- .../dangerous_depth/warzone_entrance.lua | 45 +- .../deeplings_worldchange/deepling_bosses.lua | 2 +- .../movements/quests/demon_oak/entrance.lua | 12 +- .../movements/quests/demon_oak/squares.lua | 2 +- .../quests/dreamer_challenge/clock_tile.lua | 2 +- .../dreamer_challenge/court_teleport.lua | 2 +- .../quests/dreamer_challenge/death_ring.lua | 2 +- .../dreamer_challenge/death_ring_teleport.lua | 2 +- .../dreamer_challenge/riddle_teleport.lua | 9 +- .../dreamer_challenge/stone_teleport.lua | 2 +- .../quests/dreamer_challenge/teleport.lua | 2 +- .../quests/dreamer_challenge/tic_teleport.lua | 4 +- .../quests/dreamer_challenge/tower.lua | 6 +- .../dreamer_challenge/wall_teleport.lua | 2 +- .../elemental_spheres/soil_entrance.lua | 4 +- .../quests/elemental_spheres/soil_exit.lua | 2 +- .../elemental_spheres/summon_overlord.lua | 22 +- .../quests/explorer_society/calassa.lua | 4 +- .../carving_teleport_liberty_bay.lua | 6 +- .../carvingteleport_port_hope.lua | 6 +- .../quests/extension_mota/extension_mota.lua | 2 +- .../quests/ferumbras_ascendant/blue_gem.lua | 19 +- .../ferumbras_ascendant/boss_teleport.lua | 2 +- .../ferumbras_ascendant/desperate_soul.lua | 2 +- .../quests/ferumbras_ascendant/entrance.lua | 5 +- .../ferumbras_ascendant/flower_puzzle.lua | 88 +- .../gate_of_deathstruction.lua | 3 +- .../quests/ferumbras_ascendant/green_gem.lua | 22 +- .../ferumbras_ascendant/habitats_access.lua | 8 +- .../ferumbras_ascendant/lovely_monsters.lua | 21 +- .../quests/ferumbras_ascendant/red_gem.lua | 19 +- .../quests/ferumbras_ascendant/seal.lua | 32 +- .../quests/ferumbras_ascendant/stair.lua | 2 +- .../quests/ferumbras_ascendant/vortex.lua | 9 +- .../ferumbras_ascendant/zamulosh_teleport.lua | 9 +- .../quests/first_dragon/entrance_teleport.lua | 10 +- .../quests/first_dragon/exit_teleport.lua | 10 +- .../quests/first_dragon/flower_bowl.lua | 6 +- .../quests/first_dragon/heaven_blossom.lua | 8 +- .../quests/first_dragon/zorvorax_secrets.lua | 8 +- .../quests/forgotten_knowledge/challenger.lua | 14 +- .../forgotten_knowledge/dragonking_vortex.lua | 8 +- .../forgotten_knowledge/entrance_teleport.lua | 47 +- .../forgotten_knowledge/ice_teleport.lua | 4 +- .../forgotten_knowledge/lava_teleport.lua | 4 +- .../forgotten_knowledge/servant_teleport.lua | 6 +- .../forgotten_knowledge/teleport_tree.lua | 3 +- .../quests/formogar_mine_hoist/hoist.lua | 5 +- .../quests/heart_of_destruction/ice_crack.lua | 2 +- .../quests/heart_of_destruction/teleport.lua | 2 +- .../heart_of_destruction/teleport_heart.lua | 19 +- .../heart_of_destruction/vortex_crackler.lua | 8 +- .../quests/hero_of_rathleton/deep_terror.lua | 9 +- .../quests/hero_of_rathleton/fast_way.lua | 2 +- .../hero_of_rathleton/glooth_horror.lua | 6 +- .../quests/hero_of_rathleton/lava.lua | 5 +- .../hero_of_rathleton/professor_maxxen.lua | 6 +- .../last_fight_teleport.lua | 2 +- .../quests/in_service_of_yalahar/morik.lua | 7 +- .../yalahar_machine_war_golems.lua | 10 +- .../movements/quests/inquisition/entrance.lua | 5 +- .../quests/inquisition/reward_room_text.lua | 3 +- .../quests/inquisition/teleport_main.lua | 68 +- .../quests/killing_in_the_name_of/boss.lua | 136 +- .../movements/quests/kilmaresh/firetp.lua | 1 - .../movements/quests/kilmaresh/steptile.lua | 2 +- .../movements/quests/kilmaresh/tpvoc.lua | 10 +- .../quests/lions_rock/lions_rock.lua | 12 +- .../quests/nightmare_isles/teleport.lua | 4 +- .../nightmare_isles/teleport_ladder.lua | 2 +- .../quests/pits_of_inferno/bazir_tile.lua | 2 +- .../quests/pits_of_inferno/check_throne.lua | 2 +- .../quests/pits_of_inferno/fire_tile.lua | 2 +- .../pits_of_inferno/holy_tible_tile.lua | 2 +- .../quests/pits_of_inferno/shortcuts.lua | 2 +- .../quests/pits_of_inferno/stone.lua | 2 +- .../quests/pits_of_inferno/throne.lua | 16 +- .../quests/pits_of_inferno/tile_teleport.lua | 2 +- .../quests/svargrond_arena/arena_enter.lua | 4 +- .../quests/svargrond_arena/arena_pit.lua | 4 +- .../quests/the_ancient_tombs/craft_helmet.lua | 2 +- .../step_morguthis_blue_flames.lua | 5 +- .../the_ancient_tombs/tomb_teleport.lua | 16 +- .../mission4_parchment_decyphering.lua | 3 +- .../StepIn_CursedCrystal.lua | 8 +- .../quests/the_dream_courts/teleport.lua | 6 +- .../dormitory_teleport.lua | 7 +- .../necromancer_servant.lua | 5 +- .../the_gravedigger_of_drefia/teleport.lua | 9 +- .../the_hidden_city_of_beregar/bellow.lua | 4 +- .../the_hidden_city_of_beregar/elevator.lua | 2 +- .../the_hidden_city_of_beregar/ore_wagon.lua | 3 +- .../pythius_boss_teleport.lua | 16 +- .../pythius_teleport.lua | 3 +- .../teleports.lua | 2 +- .../the_ice_islands/nibelor_dog_led.lua | 10 +- .../quests/the_secret_library/boat.lua | 2 +- .../the_sharttered_isles/energy_barrier.lua | 2 +- .../quests/the_sharttered_isles/teleport.lua | 2 +- .../quests/the_spike_tasks/spike_teleport.lua | 2 +- .../mission2_all_around_the_world.lua | 27 +- .../mission3_dance_dance_evolution.lua | 2 +- .../movements/quests/waterfall/waterfall.lua | 2 +- .../quests/what_a_foolish/destroy_pies.lua | 3 +- .../quests/white_pearl/white_pearl.lua | 6 +- .../wrath_of_the_emperor/boss_teleport.lua | 10 +- .../quests/wrath_of_the_emperor/crate.lua | 7 +- .../quests/wrath_of_the_emperor/keeper.lua | 2 +- .../wrath_of_the_emperor/teleports_access.lua | 7 +- .../movements/rookgaard/level_bridge.lua | 2 +- .../scripts/movements/teleport/citizen.lua | 4 +- .../teleport/dark_cathedral_teleports.lua | 2 +- .../deeper_banuta_shortcut_teleport.lua | 2 +- .../movements/teleport/falcon_castle.lua | 6 +- .../movements/teleport/gray_beach_vortex.lua | 2 +- .../movements/teleport/lower_roshamuul.lua | 2 +- .../movements/teleport/magician_quarter.lua | 4 +- .../teleport/port_hope_deathling.lua | 2 +- .../movements/teleport/shrine_entrance.lua | 10 +- .../movements/teleport/shrine_exit.lua | 4 +- .../teleport/teleport_ab_dendriel.lua | 2 +- .../movements/teleport/tomb_coal_basin.lua | 2 +- .../scripts/movements/teleport/turtles.lua | 2 +- .../movements/teleport/vengoth_teleport.lua | 2 +- .../movements/teleport/yalahar_demon.lua | 6 +- .../quests/alawars_vault/action-lever.lua | 2 +- .../scripts/quests/behemoth/action-lever.lua | 2 +- .../quests/demon_helmet/movement-walls.lua | 4 +- .../draconia/movement-exit_teleport.lua | 2 +- .../movement-cave_spider_room.lua | 10 +- .../hidden_threats/movement-chests_check.lua | 4 +- .../3-urmahlullu-the-immaculate.lua | 11 +- .../1-fafnars-wrath/6-mind-travel.lua | 19 +- .../1-fafnars-wrath/7-four-masks.lua | 16 +- .../8-blessing-the-statues.lua | 14 +- .../quests/parchment_room/parchment.lua | 4 +- .../magma_bubble_fight.lua | 33 +- .../magma_bubble_lever.lua | 4 +- .../ore_wagons_gnoproma.lua | 1 - .../the_primal_manace_lever.lua | 8 +- .../scripts/quests/the_annihilator/lever.lua | 4 +- .../quests/the_new_frontier/action-arena.lua | 26 +- .../quests/the_new_frontier/action-beaver.lua | 2 +- .../the_new_frontier/action-elevator.lua | 2 +- .../the_new_frontier/action-hidden_note.lua | 2 +- .../quests/the_new_frontier/action-vine.lua | 2 +- ...eaturescripts-shard_of_corruption_kill.lua | 2 +- .../creaturescripts-tirecz_kill.lua | 7 +- .../movement-prision_trap.lua | 4 +- .../the_new_frontier/snake_head_teleport.lua | 3 +- .../quests/the_order_of_lion/action-drume.lua | 14 +- .../action-fifth_floor_lever.lua | 2 +- .../action-four_floor_lever.lua | 9 +- .../action-second_floor_lever.lua | 9 +- .../action-third_floor_lever.lua | 16 +- .../movement-first_floor_stair.lua | 7 +- .../movement-last_floor_reward.lua | 10 +- .../the_paradox_tower/movement-poison.lua | 2 +- .../movement-sacrifice_skulls.lua | 2 +- .../movement-1-first_seal_flame.lua | 6 +- .../movement-2-second_seal_pearl.lua | 2 +- .../movement-3-third_seal_flame.lua | 4 +- .../movement-3-third_seal_warlock_tile.lua | 4 +- .../movement-5-fifth_seal_flame.lua | 3 +- .../the_rookie_guard/mission02_defence.lua | 14 +- .../mission04_home_brewed.lua | 10 +- .../the_rookie_guard/mission05_web_terror.lua | 10 +- .../mission06_run_like_wolf.lua | 20 +- .../the_rookie_guard/mission07_attack.lua | 10 +- .../the_rookie_guard/mission09_rock_troll.lua | 22 +- .../mission10_tomb_raiding.lua | 32 +- .../mission11_sweet_poison.lua | 6 +- .../mission12_into_fortress.lua | 116 +- .../quests/the_rookie_guard/missions.lua | 82 +- .../action-fairies_release.lua | 15 +- .../threatened_dreams/action-moon_mirror.lua | 27 +- .../threatened_dreams/action-poacher_book.lua | 6 +- .../action-poacher_notes.lua | 5 +- .../action-starlight_vial.lua | 27 +- .../threatened_dreams/action-sun_catcher.lua | 29 +- .../threatened_dreams/action-whelp_fur.lua | 2 +- ...reaturescript-nightmare_monsters_kills.lua | 2 +- .../event-raven_herb_bush.lua | 13 +- .../movement-kroazur_room.lua | 14 +- .../movement-poacher_notes.lua | 2 +- .../movement-swan_feathers.lua | 15 +- .../scripts/reward_chest/boss_death.lua | 10 +- .../scripts/spells/attack/annihilation.lua | 2 +- .../scripts/spells/attack/brutal_strike.lua | 2 +- .../spells/attack/executioners_throw.lua | 2 +- .../scripts/spells/attack/front_sweep.lua | 2 +- .../spells/attack/great_death_beam.lua | 2 +- .../spells/attack/strong_ethereal_spear.lua | 2 +- .../scripts/spells/healing/cure_poison.lua | 3 +- .../scripts/spells/healing/heal_monsters.lua | 8 +- .../spells/healing/heal_monsters_9x9.lua | 8 +- .../spells/healing/intense_healing.lua | 3 +- .../scripts/spells/healing/magic_patch.lua | 3 +- .../spells/monster/abyssador_poison_wave.lua | 3 +- .../monster/arachnophobica_wavedice.lua | 2 +- .../monster/arachnophobica_waveenergy.lua | 2 +- .../spells/monster/ashfalor_summon.lua | 2 +- .../scripts/spells/monster/askarak_wave.lua | 2 +- .../monster/betrayed_wraith_skill_reducer.lua | 2 +- .../spells/monster/brimstone_bug_wave.lua | 2 +- .../spells/monster/bullwark_paralyze.lua | 3 +- .../monster/burning_gladiator_firering.lua | 2 +- .../monster/burning_gladiator_firex.lua | 2 +- .../spells/monster/canopic_jar_heal.lua | 3 +- .../spells/monster/corym_vanguard_wave.lua | 3 +- .../monster/crystal_spider_paralyze_1.lua | 1 - .../spells/monster/crystal_wolf_wave.lua | 3 +- .../monster/cults_of_tibia_armor_buff.lua | 2 +- .../monster/dark_torturer_skill_reducer.lua | 2 +- .../spells/monster/deathbringer_drown.lua | 2 +- .../spells/monster/deathstrike_manadrain.lua | 3 +- .../spells/monster/defiler_paralyze_1.lua | 1 - .../spells/monster/defiler_paralyze_2.lua | 2 - .../spells/monster/defiler_paralyze_3.lua | 3 +- .../spells/monster/devourer_paralyze.lua | 2 - .../scripts/spells/monster/devourer_wave.lua | 2 +- .../spells/monster/dragonling_wave.lua | 3 +- .../spells/monster/dread_maiden_rcircle.lua | 2 +- .../spells/monster/dreadbeast_summon.lua | 2 +- .../spells/monster/dreadwing_curse.lua | 2 +- .../spells/monster/elder_wyrm_electrify.lua | 2 +- .../spells/monster/elder_wyrm_wave.lua | 3 +- .../scripts/spells/monster/emberBeastArea.lua | 2 +- .../monster/emerald_tortoise_large_ring.lua | 3 +- .../emerald_tortoise_small_explosion.lua | 3 +- .../monster/emerald_tortoise_small_ring.lua | 3 +- .../eruption_of_destruction_explosion.lua | 4 +- .../scripts/spells/monster/explosion_wave.lua | 2 +- .../scripts/spells/monster/fear.lua | 4 +- .../scripts/spells/monster/feroxa_summon.lua | 2 +- .../spells/monster/feverish_citizen_drunk.lua | 2 +- .../scripts/spells/monster/foam_splash.lua | 10 +- .../spells/monster/freed_soul_spell.lua | 2 +- .../monster/frost_dragon_paralyze_2.lua | 1 - .../monster/frost_dragon_paralyze_3.lua | 3 +- .../spells/monster/frozen_minion_beam.lua | 3 +- .../spells/monster/frozen_minion_heal.lua | 3 +- .../spells/monster/frozen_minion_wave.lua | 5 +- .../spells/monster/furyosa_deathball.lua | 1 - .../spells/monster/furyosa_manadrain.lua | 3 +- .../spells/monster/furyosa_soulfire.lua | 2 +- .../spells/monster/gaz'haragoth_death.lua | 2 +- .../spells/monster/gaz'haragoth_iceball.lua | 1 - .../spells/monster/gaz'haragoth_summon.lua | 6 +- .../scripts/spells/monster/gaz_functions.lua | 2 +- .../scripts/spells/monster/generator.lua | 6 +- .../spells/monster/ghastly_dragon_wave.lua | 3 +- .../spells/monster/ghoulish_hyaena_wave.lua | 2 +- .../spells/monster/girtablilu_poison_wave.lua | 2 +- .../spells/monster/glooth_battery_heal.lua | 3 +- .../spells/monster/glooth_fairy_paralyze.lua | 1 - .../monster/glooth_fairy_skill_reducer.lua | 2 +- .../scripts/spells/monster/gnomevil_drunk.lua | 2 +- .../spells/monster/gnomevil_electrify.lua | 2 +- .../spells/monster/gnomevil_soulfire.lua | 2 +- .../spells/monster/gorerilla_large_ring.lua | 3 +- .../spells/monster/gorerilla_small_ring.lua | 3 +- .../monster/haunted_treeling_paralyze.lua | 3 +- .../spells/monster/headpecker_explosion.lua | 6 +- .../monster/hideous_fungus_paralyze.lua | 3 - .../spells/monster/hideous_fungus_poison.lua | 1 - .../scripts/spells/monster/horadron_heal.lua | 3 +- .../scripts/spells/monster/hot_dog_wave.lua | 3 +- .../monster/humongous_fungus_paralyze.lua | 3 +- .../monster/humongous_fungus_poison.lua | 2 +- .../spells/monster/ice_crystal_bomb.lua | 2 +- .../spells/monster/ice_golem_paralyze.lua | 3 +- .../scripts/spells/monster/icicle_heal.lua | 3 +- .../spells/monster/katex_blood_deathT.lua | 2 +- .../monster/kraknaknork_explosion_wave.lua | 3 +- .../spells/monster/kraknaknork_ice_wave.lua | 3 +- .../monster/kraknaknork_poison_wave.lua | 3 +- .../spells/monster/lavafungus_ring.lua | 3 +- .../spells/monster/lavafungus_x_wave.lua | 1 - .../spells/monster/leaf_golem_paralyze.lua | 2 - .../spells/monster/lisa_skill_reducer.lua | 3 +- .../scripts/spells/monster/lisa_wave.lua | 3 +- .../scripts/spells/monster/lizard_wave.lua | 3 +- .../scripts/spells/monster/lizard_wave_2.lua | 3 +- .../scripts/spells/monster/lloyd_wave.lua | 3 +- .../scripts/spells/monster/lloyd_wave2.lua | 3 +- .../scripts/spells/monster/lloyd_wave3.lua | 3 +- .../spells/monster/lord_azaram_wave.lua | 4 +- .../monster/lord_of_the_elements_paralyze.lua | 1 - .../spells/monster/madareth_skill_reducer.lua | 2 +- .../spells/monster/magma_crawler_wave.lua | 3 +- .../spells/monster/mahrdis_soulfire.lua | 2 +- .../scripts/spells/monster/mawhawk_ue.lua | 2 +- .../scripts/spells/monster/mazoran_fire.lua | 8 +- .../spells/monster/medusa_paralyze.lua | 1 - .../monster/megasylvan_yselda_ebeam.lua | 2 +- .../spells/monster/mercurial_menace_ring.lua | 1 - .../monster/minotaur_amazon_paralyze.lua | 3 +- .../spells/monster/mutated_bat_curse.lua | 2 +- .../spells/monster/nighthunter_wave.lua | 2 +- .../spells/monster/noxious_ripptor_wave.lua | 2 +- .../scripts/spells/monster/omrafir_wave.lua | 3 +- .../monster/orewalker_skill_reducer_1.lua | 2 +- .../scripts/spells/monster/orewalker_wave.lua | 3 +- .../spells/monster/outburst_explode.lua | 4 +- .../scripts/spells/monster/phantasm_drown.lua | 2 +- .../scripts/spells/monster/plagirath_bog.lua | 1 - .../scripts/spells/monster/plagirath_heal.lua | 3 +- .../spells/monster/plaguesmith_paralyze.lua | 1 - .../spells/monster/plaguesmith_wave.lua | 3 +- .../spells/monster/priestess_firering.lua | 2 +- .../spells/monster/prince_drazzak_druid.lua | 2 +- .../spells/monster/prince_drazzak_knight.lua | 2 +- .../spells/monster/prince_drazzak_paladin.lua | 2 +- .../monster/prince_drazzak_sorcerer.lua | 2 +- .../spells/monster/prince_drazzak_summon.lua | 2 +- .../spells/monster/prince_drazzak_wave.lua | 3 +- .../spells/monster/ragiaz_transform.lua | 2 +- .../monster/raging_mage_skill_reducer_2.lua | 1 - .../monster/ravennousLavaLurkerTarget.lua | 2 +- .../monster/ravennousLavaLurkerWave.lua | 2 +- .../spells/monster/remorseless_wave.lua | 2 +- .../spells/monster/rot_elemental_paralyze.lua | 2 - .../spells/monster/rustheap_golem_wave.lua | 3 +- .../spells/monster/sabretooth_wave.lua | 2 +- .../spells/monster/sapling_explode.lua | 5 +- .../spells/monster/seacrest_serpent_wave.lua | 2 +- .../spells/monster/serpent_spawn_paralyze.lua | 1 - .../scripts/spells/monster/shaburak_wave.lua | 3 +- .../spells/monster/shadow_hound_curse.lua | 2 +- .../spells/monster/shock_head_paralyze.lua | 3 +- .../monster/shock_head_skill_reducer_2.lua | 2 +- .../spells/monster/single_cloud_chain.lua | 8 +- .../spells/monster/single_death_chain.lua | 8 +- .../spells/monster/single_ice_chain.lua | 8 +- .../spells/monster/slime_puddle_paralyze.lua | 2 - .../spells/monster/soulcatcher_summon.lua | 2 +- .../scripts/spells/monster/souleater_wave.lua | 3 +- .../scripts/spells/monster/soulwars_fear.lua | 4 +- .../monster/source_of_corruption_wave.lua | 2 +- .../monster/spawn_of_the_welter_heal.lua | 3 +- .../monster/spawn_of_the_welter_heal2.lua | 3 +- .../scripts/spells/monster/srezz_lleechT.lua | 2 +- .../monster/stone_devourer_paralyze.lua | 4 +- .../spells/monster/sulphur_spouter_wave.lua | 2 +- .../spells/monster/swampling_paralyze.lua | 2 +- .../scripts/spells/monster/tarbaz_tp.lua | 3 - .../spells/monster/tenebris_summon.lua | 2 +- .../spells/monster/tenebris_ultimate.lua | 6 +- .../spells/monster/tentuglys_head_energyT.lua | 2 +- .../scripts/spells/monster/terofar_heal.lua | 3 +- .../monster/terofar_skill_reducer_1.lua | 2 +- .../monster/terofar_skill_reducer_2.lua | 2 +- .../spells/monster/the_pale_count_wave.lua | 3 +- .../monster/the_voice_of_ruin_paralyze.lua | 1 - .../spells/monster/the_welter_heal2.lua | 3 +- .../spells/monster/the_welter_summon2.lua | 2 +- .../scripts/spells/monster/thorn_summon.lua | 2 +- .../scripts/spells/monster/time_guardian.lua | 6 +- .../monster/time_guardian_lost_time.lua | 8 +- .../scripts/spells/monster/time_guardiann.lua | 6 +- .../spells/monster/timira_fire_explosion.lua | 4 +- .../spells/monster/timira_fire_ring.lua | 6 +- .../spells/monster/twins_skill_reducer.lua | 2 +- .../scripts/spells/monster/tyrn_electrify.lua | 2 +- .../spells/monster/unchained_fire_beam.lua | 6 +- .../monster/unchained_fire_explosion.lua | 2 +- .../spells/monster/undead_dragon_curse.lua | 2 +- .../spells/monster/undead_jester_paralyze.lua | 3 +- .../monster/undertaker_square_explosion.lua | 6 +- .../spells/monster/urmahlullu_ring.lua | 3 +- .../spells/monster/walker_skill_reducer.lua | 1 - .../monster/war_golem_skill_reducer.lua | 2 +- .../scripts/spells/monster/warden_ring.lua | 2 +- .../scripts/spells/monster/warden_x.lua | 2 +- .../scripts/spells/monster/wave_t.lua | 2 +- .../spells/monster/weeper_paralyze.lua | 3 +- .../scripts/spells/monster/werelion_wave.lua | 3 +- .../spells/monster/werewolf_skill_reducer.lua | 2 +- .../spells/monster/white_pale_paralyze.lua | 3 +- .../spells/monster/white_shade_paralyze.lua | 1 - .../spells/monster/wiggler_paralyze.lua | 3 +- .../monster/wilting_leaf_golem_paralyze.lua | 2 - .../spells/monster/woodling_paralyze.lua | 2 +- .../monster/worm_priestess_paralyze.lua | 3 +- .../scripts/spells/monster/wyrm_wave.lua | 3 +- .../scripts/spells/monster/wyvern_drunk.lua | 2 +- .../spells/monster/zamulosh_invisible.lua | 2 +- .../scripts/spells/monster/zavarash_heal.lua | 3 +- .../zulazza_the_corruptor_paralyze.lua | 1 - .../scripts/spells/party/enchant_party.lua | 6 +- .../scripts/spells/party/heal_party.lua | 6 +- .../scripts/spells/party/protect_party.lua | 6 +- .../scripts/spells/party/train_party.lua | 6 +- .../scripts/spells/support/charge.lua | 2 +- .../spells/support/expose_weakness.lua | 2 +- .../scripts/spells/support/find_fiend.lua | 39 +- .../scripts/spells/support/find_person.lua | 10 +- .../scripts/spells/support/food.lua | 2 +- .../scripts/spells/support/haste.lua | 2 +- .../scripts/spells/support/strong_haste.lua | 2 +- .../scripts/spells/support/swift_foot.lua | 2 +- .../scripts/weapons/scripts/burst_arrow.lua | 2 +- .../scripts/weapons/unscripted_weapons.lua | 1820 ++--- data-otservbr-global/startup/others/load.lua | 2 +- data-otservbr-global/startup/startup.lua | 4 +- data-otservbr-global/startup/tables/chest.lua | 334 +- .../startup/tables/corpse.lua | 14 +- .../startup/tables/create_item.lua | 4 +- .../startup/tables/door_key.lua | 57 +- .../startup/tables/door_level.lua | 34 +- .../startup/tables/door_quest.lua | 410 +- data-otservbr-global/startup/tables/item.lua | 256 +- .../startup/tables/item_daily_reward.lua | 3 +- .../startup/tables/item_unmoveable.lua | 6 +- data-otservbr-global/startup/tables/lever.lua | 80 +- data-otservbr-global/startup/tables/load.lua | 32 +- .../startup/tables/storage_keys_update.lua | 4 +- .../startup/tables/teleport.lua | 120 +- .../startup/tables/teleport_item.lua | 28 +- data-otservbr-global/startup/tables/tile.lua | 376 +- .../startup/tables/tile_pick.lua | 6 +- .../startup/tables/writeable.lua | 166 +- data/events/scripts/creature.lua | 14 +- data/events/scripts/monster.lua | 3 +- data/events/scripts/player.lua | 74 +- data/global.lua | 31 +- data/libs/achievements_lib.lua | 21 +- data/libs/concoctions_lib.lua | 45 +- data/libs/core/global_storage.lua | 7 +- data/libs/daily_reward/daily_reward.lua | 18 +- data/libs/daily_reward/player.lua | 3 +- data/libs/debugging/dump.lua | 28 +- data/libs/encounters_lib.lua | 52 +- data/libs/exercise_training.lua | 6 +- data/libs/familiar.lua | 4 +- data/libs/forge_lib.lua | 34 +- data/libs/functions/bit.lua | 2 +- data/libs/functions/bosslever.lua | 30 +- data/libs/functions/combat.lua | 4 +- data/libs/functions/creature.lua | 5 +- data/libs/functions/functions.lua | 179 +- data/libs/functions/game.lua | 27 +- data/libs/functions/item.lua | 8 +- data/libs/functions/itemtype.lua | 2 +- data/libs/functions/lever.lua | 10 +- data/libs/functions/monster.lua | 10 +- data/libs/functions/monstertype.lua | 12 +- data/libs/functions/player.lua | 58 +- data/libs/functions/position.lua | 39 +- data/libs/functions/quests.lua | 9 +- data/libs/functions/revscriptsys.lua | 8 +- data/libs/functions/spawn.lua | 22 +- data/libs/functions/spectators.lua | 15 +- data/libs/functions/string.lua | 34 +- data/libs/functions/tables.lua | 34 +- data/libs/functions/tile.lua | 32 +- data/libs/hazard_lib.lua | 24 +- data/libs/hireling_lib.lua | 119 +- data/libs/loyalty_lib.lua | 2 +- data/libs/modal_window_lib.lua | 2 +- data/libs/reward_boss/monster.lua | 2 +- data/libs/reward_boss/reward_boss.lua | 12 +- data/libs/vocation.lua | 8 +- data/libs/window.lua | 2 +- data/libs/zones_lib.lua | 22 +- data/modules/scripts/blessings/assets.lua | 10 +- data/modules/scripts/blessings/blessings.lua | 59 +- .../scripts/daily_reward/daily_reward.lua | 54 +- data/modules/scripts/gamestore/gamestore.lua | 426 +- data/modules/scripts/gamestore/init.lua | 70 +- .../scripts/hirelings/hireling_module.lua | 4 +- .../modules/scripts/questtrack/questtrack.lua | 2 +- data/npclib/npc.lua | 11 +- data/npclib/npc_system/bank_system.lua | 148 +- data/npclib/npc_system/custom_modules.lua | 71 +- data/npclib/npc_system/keyword_handler.lua | 16 +- data/npclib/npc_system/modules.lua | 98 +- data/npclib/npc_system/npc_handler.lua | 23 +- .../eventcallbacks/creature/on_hear.lua | 3 +- .../eventcallbacks/monster/on_spawn.lua | 19 +- .../monster/ondroploot__base.lua | 6 +- .../monster/ondroploot_boosted.lua | 22 +- .../monster/ondroploot_hazard.lua | 22 +- .../monster/ondroploot_prey.lua | 18 +- .../monster/ondroploot_wealth_duplex.lua | 22 +- .../monster/postdroploot_analyzer.lua | 12 +- .../scripts/eventcallbacks/player/on_look.lua | 17 +- data/scripts/talkactions/gm/ban.lua | 10 +- .../scripts/talkactions/gm/count_monsters.lua | 8 +- data/scripts/talkactions/gm/getlook.lua | 2 +- data/scripts/talkactions/gm/info.lua | 34 +- data/scripts/talkactions/gm/kick.lua | 3 +- data/scripts/talkactions/gm/looktype.lua | 386 +- data/scripts/talkactions/gm/magic_effect.lua | 2 +- data/scripts/talkactions/gm/mc_check.lua | 2 +- data/scripts/talkactions/gm/spy.lua | 2 +- .../gm/teleport_set_destination.lua | 2 +- .../talkactions/gm/teleport_to_player.lua | 8 +- data/scripts/talkactions/gm/unban.lua | 3 +- data/scripts/talkactions/god/add_addon.lua | 12 +- data/scripts/talkactions/god/add_addons.lua | 237 +- data/scripts/talkactions/god/add_mount.lua | 3 +- data/scripts/talkactions/god/add_mounts.lua | 10 +- data/scripts/talkactions/god/add_outfit.lua | 3 +- data/scripts/talkactions/god/attributes.lua | 312 +- data/scripts/talkactions/god/charms.lua | 2 +- data/scripts/talkactions/god/close_server.lua | 8 +- data/scripts/talkactions/god/create_item.lua | 26 +- data/scripts/talkactions/god/create_spawn.lua | 4 +- .../scripts/talkactions/god/inbox_command.lua | 10 +- data/scripts/talkactions/god/ip_ban.lua | 3 +- data/scripts/talkactions/god/open_server.lua | 3 +- data/scripts/talkactions/god/reload.lua | 3 +- data/scripts/talkactions/god/sound.lua | 18 +- data/scripts/talkactions/god/vip_manager.lua | 28 +- data/scripts/talkactions/god/zones.lua | 4 +- data/scripts/talkactions/player/auto_loot.lua | 3 +- data/scripts/talkactions/player/bank.lua | 2 +- .../talkactions/player/server_info.lua | 84 +- data/scripts/talkactions/player/vip.lua | 2 +- data/stages.lua | 123 +- 3773 files changed, 50479 insertions(+), 52445 deletions(-) diff --git a/.github/workflows/lua-format.yml b/.github/workflows/lua-format.yml index 20fb25e4c88..57caa336668 100644 --- a/.github/workflows/lua-format.yml +++ b/.github/workflows/lua-format.yml @@ -2,7 +2,11 @@ name: Lua-format on: pull_request: + paths: + - 'data*/**' push: + paths: + - 'data*/**' jobs: lua-formatter: runs-on: ubuntu-latest @@ -20,16 +24,18 @@ jobs: ref: ${{ github.event.pull_request.head.ref }} token: ${{ secrets.GITHUB_TOKEN }} - - name: Run EmmyLuaCodeStyle - if: ${{ github.ref != 'refs/heads/main' }} - run: > - curl -L -o /tmp/linux-x64.tar.gz https://github.com/CppCXY/EmmyLuaCodeStyle/releases/download/1.3.1/linux-x64.tar.gz && tar -xzf /tmp/linux-x64.tar.gz -C /tmp && /tmp/linux-x64/bin/CodeFormat format -c .editorconfig -w . + - uses: JohnnyMorganz/stylua-action@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + version: latest + args: . + - name: Run add and commit if: ${{ github.ref != 'refs/heads/main' }} uses: EndBug/add-and-commit@v9 with: author_name: GitHub Actions author_email: github-actions[bot]@users.noreply.github.com - message: "Lua code format - (EmmyLuaCodeStyle)" + message: "Lua code format - (Stylua)" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/data-canary/lib/core/load.lua b/data-canary/lib/core/load.lua index e224e639c62..bf9b37a52f6 100644 --- a/data-canary/lib/core/load.lua +++ b/data-canary/lib/core/load.lua @@ -1,3 +1,3 @@ -dofile(DATA_DIRECTORY .. '/lib/core/storages.lua') -dofile(DATA_DIRECTORY .. '/lib/core/constants.lua') -dofile(DATA_DIRECTORY .. '/lib/core/quests.lua') +dofile(DATA_DIRECTORY .. "/lib/core/storages.lua") +dofile(DATA_DIRECTORY .. "/lib/core/constants.lua") +dofile(DATA_DIRECTORY .. "/lib/core/quests.lua") diff --git a/data-canary/lib/core/quests.lua b/data-canary/lib/core/quests.lua index 9e22c9d501d..1659ec31b18 100644 --- a/data-canary/lib/core/quests.lua +++ b/data-canary/lib/core/quests.lua @@ -11,9 +11,9 @@ if not Quests then missionId = 1, startValue = 1, endValue = 1, - description = "You broke the first seal." - } - } - } + description = "You broke the first seal.", + }, + }, + }, } end diff --git a/data-canary/lib/core/storages.lua b/data-canary/lib/core/storages.lua index 999b2e14c08..1586d7ebd59 100644 --- a/data-canary/lib/core/storages.lua +++ b/data-canary/lib/core/storages.lua @@ -24,23 +24,23 @@ Reserved player action storage key ranges (const.hpp) Storage = { Quest = { Key = { - ID1000 = 103 + ID1000 = 103, }, ExampleQuest = { Example = 9000, - Door = 9001 - } + Door = 9001, + }, }, DelayLargeSeaShell = 30002, Promotion = 30003, - Imbuement = 30004 + Imbuement = 30004, } GlobalStorage = { ExampleQuest = { - Example = 60000 - } + Example = 60000, + }, } -- Values extraction function @@ -64,8 +64,7 @@ table.sort(extraction) -- Sort the table if #extraction > 1 then for i = 1, #extraction - 1 do if extraction[i] == extraction[i + 1] then - logger.warn("Duplicate storage value found: {}", - extraction[i]) + logger.warn("Duplicate storage value found: {}", extraction[i]) end end end diff --git a/data-canary/lib/lib.lua b/data-canary/lib/lib.lua index dea1b457875..7a01d94f65c 100644 --- a/data-canary/lib/lib.lua +++ b/data-canary/lib/lib.lua @@ -1,2 +1,2 @@ -- Core API functions implemented in Lua -dofile(DATA_DIRECTORY .. '/lib/core/load.lua') +dofile(DATA_DIRECTORY .. "/lib/core/load.lua") diff --git a/data-canary/monster/amphibics/azure_frog.lua b/data-canary/monster/amphibics/azure_frog.lua index 33b32555dd8..94f4cbf96e6 100644 --- a/data-canary/monster/amphibics/azure_frog.lua +++ b/data-canary/monster/amphibics/azure_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 69, lookFeet = 66, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 268 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Meriana, Laguna Islands, and other Shattered Isles." + Locations = "Meriana, Laguna Islands, and other Shattered Isles.", } monster.health = 60 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,33 +59,33 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Ribbit! Ribbit!", yell = false }, - { text = "Ribbit!", yell = false } + { text = "Ribbit!", yell = false }, } monster.loot = { { name = "gold coin", chance = 74230, maxCount = 10 }, - { name = "worm", chance = 9240 } + { name = "worm", chance = 9240 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { defense = 5, - armor = 8 + armor = 8, } monster.elements = { @@ -98,14 +98,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/amphibics/bog_frog.lua b/data-canary/monster/amphibics/bog_frog.lua index 5c3d84d66ee..e590177f32d 100644 --- a/data-canary/monster/amphibics/bog_frog.lua +++ b/data-canary/monster/amphibics/bog_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 738 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Shadowthorn in the bog god's temple, Drefia, around Lake Equivocolao when it's dirty." + Locations = "Shadowthorn in the bog god's temple, Drefia, around Lake Equivocolao when it's dirty.", } monster.health = 25 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,27 +59,26 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Ribbit! Ribbit!", yell = false }, - { text = "Ribbit!", yell = false } + { text = "Ribbit!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -92,14 +91,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/amphibics/coral_frog.lua b/data-canary/monster/amphibics/coral_frog.lua index 02cdb861b74..0d1ef497716 100644 --- a/data-canary/monster/amphibics/coral_frog.lua +++ b/data-canary/monster/amphibics/coral_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 97, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 269 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Meriana, Laguna Islands, and other Shattered Isles." + Locations = "Meriana, Laguna Islands, and other Shattered Isles.", } monster.health = 60 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,33 +59,33 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Ribbit!", yell = false }, - { text = "Ribbit! Ribbit!", yell = false } + { text = "Ribbit! Ribbit!", yell = false }, } monster.loot = { { name = "gold coin", chance = 75590, maxCount = 10 }, - { name = "worm", chance = 11310 } + { name = "worm", chance = 11310 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -98,14 +98,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/amphibics/crimson_frog.lua b/data-canary/monster/amphibics/crimson_frog.lua index 2c797c792dc..52d8a304e90 100644 --- a/data-canary/monster/amphibics/crimson_frog.lua +++ b/data-canary/monster/amphibics/crimson_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 78, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 270 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Meriana, Laguna Islands, and other Shattered Isles." + Locations = "Meriana, Laguna Islands, and other Shattered Isles.", } monster.health = 60 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,33 +59,33 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Ribbit!", yell = false }, - { text = "Ribbit! Ribbit!", yell = false } + { text = "Ribbit! Ribbit!", yell = false }, } monster.loot = { { name = "gold coin", chance = 76000, maxCount = 11 }, - { name = "worm", chance = 10000 } + { name = "worm", chance = 10000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -98,14 +98,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/amphibics/deathspawn.lua b/data-canary/monster/amphibics/deathspawn.lua index f08c6103570..08f5837a8e6 100644 --- a/data-canary/monster/amphibics/deathspawn.lua +++ b/data-canary/monster/amphibics/deathspawn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 97, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 225 @@ -22,7 +22,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -59,18 +59,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -700, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 1000, chance = 11, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -450, length = 7, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false } + { name = "combat", interval = 1000, chance = 11, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -450, length = 7, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, } monster.defenses = { defense = 5, - armor = 1 + armor = 1, } monster.elements = { @@ -83,14 +82,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 15 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/amphibics/filth_toad.lua b/data-canary/monster/amphibics/filth_toad.lua index 88568344c44..faeebf7c798 100644 --- a/data-canary/monster/amphibics/filth_toad.lua +++ b/data-canary/monster/amphibics/filth_toad.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 735 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Tiquanda, around Lake Equivocolao." + Locations = "Tiquanda, around Lake Equivocolao.", } monster.health = 185 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,12 +59,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -77,18 +77,18 @@ monster.loot = { { name = "two handed sword", chance = 500 }, { name = "mace", chance = 2000 }, { id = 3578, chance = 22000 }, - { name = "poisonous slime", chance = 3000 } + { name = "poisonous slime", chance = 3000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -8, maxDamage = -17, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -8, maxDamage = -17, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { defense = 15, armor = 15, - { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -101,14 +101,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/amphibics/green_frog.lua b/data-canary/monster/amphibics/green_frog.lua index f39b09e6e04..2c307b87444 100644 --- a/data-canary/monster/amphibics/green_frog.lua +++ b/data-canary/monster/amphibics/green_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 69, lookFeet = 66, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 267 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Meriana and other Shattered Isles, Port Hope caves, The Witches Cliff (only accessible during a quest)." + Locations = "Meriana and other Shattered Isles, Port Hope caves, The Witches Cliff (only accessible during a quest).", } monster.health = 25 @@ -35,7 +35,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,31 +59,30 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Ribbit!", yell = false }, - { text = "Ribbit! Ribbit!", yell = false } + { text = "Ribbit! Ribbit!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -96,14 +95,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/amphibics/infernal_frog.lua b/data-canary/monster/amphibics/infernal_frog.lua index a7b084d2809..14fba909959 100644 --- a/data-canary/monster/amphibics/infernal_frog.lua +++ b/data-canary/monster/amphibics/infernal_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 69, lookFeet = 66, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 563 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Isle of Evil, Drefia." + Locations = "Isle of Evil, Drefia.", } monster.health = 655 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,12 +59,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -72,22 +72,22 @@ monster.voices = { chance = 10, { text = "Ribbit!", yell = false }, { text = "Ribbit! Ribbit!", yell = false }, - { text = "No Kisses for you!", yell = false } + { text = "No Kisses for you!", yell = false }, } monster.loot = { - { name = "gold coin", chance = 73330, maxCount = 65 } + { name = "gold coin", chance = 73330, maxCount = 65 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20, effect = CONST_ME_DRAWBLOOD }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -16, maxDamage = -32, shootEffect = CONST_ANI_POISON, target = true } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -16, maxDamage = -32, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { defense = 5, armor = 5, - { name = "speed", interval = 2000, chance = 20, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 8000 } + { name = "speed", interval = 2000, chance = 20, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 8000 }, } monster.elements = { @@ -100,14 +100,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/amphibics/orchid_frog.lua b/data-canary/monster/amphibics/orchid_frog.lua index 7a943aab14c..2bf534a47ee 100644 --- a/data-canary/monster/amphibics/orchid_frog.lua +++ b/data-canary/monster/amphibics/orchid_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 109, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 271 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Meriana, Laguna Islands, and other Shattered Isles." + Locations = "Meriana, Laguna Islands, and other Shattered Isles.", } monster.health = 60 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -59,33 +59,33 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Ribbit!", yell = false }, - { text = "Ribbit! Ribbit!", yell = false } + { text = "Ribbit! Ribbit!", yell = false }, } monster.loot = { { name = "gold coin", chance = 73230, maxCount = 10 }, - { name = "worm", chance = 8000 } + { name = "worm", chance = 8000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -98,14 +98,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/amphibics/salamander.lua b/data-canary/monster/amphibics/salamander.lua index 20f777ee3d2..28884cb20ef 100644 --- a/data-canary/monster/amphibics/salamander.lua +++ b/data-canary/monster/amphibics/salamander.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 913 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Shadowthorn in the bog god's temple, Drefia, around Lake Equivocolao when it's dirty." + Locations = "Shadowthorn in the bog god's temple, Drefia, around Lake Equivocolao when it's dirty.", } monster.health = 70 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,18 +59,18 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Chrrch!", yell = false } + { text = "Chrrch!", yell = false }, } monster.loot = { @@ -82,17 +82,17 @@ monster.loot = { { name = "brass helmet", chance = 2180 }, { name = "arrow", chance = 7890, maxCount = 3 }, { name = "health potion", chance = 1480 }, - { id = 3307, chance = 490 } -- scimitar + { id = 3307, chance = 490 }, -- scimitar } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 10, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 10, interval = 4000 } }, } monster.defenses = { defense = 5, armor = 5, - { name = "combat", interval = 6000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 4, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 6000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 4, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -105,14 +105,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/amphibics/toad.lua b/data-canary/monster/amphibics/toad.lua index 579e16ecbd1..a35d19b5e49 100644 --- a/data-canary/monster/amphibics/toad.lua +++ b/data-canary/monster/amphibics/toad.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 262 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "The Laguna Islands, Arena and Zoo Quarter, Tiquanda/Tarantula Caves, \z - Shadowthorn Bog God Temple, Northern Zao Plantations, Northern Brimstone Bug Cave." + Shadowthorn Bog God Temple, Northern Zao Plantations, Northern Brimstone Bug Cave.", } monster.health = 135 @@ -37,13 +37,13 @@ monster.manaCost = 400 monster.summon = { maxSummons = 1, summons = { - { name = "Azure Frog", chance = 30, interval = 1000, count = 2 } - } + { name = "Azure Frog", chance = 30, interval = 1000, count = 2 }, + }, } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -67,19 +67,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Ribbit! Ribbit!", yell = false }, - { text = "Ribbit!", yell = false } + { text = "Ribbit!", yell = false }, } monster.loot = { @@ -87,18 +87,18 @@ monster.loot = { { name = "war hammer", chance = 148 }, { name = "mace", chance = 2854 }, { id = 3578, chance = 20000 }, - { name = "poisonous slime", chance = 4761 } + { name = "poisonous slime", chance = 4761 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -8, maxDamage = -17, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -8, maxDamage = -17, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { defense = 6, armor = 6, - { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -111,14 +111,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/bosses/apocalypse.lua b/data-canary/monster/bosses/apocalypse.lua index 1c820c97c87..fba0ab1613a 100644 --- a/data-canary/monster/bosses/apocalypse.lua +++ b/data-canary/monster/bosses/apocalypse.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 160000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 40 + chance = 40, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,7 +63,7 @@ monster.voices = { { text = "BOW TO THE POWER OF THE RUTHLESS SEVEN!", yell = true }, { text = "DESTRUCTION!", yell = true }, { text = "CHAOS!", yell = true }, - { text = "DEATH TO ALL!", yell = true } + { text = "DEATH TO ALL!", yell = true }, } monster.loot = { @@ -100,7 +100,7 @@ monster.loot = { { name = "teddy bear", chance = 10500 }, { name = "thunder hammer", chance = 3500 }, { id = 3002, chance = 5100 }, -- voodoo doll - { name = "white pearl", chance = 12500, maxCount = 35 } + { name = "white pearl", chance = 12500, maxCount = 35 }, } monster.attacks = { @@ -113,14 +113,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 9, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 5000, chance = 18, minDamage = -800, maxDamage = -1000, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "combat", interval = 2000, chance = 6, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1200, radius = 14, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 6, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1200, radius = 14, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.defenses = { defense = 145, armor = 188, { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 3000, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 8, speedChange = 480, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 2000, chance = 8, speedChange = 480, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -133,18 +133,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -152,13 +151,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-canary/monster/bosses/apprentice_sheng.lua b/data-canary/monster/bosses/apprentice_sheng.lua index bd1bae05073..5e16a274500 100644 --- a/data-canary/monster/bosses/apprentice_sheng.lua +++ b/data-canary/monster/bosses/apprentice_sheng.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 95 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,19 +49,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 2, summons = { - { name = "Hyaena", chance = 30, interval = 5000, count = 2 } - } + { name = "Hyaena", chance = 30, interval = 5000, count = 2 }, + }, } monster.voices = { @@ -70,7 +70,7 @@ monster.voices = { { text = "I will protect the secrets of my master!", yell = false }, { text = "This isle will become ours alone", yell = false }, { text = "Kaplar!", yell = false }, - { text = "You already know too much.", yell = false } + { text = "You already know too much.", yell = false }, } monster.loot = { @@ -81,20 +81,20 @@ monster.loot = { { name = "leather legs", chance = 23000 }, { id = 3595, chance = 7690 }, -- carrot { name = "leather helmet", chance = 7690 }, - { name = "knife", chance = 7690 } + { name = "knife", chance = 7690 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, { name = "energyfield", interval = 1000, chance = 8, range = 7, radius = 1, shootEffect = CONST_ANI_ENERGY, target = true }, { name = "combat", interval = 1000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -25, range = 7, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -45, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -45, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 13, armor = 12, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 20, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 20, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -107,18 +107,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -126,13 +125,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-canary/monster/bosses/bazir.lua b/data-canary/monster/bosses/bazir.lua index 53a2b1cbea7..6c4a6eeccb5 100644 --- a/data-canary/monster/bosses/bazir.lua +++ b/data-canary/monster/bosses/bazir.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 110000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -49,19 +49,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 1, summons = { - { name = "bazir", chance = 15, interval = 1000, count = 1 } - } + { name = "bazir", chance = 15, interval = 1000, count = 1 }, + }, } monster.voices = { @@ -70,7 +70,7 @@ monster.voices = { { text = "COME HERE! FREE ITEMS FOR EVERYONE!", yell = true }, { text = "BOW TO THE POWER OF THE RUTHLESS SEVEN!", yell = false }, { text = "Slay your friends and I will spare you!", yell = true }, - { text = "DON'T BE AFRAID! I AM COMING IN PEACE!", yell = true } + { text = "DON'T BE AFRAID! I AM COMING IN PEACE!", yell = true }, } monster.loot = { @@ -130,7 +130,7 @@ monster.loot = { { id = 3265, chance = 20000 }, { id = 3002, chance = 100 }, { id = 3069, chance = 3500 }, - { id = 3026, chance = 12500, maxCount = 15 } + { id = 3026, chance = 12500, maxCount = 15 }, } monster.attacks = { @@ -145,7 +145,7 @@ monster.attacks = { { name = "outfit", interval = 1000, chance = 2, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "demon" }, { name = "outfit", interval = 1000, chance = 2, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitItem = 3058 }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -900, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -500, maxDamage = -850, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -500, maxDamage = -850, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -156,7 +156,7 @@ monster.defenses = { { name = "speed", interval = 1000, chance = 8, speedChange = 1901, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, { name = "invisible", interval = 1000, chance = 4, effect = CONST_ME_MAGIC_BLUE }, { name = "invisible", interval = 1000, chance = 17, effect = CONST_ME_MAGIC_BLUE }, - { name = "outfit", interval = 1000, chance = 2, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000, outfitItem = 2916 } + { name = "outfit", interval = 1000, chance = 2, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000, outfitItem = 2916 }, } monster.elements = { @@ -169,18 +169,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -188,13 +187,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-canary/monster/bosses/black_knight.lua b/data-canary/monster/bosses/black_knight.lua index 63e2ba5bd8b..1ca457b449e 100644 --- a/data-canary/monster/bosses/black_knight.lua +++ b/data-canary/monster/bosses/black_knight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 95, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 1800 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 46, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -53,12 +53,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -68,7 +68,7 @@ monster.voices = { { text = "NO PRISONERS!", yell = true }, { text = "NO MERCY!", yell = true }, { text = "By Bolg's blood!", yell = false }, - { text = "You're no match for me!", yell = false } + { text = "You're no match for me!", yell = false }, } monster.loot = { @@ -93,17 +93,17 @@ monster.loot = { { name = "lightning legs", chance = 580 }, { name = "boots of haste", chance = 400 }, { name = "dragon lance", chance = 290 }, - { name = "piggy bank", chance = 120 } + { name = "piggy bank", chance = 120 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SPEAR, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, } monster.defenses = { defense = 40, - armor = 40 + armor = 40, } monster.elements = { @@ -116,18 +116,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 20 } + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -135,13 +134,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-canary/monster/bosses/bullwark.lua b/data-canary/monster/bosses/bullwark.lua index 435678edfca..7674d1dec01 100644 --- a/data-canary/monster/bosses/bullwark.lua +++ b/data-canary/monster/bosses/bullwark.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 65000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 3 + chance = 3, } monster.bosstiary = { bossRaceId = 1060, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -54,12 +54,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -85,7 +85,7 @@ monster.loot = { { name = "moohtant cudgel", chance = 1800 }, { name = "red piece of cloth", chance = 1500 }, { name = "yellow gem", chance = 1200 }, - { name = "one hit wonder", chance = 350 } + { name = "one hit wonder", chance = 350 }, } monster.attacks = { @@ -114,18 +114,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -133,13 +132,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-canary/monster/bosses/custodian.lua b/data-canary/monster/bosses/custodian.lua index a393693b7b4..21b9721d6a8 100644 --- a/data-canary/monster/bosses/custodian.lua +++ b/data-canary/monster/bosses/custodian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 47000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1770, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -54,12 +54,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -68,18 +68,18 @@ monster.voices = { } monster.loot = { - { name = "small sapphire", chance = 33500 } + { name = "small sapphire", chance = 33500 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -610, radius = 5, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -730, radius = 4, effect = CONST_ME_FIREATTACK, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -730, radius = 4, effect = CONST_ME_FIREATTACK, target = false }, } monster.defenses = { defense = 86, - armor = 86 + armor = 86, } monster.elements = { @@ -92,18 +92,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -111,13 +110,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-canary/monster/bosses/dharalion.lua b/data-canary/monster/bosses/dharalion.lua index 1c9a4e8073a..3f86d4a5269 100644 --- a/data-canary/monster/bosses/dharalion.lua +++ b/data-canary/monster/bosses/dharalion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 380 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 203, - bossRace = RARITY_NEMESIS + bossRace = RARITY_NEMESIS, } monster.strategiesTarget = { @@ -54,19 +54,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 2, summons = { - { name = "demon skeleton", chance = 6, interval = 1000, count = 2 } - } + { name = "demon skeleton", chance = 6, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { { text = "No one will stop my ascension!", yell = false }, { text = "You desecrated this temple!", yell = false }, { text = "Muahahaha!", yell = false }, - { text = "My powers are divine!", yell = false } + { text = "My powers are divine!", yell = false }, } monster.loot = { @@ -94,7 +94,7 @@ monster.loot = { { name = "sling herb", chance = 8960 }, { id = 3257, chance = 7460 }, -- cornucopia { name = "green tunic", chance = 4480 }, - { name = "royal spear", chance = 1490, maxCount = 2 } + { name = "royal spear", chance = 1490, maxCount = 2 }, } monster.attacks = { @@ -102,14 +102,14 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -30, maxDamage = -60, range = 7, target = false }, { name = "combat", interval = 1000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -70, maxDamage = -90, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -80, maxDamage = -151, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = false }, - { name = "effect", interval = 1000, chance = 13, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false } + { name = "effect", interval = 1000, chance = 13, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 25, armor = 15, { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 90, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 7, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 } + { name = "speed", interval = 1000, chance = 7, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 }, } monster.elements = { @@ -122,18 +122,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -141,13 +140,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-canary/monster/bosses/shadowpelt.lua b/data-canary/monster/bosses/shadowpelt.lua index a085ff5d0f4..16fb1e60256 100644 --- a/data-canary/monster/bosses/shadowpelt.lua +++ b/data-canary/monster/bosses/shadowpelt.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 11 + chance = 11, } monster.bosstiary = { bossRaceId = 1561, - bossRace = RARITY_ARCHFOE + bossRace = RARITY_ARCHFOE, } monster.strategiesTarget = { @@ -54,26 +54,26 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 2, summons = { - { name = "Werebear", chance = 20, interval = 2000, count = 2 } - } + { name = "Werebear", chance = 20, interval = 2000, count = 2 }, + }, } monster.voices = { interval = 5000, chance = 10, { text = "The strength of bears will subdue the weak!", yell = false }, - { text = "It was a mistake to enter my cave!", yell = false } + { text = "It was a mistake to enter my cave!", yell = false }, } monster.loot = { @@ -98,21 +98,21 @@ monster.loot = { { name = "relic sword", chance = 550 }, { name = "silver token", chance = 150 }, { id = 22103, chance = 150 }, -- werebear trophy - { name = "wolf backpack", chance = 100 } + { name = "wolf backpack", chance = 100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 50 }, { name = "combat", interval = 100, chance = 22, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -310, radius = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "outfit", interval = 1000, chance = 1, radius = 1, target = true, duration = 2000, outfitMonster = "Werebear" }, - { name = "combat", interval = 100, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_SOUND_WHITE, target = false } + { name = "combat", interval = 100, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_SOUND_WHITE, target = false }, } monster.defenses = { defense = 30, armor = 30, { name = "combat", interval = 2000, chance = 7, type = COMBAT_HEALING, minDamage = 120, maxDamage = 310, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = 520, effect = CONST_ME_POFF, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 520, effect = CONST_ME_POFF, target = false, duration = 5000 }, } monster.elements = { @@ -125,18 +125,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -144,13 +143,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-canary/monster/demons/demon.lua b/data-canary/monster/demons/demon.lua index 293e046228b..37c6d1c6f25 100644 --- a/data-canary/monster/demons/demon.lua +++ b/data-canary/monster/demons/demon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 35 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Hero Cave, Ferumbras' Citadel, Goroma, Ghostlands (Warlock area; unreachable), \z Liberty Bay (hidden underground passage; unreachable), Razzachai, deep in Pits of Inferno \z (found in every throneroom except Verminor's), deep Formorgar Mines, Demon Forge, \z - Alchemist Quarter, Magician Quarter, Chyllfroest, Oramond Dungeon, Abandoned Sewers." + Alchemist Quarter, Magician Quarter, Chyllfroest, Oramond Dungeon, Abandoned Sewers.", } monster.health = 8200 @@ -39,7 +39,7 @@ monster.maxSummons = 1 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -67,19 +67,19 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 1, summons = { - { name = "fire elemental", chance = 10, interval = 2000 } - } + { name = "fire elemental", chance = 10, interval = 2000 }, + }, } monster.sounds = { @@ -88,8 +88,8 @@ monster.sounds = { death = SOUND_EFFECT_TYPE_DEMON_DEATH, ids = { SOUND_EFFECT_TYPE_DEMON_BARK, - SOUND_EFFECT_TYPE_UNKNOWN_CREATURE_DEATH_1 - } + SOUND_EFFECT_TYPE_UNKNOWN_CREATURE_DEATH_1, + }, } monster.voices = { @@ -99,7 +99,7 @@ monster.voices = { { text = "MUHAHAHAHA!", yell = false }, { text = "CHAMEK ATH UTHUL ARAK!", yell = false }, { text = "I SMELL FEEEEAAAAAR!", yell = false }, - { text = "Your resistance is futile!", yell = false } + { text = "Your resistance is futile!", yell = false }, } monster.loot = { @@ -136,7 +136,7 @@ monster.loot = { { id = 7393, chance = 90 }, -- demon trophy { id = 238, chance = 22220, maxCount = 3 }, -- great mana potion { id = 7643, chance = 19540, maxCount = 3 }, -- ultimate health potion - { id = 7642, chance = 18510, maxCount = 3 } -- great spirit potion + { id = 7642, chance = 18510, maxCount = 3 }, -- great spirit potion } monster.attacks = { @@ -146,14 +146,14 @@ monster.attacks = { { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -490, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -300, range = 1, shootEffect = CONST_ANI_ENERGY, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } monster.defenses = { defense = 55, armor = 55, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 180, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -166,14 +166,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 30 } + { type = COMBAT_DEATHDAMAGE, percent = 30 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/demons/destroyer.lua b/data-canary/monster/demons/destroyer.lua index 3b416b36e88..7c6bfa0ee7b 100644 --- a/data-canary/monster/demons/destroyer.lua +++ b/data-canary/monster/demons/destroyer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 287 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Pits of Inferno, Formorgar Mines, Alchemist Quarter, Oramond Dungeon." + Locations = "Pits of Inferno, Formorgar Mines, Alchemist Quarter, Oramond Dungeon.", } monster.health = 3700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { chance = 10, { text = "COME HERE AND DIE!", yell = false }, { text = "Destructiooooon!", yell = false }, - { text = "It's a good day to destroy!", yell = false } + { text = "It's a good day to destroy!", yell = false }, } monster.loot = { @@ -103,18 +103,18 @@ monster.loot = { { id = 7419, chance = 833 }, -- dreaded cleaver { id = 7427, chance = 869 }, -- chaos mace { id = 239, chance = 1136 }, -- great health potion - { id = 10298, chance = 7142 } -- metal spike + { id = 10298, chance = 7142 }, -- metal spike } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { defense = 30, armor = 30, - { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -127,14 +127,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -15 }, { type = COMBAT_HOLYDAMAGE, percent = -3 }, - { type = COMBAT_DEATHDAMAGE, percent = 20 } + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/demons/fury.lua b/data-canary/monster/demons/fury.lua index 8081f37ce00..f12b4ba628f 100644 --- a/data-canary/monster/demons/fury.lua +++ b/data-canary/monster/demons/fury.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 96, lookFeet = 0, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 291 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 4, Occurrence = 0, Locations = "Pits of Inferno (Apocalypse's Throne Room), The Inquisition Quest \z - (The Shadow Nexus, Battlefield), Vengoth, Fury Dungeon, Oramond Fury Dungeon, The Extension Site." + (The Shadow Nexus, Battlefield), Vengoth, Fury Dungeon, Oramond Fury Dungeon, The Extension Site.", } monster.health = 4100 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -75,7 +75,7 @@ monster.voices = { { text = "Ahhhhrrrr!", yell = false }, { text = "Waaaaah!", yell = false }, { text = "Caaarnaaage!", yell = false }, - { text = "Dieee!", yell = false } + { text = "Dieee!", yell = false }, } monster.loot = { @@ -97,7 +97,7 @@ monster.loot = { { id = 7404, chance = 660 }, -- assassin dagger { id = 7456, chance = 2000 }, -- noble axe { id = 239, chance = 10500 }, -- great health potion - { id = 8016, chance = 29280, maxCount = 4 } -- jalapeno pepper + { id = 8016, chance = 29280, maxCount = 4 }, -- jalapeno pepper } monster.attacks = { @@ -108,13 +108,13 @@ monster.attacks = { -- {name ="fury skill reducer", interval = 2000, chance = 5, target = false}, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -120, maxDamage = -300, radius = 3, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -125, maxDamage = -250, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -800, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -800, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 30000 }, } monster.defenses = { defense = 20, armor = 20, - { name = "speed", interval = 2000, chance = 15, speedChange = 800, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 800, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -127,14 +127,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 30 }, { type = COMBAT_HOLYDAMAGE, percent = 30 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/demons/hellhound.lua b/data-canary/monster/demons/hellhound.lua index efba4866175..4af37f63a6b 100644 --- a/data-canary/monster/demons/hellhound.lua +++ b/data-canary/monster/demons/hellhound.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 294 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 4, Occurrence = 0, Locations = "Infernatil's Throneroom The Inquisition Quest Area, Hellgorge, \z - Roshamuul Prison, Chyllfroest, Oramond Dungeon, The Extension Site and under the Asura Palace." + Roshamuul Prison, Chyllfroest, Oramond Dungeon, The Extension Site and under the Asura Palace.", } monster.health = 7500 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -64,18 +64,18 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "GROOOOWL!", yell = false } + { text = "GROOOOWL!", yell = false }, } monster.loot = { @@ -117,7 +117,7 @@ monster.loot = { { id = 7643, chance = 16000 }, -- ultimate health potion { id = 3071, chance = 7000 }, -- wand of inferno { id = 3037, chance = 4500 }, -- yellow gem - { id = 5914, chance = 6000 } -- yellow piece of cloth + { id = 5914, chance = 6000 }, -- yellow piece of cloth } monster.attacks = { @@ -127,14 +127,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -660, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -350, maxDamage = -976, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -403, radius = 1, effect = CONST_ME_HITBYFIRE, target = true }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -549, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -549, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 40, armor = 40, { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 220, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 220, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -147,14 +147,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, { type = COMBAT_HOLYDAMAGE, percent = -25 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/demons/hellspawn.lua b/data-canary/monster/demons/hellspawn.lua index a13265cd9fb..f405a08fbd4 100644 --- a/data-canary/monster/demons/hellspawn.lua +++ b/data-canary/monster/demons/hellspawn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 519 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Magician Quarter, Vengoth, Deeper Banuta, Formorgar Mines, Chyllfroest, Oramond Dungeon." + Locations = "Magician Quarter, Vengoth, Deeper Banuta, Formorgar Mines, Chyllfroest, Oramond Dungeon.", } monster.health = 3500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -78,7 +78,7 @@ monster.voices = { { text = "You little weasel will not live to see another day.", yell = false }, { text = "I'm just a messenger of what's yet to come.", yell = false }, { text = "HRAAAAAAAAAAAAAAAARRRR!", yell = true }, - { text = "I'm taking you down with me!", yell = false } + { text = "I'm taking you down with me!", yell = false }, } monster.loot = { @@ -101,7 +101,7 @@ monster.loot = { { id = 9034, chance = 140 }, -- dracoyle statue { id = 9056, chance = 151 }, -- black skull { id = 9057, chance = 5882, maxCount = 3 }, -- small topaz - { id = 10304, chance = 20000 } -- hellspawn tail + { id = 10304, chance = 20000 }, -- hellspawn tail } monster.attacks = { @@ -114,7 +114,7 @@ monster.defenses = { defense = 40, armor = 40, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 120, maxDamage = 230, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 270, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 270, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -127,14 +127,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 30 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/demons/juggernaut.lua b/data-canary/monster/demons/juggernaut.lua index f92044067f0..7b3e3d1795b 100644 --- a/data-canary/monster/demons/juggernaut.lua +++ b/data-canary/monster/demons/juggernaut.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 296 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 4, Occurrence = 0, Locations = "Deep in Pits of Inferno (Apocalypse's throne room), The Dark Path, \z - The Blood Halls, The Vats, The Hive, The Shadow Nexus, a room deep in Formorgar Mines, Roshamuul Prison, Oramond Dungeon, Grounds of Destruction." + The Blood Halls, The Vats, The Hive, The Shadow Nexus, a room deep in Formorgar Mines, Roshamuul Prison, Oramond Dungeon, Grounds of Destruction.", } monster.health = 20000 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -64,12 +64,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -77,7 +77,7 @@ monster.voices = { chance = 10, { text = "RAAARRR!", yell = false }, { text = "GRRRRRR!", yell = false }, - { text = "WAHHHH!", yell = false } + { text = "WAHHHH!", yell = false }, } monster.loot = { @@ -111,19 +111,19 @@ monster.loot = { { id = 238, chance = 35000 }, -- great mana potion { id = 239, chance = 32000 }, -- great health potion { id = 8061, chance = 400 }, -- skullcracker armor - { id = 9058, chance = 7692, maxCount = 2 } -- gold ingot + { id = 9058, chance = 7692, maxCount = 2 }, -- gold ingot } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1470 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -780, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -780, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { defense = 60, armor = 60, { name = "speed", interval = 2000, chance = 15, speedChange = 520, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -136,14 +136,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = -5 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/dragons/dragon.lua b/data-canary/monster/dragons/dragon.lua index 29a714ed3c7..5c9b6f072a0 100644 --- a/data-canary/monster/dragons/dragon.lua +++ b/data-canary/monster/dragons/dragon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 34 @@ -28,7 +28,7 @@ monster.Bestiary = { Maze of Lost Souls, southern cave and dragon tower in Shadowthorn, Orc Fortress, Venore Dragon Lair, \z Pits of Inferno, Behemoth Quest room in Edron, Hero Cave, deep Cyclopolis, Edron Dragon Lair, Goroma, \z Ankrahmun Dragon Lairs, Draconia, Dragonblaze Peaks, some Ankrahmun Tombs, \z - underground of Fenrock (on the way to Beregar), Krailos Steppe and Crystal Lakes." + underground of Fenrock (on the way to Beregar), Krailos Steppe and Crystal Lakes.", } monster.health = 1000 @@ -40,7 +40,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -68,19 +68,19 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = true, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "GROOAAARRR", yell = true }, - { text = "FCHHHHH", yell = true } + { text = "FCHHHHH", yell = true }, } monster.loot = { @@ -105,19 +105,19 @@ monster.loot = { { id = 5920, chance = 1000 }, -- green dragon scale { id = 7430, chance = 110 }, -- dragonbone staff { id = 236, chance = 1000 }, -- strong health potion - { id = 11457, chance = 9740 } -- dragon's tail + { id = 11457, chance = 9740 }, -- dragon's tail } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -140, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -170, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -170, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 30, armor = 30, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -130,14 +130,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/dragons/dragon_lord.lua b/data-canary/monster/dragons/dragon_lord.lua index 5ecc9dd5623..ba8042c99a6 100644 --- a/data-canary/monster/dragons/dragon_lord.lua +++ b/data-canary/monster/dragons/dragon_lord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 39 @@ -29,7 +29,7 @@ monster.Bestiary = { Pits of Inferno Dragon Lair, Dragon Lord hole in Plains of Havoc, Carlin Dragon Lair, \z Thais Dragon Lair, Goroma Dragon Lairs, Hot Spot, Venore Dragon Lair, Arena and Zoo Quarter (Yalahar), \z beneath Fenrock, Darashia Dragon Lair, Razzachai, Dragonblaze Peaks, Ferumbras Citadel, \z - Fury Dungeon, Lower Spike, Krailos Steppe." + Fury Dungeon, Lower Spike, Krailos Steppe.", } monster.health = 1900 @@ -41,7 +41,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -69,19 +69,19 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "ZCHHHHHHH", yell = true }, - { text = "YOU WILL BURN!", yell = true } + { text = "YOU WILL BURN!", yell = true }, } monster.loot = { @@ -106,20 +106,20 @@ monster.loot = { { id = 7378, chance = 8800, maxCount = 3 }, -- royal spear { id = 7399, chance = 80 }, -- dragon lord trophy { id = 7402, chance = 100 }, -- dragon slayer - { id = 236, chance = 970 } -- strong health potion + { id = 236, chance = 970 }, -- strong health potion } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -230 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -220, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 2000, chance = 22, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -270, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 22, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -270, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 34, armor = 34, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 57, maxDamage = 93, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 57, maxDamage = 93, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -132,14 +132,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/dragons/hydra.lua b/data-canary/monster/dragons/hydra.lua index 8eb9fc408cc..a2927a36b7d 100644 --- a/data-canary/monster/dragons/hydra.lua +++ b/data-canary/monster/dragons/hydra.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 121 @@ -28,7 +28,7 @@ monster.Bestiary = { 2 above the Forbidden Lands hydra cave here and many inside it, many in Deeper Banuta, \z many on Talahu surface, a few in Ferumbras Citadel basement on Kharos, \z 2 on a hill in the Yalahar Arena and Zoo Quarter, 1 deep in the Yalahar Foreigner Quarter (Crystal Lake), \z - many in the Oramond Hydra/Bog Raider Cave." + many in the Oramond Hydra/Bog Raider Cave.", } monster.health = 2350 @@ -40,7 +40,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -68,19 +68,19 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "FCHHHHH", yell = false }, - { text = "HISSSS", yell = false } + { text = "HISSSS", yell = false }, } monster.loot = { @@ -101,7 +101,7 @@ monster.loot = { { id = 4839, chance = 930 }, -- hydra egg { id = 237, chance = 380 }, -- strong mana potion { id = 8014, chance = 4780 }, -- cucumber - { id = 10282, chance = 10120 } -- hydra head + { id = 10282, chance = 10120 }, -- hydra head } monster.attacks = { @@ -109,13 +109,13 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 25, speedChange = -700, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true, duration = 15000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -80, maxDamage = -155, shootEffect = CONST_ANI_SMALLICE, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -66, maxDamage = -320, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -66, maxDamage = -320, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, } monster.defenses = { defense = 35, armor = 35, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 260, maxDamage = 407, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 260, maxDamage = 407, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -128,14 +128,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 50 }, { type = COMBAT_HOLYDAMAGE, percent = 30 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/dragons/ice_dragon.lua b/data-canary/monster/dragons/ice_dragon.lua index 0059210483d..414dd8a98f0 100644 --- a/data-canary/monster/dragons/ice_dragon.lua +++ b/data-canary/monster/dragons/ice_dragon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 9, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1380 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "The First Dragon's Lair." + Locations = "The First Dragon's Lair.", } monster.health = 2500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -80,7 +80,7 @@ monster.loot = { { id = 23781, chance = 3000 }, { id = 3031, chance = 95070, maxCount = 200 }, -- gold coin { id = 829, chance = 2000 }, -- glacier mask - { id = 3386, chance = 280 } -- dragon scale mail + { id = 3386, chance = 280 }, -- dragon scale mail } monster.attacks = { @@ -88,13 +88,13 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 18, minDamage = 0, maxDamage = -400, range = 7, radius = 4, effect = CONST_ME_ICETORNADO, target = true, duration = 20000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -120, range = 7, radius = 3, effect = CONST_ME_ICETORNADO, target = false }, { name = "speed", interval = 2000, chance = 12, minDamage = 0, maxDamage = -400, length = 7, spread = 3, effect = CONST_ME_ICEATTACK, target = false, duration = 20000 }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -380, length = 8, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -380, length = 8, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 35, armor = 22, - { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -107,14 +107,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/dragons/wyrm.lua b/data-canary/monster/dragons/wyrm.lua index 1ccb92e9f42..d93a500148d 100644 --- a/data-canary/monster/dragons/wyrm.lua +++ b/data-canary/monster/dragons/wyrm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 461 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Drefia Wyrm Lair (after the Medusa Shield Quest room), Darashia Wyrm Hills, Arena and Zoo Quarter, \z - beneath Fenrock, Deeper Razachai, Lower Spike, Vandura Wyrm Cave and Vandura Mountain in Liberty Bay." + beneath Fenrock, Deeper Razachai, Lower Spike, Vandura Wyrm Cave and Vandura Mountain in Liberty Bay.", } monster.health = 1825 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -64,19 +64,19 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "GRROARR", yell = false }, - { text = "GRRR", yell = false } + { text = "GRRR", yell = false }, } monster.loot = { @@ -97,7 +97,7 @@ monster.loot = { { id = 8092, chance = 420 }, -- wand of starstorm { id = 8093, chance = 990 }, -- wand of draconia { id = 9304, chance = 110 }, -- shockwave amulet - { id = 9665, chance = 15360 } -- wyrm scale + { id = 9665, chance = 15360 }, -- wyrm scale } monster.attacks = { @@ -105,14 +105,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -220, radius = 3, effect = CONST_ME_YELLOWENERGY, target = false }, -- {name ="wyrm wave", interval = 2000, chance = 40, minDamage = -130, maxDamage = -200, target = false}, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -125, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -98, maxDamage = -145, length = 4, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -98, maxDamage = -145, length = 4, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 35, armor = 35, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "effect", interval = 2000, chance = 10, radius = 1, effect = CONST_ME_SOUND_YELLOW, target = false } + { name = "effect", interval = 2000, chance = 10, radius = 1, effect = CONST_ME_SOUND_YELLOW, target = false }, } monster.elements = { @@ -125,14 +125,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/familiars/druid_familiar.lua b/data-canary/monster/familiars/druid_familiar.lua index d197da88ed9..558d2e91e2e 100644 --- a/data-canary/monster/familiars/druid_familiar.lua +++ b/data-canary/monster/familiars/druid_familiar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20000 @@ -22,7 +22,7 @@ monster.manaCost = 3000 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - familiar = true + familiar = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,20 +63,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -230, maxDamage = -260, range = 5, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_STONES, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -90, maxDamage = -150, length = 2, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "summon challenge", interval = 2000, chance = 40, target = false } + { name = "summon challenge", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 55, armor = 55, - { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 600, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 600, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -89,14 +88,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/familiars/knight_familiar.lua b/data-canary/monster/familiars/knight_familiar.lua index f5dbd05dbf5..4c6c2cd7c04 100644 --- a/data-canary/monster/familiars/knight_familiar.lua +++ b/data-canary/monster/familiars/knight_familiar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 1000 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - familiar = true + familiar = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,8 +63,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, @@ -73,13 +72,13 @@ monster.attacks = { { name = "combat", interval = 3000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -180, maxDamage = -250, range = 5, radius = 3, effect = CONST_ME_MORTAREA, target = true }, { name = "combat", interval = 3000, chance = 25, type = COMBAT_ICEDAMAGE, minDamage = -180, maxDamage = -250, range = 5, radius = 3, effect = CONST_ME_ICEAREA, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -250, range = 6, radius = 2, effect = CONST_ME_ICETORNADO, target = true }, - { name = "ice strike", interval = 2000, chance = 17, minDamage = -300, maxDamage = -350, range = 5, target = true } + { name = "ice strike", interval = 2000, chance = 17, minDamage = -300, maxDamage = -350, range = 5, target = true }, } monster.defenses = { defense = 55, armor = 55, - { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 400, maxDamage = 400, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 400, maxDamage = 400, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -92,14 +91,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/familiars/paladin_familiar.lua b/data-canary/monster/familiars/paladin_familiar.lua index 47fa23c08d1..2b678dc132d 100644 --- a/data-canary/monster/familiars/paladin_familiar.lua +++ b/data-canary/monster/familiars/paladin_familiar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 15000 @@ -22,7 +22,7 @@ monster.manaCost = 2000 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - familiar = true + familiar = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,21 +63,20 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -270, range = 5, radius = 3, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYAREA, target = true }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -270, range = 5, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_FIREDAMAGE, minDamage = -170, maxDamage = -230, range = 5, radius = 5, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_HOLYDAMAGE, minDamage = -170, maxDamage = -230, range = 5, radius = 5, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYAREA, target = true } + { name = "combat", interval = 2000, chance = 18, type = COMBAT_HOLYDAMAGE, minDamage = -170, maxDamage = -230, range = 5, radius = 5, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYAREA, target = true }, } monster.defenses = { defense = 55, armor = 55, - { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 380, maxDamage = 380, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 380, maxDamage = 380, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -90,14 +89,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/familiars/sorcerer_familiar.lua b/data-canary/monster/familiars/sorcerer_familiar.lua index 89213f60887..d153a83af28 100644 --- a/data-canary/monster/familiars/sorcerer_familiar.lua +++ b/data-canary/monster/familiars/sorcerer_familiar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20000 @@ -22,7 +22,7 @@ monster.manaCost = 3000 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - familiar = true + familiar = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,20 +63,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -150, length = 2, spread = 0, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -190, maxDamage = -210, length = 2, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "summon challenge", interval = 2000, chance = 40, target = false } + { name = "summon challenge", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 55, armor = 55, - { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 600, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 600, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -89,14 +88,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/giants/behemoth.lua b/data-canary/monster/giants/behemoth.lua index 0928c2c60b7..1843aba91a7 100644 --- a/data-canary/monster/giants/behemoth.lua +++ b/data-canary/monster/giants/behemoth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 55 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Cyclopolis, deepest part of Tarpit Tomb after the flame, Forbidden Lands, Vandura Mountain, \z Deeper Banuta, Serpentine Tower (unreachable), deep into the Formorgar Mines, Arena and Zoo Quarter, \z - The Dark Path, Lower Spike, Chyllfroest, Medusa Tower and Underground Glooth Factory (west side)." + The Dark Path, Lower Spike, Chyllfroest, Medusa Tower and Underground Glooth Factory (west side).", } monster.health = 4000 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { chance = 10, { text = "You're so little!", yell = false }, { text = "Human flesh - delicious!", yell = false }, - { text = "Crush the intruders!", yell = false } + { text = "Crush the intruders!", yell = false }, } monster.loot = { @@ -104,18 +104,18 @@ monster.loot = { { id = 7396, chance = 170 }, -- behemoth trophy { id = 7413, chance = 90 }, -- titan axe { id = 239, chance = 5120 }, -- great health potion - { id = 11447, chance = 14000 } -- battle stone + { id = 11447, chance = 14000 }, -- battle stone } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { defense = 45, armor = 45, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -128,14 +128,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 30 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/giants/cyclops.lua b/data-canary/monster/giants/cyclops.lua index f2159a6e940..2e6bb9940e6 100644 --- a/data-canary/monster/giants/cyclops.lua +++ b/data-canary/monster/giants/cyclops.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 22 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Ab'Dendriel Underground, Cyclopolis, Femor Hills, Kazordoon Prison, Kazordoon Surroundings, \z Maze of the Lost Souls, Mistrock, Mount Sternum, Outlaw Camp, Plains of Havoc, Shadowthorn, \z - Thais Northern Dungeon, Thais Surroundings, Thais Underground, Ulderek's Rock, Yalahar Foreigner Quarter." + Thais Northern Dungeon, Thais Surroundings, Thais Underground, Ulderek's Rock, Yalahar Foreigner Quarter.", } monster.health = 260 @@ -37,7 +37,7 @@ monster.manaCost = 490 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -77,7 +77,7 @@ monster.voices = { { text = "Toks utat.", yell = false }, { text = "Human, uh whil dyh!", yell = false }, { text = "Youh ah trak!", yell = false }, - { text = "Let da mashing begin!", yell = false } + { text = "Let da mashing begin!", yell = false }, } monster.loot = { @@ -93,16 +93,16 @@ monster.loot = { { id = 7398, chance = 80 }, -- cyclops trophy { name = "health potion", chance = 210 }, { name = "cyclops toe", chance = 4930 }, - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -105 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -105 }, } monster.defenses = { defense = 20, - armor = 20 + armor = 20, } monster.elements = { @@ -115,14 +115,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 20 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/giants/cyclops_drone.lua b/data-canary/monster/giants/cyclops_drone.lua index 202316ca10b..1feef59ea39 100644 --- a/data-canary/monster/giants/cyclops_drone.lua +++ b/data-canary/monster/giants/cyclops_drone.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 391 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Cyclopolis, Mount Sternum, Mistrock and in the Cyclops version of the Forsaken Mine." + Locations = "Cyclopolis, Mount Sternum, Mistrock and in the Cyclops version of the Forsaken Mine.", } monster.health = 325 @@ -35,7 +35,7 @@ monster.manaCost = 525 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -75,7 +75,7 @@ monster.voices = { { text = "Fee! Fie! Foe! Fum!", yell = false }, { text = "Luttl pest!", yell = false }, { text = "Me makking you pulp!", yell = false }, - { text = "Humy tasy! Hum hum!", yell = false } + { text = "Humy tasy! Hum hum!", yell = false }, } monster.loot = { @@ -89,17 +89,17 @@ monster.loot = { { id = 3577, chance = 50430, maxCount = 2 }, -- meat { id = 7398, chance = 120 }, -- cyclops trophy { id = 236, chance = 520 }, -- strong health potion - { id = 9657, chance = 6750 } -- cyclops toe + { id = 9657, chance = 6750 }, -- cyclops toe } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -105 }, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -80, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -80, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { defense = 20, - armor = 20 + armor = 20, } monster.elements = { @@ -112,14 +112,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 1 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/giants/cyclops_smith.lua b/data-canary/monster/giants/cyclops_smith.lua index b238ef22d93..b2eaeb4bc3f 100644 --- a/data-canary/monster/giants/cyclops_smith.lua +++ b/data-canary/monster/giants/cyclops_smith.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 389 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Cyclopolis second floor and below, Mistrock, Mount Sternum, \z - Cyclops Camp second floor and in the Cyclops version of the Forsaken Mine." + Cyclops Camp second floor and in the Cyclops version of the Forsaken Mine.", } monster.health = 435 @@ -36,7 +36,7 @@ monster.manaCost = 695 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -75,7 +75,7 @@ monster.voices = { chance = 10, { text = "Outis emoi g' onoma.", yell = false }, { text = "Whack da humy!", yell = false }, - { text = "Ai humy phary ty kaynon", yell = false } + { text = "Ai humy phary ty kaynon", yell = false }, } monster.loot = { @@ -92,18 +92,18 @@ monster.loot = { { id = 7398, chance = 140 }, -- cyclops trophy { id = 7452, chance = 150 }, -- spiked squelcher { id = 236, chance = 390 }, -- strong health potion - { id = 9657, chance = 10280 } -- cyclops toe + { id = 9657, chance = 10280 }, -- cyclops toe } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 7, shootEffect = CONST_ANI_WHIRLWINDCLUB, target = false }, - { name = "drunk", interval = 2000, chance = 10, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_STUN, target = false, duration = 4000 } + { name = "drunk", interval = 2000, chance = 10, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_STUN, target = false, duration = 4000 }, } monster.defenses = { defense = 25, - armor = 25 + armor = 25, } monster.elements = { @@ -116,14 +116,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 1 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/humanoids/frost_troll.lua b/data-canary/monster/humanoids/frost_troll.lua index 85b1090c2b3..9305c0a5712 100644 --- a/data-canary/monster/humanoids/frost_troll.lua +++ b/data-canary/monster/humanoids/frost_troll.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 53 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Ice Islands, Svargrond and Edron." + Locations = "Ice Islands, Svargrond and Edron.", } monster.health = 55 @@ -35,7 +35,7 @@ monster.manaCost = 300 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,19 +60,19 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Brrr", yell = false }, - { text = "Broar!", yell = false } + { text = "Broar!", yell = false }, } monster.loot = { @@ -83,16 +83,16 @@ monster.loot = { { id = 3412, chance = 15850 }, -- wooden shield { id = 3562, chance = 1200 }, -- coat { id = 3578, chance = 18000 }, -- fish - { id = 9648, chance = 2000 } -- frosty ear of a troll + { id = 9648, chance = 2000 }, -- frosty ear of a troll } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -105,14 +105,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = -15 } + { type = COMBAT_DEATHDAMAGE, percent = -15 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/humanoids/goblin.lua b/data-canary/monster/humanoids/goblin.lua index 276b8322556..712d1ad0321 100644 --- a/data-canary/monster/humanoids/goblin.lua +++ b/data-canary/monster/humanoids/goblin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 61 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 1, Occurrence = 0, Locations = "Femor Hills, north east of Carlin, Edron Goblin Cave, Rookgaard (Premium Area), \z - Maze of Lost Souls and Fenrock." + Maze of Lost Souls and Fenrock.", } monster.health = 50 @@ -36,7 +36,7 @@ monster.manaCost = 290 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { { text = "Zig Zag! Gobo attack!", yell = false }, { text = "Help! Goblinkiller!", yell = false }, { text = "Bugga! Bugga!", yell = false }, - { text = "Me green, me mean!", yell = false } + { text = "Me green, me mean!", yell = false }, } monster.loot = { @@ -91,17 +91,17 @@ monster.loot = { { id = 3361, chance = 2510 }, -- leather armor { id = 3462, chance = 9700 }, -- small axe { id = 3578, chance = 12750 }, -- fish - { id = 11539, chance = 910 } -- goblin ear + { id = 11539, chance = 910 }, -- goblin ear } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -25, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -25, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -114,14 +114,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 1 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/humanoids/island_troll.lua b/data-canary/monster/humanoids/island_troll.lua index 22e7c150e18..a08c76ddb25 100644 --- a/data-canary/monster/humanoids/island_troll.lua +++ b/data-canary/monster/humanoids/island_troll.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 277 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Goroma." + Locations = "Goroma.", } monster.health = 50 @@ -35,7 +35,7 @@ monster.manaCost = 290 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,12 +60,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -75,7 +75,7 @@ monster.voices = { { text = "Hmmm, dogs", yell = false }, { text = "Hmmm, worms", yell = false }, { text = "Groar", yell = false }, - { text = "Gruntz!", yell = false } + { text = "Gruntz!", yell = false }, } monster.loot = { @@ -90,16 +90,16 @@ monster.loot = { { id = 3552, chance = 10500 }, -- leather boots { id = 5096, chance = 5000 }, -- mango { id = 5901, chance = 30000 }, -- wood - { id = 901, chance = 40 } -- marlin + { id = 901, chance = 40 }, -- marlin } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -112,14 +112,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/humanoids/troll.lua b/data-canary/monster/humanoids/troll.lua index 1c902dda0bb..74c303043ed 100644 --- a/data-canary/monster/humanoids/troll.lua +++ b/data-canary/monster/humanoids/troll.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 15 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 1, Occurrence = 0, Locations = "In many dungeons around Tibia like the troll cave in Thais, south of Carlin (out the east \z - exit and down the hole), Island of Destiny, Edron Troll Cave, and in Ab'Dendriel. Also found in Rookgaard." + exit and down the hole), Island of Destiny, Edron Troll Cave, and in Ab'Dendriel. Also found in Rookgaard.", } monster.health = 50 @@ -36,7 +36,7 @@ monster.manaCost = 290 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { { text = "Groar", yell = false }, { text = "Gruntz!", yell = false }, { text = "Hmmm, bugs", yell = false }, - { text = "Hmmm, dogs", yell = false } + { text = "Hmmm, dogs", yell = false }, } monster.loot = { @@ -91,16 +91,16 @@ monster.loot = { { id = 3552, chance = 10000 }, -- leather boots { id = 3577, chance = 15000 }, -- meat { id = 9689, chance = 1000 }, -- bunch of troll hair - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -113,14 +113,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/humans/amazon.lua b/data-canary/monster/humans/amazon.lua index be58d0aa3d9..1443be056c2 100644 --- a/data-canary/monster/humans/amazon.lua +++ b/data-canary/monster/humans/amazon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 115, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 77 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Venore Amazon Camp, Carlin Amazon Camp, Amazon Tower, east of Carlin, underneath the Fields of Glory, \z - west of Venore, Oasis Tomb, on the smallest of the Laguna Islands, Foreigner Quarter and Trade Quarter." + west of Venore, Oasis Tomb, on the smallest of the Laguna Islands, Foreigner Quarter and Trade Quarter.", } monster.health = 110 @@ -36,7 +36,7 @@ monster.manaCost = 390 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -74,7 +74,7 @@ monster.voices = { chance = 10, { text = "Yeeee ha!", yell = false }, { text = "Your head shall be mine!", yell = false }, - { text = "Your head will be mine!", yell = false } + { text = "Your head will be mine!", yell = false }, } monster.loot = { @@ -87,17 +87,17 @@ monster.loot = { { id = 11444, chance = 5200 }, -- protective charm { id = 2920, chance = 1000 }, -- torch { id = 3008, chance = 260 }, -- crystal necklace - { id = 3030, chance = 130 } -- small ruby + { id = 3030, chance = 130 }, -- small ruby } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 5, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 5, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -110,14 +110,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/humans/assassin.lua b/data-canary/monster/humans/assassin.lua index 56c78153c3f..5b4ab068a86 100644 --- a/data-canary/monster/humans/assassin.lua +++ b/data-canary/monster/humans/assassin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 95, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 224 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Dark Cathedral, Trade Quarter, Factory Quarter, Foreigner Quarter." + Locations = "Dark Cathedral, Trade Quarter, Factory Quarter, Foreigner Quarter.", } monster.health = 175 @@ -35,7 +35,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -75,7 +75,7 @@ monster.voices = { chance = 10, { text = "Die!", yell = false }, { text = "Feel the hand of death!", yell = false }, - { text = "You are on my deathlist!", yell = false } + { text = "You are on my deathlist!", yell = false }, } monster.loot = { @@ -91,20 +91,20 @@ monster.loot = { { id = 3413, chance = 1600 }, -- battle shield { id = 3404, chance = 480 }, -- leopard armor { id = 3405, chance = 230 }, -- horseman helmet - { id = 7366, chance = 4200, maxCount = 7 } -- viper star + { id = 7366, chance = 4200, maxCount = 7 }, -- viper star } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -120, maxDamage = -160, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -120, maxDamage = -160, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 15, armor = 15, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -117,14 +117,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/humans/bandit.lua b/data-canary/monster/humans/bandit.lua index 52a0684e5f7..ee884cdb586 100644 --- a/data-canary/monster/humans/bandit.lua +++ b/data-canary/monster/humans/bandit.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 45, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 223 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Dark Cathedral, Tiquanda Bandit Caves, Outlaw Camp, mountain pass west of Ankrahmun, \z - Tyrsung, Thais Bandit Cave, Formorgar Mines. Also summoned by Gamel." + Tyrsung, Thais Bandit Cave, Formorgar Mines. Also summoned by Gamel.", } monster.health = 245 @@ -36,7 +36,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,19 +61,19 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Your money or your life!", yell = false }, - { text = "Hand me your purse!", yell = false } + { text = "Hand me your purse!", yell = false }, } monster.loot = { @@ -85,16 +85,16 @@ monster.loot = { { id = 3359, chance = 2500 }, -- brass armor { id = 3411, chance = 16800 }, -- brass shield { id = 3559, chance = 15500 }, -- leather legs - { id = 3596, chance = 7630, maxCount = 2 } -- tomato + { id = 3596, chance = 7630, maxCount = 2 }, -- tomato } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -107,14 +107,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/humans/hunter.lua b/data-canary/monster/humans/hunter.lua index 590047e5ad8..fc941c0c31c 100644 --- a/data-canary/monster/humans/hunter.lua +++ b/data-canary/monster/humans/hunter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 121, lookFeet = 115, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 11 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "North of Mount Sternum, Plains of Havoc, Outlaw Camp, Dark Cathedral, Femor Hills, \z Maze of Lost Souls, north of the Amazon Camp, at the entrance and in the Hero Cave, \z - a castle tower at Elvenbane, Trade Quarter, Smuggler camp on Tyrsung, Formorgar Mines." + a castle tower at Elvenbane, Trade Quarter, Smuggler camp on Tyrsung, Formorgar Mines.", } monster.health = 150 @@ -37,7 +37,7 @@ monster.manaCost = 530 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { { text = "Guess who we're hunting, hahaha!", yell = false }, { text = "Guess who we are hunting!", yell = false }, { text = "Bullseye!", yell = false }, - { text = "You'll make a nice trophy!", yell = false } + { text = "You'll make a nice trophy!", yell = false }, } monster.loot = { @@ -96,17 +96,17 @@ monster.loot = { { id = 7394, chance = 190 }, -- wolf trophy { id = 7397, chance = 520 }, -- deer trophy { id = 7400, chance = 70 }, -- lion trophy - { id = 11469, chance = 10240 } -- hunter's quiver + { id = 11469, chance = 10240 }, -- hunter's quiver } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ARROW, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -119,14 +119,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 20 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/humans/monk.lua b/data-canary/monster/humans/monk.lua index 34c35a48cd9..cb7eecfbfb3 100644 --- a/data-canary/monster/humans/monk.lua +++ b/data-canary/monster/humans/monk.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 57 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Edron Hero Cave, Triangle Tower near Thais, Maze of Lost Souls, Deeper Dark Cathedral, \z - Isle of the Kings, Trade Quarter." + Isle of the Kings, Trade Quarter.", } monster.health = 240 @@ -36,7 +36,7 @@ monster.manaCost = 600 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { chance = 10, { text = "Repent Heretic!", yell = false }, { text = "A prayer to the almighty one!", yell = false }, - { text = "I will punish the sinners!", yell = false } + { text = "I will punish the sinners!", yell = false }, } monster.loot = { @@ -92,18 +92,18 @@ monster.loot = { { id = 3600, chance = 20000 }, -- bread { id = 9646, chance = 4930 }, -- book of prayers { id = 11492, chance = 2950 }, -- rope belt - { id = 11493, chance = 1001 } -- safety pin + { id = 11493, chance = 1001 }, -- safety pin } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, } monster.defenses = { defense = 30, armor = 30, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 30, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -116,14 +116,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 50 }, - { type = COMBAT_DEATHDAMAGE, percent = 50 } + { type = COMBAT_DEATHDAMAGE, percent = 50 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/humans/valkyrie.lua b/data-canary/monster/humans/valkyrie.lua index e042c786638..92b69481741 100644 --- a/data-canary/monster/humans/valkyrie.lua +++ b/data-canary/monster/humans/valkyrie.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 96, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 12 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Amazon Camp (Venore), Amazon Camp (Carlin), Amazonia, \z - single respawn to the north west of Thais, Foreigner Quarter in Yalahar." + single respawn to the north west of Thais, Foreigner Quarter in Yalahar.", } monster.health = 190 @@ -36,7 +36,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { { text = "Head off!", yell = false }, { text = "Your head will be mine!", yell = false }, { text = "Stand still!", yell = false }, - { text = "One more head for me!", yell = false } + { text = "One more head for me!", yell = false }, } monster.loot = { @@ -93,17 +93,17 @@ monster.loot = { { id = 3114, chance = 760 }, -- skull { id = 266, chance = 500 }, -- health potion { id = 3275, chance = 430 }, -- double axe - { id = 3028, chance = 130 } -- small diamond + { id = 3028, chance = 130 }, -- small diamond } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 5, shootEffect = CONST_ANI_SPEAR, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 5, shootEffect = CONST_ANI_SPEAR, target = false }, } monster.defenses = { defense = 12, - armor = 12 + armor = 12, } monster.elements = { @@ -116,14 +116,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = 5 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/magicals/frazzlemaw.lua b/data-canary/monster/magicals/frazzlemaw.lua index b40273bdddf..366a39a1eab 100644 --- a/data-canary/monster/magicals/frazzlemaw.lua +++ b/data-canary/monster/magicals/frazzlemaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1022 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Lower Roshamuul, Guzzlemaw Valley, the entrance to Upper Roshamuul." + Locations = "Lower Roshamuul, Guzzlemaw Valley, the entrance to Upper Roshamuul.", } monster.health = 4100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -77,7 +77,7 @@ monster.voices = { { text = "Mwaaaahnducate youuuuuu *gurgle*, mwaaah!", yell = false }, { text = "Mwaaahgod! Overmwaaaaah! *gurgle*", yell = false }, { text = "MMMWAHMWAHMWAHMWAAAAH!", yell = false }, - { text = "Mmmwhamwhamwhah, mwaaah!", yell = false } + { text = "Mmmwhamwhamwhah, mwaaah!", yell = false }, } monster.loot = { @@ -109,7 +109,7 @@ monster.loot = { { id = 16279, chance = 10000 }, -- crystal rubbish { id = 20062, chance = 450 }, -- cluster of solace { id = 20198, chance = 18760 }, -- frazzle tongue - { id = 20199, chance = 16000 } -- frazzle skin + { id = 20199, chance = 16000 }, -- frazzle skin } monster.attacks = { @@ -119,13 +119,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 30, armor = 30, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -138,14 +138,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 5 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 15 } + { type = COMBAT_DEATHDAMAGE, percent = 15 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/magicals/guzzlemaw.lua b/data-canary/monster/magicals/guzzlemaw.lua index af651e87508..8d3902203d1 100644 --- a/data-canary/monster/magicals/guzzlemaw.lua +++ b/data-canary/monster/magicals/guzzlemaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1013 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 4, Occurrence = 0, Locations = "Guzzlemaw Valley, and a single spawn in a tower in Upper Roshamuul \z - (south of the Depot and west of the entrance to Roshamuul Prison)." + (south of the Depot and west of the entrance to Roshamuul Prison).", } monster.health = 6400 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -64,12 +64,12 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -105,7 +105,7 @@ monster.loot = { { id = 16279, chance = 12000 }, -- crystal rubbish { id = 20062, chance = 920 }, -- cluster of solace { id = 20198, chance = 15000 }, -- frazzle tongue - { id = 20199, chance = 14000 } -- frazzle skin + { id = 20199, chance = 14000 }, -- frazzle skin } monster.attacks = { @@ -115,13 +115,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -900, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -800, radius = 6, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 50, armor = 50, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -134,14 +134,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 5 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 5 } + { type = COMBAT_DEATHDAMAGE, percent = 5 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/mammals/bat.lua b/data-canary/monster/mammals/bat.lua index 48a3a4ad2be..d84ffd6236a 100644 --- a/data-canary/monster/mammals/bat.lua +++ b/data-canary/monster/mammals/bat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 122 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 1, Occurrence = 0, Locations = "Dark Cathedral, Tiquanda, Drefia, Mount Sternum, Folda, Ghostlands, Kazordoon, \z - Femor Hills, Thais Bat Dungeon, Thais Bandit Cave and in many other caves." + Femor Hills, Thais Bat Dungeon, Thais Bandit Cave and in many other caves.", } monster.health = 30 @@ -36,7 +36,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,31 +61,31 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Flap!Flap!", yell = false } + { text = "Flap!Flap!", yell = false }, } monster.loot = { - { id = 5894, chance = 1220 } -- bat wing + { id = 5894, chance = 1220 }, -- bat wing } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -98,14 +98,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/mammals/cave_rat.lua b/data-canary/monster/mammals/cave_rat.lua index c4ba821ba1d..099e2fb1dc2 100644 --- a/data-canary/monster/mammals/cave_rat.lua +++ b/data-canary/monster/mammals/cave_rat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 56 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Almost everywhere in tibia, they seem to have a nest-like place in Greenshore, \z a semi-large spawn at the entrance to the Port Hope troll cave and in cave near Ankrahmun ship. \z - Also appears in Rat Plague in Thais and Rat Plague in Rookgaard." + Also appears in Rat Plague in Thais and Rat Plague in Rookgaard.", } monster.health = 30 @@ -37,7 +37,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,35 +62,35 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Meeeeep!", yell = false }, - { text = "Meep!", yell = false } + { text = "Meep!", yell = false }, } monster.loot = { { id = 3031, chance = 85000, maxCount = 2 }, -- gold coin { id = 3598, chance = 750 }, -- cookie { id = 3607, chance = 30000 }, -- cheese - { id = 3492, chance = 9700, maxCount = 2 } -- worm + { id = 3492, chance = 9700, maxCount = 2 }, -- worm } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -103,14 +103,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/mammals/winter_wolf.lua b/data-canary/monster/mammals/winter_wolf.lua index eb1443126ea..0768f532a01 100644 --- a/data-canary/monster/mammals/winter_wolf.lua +++ b/data-canary/monster/mammals/winter_wolf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 52 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Ice Islands." + Locations = "Ice Islands.", } monster.health = 30 @@ -35,7 +35,7 @@ monster.manaCost = 260 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,32 +60,32 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Yoooohhuuuu!", yell = false } + { text = "Yoooohhuuuu!", yell = false }, } monster.loot = { { id = 3577, chance = 30000, maxCount = 2 }, -- meat - { id = 10295, chance = 10000 } -- winter wolf fur + { id = 10295, chance = 10000 }, -- winter wolf fur } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -98,14 +98,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 5 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/mammals/wolf.lua b/data-canary/monster/mammals/wolf.lua index 859bdc5ed41..6184add5843 100644 --- a/data-canary/monster/mammals/wolf.lua +++ b/data-canary/monster/mammals/wolf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 27 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "In almost all grass areas in Tibia, also found in Rookgaard and Dawnport." + Locations = "In almost all grass areas in Tibia, also found in Rookgaard and Dawnport.", } monster.health = 25 @@ -35,7 +35,7 @@ monster.manaCost = 255 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,33 +60,33 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Yoooohhuuuu!", yell = false }, - { text = "Grrrrrrr", yell = false } + { text = "Grrrrrrr", yell = false }, } monster.loot = { { id = 3577, chance = 55000, maxCount = 2 }, -- meat - { id = 5897, chance = 980 } -- wolf paw + { id = 5897, chance = 980 }, -- wolf paw } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -99,14 +99,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, { type = COMBAT_HOLYDAMAGE, percent = 5 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/reptiles/crocodile.lua b/data-canary/monster/reptiles/crocodile.lua index ad297ba68d3..0d493212c50 100644 --- a/data-canary/monster/reptiles/crocodile.lua +++ b/data-canary/monster/reptiles/crocodile.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 119 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "In the crocodile cave and the jungle east of Port Hope as well as the swamp to the north, \z - Fenrock, Arena and Zoo Quarter, Trade Quarter, Talahu, also located on Meriana and Laguna Islands." + Fenrock, Arena and Zoo Quarter, Trade Quarter, Talahu, also located on Meriana and Laguna Islands.", } monster.health = 105 @@ -36,7 +36,7 @@ monster.manaCost = 350 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -79,16 +79,16 @@ monster.loot = { { id = 3031, chance = 50000, maxCount = 10 }, -- gold coin { id = 3582, chance = 40000 }, -- ham { id = 3556, chance = 100 }, -- crocodile boots - { id = 10279, chance = 20180 } -- piece of crocodile leather + { id = 10279, chance = 20180 }, -- piece of crocodile leather } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -101,14 +101,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/reptiles/snake.lua b/data-canary/monster/reptiles/snake.lua index d90b05a110d..f3bed935391 100644 --- a/data-canary/monster/reptiles/snake.lua +++ b/data-canary/monster/reptiles/snake.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 28 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "In almost all grassy areas of Tibia. Also found in Rookgaard." + Locations = "In almost all grassy areas of Tibia. Also found in Rookgaard.", } monster.health = 15 @@ -35,7 +35,7 @@ monster.manaCost = 205 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,30 +60,29 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Zzzzzzt", yell = false } + { text = "Zzzzzzt", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -96,14 +95,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/reptiles/tortoise.lua b/data-canary/monster/reptiles/tortoise.lua index abf6f925a0d..a56b44bc264 100644 --- a/data-canary/monster/reptiles/tortoise.lua +++ b/data-canary/monster/reptiles/tortoise.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 258 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Laguna Islands, Fenrock, Port Hope and also can be found behind a wall below the \z - center of Liberty Bay. These cannot be reached." + center of Liberty Bay. These cannot be reached.", } monster.health = 185 @@ -36,7 +36,7 @@ monster.manaCost = 445 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -81,16 +81,16 @@ monster.loot = { { id = 3578, chance = 4600 }, -- fish { id = 5678, chance = 770, maxCount = 2 }, -- tortoise egg { id = 5899, chance = 1300 }, -- turtle shell - { id = 6131, chance = 200 } -- tortoise shield + { id = 6131, chance = 200 }, -- tortoise shield } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, } monster.elements = { @@ -103,14 +103,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/slimes/defiler.lua b/data-canary/monster/slimes/defiler.lua index c87a0ba21d3..62c68fba3e5 100644 --- a/data-canary/monster/slimes/defiler.lua +++ b/data-canary/monster/slimes/defiler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 289 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Pits of Inferno, The Vats - Edron." + Locations = "Pits of Inferno, The Vats - Edron.", } monster.health = 3650 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,19 +63,19 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Blubb", yell = false }, - { text = "Blubb Blubb", yell = false } + { text = "Blubb Blubb", yell = false }, } monster.loot = { @@ -95,7 +95,7 @@ monster.loot = { { id = 6299, chance = 3030 }, -- death ring { id = 6499, chance = 20320 }, -- demonic essence { id = 9054, chance = 14210 }, -- glob of acid slime - { id = 9055, chance = 12000 } -- glob of tar + { id = 9055, chance = 12000 }, -- glob of tar } monster.attacks = { @@ -106,13 +106,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -170, radius = 3, effect = CONST_ME_POISONAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -500, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_SMALLPLANTS, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 15000 }, } monster.defenses = { defense = 20, armor = 20, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 280, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 280, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -125,14 +125,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/slimes/slime.lua b/data-canary/monster/slimes/slime.lua index 4433db2599d..f59cc2be823 100644 --- a/data-canary/monster/slimes/slime.lua +++ b/data-canary/monster/slimes/slime.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 19 @@ -28,7 +28,7 @@ monster.Bestiary = { Green Claw Swamp, Dwarf Mines, Villa Scapula, Ankrahmun Tombs, Dark Cathedral, north of Port Hope, \z Deeper Banuta, on Folda on the floor above the Water Elementals, Hellgate, Vengoth, Alchemist Quarter, \z Yalahar and Carlin sewers, Ghostlands, Desert Dungeon, Dusalk's Troll Clan Cave, Nargor, \z - and in a cave northeast of Ab'Dendriel." + and in a cave northeast of Ab'Dendriel.", } monster.health = 150 @@ -41,7 +41,7 @@ monster.maxSummons = 3 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -66,37 +66,36 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 1, summons = { - { name = "Slime", chance = 10, interval = 2000 } - } + { name = "Slime", chance = 10, interval = 2000 }, + }, } monster.voices = { interval = 5000, chance = 10, - { text = "Blubb", yell = false } + { text = "Blubb", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -109,14 +108,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/undeads/ghoul.lua b/data-canary/monster/undeads/ghoul.lua index a7718e6545d..c2512610363 100644 --- a/data-canary/monster/undeads/ghoul.lua +++ b/data-canary/monster/undeads/ghoul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 18 @@ -30,7 +30,7 @@ monster.Bestiary = { Venore Swamp Troll cave, Ghostship between Venore and Darashia, Triangle Tower, Dark Cathedral, \z Ankrahmun tombs, Isle of the Kings, Treasure Island, Nargor Undead Cave, Helheim, Lion's Rock, \z The Witches' Cliff (only accessible during a quest) and a cave northeast of Ab'Dendriel. \z - Also found behind a wall in both Rookgaard and Paradox Tower, although they cannot be reached." + Also found behind a wall in both Rookgaard and Paradox Tower, although they cannot be reached.", } monster.health = 100 @@ -42,7 +42,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -67,12 +67,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -92,18 +92,18 @@ monster.loot = { { id = 10291, chance = 14470 }, -- rotten piece of cloth { id = 11467, chance = 5130 }, -- ghoul snack { id = 11484, chance = 950 }, -- pile of grave earth - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -27, range = 1, radius = 1, effect = CONST_ME_SMALLCLOUDS, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -27, range = 1, radius = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, } monster.defenses = { defense = 15, armor = 15, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 9, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 9, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -116,14 +116,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = -25 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/undeads/mummy.lua b/data-canary/monster/undeads/mummy.lua index dcac7e90b10..6d391772889 100644 --- a/data-canary/monster/undeads/mummy.lua +++ b/data-canary/monster/undeads/mummy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 65 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Drefia, Darama's Dark Pyramid, Draconia, Mount Sternum Undead Cave, Green Claw Swamp, \z - Venore Amazon Camp underground, Helheim, Upper Spike, all Tombs, Dark Cathedral, Lion's Rock." + Venore Amazon Camp underground, Helheim, Upper Spike, all Tombs, Dark Cathedral, Lion's Rock.", } monster.health = 240 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -77,7 +77,7 @@ monster.voices = { { text = "Flesssh to dussst!", yell = false }, { text = "I will tassste life again!", yell = false }, { text = "Ahkahra exura belil mort!", yell = false }, - { text = "Yohag Sssetham!", yell = false } + { text = "Yohag Sssetham!", yell = false }, } monster.loot = { @@ -94,18 +94,18 @@ monster.loot = { { id = 5914, chance = 900 }, -- yellow piece of cloth { id = 9649, chance = 10000 }, -- gauze bandage { id = 10290, chance = 10 }, -- mini mummy - { id = 11466, chance = 11690 } -- flask of embalming fluid + { id = 11466, chance = 11690 }, -- flask of embalming fluid } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -85, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -40, range = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -226, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 10000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -226, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 10000 }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -118,14 +118,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = -25 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/undeads/skeleton.lua b/data-canary/monster/undeads/skeleton.lua index 7d474199346..a9c5d62a27d 100644 --- a/data-canary/monster/undeads/skeleton.lua +++ b/data-canary/monster/undeads/skeleton.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 33 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "In many dungeons around Tibia, like the Ancient Temple and Ghostlands. \z Also found in Rookgaard tombs and north east of Port Hope, in the jungle of Tiquanda, \z - beneath Fenrock and in the desert Tombs, Vengoth Castle." + beneath Fenrock and in the desert Tombs, Vengoth Castle.", } monster.health = 50 @@ -37,7 +37,7 @@ monster.manaCost = 300 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -86,17 +86,17 @@ monster.loot = { { id = 3367, chance = 7520 }, -- viking helmet { id = 3411, chance = 2090 }, -- brass shield { id = 11481, chance = 9940 }, -- pelvis bone - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 1, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 1, target = false }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -109,14 +109,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = -5 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/vermins/poison_spider.lua b/data-canary/monster/vermins/poison_spider.lua index ddbd0e46888..c9b7ec6a0d3 100644 --- a/data-canary/monster/vermins/poison_spider.lua +++ b/data-canary/monster/vermins/poison_spider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 36 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Found in various caves and plains around Tibia (including Rookgaard)." + Locations = "Found in various caves and plains around Tibia (including Rookgaard).", } monster.health = 26 @@ -35,7 +35,7 @@ monster.manaCost = 270 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,12 +60,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -75,16 +75,16 @@ monster.voices = { monster.loot = { { id = 3031, chance = 75000, maxCount = 4 }, -- gold coin - { id = 11485, chance = 1140 } -- poison spider shell + { id = 11485, chance = 1140 }, -- poison spider shell } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20, condition = { type = CONDITION_POISON, totalDamage = 30, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20, condition = { type = CONDITION_POISON, totalDamage = 30, interval = 4000 } }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -97,14 +97,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/vermins/sandcrawler.lua b/data-canary/monster/vermins/sandcrawler.lua index f698d8883d1..08c11f127fb 100644 --- a/data-canary/monster/vermins/sandcrawler.lua +++ b/data-canary/monster/vermins/sandcrawler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 641 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Zao Steppe, Raging Mage tower, Ankrahmun Desert, Darashia Desert, Drefia." + Locations = "Zao Steppe, Raging Mage tower, Ankrahmun Desert, Darashia Desert, Drefia.", } monster.health = 30 @@ -35,7 +35,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,32 +60,32 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Chrk chrk!", yell = false } + { text = "Chrk chrk!", yell = false }, } monster.loot = { { id = 3031, chance = 33333, maxCount = 6 }, -- gold coin - { id = 10456, chance = 2173 } -- sandcrawler shell + { id = 10456, chance = 2173 }, -- sandcrawler shell } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -3 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -3 }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -98,14 +98,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/vermins/spider.lua b/data-canary/monster/vermins/spider.lua index 2ff269794cb..a93e7c93f77 100644 --- a/data-canary/monster/vermins/spider.lua +++ b/data-canary/monster/vermins/spider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 30 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 1, Occurrence = 0, Locations = "Almost everywhere, in grass areas, sewers like Carlin sewers, \z - caves like as Ancient Temple, Rookgaard and the Tiquanda Tarantula Caves." + caves like as Ancient Temple, Rookgaard and the Tiquanda Tarantula Caves.", } monster.health = 20 @@ -36,7 +36,7 @@ monster.manaCost = 210 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,16 +76,16 @@ monster.voices = { monster.loot = { { id = 3031, chance = 65150, maxCount = 5 }, -- gold coin - { id = 8031, chance = 960 } -- spider fangs + { id = 8031, chance = 960 }, -- spider fangs } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -9 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -9 }, } monster.defenses = { defense = 2, - armor = 2 + armor = 2, } monster.elements = { @@ -98,14 +98,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/vermins/wasp.lua b/data-canary/monster/vermins/wasp.lua index 48dab6764ab..89cd57cb575 100644 --- a/data-canary/monster/vermins/wasp.lua +++ b/data-canary/monster/vermins/wasp.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 44 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "South of Thais, west of Ab'Dendriel, northeastern Cormaya, \z Green Claw Swamp between Kazordoon and Venore, Wasp Tower in Rookgaard, \z - Wasp Towers in Darashia, all over Tiquanda, and all over Vandura." + Wasp Towers in Darashia, all over Tiquanda, and all over Vandura.", } monster.health = 35 @@ -37,7 +37,7 @@ monster.manaCost = 280 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,31 +63,31 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Bssssss", yell = false } + { text = "Bssssss", yell = false }, } monster.loot = { - { id = 5902, chance = 3000 } -- honeycomb + { id = 5902, chance = 3000 }, -- honeycomb } monster.attacks = { - { name = "melee", interval = 1500, chance = 100, minDamage = 0, maxDamage = -20, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } } + { name = "melee", interval = 1500, chance = 100, minDamage = 0, maxDamage = -20, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -100,14 +100,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/npc/canary.lua b/data-canary/npc/canary.lua index 696a2652dcb..dca6f1777b1 100644 --- a/data-canary/npc/canary.lua +++ b/data-canary/npc/canary.lua @@ -18,7 +18,7 @@ npcConfig.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 2, - lookMount = 42 + lookMount = 42, } npcConfig.sounds = { @@ -28,18 +28,18 @@ npcConfig.sounds = { SOUND_EFFECT_TYPE_ACTION_HITING_FORGE, SOUND_EFFECT_TYPE_ACTION_WOOD_HIT, SOUND_EFFECT_TYPE_ACTION_CRATE_BREAK_MAGIC_DUST, - SOUND_EFFECT_TYPE_ACTION_SWORD_DRAWN - } + SOUND_EFFECT_TYPE_ACTION_SWORD_DRAWN, + }, } npcConfig.voices = { interval = 15000, chance = 20, - { text = "Welcome to the Canary Server!" } + { text = "Welcome to the Canary Server!" }, } npcConfig.flags = { - floorchange = false + floorchange = false, } -- Npc shop @@ -73,7 +73,7 @@ npcConfig.shop = { { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "waterskin of water", clientId = 2901, buy = 10, count = 1 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- Create keywordHandler and npcHandler @@ -121,8 +121,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end -- Function called by the callback "npcHandler:setCallback(CALLBACK_GREET, greetCallback)" in end of file local function greetCallback(npc, player) @@ -143,7 +142,7 @@ local function creatureSayCallback(npc, player, type, msg) "The goal is for Canary to be an 'engine', that is, it will be \z a server with a 'clean' datapack, with as few things as possible, \z thus facilitating development and testing.", - "See more on our {discord group}." + "See more on our {discord group}.", }, npc, player, 3000) npcHandler:setTopic(playerId, 1) end diff --git a/data-canary/scripts/actions/imbuement_shrine.lua b/data-canary/scripts/actions/imbuement_shrine.lua index eb3b0703103..71e3776f2f0 100644 --- a/data-canary/scripts/actions/imbuement_shrine.lua +++ b/data-canary/scripts/actions/imbuement_shrine.lua @@ -5,7 +5,7 @@ function imbuement.onUse(player, item, fromPosition, target, toPosition, isHotke return player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You did not collect enough knowledge from the ancient Shapers. Visit the Shaper temple in Montag for help.") end - if not (target) or not (target:isItem()) then + if not target or not (target:isItem()) then return player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can only use the shrine on an valid item.") end diff --git a/data-canary/scripts/actions/other/bed_modification_kits.lua b/data-canary/scripts/actions/other/bed_modification_kits.lua index 715c5970cd0..431e3cef5eb 100644 --- a/data-canary/scripts/actions/other/bed_modification_kits.lua +++ b/data-canary/scripts/actions/other/bed_modification_kits.lua @@ -3,7 +3,7 @@ local setting = { [832] = { { 742, 743 }, { 744, 745 } }, -- yellow kit [833] = { { 738, 739 }, { 740, 741 } }, -- red kit [834] = { { 2487, 2488 }, { 2493, 2494 } }, -- removal kit - [17972] = { { 17917, 17918 }, { 17919, 17920 } } -- canopy kit + [17972] = { { 17917, 17918 }, { 17919, 17920 } }, -- canopy kit } local function internalBedTransform(item, targetItem, toPosition, itemArray) diff --git a/data-canary/scripts/actions/other/carpets.lua b/data-canary/scripts/actions/other/carpets.lua index 564dde3a7de..aaa90026a22 100644 --- a/data-canary/scripts/actions/other/carpets.lua +++ b/data-canary/scripts/actions/other/carpets.lua @@ -52,7 +52,7 @@ local carpetItems = { [26152] = 26153, [26153] = 26152, -- Crested carpet [26154] = 26155, - [26155] = 26154 -- Decorated carpet + [26155] = 26154, -- Decorated carpet } local carpets = Action() diff --git a/data-canary/scripts/actions/other/cask_kegs.lua b/data-canary/scripts/actions/other/cask_kegs.lua index e0f19a2b572..2c1a7499e99 100644 --- a/data-canary/scripts/actions/other/cask_kegs.lua +++ b/data-canary/scripts/actions/other/cask_kegs.lua @@ -29,7 +29,7 @@ local targetIdList = { --spirit potions kegs [25913] = { itemId = 284, transform = 7642 }, -- Great Spirit -- - [25914] = { itemId = 284, transform = 23374 } --Ultimate Spirit -- + [25914] = { itemId = 284, transform = 23374 }, --Ultimate Spirit -- } local flasks = Action() diff --git a/data-canary/scripts/actions/other/change_gold.lua b/data-canary/scripts/actions/other/change_gold.lua index 5b3c497aa82..dc44b081d3a 100644 --- a/data-canary/scripts/actions/other/change_gold.lua +++ b/data-canary/scripts/actions/other/change_gold.lua @@ -1,7 +1,7 @@ local goldCoins = { [3031] = { changeTo = 3035 }, [3035] = { changeBack = 3031, changeTo = 3043 }, - [3043] = { changeBack = 3035 } + [3043] = { changeBack = 3035 }, } local changeGold = Action() diff --git a/data-canary/scripts/actions/other/christmas_bundle.lua b/data-canary/scripts/actions/other/christmas_bundle.lua index e72ccceb39e..3c74fa30a4d 100644 --- a/data-canary/scripts/actions/other/christmas_bundle.lua +++ b/data-canary/scripts/actions/other/christmas_bundle.lua @@ -9,7 +9,7 @@ local setting = { -- [christmas bundle item id] = {{reward item id, count}, ...} 6501, -- christmas wreath 6489, -- christmas branch 6503, -- red christmas garland - 6387 -- christmas card + 6387, -- christmas card }, [6507] = { -- blue bundle { 6569, 15 }, -- candy @@ -21,7 +21,7 @@ local setting = { -- [christmas bundle item id] = {{reward item id, count}, ...} 6501, -- christmas wreath 6489, -- christmas branch 6505, -- blue christmas garland - 6387 -- christmas card + 6387, -- christmas card }, [6508] = { -- green bundle { 6569, 15 }, -- candy @@ -33,8 +33,8 @@ local setting = { -- [christmas bundle item id] = {{reward item id, count}, ...} 6501, -- christmas wreath 6489, -- christmas branch 6502, -- christmas garland - 6387 -- christmas card - } + 6387, -- christmas card + }, } local christmasBundle = Action() @@ -53,7 +53,7 @@ function christmasBundle.onUse(player, item, fromPosition, target, toPosition, i if type(gift) == "table" then gift, count = unpack(gift) end - rewards[#rewards+1] = { gift, count } + rewards[#rewards + 1] = { gift, count } table.remove(targetItem, rand) end diff --git a/data-canary/scripts/actions/other/clay_lump.lua b/data-canary/scripts/actions/other/clay_lump.lua index 0a44e082354..932f35ad744 100644 --- a/data-canary/scripts/actions/other/clay_lump.lua +++ b/data-canary/scripts/actions/other/clay_lump.lua @@ -2,23 +2,23 @@ local setting = { { chance = { 0.0, 1.54 }, transformId = 10425, - description = "This little figurine of Brog, the raging Titan, was skillfully made by |PLAYERNAME|." + description = "This little figurine of Brog, the raging Titan, was skillfully made by |PLAYERNAME|.", }, { chance = { 1.54, 9.16 }, transformId = 10424, - description = "It was made by |PLAYERNAME| and is clearly a little figurine of.. hm, one does not recognise that yet." + description = "It was made by |PLAYERNAME| and is clearly a little figurine of.. hm, one does not recognise that yet.", }, { chance = { 9.16, 25.48 }, transformId = 10423, - description = "It was made by |PLAYERNAME|, whose potter skills could use some serious improvement." + description = "It was made by |PLAYERNAME|, whose potter skills could use some serious improvement.", }, { chance = { 25.48, 100.0 }, remove = true, - sound = "Aw man. That did not work out too well." - } + sound = "Aw man. That did not work out too well.", + }, } local clayLump = Action() @@ -38,7 +38,7 @@ function clayLump.onUse(player, item, fromPosition, target, toPosition, isHotkey player:say(tmpItem.sound, TALKTYPE_MONSTER_SAY, false, player) end if tmpItem.description then - item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, tmpItem.description:gsub('|PLAYERNAME|', player:getName())) + item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, tmpItem.description:gsub("|PLAYERNAME|", player:getName())) end break end diff --git a/data-canary/scripts/actions/other/construction_kits.lua b/data-canary/scripts/actions/other/construction_kits.lua index c6b5550381e..4002fe0316c 100644 --- a/data-canary/scripts/actions/other/construction_kits.lua +++ b/data-canary/scripts/actions/other/construction_kits.lua @@ -55,7 +55,7 @@ local setting = { [14756] = 14755, [17974] = 18015, [17975] = 18017, - [17977] = 18019 + [17977] = 18019, } local constructionKits = Action() @@ -73,7 +73,7 @@ function constructionKits.onUse(player, item, fromPosition, target, toPosition, else item:transform(kit) fromPosition:sendMagicEffect(CONST_ME_POFF) - player:addAchievementProgress('Interior Decorator', 1000) + player:addAchievementProgress("Interior Decorator", 1000) end return true end diff --git a/data-canary/scripts/actions/other/costume_bag.lua b/data-canary/scripts/actions/other/costume_bag.lua index 01e3827e26e..e67b8817c3d 100644 --- a/data-canary/scripts/actions/other/costume_bag.lua +++ b/data-canary/scripts/actions/other/costume_bag.lua @@ -5,7 +5,7 @@ local setting = { "pirate cutthroat", "dworc voodoomaster", "dwarf guard", - "minotaur mage" + "minotaur mage", }, -- Uncommon [654] = { @@ -13,7 +13,7 @@ local setting = { "diabolic imp", "banshee", "frost giant", - "lich" + "lich", }, -- Deluxe [655] = { @@ -21,7 +21,7 @@ local setting = { "demon", "juggernaut", "behemoth", - "ashmunrah" + "ashmunrah", }, } diff --git a/data-canary/scripts/actions/other/destroy.lua b/data-canary/scripts/actions/other/destroy.lua index c838aa840d8..587df2f5ea7 100644 --- a/data-canary/scripts/actions/other/destroy.lua +++ b/data-canary/scripts/actions/other/destroy.lua @@ -244,7 +244,7 @@ local setting = { 31580, -- mortal mace 31614, -- tagralt blade 32093, -- meat hammer - 32616 -- phantasmal axe + 32616, -- phantasmal axe } local destroy = Action() diff --git a/data-canary/scripts/actions/other/dolls.lua b/data-canary/scripts/actions/other/dolls.lua index 4a42583050f..c59270f85a6 100644 --- a/data-canary/scripts/actions/other/dolls.lua +++ b/data-canary/scripts/actions/other/dolls.lua @@ -10,14 +10,14 @@ local dollsTable = { "You should do something you always wanted to.", "If you walk under a ladder and it falls down on you it probably means bad luck.", "Never say 'oops'. Always say 'Ah, interesting!'", - "Five steps east, fourteen steps south, two steps north and seventeen steps west!" + "Five steps east, fourteen steps south, two steps north and seventeen steps west!", }, [6566] = { "Fchhhhhh!", "Zchhhhhh!", "Grooaaaaar*cough*", "Aaa... CHOO!", - "You... will.... burn!!" + "You... will.... burn!!", }, [6387] = { "Merry Christmas |PLAYERNAME|." }, [6511] = { @@ -26,7 +26,7 @@ local dollsTable = { "Have you been naughty?", "Have you been nice?", "Merry Christmas!", - "Can you stop squeezing me now... I'm starting to feel a little sick." + "Can you stop squeezing me now... I'm starting to feel a little sick.", }, [8146] = { "ARE YOU PREPARED TO FACE YOUR DESTINY?" }, [8149] = { @@ -34,44 +34,44 @@ local dollsTable = { "Pie for breakfast, pie for lunch and pie for dinner!", "All hail the control panel!", "I own, god owns, perfect match!", - "Hug me! Feed me! Hail me!" + "Hug me! Feed me! Hail me!", }, [8153] = { "It's news to me.", "News, updated as infrequently as possible!", "Extra! Extra! Read all about it!", - "Fresh off the press!" + "Fresh off the press!", }, [8154] = { "Hail!", "So cold.", - "Run, mammoth!" + "Run, mammoth!", }, [9144] = { "Hail |PLAYERNAME|! Hail!", "Hauopa!", "WHERE IS MY HYDROMEL?!", - "Yala Boom" + "Yala Boom", }, [12043] = { "For zze emperor!", "Hail!", - "Hail |PLAYERNAME|!" + "Hail |PLAYERNAME|!", }, [12904] = { "Mhausheausheu! What a FAIL! Mwahaha!", "Hail |PLAYERNAME|! You are wearing old socks!", "You are so unpopular even your own shadow refuses to follow you.", - "Have fun!" + "Have fun!", }, [14764] = { "My powers are limitless!", - "Hail!" + "Hail!", }, [18343] = { "Hail!", "Shhhhhh, please be quiet!", - "Books are great!! Aren't they?" + "Books are great!! Aren't they?", }, [21435] = { "I can hear their whisperings... Revenge!", @@ -79,27 +79,27 @@ local dollsTable = { "I do not need a sword to slaughter you", "My sword is broken, but my spirit is not dead", "I can say 469 and more...", - "My dark magic lies on the world" + "My dark magic lies on the world", }, [21947] = { "Hail!", "Don't be afraid of the darkness!", "Feel lucky, |PLAYERNAME|!", - "Purrrrrrr!" + "Purrrrrrr!", }, [21962] = { "Hail! (União&Força)", "Hail |PLAYERNAME|! (União&Força)", "Only the real killers can touch me!", "The path of assassin is found in death, DIE!", - " Ahhh... silent and deadly..." + " Ahhh... silent and deadly...", }, [22120] = { "Silence! I smell something!", "Let me guide you, |PLAYERNAME|!", "I have a bad feeling about this.", - "Watch your steps - we found the pit latrine." - } + "Watch your steps - we found the pit latrine.", + }, } local dolls = Action() @@ -148,7 +148,7 @@ function dolls.onUse(player, item, fromPosition, target, toPosition, isHotkey) item:decay() end - sound = sound:gsub('|PLAYERNAME|', player:getName()) + sound = sound:gsub("|PLAYERNAME|", player:getName()) player:say(sound, TALKTYPE_MONSTER_SAY, false, 0, fromPosition) return true end diff --git a/data-canary/scripts/actions/other/fluids.lua b/data-canary/scripts/actions/other/fluids.lua index 8480fe0878a..7c197890568 100644 --- a/data-canary/scripts/actions/other/fluids.lua +++ b/data-canary/scripts/actions/other/fluids.lua @@ -27,7 +27,7 @@ local fluidMessage = { [15] = "Mmmh.", -- coconut milk [16] = "Aah...", -- mead [17] = "Gulp.", -- tea - [18] = "Urgh!" -- ink + [18] = "Urgh!", -- ink } local fluid = Action() diff --git a/data-canary/scripts/actions/other/food.lua b/data-canary/scripts/actions/other/food.lua index 7323e42f3fc..fcf05eefd52 100644 --- a/data-canary/scripts/actions/other/food.lua +++ b/data-canary/scripts/actions/other/food.lua @@ -100,7 +100,7 @@ local setting = { [22185] = { 12, "Yum." }, -- prickly pear [22187] = { 60, "Chomp." }, -- roasted meat [23535] = { 30, "Mmmm." }, -- energy bar - [23545] = { 18, "Mmmm." } -- energy drink + [23545] = { 18, "Mmmm." }, -- energy drink } local food = Action() diff --git a/data-canary/scripts/actions/other/music.lua b/data-canary/scripts/actions/other/music.lua index 3c5147ad67c..ac30d541fe3 100644 --- a/data-canary/scripts/actions/other/music.lua +++ b/data-canary/scripts/actions/other/music.lua @@ -31,7 +31,7 @@ local setting = { [6572] = { effect = CONST_ME_SOUND_GREEN, text = "TOOOOOOT", transformId = 6573, decayId = 6572 }, -- party trumpet [6573] = { effect = CONST_ME_SOUND_GREEN, text = "TOOOOOOT", transformId = 6572, decayId = 6573 }, -- party trumpet [12602] = { effect = CONST_ME_SOUND_BLUE }, -- small whistle (actual effect is unknown) - [23725] = { effect = CONST_ME_SOUND_WHITE } -- small crystal bell + [23725] = { effect = CONST_ME_SOUND_WHITE }, -- small crystal bell } local music = Action() diff --git a/data-canary/scripts/actions/other/potions.lua b/data-canary/scripts/actions/other/potions.lua index c85b4678373..485cdf34dbb 100644 --- a/data-canary/scripts/actions/other/potions.lua +++ b/data-canary/scripts/actions/other/potions.lua @@ -20,135 +20,140 @@ local setting = { health = { 250, 350 }, vocations = { VOCATION.BASE_ID.KNIGHT, - VOCATION.BASE_ID.PALADIN + VOCATION.BASE_ID.PALADIN, }, level = 50, flask = 283, - description = "Only knights and paladins of level 50 or above may drink this fluid." + description = "Only knights and paladins of level 50 or above may drink this fluid.", }, [237] = { mana = { 115, 185 }, vocations = { VOCATION.BASE_ID.SORCERER, VOCATION.BASE_ID.DRUID, - VOCATION.BASE_ID.PALADIN + VOCATION.BASE_ID.PALADIN, }, level = 50, flask = 283, - description = "Only sorcerers, druids and paladins of level 50 or above may drink this fluid." + description = "Only sorcerers, druids and paladins of level 50 or above may drink this fluid.", }, [238] = { mana = { 150, 250 }, vocations = { VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID + VOCATION.BASE_ID.DRUID, }, level = 80, flask = 284, - description = "Only druids and sorcerers of level 80 or above may drink this fluid." + description = "Only druids and sorcerers of level 80 or above may drink this fluid.", }, [239] = { health = { 425, 575 }, vocations = { - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, }, level = 80, flask = 284, - description = "Only knights of level 80 or above may drink this fluid." + description = "Only knights of level 80 or above may drink this fluid.", }, [266] = { health = { 125, 175 }, - flask = 285 + flask = 285, }, [268] = { mana = { 75, 125 }, - flask = 285 + flask = 285, }, [6558] = { transform = { - id = { 236, 237 } + id = { 236, 237 }, }, - effect = CONST_ME_DRAWBLOOD + effect = CONST_ME_DRAWBLOOD, }, [7439] = { condition = berserk, vocations = { - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, }, effect = CONST_ME_MAGIC_RED, - description = "Only knights may drink this potion.", text = "You feel stronger." + description = "Only knights may drink this potion.", + text = "You feel stronger.", }, [7440] = { condition = mastermind, vocations = { VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID + VOCATION.BASE_ID.DRUID, }, effect = CONST_ME_MAGIC_BLUE, - description = "Only sorcerers and druids may drink this potion.", text = "You feel smarter." + description = "Only sorcerers and druids may drink this potion.", + text = "You feel smarter.", }, [7443] = { condition = bullseye, vocations = { - VOCATION.BASE_ID.PALADIN + VOCATION.BASE_ID.PALADIN, }, effect = CONST_ME_MAGIC_GREEN, - description = "Only paladins may drink this potion.", text = "You feel more accurate." + description = "Only paladins may drink this potion.", + text = "You feel more accurate.", }, [7642] = { - health = { 250, 350 }, mana = { 100, 200 }, + health = { 250, 350 }, + mana = { 100, 200 }, vocations = { - VOCATION.BASE_ID.PALADIN + VOCATION.BASE_ID.PALADIN, }, level = 80, flask = 284, - description = "Only paladins of level 80 or above may drink this fluid." + description = "Only paladins of level 80 or above may drink this fluid.", }, [7643] = { health = { 650, 850 }, vocations = { - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, }, level = 130, flask = 284, - description = "Only knights of level 130 or above may drink this fluid." + description = "Only knights of level 130 or above may drink this fluid.", }, [7644] = { antidote = true, - flask = 285 + flask = 285, }, [7876] = { health = { 60, 90 }, - flask = 285 + flask = 285, }, [23373] = { mana = { 425, 575 }, vocations = { VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID + VOCATION.BASE_ID.DRUID, }, level = 130, flask = 284, - description = "Only druids and sorcerers of level 130 or above may drink this fluid." + description = "Only druids and sorcerers of level 130 or above may drink this fluid.", }, [23374] = { - health = { 420, 580 }, mana = { 250, 350 }, + health = { 420, 580 }, + mana = { 250, 350 }, vocations = { - VOCATION.BASE_ID.PALADIN + VOCATION.BASE_ID.PALADIN, }, level = 130, flask = 284, - description = "Only paladins of level 130 or above may drink this fluid." + description = "Only paladins of level 130 or above may drink this fluid.", }, [23375] = { health = { 875, 1125 }, vocations = { - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, }, level = 200, flask = 284, - description = "Only knights of level 200 or above may drink this fluid." - } + description = "Only knights of level 200 or above may drink this fluid.", + }, } local potions = Action() diff --git a/data-canary/scripts/actions/other/skill_trainer.lua b/data-canary/scripts/actions/other/skill_trainer.lua index 1e2ba654123..c1b49528bec 100644 --- a/data-canary/scripts/actions/other/skill_trainer.lua +++ b/data-canary/scripts/actions/other/skill_trainer.lua @@ -3,7 +3,7 @@ local setting = { [16199] = SKILL_AXE, [16200] = SKILL_CLUB, [16201] = SKILL_DISTANCE, - [16202] = SKILL_MAGLEVEL + [16202] = SKILL_MAGLEVEL, } local skillTrainer = Action() diff --git a/data-canary/scripts/actions/other/spellbook.lua b/data-canary/scripts/actions/other/spellbook.lua index aea098f497e..600f60a02e9 100644 --- a/data-canary/scripts/actions/other/spellbook.lua +++ b/data-canary/scripts/actions/other/spellbook.lua @@ -8,11 +8,13 @@ function spellbook.onUse(player, item, fromPosition, target, toPosition, isHotke if spell.manapercent > 0 then spell.mana = spell.manapercent .. "%" end - spells[#spells+1] = spell + spells[#spells + 1] = spell end end - table.sort(spells, function(a, b) return a.level < b.level end) + table.sort(spells, function(a, b) + return a.level < b.level + end) local prevLevel = -1 for i, spell in ipairs(spells) do @@ -20,12 +22,12 @@ function spellbook.onUse(player, item, fromPosition, target, toPosition, isHotke if i == 1 then text[#text == nil and 1 or #text + 1] = "Spells for Level " else - text[#text+1] = "\nSpells for Level " + text[#text + 1] = "\nSpells for Level " end - text[#text+1] = spell.level .. "\n" + text[#text + 1] = spell.level .. "\n" prevLevel = spell.level end - text[#text+1] = spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n" + text[#text + 1] = spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n" end player:showTextDialog(item:getId(), table.concat(text)) diff --git a/data-canary/scripts/actions/other/sugar_oat.lua b/data-canary/scripts/actions/other/sugar_oat.lua index 7ba65c8b62f..0551541d211 100644 --- a/data-canary/scripts/actions/other/sugar_oat.lua +++ b/data-canary/scripts/actions/other/sugar_oat.lua @@ -1,6 +1,6 @@ local setting = { [5468] = 5512, - [5469] = 5514 + [5469] = 5514, } local sugarOat = Action() diff --git a/data-canary/scripts/actions/other/surprise_bag.lua b/data-canary/scripts/actions/other/surprise_bag.lua index eca7983c924..be59af96267 100644 --- a/data-canary/scripts/actions/other/surprise_bag.lua +++ b/data-canary/scripts/actions/other/surprise_bag.lua @@ -11,7 +11,7 @@ local setting = { 6576, 6577, 6578, - 6279 + 6279, }, -- Red present [6571] = { @@ -30,8 +30,8 @@ local setting = { 3420, 5944, 6566, - 6568 - } + 6568, + }, } local surpriseBag = Action() diff --git a/data-canary/scripts/actions/other/wall_mirror.lua b/data-canary/scripts/actions/other/wall_mirror.lua index 8a7e9caf714..46c5fbe2fa4 100644 --- a/data-canary/scripts/actions/other/wall_mirror.lua +++ b/data-canary/scripts/actions/other/wall_mirror.lua @@ -9,7 +9,7 @@ local setting = { "You look awesome!", "You nearly don't recognize yourself.", "You look fabulous.", - "Surprise, surprise, you don't see yourself." + "Surprise, surprise, you don't see yourself.", } local wallMirror = Action() diff --git a/data-canary/scripts/actions/quests/annihilator.lua b/data-canary/scripts/actions/quests/annihilator.lua index cfc820829c7..cbcb26ec248 100644 --- a/data-canary/scripts/actions/quests/annihilator.lua +++ b/data-canary/scripts/actions/quests/annihilator.lua @@ -2,13 +2,13 @@ local playerPosition = { { x = 247, y = 659, z = 13 }, { x = 247, y = 660, z = 13 }, { x = 247, y = 661, z = 13 }, - { x = 247, y = 662, z = 13 } + { x = 247, y = 662, z = 13 }, } local newPosition = { { x = 189, y = 650, z = 13 }, { x = 189, y = 651, z = 13 }, { x = 189, y = 652, z = 13 }, - { x = 189, y = 653, z = 13 } + { x = 189, y = 653, z = 13 }, } local annihilator = Action() @@ -22,7 +22,7 @@ function annihilator.onUse(player, item, fromPosition, target, toPosition, isHot player:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE) return false end - players[#players+1] = topPlayer + players[#players + 1] = topPlayer end for i, targetPlayer in ipairs(players) do diff --git a/data-canary/scripts/actions/quests/quests.lua b/data-canary/scripts/actions/quests/quests.lua index ea043fe8f44..6336e18904b 100644 --- a/data-canary/scripts/actions/quests/quests.lua +++ b/data-canary/scripts/actions/quests/quests.lua @@ -20,21 +20,21 @@ function quests.onUse(player, item, fromPosition, target, toPosition, isHotkey) else player:addItem(item.uid, 1) end - player:sendTextMessage(MESSAGE_LOOK, 'You have found a ' .. itemType:getName() .. '.') + player:sendTextMessage(MESSAGE_LOOK, "You have found a " .. itemType:getName() .. ".") player:setStorageValue(Storage.Quest.ExampleQuest.Example, 1) else - player:sendTextMessage(MESSAGE_LOOK, 'You have found a ' .. itemType:getName() .. ' weighing ' .. itemWeight .. ' oz it\'s too heavy.') + player:sendTextMessage(MESSAGE_LOOK, "You have found a " .. itemType:getName() .. " weighing " .. itemWeight .. " oz it's too heavy.") end else player:sendTextMessage(MESSAGE_LOOK, "It is empty.") end elseif player:getStorageValue(item.uid) == -1 then if playerCap >= itemWeight then - player:sendTextMessage(MESSAGE_LOOK, 'You have found a ' .. itemType:getName() .. '.') + player:sendTextMessage(MESSAGE_LOOK, "You have found a " .. itemType:getName() .. ".") player:addItem(item.uid, 1) player:setStorageValue(item.uid, 1) else - player:sendTextMessage(MESSAGE_LOOK, 'You have found a ' .. itemType:getName() .. ' weighing ' .. itemWeight .. ' oz it\'s too heavy.') + player:sendTextMessage(MESSAGE_LOOK, "You have found a " .. itemType:getName() .. " weighing " .. itemWeight .. " oz it's too heavy.") end else player:sendTextMessage(MESSAGE_LOOK, "It is empty.") diff --git a/data-canary/scripts/actions/tools/crowbar.lua b/data-canary/scripts/actions/tools/crowbar.lua index 82cb9a465e2..3be211f70ea 100644 --- a/data-canary/scripts/actions/tools/crowbar.lua +++ b/data-canary/scripts/actions/tools/crowbar.lua @@ -1,8 +1,7 @@ local crowbar = Action() function crowbar.onUse(player, item, fromPosition, target, toPosition, isHotkey) - return ActionsLib.useCrowbar(player, item, fromPosition, target, toPosition, isHotkey) - or ActionsLib.destroyItem(player, target, toPosition) + return ActionsLib.useCrowbar(player, item, fromPosition, target, toPosition, isHotkey) or ActionsLib.destroyItem(player, target, toPosition) end crowbar:id(3304) diff --git a/data-canary/scripts/actions/tools/fire_bug.lua b/data-canary/scripts/actions/tools/fire_bug.lua index d07ba41de21..3e4f3ef6576 100644 --- a/data-canary/scripts/actions/tools/fire_bug.lua +++ b/data-canary/scripts/actions/tools/fire_bug.lua @@ -24,7 +24,7 @@ function fireBug.onUse(player, item, fromPosition, target, toPosition, isHotkey) toPosition:sendMagicEffect(CONST_ME_POFF) elseif chance == 1 then -- It explodes on the user 1% chance doTargetCombatHealth(0, player, COMBAT_FIREDAMAGE, -5, -5, CONST_ME_HITBYFIRE) - player:say('OUCH!', TALKTYPE_MONSTER_SAY) + player:say("OUCH!", TALKTYPE_MONSTER_SAY) item:remove(1) else toPosition:sendMagicEffect(CONST_ME_POFF) -- It fails, but don't get removed 3% chance diff --git a/data-canary/scripts/actions/tools/gold_converter.lua b/data-canary/scripts/actions/tools/gold_converter.lua index d94599243d9..a59cee8589a 100644 --- a/data-canary/scripts/actions/tools/gold_converter.lua +++ b/data-canary/scripts/actions/tools/gold_converter.lua @@ -1,7 +1,7 @@ local config = { [ITEM_GOLD_COIN] = { changeTo = ITEM_PLATINUM_COIN }, [ITEM_PLATINUM_COIN] = { changeBack = ITEM_GOLD_COIN, changeTo = ITEM_CRYSTAL_COIN }, - [ITEM_CRYSTAL_COIN] = { changeBack = ITEM_PLATINUM_COIN } + [ITEM_CRYSTAL_COIN] = { changeBack = ITEM_PLATINUM_COIN }, } local goldConverter = Action() diff --git a/data-canary/scripts/actions/tools/machete.lua b/data-canary/scripts/actions/tools/machete.lua index f5959acc67d..290ba5d2a7d 100644 --- a/data-canary/scripts/actions/tools/machete.lua +++ b/data-canary/scripts/actions/tools/machete.lua @@ -1,8 +1,7 @@ local machete = Action() function machete.onUse(player, item, fromPosition, target, toPosition, isHotkey) - return ActionsLib.useMachete(player, item, fromPosition, target, toPosition, isHotkey) - or ActionsLib.destroyItem(player, target, toPosition) + return ActionsLib.useMachete(player, item, fromPosition, target, toPosition, isHotkey) or ActionsLib.destroyItem(player, target, toPosition) end machete:id(3308, 3330) diff --git a/data-canary/scripts/actions/tools/magic_gold_converter.lua b/data-canary/scripts/actions/tools/magic_gold_converter.lua index 9496d4ff6d6..ea4fa376e14 100644 --- a/data-canary/scripts/actions/tools/magic_gold_converter.lua +++ b/data-canary/scripts/actions/tools/magic_gold_converter.lua @@ -5,8 +5,8 @@ local data = { }, coins = { [ITEM_GOLD_COIN] = ITEM_PLATINUM_COIN, - [ITEM_PLATINUM_COIN] = ITEM_CRYSTAL_COIN - } + [ITEM_PLATINUM_COIN] = ITEM_CRYSTAL_COIN, + }, } local function findItem(self, cylinder, converterItem) diff --git a/data-canary/scripts/actions/tools/rust_remover.lua b/data-canary/scripts/actions/tools/rust_remover.lua index 724c5149cf6..1f44a1fb715 100644 --- a/data-canary/scripts/actions/tools/rust_remover.lua +++ b/data-canary/scripts/actions/tools/rust_remover.lua @@ -3,7 +3,7 @@ local config = { [1] = { id = 3358, chance = 6994 }, -- Chain Armor [2] = { id = 3377, chance = 3952 }, -- Scale Armor [3] = { id = 3359, chance = 1502 }, -- Brass Armor - [4] = { id = 3357, chance = 197 } -- Plate Armor + [4] = { id = 3357, chance = 197 }, -- Plate Armor }, [8895] = { -- Rusty Armor (Semi-rare) [1] = { id = 3358, chance = 6437 }, -- Scale Armor @@ -12,7 +12,7 @@ local config = { [4] = { id = 3357, chance = 1559 }, -- Plate Armor [5] = { id = 3370, chance = 595 }, -- Knight Armor [6] = { id = 8063, chance = 283 }, -- Paladin Armor - [7] = { id = 3381, chance = 49 } -- Crown Armor + [7] = { id = 3381, chance = 49 }, -- Crown Armor }, [8896] = { -- Rusty Armor (Rare) [1] = { id = 3359, chance = 6681 }, -- Brass Armor @@ -20,13 +20,13 @@ local config = { [3] = { id = 3370, chance = 1832 }, -- Knight Armor [4] = { id = 3381, chance = 177 }, -- Crown Armor [5] = { id = 8063, chance = 31 }, -- Paladin Armor - [6] = { id = 3360, chance = 10 } -- Golden Armor + [6] = { id = 3360, chance = 10 }, -- Golden Armor }, [8897] = { -- Rusty Legs (Common) [1] = { id = 3558, chance = 6949 }, -- Chain Legs [2] = { id = 3362, chance = 3692 }, -- Studded Legs [3] = { id = 3372, chance = 1307 }, -- Brass Legs - [4] = { id = 3557, chance = 133 } -- Plate Legs + [4] = { id = 3557, chance = 133 }, -- Plate Legs }, [8898] = { -- Rusty Legs (Semi-Rare) [1] = { id = 3362, chance = 5962 }, -- Studded Legs @@ -40,7 +40,7 @@ local config = { [2] = { id = 3557, chance = 3800 }, -- Plate Legs [3] = { id = 3371, chance = 200 }, -- Knight Legs [4] = { id = 3382, chance = 52 }, -- Crown Legs - [5] = { id = 3364, chance = 30 } -- Golden Legs + [5] = { id = 3364, chance = 30 }, -- Golden Legs }, [8900] = { -- Heavily Rusted Shield }, @@ -51,7 +51,7 @@ local config = { [2] = { id = 3432, chance = 2887 }, -- Ancient Shield [3] = { id = 7460, chance = 929 }, -- Norse Shield [4] = { id = 3419, chance = 23 }, -- Crown Shield - [5] = { id = 3434, chance = 10 } -- Vampire Shield + [5] = { id = 3434, chance = 10 }, -- Vampire Shield }, [8903] = { -- Heavily Rusted Boots }, @@ -67,14 +67,14 @@ local config = { [3] = { id = 3353, chance = 1490 }, -- Iron Helmet [4] = { id = 3351, chance = 1010 }, -- Steel Helmet [5] = { id = 3385, chance = 190 }, -- Crown Helmet - [6] = { id = 3391, chance = 10 } -- Crusader Helmet + [6] = { id = 3391, chance = 10 }, -- Crusader Helmet }, [8908] = { -- Slightly Rusted Helmet [1] = { id = 3353, chance = 3156 }, -- Iron Helmet [2] = { id = 3351, chance = 2976 }, -- Steel Helmet [3] = { id = 3385, chance = 963 }, -- Crown Helmet [4] = { id = 3391, chance = 210 }, -- Crusader Helmet - [5] = { id = 3392, chance = 7 } -- Royal Helmet + [5] = { id = 3392, chance = 7 }, -- Royal Helmet }, } diff --git a/data-canary/scripts/actions/tools/sickle.lua b/data-canary/scripts/actions/tools/sickle.lua index eeec1e225e3..a4e024dde20 100644 --- a/data-canary/scripts/actions/tools/sickle.lua +++ b/data-canary/scripts/actions/tools/sickle.lua @@ -1,8 +1,7 @@ local sickle = Action() function sickle.onUse(player, item, fromPosition, target, toPosition, isHotkey) - return ActionsLib.useSickle(player, item, fromPosition, target, toPosition, isHotkey) - or ActionsLib.destroyItem(player, target, toPosition) + return ActionsLib.useSickle(player, item, fromPosition, target, toPosition, isHotkey) or ActionsLib.destroyItem(player, target, toPosition) end sickle:id(3293, 3306, 32595) diff --git a/data-canary/scripts/actions/tools/skinning.lua b/data-canary/scripts/actions/tools/skinning.lua index 4c7218e7f9d..d3cdb65d91c 100644 --- a/data-canary/scripts/actions/tools/skinning.lua +++ b/data-canary/scripts/actions/tools/skinning.lua @@ -6,289 +6,298 @@ local config = { [4272] = { chance = 7000, newItem = 5878, - after = 4012 + after = 4012, }, -- minotaur, after being killed [5969] = { chance = 7000, newItem = 5878, - after = 4012 + after = 4012, }, -- minotaur archer [4052] = { chance = 7000, newItem = 5878, - after = 4053 + after = 4053, }, -- minotaur archer, after being killed [5982] = { chance = 7000, newItem = 5878, - after = 4053 + after = 4053, }, -- minotaur mage [4047] = { chance = 7000, newItem = 5878, - after = 4048 + after = 4048, }, -- minotaur mage, after being killed [5981] = { chance = 7000, newItem = 5878, - after = 4048 + after = 4048, }, -- minotaur guard [4057] = { chance = 7000, newItem = 5878, - after = 4058 + after = 4058, }, -- minotaur guard, after being killed [5983] = { chance = 7000, newItem = 5878, - after = 4058 + after = 4058, }, -- mooh'tah warrior [21092] = { chance = 7000, newItem = 5878, - after = 21093 + after = 21093, }, -- mooh'tah warrior, after being killed [21091] = { chance = 7000, newItem = 5878, - after = 21093 + after = 21093, }, -- minotaur hunter [21096] = { chance = 7000, newItem = 5878, - after = 21097 + after = 21097, }, -- minotaur hunter, after being killed [21095] = { chance = 7000, newItem = 5878, - after = 21097 + after = 21097, }, -- worm priestess [21100] = { chance = 7000, newItem = 5878, - after = 21101 + after = 21101, }, -- worm priestess, after being killed [21099] = { chance = 7000, newItem = 5878, - after = 21101 + after = 21101, }, -- minotaur amazon [21000] = { chance = 7000, newItem = 5878, - after = 21002 + after = 21002, }, -- minotaur amazon, after being killed [21001] = { chance = 7000, newItem = 5878, - after = 21002 + after = 21002, }, -- execowtioner [21004] = { chance = 7000, newItem = 5878, - after = 21006 + after = 21006, }, -- execowtioner, after being killed [21005] = { chance = 7000, newItem = 5878, - after = 21006 + after = 21006, }, -- moohtant [20996] = { chance = 7000, newItem = 5878, - after = 20998 + after = 20998, }, -- moohtant, after being killed [20997] = { chance = 7000, newItem = 5878, - after = 20998 + after = 20998, }, -- low class lizards -- lizard sentinel [4324] = { chance = 6000, newItem = 5876, - after = 4325 + after = 4325, }, -- lizard sentinel, after being killed [6040] = { chance = 6000, newItem = 5876, - after = 4325 + after = 4325, }, -- lizard snakecharmer [4327] = { chance = 6000, newItem = 5876, - after = 4328 + after = 4328, }, -- lizard snakecharmer, after being killed [6041] = { chance = 6000, newItem = 5876, - after = 4328 + after = 4328, }, -- lizard templar [4321] = { chance = 6000, newItem = 5876, - after = 4322 + after = 4322, }, -- lizard templar, after being killed [4239] = { chance = 6000, newItem = 5876, - after = 4322 + after = 4322, }, -- high class lizards -- lizard chosen [10368] = { chance = 10000, newItem = 5876, - after = 10369 + after = 10369, }, -- lizard chosen, after being killed [10371] = { chance = 10000, newItem = 5876, - after = 10369 + after = 10369, }, -- lizard dragon priest [10360] = { chance = 10000, newItem = 5876, - after = 10361 + after = 10361, }, -- lizard dragon priest, after being killed [10363] = { chance = 10000, newItem = 5876, - after = 10361 + after = 10361, }, -- lizard high guard [10352] = { chance = 10000, newItem = 5876, - after = 10353 + after = 10353, }, -- lizard high guard, after being killed [10355] = { chance = 10000, newItem = 5876, - after = 10353 + after = 10353, }, -- lizard zaogun [10364] = { chance = 10000, newItem = 5876, - after = 10365 + after = 10365, }, -- lizard zaogun, after being killed [10367] = { chance = 10000, newItem = 5876, - after = 10365 + after = 10365, }, -- dragon [4286] = { chance = 5000, newItem = 5877, - after = 4287 }, + after = 4287, + }, [5973] = { chance = 5000, newItem = 5877, - after = 4287 + after = 4287, }, -- after being killed -- dragon lord [4062] = { chance = 5000, newItem = 5948, - after = 4063 }, + after = 4063, + }, [5984] = { chance = 5000, newItem = 5948, - after = 4063 + after = 4063, }, -- after being killed -- behemoth [4112] = { chance = 10000, newItem = 5893, - after = 4113 }, + after = 4113, + }, [5999] = { chance = 10000, newItem = 5893, - after = 4113 + after = 4113, }, -- after being killed -- bone beast [4212] = { chance = 6000, newItem = 5925, - after = 4213 }, + after = 4213, + }, [6030] = { chance = 6000, newItem = 5925, - after = 4213 + after = 4213, }, -- after being killed -- clomp [22743] = { chance = 50000, newItem = 24842, - after = 22744 }, + after = 22744, + }, [22742] = { chance = 50000, newItem = 24842, - after = 22744 + after = 22744, }, -- after being killed -- piece of marble rock [10426] = { { chance = 530, newItem = 10429, - desc = "This little figurine of a goddess was masterfully sculpted by |PLAYERNAME|." + desc = "This little figurine of a goddess was masterfully sculpted by |PLAYERNAME|.", }, { chance = 9600, newItem = 10428, - desc = "This little figurine made by |PLAYERNAME| has some room for improvement." + desc = "This little figurine made by |PLAYERNAME| has some room for improvement.", }, { chance = 24000, newItem = 10427, - desc = "This shoddy work was made by |PLAYERNAME|." - } + desc = "This shoddy work was made by |PLAYERNAME|.", + }, }, -- ice cube [7441] = { chance = 22000, - newItem = 7442 }, + newItem = 7442, + }, [7442] = { chance = 4800, - newItem = 7444 }, + newItem = 7444, + }, [7444] = { chance = 900, - newItem = 7445 }, + newItem = 7445, + }, [7445] = { chance = 40, - newItem = 7446 } + newItem = 7446, + }, }, -- blessed wooden stake [5942] = { @@ -296,43 +305,45 @@ local config = { [4097] = { chance = 3000, newItem = 5906, - after = 4098 }, + after = 4098, + }, [5995] = { chance = 3000, newItem = 5906, - after = 4098 + after = 4098, }, -- after being killed -- vampires [4137] = { chance = 6000, newItem = 5905, - after = 4138 + after = 4138, }, -- vampire [6006] = { chance = 6000, newItem = 5905, - after = 4138 + after = 4138, }, -- vampire, after being killed [8738] = { chance = 6000, newItem = 5905, - after = 8742 + after = 8742, }, -- vampire bride [8744] = { chance = 6000, newItem = 5905, - after = 8742 + after = 8742, }, -- vampire bride, after being killed [18958] = { chance = 6000, newItem = 5905, - after = 18959 + after = 18959, }, -- vampire viscount [18961] = { chance = 6000, newItem = 5905, - after = 18959 } -- vampire viscount, after being killed - } + after = 18959, + }, -- vampire viscount, after being killed + }, } local skinning = Action() diff --git a/data-canary/scripts/actions/tools/toolgear.lua b/data-canary/scripts/actions/tools/toolgear.lua index 7cb9185d087..c7dacca1968 100644 --- a/data-canary/scripts/actions/tools/toolgear.lua +++ b/data-canary/scripts/actions/tools/toolgear.lua @@ -3,14 +3,14 @@ local toolgear = Action() function toolgear.onUse(player, item, fromPosition, target, toPosition, isHotkey) if math.random(100) > 5 then return ActionsLib.useRope(player, item, fromPosition, target, toPosition, isHotkey) - or ActionsLib.useShovel(player, item, fromPosition, target, toPosition, isHotkey) - or ActionsLib.usePick(player, item, fromPosition, target, toPosition, isHotkey) - or ActionsLib.useMachete(player, item, fromPosition, target, toPosition, isHotkey) - or ActionsLib.useCrowbar(player, item, fromPosition, target, toPosition, isHotkey) - or ActionsLib.useSpoon(player, item, fromPosition, target, toPosition, isHotkey) - or ActionsLib.useScythe(player, item, fromPosition, target, toPosition, isHotkey) - or ActionsLib.useSickle(player, item, fromPosition, target, toPosition, isHotkey) - or ActionsLib.useKitchenKnife(player, item, fromPosition, target, toPosition, isHotkey) + or ActionsLib.useShovel(player, item, fromPosition, target, toPosition, isHotkey) + or ActionsLib.usePick(player, item, fromPosition, target, toPosition, isHotkey) + or ActionsLib.useMachete(player, item, fromPosition, target, toPosition, isHotkey) + or ActionsLib.useCrowbar(player, item, fromPosition, target, toPosition, isHotkey) + or ActionsLib.useSpoon(player, item, fromPosition, target, toPosition, isHotkey) + or ActionsLib.useScythe(player, item, fromPosition, target, toPosition, isHotkey) + or ActionsLib.useSickle(player, item, fromPosition, target, toPosition, isHotkey) + or ActionsLib.useKitchenKnife(player, item, fromPosition, target, toPosition, isHotkey) else player:say("Oh no! Your tool is jammed and can't be used for a minute.", TALKTYPE_MONSTER_SAY) item:transform(item.itemid + 1) diff --git a/data-canary/scripts/actions/worldboard.lua b/data-canary/scripts/actions/worldboard.lua index 40845dbb86f..80fe5e737f3 100644 --- a/data-canary/scripts/actions/worldboard.lua +++ b/data-canary/scripts/actions/worldboard.lua @@ -1,7 +1,7 @@ local communicates = { "Welcome to Canary Server! Visit the organization to see all our work: https://github.com/opentibiabr", "Did you like it? Help support what we do here with a donation by visiting the link: https://docs.opentibiabr.com/home/donate/", - "Visit our discord to ask questions or report issues: https://discord.gg/gvTj5sh9Mp" + "Visit our discord to ask questions or report issues: https://discord.gg/gvTj5sh9Mp", } local scriptConfig = { @@ -13,8 +13,8 @@ local scriptConfig = { { x = 5518, y = 5126, z = 6 }, { x = 5852, y = 5295, z = 5 }, { x = 1940, y = 1345, z = 7 }, - { x = 4709, y = 4186, z = 7 } - } + { x = 4709, y = 4186, z = 7 }, + }, } local worldBoard = Action() diff --git a/data-canary/scripts/bestiary/charms.lua b/data-canary/scripts/bestiary/charms.lua index ebd162b5411..b6263e05572 100644 --- a/data-canary/scripts/bestiary/charms.lua +++ b/data-canary/scripts/bestiary/charms.lua @@ -13,8 +13,8 @@ local charms = { effect = CONST_ME_HITAREA, points = 600, sounds = { - castSound = SOUND_EFFECT_TYPE_SPELL_BRUTAL_STRIKE - } + castSound = SOUND_EFFECT_TYPE_SPELL_BRUTAL_STRIKE, + }, }, -- Enflame charm [2] = { @@ -30,8 +30,8 @@ local charms = { effect = CONST_ME_HITBYFIRE, points = 1000, sounds = { - castSound = SOUND_EFFECT_TYPE_SPELL_FLAME_STRIKE - } + castSound = SOUND_EFFECT_TYPE_SPELL_FLAME_STRIKE, + }, }, -- Poison charm [3] = { @@ -47,8 +47,8 @@ local charms = { effect = CONST_ME_GREEN_RINGS, points = 600, sounds = { - castSound = SOUND_EFFECT_TYPE_SPELL_TERRA_STRIKE - } + castSound = SOUND_EFFECT_TYPE_SPELL_TERRA_STRIKE, + }, }, -- Freeze charm [4] = { @@ -64,8 +64,8 @@ local charms = { effect = CONST_ME_ICEATTACK, points = 800, sounds = { - castSound = SOUND_EFFECT_TYPE_SPELL_ICE_STRIKE - } + castSound = SOUND_EFFECT_TYPE_SPELL_ICE_STRIKE, + }, }, --Zap charm [5] = { @@ -81,8 +81,8 @@ local charms = { effect = CONST_ME_ENERGYHIT, points = 800, sounds = { - castSound = SOUND_EFFECT_TYPE_SPELL_ENERGY_STRIKE - } + castSound = SOUND_EFFECT_TYPE_SPELL_ENERGY_STRIKE, + }, }, --Curse charm [6] = { @@ -98,8 +98,8 @@ local charms = { effect = CONST_ME_SMALLCLOUDS, points = 900, sounds = { - castSound = SOUND_EFFECT_TYPE_SPELL_DEATH_STRIKE - } + castSound = SOUND_EFFECT_TYPE_SPELL_DEATH_STRIKE, + }, }, -- Cripple charm [7] = { @@ -108,7 +108,7 @@ local charms = { type = CHARM_OFFENSIVE, chance = 10, messageCancel = "You cripple the monster.", - points = 500 + points = 500, }, -- Parry charm [8] = { @@ -120,7 +120,7 @@ local charms = { messageCancel = "You parry the attack.", messageServerLog = "[Parry charm]", effect = CONST_ME_EXPLOSIONAREA, - points = 1000 + points = 1000, }, -- Dodge charm [9] = { @@ -130,7 +130,7 @@ local charms = { chance = 10, messageCancel = "You dodge the attack.", effect = CONST_ME_POFF, - points = 600 + points = 600, }, -- Adrenaline burst charm [10] = { @@ -140,7 +140,7 @@ local charms = { type = CHARM_DEFENSIVE, chance = 10, messageCancel = "Your movements where bursted.", - points = 500 + points = 500, }, -- Numb charm [11] = { @@ -149,7 +149,7 @@ local charms = { type = CHARM_DEFENSIVE, chance = 10, messageCancel = "You numb the monster.", - points = 500 + points = 500, }, -- Cleanse charm [12] = { @@ -159,7 +159,7 @@ local charms = { type = CHARM_DEFENSIVE, chance = 10, messageCancel = "You purified the attack.", - points = 700 + points = 700, }, -- Bless charm [13] = { @@ -170,8 +170,8 @@ local charms = { chance = 100, points = 800, sounds = { - castSound = SOUND_EFFECT_TYPE_SPELL_BRUTAL_STRIKE - } + castSound = SOUND_EFFECT_TYPE_SPELL_BRUTAL_STRIKE, + }, }, -- Scavenge charm [14] = { @@ -181,8 +181,8 @@ local charms = { percent = 25, points = 800, sounds = { - castSound = SOUND_EFFECT_TYPE_SPELL_BRUTAL_STRIKE - } + castSound = SOUND_EFFECT_TYPE_SPELL_BRUTAL_STRIKE, + }, }, -- Gut charm [15] = { @@ -202,8 +202,8 @@ local charms = { chance = 100, points = 2000, sounds = { - castSound = SOUND_EFFECT_TYPE_SPELL_BRUTAL_STRIKE - } + castSound = SOUND_EFFECT_TYPE_SPELL_BRUTAL_STRIKE, + }, }, -- Divine wrath charm [17] = { @@ -219,8 +219,8 @@ local charms = { effect = CONST_ME_HOLYDAMAGE, points = 1500, sounds = { - castSound = SOUND_EFFECT_TYPE_SPELL_HOLY_FLASH - } + castSound = SOUND_EFFECT_TYPE_SPELL_HOLY_FLASH, + }, }, -- Vampiric embrace charm [18] = { @@ -229,7 +229,7 @@ local charms = { type = CHARM_PASSIVE, percent = 4, chance = 100, - points = 1500 + points = 1500, }, -- Void's call charm [19] = { @@ -238,8 +238,8 @@ local charms = { type = CHARM_PASSIVE, percent = 2, chance = 100, - points = 1500 - } + points = 1500, + }, } for charmId, chamsTable in ipairs(charms) do diff --git a/data-canary/scripts/creaturescripts/#modal_window_example.lua b/data-canary/scripts/creaturescripts/#modal_window_example.lua index 61283cb782a..e2de4a9e474 100644 --- a/data-canary/scripts/creaturescripts/#modal_window_example.lua +++ b/data-canary/scripts/creaturescripts/#modal_window_example.lua @@ -23,16 +23,16 @@ local moveDirectionTest = { local pos = player:getPosition() pos:getNextPosition(DIRECTION_SOUTH) player:teleportTo(pos, true) - end + end, } local talkAction = TalkAction("!modalTest") function talkAction.onSay(player, words, param, type) - local modalWindow = ModalWindow { + local modalWindow = ModalWindow({ title = "Modal Window Helper Example", - message = "This is an example of ModalWindowHelper." - } + message = "This is an example of ModalWindowHelper.", + }) if param == "choices" then for text, callback in pairs(moveDirectionTest) do modalWindow:addChoice(text, function(player, button, choice) diff --git a/data-canary/scripts/creaturescripts/advance_save.lua b/data-canary/scripts/creaturescripts/advance_save.lua index f1cfce2ad18..8bd6fd2fd06 100644 --- a/data-canary/scripts/creaturescripts/advance_save.lua +++ b/data-canary/scripts/creaturescripts/advance_save.lua @@ -1,7 +1,7 @@ local config = { heal = true, save = true, - effect = false + effect = false, } local advanceSave = CreatureEvent("AdvanceSave") @@ -13,7 +13,7 @@ function advanceSave.onAdvance(player, skill, oldLevel, newLevel) if config.effect then player:getPosition():sendMagicEffect(math.random(CONST_ME_FIREWORK_YELLOW, CONST_ME_FIREWORK_BLUE)) - player:say('LEVEL UP!', TALKTYPE_MONSTER_SAY) + player:say("LEVEL UP!", TALKTYPE_MONSTER_SAY) end if config.heal then diff --git a/data-canary/scripts/creaturescripts/extended_opcode.lua b/data-canary/scripts/creaturescripts/extended_opcode.lua index c5b5777e1cd..12caf2afdb0 100644 --- a/data-canary/scripts/creaturescripts/extended_opcode.lua +++ b/data-canary/scripts/creaturescripts/extended_opcode.lua @@ -5,7 +5,7 @@ local extendedOpcode = CreatureEvent("ExtendedOpcode") function extendedOpcode.onExtendedOpcode(player, opcode, buffer) if opcode == OPCODE_LANGUAGE then -- otclient language - if buffer == 'en' or buffer == 'pt' then + if buffer == "en" or buffer == "pt" then -- example, setting player language, because otclient is multi-language... -- player:setStorageValue(SOME_STORAGE_ID, SOME_VALUE) end diff --git a/data-canary/scripts/creaturescripts/free_quest.lua b/data-canary/scripts/creaturescripts/free_quest.lua index 4a8d219847e..97d5a709fbf 100644 --- a/data-canary/scripts/creaturescripts/free_quest.lua +++ b/data-canary/scripts/creaturescripts/free_quest.lua @@ -1,7 +1,7 @@ local stage = configManager.getNumber(configKeys.FREE_QUEST_STAGE) local questTable = { - { storage = storage, storageValue = value } + { storage = storage, storageValue = value }, } local function playerFreeQuestStart(playerId, index) @@ -29,8 +29,7 @@ end local freeQuests = CreatureEvent("FreeQuests") function freeQuests.onLogin(player) - if not configManager.getBoolean(configKeys.TOGGLE_FREE_QUEST) or - player:getStorageValue(Storage.FreeQuests) == stage then + if not configManager.getBoolean(configKeys.TOGGLE_FREE_QUEST) or player:getStorageValue(Storage.FreeQuests) == stage then return true end diff --git a/data-canary/scripts/creaturescripts/login.lua b/data-canary/scripts/creaturescripts/login.lua index f3561ee6f9b..def03ceb3ec 100644 --- a/data-canary/scripts/creaturescripts/login.lua +++ b/data-canary/scripts/creaturescripts/login.lua @@ -35,7 +35,6 @@ function login.onLogin(player) player:registerEvent("DropLoot") player:registerEvent("BossParticipation") - if onExerciseTraining[player:getId()] then -- onLogin & onLogout stopEvent(onExerciseTraining[player:getId()].event) onExerciseTraining[player:getId()] = nil @@ -52,8 +51,11 @@ function login.onLogin(player) if SCHEDULE_EXP_RATE ~= 100 then if SCHEDULE_EXP_RATE > 100 then - player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Exp Rate Event! Monsters yield more experience points than usual \ - Happy Hunting!") + player:sendTextMessage( + MESSAGE_BOOSTED_CREATURE, + "Exp Rate Event! Monsters yield more experience points than usual \ + Happy Hunting!" + ) else player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Exp Rate Decreased! Monsters yield less experience points than usual.") end @@ -61,8 +63,11 @@ function login.onLogin(player) if SCHEDULE_SPAWN_RATE ~= 100 then if SCHEDULE_SPAWN_RATE > 100 then - player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Spawn Rate Event! Monsters respawn at a faster rate \ - Happy Hunting!") + player:sendTextMessage( + MESSAGE_BOOSTED_CREATURE, + "Spawn Rate Event! Monsters respawn at a faster rate \ + Happy Hunting!" + ) else player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Spawn Rate Decreased! Monsters respawn at a slower rate.") end @@ -70,8 +75,11 @@ function login.onLogin(player) if SCHEDULE_LOOT_RATE ~= 100 then if SCHEDULE_LOOT_RATE > 100 then - player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Loot Rate Event! Monsters carry more loot than usual \ - Happy Hunting!") + player:sendTextMessage( + MESSAGE_BOOSTED_CREATURE, + "Loot Rate Event! Monsters carry more loot than usual \ + Happy Hunting!" + ) else player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Loot Rate Decreased! Monsters carry less loot than usual.") end @@ -79,8 +87,11 @@ function login.onLogin(player) if SCHEDULE_SKILL_RATE ~= 100 then if SCHEDULE_SKILL_RATE > 100 then - player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Skill Rate Event! Your skills progresses at a higher rate \ - Happy Hunting!") + player:sendTextMessage( + MESSAGE_BOOSTED_CREATURE, + "Skill Rate Event! Your skills progresses at a higher rate \ + Happy Hunting!" + ) else player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Skill Rate Decreased! Your skills progresses at a lower rate.") end diff --git a/data-canary/scripts/creaturescripts/player_death.lua b/data-canary/scripts/creaturescripts/player_death.lua index 50a5679ee4e..5ac2e70ff99 100644 --- a/data-canary/scripts/creaturescripts/player_death.lua +++ b/data-canary/scripts/creaturescripts/player_death.lua @@ -43,8 +43,27 @@ function playerDeath.onDeath(player, corpse, killer, mostDamageKiller, unjustifi end local playerGuid = player:getGuid() - db.query("INSERT INTO `player_deaths` (`player_id`, `time`, `level`, `killed_by`, `is_player`, `mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified`) VALUES (" .. - playerGuid .. ", " .. os.time() .. ", " .. player:getLevel() .. ", " .. db.escapeString(killerName) .. ", " .. byPlayer .. ", " .. db.escapeString(mostDamageName) .. ", " .. byPlayerMostDamage .. ", " .. (unjustified and 1 or 0) .. ", " .. (mostDamageUnjustified and 1 or 0) .. ")") + db.query( + "INSERT INTO `player_deaths` (`player_id`, `time`, `level`, `killed_by`, `is_player`, `mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified`) VALUES (" + .. playerGuid + .. ", " + .. os.time() + .. ", " + .. player:getLevel() + .. ", " + .. db.escapeString(killerName) + .. ", " + .. byPlayer + .. ", " + .. db.escapeString(mostDamageName) + .. ", " + .. byPlayerMostDamage + .. ", " + .. (unjustified and 1 or 0) + .. ", " + .. (mostDamageUnjustified and 1 or 0) + .. ")" + ) local resultId = db.storeQuery("SELECT `player_id` FROM `player_deaths` WHERE `player_id` = " .. playerGuid) local deathRecords = 0 diff --git a/data-canary/scripts/globalevents/global_server_save.lua b/data-canary/scripts/globalevents/global_server_save.lua index 3b404c97f32..4ec9b873d4e 100644 --- a/data-canary/scripts/globalevents/global_server_save.lua +++ b/data-canary/scripts/globalevents/global_server_save.lua @@ -11,7 +11,7 @@ local function ServerSave() -- Updating daily reward next server save UpdateDailyRewardGlobalStorage(DailyReward.storages.lastServerSave, os.time()) -- Reset gamestore exp boost count. - db.query('UPDATE `player_storage` SET `value` = 0 WHERE `player_storage`.`key` = 51052') + db.query("UPDATE `player_storage` SET `value` = 0 WHERE `player_storage`.`key` = 51052") end local function ServerSaveWarning(time) diff --git a/data-canary/scripts/globalevents/startup.lua b/data-canary/scripts/globalevents/startup.lua index 9cabb2b83d2..b284ffbabd3 100644 --- a/data-canary/scripts/globalevents/startup.lua +++ b/data-canary/scripts/globalevents/startup.lua @@ -10,8 +10,8 @@ function startup.onStartup() db.asyncQuery("DELETE FROM `market_history` WHERE `inserted` <= " .. (os.time() - configManager.getNumber(configKeys.MARKET_OFFER_DURATION))) -- reset familiars message storage - db.query('DELETE FROM `player_storage` WHERE `key` = ' .. Global.Storage.FamiliarSummonEvent10) - db.query('DELETE FROM `player_storage` WHERE `key` = ' .. Global.Storage.FamiliarSummonEvent60) + db.query("DELETE FROM `player_storage` WHERE `key` = " .. Global.Storage.FamiliarSummonEvent10) + db.query("DELETE FROM `player_storage` WHERE `key` = " .. Global.Storage.FamiliarSummonEvent60) -- Move expired bans to ban history local resultId = db.storeQuery("SELECT * FROM `account_bans` WHERE `expires_at` != 0 AND `expires_at` <= " .. os.time()) diff --git a/data-canary/scripts/item_classification/item_tiers.lua b/data-canary/scripts/item_classification/item_tiers.lua index f981b567104..8551624c9a2 100644 --- a/data-canary/scripts/item_classification/item_tiers.lua +++ b/data-canary/scripts/item_classification/item_tiers.lua @@ -2,20 +2,20 @@ local itemTierClassifications = { -- Upgrade classification 1 [1] = { -- Update tier 0 - [1] = { price = 25000, core = 1 } + [1] = { price = 25000, core = 1 }, }, -- Upgrade classification 2 [2] = { -- Update tier 0 [1] = { price = 750000, core = 1 }, -- Update tier 1 - [2] = { price = 5000000, core = 1 } + [2] = { price = 5000000, core = 1 }, }, -- Upgrade classification 3 [3] = { [1] = { price = 4000000, core = 1 }, [2] = { price = 10000000, core = 1 }, - [3] = { price = 20000000, core = 2 } + [3] = { price = 20000000, core = 2 }, }, -- Upgrade classification 4 [4] = { @@ -28,8 +28,8 @@ local itemTierClassifications = { [7] = { price = 750000000, core = 25 }, [8] = { price = 2500000000, core = 35 }, [9] = { price = 8000000000, core = 50 }, - [10] = { price = 15000000000, core = 65 } - } + [10] = { price = 15000000000, core = 65 }, + }, } -- Item tier with gold price for uprading it diff --git a/data-canary/scripts/lib/register_actions.lua b/data-canary/scripts/lib/register_actions.lua index b66fe238986..7f2fed403fb 100644 --- a/data-canary/scripts/lib/register_actions.lua +++ b/data-canary/scripts/lib/register_actions.lua @@ -2,14 +2,65 @@ local wildGrowth = { 2130, 10182 } -- wild growth destroyable by machete local jungleGrass = { -- grass destroyable by machete [3696] = 3695, [3702] = 3701, - [17153] = 17151 + [17153] = 17151, } local holeId = { -- usable rope holes, for rope spots see global.lua - 294, 369, 370, 383, 392, 408, 409, 410, 427, 428, 429, 430, 462, 469, 470, 482, - 484, 485, 489, 924, 1369, 3135, 3136, 4835, 4837, 7933, 7938, 8170, 8249, 8250, - 8251, 8252, 8254, 8255, 8256, 8276, 8277, 8279, 8281, 8284, 8285, 8286, 8323, - 8567, 8585, 8595, 8596, 8972, 9606, 9625, 13190, 14461, 19519, 21536, 23713, - 26020 + 294, + 369, + 370, + 383, + 392, + 408, + 409, + 410, + 427, + 428, + 429, + 430, + 462, + 469, + 470, + 482, + 484, + 485, + 489, + 924, + 1369, + 3135, + 3136, + 4835, + 4837, + 7933, + 7938, + 8170, + 8249, + 8250, + 8251, + 8252, + 8254, + 8255, + 8256, + 8276, + 8277, + 8279, + 8281, + 8284, + 8285, + 8286, + 8323, + 8567, + 8585, + 8595, + 8596, + 8972, + 9606, + 9625, + 13190, + 14461, + 19519, + 21536, + 23713, + 26020, } local groundIds = { 354, 355 } -- pick usable grounds local holes = { 593, 606, 608, 867, 21341 } -- holes opened by shovel diff --git a/data-canary/scripts/lib/register_bestiary_charm.lua b/data-canary/scripts/lib/register_bestiary_charm.lua index 3ec072ad68b..c0daffff9f9 100644 --- a/data-canary/scripts/lib/register_bestiary_charm.lua +++ b/data-canary/scripts/lib/register_bestiary_charm.lua @@ -1,13 +1,11 @@ registerCharm = {} -setmetatable(registerCharm, - { - __call = - function(self, charm, mask) - for _, parse in pairs(self) do - parse(charm, mask) - end - end - }) +setmetatable(registerCharm, { + __call = function(self, charm, mask) + for _, parse in pairs(self) do + parse(charm, mask) + end + end, +}) Charm.register = function(self, mask) return registerCharm(self, mask) diff --git a/data-canary/scripts/lib/register_item_tier.lua b/data-canary/scripts/lib/register_item_tier.lua index 5a8083bdf31..51ad62ccc6e 100644 --- a/data-canary/scripts/lib/register_item_tier.lua +++ b/data-canary/scripts/lib/register_item_tier.lua @@ -1,13 +1,11 @@ registerItemClassification = {} -setmetatable(registerItemClassification, - { - __call = - function(self, itemClass, mask) - for _, parse in pairs(self) do - parse(itemClass, mask) - end - end - }) +setmetatable(registerItemClassification, { + __call = function(self, itemClass, mask) + for _, parse in pairs(self) do + parse(itemClass, mask) + end + end, +}) ItemClassification.register = function(self, mask) return registerItemClassification(self, mask) diff --git a/data-canary/scripts/lib/register_monster_type.lua b/data-canary/scripts/lib/register_monster_type.lua index 51e986e6f04..9e1f3848453 100644 --- a/data-canary/scripts/lib/register_monster_type.lua +++ b/data-canary/scripts/lib/register_monster_type.lua @@ -2,15 +2,13 @@ local smallAreaRadius = 3 local superDrunkDuration = 4000 registerMonsterType = {} -setmetatable(registerMonsterType, - { - __call = - function(self, mtype, mask) - for _, parse in pairs(self) do - parse(mtype, mask) - end - end - }) +setmetatable(registerMonsterType, { + __call = function(self, mtype, mask) + for _, parse in pairs(self) do + parse(mtype, mask) + end + end, +}) MonsterType.register = function(self, mask) return registerMonsterType(self, mask) @@ -150,7 +148,7 @@ registerMonsterType.enemyFactions = function(mtype, mask) if mask.enemyFactions then for _, enemyFaction in pairs(mask.enemyFactions) do if not enemyFaction then - print("[Error - Loading monsters] Monster: \"" .. mtype:name() .. "\". Unknown enemy faction.") + print('[Error - Loading monsters] Monster: "' .. mtype:name() .. '". Unknown enemy faction.') else mtype:enemyFactions(enemyFaction) end @@ -190,8 +188,7 @@ registerMonsterType.flags = function(mtype, mask) mtype:familiar(mask.flags.familiar) end if mask.flags.respawntype or mask.flags.respawnType then - logger.warn("[registerMonsterType.flags] - Monster: {}. Deprecated flag 'respawnType', use instead table 'respawnType = { period = RespawnPeriod_t, underground = boolean}'", - mtype:name()) + logger.warn("[registerMonsterType.flags] - Monster: {}. Deprecated flag 'respawnType', use instead table 'respawnType = { period = RespawnPeriod_t, underground = boolean}'", mtype:name()) end if mask.flags.canPushCreatures ~= nil then mtype:canPushCreatures(mask.flags.canPushCreatures) @@ -274,7 +271,7 @@ registerMonsterType.sounds = function(mtype, mask) if mask.sounds.death then mtype:deathSound(mask.sounds.death) end - if mask.sounds.ticks and mask.sounds.chance and mask.sounds.ids and type(mask.sounds.ids) == "table" and #(mask.sounds.ids) > 0 then + if mask.sounds.ticks and mask.sounds.chance and mask.sounds.ids and type(mask.sounds.ids) == "table" and #mask.sounds.ids > 0 then mtype:soundSpeedTicks(mask.sounds.ticks) mtype:soundChance(mask.sounds.chance) for _, v in pairs(mask.sounds.ids) do @@ -532,71 +529,66 @@ end local function loadcastSound(effect, incomingLua, mtype) -- Throw shoottype - if effect == CONST_ANI_SPEAR or - effect == CONST_ANI_THROWINGSTAR or - effect == CONST_ANI_THROWINGKNIFE or - effect == CONST_ANI_SMALLSTONE or - effect == CONST_ANI_LARGEROCK or - effect == CONST_ANI_SNOWBALL or - effect == CONST_ANI_HUNTINGSPEAR or - effect == CONST_ANI_ENCHANTEDSPEAR or - effect == CONST_ANI_REDSTAR or - effect == CONST_ANI_GREENSTAR or - effect == CONST_ANI_ROYALSPEAR or - effect == CONST_ANI_WHIRLWINDSWORD or - effect == CONST_ANI_WHIRLWINDAXE or - effect == CONST_ANI_WHIRLWINDCLUB or - effect == CONST_ANI_CAKE or - effect == CONST_ANI_GLOOTHSPEAR or - effect == CONST_ANI_LEAFSTAR or - effect == CONST_ANI_ROYALSTAR + if + effect == CONST_ANI_SPEAR + or effect == CONST_ANI_THROWINGSTAR + or effect == CONST_ANI_THROWINGKNIFE + or effect == CONST_ANI_SMALLSTONE + or effect == CONST_ANI_LARGEROCK + or effect == CONST_ANI_SNOWBALL + or effect == CONST_ANI_HUNTINGSPEAR + or effect == CONST_ANI_ENCHANTEDSPEAR + or effect == CONST_ANI_REDSTAR + or effect == CONST_ANI_GREENSTAR + or effect == CONST_ANI_ROYALSPEAR + or effect == CONST_ANI_WHIRLWINDSWORD + or effect == CONST_ANI_WHIRLWINDAXE + or effect == CONST_ANI_WHIRLWINDCLUB + or effect == CONST_ANI_CAKE + or effect == CONST_ANI_GLOOTHSPEAR + or effect == CONST_ANI_LEAFSTAR + or effect == CONST_ANI_ROYALSTAR then return SOUND_EFFECT_TYPE_DIST_ATK_THROW -- Crossbow shoottype - elseif effect == CONST_ANI_BOLT or - effect == CONST_ANI_POWERBOLT or - effect == CONST_ANI_INFERNALBOLT or - effect == CONST_ANI_PIERCINGBOLT or - effect == CONST_ANI_VORTEXBOLT or - effect == CONST_ANI_PRISMATICBOLT or - effect == CONST_ANI_DRILLBOLT or - effect == CONST_ANI_SPECTRALBOLT - then + elseif effect == CONST_ANI_BOLT or effect == CONST_ANI_POWERBOLT or effect == CONST_ANI_INFERNALBOLT or effect == CONST_ANI_PIERCINGBOLT or effect == CONST_ANI_VORTEXBOLT or effect == CONST_ANI_PRISMATICBOLT or effect == CONST_ANI_DRILLBOLT or effect == CONST_ANI_SPECTRALBOLT then return SOUND_EFFECT_TYPE_DIST_ATK_CROSSBOW -- Bow shoottype - elseif effect == CONST_ANI_POISONARROW or - effect == CONST_ANI_BURSTARROW or - effect == CONST_ANI_SNIPERARROW or - effect == CONST_ANI_ONYXARROW or - effect == CONST_ANI_FLASHARROW or - effect == CONST_ANI_FLAMMINGARROW or - effect == CONST_ANI_SHIVERARROW or - effect == CONST_ANI_EARTHARROW or - effect == CONST_ANI_TARSALARROW or - effect == CONST_ANI_CRYSTALLINEARROW or - effect == CONST_ANI_ENVENOMEDARROW or - effect == CONST_ANI_SIMPLEARROW or - effect == CONST_ANI_DIAMONDARROW + elseif + effect == CONST_ANI_POISONARROW + or effect == CONST_ANI_BURSTARROW + or effect == CONST_ANI_SNIPERARROW + or effect == CONST_ANI_ONYXARROW + or effect == CONST_ANI_FLASHARROW + or effect == CONST_ANI_FLAMMINGARROW + or effect == CONST_ANI_SHIVERARROW + or effect == CONST_ANI_EARTHARROW + or effect == CONST_ANI_TARSALARROW + or effect == CONST_ANI_CRYSTALLINEARROW + or effect == CONST_ANI_ENVENOMEDARROW + or effect == CONST_ANI_SIMPLEARROW + or effect == CONST_ANI_DIAMONDARROW then return SOUND_EFFECT_TYPE_DIST_ATK_BOW -- Magical shoottype - elseif effect == CONST_ANI_FIRE or - effect == CONST_ANI_ENERGY or - effect == CONST_ANI_DEATH or - effect == CONST_ANI_POISON or - effect == CONST_ANI_ETHEREALSPEAR or - effect == CONST_ANI_ICE or - effect == CONST_ANI_EARTH or - effect == CONST_ANI_HOLY or - effect == CONST_ANI_SUDDENDEATH or - effect == CONST_ANI_ENERGYBALL or - effect == CONST_ANI_SMALLICE or - effect == CONST_ANI_SMALLHOLY or - effect == CONST_ANI_SMALLEARTH or - effect == CONST_ANI_EXPLOSION + elseif + effect == CONST_ANI_FIRE + or effect == CONST_ANI_ENERGY + or effect == CONST_ANI_DEATH + or effect == CONST_ANI_POISON + or effect == CONST_ANI_ETHEREALSPEAR + or effect == CONST_ANI_ICE + or effect == CONST_ANI_EARTH + or effect == CONST_ANI_HOLY + or effect == CONST_ANI_SUDDENDEATH + or effect == CONST_ANI_ENERGYBALL + or effect == CONST_ANI_SMALLICE + or effect == CONST_ANI_SMALLHOLY + or effect == CONST_ANI_SMALLEARTH + or effect == CONST_ANI_EXPLOSION then return SOUND_EFFECT_TYPE_MAGICAL_RANGE_ATK end @@ -955,12 +947,12 @@ function readSpell(incomingLua, mtype) end end - if not (hasImpactSound) or not (hasCastSound) then + if not hasImpactSound or not hasCastSound then local sounds = loadSpellSoundType(incomingLua, mtype) - if (not (hasCastSound) and sounds.cast ~= SOUND_EFFECT_TYPE_SILENCE) then + if not hasCastSound and sounds.cast ~= SOUND_EFFECT_TYPE_SILENCE then spell:castSound(sounds.cast) end - if (not (hasImpactSound) and sounds.impact ~= SOUND_EFFECT_TYPE_SILENCE) then + if not hasImpactSound and sounds.impact ~= SOUND_EFFECT_TYPE_SILENCE then spell:castSound(sounds.impact) end end diff --git a/data-canary/scripts/lib/register_npc_type.lua b/data-canary/scripts/lib/register_npc_type.lua index 02a2809130c..53a5d525e59 100644 --- a/data-canary/scripts/lib/register_npc_type.lua +++ b/data-canary/scripts/lib/register_npc_type.lua @@ -1,13 +1,11 @@ registerNpcType = {} -setmetatable(registerNpcType, - { - __call = - function(self, npcType, mask) - for _, parse in pairs(self) do - parse(npcType, mask) - end - end - }) +setmetatable(registerNpcType, { + __call = function(self, npcType, mask) + for _, parse in pairs(self) do + parse(npcType, mask) + end + end, +}) NpcType.register = function(self, mask) return registerNpcType(self, mask) @@ -108,7 +106,7 @@ end registerNpcType.sounds = function(npcType, mask) if type(mask.sounds) == "table" then - if mask.sounds.ticks and mask.sounds.chance and mask.sounds.ids and type(mask.sounds.ids) == "table" and #(mask.sounds.ids) > 0 then + if mask.sounds.ticks and mask.sounds.chance and mask.sounds.ids and type(mask.sounds.ids) == "table" and #mask.sounds.ids > 0 then npcType:soundSpeedTicks(mask.sounds.ticks) npcType:soundChance(mask.sounds.chance) for _, v in pairs(mask.sounds.ids) do diff --git a/data-canary/scripts/lib/register_spells.lua b/data-canary/scripts/lib/register_spells.lua index d4ac8e418ec..6871ecc5651 100644 --- a/data-canary/scripts/lib/register_spells.lua +++ b/data-canary/scripts/lib/register_spells.lua @@ -3,7 +3,7 @@ AREA_SHORTWAVE3 = { { 1, 1, 1 }, { 1, 1, 1 }, - { 0, 3, 0 } + { 0, 3, 0 }, } AREA_WAVE10 = { @@ -14,7 +14,7 @@ AREA_WAVE10 = { { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 1, 1, 1, 0, 0 }, - { 0, 0, 0, 3, 0, 0, 0 } + { 0, 0, 0, 3, 0, 0, 0 }, } AREA_WAVE11 = { @@ -26,7 +26,7 @@ AREA_WAVE11 = { { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0 }, - { 0, 0, 0, 3, 0, 0, 0 } + { 0, 0, 0, 3, 0, 0, 0 }, } AREA_WAVE12 = { @@ -37,7 +37,7 @@ AREA_WAVE12 = { { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0 }, - { 0, 0, 0, 3, 0, 0, 0 } + { 0, 0, 0, 3, 0, 0, 0 }, } AREA_WAVE13 = { @@ -50,14 +50,14 @@ AREA_WAVE13 = { { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0 }, - { 0, 0, 0, 3, 0, 0, 0 } + { 0, 0, 0, 3, 0, 0, 0 }, } AREA_WAVE4 = { { 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 0 }, - { 0, 0, 3, 0, 0 } + { 0, 0, 3, 0, 0 }, } AREA_WAVE5 = { @@ -66,13 +66,13 @@ AREA_WAVE5 = { { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 1, 0, 0 }, - { 0, 0, 3, 0, 0 } + { 0, 0, 3, 0, 0 }, } AREA_WAVE6 = { { 0, 0, 0, 0, 0 }, { 0, 1, 3, 1, 0 }, - { 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0 }, } AREA_WAVE7 = { @@ -80,7 +80,7 @@ AREA_WAVE7 = { { 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 0 }, - { 0, 0, 3, 0, 0 } + { 0, 0, 3, 0, 0 }, } AREA_SQUAREWAVE5 = { @@ -88,7 +88,7 @@ AREA_SQUAREWAVE5 = { { 1, 1, 1 }, { 1, 1, 1 }, { 0, 1, 0 }, - { 0, 3, 0 } + { 0, 3, 0 }, } AREA_SQUAREWAVE6 = { @@ -103,7 +103,7 @@ AREA_SQUAREWAVE6 = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } AREA_SQUAREWAVE7 = { @@ -117,7 +117,7 @@ AREA_SQUAREWAVE7 = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } --Diagonal waves @@ -127,7 +127,7 @@ AREADIAGONAL_WAVE4 = { { 0, 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 1, 0 }, { 1, 1, 1, 1, 1, 0 }, - { 0, 0, 0, 0, 0, 3 } + { 0, 0, 0, 0, 0, 3 }, } AREADIAGONAL_SQUAREWAVE5 = { @@ -135,13 +135,13 @@ AREADIAGONAL_SQUAREWAVE5 = { { 1, 1, 1, 0, 0 }, { 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 0 }, - { 0, 0, 0, 0, 3 } + { 0, 0, 0, 0, 3 }, } AREADIAGONAL_WAVE6 = { { 0, 0, 1 }, { 0, 3, 0 }, - { 1, 0, 0 } + { 1, 0, 0 }, } AREADIAGONAL_WAVE7 = { @@ -151,12 +151,12 @@ AREADIAGONAL_WAVE7 = { { 0, 0, 1, 1, 1, 1, 0 }, { 0, 1, 1, 1, 1, 1, 0 }, { 1, 1, 1, 1, 1, 1, 0 }, - { 0, 0, 0, 0, 0, 0, 3 } + { 0, 0, 0, 0, 0, 0, 3 }, } --Beams AREA_BEAM1 = { - { 3 } + { 3 }, } AREA_BEAM5 = { @@ -164,7 +164,7 @@ AREA_BEAM5 = { { 1 }, { 1 }, { 1 }, - { 3 } + { 3 }, } AREA_BEAM6 = { @@ -173,7 +173,7 @@ AREA_BEAM6 = { { 1 }, { 1 }, { 1 }, - { 3 } + { 3 }, } AREA_BEAM7 = { @@ -183,7 +183,7 @@ AREA_BEAM7 = { { 1 }, { 1 }, { 1 }, - { 3 } + { 3 }, } AREA_BEAM8 = { @@ -194,7 +194,7 @@ AREA_BEAM8 = { { 1 }, { 1 }, { 1 }, - { 3 } + { 3 }, } AREA_BEAM10 = { @@ -207,7 +207,7 @@ AREA_BEAM10 = { { 1 }, { 1 }, { 1 }, - { 3 } + { 3 }, } --Diagonal Beams @@ -216,7 +216,7 @@ AREADIAGONAL_BEAM5 = { { 0, 1, 0, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 0, 0, 1, 0 }, - { 0, 0, 0, 0, 3 } + { 0, 0, 0, 0, 3 }, } AREADIAGONAL_BEAM7 = { @@ -226,7 +226,7 @@ AREADIAGONAL_BEAM7 = { { 0, 0, 0, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0 }, - { 0, 0, 0, 0, 0, 0, 3 } + { 0, 0, 0, 0, 0, 0, 3 }, } --Circles @@ -235,7 +235,7 @@ AREA_CIRCLE2X2 = { { 1, 1, 1, 1, 1 }, { 1, 1, 3, 1, 1 }, { 1, 1, 1, 1, 1 }, - { 0, 1, 1, 1, 0 } + { 0, 1, 1, 1, 0 }, } AREA_CIRCLE3X3 = { @@ -245,7 +245,7 @@ AREA_CIRCLE3X3 = { { 1, 1, 1, 3, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 1, 1, 0 }, - { 0, 0, 1, 1, 1, 0, 0 } + { 0, 0, 1, 1, 1, 0, 0 }, } AREA_CIRCLE3X32 = { @@ -255,7 +255,7 @@ AREA_CIRCLE3X32 = { { 1, 1, 1, 3, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1 }, - { 1, 1, 1, 1, 1, 1, 1 } + { 1, 1, 1, 1, 1, 1, 1 }, } AREA_CIRCLE3X33 = { @@ -265,14 +265,14 @@ AREA_CIRCLE3X33 = { { 1, 1, 0, 3, 1, 1, 1 }, { 1, 1, 0, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1 }, - { 1, 1, 1, 1, 1, 1, 1 } + { 1, 1, 1, 1, 1, 1, 1 }, } -- Crosses AREA_CIRCLE1X1 = { { 0, 1, 0 }, { 1, 3, 1 }, - { 0, 1, 0 } + { 0, 1, 0 }, } AREA_CIRCLE5X5 = { @@ -286,7 +286,7 @@ AREA_CIRCLE5X5 = { { 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, } AREA_CIRCLE5X5V2 = { @@ -300,7 +300,7 @@ AREA_CIRCLE5X5V2 = { { 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, } AREA_CIRCLE6X6 = { @@ -316,19 +316,19 @@ AREA_CIRCLE6X6 = { { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, } --Squares AREA_SQUARE1X1 = { { 1, 1, 1 }, { 1, 3, 1 }, - { 1, 1, 1 } + { 1, 1, 1 }, } -- Walls AREA_WALLFIELD = { - { 1, 1, 3, 1, 1 } + { 1, 1, 3, 1, 1 }, } AREADIAGONAL_WALLFIELD = { @@ -341,7 +341,7 @@ AREADIAGONAL_WALLFIELD = { -- Walls Energy AREA_WALLFIELD_ENERGY = { - { 1, 1, 1, 3, 1, 1, 1 } + { 1, 1, 1, 3, 1, 1, 1 }, } AREADIAGONAL_WALLFIELD_ENERGY = { @@ -363,7 +363,7 @@ AREA_RING1_BURST3 = { { 1, 1, 1, 0, 0, 0, 1, 1, 1 }, { 0, 1, 1, 1, 1, 1, 1, 1, 0 }, { 0, 0, 1, 1, 1, 1, 1, 0, 0 }, - { 0, 0, 0, 1, 1, 1, 0, 0, 0 } + { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, } -- The numbered-keys represents the damage values, and their table @@ -387,7 +387,7 @@ RANGE = { [16] = { 1, 2 }, [17] = { 1, 2 }, [18] = { 1, 2 }, - [19] = { 1, 2 } + [19] = { 1, 2 }, } function Creature:addDamageCondition(target, conditionType, listType, damage, time, rounds) @@ -442,13 +442,13 @@ function Player:addPartyCondition(combat, variant, condition, baseMana) end local members = party:getMembers() - members[#members+1] = party:getLeader() + members[#members + 1] = party:getLeader() local position = self:getPosition() local affectedMembers = {} for _, member in ipairs(members) do if member:getPosition():getDistance(position) <= 36 then - affectedMembers[#affectedMembers+1] = member + affectedMembers[#affectedMembers + 1] = member end end diff --git a/data-canary/scripts/movements/decay_to.lua b/data-canary/scripts/movements/decay_to.lua index fa8200f02a9..f87123fe165 100644 --- a/data-canary/scripts/movements/decay_to.lua +++ b/data-canary/scripts/movements/decay_to.lua @@ -1,7 +1,7 @@ local setting = { [293] = 294, [475] = 476, - [1066] = 1067 + [1066] = 1067, } local decayTo = MoveEvent() diff --git a/data-canary/scripts/movements/trap.lua b/data-canary/scripts/movements/trap.lua index 9edecd17490..d3f537548cd 100644 --- a/data-canary/scripts/movements/trap.lua +++ b/data-canary/scripts/movements/trap.lua @@ -2,7 +2,7 @@ local traps = { [2145] = { transformTo = 2146, damage = { -50, -100 } }, [2147] = { transformTo = 2148, damage = { -50, -100 } }, [3481] = { transformTo = 3482, damage = { -15, -30 } }, - [3944] = { transformTo = 3945, damage = { -15, -30 }, type = COMBAT_EARTHDAMAGE } + [3944] = { transformTo = 3945, damage = { -15, -30 }, type = COMBAT_EARTHDAMAGE }, } local trap = MoveEvent() diff --git a/data-canary/scripts/movements/unscripted_movements.lua b/data-canary/scripts/movements/unscripted_movements.lua index 75033d4b4fd..1d080a031ed 100644 --- a/data-canary/scripts/movements/unscripted_movements.lua +++ b/data-canary/scripts/movements/unscripted_movements.lua @@ -7,15 +7,15 @@ local items = { level = 300, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- mutant bone kilt itemid = 40595, type = "deequip", slot = "legs", - level = 300 + level = 300, }, { -- alchemist's notepad @@ -25,15 +25,15 @@ local items = { level = 250, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- alchemist's notepad itemid = 40594, type = "deequip", slot = "shield", - level = 250 + level = 250, }, { -- mutant bone boots @@ -43,15 +43,15 @@ local items = { level = 250, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- mutant bone boots itemid = 40593, type = "deequip", slot = "feet", - level = 250 + level = 250, }, { -- alchemist's boots @@ -61,15 +61,15 @@ local items = { level = 250, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- alchemist's boots itemid = 40592, type = "deequip", slot = "feet", - level = 250 + level = 250, }, { -- mutated skin armor @@ -79,15 +79,15 @@ local items = { level = 270, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- mutated skin armor itemid = 40591, type = "deequip", slot = "armor", - level = 270 + level = 270, }, { -- Mutated Skin Legs @@ -97,15 +97,15 @@ local items = { level = 270, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- Mutated Skin Legs itemid = 40590, type = "deequip", slot = "legs", - level = 270 + level = 270, }, { -- Stitched Mutant Hide Legs @@ -115,15 +115,15 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- Stitched Mutant Hide Legs itemid = 40589, type = "deequip", slot = "legs", - level = 270 + level = 270, }, { -- Antler-Horn Helmet @@ -133,27 +133,27 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- Antler-Horn Helmet itemid = 40588, type = "deequip", slot = "head", - level = 250 + level = 250, }, { -- 25 years backpack itemid = 39693, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- 25 years backpack itemid = 39693, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- turtle amulet @@ -163,14 +163,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } + { "Elite Knight" }, }, }, { -- enchanted turtle amulet itemid = 39235, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- enchanted turtle amulet @@ -180,14 +180,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } + { "Elite Knight" }, }, }, { -- enchanted turtle amulet itemid = 39234, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- enchanted turtle amulet @@ -197,14 +197,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } + { "Elite Knight" }, }, }, { -- enchanted turtle amulet itemid = 39233, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- arboreal ring @@ -214,14 +214,14 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- arboreal ring itemid = 39188, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged arboreal ring @@ -231,14 +231,14 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- charged arboreal ring itemid = 39187, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged arboreal ring @@ -248,14 +248,14 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- charged arboreal ring itemid = 39186, type = "deequip", - slot = "ring" + slot = "ring", }, { -- arcanomancer sigil @@ -265,14 +265,14 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- arcanomancer sigil itemid = 39185, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged arcanomancer ring @@ -282,14 +282,14 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- charged arcanomancer ring itemid = 39184, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged arcanomancer sigil @@ -299,14 +299,14 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- charged arcanomancer sigil itemid = 39183, type = "deequip", - slot = "ring" + slot = "ring", }, { -- alicorn ring @@ -316,14 +316,14 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- charged alicorn ring itemid = 39182, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged alicorn ring @@ -333,14 +333,14 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- charged alicorn ring itemid = 39181, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged alicorn ring @@ -350,14 +350,14 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- charged alicorn ring itemid = 39180, type = "deequip", - slot = "ring" + slot = "ring", }, { -- spiritthorn ring @@ -367,14 +367,14 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spiritthorn ring itemid = 39179, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged spiritthorn ring @@ -384,14 +384,14 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- charged spiritthorn ring itemid = 39178, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged spiritthorn ring @@ -401,14 +401,14 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- charged spiritthorn ring itemid = 39177, type = "deequip", - slot = "ring" + slot = "ring", }, { -- midnight sarong @@ -418,14 +418,14 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- midnight sarong itemid = 39167, type = "deequip", - slot = "legs" + slot = "legs", }, { -- dawnfire pantaloons @@ -435,14 +435,14 @@ local items = { level = 300, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- dawnfire pantaloons itemid = 39166, type = "deequip", - slot = "legs" + slot = "legs", }, { -- midnight tunic @@ -452,14 +452,14 @@ local items = { level = 300, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- midnight tunic itemid = 39165, type = "deequip", - slot = "armor" + slot = "armor", }, { -- dawnfire sherwani @@ -469,14 +469,14 @@ local items = { level = 270, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- dawnfire sherwani itemid = 39164, type = "deequip", - slot = "armor" + slot = "armor", }, { -- naga rod @@ -486,14 +486,14 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- naga rod itemid = 39163, type = "deequip", - slot = "hand" + slot = "hand", }, { -- naga wand @@ -503,14 +503,14 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- naga wand itemid = 39162, type = "deequip", - slot = "hand" + slot = "hand", }, { -- feverbloom boots @@ -520,8 +520,8 @@ local items = { level = 270, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- feverbloom boots @@ -537,14 +537,14 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- naga quiver itemid = 39160, type = "deequip", - slot = "right-hand" + slot = "right-hand", }, { -- naga crossbow @@ -554,14 +554,14 @@ local items = { level = 300, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- naga crossbow itemid = 39159, type = "deequip", - slot = "hand" + slot = "hand", }, { -- frostflower boots @@ -571,8 +571,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- frostflower boots @@ -588,14 +588,14 @@ local items = { level = 300, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- naga club itemid = 39157, type = "deequip", - slot = "hand" + slot = "hand", }, { -- naga axe @@ -605,14 +605,14 @@ local items = { level = 300, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- naga axe itemid = 39156, type = "deequip", - slot = "hand" + slot = "hand", }, { -- naga sword @@ -622,14 +622,14 @@ local items = { level = 300, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- naga sword itemid = 39155, type = "deequip", - slot = "hand" + slot = "hand", }, { -- arboreal tome @@ -639,14 +639,14 @@ local items = { level = 400, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- arboreal tome itemid = 39154, type = "deequip", - slot = "shield" + slot = "shield", }, { -- arboreal crown @@ -656,14 +656,14 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- arboreal crown itemid = 39153, type = "deequip", - slot = "head" + slot = "head", }, { -- arcanomancer folio @@ -673,14 +673,14 @@ local items = { level = 400, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- arcanomancer folio itemid = 39152, type = "deequip", - slot = "shield" + slot = "shield", }, { -- arcanomancer regalia @@ -690,14 +690,14 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- arcanomancer regalia itemid = 39151, type = "deequip", - slot = "head" + slot = "head", }, { -- alicorn quiver @@ -707,14 +707,14 @@ local items = { level = 400, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- alicorn quiver itemid = 39150, type = "deequip", - slot = "right-hand" + slot = "right-hand", }, { -- alicorn headguard @@ -724,14 +724,14 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- alicorn headguard itemid = 39149, type = "deequip", - slot = "head" + slot = "head", }, { -- spiritthorn helmet @@ -741,14 +741,14 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spiritthorn helmet itemid = 39148, type = "deequip", - slot = "head" + slot = "head", }, { -- spiritthorn armor @@ -758,38 +758,38 @@ local items = { level = 400, vocation = { { "Knight", true, true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spiritthorn armor itemid = 39147, type = "deequip", - slot = "armor" + slot = "armor", }, { -- changing backpack itemid = 37536, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- changing backpack itemid = 37536, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- lilypad backpack itemid = 37554, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- lilypad backpack itemid = 37554, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- gilded eldritch rod @@ -799,8 +799,8 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gilded eldritch rod @@ -810,8 +810,8 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch rod @@ -821,8 +821,8 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch rod @@ -832,8 +832,8 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch tome @@ -843,8 +843,8 @@ local items = { level = 300, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch tome @@ -854,8 +854,8 @@ local items = { level = 300, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch folio @@ -865,8 +865,8 @@ local items = { level = 300, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch folio @@ -876,8 +876,8 @@ local items = { level = 300, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch hood @@ -887,8 +887,8 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch hood @@ -898,8 +898,8 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch cowl @@ -909,8 +909,8 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch cowl @@ -920,8 +920,8 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- gilded eldritch wand @@ -931,8 +931,8 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- gilded eldritch wand @@ -942,8 +942,8 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch wand @@ -953,8 +953,8 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch wand @@ -964,8 +964,8 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch breeches @@ -975,8 +975,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch breeches @@ -986,8 +986,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch quiver @@ -997,8 +997,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch quiver @@ -1008,8 +1008,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- gilded eldritch bow @@ -1019,8 +1019,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- gilded eldritch bow @@ -1030,8 +1030,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch bow @@ -1041,8 +1041,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch bow @@ -1052,8 +1052,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch cuirass @@ -1063,8 +1063,8 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch cuirass @@ -1074,8 +1074,8 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch greataxe @@ -1085,8 +1085,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch greataxe @@ -1096,8 +1096,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch greataxe @@ -1107,8 +1107,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch greataxe @@ -1118,8 +1118,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch warmace @@ -1129,8 +1129,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch warmace @@ -1140,8 +1140,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch warmace @@ -1151,8 +1151,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch warmace @@ -1162,8 +1162,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch claymore @@ -1173,8 +1173,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch claymore @@ -1184,8 +1184,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch claymore @@ -1195,8 +1195,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch claymore @@ -1206,8 +1206,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch shield @@ -1217,8 +1217,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch shield @@ -1228,20 +1228,20 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spectral bolt (no decay) itemid = 35902, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- spectral bolt (no decay) itemid = 35902, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- red quiver @@ -1251,8 +1251,8 @@ local items = { vocation = { { "None", true }, { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- red quiver @@ -1262,8 +1262,8 @@ local items = { vocation = { { "None", true }, { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- blue quiver @@ -1273,8 +1273,8 @@ local items = { vocation = { { "None", true }, { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- blue quiver @@ -1284,8 +1284,8 @@ local items = { vocation = { { "None", true }, { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- quiver @@ -1295,8 +1295,8 @@ local items = { vocation = { { "None", true }, { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- quiver @@ -1306,8 +1306,8 @@ local items = { vocation = { { "None", true }, { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- jungle quiver @@ -1317,8 +1317,8 @@ local items = { level = 150, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- jungle quiver @@ -1328,21 +1328,21 @@ local items = { level = 150, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- exotic amulet itemid = 35523, type = "equip", slot = "necklace", - level = 180 + level = 180, }, { -- exotic amulet itemid = 35523, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- jungle wand @@ -1352,8 +1352,8 @@ local items = { level = 150, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- jungle wand @@ -1369,8 +1369,8 @@ local items = { level = 150, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- jungle rod @@ -1386,8 +1386,8 @@ local items = { level = 150, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- make-do boots @@ -1403,8 +1403,8 @@ local items = { level = 150, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- makeshift boots @@ -1420,8 +1420,8 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- jungle bow @@ -1437,8 +1437,8 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- bast legs @@ -1454,8 +1454,8 @@ local items = { level = 130, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- exotic legs @@ -1471,8 +1471,8 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- throwing axe @@ -1488,8 +1488,8 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- jungle flail @@ -1505,14 +1505,14 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion hammer itemid = 34254, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lion axe @@ -1522,35 +1522,35 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion axe itemid = 34253, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lion amulet itemid = 34158, type = "equip", slot = "necklace", - level = 150 + level = 150, }, { -- lion amulet itemid = 34158, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- lion plate itemid = 34157, type = "deequip", slot = "armor", - level = 270 + level = 270, }, { -- lion plate @@ -1560,14 +1560,14 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion spangenhelm itemid = 34156, type = "deequip", - slot = "head" + slot = "head", }, { -- lion spangenhelm @@ -1577,8 +1577,8 @@ local items = { level = 230, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- lion longsword @@ -1588,20 +1588,20 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion longsword itemid = 34155, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lion spellbook itemid = 34153, type = "deequip", - slot = "shield" + slot = "shield", }, { -- lion spellbook @@ -1613,8 +1613,8 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lion wand @@ -1624,14 +1624,14 @@ local items = { level = 220, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- lion wand itemid = 34152, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lion rod @@ -1641,14 +1641,14 @@ local items = { level = 270, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lion rod itemid = 34151, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lion longbow @@ -1658,20 +1658,20 @@ local items = { level = 270, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- lion longbow itemid = 34150, type = "deequip", - slot = "hand" + slot = "hand", }, { -- soulbastion shield itemid = 34099, type = "deequip", - slot = "shield" + slot = "shield", }, { -- soulbastion shield @@ -1681,14 +1681,14 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- pair of soulstalkers itemid = 34098, type = "deequip", - slot = "feet" + slot = "feet", }, { -- pair of soulstalkers @@ -1698,14 +1698,14 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- pair of soulwalkers itemid = 34097, type = "deequip", - slot = "feet" + slot = "feet", }, { -- pair of soulwalkers @@ -1715,14 +1715,14 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulshroud armor itemid = 34096, type = "deequip", - slot = "armor" + slot = "armor", }, { -- soulshroud armor @@ -1732,14 +1732,14 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- soulmantel armor itemid = 34095, type = "deequip", - slot = "armor" + slot = "armor", }, { -- soulmantel armor @@ -1749,15 +1749,15 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- soulshell armor itemid = 34094, type = "deequip", slot = "armor", - level = 400 + level = 400, }, { -- soulshell armor @@ -1767,15 +1767,15 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- soulstrider legs itemid = 34093, type = "deequip", slot = "legs", - level = 400 + level = 400, }, { -- soulstrider legs @@ -1785,15 +1785,15 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- soulshanks legs itemid = 34092, type = "deequip", slot = "legs", - level = 400 + level = 400, }, { -- soulshanks legs @@ -1803,8 +1803,8 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- soulhexer @@ -1820,8 +1820,8 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- soultainter @@ -1837,8 +1837,8 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- soulpiercer @@ -1854,8 +1854,8 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- soulbleeder @@ -1871,8 +1871,8 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- soulmaimer @@ -1888,8 +1888,8 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulcrusher @@ -1905,8 +1905,8 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- souleater @@ -1922,8 +1922,8 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulbiter @@ -1939,8 +1939,8 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulshredder @@ -1956,8 +1956,8 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulcutter @@ -1973,15 +1973,15 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion ring itemid = 34080, type = "deequip", slot = "ring", - level = 270 + level = 270, }, { -- lion ring @@ -1991,72 +1991,72 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- Lit Torch (Sparkling) itemid = 34016, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- Lit Torch (Sparkling) itemid = 34016, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- pair of old bracers itemid = 32705, type = "equip", - slot = "armor" + slot = "armor", }, { -- pair of old bracers itemid = 32705, type = "deequip", - slot = "armor" + slot = "armor", }, { -- ring of souls itemid = 32636, type = "equip", slot = "ring", - level = 200 + level = 200, }, { -- ring of souls itemid = 32636, type = "deequip", slot = "ring", - level = 200 + level = 200, }, { -- ring of souls itemid = 32635, type = "equip", slot = "ring", - level = 200 + level = 200, }, { -- ring of souls itemid = 32635, type = "deequip", slot = "ring", - level = 200 + level = 200, }, { -- spooky hood itemid = 32630, type = "equip", - slot = "head" + slot = "head", }, { -- spooky hood itemid = 32630, type = "deequip", - slot = "head" + slot = "head", }, { -- ghost chestplate @@ -2066,41 +2066,41 @@ local items = { level = 230, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ghost chestplate itemid = 32628, type = "deequip", slot = "armor", - level = 230 + level = 230, }, { -- ring of souls itemid = 32621, type = "equip", slot = "ring", - level = 200 + level = 200, }, { -- ring of souls itemid = 32621, type = "deequip", slot = "ring", - level = 200 + level = 200, }, { -- ghost backpack itemid = 32620, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- ghost backpack itemid = 32620, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- pair of nightmare boots @@ -2112,15 +2112,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- pair of nightmare boots itemid = 32619, type = "deequip", slot = "feet", - level = 140 + level = 140, }, { -- soulful legs @@ -2132,15 +2132,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- soulful legs itemid = 32618, type = "deequip", slot = "legs", - level = 180 + level = 180, }, { -- fabulous legs @@ -2152,39 +2152,39 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- fabulous legs itemid = 32617, type = "deequip", slot = "legs", - level = 225 + level = 225, }, { -- phantasmal axe itemid = 32616, type = "equip", - slot = "hand" + slot = "hand", }, { -- phantasmal axe itemid = 32616, type = "deequip", - slot = "hand" + slot = "hand", }, { -- burial shroud itemid = 32585, type = "equip", - slot = "armor" + slot = "armor", }, { -- burial shroud itemid = 32585, type = "deequip", - slot = "armor" + slot = "armor", }, { -- meat hammer @@ -2258,7 +2258,7 @@ local items = { level = 220, vocation = { { "Paladin", true }, - { "Royal Paladin" } + { "Royal Paladin" }, }, }, { @@ -2302,7 +2302,7 @@ local items = { level = 220, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } + { "Master Sorcerer" }, }, }, { @@ -2320,7 +2320,7 @@ local items = { level = 220, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } + { "Master Sorcerer" }, }, }, { @@ -2328,7 +2328,7 @@ local items = { itemid = 31582, type = "deequip", slot = "head", - level = 220 + level = 220, }, { -- bow of cataclysm @@ -2362,7 +2362,7 @@ local items = { level = 220, vocation = { { "Paladin", true }, - { "Royal Paladin" } + { "Royal Paladin" }, }, }, { @@ -2380,7 +2380,7 @@ local items = { level = 230, vocation = { { "Druid", true }, - { "Elder Druid" } + { "Elder Druid" }, }, }, { @@ -2398,7 +2398,7 @@ local items = { level = 230, vocation = { { "Knight", true }, - { "Elite Knight" } + { "Elite Knight" }, }, }, { @@ -2530,7 +2530,7 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } + { "Elder Druid" }, }, }, { @@ -2550,7 +2550,7 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } + { "Elder Druid" }, }, }, { @@ -2570,7 +2570,7 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } + { "Elder Druid" }, }, }, { @@ -2588,7 +2588,7 @@ local items = { level = 220, vocation = { { "Druid", true }, - { "Elder Druid" } + { "Elder Druid" }, }, }, { @@ -2606,7 +2606,7 @@ local items = { level = 270, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } + { "Master Sorcerer" }, }, }, { @@ -2636,7 +2636,7 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } + { "Elite Knight" }, }, }, { @@ -2678,7 +2678,7 @@ local items = { level = 220, vocation = { { "Knight", true }, - { "Elite Knight" } + { "Elite Knight" }, }, }, { @@ -2705,86 +2705,86 @@ local items = { itemid = 30323, type = "equip", slot = "necklace", - level = 220 + level = 220, }, { -- rainbow necklace itemid = 30323, type = "deequip", slot = "necklace", - level = 220 + level = 220, }, { -- ice hatchet itemid = 30283, type = "equip", - slot = "hand" + slot = "hand", }, { -- ice hatchet itemid = 30283, type = "deequip", - slot = "hand" + slot = "hand", }, { -- frozen claw itemid = 30279, type = "equip", - slot = "ring" + slot = "ring", }, { -- frozen claw itemid = 30279, type = "deequip", - slot = "ring" + slot = "ring", }, { -- the crown of the percht queen itemid = 30276, type = "equip", - slot = "head" + slot = "head", }, { -- the crown of the percht queen itemid = 30276, type = "deequip", - slot = "head" + slot = "head", }, { -- the crown of the percht queen itemid = 30275, type = "equip", - slot = "head" + slot = "head", }, { -- the crown of the percht queen itemid = 30275, type = "deequip", - slot = "head" + slot = "head", }, { -- festive backpack itemid = 30197, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- festive backpack itemid = 30197, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- yetislippers itemid = 30196, type = "equip", - slot = "feet" + slot = "feet", }, { -- yetislippers itemid = 30196, type = "deequip", - slot = "feet" + slot = "feet", }, { -- pendulet @@ -2794,15 +2794,15 @@ local items = { level = 180, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- pendulet itemid = 30345, type = "deequip", slot = "necklace", - level = 180 + level = 180, }, { -- enchanted pendulet @@ -2812,15 +2812,15 @@ local items = { level = 180, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- enchanted pendulet itemid = 30344, type = "deequip", slot = "necklace", - level = 180 + level = 180, }, { -- sleep shawl @@ -2830,15 +2830,15 @@ local items = { level = 180, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- sleep shawl itemid = 30343, type = "deequip", slot = "necklace", - level = 180 + level = 180, }, { -- enchanted sleep shawl @@ -2848,27 +2848,27 @@ local items = { level = 180, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- enchanted sleep shawl itemid = 30342, type = "deequip", slot = "necklace", - level = 180 + level = 180, }, { -- shield of endless search itemid = 30181, type = "equip", - slot = "shield" + slot = "shield", }, { -- shield of endless search itemid = 30181, type = "deequip", - slot = "shield" + slot = "shield", }, { -- spirit guide @@ -2880,15 +2880,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spirit guide itemid = 29431, type = "deequip", slot = "shield", - level = 180 + level = 180, }, { -- ectoplasmic shield @@ -2898,15 +2898,15 @@ local items = { level = 180, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ectoplasmic shield itemid = 29430, type = "deequip", slot = "shield", - level = 180 + level = 180, }, { -- dark whispers @@ -2916,15 +2916,15 @@ local items = { level = 180, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- dark whispers itemid = 29427, type = "deequip", slot = "head", - level = 180 + level = 180, }, { -- brain in a jar @@ -2936,15 +2936,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- brain in a jar itemid = 29426, type = "deequip", slot = "shield", - level = 180 + level = 180, }, { -- energized limb @@ -2956,15 +2956,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- energized limb itemid = 29425, type = "deequip", slot = "hand", - level = 180 + level = 180, }, { -- pair of dreamwalkers @@ -2976,15 +2976,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- pair of dreamwalkers itemid = 29424, type = "deequip", slot = "feet", - level = 180 + level = 180, }, { -- dream shroud @@ -2996,39 +2996,39 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- dream shroud itemid = 29423, type = "deequip", slot = "armor", - level = 180 + level = 180, }, { -- winterblade itemid = 29422, type = "equip", - slot = "hand" + slot = "hand", }, { -- winterblade itemid = 29422, type = "deequip", - slot = "hand" + slot = "hand", }, { -- summerblade itemid = 29421, type = "equip", - slot = "hand" + slot = "hand", }, { -- summerblade itemid = 29421, type = "deequip", - slot = "hand" + slot = "hand", }, { -- shoulder plate @@ -3040,27 +3040,27 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- shoulder plate itemid = 29420, type = "deequip", slot = "shield", - level = 180 + level = 180, }, { -- resizer itemid = 29419, type = "equip", - slot = "hand" + slot = "hand", }, { -- resizer itemid = 29419, type = "deequip", - slot = "hand" + slot = "hand", }, { -- living armor @@ -3072,171 +3072,171 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- living armor itemid = 29418, type = "deequip", slot = "armor", - level = 180 + level = 180, }, { -- living vine bow itemid = 29417, type = "equip", - slot = "hand" + slot = "hand", }, { -- living vine bow itemid = 29417, type = "deequip", - slot = "hand" + slot = "hand", }, { -- golden axe itemid = 29286, type = "equip", - slot = "hand" + slot = "hand", }, { -- golden axe itemid = 29286, type = "deequip", - slot = "hand" + slot = "hand", }, { -- book backpack itemid = 28571, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- book backpack itemid = 28571, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- wand of destruction test itemid = 28479, type = "equip", - slot = "hand" + slot = "hand", }, { -- wand of destruction test itemid = 28479, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master bow test itemid = 28478, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral master bow test itemid = 28478, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate testtplate itemid = 28475, type = "equip", - slot = "armor" + slot = "armor", }, { -- ornate testtplate itemid = 28475, type = "deequip", - slot = "armor" + slot = "armor", }, { -- sorcerer test weapon itemid = 28466, type = "equip", - slot = "hand" + slot = "hand", }, { -- sorcerer test weapon itemid = 28466, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bow of destruction test itemid = 28465, type = "equip", - slot = "hand" + slot = "hand", }, { -- bow of destruction test itemid = 28465, type = "deequip", - slot = "hand" + slot = "hand", }, { -- test weapon for knights itemid = 28464, type = "equip", - slot = "hand" + slot = "hand", }, { -- test weapon for knights itemid = 28464, type = "deequip", - slot = "hand" + slot = "hand", }, { -- sulphurous demonbone itemid = 28832, type = "equip", - slot = "hand" + slot = "hand", }, { -- sulphurous demonbone itemid = 28832, type = "deequip", - slot = "hand" + slot = "hand", }, { -- unliving demonbone itemid = 28831, type = "equip", - slot = "hand" + slot = "hand", }, { -- unliving demonbone itemid = 28831, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energized demonbone itemid = 28830, type = "equip", - slot = "hand" + slot = "hand", }, { -- energized demonbone itemid = 28830, type = "deequip", - slot = "hand" + slot = "hand", }, { -- rotten demonbone itemid = 28829, type = "equip", - slot = "hand" + slot = "hand", }, { -- rotten demonbone itemid = 28829, type = "deequip", - slot = "hand" + slot = "hand", }, { -- deepling fork @@ -3248,15 +3248,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- deepling fork itemid = 28826, type = "deequip", slot = "hand", - level = 230 + level = 230, }, { -- deepling ceremonial dagger @@ -3268,51 +3268,51 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- deepling ceremonial dagger itemid = 28825, type = "deequip", slot = "hand", - level = 180 + level = 180, }, { -- falcon mace itemid = 28725, type = "equip", - slot = "hand" + slot = "hand", }, { -- falcon mace itemid = 28725, type = "deequip", - slot = "hand" + slot = "hand", }, { -- falcon battleaxe itemid = 28724, type = "equip", - slot = "hand" + slot = "hand", }, { -- falcon battleaxe itemid = 28724, type = "deequip", - slot = "hand" + slot = "hand", }, { -- falcon longsword itemid = 28723, type = "equip", - slot = "hand" + slot = "hand", }, { -- falcon longsword itemid = 28723, type = "deequip", - slot = "hand" + slot = "hand", }, { -- falcon escutcheon @@ -3324,15 +3324,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- falcon escutcheon itemid = 28722, type = "deequip", slot = "shield", - level = 300 + level = 300, }, { -- falcon shield @@ -3344,15 +3344,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- falcon shield itemid = 28721, type = "deequip", slot = "shield", - level = 300 + level = 300, }, { -- falcon greaves @@ -3364,15 +3364,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- falcon greaves itemid = 28720, type = "deequip", slot = "legs", - level = 300 + level = 300, }, { -- falcon plate @@ -3382,27 +3382,27 @@ local items = { level = 300, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- falcon plate itemid = 28719, type = "deequip", slot = "armor", - level = 300 + level = 300, }, { -- falcon bow itemid = 28718, type = "equip", - slot = "hand" + slot = "hand", }, { -- falcon bow itemid = 28718, type = "deequip", - slot = "hand" + slot = "hand", }, { -- falcon wand @@ -3412,15 +3412,15 @@ local items = { level = 300, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- falcon wand itemid = 28717, type = "deequip", slot = "hand", - level = 300 + level = 300, }, { -- falcon rod @@ -3430,15 +3430,15 @@ local items = { level = 300, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- falcon rod itemid = 28716, type = "deequip", slot = "hand", - level = 300 + level = 300, }, { -- falcon coif @@ -3450,15 +3450,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- falcon coif itemid = 28715, type = "deequip", slot = "head", - level = 300 + level = 300, }, { -- falcon circlet @@ -3470,51 +3470,51 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- falcon circlet itemid = 28714, type = "deequip", slot = "head", - level = 300 + level = 300, }, { -- silver chimes itemid = 12126, type = "equip", - slot = "shield" + slot = "shield", }, { -- silver chimes itemid = 12126, type = "deequip", - slot = "shield" + slot = "shield", }, { -- suspicious device itemid = 27653, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- suspicious device itemid = 27653, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- gnome sword itemid = 27651, type = "equip", - slot = "hand" + slot = "hand", }, { -- gnome sword itemid = 27651, type = "deequip", - slot = "hand" + slot = "hand", }, { -- gnome shield @@ -3526,15 +3526,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Royal Paladin" }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gnome shield itemid = 27650, type = "deequip", slot = "shield", - level = 200 + level = 200, }, { -- gnome legs @@ -3546,15 +3546,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gnome legs itemid = 27649, type = "deequip", slot = "legs", - level = 200 + level = 200, }, { -- gnome armor @@ -3564,15 +3564,15 @@ local items = { level = 200, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- gnome armor itemid = 27648, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- gnome helmet @@ -3584,65 +3584,65 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gnome helmet itemid = 27647, type = "deequip", slot = "head", - level = 200 + level = 200, }, { -- foxtail amulet itemid = 27565, type = "equip", slot = "necklace", - level = 100 + level = 100, }, { -- foxtail amulet itemid = 27565, type = "deequip", slot = "necklace", - level = 100 + level = 100, }, { -- mallet handle itemid = 27525, type = "equip", - slot = "hand" + slot = "hand", }, { -- mallet handle itemid = 27525, type = "deequip", - slot = "hand" + slot = "hand", }, { -- strange mallet itemid = 27523, type = "equip", - slot = "hand" + slot = "hand", }, { -- strange mallet itemid = 27523, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blue spectacles itemid = 27522, type = "equip", - slot = "head" + slot = "head", }, { -- blue spectacles itemid = 27522, type = "deequip", - slot = "head" + slot = "head", }, { -- rod of destruction @@ -3652,15 +3652,15 @@ local items = { level = 200, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- rod of destruction itemid = 27458, type = "deequip", slot = "hand", - level = 200 + level = 200, }, { -- wand of destruction @@ -3670,1577 +3670,1577 @@ local items = { level = 200, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of destruction itemid = 27457, type = "deequip", slot = "hand", - level = 200 + level = 200, }, { -- crossbow of destruction itemid = 27456, type = "equip", - slot = "hand" + slot = "hand", }, { -- crossbow of destruction itemid = 27456, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bow of destruction itemid = 27455, type = "equip", - slot = "hand" + slot = "hand", }, { -- bow of destruction itemid = 27455, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hammer of destruction itemid = 27454, type = "equip", - slot = "hand" + slot = "hand", }, { -- hammer of destruction itemid = 27454, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mace of destruction itemid = 27453, type = "equip", - slot = "hand" + slot = "hand", }, { -- mace of destruction itemid = 27453, type = "deequip", - slot = "hand" + slot = "hand", }, { -- chopper of destruction itemid = 27452, type = "equip", - slot = "hand" + slot = "hand", }, { -- chopper of destruction itemid = 27452, type = "deequip", - slot = "hand" + slot = "hand", }, { -- axe of destruction itemid = 27451, type = "equip", - slot = "hand" + slot = "hand", }, { -- axe of destruction itemid = 27451, type = "deequip", - slot = "hand" + slot = "hand", }, { -- slayer of destruction itemid = 27450, type = "equip", - slot = "hand" + slot = "hand", }, { -- slayer of destruction itemid = 27450, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blade of destruction itemid = 27449, type = "equip", - slot = "hand" + slot = "hand", }, { -- blade of destruction itemid = 27449, type = "deequip", - slot = "hand" + slot = "hand", }, { -- Journal Shield itemid = 26947, type = "equip", - slot = "shield" + slot = "shield", }, { -- Journal Shield itemid = 26947, type = "deequip", - slot = "shield" + slot = "shield", }, { -- reflecting crown itemid = 26190, type = "equip", - slot = "head" + slot = "head", }, { -- reflecting crown itemid = 26190, type = "deequip", - slot = "head" + slot = "head", }, { -- incandescent crown itemid = 26189, type = "equip", - slot = "head" + slot = "head", }, { -- incandescent crown itemid = 26189, type = "deequip", - slot = "head" + slot = "head", }, { -- iron crown itemid = 26188, type = "equip", - slot = "head" + slot = "head", }, { -- iron crown itemid = 26188, type = "deequip", - slot = "head" + slot = "head", }, { -- leaf crown itemid = 26187, type = "equip", - slot = "head" + slot = "head", }, { -- leaf crown itemid = 26187, type = "deequip", - slot = "head" + slot = "head", }, { -- ornate carving hammer itemid = 26061, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate carving hammer itemid = 26061, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable carving hammer itemid = 26060, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable carving hammer itemid = 26060, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain carving hammer itemid = 26059, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain carving hammer itemid = 26059, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate carving mace itemid = 26058, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate carving mace itemid = 26058, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable carving mace itemid = 26057, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable carving mace itemid = 26057, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain carving mace itemid = 26056, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain carving mace itemid = 26056, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate carving chopper itemid = 26055, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate carving chopper itemid = 26055, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable carving chopper itemid = 26054, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable carving chopper itemid = 26054, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain carving chopper itemid = 26053, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain carving chopper itemid = 26053, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate carving axe itemid = 26052, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate carving axe itemid = 26052, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable carving axe itemid = 26051, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable carving axe itemid = 26051, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain carving axe itemid = 26050, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain carving axe itemid = 26050, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate carving slayer itemid = 26049, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate carving slayer itemid = 26049, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable carving slayer itemid = 26048, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable carving slayer itemid = 26048, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain carving slayer itemid = 26047, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain carving slayer itemid = 26047, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate carving blade itemid = 26046, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate carving blade itemid = 26046, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable carving blade itemid = 26045, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable carving blade itemid = 26045, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain carving blade itemid = 26044, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain carving blade itemid = 26044, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate remedy hammer itemid = 26031, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate remedy hammer itemid = 26031, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable remedy hammer itemid = 26030, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable remedy hammer itemid = 26030, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain remedy hammer itemid = 26029, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain remedy hammer itemid = 26029, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate remedy mace itemid = 26028, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate remedy mace itemid = 26028, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable remedy mace itemid = 26027, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable remedy mace itemid = 26027, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain remedy mace itemid = 26026, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain remedy mace itemid = 26026, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate remedy chopper itemid = 26025, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate remedy chopper itemid = 26025, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable remedy chopper itemid = 26024, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable remedy chopper itemid = 26024, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain remedy chopper itemid = 26023, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain remedy chopper itemid = 26023, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate remedy axe itemid = 26022, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate remedy axe itemid = 26022, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable remedy axe itemid = 26021, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable remedy axe itemid = 26021, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain remedy axe itemid = 26020, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain remedy axe itemid = 26020, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate remedy slayer itemid = 26019, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate remedy slayer itemid = 26019, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable remedy slayer itemid = 26018, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable remedy slayer itemid = 26018, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain remedy slayer itemid = 26017, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain remedy slayer itemid = 26017, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate remedy blade itemid = 26016, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate remedy blade itemid = 26016, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable remedy blade itemid = 26015, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable remedy blade itemid = 26015, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain remedy blade itemid = 26014, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain remedy blade itemid = 26014, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem hammer itemid = 26000, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem hammer itemid = 26000, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem hammer itemid = 25999, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem hammer itemid = 25999, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain mayhem hammer itemid = 25998, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain mayhem hammer itemid = 25998, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem mace itemid = 25997, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem mace itemid = 25997, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem mace itemid = 25996, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem mace itemid = 25996, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain mayhem mace itemid = 25995, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain mayhem mace itemid = 25995, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem chopper itemid = 25994, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem chopper itemid = 25994, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem chopper itemid = 25993, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem chopper itemid = 25993, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain mayhem chopper itemid = 25992, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain mayhem chopper itemid = 25992, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem axe itemid = 25991, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem axe itemid = 25991, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem axe itemid = 25990, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem axe itemid = 25990, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain mayhem axe itemid = 25989, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain mayhem axe itemid = 25989, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem slayer itemid = 25988, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem slayer itemid = 25988, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem slayer itemid = 25987, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem slayer itemid = 25987, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain mayhem slayer itemid = 25986, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain mayhem slayer itemid = 25986, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem blade itemid = 25985, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem blade itemid = 25985, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem blade itemid = 25984, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem blade itemid = 25984, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain mayhem blade itemid = 25983, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain mayhem blade itemid = 25983, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mathmaster shield (souvenir) itemid = 25982, type = "equip", - slot = "shield" + slot = "shield", }, { -- mathmaster shield (souvenir) itemid = 25982, type = "deequip", - slot = "shield" + slot = "shield", }, { -- energy war hammer replica itemid = 25974, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy war hammer replica itemid = 25974, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy orcish maul replica itemid = 25973, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy orcish maul replica itemid = 25973, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy basher replica itemid = 25972, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy basher replica itemid = 25972, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy crystal mace replica itemid = 25971, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy crystal mace replica itemid = 25971, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy clerical mace replica itemid = 25970, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy clerical mace replica itemid = 25970, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy war axe replica itemid = 25969, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy war axe replica itemid = 25969, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy headchopper replica itemid = 25968, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy headchopper replica itemid = 25968, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy heroic axe replica itemid = 25967, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy heroic axe replica itemid = 25967, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy knight axe replica itemid = 25966, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy knight axe replica itemid = 25966, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy barbarian axe replica itemid = 25965, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy barbarian axe replica itemid = 25965, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy dragon slayer replica itemid = 25964, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy dragon slayer replica itemid = 25964, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy blacksteel replica itemid = 25963, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy blacksteel replica itemid = 25963, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy mystic blade replica itemid = 25962, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy mystic blade replica itemid = 25962, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy relic sword replica itemid = 25961, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy relic sword replica itemid = 25961, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy spike sword replica itemid = 25960, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy spike sword replica itemid = 25960, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth war hammer replica itemid = 25959, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth war hammer replica itemid = 25959, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth orcish maul replica itemid = 25958, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth orcish maul replica itemid = 25958, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth basher replica itemid = 25957, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth basher replica itemid = 25957, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth crystal mace replica itemid = 25956, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth crystal mace replica itemid = 25956, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth clerical mace replica itemid = 25955, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth clerical mace replica itemid = 25955, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth war axe replica itemid = 25954, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth war axe replica itemid = 25954, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth headchopper replica itemid = 25953, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth headchopper replica itemid = 25953, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth heroic axe replica itemid = 25952, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth heroic axe replica itemid = 25952, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth knight axe replica itemid = 25951, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth knight axe replica itemid = 25951, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth barbarian axe replica itemid = 25950, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth barbarian axe replica itemid = 25950, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth dragon slayer replica itemid = 25949, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth dragon slayer replica itemid = 25949, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth blacksteel replica itemid = 25948, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth blacksteel replica itemid = 25948, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth mystic blade replica itemid = 25947, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth mystic blade replica itemid = 25947, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth relic sword replica itemid = 25946, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth relic sword replica itemid = 25946, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth spike sword replica itemid = 25945, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth spike sword replica itemid = 25945, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy war hammer replica itemid = 25944, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy war hammer replica itemid = 25944, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy orcish maul replica itemid = 25943, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy orcish maul replica itemid = 25943, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy basher replica itemid = 25942, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy basher replica itemid = 25942, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy crystal mace replica itemid = 25941, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy crystal mace replica itemid = 25941, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy clerical mace replica itemid = 25940, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy clerical mace replica itemid = 25940, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy war axe replica itemid = 25939, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy war axe replica itemid = 25939, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy headchopper replica itemid = 25938, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy headchopper replica itemid = 25938, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy heroic axe replica itemid = 25937, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy heroic axe replica itemid = 25937, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy knight axe replica itemid = 25936, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy knight axe replica itemid = 25936, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy barbarian axe replica itemid = 25935, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy barbarian axe replica itemid = 25935, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy dragon slayer replica itemid = 25934, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy dragon slayer replica itemid = 25934, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy blacksteel replica itemid = 25933, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy blacksteel replica itemid = 25933, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy mystic blade replica itemid = 25932, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy mystic blade replica itemid = 25932, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy relic sword replica itemid = 25931, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy relic sword replica itemid = 25931, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy spike sword replica itemid = 25930, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy spike sword replica itemid = 25930, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery war hammer replica itemid = 25929, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery war hammer replica itemid = 25929, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery orcish maul replica itemid = 25928, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery orcish maul replica itemid = 25928, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery basher replica itemid = 25927, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery basher replica itemid = 25927, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery crystal mace replica itemid = 25926, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery crystal mace replica itemid = 25926, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery clerical mace replica itemid = 25925, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery clerical mace replica itemid = 25925, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery war axe replica itemid = 25924, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery war axe replica itemid = 25924, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery headchopper replica itemid = 25923, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery headchopper replica itemid = 25923, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery heroic axe replica itemid = 25922, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery heroic axe replica itemid = 25922, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery knight axe replica itemid = 25921, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery knight axe replica itemid = 25921, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery barbarian axe replica itemid = 25920, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery barbarian axe replica itemid = 25920, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery dragon slayer replica itemid = 25919, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery dragon slayer replica itemid = 25919, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery blacksteel replica itemid = 25918, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery blacksteel replica itemid = 25918, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery mystic blade replica itemid = 25917, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery mystic blade replica itemid = 25917, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery relic sword replica itemid = 25916, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery relic sword replica itemid = 25916, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery spike sword replica itemid = 25915, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery spike sword replica itemid = 25915, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blossom bag itemid = 25780, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- blossom bag itemid = 25780, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- swan feather cloak itemid = 25779, type = "equip", slot = "armor", - level = 60 + level = 60, }, { -- swan feather cloak itemid = 25779, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- wand of darkness @@ -5250,51 +5250,51 @@ local items = { level = 41, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of darkness itemid = 25760, type = "deequip", slot = "hand", - level = 41 + level = 41, }, { -- royal star itemid = 25759, type = "equip", - slot = "hand" + slot = "hand", }, { -- royal star itemid = 25759, type = "deequip", - slot = "hand" + slot = "hand", }, { -- spectral bolt itemid = 25758, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- spectral bolt itemid = 25758, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- leaf star itemid = 25735, type = "equip", - slot = "hand" + slot = "hand", }, { -- leaf star itemid = 25735, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dream blossom staff @@ -5306,15 +5306,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- dream blossom staff itemid = 25700, type = "deequip", slot = "hand", - level = 80 + level = 80, }, { -- wooden spellbook @@ -5326,149 +5326,149 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- wooden spellbook itemid = 25699, type = "deequip", slot = "shield", - level = 80 + level = 80, }, { -- butterfly ring itemid = 25698, type = "equip", slot = "ring", - level = 50 + level = 50, }, { -- butterfly ring itemid = 25698, type = "deequip", slot = "ring", - level = 50 + level = 50, }, { -- glowing rubbish amulet itemid = 25297, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- glowing rubbish amulet itemid = 25297, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- rubbish amulet itemid = 25296, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- rubbish amulet itemid = 25296, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- porcelain mask itemid = 25088, type = "equip", - slot = "head" + slot = "head", }, { -- porcelain mask itemid = 25088, type = "deequip", - slot = "head" + slot = "head", }, { -- filthy bunnyslippers itemid = 24409, type = "equip", - slot = "feet" + slot = "feet", }, { -- filthy bunnyslippers itemid = 24409, type = "deequip", - slot = "feet" + slot = "feet", }, { -- rusty winged helmet itemid = 24405, type = "equip", - slot = "head" + slot = "head", }, { -- rusty winged helmet itemid = 24405, type = "deequip", - slot = "head" + slot = "head", }, { -- tatty Dragon scale legs itemid = 24404, type = "equip", - slot = "legs" + slot = "legs", }, { -- tatty Dragon scale legs itemid = 24404, type = "deequip", - slot = "legs" + slot = "legs", }, { -- chocolatey dragon scale legs itemid = 24402, type = "equip", - slot = "legs" + slot = "legs", }, { -- chocolatey dragon scale legs itemid = 24402, type = "deequip", - slot = "legs" + slot = "legs", }, { -- Ferumbras' Candy Hat itemid = 24397, type = "equip", - slot = "head" + slot = "head", }, { -- Ferumbras' Candy Hat itemid = 24397, type = "deequip", - slot = "head" + slot = "head", }, { -- birthday backpack itemid = 24395, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- birthday backpack itemid = 24395, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- pillow backpack itemid = 24393, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- pillow backpack itemid = 24393, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- collar of red plasma @@ -5478,15 +5478,15 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- collar of red plasma itemid = 23544, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- collar of green plasma @@ -5498,15 +5498,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- collar of green plasma itemid = 23543, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- collar of blue plasma @@ -5516,15 +5516,15 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- collar of blue plasma itemid = 23542, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- ring of red plasma @@ -5534,15 +5534,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ring of red plasma itemid = 23534, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- ring of red plasma @@ -5552,15 +5552,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ring of red plasma itemid = 23533, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- ring of green plasma @@ -5572,15 +5572,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- ring of green plasma itemid = 23532, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- ring of green plasma @@ -5592,15 +5592,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- ring of green plasma itemid = 23531, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- ring of blue plasma @@ -5610,15 +5610,15 @@ local items = { level = 100, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ring of blue plasma itemid = 23530, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- ring of blue plasma @@ -5628,15 +5628,15 @@ local items = { level = 100, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ring of blue plasma itemid = 23529, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- collar of red plasma @@ -5646,15 +5646,15 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- collar of red plasma itemid = 23528, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- collar of green plasma @@ -5666,15 +5666,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- collar of green plasma itemid = 23527, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- collar of blue plasma @@ -5684,55 +5684,55 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- collar of blue plasma itemid = 23526, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- energetic backpack itemid = 23525, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- energetic backpack itemid = 23525, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- void boots itemid = 23477, type = "equip", slot = "feet", - level = 150 + level = 150, }, { -- void boots itemid = 23477, type = "deequip", slot = "feet", - level = 150 + level = 150, }, { -- void boots itemid = 23476, type = "equip", slot = "feet", - level = 150 + level = 150, }, { -- void boots itemid = 23476, type = "deequip", slot = "feet", - level = 150 + level = 150, }, { -- tiara of power @@ -5744,15 +5744,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- tiara of power itemid = 23475, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- tiara of power @@ -5764,15 +5764,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- tiara of power itemid = 23474, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- rod of carving @@ -5782,15 +5782,15 @@ local items = { level = 100, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- rod of carving itemid = 23339, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- wand of carving @@ -5800,111 +5800,111 @@ local items = { level = 100, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of carving itemid = 23335, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- crossbow of carving itemid = 23331, type = "equip", - slot = "hand" + slot = "hand", }, { -- crossbow of carving itemid = 23331, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bow of carving itemid = 23327, type = "equip", - slot = "hand" + slot = "hand", }, { -- bow of carving itemid = 23327, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hammer of carving itemid = 23323, type = "equip", - slot = "hand" + slot = "hand", }, { -- hammer of carving itemid = 23323, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mace of carving itemid = 23319, type = "equip", - slot = "hand" + slot = "hand", }, { -- mace of carving itemid = 23319, type = "deequip", - slot = "hand" + slot = "hand", }, { -- chopper of carving itemid = 23315, type = "equip", - slot = "hand" + slot = "hand", }, { -- chopper of carving itemid = 23315, type = "deequip", - slot = "hand" + slot = "hand", }, { -- axe of carving itemid = 23311, type = "equip", - slot = "hand" + slot = "hand", }, { -- axe of carving itemid = 23311, type = "deequip", - slot = "hand" + slot = "hand", }, { -- slayer of carving itemid = 23307, type = "equip", - slot = "hand" + slot = "hand", }, { -- slayer of carving itemid = 23307, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blade of carving itemid = 23303, type = "equip", - slot = "hand" + slot = "hand", }, { -- blade of carving itemid = 23303, type = "deequip", - slot = "hand" + slot = "hand", }, { -- rod of remedy @@ -5914,15 +5914,15 @@ local items = { level = 100, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- rod of remedy itemid = 23299, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- wand of remedy @@ -5932,99 +5932,99 @@ local items = { level = 100, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of remedy itemid = 23295, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- crossbow of remedy itemid = 23291, type = "equip", - slot = "hand" + slot = "hand", }, { -- crossbow of remedy itemid = 23291, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bow of remedy itemid = 23287, type = "equip", - slot = "hand" + slot = "hand", }, { -- bow of remedy itemid = 23287, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mace of remedy itemid = 23279, type = "equip", - slot = "hand" + slot = "hand", }, { -- mace of remedy itemid = 23279, type = "deequip", - slot = "hand" + slot = "hand", }, { -- chopper of remedy itemid = 23275, type = "equip", - slot = "hand" + slot = "hand", }, { -- chopper of remedy itemid = 23275, type = "deequip", - slot = "hand" + slot = "hand", }, { -- axe of remedy itemid = 23271, type = "equip", - slot = "hand" + slot = "hand", }, { -- axe of remedy itemid = 23271, type = "deequip", - slot = "hand" + slot = "hand", }, { -- slayer of remedy itemid = 23267, type = "equip", - slot = "hand" + slot = "hand", }, { -- slayer of remedy itemid = 23267, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blade of remedy itemid = 23263, type = "equip", - slot = "hand" + slot = "hand", }, { -- blade of remedy itemid = 23263, type = "deequip", - slot = "hand" + slot = "hand", }, { -- rod of mayhem @@ -6034,15 +6034,15 @@ local items = { level = 100, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- rod of mayhem itemid = 23232, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- wand of mayhem @@ -6052,215 +6052,215 @@ local items = { level = 100, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of mayhem itemid = 23231, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- crossbow of mayhem itemid = 23230, type = "equip", - slot = "hand" + slot = "hand", }, { -- crossbow of mayhem itemid = 23230, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bow of mayhem itemid = 23229, type = "equip", - slot = "hand" + slot = "hand", }, { -- bow of mayhem itemid = 23229, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hammer of mayhem itemid = 23228, type = "equip", - slot = "hand" + slot = "hand", }, { -- hammer of mayhem itemid = 23228, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mace of mayhem itemid = 23227, type = "equip", - slot = "hand" + slot = "hand", }, { -- mace of mayhem itemid = 23227, type = "deequip", - slot = "hand" + slot = "hand", }, { -- chopper of mayhem itemid = 23226, type = "equip", - slot = "hand" + slot = "hand", }, { -- chopper of mayhem itemid = 23226, type = "deequip", - slot = "hand" + slot = "hand", }, { -- axe of mayhem itemid = 23225, type = "equip", - slot = "hand" + slot = "hand", }, { -- axe of mayhem itemid = 23225, type = "deequip", - slot = "hand" + slot = "hand", }, { -- slayer of mayhem itemid = 23224, type = "equip", - slot = "hand" + slot = "hand", }, { -- slayer of mayhem itemid = 23224, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blade of mayhem itemid = 23223, type = "equip", - slot = "hand" + slot = "hand", }, { -- blade of mayhem itemid = 23223, type = "deequip", - slot = "hand" + slot = "hand", }, { -- shield of destiny itemid = 22890, type = "equip", - slot = "shield" + slot = "shield", }, { -- shield of destiny itemid = 22890, type = "deequip", - slot = "shield" + slot = "shield", }, { -- shield of destiny itemid = 22889, type = "equip", - slot = "shield" + slot = "shield", }, { -- shield of destiny itemid = 22889, type = "deequip", - slot = "shield" + slot = "shield", }, { -- rift crossbow itemid = 22867, type = "equip", - slot = "hand" + slot = "hand", }, { -- rift crossbow itemid = 22867, type = "deequip", - slot = "hand" + slot = "hand", }, { -- rift bow itemid = 22866, type = "equip", - slot = "hand" + slot = "hand", }, { -- rift bow itemid = 22866, type = "deequip", - slot = "hand" + slot = "hand", }, { -- boots of homecoming itemid = 22774, type = "equip", slot = "feet", - level = 100 + level = 100, }, { -- boots of homecoming itemid = 22774, type = "deequip", slot = "feet", - level = 100 + level = 100, }, { -- boots of homecoming itemid = 22773, type = "equip", slot = "feet", - level = 100 + level = 100, }, { -- boots of homecoming itemid = 22773, type = "deequip", slot = "feet", - level = 100 + level = 100, }, { -- ferumbras' amulet itemid = 22768, type = "equip", slot = "necklace", - level = 100 + level = 100, }, { -- ferumbras' amulet itemid = 22768, type = "deequip", slot = "necklace", - level = 100 + level = 100, }, { -- ferumbras' amulet itemid = 22767, type = "equip", slot = "necklace", - level = 100 + level = 100, }, { -- ferumbras' amulet itemid = 22767, type = "deequip", slot = "necklace", - level = 100 + level = 100, }, { -- ferumbras' staff (enchanted) @@ -6270,15 +6270,15 @@ local items = { level = 100, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- ferumbras' staff (enchanted) itemid = 22766, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- ferumbras' staff (failed) @@ -6288,103 +6288,103 @@ local items = { level = 65, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- ferumbras' staff (failed) itemid = 22765, type = "deequip", slot = "hand", - level = 65 + level = 65, }, { -- Ferumbras' staff itemid = 22764, type = "equip", - slot = "hand" + slot = "hand", }, { -- Ferumbras' staff itemid = 22764, type = "deequip", - slot = "hand" + slot = "hand", }, { -- maimer itemid = 22762, type = "equip", - slot = "hand" + slot = "hand", }, { -- maimer itemid = 22762, type = "deequip", - slot = "hand" + slot = "hand", }, { -- Impaler of the igniter itemid = 22760, type = "equip", - slot = "hand" + slot = "hand", }, { -- Impaler of the igniter itemid = 22760, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plague bite itemid = 22759, type = "equip", - slot = "hand" + slot = "hand", }, { -- plague bite itemid = 22759, type = "deequip", - slot = "hand" + slot = "hand", }, { -- death gaze itemid = 22758, type = "equip", slot = "shield", - level = 200 + level = 200, }, { -- death gaze itemid = 22758, type = "deequip", slot = "shield", - level = 200 + level = 200, }, { -- shroud of despair itemid = 22757, type = "equip", slot = "head", - level = 150 + level = 150, }, { -- shroud of despair itemid = 22757, type = "deequip", slot = "head", - level = 150 + level = 150, }, { -- treader of torment itemid = 22756, type = "equip", - slot = "feet" + slot = "feet", }, { -- treader of torment itemid = 22756, type = "deequip", - slot = "feet" + slot = "feet", }, { -- book of lies @@ -6396,87 +6396,87 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- book of lies itemid = 22755, type = "deequip", slot = "shield", - level = 150 + level = 150, }, { -- visage of the end days itemid = 22754, type = "equip", - slot = "head" + slot = "head", }, { -- visage of the end days itemid = 22754, type = "deequip", - slot = "head" + slot = "head", }, { -- ancient amulet itemid = 22746, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- ancient amulet itemid = 22746, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- rift lance itemid = 22727, type = "equip", - slot = "hand" + slot = "hand", }, { -- rift lance itemid = 22727, type = "deequip", - slot = "hand" + slot = "hand", }, { -- rift shield itemid = 22726, type = "equip", - slot = "shield" + slot = "shield", }, { -- rift shield itemid = 22726, type = "deequip", - slot = "shield" + slot = "shield", }, { -- rattling gourd itemid = 22651, type = "equip", - slot = "shield" + slot = "shield", }, { -- rattling gourd itemid = 22651, type = "deequip", - slot = "shield" + slot = "shield", }, { -- gourd itemid = 22650, type = "equip", - slot = "shield" + slot = "shield", }, { -- gourd itemid = 22650, type = "deequip", - slot = "shield" + slot = "shield", }, { -- frostmind raiment @@ -6488,15 +6488,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- frostmind raiment itemid = 22537, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- thundermind raiment @@ -6508,15 +6508,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- thundermind raiment itemid = 22536, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- earthmind raiment @@ -6528,15 +6528,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- earthmind raiment itemid = 22535, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- firemind raiment @@ -6548,15 +6548,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- firemind raiment itemid = 22534, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- frostsoul tabard @@ -6566,15 +6566,15 @@ local items = { level = 200, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- frostsoul tabard itemid = 22533, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- thundersoul tabard @@ -6584,15 +6584,15 @@ local items = { level = 200, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- thundersoul tabard itemid = 22532, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- earthsoul tabard @@ -6602,15 +6602,15 @@ local items = { level = 200, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- earthsoul tabard itemid = 22531, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- firesoul tabard @@ -6620,15 +6620,15 @@ local items = { level = 200, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- firesoul tabard itemid = 22530, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- frostheart platemail @@ -6638,15 +6638,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- frostheart platemail itemid = 22529, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- frostheart hauberk @@ -6656,15 +6656,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- frostheart hauberk itemid = 22528, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- frostheart cuirass @@ -6674,15 +6674,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- frostheart cuirass itemid = 22527, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- thunderheart platemail @@ -6692,15 +6692,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- thunderheart platemail itemid = 22526, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- thunderheart hauberk @@ -6710,15 +6710,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- thunderheart hauberk itemid = 22525, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- thunderheart cuirass @@ -6728,15 +6728,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- thunderheart cuirass itemid = 22524, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- earthheart platemail @@ -6746,15 +6746,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earthheart platemail itemid = 22523, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- earthheart hauberk @@ -6764,15 +6764,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earthheart hauberk itemid = 22522, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- earthheart cuirass @@ -6782,15 +6782,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earthheart cuirass itemid = 22521, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- fireheart platemail @@ -6800,15 +6800,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fireheart platemail itemid = 22520, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- fireheart hauberk @@ -6818,15 +6818,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fireheart hauberk itemid = 22519, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- fireheart cuirass @@ -6836,53 +6836,53 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fireheart cuirass itemid = 22518, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- onyx pendant itemid = 22195, type = "equip", slot = "necklace", - level = 60 + level = 60, }, { -- onyx pendant itemid = 22195, type = "deequip", slot = "necklace", - level = 60 + level = 60, }, { -- shamanic mask itemid = 22192, type = "equip", - slot = "head" + slot = "head", }, { -- shamanic mask itemid = 22192, type = "deequip", - slot = "head" + slot = "head", }, { -- painted gourd rattle itemid = 22190, type = "equip", - slot = "shield" + slot = "shield", }, { -- painted gourd rattle itemid = 22190, type = "deequip", - slot = "shield" + slot = "shield", }, { -- ogre sceptra @@ -6892,87 +6892,87 @@ local items = { level = 37, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- ogre sceptra itemid = 22183, type = "deequip", slot = "hand", - level = 37 + level = 37, }, { -- ogre choppa itemid = 22172, type = "equip", - slot = "hand" + slot = "hand", }, { -- ogre choppa itemid = 22172, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ogre klubba itemid = 22171, type = "equip", - slot = "hand" + slot = "hand", }, { -- ogre klubba itemid = 22171, type = "deequip", - slot = "hand" + slot = "hand", }, { -- house silversun's signet ring itemid = 22170, type = "equip", - slot = "ring" + slot = "ring", }, { -- house silversun's signet ring itemid = 22170, type = "deequip", - slot = "ring" + slot = "ring", }, { -- dark wizard's crown itemid = 22154, type = "equip", - slot = "head" + slot = "head", }, { -- dark wizard's crown itemid = 22154, type = "deequip", - slot = "head" + slot = "head", }, { -- dark wizard's crown itemid = 22153, type = "equip", - slot = "head" + slot = "head", }, { -- dark wizard's crown itemid = 22153, type = "deequip", - slot = "head" + slot = "head", }, { -- enchanted werewolf amulet itemid = 22134, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- enchanted werewolf amulet itemid = 22134, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- enchanted werewolf helmet @@ -6982,15 +6982,15 @@ local items = { level = 100, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- enchanted werewolf helmet itemid = 22130, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- enchanted werewolf helmet @@ -7000,15 +7000,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- enchanted werewolf helmet itemid = 22129, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- enchanted werewolf helmet @@ -7018,15 +7018,15 @@ local items = { level = 100, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- enchanted werewolf helmet itemid = 22128, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- enchanted werewolf helmet @@ -7036,93 +7036,93 @@ local items = { level = 100, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- enchanted werewolf helmet itemid = 22127, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- wereboar loincloth itemid = 22087, type = "equip", - slot = "legs" + slot = "legs", }, { -- wereboar loincloth itemid = 22087, type = "deequip", - slot = "legs" + slot = "legs", }, { -- badger boots itemid = 22086, type = "equip", slot = "feet", - level = 60 + level = 60, }, { -- badger boots itemid = 22086, type = "deequip", slot = "feet", - level = 60 + level = 60, }, { -- fur armor itemid = 22085, type = "equip", slot = "armor", - level = 50 + level = 50, }, { -- fur armor itemid = 22085, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- wolf backpack itemid = 22084, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- wolf backpack itemid = 22084, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- werewolf helmet itemid = 22062, type = "equip", slot = "head", - level = 100 + level = 100, }, { -- werewolf helmet itemid = 22062, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- werewolf amulet itemid = 22060, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- werewolf amulet itemid = 22060, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- oriental shoes @@ -7134,113 +7134,113 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- oriental shoes itemid = 21981, type = "deequip", slot = "feet", - level = 80 + level = 80, }, { -- sweetheart ring itemid = 21955, type = "equip", - slot = "ring" + slot = "ring", }, { -- sweetheart ring itemid = 21955, type = "deequip", - slot = "ring" + slot = "ring", }, { -- crest of the deep seas itemid = 21892, type = "equip", slot = "head", - level = 80 + level = 80, }, { -- crest of the deep seas itemid = 21892, type = "deequip", slot = "head", - level = 80 + level = 80, }, { -- brandon's wedding ring itemid = 21745, type = "equip", - slot = "ring" + slot = "ring", }, { -- brandon's wedding ring itemid = 21745, type = "deequip", - slot = "ring" + slot = "ring", }, { -- simple arrow itemid = 21470, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- simple arrow itemid = 21470, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- war backpack itemid = 21445, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- war backpack itemid = 21445, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- the Lion's Heart itemid = 21439, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- the Lion's Heart itemid = 21439, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- shopping bag itemid = 21411, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- shopping bag itemid = 21411, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- broken wooden shield itemid = 21401, type = "equip", - slot = "shield" + slot = "shield", }, { -- broken wooden shield itemid = 21401, type = "deequip", - slot = "shield" + slot = "shield", }, { -- spellbook of the novice @@ -7251,14 +7251,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of the novice itemid = 21400, type = "deequip", - slot = "shield" + slot = "shield", }, { -- the chiller @@ -7268,15 +7268,15 @@ local items = { level = 1, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- the chiller itemid = 21350, type = "deequip", slot = "hand", - level = 1 + level = 1, }, { -- the scorcher @@ -7286,51 +7286,51 @@ local items = { level = 1, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- the scorcher itemid = 21348, type = "deequip", slot = "hand", - level = 1 + level = 1, }, { -- glooth backpack itemid = 21295, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- glooth backpack itemid = 21295, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- feedbag itemid = 21292, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- feedbag itemid = 21292, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- one hit wonder itemid = 21219, type = "equip", - slot = "hand" + slot = "hand", }, { -- one hit wonder itemid = 21219, type = "deequip", - slot = "hand" + slot = "hand", }, { -- glooth amulet @@ -7342,149 +7342,149 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glooth amulet itemid = 21183, type = "deequip", slot = "necklace", - level = 75 + level = 75, }, { -- glooth axe itemid = 21180, type = "equip", - slot = "hand" + slot = "hand", }, { -- glooth axe itemid = 21180, type = "deequip", - slot = "hand" + slot = "hand", }, { -- glooth blade itemid = 21179, type = "equip", - slot = "hand" + slot = "hand", }, { -- glooth blade itemid = 21179, type = "deequip", - slot = "hand" + slot = "hand", }, { -- glooth club itemid = 21178, type = "equip", - slot = "hand" + slot = "hand", }, { -- glooth club itemid = 21178, type = "deequip", - slot = "hand" + slot = "hand", }, { -- cowtana itemid = 21177, type = "equip", - slot = "hand" + slot = "hand", }, { -- cowtana itemid = 21177, type = "deequip", - slot = "hand" + slot = "hand", }, { -- execowtioner axe itemid = 21176, type = "equip", - slot = "hand" + slot = "hand", }, { -- execowtioner axe itemid = 21176, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mino shield itemid = 21175, type = "equip", - slot = "shield" + slot = "shield", }, { -- mino shield itemid = 21175, type = "deequip", - slot = "shield" + slot = "shield", }, { -- mino lance itemid = 21174, type = "equip", - slot = "hand" + slot = "hand", }, { -- mino lance itemid = 21174, type = "deequip", - slot = "hand" + slot = "hand", }, { -- moohtant cudgel itemid = 21173, type = "equip", - slot = "hand" + slot = "hand", }, { -- moohtant cudgel itemid = 21173, type = "deequip", - slot = "hand" + slot = "hand", }, { -- glooth whip itemid = 21172, type = "equip", - slot = "hand" + slot = "hand", }, { -- glooth whip itemid = 21172, type = "deequip", - slot = "hand" + slot = "hand", }, { -- metal bat itemid = 21171, type = "equip", - slot = "hand" + slot = "hand", }, { -- metal bat itemid = 21171, type = "deequip", - slot = "hand" + slot = "hand", }, { -- gearwheel chain itemid = 21170, type = "equip", slot = "necklace", - level = 75 + level = 75, }, { -- gearwheel chain itemid = 21170, type = "deequip", slot = "necklace", - level = 75 + level = 75, }, { -- metal spats @@ -7496,41 +7496,41 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- metal spats itemid = 21169, type = "deequip", slot = "feet", - level = 50 + level = 50, }, { -- alloy legs itemid = 21168, type = "equip", slot = "legs", - level = 60 + level = 60, }, { -- alloy legs itemid = 21168, type = "deequip", slot = "legs", - level = 60 + level = 60, }, { -- heat core itemid = 21167, type = "equip", - slot = "armor" + slot = "armor", }, { -- heat core itemid = 21167, type = "deequip", - slot = "armor" + slot = "armor", }, { -- mooh'tah plate @@ -7541,14 +7541,14 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- mooh'tah plate itemid = 21166, type = "deequip", - slot = "armor" + slot = "armor", }, { -- rubber cap @@ -7560,15 +7560,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- rubber cap itemid = 21165, type = "deequip", slot = "head", - level = 70 + level = 70, }, { -- glooth cape @@ -7580,89 +7580,89 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glooth cape itemid = 21164, type = "deequip", slot = "armor", - level = 40 + level = 40, }, { -- glooth spear itemid = 21158, type = "equip", - slot = "hand" + slot = "hand", }, { -- glooth spear itemid = 21158, type = "deequip", - slot = "hand" + slot = "hand", }, { -- cake backpack itemid = 20347, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- cake backpack itemid = 20347, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- unstable ring of ending itemid = 20209, type = "equip", - slot = "ring" + slot = "ring", }, { -- unstable ring of ending itemid = 20209, type = "deequip", - slot = "ring" + slot = "ring", }, { -- broken visor itemid = 20184, type = "equip", - slot = "head" + slot = "head", }, { -- broken visor itemid = 20184, type = "deequip", - slot = "head" + slot = "head", }, { -- ring of ending itemid = 20182, type = "equip", slot = "ring", - level = 200 + level = 200, }, { -- ring of ending itemid = 20182, type = "deequip", slot = "ring", - level = 200 + level = 200, }, { -- eerie song book itemid = 20140, type = "equip", - slot = "shield" + slot = "shield", }, { -- eerie song book itemid = 20140, type = "deequip", - slot = "shield" + slot = "shield", }, { -- umbral master spellbook @@ -7674,15 +7674,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- umbral master spellbook itemid = 20090, type = "deequip", slot = "shield", - level = 250 + level = 250, }, { -- umbral spellbook @@ -7694,15 +7694,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- umbral spellbook itemid = 20089, type = "deequip", slot = "shield", - level = 150 + level = 150, }, { -- crude umbral spellbook @@ -7714,315 +7714,315 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- crude umbral spellbook itemid = 20088, type = "deequip", slot = "shield", - level = 75 + level = 75, }, { -- umbral master crossbow itemid = 20087, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral master crossbow itemid = 20087, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral crossbow itemid = 20086, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral crossbow itemid = 20086, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral crossbow itemid = 20085, type = "equip", - slot = "hand" + slot = "hand", }, { -- crude umbral crossbow itemid = 20085, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master bow itemid = 20084, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral master bow itemid = 20084, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral bow itemid = 20083, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral bow itemid = 20083, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral bow itemid = 20082, type = "equip", - slot = "hand" + slot = "hand", }, { -- crude umbral bow itemid = 20082, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master hammer itemid = 20081, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral master hammer itemid = 20081, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral hammer itemid = 20080, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral hammer itemid = 20080, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral hammer itemid = 20079, type = "equip", - slot = "hand" + slot = "hand", }, { -- crude umbral hammer itemid = 20079, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master mace itemid = 20078, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral master mace itemid = 20078, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral mace itemid = 20077, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral mace itemid = 20077, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral mace itemid = 20076, type = "equip", - slot = "hand" + slot = "hand", }, { -- crude umbral mace itemid = 20076, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master chopper itemid = 20075, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral master chopper itemid = 20075, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral chopper itemid = 20074, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral chopper itemid = 20074, type = "deequip", - slot = "hand" + slot = "hand", }, { -- guardian halberd itemid = 20073, type = "equip", - slot = "hand" + slot = "hand", }, { -- guardian halberd itemid = 20073, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master axe itemid = 20072, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral master axe itemid = 20072, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral axe itemid = 20071, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral axe itemid = 20071, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral axe itemid = 20070, type = "equip", - slot = "hand" + slot = "hand", }, { -- crude umbral axe itemid = 20070, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master slayer itemid = 20069, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral master slayer itemid = 20069, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral slayer itemid = 20068, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral slayer itemid = 20068, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral slayer itemid = 20067, type = "equip", - slot = "hand" + slot = "hand", }, { -- crude umbral slayer itemid = 20067, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral masterblade itemid = 20066, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral masterblade itemid = 20066, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral blade itemid = 20065, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral blade itemid = 20065, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral blade itemid = 20064, type = "equip", - slot = "hand" + slot = "hand", }, { -- crude umbral blade itemid = 20064, type = "deequip", - slot = "hand" + slot = "hand", }, { -- strange good night songs itemid = 20050, type = "equip", - slot = "shield" + slot = "shield", }, { -- strange good night songs itemid = 20050, type = "deequip", - slot = "shield" + slot = "shield", }, { -- furious frock @@ -8034,51 +8034,51 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- furious frock itemid = 19391, type = "deequip", slot = "armor", - level = 130 + level = 130, }, { -- vampire silk slippers itemid = 19374, type = "equip", - slot = "feet" + slot = "feet", }, { -- vampire silk slippers itemid = 19374, type = "deequip", - slot = "feet" + slot = "feet", }, { -- haunted mirror piece itemid = 19373, type = "equip", - slot = "shield" + slot = "shield", }, { -- haunted mirror piece itemid = 19373, type = "deequip", - slot = "shield" + slot = "shield", }, { -- goo shell itemid = 19372, type = "equip", - slot = "armor" + slot = "armor", }, { -- goo shell itemid = 19372, type = "deequip", - slot = "armor" + slot = "armor", }, { -- icy culottes @@ -8089,232 +8089,232 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- icy culottes itemid = 19366, type = "deequip", - slot = "legs" + slot = "legs", }, { -- runic ice shield itemid = 19363, type = "equip", - slot = "shield" + slot = "shield", }, { -- runic ice shield itemid = 19363, type = "deequip", - slot = "shield" + slot = "shield", }, { -- icicle bow itemid = 19362, type = "equip", - slot = "hand" + slot = "hand", }, { -- icicle bow itemid = 19362, type = "deequip", - slot = "hand" + slot = "hand", }, { -- horn itemid = 19359, type = "equip", - slot = "ring" + slot = "ring", }, { -- horn itemid = 19359, type = "deequip", - slot = "ring" + slot = "ring", }, { -- albino plate itemid = 19358, type = "equip", - slot = "armor" + slot = "armor", }, { -- albino plate itemid = 19358, type = "deequip", - slot = "armor" + slot = "armor", }, { -- shrunken head necklace itemid = 19357, type = "equip", slot = "necklace", - level = 150 + level = 150, }, { -- shrunken head necklace itemid = 19357, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- triple bolt crossbow itemid = 19356, type = "equip", - slot = "hand" + slot = "hand", }, { -- triple bolt crossbow itemid = 19356, type = "deequip", - slot = "hand" + slot = "hand", }, { -- pannier backpack itemid = 19159, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- pannier backpack itemid = 19159, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- friendship amulet itemid = 19153, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- friendship amulet itemid = 19153, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- vampire's signet ring itemid = 18935, type = "equip", - slot = "ring" + slot = "ring", }, { -- vampire's signet ring itemid = 18935, type = "deequip", - slot = "ring" + slot = "ring", }, { -- spiky club itemid = 17859, type = "equip", - slot = "hand" + slot = "hand", }, { -- spiky club itemid = 17859, type = "deequip", - slot = "hand" + slot = "hand", }, { -- helmet of the lost itemid = 17852, type = "equip", - slot = "head" + slot = "head", }, { -- helmet of the lost itemid = 17852, type = "deequip", - slot = "head" + slot = "head", }, { -- leather harness itemid = 17846, type = "equip", - slot = "armor" + slot = "armor", }, { -- leather harness itemid = 17846, type = "deequip", - slot = "armor" + slot = "armor", }, { -- buckle itemid = 17829, type = "equip", - slot = "armor" + slot = "armor", }, { -- buckle itemid = 17829, type = "deequip", - slot = "armor" + slot = "armor", }, { -- pair of iron fists itemid = 17828, type = "equip", - slot = "hand" + slot = "hand", }, { -- pair of iron fists itemid = 17828, type = "deequip", - slot = "hand" + slot = "hand", }, { -- swampling club itemid = 17824, type = "equip", - slot = "hand" + slot = "hand", }, { -- swampling club itemid = 17824, type = "deequip", - slot = "hand" + slot = "hand", }, { -- life preserver itemid = 17813, type = "equip", - slot = "hand" + slot = "hand", }, { -- life preserver itemid = 17813, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ratana itemid = 17812, type = "equip", - slot = "hand" + slot = "hand", }, { -- ratana itemid = 17812, type = "deequip", - slot = "hand" + slot = "hand", }, { -- spike shield itemid = 17810, type = "equip", - slot = "shield" + slot = "shield", }, { -- spike shield itemid = 17810, type = "deequip", - slot = "shield" + slot = "shield", }, { -- sorc and druid staff @@ -8323,161 +8323,161 @@ local items = { slot = "hand", level = 1, vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- sorc and druid staff itemid = 17111, type = "deequip", slot = "hand", - level = 1 + level = 1, }, { -- mean paladin spear itemid = 17110, type = "equip", - slot = "hand" + slot = "hand", }, { -- mean paladin spear itemid = 17110, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mean knight sword itemid = 17109, type = "equip", - slot = "hand" + slot = "hand", }, { -- mean knight sword itemid = 17109, type = "deequip", - slot = "hand" + slot = "hand", }, { -- prismatic ring itemid = 16264, type = "equip", slot = "ring", - level = 120 + level = 120, }, { -- prismatic ring itemid = 16264, type = "deequip", slot = "ring", - level = 120 + level = 120, }, { -- shiny blade itemid = 16175, type = "equip", - slot = "hand" + slot = "hand", }, { -- shiny blade itemid = 16175, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mycological bow itemid = 16164, type = "equip", - slot = "hand" + slot = "hand", }, { -- mycological bow itemid = 16164, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crystal crossbow itemid = 16163, type = "equip", - slot = "hand" + slot = "hand", }, { -- crystal crossbow itemid = 16163, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mycological mace itemid = 16162, type = "equip", - slot = "hand" + slot = "hand", }, { -- mycological mace itemid = 16162, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crystalline axe itemid = 16161, type = "equip", - slot = "hand" + slot = "hand", }, { -- crystalline axe itemid = 16161, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crystalline sword itemid = 16160, type = "equip", - slot = "hand" + slot = "hand", }, { -- crystalline sword itemid = 16160, type = "deequip", - slot = "hand" + slot = "hand", }, { -- envenomed arrow itemid = 16143, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- envenomed arrow itemid = 16143, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- drill bolt itemid = 16142, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- drill bolt itemid = 16142, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- prismatic bolt itemid = 16141, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- prismatic bolt itemid = 16141, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- glacial rod @@ -8487,15 +8487,15 @@ local items = { level = 65, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glacial rod itemid = 16118, type = "deequip", slot = "hand", - level = 65 + level = 65, }, { -- muck rod @@ -8505,15 +8505,15 @@ local items = { level = 65, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- muck rod itemid = 16117, type = "deequip", slot = "hand", - level = 65 + level = 65, }, { -- prismatic shield @@ -8523,15 +8523,15 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- prismatic shield itemid = 16116, type = "deequip", slot = "shield", - level = 150 + level = 150, }, { -- wand of everblazing @@ -8541,43 +8541,43 @@ local items = { level = 65, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of everblazing itemid = 16115, type = "deequip", slot = "hand", - level = 65 + level = 65, }, { -- prismatic ring itemid = 16114, type = "equip", slot = "ring", - level = 120 + level = 120, }, { -- prismatic ring itemid = 16114, type = "deequip", slot = "ring", - level = 120 + level = 120, }, { -- prismatic necklace itemid = 16113, type = "equip", slot = "necklace", - level = 150 + level = 150, }, { -- prismatic necklace itemid = 16113, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- prismatic boots @@ -8587,15 +8587,15 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- prismatic boots itemid = 16112, type = "deequip", slot = "feet", - level = 150 + level = 150, }, { -- prismatic legs @@ -8605,15 +8605,15 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- prismatic legs itemid = 16111, type = "deequip", slot = "legs", - level = 150 + level = 150, }, { -- prismatic armor @@ -8625,15 +8625,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- prismatic armor itemid = 16110, type = "deequip", slot = "armor", - level = 120 + level = 120, }, { -- prismatic helmet @@ -8643,29 +8643,29 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- prismatic helmet itemid = 16109, type = "deequip", slot = "head", - level = 150 + level = 150, }, { -- gill necklace itemid = 16108, type = "equip", slot = "necklace", - level = 150 + level = 150, }, { -- gill necklace itemid = 16108, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- spellbook of vigilance @@ -8677,15 +8677,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of vigilance itemid = 16107, type = "deequip", slot = "shield", - level = 130 + level = 130, }, { -- gill legs @@ -8697,15 +8697,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gill legs itemid = 16106, type = "deequip", slot = "legs", - level = 150 + level = 150, }, { -- gill coat @@ -8717,15 +8717,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gill coat itemid = 16105, type = "deequip", slot = "armor", - level = 150 + level = 150, }, { -- gill gugel @@ -8737,39 +8737,39 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gill gugel itemid = 16104, type = "deequip", slot = "head", - level = 150 + level = 150, }, { -- crystal backpack itemid = 16100, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- crystal backpack itemid = 16100, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- mushroom backpack itemid = 16099, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- mushroom backpack itemid = 16099, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- wand of defiance @@ -8779,39 +8779,39 @@ local items = { level = 65, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of defiance itemid = 16096, type = "deequip", slot = "hand", - level = 65 + level = 65, }, { -- crystalline arrow itemid = 15793, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- crystalline arrow itemid = 15793, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- crystal bolt itemid = 15792, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- crystal bolt itemid = 15792, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- spellbook of ancient arcana @@ -8823,185 +8823,185 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of ancient arcana itemid = 14769, type = "deequip", slot = "shield", - level = 150 + level = 150, }, { -- thorn spitter itemid = 14768, type = "equip", - slot = "hand" + slot = "hand", }, { -- thorn spitter itemid = 14768, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mathmaster shield itemid = 14761, type = "equip", - slot = "shield" + slot = "shield", }, { -- mathmaster shield itemid = 14761, type = "deequip", - slot = "shield" + slot = "shield", }, { -- mathmaster shield itemid = 14760, type = "equip", - slot = "shield" + slot = "shield", }, { -- mathmaster shield itemid = 14760, type = "deequip", - slot = "shield" + slot = "shield", }, { -- anniversary backpack itemid = 14674, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- anniversary backpack itemid = 14674, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- vortex bolt itemid = 14252, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- vortex bolt itemid = 14252, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- tarsal arrow itemid = 14251, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- tarsal arrow itemid = 14251, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- deepling squelcher itemid = 14250, type = "equip", - slot = "hand" + slot = "hand", }, { -- deepling squelcher itemid = 14250, type = "deequip", - slot = "hand" + slot = "hand", }, { -- buggy backpack itemid = 14249, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- buggy backpack itemid = 14249, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- deepling backpack itemid = 14248, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- deepling backpack itemid = 14248, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- ornate crossbow itemid = 14247, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate crossbow itemid = 14247, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hive bow itemid = 14246, type = "equip", - slot = "hand" + slot = "hand", }, { -- hive bow itemid = 14246, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hive scythe itemid = 14089, type = "equip", - slot = "hand" + slot = "hand", }, { -- hive scythe itemid = 14089, type = "deequip", - slot = "hand" + slot = "hand", }, { -- carapace shield itemid = 14088, type = "equip", - slot = "shield" + slot = "shield", }, { -- carapace shield itemid = 14088, type = "deequip", - slot = "shield" + slot = "shield", }, { -- grasshopper legs itemid = 14087, type = "equip", slot = "legs", - level = 75 + level = 75, }, { -- grasshopper legs itemid = 14087, type = "deequip", slot = "legs", - level = 75 + level = 75, }, { -- calopteryx cape @@ -9013,63 +9013,63 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- calopteryx cape itemid = 14086, type = "deequip", slot = "armor", - level = 80 + level = 80, }, { -- guardian axe itemid = 14043, type = "equip", - slot = "hand" + slot = "hand", }, { -- guardian axe itemid = 14043, type = "deequip", - slot = "hand" + slot = "hand", }, { -- warrior's shield itemid = 14042, type = "equip", - slot = "shield" + slot = "shield", }, { -- warrior's shield itemid = 14042, type = "deequip", - slot = "shield" + slot = "shield", }, { -- warrior's axe itemid = 14040, type = "equip", - slot = "hand" + slot = "hand", }, { -- warrior's axe itemid = 14040, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mace itemid = 14001, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mace itemid = 14001, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate shield @@ -9079,15 +9079,15 @@ local items = { level = 130, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ornate shield itemid = 14000, type = "deequip", slot = "shield", - level = 130 + level = 130, }, { -- ornate legs @@ -9097,15 +9097,15 @@ local items = { level = 185, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ornate legs itemid = 13999, type = "deequip", slot = "legs", - level = 185 + level = 185, }, { -- depth scutum @@ -9117,15 +9117,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- depth scutum itemid = 13998, type = "deequip", slot = "shield", - level = 120 + level = 120, }, { -- depth calcei @@ -9135,15 +9135,15 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- depth calcei itemid = 13997, type = "deequip", slot = "feet", - level = 150 + level = 150, }, { -- depth ocrea @@ -9155,29 +9155,29 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- depth ocrea itemid = 13996, type = "deequip", slot = "legs", - level = 130 + level = 130, }, { -- depth galea itemid = 13995, type = "equip", slot = "head", - level = 150 + level = 150, }, { -- depth galea itemid = 13995, type = "deequip", slot = "head", - level = 150 + level = 150, }, { -- depth lorica @@ -9187,15 +9187,15 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- depth lorica itemid = 13994, type = "deequip", slot = "armor", - level = 150 + level = 150, }, { -- ornate chestplate @@ -9205,77 +9205,77 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ornate chestplate itemid = 13993, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- deepling axe itemid = 13991, type = "equip", - slot = "hand" + slot = "hand", }, { -- deepling axe itemid = 13991, type = "deequip", - slot = "hand" + slot = "hand", }, { -- necklace of the deep itemid = 13990, type = "equip", slot = "necklace", - level = 120 + level = 120, }, { -- necklace of the deep itemid = 13990, type = "deequip", slot = "necklace", - level = 120 + level = 120, }, { -- deepling staff itemid = 13987, type = "equip", - slot = "hand" + slot = "hand", }, { -- deepling staff itemid = 13987, type = "deequip", - slot = "hand" + slot = "hand", }, { -- the Epic Wisdom itemid = 12810, type = "equip", - slot = "head" + slot = "head", }, { -- the Epic Wisdom itemid = 12810, type = "deequip", - slot = "head" + slot = "head", }, { -- the Epic Wisdom itemid = 12809, type = "equip", - slot = "head" + slot = "head", }, { -- the Epic Wisdom itemid = 12809, type = "deequip", - slot = "head" + slot = "head", }, { -- shimmer wand @@ -9285,39 +9285,39 @@ local items = { level = 40, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- shimmer wand itemid = 12741, type = "deequip", slot = "hand", - level = 40 + level = 40, }, { -- broken ring of ending itemid = 12737, type = "equip", - slot = "ring" + slot = "ring", }, { -- broken ring of ending itemid = 12737, type = "deequip", - slot = "ring" + slot = "ring", }, { -- shimmer bow itemid = 12733, type = "equip", - slot = "hand" + slot = "hand", }, { -- shimmer bow itemid = 12733, type = "deequip", - slot = "hand" + slot = "hand", }, { -- shimmer rod @@ -9327,51 +9327,51 @@ local items = { level = 40, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- shimmer rod itemid = 12732, type = "deequip", slot = "hand", - level = 40 + level = 40, }, { -- shimmer sword itemid = 12731, type = "equip", - slot = "hand" + slot = "hand", }, { -- shimmer sword itemid = 12731, type = "deequip", - slot = "hand" + slot = "hand", }, { -- heavy trident itemid = 12683, type = "equip", - slot = "hand" + slot = "hand", }, { -- heavy trident itemid = 12683, type = "deequip", - slot = "hand" + slot = "hand", }, { -- wooden sword itemid = 12673, type = "equip", - slot = "hand" + slot = "hand", }, { -- wooden sword itemid = 12673, type = "deequip", - slot = "hand" + slot = "hand", }, { -- star ring @@ -9379,8 +9379,8 @@ local items = { type = "equip", slot = "ring", vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- star ring @@ -9388,8 +9388,8 @@ local items = { type = "deequip", slot = "ring", vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- star ring @@ -9397,8 +9397,8 @@ local items = { type = "equip", slot = "ring", vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- star ring @@ -9406,8 +9406,8 @@ local items = { type = "deequip", slot = "ring", vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- wand of dimensions @@ -9417,15 +9417,15 @@ local items = { level = 37, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of dimensions itemid = 12603, type = "deequip", slot = "hand", - level = 37 + level = 37, }, { -- mage's cap @@ -9436,110 +9436,110 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- mage's cap itemid = 12599, type = "deequip", - slot = "head" + slot = "head", }, { -- fish tail (equipped) itemid = 11543, type = "equip", - slot = "feet" + slot = "feet", }, { -- fish tail (equipped) itemid = 11543, type = "deequip", - slot = "feet" + slot = "feet", }, { -- golden hyena pendant itemid = 12543, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- golden hyena pendant itemid = 12543, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- golden scorpion pendant itemid = 12542, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- golden scorpion pendant itemid = 12542, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- old cape itemid = 11701, type = "equip", - slot = "armor" + slot = "armor", }, { -- old cape itemid = 11701, type = "deequip", - slot = "armor" + slot = "armor", }, { -- sedge hat itemid = 11700, type = "equip", - slot = "head" + slot = "head", }, { -- sedge hat itemid = 11700, type = "deequip", - slot = "head" + slot = "head", }, { -- loot bag itemid = 11698, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- loot bag itemid = 11698, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- blade of corruption itemid = 11693, type = "equip", - slot = "hand" + slot = "hand", }, { -- blade of corruption itemid = 11693, type = "deequip", - slot = "hand" + slot = "hand", }, { -- snake god's sceptre itemid = 11692, type = "equip", - slot = "hand" + slot = "hand", }, { -- snake god's sceptre itemid = 11692, type = "deequip", - slot = "hand" + slot = "hand", }, { -- snake god's wristguard @@ -9551,15 +9551,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- snake god's wristguard itemid = 11691, type = "deequip", slot = "shield", - level = 100 + level = 100, }, { -- draken boots @@ -9571,15 +9571,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- draken boots itemid = 4033, type = "deequip", slot = "feet", - level = 80 + level = 80, }, { -- elite draken helmet @@ -9589,15 +9589,15 @@ local items = { level = 100, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- elite draken helmet itemid = 11689, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- shield of corruption @@ -9607,15 +9607,15 @@ local items = { level = 80, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- shield of corruption itemid = 11688, type = "deequip", slot = "shield", - level = 80 + level = 80, }, { -- royal scale robe @@ -9627,15 +9627,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- royal scale robe itemid = 11687, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- royal draken mail @@ -9645,15 +9645,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- royal draken mail itemid = 11686, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- cobra crown @@ -9664,26 +9664,26 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- cobra crown itemid = 11674, type = "deequip", - slot = "head" + slot = "head", }, { -- twiceslicer itemid = 11657, type = "equip", - slot = "hand" + slot = "hand", }, { -- twiceslicer itemid = 11657, type = "deequip", - slot = "hand" + slot = "hand", }, { -- elite draken mail @@ -9695,63 +9695,63 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- elite draken mail itemid = 11651, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- fish tail (unequipped) itemid = 11542, type = "equip", - slot = "feet" + slot = "feet", }, { -- fish tail (unequipped) itemid = 11542, type = "deequip", - slot = "feet" + slot = "feet", }, { -- ornamented brooch itemid = 11468, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- ornamented brooch itemid = 11468, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- lucky clover amulet itemid = 10476, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- lucky clover amulet itemid = 10476, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- beetle necklace itemid = 10457, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- beetle necklace itemid = 10457, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- jade hat @@ -9763,15 +9763,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- jade hat itemid = 10451, type = "deequip", slot = "head", - level = 60 + level = 60, }, { -- Zaoan robe @@ -9783,15 +9783,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- Zaoan robe itemid = 10439, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- spellweaver's robe @@ -9803,123 +9803,123 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellweaver's robe itemid = 10438, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- wailing widow's necklace itemid = 10412, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- wailing widow's necklace itemid = 10412, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- Zaoan halberd itemid = 10406, type = "equip", - slot = "hand" + slot = "hand", }, { -- Zaoan halberd itemid = 10406, type = "deequip", - slot = "hand" + slot = "hand", }, { -- twin hooks itemid = 10392, type = "equip", - slot = "hand" + slot = "hand", }, { -- twin hooks itemid = 10392, type = "deequip", - slot = "hand" + slot = "hand", }, { -- drachaku itemid = 10391, type = "equip", - slot = "hand" + slot = "hand", }, { -- drachaku itemid = 10391, type = "deequip", - slot = "hand" + slot = "hand", }, { -- Zaoan sword itemid = 10390, type = "equip", - slot = "hand" + slot = "hand", }, { -- Zaoan sword itemid = 10390, type = "deequip", - slot = "hand" + slot = "hand", }, { -- sai itemid = 10389, type = "equip", - slot = "hand" + slot = "hand", }, { -- sai itemid = 10389, type = "deequip", - slot = "hand" + slot = "hand", }, { -- drakinata itemid = 10388, type = "equip", - slot = "hand" + slot = "hand", }, { -- drakinata itemid = 10388, type = "deequip", - slot = "hand" + slot = "hand", }, { -- Zaoan legs itemid = 10387, type = "equip", - slot = "legs" + slot = "legs", }, { -- Zaoan legs itemid = 10387, type = "deequip", - slot = "legs" + slot = "legs", }, { -- zaoan shoes itemid = 10386, type = "equip", - slot = "feet" + slot = "feet", }, { -- zaoan shoes itemid = 10386, type = "deequip", - slot = "feet" + slot = "feet", }, { -- Zaoan helmet @@ -9930,14 +9930,14 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- Zaoan helmet itemid = 10385, type = "deequip", - slot = "head" + slot = "head", }, { -- Zaoan armor @@ -9949,75 +9949,75 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- Zaoan armor itemid = 10384, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- santa backpack itemid = 10346, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- santa backpack itemid = 10346, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- minotaur backpack itemid = 10327, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- minotaur backpack itemid = 10327, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- dragon backpack itemid = 10326, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- dragon backpack itemid = 10326, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- expedition bag itemid = 10325, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- expedition bag itemid = 10325, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- expedition backpack itemid = 10324, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- expedition backpack itemid = 10324, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- guardian boots @@ -10029,27 +10029,27 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- guardian boots itemid = 10323, type = "deequip", slot = "feet", - level = 70 + level = 70, }, { -- heart backpack itemid = 10202, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- heart backpack itemid = 10202, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- dragon scale boots @@ -10061,15 +10061,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- dragon scale boots itemid = 10201, type = "deequip", slot = "feet", - level = 70 + level = 70, }, { -- crystal boots @@ -10081,15 +10081,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crystal boots itemid = 10200, type = "deequip", slot = "feet", - level = 70 + level = 70, }, { -- witch hat @@ -10100,506 +10100,506 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- witch hat itemid = 9653, type = "deequip", - slot = "head" + slot = "head", }, { -- crown backpack itemid = 9605, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- crown backpack itemid = 9605, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- moon backpack itemid = 9604, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- moon backpack itemid = 9604, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- orange bag itemid = 9603, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- orange bag itemid = 9603, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- orange backpack itemid = 9602, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- orange backpack itemid = 9602, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- demon backpack itemid = 9601, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- demon backpack itemid = 9601, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- broken wedding ring itemid = 9593, type = "equip", - slot = "ring" + slot = "ring", }, { -- broken wedding ring itemid = 9593, type = "deequip", - slot = "ring" + slot = "ring", }, { -- engraved wedding ring itemid = 9585, type = "equip", - slot = "ring" + slot = "ring", }, { -- engraved wedding ring itemid = 9585, type = "deequip", - slot = "ring" + slot = "ring", }, { -- the shield Nevermourn itemid = 9447, type = "equip", - slot = "shield" + slot = "shield", }, { -- the shield Nevermourn itemid = 9447, type = "deequip", - slot = "shield" + slot = "shield", }, { -- the rain coat itemid = 9446, type = "equip", - slot = "armor" + slot = "armor", }, { -- the rain coat itemid = 9446, type = "deequip", - slot = "armor" + slot = "armor", }, { -- the shield Nevermourn itemid = 9401, type = "equip", - slot = "shield" + slot = "shield", }, { -- the shield Nevermourn itemid = 9401, type = "deequip", - slot = "shield" + slot = "shield", }, { -- the rain coat itemid = 9400, type = "equip", - slot = "armor" + slot = "armor", }, { -- the rain coat itemid = 9400, type = "deequip", - slot = "armor" + slot = "armor", }, { -- mighty helm of green sparks itemid = 9399, type = "equip", - slot = "head" + slot = "head", }, { -- mighty helm of green sparks itemid = 9399, type = "deequip", - slot = "head" + slot = "head", }, { -- incredible mumpiz slayer itemid = 9396, type = "equip", - slot = "hand" + slot = "hand", }, { -- incredible mumpiz slayer itemid = 9396, type = "deequip", - slot = "hand" + slot = "hand", }, { -- claw of 'The Noxious Spawn' itemid = 9394, type = "equip", slot = "ring", - level = 100 + level = 100, }, { -- claw of 'The Noxious Spawn' itemid = 9394, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- claw of 'The Noxious Spawn' itemid = 9392, type = "equip", slot = "ring", - level = 100 + level = 100, }, { -- claw of 'The Noxious Spawn' itemid = 9392, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- poet's fencing quill itemid = 9387, type = "equip", - slot = "hand" + slot = "hand", }, { -- poet's fencing quill itemid = 9387, type = "deequip", - slot = "hand" + slot = "hand", }, { -- farmer's avenger itemid = 9386, type = "equip", - slot = "hand" + slot = "hand", }, { -- farmer's avenger itemid = 9386, type = "deequip", - slot = "hand" + slot = "hand", }, { -- club of the fury itemid = 9385, type = "equip", - slot = "hand" + slot = "hand", }, { -- club of the fury itemid = 9385, type = "deequip", - slot = "hand" + slot = "hand", }, { -- scythe of the reaper itemid = 9384, type = "equip", - slot = "hand" + slot = "hand", }, { -- scythe of the reaper itemid = 9384, type = "deequip", - slot = "hand" + slot = "hand", }, { -- trousers of the ancients itemid = 9383, type = "equip", - slot = "legs" + slot = "legs", }, { -- trousers of the ancients itemid = 9383, type = "deequip", - slot = "legs" + slot = "legs", }, { -- helmet of nature itemid = 9382, type = "equip", - slot = "head" + slot = "head", }, { -- helmet of nature itemid = 9382, type = "deequip", - slot = "head" + slot = "head", }, { -- helmet of ultimate terror itemid = 9381, type = "equip", - slot = "head" + slot = "head", }, { -- helmet of ultimate terror itemid = 9381, type = "deequip", - slot = "head" + slot = "head", }, { -- shield of care itemid = 9380, type = "equip", - slot = "shield" + slot = "shield", }, { -- shield of care itemid = 9380, type = "deequip", - slot = "shield" + slot = "shield", }, { -- heavy metal t-shirt itemid = 9379, type = "equip", - slot = "armor" + slot = "armor", }, { -- heavy metal t-shirt itemid = 9379, type = "deequip", - slot = "armor" + slot = "armor", }, { -- musician's bow itemid = 9378, type = "equip", - slot = "hand" + slot = "hand", }, { -- musician's bow itemid = 9378, type = "deequip", - slot = "hand" + slot = "hand", }, { -- shield of the white knight itemid = 3537, type = "equip", - slot = "shield" + slot = "shield", }, { -- shield of the white knight itemid = 3537, type = "deequip", - slot = "shield" + slot = "shield", }, { -- stale bread of ancientness itemid = 9376, type = "equip", - slot = "hand" + slot = "hand", }, { -- stale bread of ancientness itemid = 9376, type = "deequip", - slot = "hand" + slot = "hand", }, { -- pointed rabbitslayer itemid = 9375, type = "equip", - slot = "hand" + slot = "hand", }, { -- pointed rabbitslayer itemid = 9375, type = "deequip", - slot = "hand" + slot = "hand", }, { -- odd hat itemid = 9374, type = "equip", - slot = "head" + slot = "head", }, { -- odd hat itemid = 9374, type = "deequip", - slot = "head" + slot = "head", }, { -- glutton's mace itemid = 9373, type = "equip", - slot = "hand" + slot = "hand", }, { -- glutton's mace itemid = 9373, type = "deequip", - slot = "hand" + slot = "hand", }, { -- meat shield itemid = 9372, type = "equip", - slot = "shield" + slot = "shield", }, { -- meat shield itemid = 9372, type = "deequip", - slot = "shield" + slot = "shield", }, { -- shockwave amulet itemid = 9304, type = "equip", slot = "necklace", - level = 80 + level = 80, }, { -- shockwave amulet itemid = 9304, type = "deequip", slot = "necklace", - level = 80 + level = 80, }, { -- leviathan's amulet itemid = 9303, type = "equip", slot = "necklace", - level = 80 + level = 80, }, { -- leviathan's amulet itemid = 9303, type = "deequip", slot = "necklace", - level = 80 + level = 80, }, { -- sacred tree amulet itemid = 9302, type = "equip", slot = "necklace", - level = 80 + level = 80, }, { -- sacred tree amulet itemid = 9302, type = "deequip", slot = "necklace", - level = 80 + level = 80, }, { -- bonfire amulet itemid = 9301, type = "equip", slot = "necklace", - level = 80 + level = 80, }, { -- bonfire amulet itemid = 9301, type = "deequip", slot = "necklace", - level = 80 + level = 80, }, { -- laurel wreath itemid = 9221, type = "equip", - slot = "head" + slot = "head", }, { -- laurel wreath itemid = 9221, type = "deequip", - slot = "head" + slot = "head", }, { -- bronze medal itemid = 9217, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- bronze medal itemid = 9217, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- silver medal itemid = 9216, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- silver medal itemid = 9216, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- gold medal itemid = 9215, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- gold medal itemid = 9215, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- grey bag itemid = 9151, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- grey bag itemid = 9151, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- batwing hat @@ -10611,91 +10611,91 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- batwing hat itemid = 9103, type = "deequip", slot = "head", - level = 50 + level = 50, }, { -- pair firewalker boots itemid = 9019, type = "equip", slot = "feet", - level = 130 + level = 130, }, { -- pair firewalker boots itemid = 9019, type = "deequip", slot = "feet", - level = 130 + level = 130, }, { -- firewalker boots itemid = 9018, type = "equip", slot = "feet", - level = 130 + level = 130, }, { -- firewalker boots itemid = 9018, type = "deequip", slot = "feet", - level = 130 + level = 130, }, { -- coconut shoes itemid = 9017, type = "equip", - slot = "feet" + slot = "feet", }, { -- coconut shoes itemid = 9017, type = "deequip", - slot = "feet" + slot = "feet", }, { -- flower dress itemid = 9015, type = "equip", - slot = "armor" + slot = "armor", }, { -- flower dress itemid = 9015, type = "deequip", - slot = "armor" + slot = "armor", }, { -- leaf legs itemid = 9014, type = "equip", - slot = "legs" + slot = "legs", }, { -- leaf legs itemid = 9014, type = "deequip", - slot = "legs" + slot = "legs", }, { -- flower wreath itemid = 9013, type = "equip", - slot = "head" + slot = "head", }, { -- flower wreath itemid = 9013, type = "deequip", - slot = "head" + slot = "head", }, { -- yalahari mask @@ -10707,15 +10707,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- yalahari mask itemid = 8864, type = "deequip", slot = "head", - level = 80 + level = 80, }, { -- yalahari leg piece @@ -10725,15 +10725,15 @@ local items = { level = 80, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- yalahari leg piece itemid = 8863, type = "deequip", slot = "legs", - level = 80 + level = 80, }, { -- yalahari armor @@ -10743,171 +10743,171 @@ local items = { level = 80, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- yalahari armor itemid = 8862, type = "deequip", slot = "armor", - level = 80 + level = 80, }, { -- brocade bag itemid = 8861, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- brocade bag itemid = 8861, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- brocade backpack itemid = 8860, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- brocade backpack itemid = 8860, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- golden bag itemid = 655, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- golden bag itemid = 655, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- purple bag itemid = 653, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- purple bag itemid = 653, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- the calamity itemid = 8104, type = "equip", - slot = "hand" + slot = "hand", }, { -- the calamity itemid = 8104, type = "deequip", - slot = "hand" + slot = "hand", }, { -- the epiphany itemid = 8103, type = "equip", - slot = "hand" + slot = "hand", }, { -- the epiphany itemid = 8103, type = "deequip", - slot = "hand" + slot = "hand", }, { -- emerald sword itemid = 8102, type = "equip", - slot = "hand" + slot = "hand", }, { -- emerald sword itemid = 8102, type = "deequip", - slot = "hand" + slot = "hand", }, { -- the stomper itemid = 8101, type = "equip", - slot = "hand" + slot = "hand", }, { -- the stomper itemid = 8101, type = "deequip", - slot = "hand" + slot = "hand", }, { -- obsidian truncheon itemid = 8100, type = "equip", - slot = "hand" + slot = "hand", }, { -- obsidian truncheon itemid = 8100, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dark trinity mace itemid = 8099, type = "equip", - slot = "hand" + slot = "hand", }, { -- dark trinity mace itemid = 8099, type = "deequip", - slot = "hand" + slot = "hand", }, { -- demonwing axe itemid = 8098, type = "equip", - slot = "hand" + slot = "hand", }, { -- demonwing axe itemid = 8098, type = "deequip", - slot = "hand" + slot = "hand", }, { -- solar axe itemid = 8097, type = "equip", - slot = "hand" + slot = "hand", }, { -- solar axe itemid = 8097, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hellforged axe itemid = 8096, type = "equip", - slot = "hand" + slot = "hand", }, { -- hellforged axe itemid = 8096, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ranger legs @@ -10916,14 +10916,14 @@ local items = { slot = "legs", vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ranger legs itemid = 8095, type = "deequip", - slot = "legs" + slot = "legs", }, { -- wand of voodoo @@ -10933,15 +10933,15 @@ local items = { level = 42, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of voodoo itemid = 8094, type = "deequip", slot = "hand", - level = 42 + level = 42, }, { -- wand of draconia @@ -10951,15 +10951,15 @@ local items = { level = 22, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of draconia itemid = 8093, type = "deequip", slot = "hand", - level = 22 + level = 22, }, { -- wand of starmstorm @@ -10969,15 +10969,15 @@ local items = { level = 37, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of starmstorm itemid = 8092, type = "deequip", slot = "hand", - level = 37 + level = 37, }, { -- spellbook of dark mysteries @@ -10989,15 +10989,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of dark mysteries itemid = 8090, type = "deequip", slot = "shield", - level = 80 + level = 80, }, { -- springsprout rod @@ -11007,15 +11007,15 @@ local items = { level = 37, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- springsprout rod itemid = 8084, type = "deequip", slot = "hand", - level = 37 + level = 37, }, { -- northwind rod @@ -11025,15 +11025,15 @@ local items = { level = 22, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- northwind rod itemid = 8083, type = "deequip", slot = "hand", - level = 22 + level = 22, }, { -- underworld rod @@ -11043,15 +11043,15 @@ local items = { level = 42, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- underworld rod itemid = 8082, type = "deequip", slot = "hand", - level = 42 + level = 42, }, { -- terran rainbow shield @@ -11061,15 +11061,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- terran rainbow shield itemid = 8081, type = "deequip", slot = "shield", - level = 100 + level = 100, }, { -- sparking rainbow shield @@ -11079,15 +11079,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sparking rainbow shield itemid = 8080, type = "deequip", slot = "shield", - level = 100 + level = 100, }, { -- icy rainbow shield @@ -11097,15 +11097,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icy rainbow shield itemid = 8079, type = "deequip", slot = "shield", - level = 100 + level = 100, }, { -- fiery rainbow shield @@ -11115,15 +11115,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fiery rainbow shield itemid = 8078, type = "deequip", slot = "shield", - level = 100 + level = 100, }, { -- rainbow shield @@ -11133,15 +11133,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- rainbow shield itemid = 8077, type = "deequip", slot = "shield", - level = 100 + level = 100, }, { -- spellscroll of prophecies @@ -11153,15 +11153,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellscroll of prophecies itemid = 8076, type = "deequip", slot = "shield", - level = 70 + level = 70, }, { -- spellbook of lost souls @@ -11173,15 +11173,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of lost souls itemid = 8075, type = "deequip", slot = "shield", - level = 60 + level = 60, }, { -- spellbook of mind control @@ -11193,15 +11193,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of mind control itemid = 8074, type = "deequip", slot = "shield", - level = 50 + level = 50, }, { -- spellbook of warding @@ -11213,15 +11213,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of warding itemid = 8073, type = "deequip", slot = "shield", - level = 40 + level = 40, }, { -- spellbook of enlightenment @@ -11233,15 +11233,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of enlightenment itemid = 8072, type = "deequip", slot = "shield", - level = 30 + level = 30, }, { -- ethno coat @@ -11252,14 +11252,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- ethno coat itemid = 8064, type = "deequip", - slot = "armor" + slot = "armor", }, { -- paladin armor @@ -11268,14 +11268,14 @@ local items = { slot = "armor", vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- paladin armor itemid = 8063, type = "deequip", - slot = "armor" + slot = "armor", }, { -- robe of the underworld @@ -11285,15 +11285,15 @@ local items = { level = 100, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- robe of the underworld itemid = 8062, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- skullcracker armor @@ -11303,15 +11303,15 @@ local items = { level = 85, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- skullcracker armor itemid = 8061, type = "deequip", slot = "armor", - level = 85 + level = 85, }, { -- master archer's armor @@ -11321,15 +11321,15 @@ local items = { level = 100, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- master archer's armor itemid = 8060, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- frozen plate @@ -11339,15 +11339,15 @@ local items = { level = 75, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- frozen plate itemid = 8059, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- molten plate @@ -11357,15 +11357,15 @@ local items = { level = 75, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- molten plate itemid = 8058, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- divine plate @@ -11375,15 +11375,15 @@ local items = { level = 75, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- divine plate itemid = 8057, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- oceanborn leviathan armor @@ -11393,15 +11393,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- oceanborn leviathan armor itemid = 8056, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- windborn colossus armor @@ -11411,15 +11411,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- windborn colossus armor itemid = 8055, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- earthborn titan armor @@ -11429,15 +11429,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earthborn titan armor itemid = 8054, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- fireborn giant armor @@ -11447,15 +11447,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fireborn giant armor itemid = 8053, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- swamplair armor @@ -11467,15 +11467,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- swamplair armor itemid = 8052, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- voltage armor @@ -11487,15 +11487,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- voltage armor itemid = 8051, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- crystalline armor @@ -11507,15 +11507,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crystalline armor itemid = 8050, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- lavos armor @@ -11527,63 +11527,63 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- lavos armor itemid = 8049, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- girl's dress itemid = 8048, type = "equip", - slot = "armor" + slot = "armor", }, { -- girl's dress itemid = 8048, type = "deequip", - slot = "armor" + slot = "armor", }, { -- tunic itemid = 8047, type = "equip", - slot = "armor" + slot = "armor", }, { -- tunic itemid = 8047, type = "deequip", - slot = "armor" + slot = "armor", }, { -- summer dress itemid = 8046, type = "equip", - slot = "armor" + slot = "armor", }, { -- summer dress itemid = 8046, type = "deequip", - slot = "armor" + slot = "armor", }, { -- hibiscus dress itemid = 8045, type = "equip", - slot = "armor" + slot = "armor", }, { -- hibiscus dress itemid = 8045, type = "deequip", - slot = "armor" + slot = "armor", }, { -- belted cape @@ -11592,14 +11592,14 @@ local items = { slot = "armor", vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- belted cape itemid = 8044, type = "deequip", - slot = "armor" + slot = "armor", }, { -- focus cape @@ -11610,14 +11610,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- focus cape itemid = 8043, type = "deequip", - slot = "armor" + slot = "armor", }, { -- spirit cloak @@ -11628,14 +11628,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spirit cloak itemid = 8042, type = "deequip", - slot = "armor" + slot = "armor", }, { -- greenwood coat @@ -11645,15 +11645,15 @@ local items = { level = 75, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- greenwood coat itemid = 8041, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- velvet mantle @@ -11663,15 +11663,15 @@ local items = { level = 75, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- velvet mantle itemid = 8040, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- dragon robe @@ -11681,15 +11681,15 @@ local items = { level = 75, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- dragon robe itemid = 8039, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- robe of the ice queen @@ -11699,15 +11699,15 @@ local items = { level = 75, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- robe of the ice queen itemid = 8038, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- dark lord's cape @@ -11717,149 +11717,149 @@ local items = { level = 65, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- dark lord's cape itemid = 8037, type = "deequip", slot = "armor", - level = 65 + level = 65, }, { -- elethriel's elemental bow itemid = 8030, type = "equip", - slot = "hand" + slot = "hand", }, { -- elethriel's elemental bow itemid = 8030, type = "deequip", - slot = "hand" + slot = "hand", }, { -- silkweaver bow itemid = 8029, type = "equip", - slot = "hand" + slot = "hand", }, { -- silkweaver bow itemid = 8029, type = "deequip", - slot = "hand" + slot = "hand", }, { -- yol's bow itemid = 8028, type = "equip", - slot = "hand" + slot = "hand", }, { -- yol's bow itemid = 8028, type = "deequip", - slot = "hand" + slot = "hand", }, { -- composite hornbow itemid = 8027, type = "equip", - slot = "hand" + slot = "hand", }, { -- composite hornbow itemid = 8027, type = "deequip", - slot = "hand" + slot = "hand", }, { -- warsinger bow itemid = 8026, type = "equip", - slot = "hand" + slot = "hand", }, { -- warsinger bow itemid = 8026, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ironworker itemid = 8025, type = "equip", - slot = "hand" + slot = "hand", }, { -- ironworker itemid = 8025, type = "deequip", - slot = "hand" + slot = "hand", }, { -- devileye itemid = 8024, type = "equip", - slot = "hand" + slot = "hand", }, { -- devileye itemid = 8024, type = "deequip", - slot = "hand" + slot = "hand", }, { -- royal crossbow itemid = 8023, type = "equip", - slot = "hand" + slot = "hand", }, { -- royal crossbow itemid = 8023, type = "deequip", - slot = "hand" + slot = "hand", }, { -- chain bolter itemid = 8022, type = "equip", - slot = "hand" + slot = "hand", }, { -- chain bolter itemid = 8022, type = "deequip", - slot = "hand" + slot = "hand", }, { -- modified crossbow itemid = 8021, type = "equip", - slot = "hand" + slot = "hand", }, { -- modified crossbow itemid = 8021, type = "deequip", - slot = "hand" + slot = "hand", }, { -- witchhunter's coat itemid = 7993, type = "equip", slot = "armor", - level = 50 + level = 50, }, { -- witchhunter's coat itemid = 7993, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- mage hat @@ -11870,14 +11870,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- mage hat itemid = 7992, type = "deequip", - slot = "head" + slot = "head", }, { -- magician's robe @@ -11888,110 +11888,110 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- magician's robe itemid = 7991, type = "deequip", - slot = "armor" + slot = "armor", }, { -- jagged sword itemid = 7774, type = "equip", - slot = "hand" + slot = "hand", }, { -- jagged sword itemid = 7774, type = "deequip", - slot = "hand" + slot = "hand", }, { -- steel axe itemid = 7773, type = "equip", - slot = "hand" + slot = "hand", }, { -- steel axe itemid = 7773, type = "deequip", - slot = "hand" + slot = "hand", }, { -- Jerom's family necklace itemid = 7754, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- Jerom's family necklace itemid = 7754, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- Koshei's ancient amulet itemid = 7532, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- Koshei's ancient amulet itemid = 7532, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- crimson sword itemid = 860, type = "equip", - slot = "hand" + slot = "hand", }, { -- crimson sword itemid = 860, type = "deequip", - slot = "hand" + slot = "hand", }, { -- shapeshifter ring itemid = 908, type = "equip", - slot = "ring" + slot = "ring", }, { -- shapeshifter ring itemid = 908, type = "deequip", - slot = "ring" + slot = "ring", }, { -- shapeshifter ring itemid = 907, type = "equip", - slot = "ring" + slot = "ring", }, { -- shapeshifter ring itemid = 904, type = "deequip", - slot = "ring" + slot = "ring", }, { -- jester hat itemid = 894, type = "equip", - slot = "head" + slot = "head", }, { -- jester hat itemid = 894, type = "deequip", - slot = "head" + slot = "head", }, { -- terra hood @@ -12002,14 +12002,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- terra hood itemid = 830, type = "deequip", - slot = "head" + slot = "head", }, { -- glacier mask @@ -12020,14 +12020,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glacier mask itemid = 829, type = "deequip", - slot = "head" + slot = "head", }, { -- lightning headband @@ -12038,14 +12038,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lightning headband itemid = 828, type = "deequip", - slot = "head" + slot = "head", }, { -- magma monocle @@ -12056,14 +12056,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- magma monocle itemid = 827, type = "deequip", - slot = "head" + slot = "head", }, { -- magma coat @@ -12075,15 +12075,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- magma coat itemid = 826, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- lightning robe @@ -12095,15 +12095,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lightning robe itemid = 825, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- glacier robe @@ -12115,15 +12115,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glacier robe itemid = 824, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- glacier kilt @@ -12135,15 +12135,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glacier kilt itemid = 823, type = "deequip", slot = "legs", - level = 40 + level = 40, }, { -- lightning legs @@ -12155,15 +12155,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lightning legs itemid = 822, type = "deequip", slot = "legs", - level = 40 + level = 40, }, { -- magma legs @@ -12175,15 +12175,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- magma legs itemid = 821, type = "deequip", slot = "legs", - level = 40 + level = 40, }, { -- lightning boots @@ -12195,15 +12195,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lightning boots itemid = 820, type = "deequip", slot = "feet", - level = 35 + level = 35, }, { -- glacier shoes @@ -12215,15 +12215,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glacier shoes itemid = 819, type = "deequip", slot = "feet", - level = 35 + level = 35, }, { -- magma boots @@ -12235,71 +12235,71 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- magma boots itemid = 818, type = "deequip", slot = "feet", - level = 35 + level = 35, }, { -- magma amulet itemid = 817, type = "equip", slot = "necklace", - level = 60 + level = 60, }, { -- magma amulet itemid = 817, type = "deequip", slot = "necklace", - level = 60 + level = 60, }, { -- lightning pendant itemid = 816, type = "equip", slot = "necklace", - level = 60 + level = 60, }, { -- lightning pendant itemid = 816, type = "deequip", slot = "necklace", - level = 60 + level = 60, }, { -- glacier amulet itemid = 815, type = "equip", slot = "necklace", - level = 60 + level = 60, }, { -- glacier amulet itemid = 815, type = "deequip", slot = "necklace", - level = 60 + level = 60, }, { -- terra amulet itemid = 814, type = "equip", slot = "necklace", - level = 60 + level = 60, }, { -- terra amulet itemid = 814, type = "deequip", slot = "necklace", - level = 60 + level = 60, }, { -- terra boots @@ -12311,15 +12311,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- terra boots itemid = 813, type = "deequip", slot = "feet", - level = 35 + level = 35, }, { -- terra legs @@ -12331,15 +12331,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- terra legs itemid = 812, type = "deequip", slot = "legs", - level = 40 + level = 40, }, { -- terra mantle @@ -12351,2331 +12351,2331 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- terra mantle itemid = 811, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- energy war hammer itemid = 810, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy war hammer itemid = 810, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy orcish maul itemid = 809, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy orcish maul itemid = 809, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy cranial basher itemid = 808, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy cranial basher itemid = 808, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy crystal mace itemid = 807, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy crystal mace itemid = 807, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy clerical mace itemid = 806, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy clerical mace itemid = 806, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy war axe itemid = 805, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy war axe itemid = 805, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy headchopper itemid = 804, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy headchopper itemid = 804, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy heroic axe itemid = 803, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy heroic axe itemid = 803, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy knight axe itemid = 802, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy knight axe itemid = 802, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy barbarian axe itemid = 801, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy barbarian axe itemid = 801, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy dragon slayer itemid = 798, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy dragon slayer itemid = 798, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy blacksteel sword itemid = 797, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy blacksteel sword itemid = 797, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy mystic blade itemid = 796, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy mystic blade itemid = 796, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy relic sword itemid = 795, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy relic sword itemid = 795, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy spike sword itemid = 794, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy spike sword itemid = 794, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth war hammer itemid = 793, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth war hammer itemid = 793, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth orcish maul itemid = 792, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth orcish maul itemid = 792, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth cranial basher itemid = 791, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth cranial basher itemid = 791, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth crystal mace itemid = 790, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth crystal mace itemid = 790, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth clerical mace itemid = 789, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth clerical mace itemid = 789, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth war axe itemid = 788, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth war axe itemid = 788, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth headchopper itemid = 787, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth headchopper itemid = 787, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth heroic axe itemid = 786, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth heroic axe itemid = 786, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth knight axe itemid = 785, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth knight axe itemid = 785, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth barbarian axe itemid = 784, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth barbarian axe itemid = 784, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth dragon slayer itemid = 783, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth dragon slayer itemid = 783, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth blacksteel sword itemid = 782, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth blacksteel sword itemid = 782, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth mystic blade itemid = 781, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth mystic blade itemid = 781, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth relic sword itemid = 780, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth relic sword itemid = 780, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth spike sword itemid = 779, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth spike sword itemid = 779, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth arrow itemid = 774, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- earth arrow itemid = 774, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- flaming arrow itemid = 763, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- flaming arrow itemid = 763, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- shiver arrow itemid = 762, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- shiver arrow itemid = 762, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- flash arrow itemid = 761, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- flash arrow itemid = 761, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- icy war hammer itemid = 693, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy war hammer itemid = 693, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy orcish maul itemid = 692, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy orcish maul itemid = 692, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy cranial basher itemid = 691, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy cranial basher itemid = 691, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy crystal mace itemid = 690, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy crystal mace itemid = 690, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy clerical mace itemid = 689, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy clerical mace itemid = 689, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy war axe itemid = 688, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy war axe itemid = 688, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy headchopper itemid = 687, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy headchopper itemid = 687, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy heroic axe itemid = 686, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy heroic axe itemid = 686, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy knight axe itemid = 685, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy knight axe itemid = 685, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy barbarian axe itemid = 684, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy barbarian axe itemid = 684, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy dragon slayer itemid = 683, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy dragon slayer itemid = 683, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy blacksteel sword itemid = 682, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy blacksteel sword itemid = 682, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy mystic blade itemid = 681, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy mystic blade itemid = 681, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy relic sword itemid = 680, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy relic sword itemid = 680, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy spike sword itemid = 679, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy spike sword itemid = 679, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery war hammer itemid = 674, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery war hammer itemid = 674, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery orcish maul itemid = 673, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery orcish maul itemid = 673, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery cranial basher itemid = 672, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery cranial basher itemid = 672, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery crystal mace itemid = 671, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery crystal mace itemid = 671, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery clerical mace itemid = 670, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery clerical mace itemid = 670, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery war axe itemid = 669, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery war axe itemid = 669, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery headchopper itemid = 668, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery headchopper itemid = 668, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery heroic axe itemid = 667, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery heroic axe itemid = 667, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery knight axe itemid = 666, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery knight axe itemid = 666, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery barbarian axe itemid = 665, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery barbarian axe itemid = 665, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery dragon slayer itemid = 664, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery dragon slayer itemid = 664, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery blacksteel sword itemid = 663, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery blacksteel sword itemid = 663, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery mystic blade itemid = 662, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery mystic blade itemid = 662, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery relic sword itemid = 661, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery relic sword itemid = 661, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery spike sword itemid = 660, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery spike sword itemid = 660, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blue legs itemid = 645, type = "equip", - slot = "legs" + slot = "legs", }, { -- blue legs itemid = 645, type = "deequip", - slot = "legs" + slot = "legs", }, { -- suspicious signet ring itemid = 406, type = "equip", - slot = "ring" + slot = "ring", }, { -- suspicious signet ring itemid = 406, type = "deequip", - slot = "ring" + slot = "ring", }, { -- family signet ring itemid = 349, type = "equip", - slot = "ring" + slot = "ring", }, { -- family signet ring itemid = 349, type = "deequip", - slot = "ring" + slot = "ring", }, { -- mining helmet itemid = 139, type = "equip", - slot = "head" + slot = "head", }, { -- mining helmet itemid = 139, type = "deequip", - slot = "head" + slot = "head", }, { -- mammoth fur shorts itemid = 7464, type = "equip", - slot = "legs" + slot = "legs", }, { -- mammoth fur shorts itemid = 7464, type = "deequip", - slot = "legs" + slot = "legs", }, { -- mammoth fur cape itemid = 7463, type = "equip", - slot = "armor" + slot = "armor", }, { -- mammoth fur cape itemid = 7463, type = "deequip", - slot = "armor" + slot = "armor", }, { -- ragnir helmet itemid = 7462, type = "equip", - slot = "head" + slot = "head", }, { -- ragnir helmet itemid = 7462, type = "deequip", - slot = "head" + slot = "head", }, { -- krimhorn helmet itemid = 7461, type = "equip", - slot = "head" + slot = "head", }, { -- krimhorn helmet itemid = 7461, type = "deequip", - slot = "head" + slot = "head", }, { -- norse shield itemid = 7460, type = "equip", - slot = "shield" + slot = "shield", }, { -- norse shield itemid = 7460, type = "deequip", - slot = "shield" + slot = "shield", }, { -- pair of earmuffs itemid = 7459, type = "equip", - slot = "head" + slot = "head", }, { -- pair of earmuffs itemid = 7459, type = "deequip", - slot = "head" + slot = "head", }, { -- fur cap itemid = 7458, type = "equip", - slot = "head" + slot = "head", }, { -- fur cap itemid = 7458, type = "deequip", - slot = "head" + slot = "head", }, { -- fur boots itemid = 7457, type = "equip", - slot = "feet" + slot = "feet", }, { -- fur boots itemid = 7457, type = "deequip", - slot = "feet" + slot = "feet", }, { -- noble axe itemid = 7456, type = "equip", - slot = "hand" + slot = "hand", }, { -- noble axe itemid = 7456, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mythril axe itemid = 7455, type = "equip", - slot = "hand" + slot = "hand", }, { -- mythril axe itemid = 7455, type = "deequip", - slot = "hand" + slot = "hand", }, { -- glorious axe itemid = 7454, type = "equip", - slot = "hand" + slot = "hand", }, { -- glorious axe itemid = 7454, type = "deequip", - slot = "hand" + slot = "hand", }, { -- executioner itemid = 7453, type = "equip", - slot = "hand" + slot = "hand", }, { -- executioner itemid = 7453, type = "deequip", - slot = "hand" + slot = "hand", }, { -- spiked squelcher itemid = 7452, type = "equip", - slot = "hand" + slot = "hand", }, { -- spiked squelcher itemid = 7452, type = "deequip", - slot = "hand" + slot = "hand", }, { -- shadow sceptre itemid = 7451, type = "equip", - slot = "hand" + slot = "hand", }, { -- shadow sceptre itemid = 7451, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hammer of prophecy itemid = 7450, type = "equip", - slot = "hand" + slot = "hand", }, { -- hammer of prophecy itemid = 7450, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crystal sword itemid = 7449, type = "equip", - slot = "hand" + slot = "hand", }, { -- crystal sword itemid = 7449, type = "deequip", - slot = "hand" + slot = "hand", }, { -- elvish bow itemid = 7438, type = "equip", - slot = "hand" + slot = "hand", }, { -- elvish bow itemid = 7438, type = "deequip", - slot = "hand" + slot = "hand", }, { -- sapphire hammer itemid = 7437, type = "equip", - slot = "hand" + slot = "hand", }, { -- sapphire hammer itemid = 7437, type = "deequip", - slot = "hand" + slot = "hand", }, { -- angelic axe itemid = 7436, type = "equip", - slot = "hand" + slot = "hand", }, { -- angelic axe itemid = 7436, type = "deequip", - slot = "hand" + slot = "hand", }, { -- impaler itemid = 7435, type = "equip", - slot = "hand" + slot = "hand", }, { -- impaler itemid = 7435, type = "deequip", - slot = "hand" + slot = "hand", }, { -- royal axe itemid = 7434, type = "equip", - slot = "hand" + slot = "hand", }, { -- royal axe itemid = 7434, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ravenwing itemid = 7433, type = "equip", - slot = "hand" + slot = "hand", }, { -- ravenwing itemid = 7433, type = "deequip", - slot = "hand" + slot = "hand", }, { -- furry club itemid = 7432, type = "equip", - slot = "hand" + slot = "hand", }, { -- furry club itemid = 7432, type = "deequip", - slot = "hand" + slot = "hand", }, { -- demonbone itemid = 7431, type = "equip", - slot = "hand" + slot = "hand", }, { -- demonbone itemid = 7431, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dragonbone staff itemid = 7430, type = "equip", - slot = "hand" + slot = "hand", }, { -- dragonbone staff itemid = 7430, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blessed sceptre itemid = 7429, type = "equip", - slot = "hand" + slot = "hand", }, { -- blessed sceptre itemid = 7429, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bonebreaker itemid = 7428, type = "equip", - slot = "hand" + slot = "hand", }, { -- bonebreaker itemid = 7428, type = "deequip", - slot = "hand" + slot = "hand", }, { -- chaos mace itemid = 7427, type = "equip", - slot = "hand" + slot = "hand", }, { -- chaos mace itemid = 7427, type = "deequip", - slot = "hand" + slot = "hand", }, { -- amber staff itemid = 7426, type = "equip", - slot = "hand" + slot = "hand", }, { -- amber staff itemid = 7426, type = "deequip", - slot = "hand" + slot = "hand", }, { -- taurus mace itemid = 7425, type = "equip", - slot = "hand" + slot = "hand", }, { -- taurus mace itemid = 7425, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lunar staff itemid = 7424, type = "equip", - slot = "hand" + slot = "hand", }, { -- lunar staff itemid = 7424, type = "deequip", - slot = "hand" + slot = "hand", }, { -- skullcrusher itemid = 7423, type = "equip", - slot = "hand" + slot = "hand", }, { -- skullcrusher itemid = 7423, type = "deequip", - slot = "hand" + slot = "hand", }, { -- jade hammer itemid = 7422, type = "equip", - slot = "hand" + slot = "hand", }, { -- jade hammer itemid = 7422, type = "deequip", - slot = "hand" + slot = "hand", }, { -- onyx flail itemid = 7421, type = "equip", - slot = "hand" + slot = "hand", }, { -- onyx flail itemid = 7421, type = "deequip", - slot = "hand" + slot = "hand", }, { -- reaper's axe itemid = 7420, type = "equip", - slot = "hand" + slot = "hand", }, { -- reaper's axe itemid = 7420, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dreaded cleaver itemid = 7419, type = "equip", - slot = "hand" + slot = "hand", }, { -- dreaded cleaver itemid = 7419, type = "deequip", - slot = "hand" + slot = "hand", }, { -- nightmare blade itemid = 7418, type = "equip", - slot = "hand" + slot = "hand", }, { -- nightmare blade itemid = 7418, type = "deequip", - slot = "hand" + slot = "hand", }, { -- runed sword itemid = 7417, type = "equip", - slot = "hand" + slot = "hand", }, { -- runed sword itemid = 7417, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bloody edge itemid = 7416, type = "equip", - slot = "hand" + slot = "hand", }, { -- bloody edge itemid = 7416, type = "deequip", - slot = "hand" + slot = "hand", }, { -- cranial basher itemid = 7415, type = "equip", - slot = "hand" + slot = "hand", }, { -- cranial basher itemid = 7415, type = "deequip", - slot = "hand" + slot = "hand", }, { -- abyss hammer itemid = 7414, type = "equip", - slot = "hand" + slot = "hand", }, { -- abyss hammer itemid = 7414, type = "deequip", - slot = "hand" + slot = "hand", }, { -- titan axe itemid = 7413, type = "equip", - slot = "hand" + slot = "hand", }, { -- titan axe itemid = 7413, type = "deequip", - slot = "hand" + slot = "hand", }, { -- butcher's axe itemid = 7412, type = "equip", - slot = "hand" + slot = "hand", }, { -- butcher's axe itemid = 7412, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornamented axe itemid = 7411, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornamented axe itemid = 7411, type = "deequip", - slot = "hand" + slot = "hand", }, { -- queen's sceptre itemid = 7410, type = "equip", - slot = "hand" + slot = "hand", }, { -- queen's sceptre itemid = 7410, type = "deequip", - slot = "hand" + slot = "hand", }, { -- northern star itemid = 7409, type = "equip", - slot = "hand" + slot = "hand", }, { -- northern star itemid = 7409, type = "deequip", - slot = "hand" + slot = "hand", }, { -- wyvern fang itemid = 7408, type = "equip", - slot = "hand" + slot = "hand", }, { -- wyvern fang itemid = 7408, type = "deequip", - slot = "hand" + slot = "hand", }, { -- haunted blade itemid = 7407, type = "equip", - slot = "hand" + slot = "hand", }, { -- haunted blade itemid = 7407, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blacksteel sword itemid = 7406, type = "equip", - slot = "hand" + slot = "hand", }, { -- blacksteel sword itemid = 7406, type = "deequip", - slot = "hand" + slot = "hand", }, { -- havoc blade itemid = 7405, type = "equip", - slot = "hand" + slot = "hand", }, { -- havoc blade itemid = 7405, type = "deequip", - slot = "hand" + slot = "hand", }, { -- assassin dagger itemid = 7404, type = "equip", - slot = "hand" + slot = "hand", }, { -- assassin dagger itemid = 7404, type = "deequip", - slot = "hand" + slot = "hand", }, { -- berserker itemid = 7403, type = "equip", - slot = "hand" + slot = "hand", }, { -- berserker itemid = 7403, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dragon slayer itemid = 7402, type = "equip", - slot = "hand" + slot = "hand", }, { -- dragon slayer itemid = 7402, type = "deequip", - slot = "hand" + slot = "hand", }, { -- orcish maul itemid = 7392, type = "equip", - slot = "hand" + slot = "hand", }, { -- orcish maul itemid = 7392, type = "deequip", - slot = "hand" + slot = "hand", }, { -- thaian sword itemid = 7391, type = "equip", - slot = "hand" + slot = "hand", }, { -- thaian sword itemid = 7391, type = "deequip", - slot = "hand" + slot = "hand", }, { -- the justice seeker itemid = 7390, type = "equip", - slot = "hand" + slot = "hand", }, { -- the justice seeker itemid = 7390, type = "deequip", - slot = "hand" + slot = "hand", }, { -- heroic axe itemid = 7389, type = "equip", - slot = "hand" + slot = "hand", }, { -- heroic axe itemid = 7389, type = "deequip", - slot = "hand" + slot = "hand", }, { -- vile axe itemid = 7388, type = "equip", - slot = "hand" + slot = "hand", }, { -- vile axe itemid = 7388, type = "deequip", - slot = "hand" + slot = "hand", }, { -- diamond sceptre itemid = 7387, type = "equip", - slot = "hand" + slot = "hand", }, { -- diamond sceptre itemid = 7387, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mercenary sword itemid = 7386, type = "equip", - slot = "hand" + slot = "hand", }, { -- mercenary sword itemid = 7386, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crimson sword itemid = 7385, type = "equip", - slot = "hand" + slot = "hand", }, { -- crimson sword itemid = 7385, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mystic blade itemid = 7384, type = "equip", - slot = "hand" + slot = "hand", }, { -- mystic blade itemid = 7384, type = "deequip", - slot = "hand" + slot = "hand", }, { -- relic sword itemid = 7383, type = "equip", - slot = "hand" + slot = "hand", }, { -- relic sword itemid = 7383, type = "deequip", - slot = "hand" + slot = "hand", }, { -- demonrage sword itemid = 7382, type = "equip", - slot = "hand" + slot = "hand", }, { -- demonrage sword itemid = 7382, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mammoth whopper itemid = 7381, type = "equip", - slot = "hand" + slot = "hand", }, { -- mammoth whopper itemid = 7381, type = "deequip", - slot = "hand" + slot = "hand", }, { -- headchopper itemid = 7380, type = "equip", - slot = "hand" + slot = "hand", }, { -- headchopper itemid = 7380, type = "deequip", - slot = "hand" + slot = "hand", }, { -- brutetamer's staff itemid = 7379, type = "equip", - slot = "hand" + slot = "hand", }, { -- brutetamer's staff itemid = 7379, type = "deequip", - slot = "hand" + slot = "hand", }, { -- royal spear itemid = 7378, type = "equip", - slot = "hand" + slot = "hand", }, { -- royal spear itemid = 7378, type = "deequip", - slot = "hand" + slot = "hand", }, { -- assassin star itemid = 7368, type = "equip", - slot = "hand" + slot = "hand", }, { -- assassin star itemid = 7368, type = "deequip", - slot = "hand" + slot = "hand", }, { -- enchanted spear itemid = 7367, type = "equip", - slot = "hand" + slot = "hand", }, { -- enchanted spear itemid = 7367, type = "deequip", - slot = "hand" + slot = "hand", }, { -- onyx arrow itemid = 7365, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- onyx arrow itemid = 7365, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- sniper arrow itemid = 7364, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- sniper arrow itemid = 7364, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- piercing bolt itemid = 7363, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- piercing bolt itemid = 7363, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- flame of life itemid = 7360, - type = "additem" + type = "additem", }, { -- flame of life itemid = 7359, - type = "stepin" + type = "stepin", }, { -- fur bag itemid = 7343, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- fur bag itemid = 7343, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- fur backpack itemid = 7342, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- fur backpack itemid = 7342, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- party hat itemid = 6578, type = "equip", - slot = "head" + slot = "head", }, { -- party hat itemid = 6578, type = "deequip", - slot = "head" + slot = "head", }, { -- ruthless axe itemid = 6553, type = "equip", - slot = "hand" + slot = "hand", }, { -- ruthless axe itemid = 6553, type = "deequip", - slot = "hand" + slot = "hand", }, { -- santa hat itemid = 6531, type = "equip", - slot = "head" + slot = "head", }, { -- santa hat itemid = 6531, type = "deequip", - slot = "head" + slot = "head", }, { -- infernal bolt itemid = 6528, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- infernal bolt itemid = 6528, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- the avenger itemid = 6527, type = "equip", - slot = "hand" + slot = "hand", }, { -- the avenger itemid = 6527, type = "deequip", - slot = "hand" + slot = "hand", }, { -- necromancer shield itemid = 6432, type = "equip", - slot = "shield" + slot = "shield", }, { -- necromancer shield itemid = 6432, type = "deequip", - slot = "shield" + slot = "shield", }, { -- nightmare shield itemid = 6390, type = "equip", - slot = "shield" + slot = "shield", }, { -- nightmare shield itemid = 6390, type = "deequip", - slot = "shield" + slot = "shield", }, { -- death ring itemid = 6300, type = "equip", - slot = "ring" + slot = "ring", }, { -- death ring itemid = 6300, type = "deequip", - slot = "ring" + slot = "ring", }, { -- death ring itemid = 6299, type = "equip", - slot = "ring" + slot = "ring", }, { -- death ring itemid = 6299, type = "deequip", - slot = "ring" + slot = "ring", }, { -- pair of soft boots itemid = 6529, type = "equip", slot = "feet", - level = 10 + level = 10, }, { -- pair of soft boots itemid = 6529, type = "deequip", slot = "feet", - level = 10 + level = 10, }, { -- tortoise shield itemid = 6131, type = "equip", - slot = "shield" + slot = "shield", }, { -- tortoise shield itemid = 6131, type = "deequip", - slot = "shield" + slot = "shield", }, { -- Dragha's spellbook itemid = 6120, type = "equip", - slot = "shield" + slot = "shield", }, { -- Dragha's spellbook itemid = 6120, type = "deequip", - slot = "shield" + slot = "shield", }, { -- Ron the Ripper's sabre itemid = 6101, type = "equip", - slot = "hand" + slot = "hand", }, { -- Ron the Ripper's sabre itemid = 6101, type = "deequip", - slot = "hand" + slot = "hand", }, { -- pirate hat itemid = 6096, type = "equip", - slot = "head" + slot = "head", }, { -- pirate hat itemid = 6096, type = "deequip", - slot = "head" + slot = "head", }, { -- pirate shirt itemid = 6095, type = "equip", - slot = "armor" + slot = "armor", }, { -- pirate shirt itemid = 6095, type = "deequip", - slot = "armor" + slot = "armor", }, { -- beach bag itemid = 5950, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- beach bag itemid = 5950, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- beach backpack itemid = 5949, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- beach backpack itemid = 5949, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- pirate bag itemid = 5927, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- pirate bag itemid = 5927, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- pirate backpack itemid = 5926, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- pirate backpack itemid = 5926, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- pirate knee breeches itemid = 5918, type = "equip", - slot = "legs" + slot = "legs", }, { -- pirate knee breeches itemid = 5918, type = "deequip", - slot = "legs" + slot = "legs", }, { -- bandana itemid = 5917, type = "equip", - slot = "head" + slot = "head", }, { -- bandana itemid = 5917, type = "deequip", - slot = "head" + slot = "head", }, { -- Ferumbras' hat itemid = 5903, type = "equip", - slot = "head" + slot = "head", }, { -- Ferumbras' hat itemid = 5903, type = "deequip", - slot = "head" + slot = "head", }, { -- arbalest itemid = 5803, type = "equip", - slot = "hand" + slot = "hand", }, { -- arbalest itemid = 5803, type = "deequip", - slot = "hand" + slot = "hand", }, { -- jewelled backpack itemid = 5801, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- jewelled backpack itemid = 5801, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- skull helmet itemid = 5741, type = "equip", - slot = "head" + slot = "head", }, { -- skull helmet itemid = 5741, type = "deequip", - slot = "head" + slot = "head", }, { -- pirate boots itemid = 5461, type = "equip", - slot = "feet" + slot = "feet", }, { -- pirate boots itemid = 5461, type = "deequip", - slot = "feet" + slot = "feet", }, { -- helmet of the deep itemid = 5460, type = "equip", - slot = "head" + slot = "head", }, { -- helmet of the deep itemid = 5460, type = "deequip", - slot = "head" + slot = "head", }, { -- spectral dress itemid = 4836, type = "equip", - slot = "armor" + slot = "armor", }, { -- spectral dress itemid = 4836, type = "deequip", - slot = "armor" + slot = "armor", }, { -- bast skirt itemid = 3560, type = "equip", - slot = "legs" + slot = "legs", }, { -- bast skirt itemid = 3560, type = "deequip", - slot = "legs" + slot = "legs", }, { -- crocodile boots itemid = 3556, type = "equip", - slot = "feet" + slot = "feet", }, { -- crocodile boots itemid = 3556, type = "deequip", - slot = "feet" + slot = "feet", }, { -- salamander shield itemid = 3445, type = "equip", - slot = "shield" + slot = "shield", }, { -- salamander shield itemid = 3445, type = "deequip", - slot = "shield" + slot = "shield", }, { -- sentinel shield itemid = 3444, type = "equip", - slot = "shield" + slot = "shield", }, { -- sentinel shield itemid = 3444, type = "deequip", - slot = "shield" + slot = "shield", }, { -- tusk shield itemid = 3443, type = "equip", - slot = "shield" + slot = "shield", }, { -- tusk shield itemid = 3443, type = "deequip", - slot = "shield" + slot = "shield", }, { -- bonelord helmet itemid = 3408, type = "equip", - slot = "head" + slot = "head", }, { -- bonelord helmet itemid = 3408, type = "deequip", - slot = "head" + slot = "head", }, { -- charmer's tiara itemid = 3407, type = "equip", - slot = "head" + slot = "head", }, { -- charmer's tiara itemid = 3407, type = "deequip", - slot = "head" + slot = "head", }, { -- feather headdress itemid = 3406, type = "equip", - slot = "head" + slot = "head", }, { -- feather headdress itemid = 3406, type = "deequip", - slot = "head" + slot = "head", }, { -- horseman helmet itemid = 3405, type = "equip", - slot = "head" + slot = "head", }, { -- horseman helmet itemid = 3405, type = "deequip", - slot = "head" + slot = "head", }, { -- leopard armor itemid = 3404, type = "equip", - slot = "armor" + slot = "armor", }, { -- leopard armor itemid = 3404, type = "deequip", - slot = "armor" + slot = "armor", }, { -- tribal mask itemid = 3403, type = "equip", - slot = "head" + slot = "head", }, { -- tribal mask itemid = 3403, type = "deequip", - slot = "head" + slot = "head", }, { -- banana staff itemid = 3348, type = "equip", - slot = "hand" + slot = "hand", }, { -- banana staff itemid = 3348, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hunting spear itemid = 3347, type = "equip", - slot = "hand" + slot = "hand", }, { -- hunting spear itemid = 3347, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ripper lance itemid = 3346, type = "equip", - slot = "hand" + slot = "hand", }, { -- ripper lance itemid = 3346, type = "deequip", - slot = "hand" + slot = "hand", }, { -- templar scytheblade itemid = 3345, type = "equip", - slot = "hand" + slot = "hand", }, { -- templar scytheblade itemid = 3345, type = "deequip", - slot = "hand" + slot = "hand", }, { -- beastslayer axe itemid = 3344, type = "equip", - slot = "hand" + slot = "hand", }, { -- beastslayer axe itemid = 3344, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lich staff itemid = 3343, type = "equip", - slot = "hand" + slot = "hand", }, { -- lich staff itemid = 3343, type = "deequip", - slot = "hand" + slot = "hand", }, { -- old and used backpack itemid = 3244, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- old and used backpack itemid = 3244, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- camouflage backpack itemid = 2872, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- camouflage backpack itemid = 2872, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- camouflage bag itemid = 2864, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- camouflage bag itemid = 2864, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- post officer's hat itemid = 3576, type = "equip", - slot = "head" + slot = "head", }, { -- post officer's hat itemid = 3576, type = "deequip", - slot = "head" + slot = "head", }, { -- wood cape @@ -14684,50 +14684,50 @@ local items = { slot = "head", vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- wood cape itemid = 3575, type = "deequip", - slot = "head" + slot = "head", }, { -- mystic turban itemid = 3574, type = "equip", - slot = "head" + slot = "head", }, { -- mystic turban itemid = 3574, type = "deequip", - slot = "head" + slot = "head", }, { -- magician hat itemid = 3573, type = "equip", - slot = "head" + slot = "head", }, { -- magician hat itemid = 3573, type = "deequip", - slot = "head" + slot = "head", }, { -- scarf itemid = 3572, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- scarf itemid = 3572, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- ranger's cloak @@ -14736,808 +14736,808 @@ local items = { slot = "armor", vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ranger's cloak itemid = 3571, type = "deequip", - slot = "armor" + slot = "armor", }, { -- ball gown itemid = 3570, type = "equip", - slot = "armor" + slot = "armor", }, { -- ball gown itemid = 3570, type = "deequip", - slot = "armor" + slot = "armor", }, { -- white dress itemid = 3569, type = "equip", - slot = "armor" + slot = "armor", }, { -- white dress itemid = 3569, type = "deequip", - slot = "armor" + slot = "armor", }, { -- simple dress itemid = 3568, type = "equip", - slot = "armor" + slot = "armor", }, { -- simple dress itemid = 3568, type = "deequip", - slot = "armor" + slot = "armor", }, { -- blue robe itemid = 3567, type = "equip", - slot = "armor" + slot = "armor", }, { -- blue robe itemid = 3567, type = "deequip", - slot = "armor" + slot = "armor", }, { -- red robe itemid = 3566, type = "equip", - slot = "armor" + slot = "armor", }, { -- red robe itemid = 3566, type = "deequip", - slot = "armor" + slot = "armor", }, { -- cape itemid = 3565, type = "equip", - slot = "armor" + slot = "armor", }, { -- cape itemid = 3565, type = "deequip", - slot = "armor" + slot = "armor", }, { -- red tunic itemid = 3564, type = "equip", - slot = "armor" + slot = "armor", }, { -- red tunic itemid = 3564, type = "deequip", - slot = "armor" + slot = "armor", }, { -- green tunic itemid = 3563, type = "equip", - slot = "armor" + slot = "armor", }, { -- green tunic itemid = 3563, type = "deequip", - slot = "armor" + slot = "armor", }, { -- coat itemid = 3562, type = "equip", - slot = "armor" + slot = "armor", }, { -- coat itemid = 3562, type = "deequip", - slot = "armor" + slot = "armor", }, { -- jacket itemid = 3561, type = "equip", - slot = "armor" + slot = "armor", }, { -- jacket itemid = 3561, type = "deequip", - slot = "armor" + slot = "armor", }, { -- leather legs itemid = 3559, type = "equip", - slot = "legs" + slot = "legs", }, { -- leather legs itemid = 3559, type = "deequip", - slot = "legs" + slot = "legs", }, { -- chain legs itemid = 3558, type = "equip", - slot = "legs" + slot = "legs", }, { -- chain legs itemid = 3558, type = "deequip", - slot = "legs" + slot = "legs", }, { -- plate legs itemid = 3557, type = "equip", - slot = "legs" + slot = "legs", }, { -- plate legs itemid = 3557, type = "deequip", - slot = "legs" + slot = "legs", }, { -- golden boots itemid = 3555, type = "equip", - slot = "feet" + slot = "feet", }, { -- golden boots itemid = 3555, type = "deequip", - slot = "feet" + slot = "feet", }, { -- steel boots itemid = 3554, type = "equip", - slot = "feet" + slot = "feet", }, { -- steel boots itemid = 3554, type = "deequip", - slot = "feet" + slot = "feet", }, { -- bunnyslippers itemid = 3553, type = "equip", - slot = "feet" + slot = "feet", }, { -- bunnyslippers itemid = 3553, type = "deequip", - slot = "feet" + slot = "feet", }, { -- leather boots itemid = 3552, type = "equip", - slot = "feet" + slot = "feet", }, { -- leather boots itemid = 3552, type = "deequip", - slot = "feet" + slot = "feet", }, { -- sandals itemid = 3551, type = "equip", - slot = "feet" + slot = "feet", }, { -- sandals itemid = 3551, type = "deequip", - slot = "feet" + slot = "feet", }, { -- patched boots itemid = 3550, type = "equip", - slot = "feet" + slot = "feet", }, { -- patched boots itemid = 3550, type = "deequip", - slot = "feet" + slot = "feet", }, { -- pair of soft boots itemid = 3549, type = "equip", slot = "feet", - level = 10 + level = 10, }, { -- pair of soft boots itemid = 3549, type = "deequip", slot = "feet", - level = 10 + level = 10, }, { -- scythe itemid = 3453, type = "equip", - slot = "hand" + slot = "hand", }, { -- scythe itemid = 3453, type = "deequip", - slot = "hand" + slot = "hand", }, { -- power bolt itemid = 3450, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- power bolt itemid = 3450, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- arrow itemid = 3447, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- arrow itemid = 3447, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- bolt itemid = 3446, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- bolt itemid = 3446, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- tempest shield itemid = 3442, type = "equip", - slot = "shield" + slot = "shield", }, { -- tempest shield itemid = 3442, type = "deequip", - slot = "shield" + slot = "shield", }, { -- bone shield itemid = 3441, type = "equip", - slot = "shield" + slot = "shield", }, { -- bone shield itemid = 3441, type = "deequip", - slot = "shield" + slot = "shield", }, { -- scarab shield itemid = 3440, type = "equip", - slot = "shield" + slot = "shield", }, { -- scarab shield itemid = 3440, type = "deequip", - slot = "shield" + slot = "shield", }, { -- phoenix shield itemid = 3439, type = "equip", - slot = "shield" + slot = "shield", }, { -- phoenix shield itemid = 3439, type = "deequip", - slot = "shield" + slot = "shield", }, { -- eagle shield itemid = 3438, type = "equip", - slot = "shield" + slot = "shield", }, { -- eagle shield itemid = 3438, type = "deequip", - slot = "shield" + slot = "shield", }, { -- amazon shield itemid = 3437, type = "equip", - slot = "shield" + slot = "shield", }, { -- amazon shield itemid = 3437, type = "deequip", - slot = "shield" + slot = "shield", }, { -- medusa shield itemid = 3436, type = "equip", - slot = "shield" + slot = "shield", }, { -- medusa shield itemid = 3436, type = "deequip", - slot = "shield" + slot = "shield", }, { -- castle shield itemid = 3435, type = "equip", - slot = "shield" + slot = "shield", }, { -- castle shield itemid = 3435, type = "deequip", - slot = "shield" + slot = "shield", }, { -- vampire shield itemid = 3434, type = "equip", - slot = "shield" + slot = "shield", }, { -- vampire shield itemid = 3434, type = "deequip", - slot = "shield" + slot = "shield", }, { -- griffin shield itemid = 3433, type = "equip", - slot = "shield" + slot = "shield", }, { -- griffin shield itemid = 3433, type = "deequip", - slot = "shield" + slot = "shield", }, { -- ancient shield itemid = 3432, type = "equip", - slot = "shield" + slot = "shield", }, { -- ancient shield itemid = 3432, type = "deequip", - slot = "shield" + slot = "shield", }, { -- viking shield itemid = 3431, type = "equip", - slot = "shield" + slot = "shield", }, { -- viking shield itemid = 3431, type = "deequip", - slot = "shield" + slot = "shield", }, { -- copper shield itemid = 3430, type = "equip", - slot = "shield" + slot = "shield", }, { -- copper shield itemid = 3430, type = "deequip", - slot = "shield" + slot = "shield", }, { -- black shield itemid = 3429, type = "equip", - slot = "shield" + slot = "shield", }, { -- black shield itemid = 3429, type = "deequip", - slot = "shield" + slot = "shield", }, { -- tower shield itemid = 3428, type = "equip", - slot = "shield" + slot = "shield", }, { -- tower shield itemid = 3428, type = "deequip", - slot = "shield" + slot = "shield", }, { -- rose shield itemid = 3427, type = "equip", - slot = "shield" + slot = "shield", }, { -- rose shield itemid = 3427, type = "deequip", - slot = "shield" + slot = "shield", }, { -- studded shield itemid = 3426, type = "equip", - slot = "shield" + slot = "shield", }, { -- studded shield itemid = 3426, type = "deequip", - slot = "shield" + slot = "shield", }, { -- dwarven shield itemid = 3425, type = "equip", - slot = "shield" + slot = "shield", }, { -- dwarven shield itemid = 3425, type = "deequip", - slot = "shield" + slot = "shield", }, { -- ornamented shield itemid = 3424, type = "equip", - slot = "shield" + slot = "shield", }, { -- ornamented shield itemid = 3424, type = "deequip", - slot = "shield" + slot = "shield", }, { -- blessed shield itemid = 3423, type = "equip", - slot = "shield" + slot = "shield", }, { -- blessed shield itemid = 3423, type = "deequip", - slot = "shield" + slot = "shield", }, { -- great shield itemid = 3422, type = "equip", - slot = "shield" + slot = "shield", }, { -- great shield itemid = 3422, type = "deequip", - slot = "shield" + slot = "shield", }, { -- dark shield itemid = 3421, type = "equip", - slot = "shield" + slot = "shield", }, { -- dark shield itemid = 3421, type = "deequip", - slot = "shield" + slot = "shield", }, { -- demon shield itemid = 3420, type = "equip", - slot = "shield" + slot = "shield", }, { -- demon shield itemid = 3420, type = "deequip", - slot = "shield" + slot = "shield", }, { -- crown shield itemid = 3419, type = "equip", - slot = "shield" + slot = "shield", }, { -- crown shield itemid = 3419, type = "deequip", - slot = "shield" + slot = "shield", }, { -- bonelord shield itemid = 3418, type = "equip", - slot = "shield" + slot = "shield", }, { -- bonelord shield itemid = 3418, type = "deequip", - slot = "shield" + slot = "shield", }, { -- shield of honour itemid = 3417, type = "equip", - slot = "shield" + slot = "shield", }, { -- shield of honour itemid = 3417, type = "deequip", - slot = "shield" + slot = "shield", }, { -- dragon shield itemid = 3416, type = "equip", - slot = "shield" + slot = "shield", }, { -- dragon shield itemid = 3416, type = "deequip", - slot = "shield" + slot = "shield", }, { -- guardian shield itemid = 3415, type = "equip", - slot = "shield" + slot = "shield", }, { -- guardian shield itemid = 3415, type = "deequip", - slot = "shield" + slot = "shield", }, { -- mastermind shield itemid = 3414, type = "equip", - slot = "shield" + slot = "shield", }, { -- mastermind shield itemid = 3414, type = "deequip", - slot = "shield" + slot = "shield", }, { -- battle shield itemid = 3413, type = "equip", - slot = "shield" + slot = "shield", }, { -- battle shield itemid = 3413, type = "deequip", - slot = "shield" + slot = "shield", }, { -- wooden shield itemid = 3412, type = "equip", - slot = "shield" + slot = "shield", }, { -- wooden shield itemid = 3412, type = "deequip", - slot = "shield" + slot = "shield", }, { -- brass shield itemid = 3411, type = "equip", - slot = "shield" + slot = "shield", }, { -- brass shield itemid = 3411, type = "deequip", - slot = "shield" + slot = "shield", }, { -- plate shield itemid = 3410, type = "equip", - slot = "shield" + slot = "shield", }, { -- plate shield itemid = 3410, type = "deequip", - slot = "shield" + slot = "shield", }, { -- steel shield itemid = 3409, type = "equip", - slot = "shield" + slot = "shield", }, { -- steel shield itemid = 3409, type = "deequip", - slot = "shield" + slot = "shield", }, { -- native armor itemid = 3402, type = "equip", - slot = "armor" + slot = "armor", }, { -- native armor itemid = 3402, type = "deequip", - slot = "armor" + slot = "armor", }, { -- elven legs itemid = 3401, type = "equip", - slot = "legs" + slot = "legs", }, { -- elven legs itemid = 3401, type = "deequip", - slot = "legs" + slot = "legs", }, { -- dragon scale helmet itemid = 3400, type = "equip", - slot = "head" + slot = "head", }, { -- dragon scale helmet itemid = 3400, type = "deequip", - slot = "head" + slot = "head", }, { -- elven mail itemid = 3399, type = "equip", - slot = "armor" + slot = "armor", }, { -- elven mail itemid = 3399, type = "deequip", - slot = "armor" + slot = "armor", }, { -- dwarven legs itemid = 3398, type = "equip", - slot = "legs" + slot = "legs", }, { -- dwarven legs itemid = 3398, type = "deequip", - slot = "legs" + slot = "legs", }, { -- dwarven armor itemid = 3397, type = "equip", - slot = "armor" + slot = "armor", }, { -- dwarven armor itemid = 3397, type = "deequip", - slot = "armor" + slot = "armor", }, { -- dwarven helmet itemid = 3396, type = "equip", - slot = "head" + slot = "head", }, { -- dwarven helmet itemid = 3396, type = "deequip", - slot = "head" + slot = "head", }, { -- ceremonial mask itemid = 3395, type = "equip", - slot = "head" + slot = "head", }, { -- ceremonial mask itemid = 3395, type = "deequip", - slot = "head" + slot = "head", }, { -- amazon armor @@ -15547,99 +15547,99 @@ local items = { level = 60, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- amazon armor itemid = 3394, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- amazon helmet itemid = 3393, type = "equip", - slot = "head" + slot = "head", }, { -- amazon helmet itemid = 3393, type = "deequip", - slot = "head" + slot = "head", }, { -- royal helmet itemid = 3392, type = "equip", - slot = "head" + slot = "head", }, { -- royal helmet itemid = 3392, type = "deequip", - slot = "head" + slot = "head", }, { -- crusader helmet itemid = 3391, type = "equip", - slot = "head" + slot = "head", }, { -- crusader helmet itemid = 3391, type = "deequip", - slot = "head" + slot = "head", }, { -- horned helmet itemid = 3390, type = "equip", - slot = "head" + slot = "head", }, { -- horned helmet itemid = 3390, type = "deequip", - slot = "head" + slot = "head", }, { -- demon legs itemid = 3389, type = "equip", - slot = "legs" + slot = "legs", }, { -- demon legs itemid = 3389, type = "deequip", - slot = "legs" + slot = "legs", }, { -- demon armor itemid = 3388, type = "equip", - slot = "armor" + slot = "armor", }, { -- demon armor itemid = 3388, type = "deequip", - slot = "armor" + slot = "armor", }, { -- demon helmet itemid = 3387, type = "equip", - slot = "head" + slot = "head", }, { -- demon helmet itemid = 3387, type = "deequip", - slot = "head" + slot = "head", }, { -- dragon scale mail @@ -15650,50 +15650,50 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- dragon scale mail itemid = 3386, type = "deequip", - slot = "armor" + slot = "armor", }, { -- crown helmet itemid = 3385, type = "equip", - slot = "head" + slot = "head", }, { -- crown helmet itemid = 3385, type = "deequip", - slot = "head" + slot = "head", }, { -- dark helmet itemid = 3384, type = "equip", - slot = "head" + slot = "head", }, { -- dark helmet itemid = 3384, type = "deequip", - slot = "head" + slot = "head", }, { -- dark armor itemid = 3383, type = "equip", - slot = "armor" + slot = "armor", }, { -- dark armor itemid = 3383, type = "deequip", - slot = "armor" + slot = "armor", }, { -- crown legs @@ -15704,14 +15704,14 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crown legs itemid = 3382, type = "deequip", - slot = "legs" + slot = "legs", }, { -- crown armor @@ -15722,122 +15722,122 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crown armor itemid = 3381, type = "deequip", - slot = "armor" + slot = "armor", }, { -- noble armor itemid = 3380, type = "equip", - slot = "armor" + slot = "armor", }, { -- noble armor itemid = 3380, type = "deequip", - slot = "armor" + slot = "armor", }, { -- doublet itemid = 3379, type = "equip", - slot = "armor" + slot = "armor", }, { -- doublet itemid = 3379, type = "deequip", - slot = "armor" + slot = "armor", }, { -- studded armor itemid = 3378, type = "equip", - slot = "armor" + slot = "armor", }, { -- studded armor itemid = 3378, type = "deequip", - slot = "armor" + slot = "armor", }, { -- scale armor itemid = 3377, type = "equip", - slot = "armor" + slot = "armor", }, { -- scale armor itemid = 3377, type = "deequip", - slot = "armor" + slot = "armor", }, { -- studded helmet itemid = 3376, type = "equip", - slot = "head" + slot = "head", }, { -- studded helmet itemid = 3376, type = "deequip", - slot = "head" + slot = "head", }, { -- soldier helmet itemid = 3375, type = "equip", - slot = "head" + slot = "head", }, { -- soldier helmet itemid = 3375, type = "deequip", - slot = "head" + slot = "head", }, { -- legion helmet itemid = 3374, type = "equip", - slot = "head" + slot = "head", }, { -- legion helmet itemid = 3374, type = "deequip", - slot = "head" + slot = "head", }, { -- strange helmet itemid = 3373, type = "equip", - slot = "head" + slot = "head", }, { -- strange helmet itemid = 3373, type = "deequip", - slot = "head" + slot = "head", }, { -- brass legs itemid = 3372, type = "equip", - slot = "legs" + slot = "legs", }, { -- brass legs itemid = 3372, type = "deequip", - slot = "legs" + slot = "legs", }, { -- knight legs @@ -15848,14 +15848,14 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- knight legs itemid = 3371, type = "deequip", - slot = "legs" + slot = "legs", }, { -- knight armor @@ -15866,50 +15866,50 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- knight armor itemid = 3370, type = "deequip", - slot = "armor" + slot = "armor", }, { -- warrior helmet itemid = 3369, type = "equip", - slot = "head" + slot = "head", }, { -- warrior helmet itemid = 3369, type = "deequip", - slot = "head" + slot = "head", }, { -- winged helmet itemid = 3368, type = "equip", - slot = "head" + slot = "head", }, { -- winged helmet itemid = 3368, type = "deequip", - slot = "head" + slot = "head", }, { -- viking helmet itemid = 3367, type = "equip", - slot = "head" + slot = "head", }, { -- viking helmet itemid = 3367, type = "deequip", - slot = "head" + slot = "head", }, { -- magic plate armor @@ -15920,26 +15920,26 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- magic plate armor itemid = 3366, type = "deequip", - slot = "armor" + slot = "armor", }, { -- golden helmet itemid = 3365, type = "equip", - slot = "head" + slot = "head", }, { -- golden helmet itemid = 3365, type = "deequip", - slot = "head" + slot = "head", }, { -- golden legs @@ -15950,50 +15950,50 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- golden legs itemid = 3364, type = "deequip", - slot = "legs" + slot = "legs", }, { -- dragon scale legs itemid = 3363, type = "equip", - slot = "legs" + slot = "legs", }, { -- dragon scale legs itemid = 3363, type = "deequip", - slot = "legs" + slot = "legs", }, { -- studded legs itemid = 3362, type = "equip", - slot = "legs" + slot = "legs", }, { -- studded legs itemid = 3362, type = "deequip", - slot = "legs" + slot = "legs", }, { -- leather armor itemid = 3361, type = "equip", - slot = "armor" + slot = "armor", }, { -- leather armor itemid = 3361, type = "deequip", - slot = "armor" + slot = "armor", }, { -- golden armor @@ -16004,1166 +16004,1166 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- golden armor itemid = 3360, type = "deequip", - slot = "armor" + slot = "armor", }, { -- brass armor itemid = 3359, type = "equip", - slot = "armor" + slot = "armor", }, { -- brass armor itemid = 3359, type = "deequip", - slot = "armor" + slot = "armor", }, { -- chain armor itemid = 3358, type = "equip", - slot = "armor" + slot = "armor", }, { -- chain armor itemid = 3358, type = "deequip", - slot = "armor" + slot = "armor", }, { -- plate armor itemid = 3357, type = "equip", - slot = "armor" + slot = "armor", }, { -- plate armor itemid = 3357, type = "deequip", - slot = "armor" + slot = "armor", }, { -- devil helmet itemid = 3356, type = "equip", - slot = "head" + slot = "head", }, { -- devil helmet itemid = 3356, type = "deequip", - slot = "head" + slot = "head", }, { -- leather helmet itemid = 3355, type = "equip", - slot = "head" + slot = "head", }, { -- leather helmet itemid = 3355, type = "deequip", - slot = "head" + slot = "head", }, { -- brass helmet itemid = 3354, type = "equip", - slot = "head" + slot = "head", }, { -- brass helmet itemid = 3354, type = "deequip", - slot = "head" + slot = "head", }, { -- iron helmet itemid = 3353, type = "equip", - slot = "head" + slot = "head", }, { -- iron helmet itemid = 3353, type = "deequip", - slot = "head" + slot = "head", }, { -- chain helmet itemid = 3352, type = "equip", - slot = "head" + slot = "head", }, { -- chain helmet itemid = 3352, type = "deequip", - slot = "head" + slot = "head", }, { -- steel helmet itemid = 3351, type = "equip", - slot = "head" + slot = "head", }, { -- steel helmet itemid = 3351, type = "deequip", - slot = "head" + slot = "head", }, { -- bow itemid = 3350, type = "equip", - slot = "hand" + slot = "hand", }, { -- bow itemid = 3350, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crossbow itemid = 3349, type = "equip", - slot = "hand" + slot = "hand", }, { -- crossbow itemid = 3349, type = "deequip", - slot = "hand" + slot = "hand", }, { -- war axe itemid = 3342, type = "equip", - slot = "hand" + slot = "hand", }, { -- war axe itemid = 3342, type = "deequip", - slot = "hand" + slot = "hand", }, { -- arcane staff itemid = 3341, type = "equip", - slot = "hand" + slot = "hand", }, { -- arcane staff itemid = 3341, type = "deequip", - slot = "hand" + slot = "hand", }, { -- heavy mace itemid = 3340, type = "equip", - slot = "hand" + slot = "hand", }, { -- heavy mace itemid = 3340, type = "deequip", - slot = "hand" + slot = "hand", }, { -- djinn blade itemid = 3339, type = "equip", - slot = "hand" + slot = "hand", }, { -- djinn blade itemid = 3339, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bone sword itemid = 3338, type = "equip", - slot = "hand" + slot = "hand", }, { -- bone sword itemid = 3338, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bone club itemid = 3337, type = "equip", - slot = "hand" + slot = "hand", }, { -- bone club itemid = 3337, type = "deequip", - slot = "hand" + slot = "hand", }, { -- studded club itemid = 3336, type = "equip", - slot = "hand" + slot = "hand", }, { -- studded club itemid = 3336, type = "deequip", - slot = "hand" + slot = "hand", }, { -- twin axe itemid = 3335, type = "equip", - slot = "hand" + slot = "hand", }, { -- twin axe itemid = 3335, type = "deequip", - slot = "hand" + slot = "hand", }, { -- pharaoh sword itemid = 3334, type = "equip", - slot = "hand" + slot = "hand", }, { -- pharaoh sword itemid = 3334, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crystal mace itemid = 3333, type = "equip", - slot = "hand" + slot = "hand", }, { -- crystal mace itemid = 3333, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hammer of wrath itemid = 3332, type = "equip", - slot = "hand" + slot = "hand", }, { -- hammer of wrath itemid = 3332, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ravager's axe itemid = 3331, type = "equip", - slot = "hand" + slot = "hand", }, { -- ravager's axe itemid = 3331, type = "deequip", - slot = "hand" + slot = "hand", }, { -- heavy machete itemid = 3330, type = "equip", - slot = "hand" + slot = "hand", }, { -- heavy machete itemid = 3330, type = "deequip", - slot = "hand" + slot = "hand", }, { -- daramian axe itemid = 3329, type = "equip", - slot = "hand" + slot = "hand", }, { -- daramian axe itemid = 3329, type = "deequip", - slot = "hand" + slot = "hand", }, { -- daramian waraxe itemid = 3328, type = "equip", - slot = "hand" + slot = "hand", }, { -- daramian waraxe itemid = 3328, type = "deequip", - slot = "hand" + slot = "hand", }, { -- daramian mace itemid = 3327, type = "equip", - slot = "hand" + slot = "hand", }, { -- daramian mace itemid = 3327, type = "deequip", - slot = "hand" + slot = "hand", }, { -- epee itemid = 3326, type = "equip", - slot = "hand" + slot = "hand", }, { -- epee itemid = 3326, type = "deequip", - slot = "hand" + slot = "hand", }, { -- light mace itemid = 3325, type = "equip", - slot = "hand" + slot = "hand", }, { -- light mace itemid = 3325, type = "deequip", - slot = "hand" + slot = "hand", }, { -- skull staff itemid = 3324, type = "equip", - slot = "hand" + slot = "hand", }, { -- skull staff itemid = 3324, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dwarven axe itemid = 3323, type = "equip", - slot = "hand" + slot = "hand", }, { -- dwarven axe itemid = 3323, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dragon hammer itemid = 3322, type = "equip", - slot = "hand" + slot = "hand", }, { -- dragon hammer itemid = 3322, type = "deequip", - slot = "hand" + slot = "hand", }, { -- enchanted staff itemid = 3321, type = "equip", - slot = "hand" + slot = "hand", }, { -- enchanted staff itemid = 3321, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fire axe itemid = 3320, type = "equip", - slot = "hand" + slot = "hand", }, { -- fire axe itemid = 3320, type = "deequip", - slot = "hand" + slot = "hand", }, { -- stonecutter axe itemid = 3319, type = "equip", - slot = "hand" + slot = "hand", }, { -- stonecutter axe itemid = 3319, type = "deequip", - slot = "hand" + slot = "hand", }, { -- knight axe itemid = 3318, type = "equip", - slot = "hand" + slot = "hand", }, { -- knight axe itemid = 3318, type = "deequip", - slot = "hand" + slot = "hand", }, { -- barbarian axe itemid = 3317, type = "equip", - slot = "hand" + slot = "hand", }, { -- barbarian axe itemid = 3317, type = "deequip", - slot = "hand" + slot = "hand", }, { -- orcish axe itemid = 3316, type = "equip", - slot = "hand" + slot = "hand", }, { -- orcish axe itemid = 3316, type = "deequip", - slot = "hand" + slot = "hand", }, { -- guardian halberd itemid = 3315, type = "equip", - slot = "hand" + slot = "hand", }, { -- guardian halberd itemid = 3315, type = "deequip", - slot = "hand" + slot = "hand", }, { -- naginata itemid = 3314, type = "equip", - slot = "hand" + slot = "hand", }, { -- naginata itemid = 3314, type = "deequip", - slot = "hand" + slot = "hand", }, { -- obsidian lance itemid = 3313, type = "equip", - slot = "hand" + slot = "hand", }, { -- obsidian lance itemid = 3313, type = "deequip", - slot = "hand" + slot = "hand", }, { -- silver mace itemid = 3312, type = "equip", - slot = "hand" + slot = "hand", }, { -- silver mace itemid = 3312, type = "deequip", - slot = "hand" + slot = "hand", }, { -- clerical mace itemid = 3311, type = "equip", - slot = "hand" + slot = "hand", }, { -- clerical mace itemid = 3311, type = "deequip", - slot = "hand" + slot = "hand", }, { -- iron hammer itemid = 3310, type = "equip", - slot = "hand" + slot = "hand", }, { -- iron hammer itemid = 3310, type = "deequip", - slot = "hand" + slot = "hand", }, { -- thunder hammer itemid = 3309, type = "equip", - slot = "hand" + slot = "hand", }, { -- thunder hammer itemid = 3309, type = "deequip", - slot = "hand" + slot = "hand", }, { -- machete itemid = 3308, type = "equip", - slot = "hand" + slot = "hand", }, { -- machete itemid = 3308, type = "deequip", - slot = "hand" + slot = "hand", }, { -- scimitar itemid = 3307, type = "equip", - slot = "hand" + slot = "hand", }, { -- scimitar itemid = 3307, type = "deequip", - slot = "hand" + slot = "hand", }, { -- golden sickle itemid = 3306, type = "equip", - slot = "hand" + slot = "hand", }, { -- golden sickle itemid = 3306, type = "deequip", - slot = "hand" + slot = "hand", }, { -- battle hammer itemid = 3305, type = "equip", - slot = "hand" + slot = "hand", }, { -- battle hammer itemid = 3305, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crowbar itemid = 3304, type = "equip", - slot = "hand" + slot = "hand", }, { -- crowbar itemid = 3304, type = "deequip", - slot = "hand" + slot = "hand", }, { -- great axe itemid = 3303, type = "equip", - slot = "hand" + slot = "hand", }, { -- great axe itemid = 3303, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dragon lance itemid = 3302, type = "equip", - slot = "hand" + slot = "hand", }, { -- dragon lance itemid = 3302, type = "deequip", - slot = "hand" + slot = "hand", }, { -- broadsword itemid = 3301, type = "equip", - slot = "hand" + slot = "hand", }, { -- broadsword itemid = 3301, type = "deequip", - slot = "hand" + slot = "hand", }, { -- katana itemid = 3300, type = "equip", - slot = "hand" + slot = "hand", }, { -- katana itemid = 3300, type = "deequip", - slot = "hand" + slot = "hand", }, { -- poison dagger itemid = 3299, type = "equip", - slot = "hand" + slot = "hand", }, { -- poison dagger itemid = 3299, type = "deequip", - slot = "hand" + slot = "hand", }, { -- throwing knife itemid = 3298, type = "equip", - slot = "hand" + slot = "hand", }, { -- throwing knife itemid = 3298, type = "deequip", - slot = "hand" + slot = "hand", }, { -- serpent sword itemid = 3297, type = "equip", - slot = "hand" + slot = "hand", }, { -- serpent sword itemid = 3297, type = "deequip", - slot = "hand" + slot = "hand", }, { -- warlord sword itemid = 3296, type = "equip", - slot = "hand" + slot = "hand", }, { -- warlord sword itemid = 3296, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bright sword itemid = 3295, type = "equip", - slot = "hand" + slot = "hand", }, { -- bright sword itemid = 3295, type = "deequip", - slot = "hand" + slot = "hand", }, { -- short sword itemid = 3294, type = "equip", - slot = "hand" + slot = "hand", }, { -- short sword itemid = 3294, type = "deequip", - slot = "hand" + slot = "hand", }, { -- sickle itemid = 3293, type = "equip", - slot = "hand" + slot = "hand", }, { -- sickle itemid = 3293, type = "deequip", - slot = "hand" + slot = "hand", }, { -- combat knife itemid = 3292, type = "equip", - slot = "hand" + slot = "hand", }, { -- combat knife itemid = 3292, type = "deequip", - slot = "hand" + slot = "hand", }, { -- knife itemid = 3291, type = "equip", - slot = "hand" + slot = "hand", }, { -- knife itemid = 3291, type = "deequip", - slot = "hand" + slot = "hand", }, { -- silver dagger itemid = 3290, type = "equip", - slot = "hand" + slot = "hand", }, { -- silver dagger itemid = 3290, type = "deequip", - slot = "hand" + slot = "hand", }, { -- staff itemid = 3289, type = "equip", - slot = "hand" + slot = "hand", }, { -- staff itemid = 3289, type = "deequip", - slot = "hand" + slot = "hand", }, { -- magic sword itemid = 3288, type = "equip", - slot = "hand" + slot = "hand", }, { -- magic sword itemid = 3288, type = "deequip", - slot = "hand" + slot = "hand", }, { -- throwing star itemid = 3287, type = "equip", - slot = "hand" + slot = "hand", }, { -- throwing star itemid = 3287, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mace itemid = 3286, type = "equip", - slot = "hand" + slot = "hand", }, { -- mace itemid = 3286, type = "deequip", - slot = "hand" + slot = "hand", }, { -- longsword itemid = 3285, type = "equip", - slot = "hand" + slot = "hand", }, { -- longsword itemid = 3285, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ice rapier itemid = 3284, type = "equip", - slot = "hand" + slot = "hand", }, { -- ice rapier itemid = 3284, type = "deequip", - slot = "hand" + slot = "hand", }, { -- carlin sword itemid = 3283, type = "equip", - slot = "hand" + slot = "hand", }, { -- carlin sword itemid = 3283, type = "deequip", - slot = "hand" + slot = "hand", }, { -- morning star itemid = 3282, type = "equip", - slot = "hand" + slot = "hand", }, { -- morning star itemid = 3282, type = "deequip", - slot = "hand" + slot = "hand", }, { -- giant sword itemid = 3281, type = "equip", - slot = "hand" + slot = "hand", }, { -- giant sword itemid = 3281, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fire sword itemid = 3280, type = "equip", - slot = "hand" + slot = "hand", }, { -- fire sword itemid = 3280, type = "deequip", - slot = "hand" + slot = "hand", }, { -- war hammer itemid = 3279, type = "equip", - slot = "hand" + slot = "hand", }, { -- war hammer itemid = 3279, type = "deequip", - slot = "hand" + slot = "hand", }, { -- magic longsword itemid = 3278, type = "equip", - slot = "hand" + slot = "hand", }, { -- magic longsword itemid = 3278, type = "deequip", - slot = "hand" + slot = "hand", }, { -- spear itemid = 3277, type = "equip", - slot = "hand" + slot = "hand", }, { -- spear itemid = 3277, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hatchet itemid = 3276, type = "equip", - slot = "hand" + slot = "hand", }, { -- hatchet itemid = 3276, type = "deequip", - slot = "hand" + slot = "hand", }, { -- double axe itemid = 3275, type = "equip", - slot = "hand" + slot = "hand", }, { -- double axe itemid = 3275, type = "deequip", - slot = "hand" + slot = "hand", }, { -- axe itemid = 3274, type = "equip", - slot = "hand" + slot = "hand", }, { -- axe itemid = 3274, type = "deequip", - slot = "hand" + slot = "hand", }, { -- sabre itemid = 3273, type = "equip", - slot = "hand" + slot = "hand", }, { -- sabre itemid = 3273, type = "deequip", - slot = "hand" + slot = "hand", }, { -- rapier itemid = 3272, type = "equip", - slot = "hand" + slot = "hand", }, { -- rapier itemid = 3272, type = "deequip", - slot = "hand" + slot = "hand", }, { -- spike sword itemid = 3271, type = "equip", - slot = "hand" + slot = "hand", }, { -- spike sword itemid = 3271, type = "deequip", - slot = "hand" + slot = "hand", }, { -- club itemid = 3270, type = "equip", - slot = "hand" + slot = "hand", }, { -- club itemid = 3270, type = "deequip", - slot = "hand" + slot = "hand", }, { -- halberd itemid = 3269, type = "equip", - slot = "hand" + slot = "hand", }, { -- halberd itemid = 3269, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hand axe itemid = 3268, type = "equip", - slot = "hand" + slot = "hand", }, { -- hand axe itemid = 3268, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dagger itemid = 3267, type = "equip", - slot = "hand" + slot = "hand", }, { -- dagger itemid = 3267, type = "deequip", - slot = "hand" + slot = "hand", }, { -- battle axe itemid = 3266, type = "equip", - slot = "hand" + slot = "hand", }, { -- battle axe itemid = 3266, type = "deequip", - slot = "hand" + slot = "hand", }, { -- two handed sword itemid = 3265, type = "equip", - slot = "hand" + slot = "hand", }, { -- two handed sword itemid = 3265, type = "deequip", - slot = "hand" + slot = "hand", }, { -- sword itemid = 3264, type = "equip", - slot = "hand" + slot = "hand", }, { -- sword itemid = 3264, type = "deequip", - slot = "hand" + slot = "hand", }, { -- backpack of holding itemid = 3253, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- backpack of holding itemid = 3253, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- boots of waterwalking itemid = 3246, type = "equip", - slot = "feet" + slot = "feet", }, { -- boots of waterwalking itemid = 3246, type = "deequip", - slot = "feet" + slot = "feet", }, { -- ring of wishes itemid = 3245, type = "equip", - slot = "ring" + slot = "ring", }, { -- ring of wishes itemid = 3245, type = "deequip", - slot = "ring" + slot = "ring", }, { -- helmet of the ancients itemid = 3230, type = "equip", - slot = "head" + slot = "head", }, { -- helmet of the ancients itemid = 3230, type = "deequip", - slot = "head" + slot = "head", }, { -- helmet of the ancients itemid = 3229, type = "equip", - slot = "head" + slot = "head", }, { -- helmet of the ancients itemid = 3229, type = "deequip", - slot = "head" + slot = "head", }, { -- damaged helmet itemid = 3226, type = "equip", - slot = "head" + slot = "head", }, { -- damaged helmet itemid = 3226, type = "deequip", - slot = "head" + slot = "head", }, { -- hat of the mad @@ -17174,302 +17174,302 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- hat of the mad itemid = 3210, type = "deequip", - slot = "head" + slot = "head", }, { -- giant smithhammer itemid = 12510, type = "equip", - slot = "hand" + slot = "hand", }, { -- giant smithhammer itemid = 12510, type = "deequip", - slot = "hand" + slot = "hand", }, { -- paw amulet itemid = 3102, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- paw amulet itemid = 3102, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- ring of healing itemid = 3100, type = "equip", - slot = "ring" + slot = "ring", }, { -- ring of healing itemid = 3100, type = "deequip", - slot = "ring" + slot = "ring", }, { -- dwarven ring itemid = 3099, type = "equip", - slot = "ring" + slot = "ring", }, { -- dwarven ring itemid = 3099, type = "deequip", - slot = "ring" + slot = "ring", }, { -- ring of healing itemid = 3098, type = "equip", - slot = "ring" + slot = "ring", }, { -- ring of healing itemid = 3098, type = "deequip", - slot = "ring" + slot = "ring", }, { -- dwarven ring itemid = 3097, type = "equip", - slot = "ring" + slot = "ring", }, { -- dwarven ring itemid = 3097, type = "deequip", - slot = "ring" + slot = "ring", }, { -- club ring itemid = 3096, type = "equip", - slot = "ring" + slot = "ring", }, { -- club ring itemid = 3096, type = "deequip", - slot = "ring" + slot = "ring", }, { -- axe ring itemid = 3095, type = "equip", - slot = "ring" + slot = "ring", }, { -- axe ring itemid = 3095, type = "deequip", - slot = "ring" + slot = "ring", }, { -- sword ring itemid = 3094, type = "equip", - slot = "ring" + slot = "ring", }, { -- sword ring itemid = 3094, type = "deequip", - slot = "ring" + slot = "ring", }, { -- club ring itemid = 3093, type = "equip", - slot = "ring" + slot = "ring", }, { -- club ring itemid = 3093, type = "deequip", - slot = "ring" + slot = "ring", }, { -- axe ring itemid = 3092, type = "equip", - slot = "ring" + slot = "ring", }, { -- axe ring itemid = 3092, type = "deequip", - slot = "ring" + slot = "ring", }, { -- sword ring itemid = 3091, type = "equip", - slot = "ring" + slot = "ring", }, { -- sword ring itemid = 3091, type = "deequip", - slot = "ring" + slot = "ring", }, { -- time ring itemid = 3090, type = "equip", - slot = "ring" + slot = "ring", }, { -- time ring itemid = 3090, type = "deequip", - slot = "ring" + slot = "ring", }, { -- life ring itemid = 3089, type = "equip", - slot = "ring" + slot = "ring", }, { -- life ring itemid = 3089, type = "deequip", - slot = "ring" + slot = "ring", }, { -- energy ring itemid = 3088, type = "equip", - slot = "ring" + slot = "ring", }, { -- energy ring itemid = 3088, type = "deequip", - slot = "ring" + slot = "ring", }, { -- power ring itemid = 3087, type = "equip", - slot = "ring" + slot = "ring", }, { -- power ring itemid = 3087, type = "deequip", - slot = "ring" + slot = "ring", }, { -- stealth ring itemid = 3086, type = "equip", - slot = "ring" + slot = "ring", }, { -- stealth ring itemid = 3086, type = "deequip", - slot = "ring" + slot = "ring", }, { -- dragon necklace itemid = 3085, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- dragon necklace itemid = 3085, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- protection amulet itemid = 3084, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- protection amulet itemid = 3084, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- garlic necklace itemid = 3083, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- garlic necklace itemid = 3083, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- elven amulet itemid = 3082, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- elven amulet itemid = 3082, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- stone skin amulet itemid = 3081, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- stone skin amulet itemid = 3081, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- amulet of life itemid = 3080, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- amulet of life itemid = 3080, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- boots of haste itemid = 3079, type = "equip", - slot = "feet" + slot = "feet", }, { -- boots of haste itemid = 3079, type = "deequip", - slot = "feet" + slot = "feet", }, { -- wand of dragonbreath @@ -17479,15 +17479,15 @@ local items = { level = 13, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of dragonbreath itemid = 3075, type = "deequip", slot = "hand", - level = 13 + level = 13, }, { -- wand of vortex @@ -17497,15 +17497,15 @@ local items = { level = 6, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of vortex itemid = 3074, type = "deequip", slot = "hand", - level = 6 + level = 6, }, { -- wand of cosmic energy @@ -17515,15 +17515,15 @@ local items = { level = 26, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of cosmic energy itemid = 3073, type = "deequip", slot = "hand", - level = 26 + level = 26, }, { -- wand of decay @@ -17533,15 +17533,15 @@ local items = { level = 19, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of decay itemid = 3072, type = "deequip", slot = "hand", - level = 19 + level = 19, }, { -- wand of inferno @@ -17551,15 +17551,15 @@ local items = { level = 33, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of inferno itemid = 3071, type = "deequip", slot = "hand", - level = 33 + level = 33, }, { -- moonlight rod @@ -17569,15 +17569,15 @@ local items = { level = 13, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- moonlight rod itemid = 3070, type = "deequip", slot = "hand", - level = 13 + level = 13, }, { -- necrotic rod @@ -17587,15 +17587,15 @@ local items = { level = 19, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- necrotic rod itemid = 3069, type = "deequip", slot = "hand", - level = 19 + level = 19, }, { -- hailstorm rod @@ -17605,15 +17605,15 @@ local items = { level = 33, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- hailstorm rod itemid = 3067, type = "deequip", slot = "hand", - level = 33 + level = 33, }, { -- snakebit rod @@ -17623,15 +17623,15 @@ local items = { level = 6, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- snakebit rod itemid = 3066, type = "deequip", slot = "hand", - level = 6 + level = 6, }, { -- terra rod @@ -17641,27 +17641,27 @@ local items = { level = 26, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- terra rod itemid = 3065, type = "deequip", slot = "hand", - level = 26 + level = 26, }, { -- gold ring itemid = 3063, type = "equip", - slot = "ring" + slot = "ring", }, { -- gold ring itemid = 3063, type = "deequip", - slot = "ring" + slot = "ring", }, { -- spellbook @@ -17672,811 +17672,811 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook itemid = 3059, type = "deequip", - slot = "shield" + slot = "shield", }, { -- amulet of loss itemid = 3057, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- amulet of loss itemid = 3057, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- bronze amulet itemid = 3056, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- bronze amulet itemid = 3056, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- platinum amulet itemid = 3055, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- platinum amulet itemid = 3055, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- silver amulet itemid = 3054, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- silver amulet itemid = 3054, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- time ring itemid = 3053, type = "equip", - slot = "ring" + slot = "ring", }, { -- time ring itemid = 3053, type = "deequip", - slot = "ring" + slot = "ring", }, { -- life ring itemid = 3052, type = "equip", - slot = "ring" + slot = "ring", }, { -- life ring itemid = 3052, type = "deequip", - slot = "ring" + slot = "ring", }, { -- energy ring itemid = 3051, type = "equip", - slot = "ring" + slot = "ring", }, { -- energy ring itemid = 3051, type = "deequip", - slot = "ring" + slot = "ring", }, { -- power ring itemid = 3050, type = "equip", - slot = "ring" + slot = "ring", }, { -- power ring itemid = 3050, type = "deequip", - slot = "ring" + slot = "ring", }, { -- stealth ring itemid = 3049, type = "equip", - slot = "ring" + slot = "ring", }, { -- stealth ring itemid = 3049, type = "deequip", - slot = "ring" + slot = "ring", }, { -- might ring itemid = 3048, type = "equip", - slot = "ring" + slot = "ring", }, { -- might ring itemid = 3048, type = "deequip", - slot = "ring" + slot = "ring", }, { -- strange talisman itemid = 3045, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- strange talisman itemid = 3045, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- ancient amulet itemid = 3025, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- ancient amulet itemid = 3025, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- ancient tiara itemid = 3022, type = "equip", - slot = "head" + slot = "head", }, { -- ancient tiara itemid = 3022, type = "deequip", - slot = "head" + slot = "head", }, { -- sapphire amulet itemid = 3021, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- sapphire amulet itemid = 3021, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- demonbone amulet itemid = 3019, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- demonbone amulet itemid = 3019, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- scarab amulet itemid = 3018, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- scarab amulet itemid = 3018, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- ruby necklace itemid = 3016, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- ruby necklace itemid = 3016, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- silver necklace itemid = 3015, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- silver necklace itemid = 3015, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- star amulet itemid = 3014, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- star amulet itemid = 3014, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- golden amulet itemid = 3013, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- golden amulet itemid = 3013, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- wolf tooth chain itemid = 3012, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- wolf tooth chain itemid = 3012, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- crown itemid = 3011, type = "equip", - slot = "head" + slot = "head", }, { -- crown itemid = 3011, type = "deequip", - slot = "head" + slot = "head", }, { -- bronze necklace itemid = 3009, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- bronze necklace itemid = 3009, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- crystal necklace itemid = 3008, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- crystal necklace itemid = 3008, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- crystal ring itemid = 3007, type = "equip", - slot = "ring" + slot = "ring", }, { -- crystal ring itemid = 3007, type = "deequip", - slot = "ring" + slot = "ring", }, { -- ring of the sky itemid = 3006, type = "equip", - slot = "ring" + slot = "ring", }, { -- ring of the sky itemid = 3006, type = "deequip", - slot = "ring" + slot = "ring", }, { -- wedding ring itemid = 3004, type = "equip", - slot = "ring" + slot = "ring", }, { -- wedding ring itemid = 3004, type = "deequip", - slot = "ring" + slot = "ring", }, { -- snowball itemid = 2992, type = "equip", - slot = "hand" + slot = "hand", }, { -- snowball itemid = 2992, type = "deequip", - slot = "hand" + slot = "hand", }, { -- golden backpack itemid = 2871, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- golden backpack itemid = 2871, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- grey backpack itemid = 2870, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- grey backpack itemid = 2870, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- blue backpack itemid = 2869, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- blue backpack itemid = 2869, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- purple backpack itemid = 2868, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- purple backpack itemid = 2868, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- red backpack itemid = 2867, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- red backpack itemid = 2867, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- yellow backpack itemid = 2866, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- yellow backpack itemid = 2866, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- green backpack itemid = 2865, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- green backpack itemid = 2865, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- golden bag itemid = 2863, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- golden bag itemid = 2863, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- grey bag itemid = 2862, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- grey bag itemid = 2862, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- blue bag itemid = 2861, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- blue bag itemid = 2861, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- purple bag itemid = 2860, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- purple bag itemid = 2860, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- red bag itemid = 2859, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- red bag itemid = 2859, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- yellow bag itemid = 2858, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- yellow bag itemid = 2858, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- green bag itemid = 2857, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- green bag itemid = 2857, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- backpack itemid = 2854, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- backpack itemid = 2854, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- bag itemid = 2853, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- bag itemid = 2853, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- searing fire itemid = 2138, - type = "stepin" + type = "stepin", }, { -- searing fire itemid = 2138, - type = "additem" + type = "additem", }, { -- searing fire itemid = 2137, - type = "stepin" + type = "stepin", }, { -- searing fire itemid = 2137, - type = "additem" + type = "additem", }, { -- smoke itemid = 2136, - type = "stepin" + type = "stepin", }, { -- smoke itemid = 2136, - type = "additem" + type = "additem", }, { -- energy field itemid = 2135, - type = "stepin" + type = "stepin", }, { -- energy field itemid = 2135, - type = "additem" + type = "additem", }, { -- poison gas itemid = 2134, - type = "stepin" + type = "stepin", }, { -- poison gas itemid = 2134, - type = "additem" + type = "additem", }, { -- fire field itemid = 2133, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2133, - type = "additem" + type = "additem", }, { -- fire field itemid = 2132, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2132, - type = "additem" + type = "additem", }, { -- fire field itemid = 21465, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 21465, - type = "additem" + type = "additem", }, { -- rush wood itemid = 2130, - type = "stepin" + type = "stepin", }, { -- rush wood itemid = 2130, - type = "additem" + type = "additem", }, { -- magic wall itemid = 2129, - type = "stepin" + type = "stepin", }, { -- magic wall itemid = 2129, - type = "additem" + type = "additem", }, { -- magic wall itemid = 2128, - type = "stepin" + type = "stepin", }, { -- magic wall itemid = 2128, - type = "additem" + type = "additem", }, { -- poison field itemid = 2121, - type = "stepin" + type = "stepin", }, { -- poison field itemid = 2121, - type = "additem" + type = "additem", }, { -- energy field itemid = 2126, - type = "stepin" + type = "stepin", }, { -- energy field itemid = 2126, - type = "additem" + type = "additem", }, { -- fire field itemid = 2125, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2125, - type = "additem" + type = "additem", }, { -- fire field itemid = 2124, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2124, - type = "additem" + type = "additem", }, { -- fire field itemid = 2123, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2123, - type = "additem" + type = "additem", }, { -- energy field itemid = 2122, - type = "stepin" + type = "stepin", }, { -- energy field itemid = 2122, - type = "additem" + type = "additem", }, { -- poison field itemid = 105, - type = "stepin" + type = "stepin", }, { -- poison field itemid = 105, - type = "additem" + type = "additem", }, { -- fire field itemid = 2120, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2120, - type = "additem" + type = "additem", }, { -- fire field itemid = 2119, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2119, - type = "additem" + type = "additem", }, { -- fire field itemid = 2118, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2118, - type = "additem" + type = "additem", }, { -- campfire itemid = 2000, - type = "stepin" + type = "stepin", }, { -- campfire itemid = 2000, - type = "additem" + type = "additem", }, { -- campfire itemid = 1999, - type = "stepin" + type = "stepin", }, { -- campfire itemid = 1999, - type = "additem" + type = "additem", }, { -- campfire itemid = 1998, - type = "stepin" + type = "stepin", }, { -- campfire itemid = 1998, - type = "additem" + type = "additem", }, { -- small stone itemid = 1781, type = "equip", - slot = "hand" + slot = "hand", }, { -- small stone itemid = 1781, type = "deequip", - slot = "hand" - } + slot = "hand", + }, } for _, i in ipairs(items) do local movement = MoveEvent() movement:id(i.itemid) - if (i.type) then + if i.type then movement:type(i.type) end - if (i.slot) then + if i.slot then movement:slot(i.slot) end - if (i.level) then + if i.level then movement:level(i.level) end - if (i.vocation) then + if i.vocation then for _, v in ipairs(i.vocation) do movement:vocation(v[1], v[2] or false, v[3] or false) end diff --git a/data-canary/scripts/movements/walkback.lua b/data-canary/scripts/movements/walkback.lua index 4e58e51aa2e..a265f262b62 100644 --- a/data-canary/scripts/movements/walkback.lua +++ b/data-canary/scripts/movements/walkback.lua @@ -8,6 +8,5 @@ function walkback.onStepIn(creature, item, position, fromPosition) return true end -walkback:id(2469, 2471, 2472, 2473, 2478, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 5674, 5675, 7160, 7161, - 25229, 25230, 25231, 25232, 26164, 26165, 26166, 26167, 28938, 28939, 28940, 28941) +walkback:id(2469, 2471, 2472, 2473, 2478, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 5674, 5675, 7160, 7161, 25229, 25230, 25231, 25232, 26164, 26165, 26166, 26167, 28938, 28939, 28940, 28941) walkback:register() diff --git a/data-canary/scripts/reward_chest/boss_death.lua b/data-canary/scripts/reward_chest/boss_death.lua index 624d9c3f19a..3d7c8b7c31d 100644 --- a/data-canary/scripts/reward_chest/boss_death.lua +++ b/data-canary/scripts/reward_chest/boss_death.lua @@ -49,7 +49,9 @@ function bossDeath.onDeath(creature, corpse, killer, mostDamageKiller, lastHitUn participants = participants + 1 end end - table.sort(scores, function(a, b) return a.score > b.score end) + table.sort(scores, function(a, b) + return a.score > b.score + end) local expectedScore = 1 / participants diff --git a/data-canary/scripts/reward_chest/reward_chest.lua b/data-canary/scripts/reward_chest/reward_chest.lua index 174454a42d5..d7724ca0b32 100644 --- a/data-canary/scripts/reward_chest/reward_chest.lua +++ b/data-canary/scripts/reward_chest/reward_chest.lua @@ -1,7 +1,6 @@ local chest = Action() -function chest.onUse(player, item, fromPosition, target, toPosition, isHotkey) -end +function chest.onUse(player, item, fromPosition, target, toPosition, isHotkey) end -- Create reward chest in the Montag temple chest:position({ x = 5003, y = 4996, z = 7 }, 19250) diff --git a/data-canary/scripts/spells/attack/annihilation.lua b/data-canary/scripts/spells/attack/annihilation.lua index 0d3f4642690..5b9f7bc7f5b 100644 --- a/data-canary/scripts/spells/attack/annihilation.lua +++ b/data-canary/scripts/spells/attack/annihilation.lua @@ -8,7 +8,7 @@ combat:setParameter(COMBAT_PARAM_USECHARGES, 1) function onGetFormulaValues(player, skill, attack, factor) local skillTotal = skill * attack local levelTotal = player:getLevel() / 5 - return -(((skillTotal * 0.17) + 13) + (levelTotal)) * 1.28, -(((skillTotal * 0.20) + 34) + (levelTotal)) * 1.28 -- TODO : Use New Real Formula instead of an % + return -(((skillTotal * 0.17) + 13) + levelTotal) * 1.28, -(((skillTotal * 0.20) + 34) + levelTotal) * 1.28 -- TODO : Use New Real Formula instead of an % end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") diff --git a/data-canary/scripts/spells/attack/brutal_strike.lua b/data-canary/scripts/spells/attack/brutal_strike.lua index c297ffd36d9..e2e8033617a 100644 --- a/data-canary/scripts/spells/attack/brutal_strike.lua +++ b/data-canary/scripts/spells/attack/brutal_strike.lua @@ -8,7 +8,7 @@ combat:setParameter(COMBAT_PARAM_USECHARGES, 1) function onGetFormulaValues(player, skill, attack, factor) local skillTotal = skill * attack local levelTotal = player:getLevel() / 5 - return -(((skillTotal * 0.02) + 4) + (levelTotal)) * 1.28, -(((skillTotal * 0.04) + 9) + (levelTotal)) * 1.28 -- TODO : Use New Real Formula instead of an % + return -(((skillTotal * 0.02) + 4) + levelTotal) * 1.28, -(((skillTotal * 0.04) + 9) + levelTotal) * 1.28 -- TODO : Use New Real Formula instead of an % end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") diff --git a/data-canary/scripts/spells/attack/front_sweep.lua b/data-canary/scripts/spells/attack/front_sweep.lua index b2c1b9997f1..425cfa6e619 100644 --- a/data-canary/scripts/spells/attack/front_sweep.lua +++ b/data-canary/scripts/spells/attack/front_sweep.lua @@ -8,7 +8,7 @@ combat:setArea(createCombatArea(AREA_WAVE6, AREADIAGONAL_WAVE6)) function onGetFormulaValues(player, skill, attack, factor) local skillTotal = skill * attack local levelTotal = player:getLevel() / 5 - return -(((skillTotal * 0.04) + 31) + (levelTotal)) * 1.1, -(((skillTotal * 0.08) + 45) + (levelTotal)) * 1.1 -- TODO : Use New Real Formula instead of an % + return -(((skillTotal * 0.04) + 31) + levelTotal) * 1.1, -(((skillTotal * 0.08) + 45) + levelTotal) * 1.1 -- TODO : Use New Real Formula instead of an % end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") diff --git a/data-canary/scripts/spells/attack/strong_ethereal_spear.lua b/data-canary/scripts/spells/attack/strong_ethereal_spear.lua index e2ef406ea28..bd2bf61e55f 100644 --- a/data-canary/scripts/spells/attack/strong_ethereal_spear.lua +++ b/data-canary/scripts/spells/attack/strong_ethereal_spear.lua @@ -6,7 +6,7 @@ combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1) function onGetFormulaValues(player, skill, attack, factor) local levelTotal = player:getLevel() / 5 - return -(((2 * skill + attack / 2500) * 2.30) + (levelTotal) + 7), -(((2 * skill + attack / 1875) * 3.30) + (levelTotal) + 13) + return -(((2 * skill + attack / 2500) * 2.30) + levelTotal + 7), -(((2 * skill + attack / 1875) * 3.30) + levelTotal + 13) end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") diff --git a/data-canary/scripts/spells/healing/cure_poison.lua b/data-canary/scripts/spells/healing/cure_poison.lua index 1b1870e1e6c..f8232ea9b76 100644 --- a/data-canary/scripts/spells/healing/cure_poison.lua +++ b/data-canary/scripts/spells/healing/cure_poison.lua @@ -12,8 +12,7 @@ end spell:name("Cure Poison") spell:words("exana pox") spell:group("healing") -spell:vocation("druid;true", "elder druid;true", "knight;true", "elite knight;true", "paladin;true", - "royal paladin;true", "sorcerer;true", "master sorcerer;true") +spell:vocation("druid;true", "elder druid;true", "knight;true", "elite knight;true", "paladin;true", "royal paladin;true", "sorcerer;true", "master sorcerer;true") spell:castSound(SOUND_EFFECT_TYPE_SPELL_CURE_POISON) spell:id(29) spell:cooldown(6000) diff --git a/data-canary/scripts/spells/healing/heal_monsters.lua b/data-canary/scripts/spells/healing/heal_monsters.lua index 3e15d298af8..476eb3a9e2b 100644 --- a/data-canary/scripts/spells/healing/heal_monsters.lua +++ b/data-canary/scripts/spells/healing/heal_monsters.lua @@ -2,8 +2,12 @@ function onTargetCreature(creature, target) local min = 100 local max = 300 - if target:isPlayer() then return true end - if target:getMaster() then return true end + if target:isPlayer() then + return true + end + if target:getMaster() then + return true + end doTargetCombatHealth(0, target, COMBAT_HEALING, min, max, CONST_ME_NONE) return true diff --git a/data-canary/scripts/spells/healing/heal_monsters_9x9.lua b/data-canary/scripts/spells/healing/heal_monsters_9x9.lua index ec5bbb26134..e8db55def9a 100644 --- a/data-canary/scripts/spells/healing/heal_monsters_9x9.lua +++ b/data-canary/scripts/spells/healing/heal_monsters_9x9.lua @@ -2,8 +2,12 @@ function onTargetCreature(creature, target) local min = 0 local max = 1000 - if target:isPlayer() then return true end - if target:getMaster() then return true end + if target:isPlayer() then + return true + end + if target:getMaster() then + return true + end doTargetCombatHealth(0, target, COMBAT_HEALING, min, max, CONST_ME_NONE) return true diff --git a/data-canary/scripts/spells/healing/intense_healing.lua b/data-canary/scripts/spells/healing/intense_healing.lua index 75b6591a974..8813c2daf52 100644 --- a/data-canary/scripts/spells/healing/intense_healing.lua +++ b/data-canary/scripts/spells/healing/intense_healing.lua @@ -21,8 +21,7 @@ end spell:name("Intense Healing") spell:words("exura gran") spell:group("healing") -spell:vocation("druid;true", "elder druid;true", "paladin;true", "royal paladin;true", "sorcerer;true", - "master sorcerer;true") +spell:vocation("druid;true", "elder druid;true", "paladin;true", "royal paladin;true", "sorcerer;true", "master sorcerer;true") spell:castSound(SOUND_EFFECT_TYPE_SPELL_INTENSE_HEALING) spell:id(2) spell:cooldown(1000) diff --git a/data-canary/scripts/spells/healing/magic_patch.lua b/data-canary/scripts/spells/healing/magic_patch.lua index 556990e8a19..478d12cf088 100644 --- a/data-canary/scripts/spells/healing/magic_patch.lua +++ b/data-canary/scripts/spells/healing/magic_patch.lua @@ -21,8 +21,7 @@ end spell:name("Magic Patch") spell:words("exura infir") spell:group("healing") -spell:vocation("druid;true", "elder druid;true", "paladin;true", "royal paladin;true", "sorcerer;true", - "master sorcerer;true") +spell:vocation("druid;true", "elder druid;true", "paladin;true", "royal paladin;true", "sorcerer;true", "master sorcerer;true") spell:castSound(SOUND_EFFECT_TYPE_SPELL_MAGIC_PATCH) spell:id(174) spell:cooldown(1 * 1000) diff --git a/data-canary/scripts/spells/healing/mass_healing.lua b/data-canary/scripts/spells/healing/mass_healing.lua index ea11b357474..3e329dff4c0 100644 --- a/data-canary/scripts/spells/healing/mass_healing.lua +++ b/data-canary/scripts/spells/healing/mass_healing.lua @@ -6,7 +6,7 @@ function onTargetCreature(creature, target) local bosses = { "leiden", "ravennous hunger", "dorokoll the mystic", "eshtaba the conjurer", "eliz the unyielding", "mezlon the defiler", "malkhar deathbringer", "containment crystal" } local master = target:getMaster() if target:isMonster() and not master or master and master:isMonster() then - if (not table.contains(bosses, target:getName():lower())) then + if not table.contains(bosses, target:getName():lower()) then return true end end diff --git a/data-canary/scripts/spells/party/enchant_party.lua b/data-canary/scripts/spells/party/enchant_party.lua index 8edfb7f2776..fdc4a06e04f 100644 --- a/data-canary/scripts/spells/party/enchant_party.lua +++ b/data-canary/scripts/spells/party/enchant_party.lua @@ -24,8 +24,8 @@ function spell.onCastSpell(creature, var, isHotkey) end local membersList = party:getMembers() - membersList[#membersList+1] = party:getLeader() - if membersList == nil or type(membersList) ~= 'table' or #membersList <= 1 then + membersList[#membersList + 1] = party:getLeader() + if membersList == nil or type(membersList) ~= "table" or #membersList <= 1 then creature:sendCancelMessage("No party members in range.") position:sendMagicEffect(CONST_ME_POFF) return false @@ -34,7 +34,7 @@ function spell.onCastSpell(creature, var, isHotkey) local affectedList = {} for _, targetPlayer in ipairs(membersList) do if targetPlayer:getPosition():getDistance(position) <= 36 then - affectedList[#affectedList+1] = targetPlayer + affectedList[#affectedList + 1] = targetPlayer end end diff --git a/data-canary/scripts/spells/party/heal_party.lua b/data-canary/scripts/spells/party/heal_party.lua index 80f18045196..31c042b0245 100644 --- a/data-canary/scripts/spells/party/heal_party.lua +++ b/data-canary/scripts/spells/party/heal_party.lua @@ -25,8 +25,8 @@ function spell.onCastSpell(creature, var) end local membersList = party:getMembers() - membersList[#membersList+1] = party:getLeader() - if membersList == nil or type(membersList) ~= 'table' or #membersList <= 1 then + membersList[#membersList + 1] = party:getLeader() + if membersList == nil or type(membersList) ~= "table" or #membersList <= 1 then creature:sendCancelMessage("No party members in range.") position:sendMagicEffect(CONST_ME_POFF) return false @@ -35,7 +35,7 @@ function spell.onCastSpell(creature, var) local affectedList = {} for _, targetPlayer in ipairs(membersList) do if targetPlayer:getPosition():getDistance(position) <= 36 then - affectedList[#affectedList+1] = targetPlayer + affectedList[#affectedList + 1] = targetPlayer end end diff --git a/data-canary/scripts/spells/party/protect_party.lua b/data-canary/scripts/spells/party/protect_party.lua index ba9c15d8da9..aa30ed766f1 100644 --- a/data-canary/scripts/spells/party/protect_party.lua +++ b/data-canary/scripts/spells/party/protect_party.lua @@ -24,8 +24,8 @@ function spell.onCastSpell(creature, var) end local membersList = party:getMembers() - membersList[#membersList+1] = party:getLeader() - if membersList == nil or type(membersList) ~= 'table' or #membersList <= 1 then + membersList[#membersList + 1] = party:getLeader() + if membersList == nil or type(membersList) ~= "table" or #membersList <= 1 then creature:sendCancelMessage("No party members in range.") position:sendMagicEffect(CONST_ME_POFF) return false @@ -34,7 +34,7 @@ function spell.onCastSpell(creature, var) local affectedList = {} for _, targetPlayer in ipairs(membersList) do if targetPlayer:getPosition():getDistance(position) <= 36 then - affectedList[#affectedList+1] = targetPlayer + affectedList[#affectedList + 1] = targetPlayer end end diff --git a/data-canary/scripts/spells/party/train_party.lua b/data-canary/scripts/spells/party/train_party.lua index b7fff460cd3..0a3a71a8252 100644 --- a/data-canary/scripts/spells/party/train_party.lua +++ b/data-canary/scripts/spells/party/train_party.lua @@ -25,8 +25,8 @@ function spell.onCastSpell(creature, var) end local membersList = party:getMembers() - membersList[#membersList+1] = party:getLeader() - if membersList == nil or type(membersList) ~= 'table' or #membersList <= 1 then + membersList[#membersList + 1] = party:getLeader() + if membersList == nil or type(membersList) ~= "table" or #membersList <= 1 then creature:sendCancelMessage("No party members in range.") position:sendMagicEffect(CONST_ME_POFF) return false @@ -35,7 +35,7 @@ function spell.onCastSpell(creature, var) local affectedList = {} for _, targetPlayer in ipairs(membersList) do if targetPlayer:getPosition():getDistance(position) <= 36 then - affectedList[#affectedList+1] = targetPlayer + affectedList[#affectedList + 1] = targetPlayer end end diff --git a/data-canary/scripts/spells/support/charge.lua b/data-canary/scripts/spells/support/charge.lua index 31b80442b17..0b0090a85b5 100644 --- a/data-canary/scripts/spells/support/charge.lua +++ b/data-canary/scripts/spells/support/charge.lua @@ -11,7 +11,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, variant) local summons = creature:getSummons() - if summons and type(summons) == 'table' and #summons > 0 then + if summons and type(summons) == "table" and #summons > 0 then for i = 1, #summons do local summon = summons[i] local summon_t = summon:getType() diff --git a/data-canary/scripts/spells/support/chivalrous_challenge.lua b/data-canary/scripts/spells/support/chivalrous_challenge.lua index 09269f83a3c..7ab5ac68956 100644 --- a/data-canary/scripts/spells/support/chivalrous_challenge.lua +++ b/data-canary/scripts/spells/support/chivalrous_challenge.lua @@ -37,7 +37,7 @@ local function chain(player) local lastChainPosition = player:getPosition() local closestMonster, closestMonsterIndex, closestMonsterPosition local path, tempPosition, updateLastChain - while (totalChain < 3 and #monsters > 0) do + while totalChain < 3 and #monsters > 0 do closestMonster = nil for index, monster in pairs(monsters) do tempPosition = monster:getPosition() diff --git a/data-canary/scripts/spells/support/divine_dazzle.lua b/data-canary/scripts/spells/support/divine_dazzle.lua index 34adc87a833..b7cfdba3078 100644 --- a/data-canary/scripts/spells/support/divine_dazzle.lua +++ b/data-canary/scripts/spells/support/divine_dazzle.lua @@ -24,7 +24,7 @@ local function chain(player) local lastChainPosition = player:getPosition() local closestMonster, closestMonsterIndex, closestMonsterPosition local path, tempPosition, updateLastChain - while (totalChain < 3 and #monsters > 0) do + while totalChain < 3 and #monsters > 0 do closestMonster = nil for index, monster in pairs(monsters) do tempPosition = monster:getPosition() diff --git a/data-canary/scripts/spells/support/find_fiend.lua b/data-canary/scripts/spells/support/find_fiend.lua index 4a7e537ae78..859d964a78c 100644 --- a/data-canary/scripts/spells/support/find_fiend.lua +++ b/data-canary/scripts/spells/support/find_fiend.lua @@ -15,22 +15,22 @@ local directions = { [DIRECTION_NORTHEAST] = "north-east", [DIRECTION_NORTHWEST] = "north-west", [DIRECTION_SOUTHEAST] = "south-east", - [DIRECTION_SOUTHWEST] = "south-west" + [DIRECTION_SOUTHWEST] = "south-west", } local messages = { [DISTANCE_BESIDE] = { [LEVEL_LOWER] = "is below you", [LEVEL_SAME] = "is standing next to you", - [LEVEL_HIGHER] = "is above you" + [LEVEL_HIGHER] = "is above you", }, [DISTANCE_CLOSE] = { [LEVEL_LOWER] = "is on a lower level to the", [LEVEL_SAME] = "is to the", - [LEVEL_HIGHER] = "is on a higher level to the" + [LEVEL_HIGHER] = "is on a higher level to the", }, [DISTANCE_FAR] = "is far to the", - [DISTANCE_VERYFAR] = "is very far to the" + [DISTANCE_VERYFAR] = "is very far to the", } local spell = Spell("instant") @@ -54,7 +54,7 @@ function spell.onCastSpell(creature, variant) local positionDifference = { x = creaturePosition.x - targetPosition.x, y = creaturePosition.y - targetPosition.y, - z = creaturePosition.z - targetPosition.z + z = creaturePosition.z - targetPosition.z, } local maxPositionDifference, direction = math.max(math.abs(positionDifference.x), math.abs(positionDifference.y)) @@ -63,45 +63,41 @@ function spell.onCastSpell(creature, variant) if math.abs(positionTangent) < 0.4142 then direction = positionDifference.x > 0 and DIRECTION_WEST or DIRECTION_EAST elseif math.abs(positionTangent) < 2.4142 then - direction = positionTangent > 0 and - (positionDifference.y > 0 and DIRECTION_NORTHWEST or DIRECTION_SOUTHEAST) or - positionDifference.x > 0 and DIRECTION_SOUTHWEST or DIRECTION_NORTHEAST + direction = positionTangent > 0 and (positionDifference.y > 0 and DIRECTION_NORTHWEST or DIRECTION_SOUTHEAST) or positionDifference.x > 0 and DIRECTION_SOUTHWEST or DIRECTION_NORTHEAST else direction = positionDifference.y > 0 and DIRECTION_NORTH or DIRECTION_SOUTH end end local level = positionDifference.z > 0 and LEVEL_HIGHER or positionDifference.z < 0 and LEVEL_LOWER or LEVEL_SAME - local distance = maxPositionDifference < 5 and DISTANCE_BESIDE or maxPositionDifference < 101 and DISTANCE_CLOSE or - maxPositionDifference < 275 and DISTANCE_FAR or DISTANCE_VERYFAR + local distance = maxPositionDifference < 5 and DISTANCE_BESIDE or maxPositionDifference < 101 and DISTANCE_CLOSE or maxPositionDifference < 275 and DISTANCE_FAR or DISTANCE_VERYFAR local message = messages[distance][level] or messages[distance] if distance ~= DISTANCE_BESIDE then message = message .. " " .. directions[direction] end local type = target:getType() - local stringLevel = 'Unknown' + local stringLevel = "Unknown" if type then local bestiaryKillsAmount = type:BestiarytoKill() if bestiaryKillsAmount >= 5 and bestiaryKillsAmount <= 25 then - stringLevel = 'Harmless' + stringLevel = "Harmless" elseif bestiaryKillsAmount <= 250 then - stringLevel = 'Trivial' + stringLevel = "Trivial" elseif bestiaryKillsAmount <= 500 then - stringLevel = 'Easy' + stringLevel = "Easy" elseif bestiaryKillsAmount <= 1000 then - stringLevel = 'Medium' + stringLevel = "Medium" elseif bestiaryKillsAmount <= 2500 then - stringLevel = 'Hard' + stringLevel = "Hard" elseif bestiaryKillsAmount <= 5000 then - stringLevel = 'Challenging' + stringLevel = "Challenging" end end - message = string.format("The monster " .. message .. ". Be prepared to find a creature of difficulty level \"" .. - stringLevel .. "\".") + message = string.format("The monster " .. message .. '. Be prepared to find a creature of difficulty level "' .. stringLevel .. '".') local timeLeft = math.floor((target:getTimeToChangeFiendish() - os.time()) / 60) - if (timeLeft <= 15) then + if timeLeft <= 15 then message = string.format(message .. " " .. ForgeMonster:getTimeLeftToChangeMonster(target)) end @@ -113,8 +109,7 @@ end spell:name("Find Fiend") spell:words("exiva moe res") spell:group("support") -spell:vocation("druid;true", "elder druid;true", "knight;true", "elite knight;true", "paladin;true", - "royal paladin;true", "sorcerer;true", "master sorcerer;true") +spell:vocation("druid;true", "elder druid;true", "knight;true", "elite knight;true", "paladin;true", "royal paladin;true", "sorcerer;true", "master sorcerer;true") spell:id(20) spell:cooldown(2 * 1000) spell:groupCooldown(2 * 1000) diff --git a/data-canary/scripts/spells/support/find_person.lua b/data-canary/scripts/spells/support/find_person.lua index d432243e6ad..9e32ec3b69b 100644 --- a/data-canary/scripts/spells/support/find_person.lua +++ b/data-canary/scripts/spells/support/find_person.lua @@ -15,22 +15,22 @@ local directions = { [DIRECTION_NORTHEAST] = "north-east", [DIRECTION_NORTHWEST] = "north-west", [DIRECTION_SOUTHEAST] = "south-east", - [DIRECTION_SOUTHWEST] = "south-west" + [DIRECTION_SOUTHWEST] = "south-west", } local messages = { [DISTANCE_BESIDE] = { [LEVEL_LOWER] = "is below you", [LEVEL_SAME] = "is standing next to you", - [LEVEL_HIGHER] = "is above you" + [LEVEL_HIGHER] = "is above you", }, [DISTANCE_CLOSE] = { [LEVEL_LOWER] = "is on a lower level to the", [LEVEL_SAME] = "is to the", - [LEVEL_HIGHER] = "is on a higher level to the" + [LEVEL_HIGHER] = "is on a higher level to the", }, [DISTANCE_FAR] = "is far to the", - [DISTANCE_VERYFAR] = "is very far to the" + [DISTANCE_VERYFAR] = "is very far to the", } local spell = Spell("instant") @@ -48,7 +48,7 @@ function spell.onCastSpell(creature, variant) local positionDifference = { x = creaturePosition.x - targetPosition.x, y = creaturePosition.y - targetPosition.y, - z = creaturePosition.z - targetPosition.z + z = creaturePosition.z - targetPosition.z, } local maxPositionDifference, direction = math.max(math.abs(positionDifference.x), math.abs(positionDifference.y)) diff --git a/data-canary/scripts/spells/support/food.lua b/data-canary/scripts/spells/support/food.lua index 1a39a90bfd4..46bd982cdd1 100644 --- a/data-canary/scripts/spells/support/food.lua +++ b/data-canary/scripts/spells/support/food.lua @@ -5,7 +5,7 @@ local foods = { 3585, -- apple 3600, -- bread 3601, -- roll - 3607 -- cheese + 3607, -- cheese } local spell = Spell("instant") diff --git a/data-canary/scripts/spells/support/haste.lua b/data-canary/scripts/spells/support/haste.lua index 73af612c6d3..9c5280c1da0 100644 --- a/data-canary/scripts/spells/support/haste.lua +++ b/data-canary/scripts/spells/support/haste.lua @@ -11,7 +11,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, variant) local summons = creature:getSummons() - if summons and type(summons) == 'table' and #summons > 0 then + if summons and type(summons) == "table" and #summons > 0 then for i = 1, #summons do local summon = summons[i] local summon_t = summon:getType() diff --git a/data-canary/scripts/spells/support/strong_haste.lua b/data-canary/scripts/spells/support/strong_haste.lua index ceb7b63672f..f70a8db3354 100644 --- a/data-canary/scripts/spells/support/strong_haste.lua +++ b/data-canary/scripts/spells/support/strong_haste.lua @@ -11,7 +11,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, var) local summons = creature:getSummons() - if summons and type(summons) == 'table' and #summons > 0 then + if summons and type(summons) == "table" and #summons > 0 then for i = 1, #summons do local summon = summons[i] local summon_t = summon:getType() diff --git a/data-canary/scripts/spells/support/swift_foot.lua b/data-canary/scripts/spells/support/swift_foot.lua index 36ae1ca0aa3..803f6980cd8 100644 --- a/data-canary/scripts/spells/support/swift_foot.lua +++ b/data-canary/scripts/spells/support/swift_foot.lua @@ -24,7 +24,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, var) local summons = creature:getSummons() - if summons and type(summons) == 'table' and #summons > 0 then + if summons and type(summons) == "table" and #summons > 0 then for i = 1, #summons do local summon = summons[i] local summon_t = summon:getType() diff --git a/data-canary/scripts/weapons/scripted_weapons.lua b/data-canary/scripts/weapons/scripted_weapons.lua index 30230f1495d..93e677d43cd 100644 --- a/data-canary/scripts/weapons/scripted_weapons.lua +++ b/data-canary/scripts/weapons/scripted_weapons.lua @@ -1,7 +1,7 @@ local burstArea = createCombatArea({ { 1, 1, 1 }, { 1, 3, 1 }, - { 1, 1, 1 } + { 1, 1, 1 }, }) local burstCombat = Combat() diff --git a/data-canary/scripts/weapons/unscripted_weapons.lua b/data-canary/scripts/weapons/unscripted_weapons.lua index c721666cdea..5f56e9c7a06 100644 --- a/data-canary/scripts/weapons/unscripted_weapons.lua +++ b/data-canary/scripts/weapons/unscripted_weapons.lua @@ -10,8 +10,8 @@ local weapons = { unproperly = true, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- naga wand @@ -24,8 +24,8 @@ local weapons = { unproperly = true, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- naga crossbow @@ -35,8 +35,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- naga club @@ -46,8 +46,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- naga axe @@ -57,8 +57,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- naga sword @@ -68,8 +68,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch rod @@ -79,8 +79,8 @@ local weapons = { unproperly = true, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch rod @@ -90,8 +90,8 @@ local weapons = { unproperly = true, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gilded eldritch wand @@ -101,8 +101,8 @@ local weapons = { unproperly = true, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch wand @@ -112,8 +112,8 @@ local weapons = { unproperly = true, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- gilded eldritch bow @@ -123,8 +123,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch bow @@ -134,8 +134,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- gilded eldritch greataxe @@ -145,8 +145,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch greataxe @@ -156,8 +156,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch warmace @@ -167,8 +167,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch warmace @@ -178,8 +178,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch claymore @@ -189,8 +189,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch claymore @@ -200,8 +200,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spectral bolt (no decay) @@ -209,7 +209,7 @@ local weapons = { type = WEAPON_AMMO, level = 150, unproperly = true, - action = "removecount" + action = "removecount", }, { -- jungle wand @@ -221,8 +221,8 @@ local weapons = { damage = { 80, 100 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- jungle rod @@ -234,8 +234,8 @@ local weapons = { damage = { 80, 100 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- jungle bow @@ -245,8 +245,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- throwing axe @@ -256,8 +256,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- jungle flail @@ -267,8 +267,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion longsword @@ -278,8 +278,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion hammer @@ -289,8 +289,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion axe @@ -300,8 +300,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion wand @@ -313,8 +313,8 @@ local weapons = { damage = { 89, 109 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- lion rod @@ -326,8 +326,8 @@ local weapons = { damage = { 85, 105 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lion longbow @@ -337,8 +337,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- soulhexer rod @@ -350,8 +350,8 @@ local weapons = { damage = { 98, 118 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- soultainter wand @@ -363,8 +363,8 @@ local weapons = { damage = { 100, 120 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- soulpiercer crossbow @@ -374,8 +374,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- soulbleeder bow @@ -385,8 +385,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- soulmaimer club @@ -396,8 +396,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulcrusher club @@ -407,8 +407,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- souleater axe @@ -418,8 +418,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulbiter axe @@ -429,8 +429,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulshredder sword @@ -440,8 +440,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulcutter sword @@ -451,8 +451,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- phantasmal axe @@ -462,13 +462,13 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- meat hammer itemid = 32093, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- tagralt blade @@ -478,8 +478,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- bow of cataclysm @@ -489,8 +489,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- mortal mace @@ -500,8 +500,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cobra rod @@ -513,8 +513,8 @@ local weapons = { damage = { 70, 110 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- cobra wand @@ -526,8 +526,8 @@ local weapons = { damage = { 94, 100 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- cobra sword @@ -537,8 +537,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cobra axe @@ -548,8 +548,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cobra club @@ -559,8 +559,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cobra crossbow @@ -570,13 +570,13 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ice hatchet itemid = 30283, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- energized limb @@ -590,8 +590,8 @@ local weapons = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- winterblade @@ -601,8 +601,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- summerblade @@ -612,8 +612,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- resizer @@ -623,8 +623,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- living vine bow @@ -634,66 +634,66 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- golden axe itemid = 29286, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- wand of destruction test itemid = 28479, - type = WEAPON_WAND + type = WEAPON_WAND, }, { -- umbral master bow test itemid = 28478, - type = WEAPON_DISTANCE + type = WEAPON_DISTANCE, }, { -- sorcerer test weapon itemid = 28466, - type = WEAPON_WAND + type = WEAPON_WAND, }, { -- bow of destruction test itemid = 28465, - type = WEAPON_DISTANCE + type = WEAPON_DISTANCE, }, { -- test weapon for knights itemid = 28464, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- sulphurous demonbone itemid = 28832, type = WEAPON_CLUB, level = 80, - unproperly = true + unproperly = true, }, { -- unliving demonbone itemid = 28831, type = WEAPON_CLUB, level = 80, - unproperly = true + unproperly = true, }, { -- energized demonbone itemid = 28830, type = WEAPON_CLUB, level = 80, - unproperly = true + unproperly = true, }, { -- rotten demonbone itemid = 28829, type = WEAPON_CLUB, level = 80, - unproperly = true + unproperly = true, }, { -- deepling fork @@ -707,8 +707,8 @@ local weapons = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- deepling ceremonial dagger @@ -722,8 +722,8 @@ local weapons = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- falcon mace @@ -733,8 +733,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- falcon battleaxe @@ -744,8 +744,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- falcon longsword @@ -755,8 +755,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- falcon bow @@ -766,8 +766,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- falcon wand @@ -779,8 +779,8 @@ local weapons = { damage = { 86, 102 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- falcon rod @@ -792,8 +792,8 @@ local weapons = { damage = { 87, 101 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gnome sword @@ -803,18 +803,18 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mallet handle itemid = 27525, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- strange mallet itemid = 27523, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- rod of destruction @@ -826,8 +826,8 @@ local weapons = { damage = { 80, 110 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- wand of destruction @@ -839,8 +839,8 @@ local weapons = { damage = { 80, 110 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- crossbow of destruction @@ -850,8 +850,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- bow of destruction @@ -861,8 +861,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hammer of destruction @@ -872,8 +872,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mace of destruction @@ -883,8 +883,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- chopper of destruction @@ -894,8 +894,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- axe of destruction @@ -905,8 +905,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- slayer of destruction @@ -916,8 +916,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- blade of destruction @@ -927,578 +927,578 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ornate carving hammer itemid = 26061, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- valuable carving hammer itemid = 26060, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- plain carving hammer itemid = 26059, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- ornate carving mace itemid = 26058, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- valuable carving mace itemid = 26057, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- plain carving mace itemid = 26056, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- ornate carving chopper itemid = 26055, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- valuable carving chopper itemid = 26054, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- plain carving chopper itemid = 26053, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- ornate carving axe itemid = 26052, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- valuable carving axe itemid = 26051, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- plain carving axe itemid = 26050, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- ornate carving slayer itemid = 26049, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- valuable carving slayer itemid = 26048, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- plain carving slayer itemid = 26047, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- ornate carving blade itemid = 26046, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- valuable carving blade itemid = 26045, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- plain carving blade itemid = 26044, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- ornate remedy hammer itemid = 26031, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- valuable remedy hammer itemid = 26030, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- plain remedy hammer itemid = 26029, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- ornate remedy mace itemid = 26028, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- valuable remedy mace itemid = 26027, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- plain remedy mace itemid = 26026, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- ornate remedy chopper itemid = 26025, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- valuable remedy chopper itemid = 26024, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- plain remedy chopper itemid = 26023, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- ornate remedy axe itemid = 26022, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- valuable remedy axe itemid = 26021, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- plain remedy axe itemid = 26020, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- ornate remedy slayer itemid = 26019, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- valuable remedy slayer itemid = 26018, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- plain remedy slayer itemid = 26017, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- ornate remedy blade itemid = 26016, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- valuable remedy blade itemid = 26015, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- plain remedy blade itemid = 26014, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- ornate mayhem hammer itemid = 26000, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- valuable mayhem hammer itemid = 25999, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- plain mayhem hammer itemid = 25998, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- ornate mayhem mace itemid = 25997, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- valuable mayhem mace itemid = 25996, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- plain mayhem mace itemid = 25995, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- ornate mayhem chopper itemid = 25994, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- valuable mayhem chopper itemid = 25993, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- plain mayhem chopper itemid = 25992, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- ornate mayhem axe itemid = 25991, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- valuable mayhem axe itemid = 25990, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- plain mayhem axe itemid = 25989, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- ornate mayhem slayer itemid = 25988, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- valuable mayhem slayer itemid = 25987, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- plain mayhem slayer itemid = 25986, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- ornate mayhem blade itemid = 25985, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- valuable mayhem blade itemid = 25984, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- plain mayhem blade itemid = 25983, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- energy war hammer replica itemid = 25974, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- energy orcish maul replica itemid = 25973, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- energy basher replica itemid = 25972, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- energy crystal mace replica itemid = 25971, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- energy clerical mace replica itemid = 25970, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- energy war axe replica itemid = 25969, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- energy headchopper replica itemid = 25968, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- energy heroic axe replica itemid = 25967, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- energy knight axe replica itemid = 25966, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- energy barbarian axe replica itemid = 25965, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- energy dragon slayer replica itemid = 25964, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- energy blacksteel replica itemid = 25963, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- energy mystic blade replica itemid = 25962, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- energy relic sword replica itemid = 25961, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- energy spike sword replica itemid = 25960, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- earth war hammer replica itemid = 25959, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- earth orcish maul replica itemid = 25958, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- earth basher replica itemid = 25957, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- earth crystal mace replica itemid = 25956, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- earth clerical mace replica itemid = 25955, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- earth war axe replica itemid = 25954, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- earth headchopper replica itemid = 25953, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- earth heroic axe replica itemid = 25952, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- earth knight axe replica itemid = 25951, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- earth barbarian axe replica itemid = 25950, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- earth dragon slayer replica itemid = 25949, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- earth blacksteel replica itemid = 25948, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- earth mystic blade replica itemid = 25947, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- earth relic sword replica itemid = 25946, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- earth spike sword replica itemid = 25945, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- icy war hammer replica itemid = 25944, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- icy orcish maul replica itemid = 25943, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- icy basher replica itemid = 25942, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- icy crystal mace replica itemid = 25941, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- icy clerical mace replica itemid = 25940, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- icy war axe replica itemid = 25939, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- icy headchopper replica itemid = 25938, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- icy heroic axe replica itemid = 25937, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- icy knight axe replica itemid = 25936, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- icy barbarian axe replica itemid = 25935, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- icy dragon slayer replica itemid = 25934, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- icy blacksteel replica itemid = 25933, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- icy mystic blade replica itemid = 25932, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- icy relic sword replica itemid = 25931, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- icy spike sword replica itemid = 25930, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- fiery war hammer replica itemid = 25929, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- fiery orcish maul replica itemid = 25928, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- fiery basher replica itemid = 25927, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- fiery crystal mace replica itemid = 25926, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- fiery clerical mace replica itemid = 25925, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- fiery war axe replica itemid = 25924, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- fiery headchopper replica itemid = 25923, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- fiery heroic axe replica itemid = 25922, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- fiery knight axe replica itemid = 25921, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- fiery barbarian axe replica itemid = 25920, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- fiery dragon slayer replica itemid = 25919, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- fiery blacksteel replica itemid = 25918, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- fiery mystic blade replica itemid = 25917, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- fiery relic sword replica itemid = 25916, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- fiery spike sword replica itemid = 25915, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- wand of darkness @@ -1510,8 +1510,8 @@ local weapons = { damage = { 80, 100 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- royal star @@ -1519,7 +1519,7 @@ local weapons = { type = WEAPON_DISTANCE, level = 120, unproperly = true, - breakchance = 30 + breakchance = 30, }, { -- spectral bolt @@ -1527,7 +1527,7 @@ local weapons = { type = WEAPON_AMMO, level = 150, unproperly = true, - action = "removecount" + action = "removecount", }, { -- leaf star @@ -1535,7 +1535,7 @@ local weapons = { type = WEAPON_DISTANCE, level = 60, unproperly = true, - breakchance = 40 + breakchance = 40, }, { -- dream blossom staff @@ -1549,8 +1549,8 @@ local weapons = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- rod of carving @@ -1562,8 +1562,8 @@ local weapons = { damage = { 70, 105 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- wand of carving @@ -1575,8 +1575,8 @@ local weapons = { damage = { 70, 105 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- crossbow of carving @@ -1586,8 +1586,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- bow of carving @@ -1597,8 +1597,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hammer of carving @@ -1608,8 +1608,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mace of carving @@ -1619,8 +1619,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- chopper of carving @@ -1630,8 +1630,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- axe of carving @@ -1641,8 +1641,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- slayer of carving @@ -1652,8 +1652,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- blade of carving @@ -1663,8 +1663,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- rod of remedy @@ -1676,8 +1676,8 @@ local weapons = { damage = { 70, 105 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- wand of remedy @@ -1689,8 +1689,8 @@ local weapons = { damage = { 70, 105 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- crossbow of remedy @@ -1700,8 +1700,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- bow of remedy @@ -1711,8 +1711,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hammer of remedy @@ -1722,8 +1722,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mace of remedy @@ -1733,8 +1733,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- chopper of remedy @@ -1744,8 +1744,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- axe of remedy @@ -1755,8 +1755,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- slayer of remedy @@ -1766,8 +1766,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- blade of remedy @@ -1777,8 +1777,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- rod of mayhem @@ -1790,8 +1790,8 @@ local weapons = { damage = { 70, 105 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- wand of mayhem @@ -1803,8 +1803,8 @@ local weapons = { damage = { 70, 105 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- crossbow of mayhem @@ -1814,8 +1814,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- bow of mayhem @@ -1825,8 +1825,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hammer of mayhem @@ -1836,8 +1836,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mace of mayhem @@ -1847,8 +1847,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- chopper of mayhem @@ -1858,8 +1858,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- axe of mayhem @@ -1869,8 +1869,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- slayer of mayhem @@ -1880,8 +1880,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- blade of mayhem @@ -1891,8 +1891,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- rift crossbow @@ -1902,8 +1902,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- rift bow @@ -1913,8 +1913,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ferumbras' staff (enchanted) @@ -1926,8 +1926,8 @@ local weapons = { damage = { 80, 110 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- ferumbras' staff (failed) @@ -1939,43 +1939,43 @@ local weapons = { damage = { 65, 95 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- Ferumbras' staff itemid = 22764, type = WEAPON_CLUB, level = 100, - unproperly = true + unproperly = true, }, { -- maimer itemid = 22762, type = WEAPON_CLUB, level = 150, - unproperly = true + unproperly = true, }, { -- Impaler of the igniter itemid = 22760, type = WEAPON_SWORD, level = 150, - unproperly = true + unproperly = true, }, { -- plague bite itemid = 22759, type = WEAPON_AXE, level = 150, - unproperly = true + unproperly = true, }, { -- rift lance itemid = 22727, type = WEAPON_AXE, level = 70, - unproperly = true + unproperly = true, }, { -- ogre sceptra @@ -1987,28 +1987,28 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- ogre choppa itemid = 22172, type = WEAPON_AXE, level = 25, - unproperly = true + unproperly = true, }, { -- ogre klubba itemid = 22171, type = WEAPON_AXE, level = 50, - unproperly = true + unproperly = true, }, { -- simple arrow itemid = 21470, type = WEAPON_AMMO, - action = "removecount" + action = "removecount", }, { -- the chiller @@ -2020,8 +2020,8 @@ local weapons = { damage = { 4, 8 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- the scorcher @@ -2033,15 +2033,15 @@ local weapons = { damage = { 4, 8 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- one hit wonder itemid = 21219, type = WEAPON_CLUB, level = 70, - unproperly = true + unproperly = true, }, { -- glooth axe @@ -2051,8 +2051,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- glooth blade @@ -2062,8 +2062,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- glooth club @@ -2074,50 +2074,50 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cowtana itemid = 21177, type = WEAPON_SWORD, level = 25, - unproperly = true + unproperly = true, }, { -- execowtioner axe itemid = 21176, type = WEAPON_AXE, level = 55, - unproperly = true + unproperly = true, }, { -- mino lance itemid = 21174, type = WEAPON_AXE, level = 45, - unproperly = true + unproperly = true, }, { -- moohtant cudgel itemid = 21173, type = WEAPON_CLUB, level = 60, - unproperly = true + unproperly = true, }, { -- glooth whip itemid = 21172, type = WEAPON_CLUB, level = 25, - unproperly = true + unproperly = true, }, { -- metal bat itemid = 21171, type = WEAPON_CLUB, level = 55, - unproperly = true + unproperly = true, }, { -- glooth spear @@ -2125,7 +2125,7 @@ local weapons = { type = WEAPON_DISTANCE, level = 60, unproperly = true, - breakchance = 2 + breakchance = 2, }, { -- umbral master crossbow @@ -2135,8 +2135,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- umbral crossbow @@ -2146,8 +2146,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crude umbral crossbow @@ -2157,8 +2157,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- umbral master bow @@ -2168,8 +2168,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- umbral bow @@ -2179,8 +2179,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crude umbral bow @@ -2190,8 +2190,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- umbral master hammer @@ -2201,8 +2201,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral hammer @@ -2212,8 +2212,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral hammer @@ -2223,8 +2223,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral master mace @@ -2234,8 +2234,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral mace @@ -2245,8 +2245,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral mace @@ -2256,8 +2256,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral master chopper @@ -2267,8 +2267,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral chopper @@ -2278,8 +2278,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- guardian halberd @@ -2289,8 +2289,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral master axe @@ -2300,8 +2300,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral axe @@ -2311,8 +2311,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral axe @@ -2322,8 +2322,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral master slayer @@ -2333,8 +2333,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral slayer @@ -2344,8 +2344,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral slayer @@ -2355,8 +2355,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral masterblade @@ -2366,8 +2366,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral blade @@ -2377,8 +2377,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral blade @@ -2388,14 +2388,14 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icicle bow itemid = 19362, type = WEAPON_DISTANCE, - unproperly = true + unproperly = true, }, { -- triple bolt crossbow @@ -2405,15 +2405,15 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- spiky club itemid = 17859, type = WEAPON_CLUB, level = 20, - unproperly = true + unproperly = true, }, { -- pair of iron fists @@ -2423,27 +2423,27 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- swampling club itemid = 17824, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- life preserver itemid = 17813, type = WEAPON_CLUB, level = 15, - unproperly = true + unproperly = true, }, { -- ratana itemid = 17812, type = WEAPON_SWORD, level = 15, - unproperly = true + unproperly = true, }, { -- sorc and druid staff @@ -2454,8 +2454,8 @@ local weapons = { mana = 2, damage = { 8, 18 }, vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- mean paladin spear @@ -2463,8 +2463,8 @@ local weapons = { type = WEAPON_DISTANCE, breakchance = 3, vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- mean knight sword @@ -2472,15 +2472,15 @@ local weapons = { type = WEAPON_SWORD, unproperly = true, vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- shiny blade itemid = 16175, type = WEAPON_SWORD, level = 120, - unproperly = true + unproperly = true, }, { -- mycological bow @@ -2490,8 +2490,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crystal crossbow @@ -2501,29 +2501,29 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- mycological mace itemid = 16162, type = WEAPON_CLUB, level = 120, - unproperly = true + unproperly = true, }, { -- crystalline axe itemid = 16161, type = WEAPON_AXE, level = 120, - unproperly = true + unproperly = true, }, { -- crystalline sword itemid = 16160, type = WEAPON_SWORD, level = 62, - unproperly = true + unproperly = true, }, { -- envenomed arrow @@ -2531,7 +2531,7 @@ local weapons = { type = WEAPON_AMMO, level = 70, unproperly = true, - action = "removecount" + action = "removecount", }, { -- drill bolt @@ -2539,7 +2539,7 @@ local weapons = { type = WEAPON_AMMO, level = 70, unproperly = true, - action = "removecount" + action = "removecount", }, { -- prismatic bolt @@ -2547,7 +2547,7 @@ local weapons = { type = WEAPON_AMMO, level = 90, unproperly = true, - action = "removecount" + action = "removecount", }, { -- glacial rod @@ -2559,8 +2559,8 @@ local weapons = { damage = { 75, 95 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- muck rod @@ -2572,8 +2572,8 @@ local weapons = { damage = { 75, 95 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- wand of everblazing @@ -2585,8 +2585,8 @@ local weapons = { damage = { 75, 95 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of defiance @@ -2598,8 +2598,8 @@ local weapons = { damage = { 75, 95 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- crystalline arrow @@ -2607,13 +2607,13 @@ local weapons = { type = WEAPON_AMMO, level = 90, unproperly = true, - action = "removecount" + action = "removecount", }, { -- crystal bolt itemid = 15792, type = WEAPON_AMMO, - action = "removecount" + action = "removecount", }, { -- thorn spitter @@ -2623,8 +2623,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- vortex bolt @@ -2632,7 +2632,7 @@ local weapons = { type = WEAPON_AMMO, level = 40, unproperly = true, - action = "removecount" + action = "removecount", }, { -- tarsal arrow @@ -2640,14 +2640,14 @@ local weapons = { type = WEAPON_AMMO, level = 30, unproperly = true, - action = "removecount" + action = "removecount", }, { -- deepling squelcher itemid = 14250, type = WEAPON_CLUB, level = 48, - unproperly = true + unproperly = true, }, { -- ornate crossbow @@ -2657,8 +2657,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hive bow @@ -2668,50 +2668,50 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hive scythe itemid = 14089, type = WEAPON_AXE, level = 70, - unproperly = true + unproperly = true, }, { -- guardian axe itemid = 14043, type = WEAPON_AXE, level = 50, - unproperly = true + unproperly = true, }, { -- warrior's axe itemid = 14040, type = WEAPON_AXE, level = 40, - unproperly = true + unproperly = true, }, { -- ornate mace itemid = 14001, type = WEAPON_CLUB, level = 90, - unproperly = true + unproperly = true, }, { -- deepling axe itemid = 13991, type = WEAPON_AXE, level = 80, - unproperly = true + unproperly = true, }, { -- deepling staff itemid = 13987, type = WEAPON_CLUB, level = 38, - unproperly = true + unproperly = true, }, { -- shimmer wand @@ -2723,8 +2723,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- shimmer bow @@ -2734,8 +2734,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- shimmer rod @@ -2747,27 +2747,27 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- shimmer sword itemid = 12731, type = WEAPON_SWORD, level = 40, - unproperly = true + unproperly = true, }, { -- heavy trident itemid = 12683, type = WEAPON_AXE, level = 25, - unproperly = true + unproperly = true, }, { -- wooden sword itemid = 12673, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- wand of dimensions @@ -2779,22 +2779,22 @@ local weapons = { damage = { 44, 62 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- blade of corruption itemid = 11693, type = WEAPON_SWORD, level = 82, - unproperly = true + unproperly = true, }, { -- snake god's sceptre itemid = 11692, type = WEAPON_CLUB, level = 82, - unproperly = true + unproperly = true, }, { -- twiceslicer @@ -2804,15 +2804,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- Zaoan halberd itemid = 10406, type = WEAPON_AXE, level = 25, - unproperly = true + unproperly = true, }, { -- twin hooks @@ -2822,8 +2822,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- drachaku @@ -2833,15 +2833,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- Zaoan sword itemid = 10390, type = WEAPON_SWORD, level = 55, - unproperly = true + unproperly = true, }, { -- sai @@ -2851,60 +2851,60 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- drakinata itemid = 10388, type = WEAPON_AXE, level = 60, - unproperly = true + unproperly = true, }, { -- incredible mumpiz slayer itemid = 9396, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- poet's fencing quill itemid = 9387, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- farmer's avenger itemid = 9386, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- club of the fury itemid = 9385, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- scythe of the reaper itemid = 9384, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- musician's bow itemid = 9378, - type = WEAPON_DISTANCE + type = WEAPON_DISTANCE, }, { -- stale bread of ancientness itemid = 9376, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- pointed rabbitslayer itemid = 9375, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- glutton's mace itemid = 9373, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- the calamity @@ -2914,22 +2914,22 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- the epiphany itemid = 8103, type = WEAPON_SWORD, level = 120, - unproperly = true + unproperly = true, }, { -- emerald sword itemid = 8102, type = WEAPON_SWORD, level = 100, - unproperly = true + unproperly = true, }, { -- the stomper @@ -2939,22 +2939,22 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- obsidian truncheon itemid = 8100, type = WEAPON_CLUB, level = 100, - unproperly = true + unproperly = true, }, { -- dark trinity mace itemid = 8099, type = WEAPON_CLUB, level = 120, - unproperly = true + unproperly = true, }, { -- demonwing axe @@ -2964,22 +2964,22 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- solar axe itemid = 8097, type = WEAPON_AXE, level = 130, - unproperly = true + unproperly = true, }, { -- hellforged axe itemid = 8096, type = WEAPON_AXE, level = 110, - unproperly = true + unproperly = true, }, { -- wand of voodoo @@ -2991,8 +2991,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of draconia @@ -3004,8 +3004,8 @@ local weapons = { damage = { 23, 37 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of starmstorm @@ -3017,8 +3017,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- springsprout rod @@ -3030,8 +3030,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- northwind rod @@ -3043,8 +3043,8 @@ local weapons = { damage = { 23, 37 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- underworld rod @@ -3056,8 +3056,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- elethriel's elemental bow @@ -3067,8 +3067,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- silkweaver bow @@ -3078,8 +3078,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- yol's bow @@ -3089,8 +3089,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- composite hornbow @@ -3100,8 +3100,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- warsinger bow @@ -3111,8 +3111,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ironworker @@ -3122,8 +3122,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- devileye @@ -3133,8 +3133,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- royal crossbow @@ -3144,8 +3144,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- chain bolter @@ -3155,8 +3155,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- modified crossbow @@ -3166,23 +3166,23 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- jagged sword itemid = 7774, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- steel axe itemid = 7773, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- crimson sword itemid = 860, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- energy war hammer @@ -3193,8 +3193,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- energy orcish maul @@ -3202,7 +3202,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy cranial basher @@ -3210,7 +3210,7 @@ local weapons = { type = WEAPON_CLUB, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy crystal mace @@ -3218,7 +3218,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy clerical mace @@ -3226,7 +3226,7 @@ local weapons = { type = WEAPON_CLUB, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy war axe @@ -3237,8 +3237,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- energy headchopper @@ -3249,8 +3249,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- energy heroic axe @@ -3258,7 +3258,7 @@ local weapons = { type = WEAPON_AXE, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy knight axe @@ -3266,7 +3266,7 @@ local weapons = { type = WEAPON_AXE, level = 25, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy barbarian axe @@ -3274,7 +3274,7 @@ local weapons = { type = WEAPON_AXE, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy dragon slayer @@ -3285,8 +3285,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- energy blacksteel sword @@ -3297,8 +3297,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- energy mystic blade @@ -3306,7 +3306,7 @@ local weapons = { type = WEAPON_SWORD, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy relic sword @@ -3314,13 +3314,13 @@ local weapons = { type = WEAPON_SWORD, level = 50, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy spike sword itemid = 794, type = WEAPON_SWORD, - action = "removecharge" + action = "removecharge", }, { -- earth war hammer @@ -3331,8 +3331,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earth orcish maul @@ -3340,7 +3340,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth cranial basher @@ -3348,7 +3348,7 @@ local weapons = { type = WEAPON_CLUB, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth crystal mace @@ -3356,7 +3356,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth clerical mace @@ -3364,7 +3364,7 @@ local weapons = { type = WEAPON_CLUB, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth war axe @@ -3375,8 +3375,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earth headchopper @@ -3387,8 +3387,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earth heroic axe @@ -3396,7 +3396,7 @@ local weapons = { type = WEAPON_AXE, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth knight axe @@ -3404,7 +3404,7 @@ local weapons = { type = WEAPON_AXE, level = 25, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth barbarian axe @@ -3412,7 +3412,7 @@ local weapons = { type = WEAPON_AXE, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth dragon slayer @@ -3423,8 +3423,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earth blacksteel sword @@ -3435,8 +3435,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earth mystic blade @@ -3444,7 +3444,7 @@ local weapons = { type = WEAPON_SWORD, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth relic sword @@ -3452,13 +3452,13 @@ local weapons = { type = WEAPON_SWORD, level = 50, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth spike sword itemid = 779, type = WEAPON_SWORD, - action = "removecharge" + action = "removecharge", }, { -- earth arrow @@ -3466,7 +3466,7 @@ local weapons = { type = WEAPON_AMMO, level = 20, unproperly = true, - action = "removecount" + action = "removecount", }, { -- flaming arrow @@ -3474,7 +3474,7 @@ local weapons = { type = WEAPON_AMMO, level = 20, unproperly = true, - action = "removecount" + action = "removecount", }, { -- shiver arrow @@ -3482,7 +3482,7 @@ local weapons = { type = WEAPON_AMMO, level = 20, unproperly = true, - action = "removecount" + action = "removecount", }, { -- flash arrow @@ -3490,7 +3490,7 @@ local weapons = { type = WEAPON_AMMO, level = 20, unproperly = true, - action = "removecount" + action = "removecount", }, { -- icy war hammer @@ -3501,8 +3501,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icy orcish maul @@ -3510,7 +3510,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy cranial basher @@ -3518,7 +3518,7 @@ local weapons = { type = WEAPON_CLUB, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy crystal mace @@ -3526,7 +3526,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy clerical mace @@ -3534,7 +3534,7 @@ local weapons = { type = WEAPON_CLUB, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy war axe @@ -3545,8 +3545,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icy headchopper @@ -3557,8 +3557,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icy heroic axe @@ -3566,7 +3566,7 @@ local weapons = { type = WEAPON_AXE, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy knight axe @@ -3574,7 +3574,7 @@ local weapons = { type = WEAPON_AXE, level = 25, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy barbarian axe @@ -3582,7 +3582,7 @@ local weapons = { type = WEAPON_AXE, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy dragon slayer @@ -3593,8 +3593,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icy blacksteel sword @@ -3605,8 +3605,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icy mystic blade @@ -3614,7 +3614,7 @@ local weapons = { type = WEAPON_SWORD, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy relic sword @@ -3622,13 +3622,13 @@ local weapons = { type = WEAPON_SWORD, level = 50, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy spike sword itemid = 679, type = WEAPON_SWORD, - action = "removecharge" + action = "removecharge", }, { -- fiery war hammer @@ -3639,8 +3639,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fiery orcish maul @@ -3648,7 +3648,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery cranial basher @@ -3656,7 +3656,7 @@ local weapons = { type = WEAPON_CLUB, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery crystal mace @@ -3664,7 +3664,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery clerical mace @@ -3672,7 +3672,7 @@ local weapons = { type = WEAPON_CLUB, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery war axe @@ -3683,8 +3683,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fiery headchopper @@ -3695,8 +3695,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fiery heroic axe @@ -3704,7 +3704,7 @@ local weapons = { type = WEAPON_AXE, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery knight axe @@ -3712,7 +3712,7 @@ local weapons = { type = WEAPON_AXE, level = 25, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery barbarian axe @@ -3720,7 +3720,7 @@ local weapons = { type = WEAPON_AXE, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery dragon slayer @@ -3731,8 +3731,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fiery blacksteel sword @@ -3743,8 +3743,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fiery mystic blade @@ -3752,7 +3752,7 @@ local weapons = { type = WEAPON_SWORD, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery relic sword @@ -3760,27 +3760,27 @@ local weapons = { type = WEAPON_SWORD, level = 50, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery spike sword itemid = 660, type = WEAPON_SWORD, - action = "removecharge" + action = "removecharge", }, { -- noble axe itemid = 7456, type = WEAPON_AXE, level = 35, - unproperly = true + unproperly = true, }, { -- mythril axe itemid = 7455, type = WEAPON_AXE, level = 80, - unproperly = true + unproperly = true, }, { -- glorious axe @@ -3790,8 +3790,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- executioner @@ -3801,8 +3801,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spiked squelcher @@ -3812,15 +3812,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- shadow sceptre itemid = 7451, type = WEAPON_CLUB, level = 35, - unproperly = true + unproperly = true, }, { -- hammer of prophecy @@ -3830,8 +3830,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crystal sword @@ -3841,20 +3841,20 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- elvish bow itemid = 7438, - type = WEAPON_DISTANCE + type = WEAPON_DISTANCE, }, { -- sapphire hammer itemid = 7437, type = WEAPON_CLUB, level = 30, - unproperly = true + unproperly = true, }, { -- angelic axe @@ -3864,57 +3864,57 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- impaler itemid = 7435, type = WEAPON_AXE, level = 85, - unproperly = true + unproperly = true, }, { -- royal axe itemid = 7434, type = WEAPON_AXE, level = 75, - unproperly = true + unproperly = true, }, { -- ravenwing itemid = 7433, type = WEAPON_AXE, level = 65, - unproperly = true + unproperly = true, }, { -- furry club itemid = 7432, type = WEAPON_CLUB, level = 20, - unproperly = true + unproperly = true, }, { -- demonbone itemid = 7431, type = WEAPON_CLUB, level = 80, - unproperly = true + unproperly = true, }, { -- dragonbone staff itemid = 7430, type = WEAPON_CLUB, level = 30, - unproperly = true + unproperly = true, }, { -- blessed sceptre itemid = 7429, type = WEAPON_CLUB, level = 75, - unproperly = true + unproperly = true, }, { -- bonebreaker @@ -3924,36 +3924,36 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- chaos mace itemid = 7427, type = WEAPON_CLUB, level = 45, - unproperly = true + unproperly = true, }, { -- amber staff itemid = 7426, type = WEAPON_CLUB, level = 40, - unproperly = true + unproperly = true, }, { -- taurus mace itemid = 7425, type = WEAPON_CLUB, level = 20, - unproperly = true + unproperly = true, }, { -- lunar staff itemid = 7424, type = WEAPON_CLUB, level = 30, - unproperly = true + unproperly = true, }, { -- skullcrusher @@ -3963,64 +3963,64 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- jade hammer itemid = 7422, type = WEAPON_CLUB, level = 70, - unproperly = true + unproperly = true, }, { -- onyx flail itemid = 7421, type = WEAPON_CLUB, level = 65, - unproperly = true + unproperly = true, }, { -- reaper's axe itemid = 7420, type = WEAPON_AXE, level = 70, - unproperly = true + unproperly = true, }, { -- dreaded cleaver itemid = 7419, type = WEAPON_AXE, level = 40, - unproperly = true + unproperly = true, }, { -- nightmare blade itemid = 7418, type = WEAPON_SWORD, level = 70, - unproperly = true + unproperly = true, }, { -- runed sword itemid = 7417, type = WEAPON_SWORD, level = 65, - unproperly = true + unproperly = true, }, { -- bloody edge itemid = 7416, type = WEAPON_SWORD, level = 55, - unproperly = true + unproperly = true, }, { -- cranial basher itemid = 7415, type = WEAPON_CLUB, level = 60, - unproperly = true + unproperly = true, }, { -- abyss hammer @@ -4030,8 +4030,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- titan axe @@ -4041,43 +4041,43 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- butcher's axe itemid = 7412, type = WEAPON_AXE, level = 45, - unproperly = true + unproperly = true, }, { -- ornamented axe itemid = 7411, type = WEAPON_AXE, level = 50, - unproperly = true + unproperly = true, }, { -- queen's sceptre itemid = 7410, type = WEAPON_CLUB, level = 55, - unproperly = true + unproperly = true, }, { -- northern star itemid = 7409, type = WEAPON_CLUB, level = 50, - unproperly = true + unproperly = true, }, { -- wyvern fang itemid = 7408, type = WEAPON_SWORD, level = 25, - unproperly = true + unproperly = true, }, { -- haunted blade @@ -4087,8 +4087,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- blacksteel sword @@ -4098,8 +4098,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- havoc blade @@ -4109,15 +4109,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- assassin dagger itemid = 7404, type = WEAPON_SWORD, level = 40, - unproperly = true + unproperly = true, }, { -- berserker @@ -4127,8 +4127,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- dragon slayer @@ -4138,15 +4138,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- orcish maul itemid = 7392, type = WEAPON_CLUB, level = 35, - unproperly = true + unproperly = true, }, { -- thaian sword @@ -4156,36 +4156,36 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- the justice seeker itemid = 7390, type = WEAPON_SWORD, level = 75, - unproperly = true + unproperly = true, }, { -- heroic axe itemid = 7389, type = WEAPON_AXE, level = 60, - unproperly = true + unproperly = true, }, { -- vile axe itemid = 7388, type = WEAPON_AXE, level = 55, - unproperly = true + unproperly = true, }, { -- diamond sceptre itemid = 7387, type = WEAPON_CLUB, level = 25, - unproperly = true + unproperly = true, }, { -- mercenary sword @@ -4195,29 +4195,29 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crimson sword itemid = 7385, type = WEAPON_SWORD, level = 20, - unproperly = true + unproperly = true, }, { -- mystic blade itemid = 7384, type = WEAPON_SWORD, level = 60, - unproperly = true + unproperly = true, }, { -- relic sword itemid = 7383, type = WEAPON_SWORD, level = 50, - unproperly = true + unproperly = true, }, { -- demonrage sword @@ -4227,15 +4227,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mammoth whopper itemid = 7381, type = WEAPON_CLUB, level = 20, - unproperly = true + unproperly = true, }, { -- headchopper @@ -4245,15 +4245,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- brutetamer's staff itemid = 7379, type = WEAPON_CLUB, level = 25, - unproperly = true + unproperly = true, }, { -- royal spear @@ -4261,7 +4261,7 @@ local weapons = { type = WEAPON_DISTANCE, level = 25, unproperly = true, - breakchance = 3 + breakchance = 3, }, { -- assassin star @@ -4269,7 +4269,7 @@ local weapons = { type = WEAPON_DISTANCE, level = 80, unproperly = true, - breakchance = 33 + breakchance = 33, }, { -- enchanted spear @@ -4277,7 +4277,7 @@ local weapons = { type = WEAPON_DISTANCE, level = 42, unproperly = true, - breakchance = 1 + breakchance = 1, }, { -- onyx arrow @@ -4285,7 +4285,7 @@ local weapons = { type = WEAPON_AMMO, level = 40, unproperly = true, - action = "removecount" + action = "removecount", }, { -- sniper arrow @@ -4293,7 +4293,7 @@ local weapons = { type = WEAPON_AMMO, level = 20, unproperly = true, - action = "removecount" + action = "removecount", }, { -- piercing bolt @@ -4301,7 +4301,7 @@ local weapons = { type = WEAPON_AMMO, level = 30, unproperly = true, - action = "removecount" + action = "removecount", }, { -- ruthless axe @@ -4311,8 +4311,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- infernal bolt @@ -4320,7 +4320,7 @@ local weapons = { type = WEAPON_AMMO, level = 110, unproperly = true, - action = "removecount" + action = "removecount", }, { -- the avenger @@ -4330,13 +4330,13 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- Ron the Ripper's sabre itemid = 6101, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- arbalest @@ -4346,13 +4346,13 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- banana staff itemid = 3348, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- hunting spear @@ -4360,36 +4360,36 @@ local weapons = { type = WEAPON_DISTANCE, level = 20, unproperly = true, - breakchance = 6 + breakchance = 6, }, { -- ripper lance itemid = 3346, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- templar scytheblade itemid = 3345, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- beastslayer axe itemid = 3344, type = WEAPON_AXE, level = 30, - unproperly = true + unproperly = true, }, { -- lich staff itemid = 3343, type = WEAPON_CLUB, level = 40, - unproperly = true + unproperly = true, }, { -- scythe itemid = 3453, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- power bolt @@ -4397,29 +4397,29 @@ local weapons = { type = WEAPON_AMMO, level = 55, unproperly = true, - action = "removecount" + action = "removecount", }, { -- arrow itemid = 3447, type = WEAPON_AMMO, - action = "removecount" + action = "removecount", }, { -- bolt itemid = 3446, type = WEAPON_AMMO, - action = "removecount" + action = "removecount", }, { -- bow itemid = 3350, - type = WEAPON_DISTANCE + type = WEAPON_DISTANCE, }, { -- crossbow itemid = 3349, - type = WEAPON_DISTANCE + type = WEAPON_DISTANCE, }, { -- war axe @@ -4429,15 +4429,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- arcane staff itemid = 3341, type = WEAPON_CLUB, level = 75, - unproperly = true + unproperly = true, }, { -- heavy mace @@ -4447,30 +4447,30 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- djinn blade itemid = 3339, type = WEAPON_SWORD, level = 35, - unproperly = true + unproperly = true, }, { -- bone sword itemid = 3338, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- bone club itemid = 3337, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- studded club itemid = 3336, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- twin axe @@ -4480,22 +4480,22 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- pharaoh sword itemid = 3334, type = WEAPON_SWORD, level = 45, - unproperly = true + unproperly = true, }, { -- crystal mace itemid = 3333, type = WEAPON_CLUB, level = 35, - unproperly = true + unproperly = true, }, { -- hammer of wrath @@ -4505,8 +4505,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ravager's axe @@ -4516,18 +4516,18 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- heavy machete itemid = 3330, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- daramian axe itemid = 3329, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- daramian waraxe @@ -4537,156 +4537,156 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- daramian mace itemid = 3327, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- epee itemid = 3326, type = WEAPON_SWORD, level = 30, - unproperly = true + unproperly = true, }, { -- light mace itemid = 3325, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- skull staff itemid = 3324, type = WEAPON_CLUB, level = 30, - unproperly = true + unproperly = true, }, { -- dwarven axe itemid = 3323, type = WEAPON_AXE, level = 20, - unproperly = true + unproperly = true, }, { -- dragon hammer itemid = 3322, type = WEAPON_CLUB, level = 25, - unproperly = true + unproperly = true, }, { -- enchanted staff itemid = 3321, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- fire axe itemid = 3320, type = WEAPON_AXE, level = 35, - unproperly = true + unproperly = true, }, { -- stonecutter axe itemid = 3319, type = WEAPON_AXE, level = 90, - unproperly = true + unproperly = true, }, { -- knight axe itemid = 3318, type = WEAPON_AXE, level = 25, - unproperly = true + unproperly = true, }, { -- barbarian axe itemid = 3317, type = WEAPON_AXE, level = 20, - unproperly = true + unproperly = true, }, { -- orcish axe itemid = 3316, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- guardian halberd itemid = 3315, type = WEAPON_AXE, level = 55, - unproperly = true + unproperly = true, }, { -- naginata itemid = 3314, type = WEAPON_AXE, level = 25, - unproperly = true + unproperly = true, }, { -- obsidian lance itemid = 3313, type = WEAPON_AXE, level = 20, - unproperly = true + unproperly = true, }, { -- silver mace itemid = 3312, type = WEAPON_CLUB, level = 45, - unproperly = true + unproperly = true, }, { -- clerical mace itemid = 3311, type = WEAPON_CLUB, level = 20, - unproperly = true + unproperly = true, }, { -- iron hammer itemid = 3310, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- thunder hammer itemid = 3309, type = WEAPON_CLUB, level = 85, - unproperly = true + unproperly = true, }, { -- machete itemid = 3308, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- scimitar itemid = 3307, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- golden sickle itemid = 3306, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- battle hammer itemid = 3305, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- crowbar itemid = 3304, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- great axe @@ -4696,15 +4696,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- dragon lance itemid = 3302, type = WEAPON_AXE, level = 60, - unproperly = true + unproperly = true, }, { -- broadsword @@ -4712,29 +4712,29 @@ local weapons = { type = WEAPON_SWORD, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- katana itemid = 3300, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- poison dagger itemid = 3299, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- throwing knife itemid = 3298, type = WEAPON_DISTANCE, - breakchance = 7 + breakchance = 7, }, { -- serpent sword itemid = 3297, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- warlord sword @@ -4744,68 +4744,68 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- bright sword itemid = 3295, type = WEAPON_SWORD, level = 30, - unproperly = true + unproperly = true, }, { -- short sword itemid = 3294, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- sickle itemid = 3293, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- combat knife itemid = 3292, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- knife itemid = 3291, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- silver dagger itemid = 3290, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- staff itemid = 3289, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- magic sword itemid = 3288, type = WEAPON_SWORD, level = 80, - unproperly = true + unproperly = true, }, { -- throwing star itemid = 3287, type = WEAPON_DISTANCE, - breakchance = 10 + breakchance = 10, }, { -- mace itemid = 3286, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- longsword itemid = 3285, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- ice rapier @@ -4814,18 +4814,18 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- carlin sword itemid = 3283, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- morning star itemid = 3282, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- giant sword @@ -4835,15 +4835,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fire sword itemid = 3280, type = WEAPON_SWORD, level = 30, - unproperly = true + unproperly = true, }, { -- war hammer @@ -4853,8 +4853,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- magic longsword @@ -4864,19 +4864,19 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spear itemid = 3277, type = WEAPON_DISTANCE, - breakchance = 3 + breakchance = 3, }, { -- hatchet itemid = 3276, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- double axe @@ -4886,50 +4886,50 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- axe itemid = 3274, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- sabre itemid = 3273, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- rapier itemid = 3272, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- spike sword itemid = 3271, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- club itemid = 3270, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- halberd itemid = 3269, type = WEAPON_AXE, level = 25, - unproperly = true + unproperly = true, }, { -- hand axe itemid = 3268, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- dagger itemid = 3267, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- battle axe @@ -4938,8 +4938,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- two handed sword @@ -4949,18 +4949,18 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sword itemid = 3264, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- giant smithhammer itemid = 12510, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- wand of dragonbreath @@ -4972,8 +4972,8 @@ local weapons = { damage = { 13, 25 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of vortex @@ -4985,8 +4985,8 @@ local weapons = { damage = { 8, 18 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of cosmic energy @@ -4998,8 +4998,8 @@ local weapons = { damage = { 37, 53 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of decay @@ -5011,8 +5011,8 @@ local weapons = { damage = { 23, 37 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of inferno @@ -5024,8 +5024,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- moonlight rod @@ -5037,8 +5037,8 @@ local weapons = { damage = { 13, 25 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- necrotic rod @@ -5050,8 +5050,8 @@ local weapons = { damage = { 23, 37 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- hailstorm rod @@ -5063,8 +5063,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- snakebit rod @@ -5076,8 +5076,8 @@ local weapons = { damage = { 8, 18 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- terra rod @@ -5089,49 +5089,49 @@ local weapons = { damage = { 37, 53 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- snowball itemid = 2992, type = WEAPON_DISTANCE, - action = "removecount" + action = "removecount", }, { -- small stone itemid = 1781, type = WEAPON_DISTANCE, - breakchance = 3 - } + breakchance = 3, + }, } for _, w in ipairs(weapons) do local weapon = Weapon(w.type) weapon:id(w.itemid) - if (w.action) then + if w.action then weapon:action(w.action) end - if (w.breakchance) then + if w.breakchance then weapon:breakChance(w.breakchance) end - if (w.level) then + if w.level then weapon:level(w.level) end - if (w.mana) then + if w.mana then weapon:mana(w.mana) end - if (w.unproperly) then + if w.unproperly then weapon:wieldUnproperly(w.unproperly) end - if (w.damage) then + if w.damage then weapon:damage(w.damage[1], w.damage[2]) end - if (w.wandType) then + if w.wandType then weapon:element(w.wandType) end - if (w.vocation) then + if w.vocation then for _, v in ipairs(w.vocation) do weapon:vocation(v[1], v[2] or false, v[3] or false) end diff --git a/data-otservbr-global/lib/compat/compat.lua b/data-otservbr-global/lib/compat/compat.lua index 5cd4118cf3b..14e28d6e503 100644 --- a/data-otservbr-global/lib/compat/compat.lua +++ b/data-otservbr-global/lib/compat/compat.lua @@ -94,21 +94,37 @@ setConditionFormula = Condition.setFormula addDamageCondition = Condition.addDamage addOutfitCondition = Condition.setOutfit -function doCombat(cid, combat, var) return combat:execute(cid, var) end +function doCombat(cid, combat, var) + return combat:execute(cid, var) +end -function isCreature(cid) return Creature(cid) ~= nil end +function isCreature(cid) + return Creature(cid) ~= nil +end -function isPlayer(cid) return Player(cid) ~= nil end +function isPlayer(cid) + return Player(cid) ~= nil +end -function isMonster(cid) return Monster(cid) ~= nil end +function isMonster(cid) + return Monster(cid) ~= nil +end -function isSummon(cid) return Creature(cid):getMaster() ~= nil end +function isSummon(cid) + return Creature(cid):getMaster() ~= nil +end -function isNpc(cid) return Npc(cid) ~= nil end +function isNpc(cid) + return Npc(cid) ~= nil +end -function isItem(uid) return Item(uid) ~= nil end +function isItem(uid) + return Item(uid) ~= nil +end -function isContainer(uid) return Container(uid) ~= nil end +function isContainer(uid) + return Container(uid) ~= nil +end function getCreatureName(cid) local c = Creature(cid) @@ -171,7 +187,7 @@ function getCreatureSummons(cid) local result = {} for _, summon in ipairs(c:getSummons()) do - result[#result+1] = summon:getId() + result[#result + 1] = summon:getId() end return result end @@ -527,17 +543,23 @@ function isPremium(cid) return p ~= nil and p:isPremium() or false end -function getBlessingsCost(level, byCommand) return Blessings.getBlessingsCost(level, byCommand) end +function getBlessingsCost(level, byCommand) + return Blessings.getBlessingsCost(level, byCommand) +end -function getPvpBlessingCost(level, byCommand) return Blessings.getPvpBlessingCost(level, byCommand) end +function getPvpBlessingCost(level, byCommand) + return Blessings.getPvpBlessingCost(level, byCommand) +end function getPlayersByIPAddress(ip, mask) - if mask == nil then mask = 0xFFFFFFFF end + if mask == nil then + mask = 0xFFFFFFFF + end local masked = bit.band(ip, mask) local result = {} for _, player in ipairs(Game.getPlayers()) do if bit.band(player:getIp(), mask) == masked then - result[#result+1] = player:getId() + result[#result + 1] = player:getId() end end return result @@ -546,7 +568,7 @@ end function getOnlinePlayers() local result = {} for _, player in ipairs(Game.getPlayers()) do - result[#result+1] = player:getName() + result[#result + 1] = player:getName() end return result end @@ -555,7 +577,7 @@ function getPlayersByAccountNumber(accountNumber) local result = {} for _, player in ipairs(Game.getPlayers()) do if player:getAccountId() == accountNumber then - result[#result+1] = player:getId() + result[#result + 1] = player:getId() end end return result @@ -837,7 +859,7 @@ function getPartyMembers(cid) local result = { party:getLeader():getId() } for _, member in ipairs(party:getMembers()) do - result[#result+1] = member:getId() + result[#result + 1] = member:getId() end return result end @@ -853,7 +875,7 @@ function getMonsterTargetList(cid) local result = {} for _, creature in ipairs(monster:getTargetList()) do if monster:isTarget(creature) then - result[#result+1] = creature:getId() + result[#result + 1] = creature:getId() end end return result @@ -870,7 +892,7 @@ function getMonsterFriendList(cid) local result = {} for _, creature in ipairs(monster:getFriendList()) do if not creature:isRemoved() and creature:getPosition().z == z then - result[#result+1] = creature:getId() + result[#result + 1] = creature:getId() end end return result @@ -1000,11 +1022,17 @@ function doAddContainerItemEx(uid, virtualId) return res end -function doSendMagicEffect(pos, magicEffect, ...) return Position(pos):sendMagicEffect(magicEffect, ...) end +function doSendMagicEffect(pos, magicEffect, ...) + return Position(pos):sendMagicEffect(magicEffect, ...) +end -function doSendDistanceShoot(fromPos, toPos, distanceEffect, ...) return Position(fromPos):sendDistanceEffect(toPos, distanceEffect, ...) end +function doSendDistanceShoot(fromPos, toPos, distanceEffect, ...) + return Position(fromPos):sendDistanceEffect(toPos, distanceEffect, ...) +end -function isSightClear(fromPos, toPos, floorCheck) return Position(fromPos):isSightClear(toPos, floorCheck) end +function isSightClear(fromPos, toPos, floorCheck) + return Position(fromPos):isSightClear(toPos, floorCheck) +end function getPromotedVocation(vocationId) local vocation = Vocation(vocationId) @@ -1047,7 +1075,9 @@ end function getHouseTown(houseId) local h = House(houseId) - if h == nil then return false end + if h == nil then + return false + end local t = h:getTown() return t and t:getId() or false end @@ -1057,17 +1087,29 @@ function getHouseTilesSize(houseId) return h and h:getTileCount() or false end -function isItemStackable(itemId) return ItemType(itemId):isStackable() end +function isItemStackable(itemId) + return ItemType(itemId):isStackable() +end -function isItemRune(itemId) return ItemType(itemId):isRune() end +function isItemRune(itemId) + return ItemType(itemId):isRune() +end -function isItemDoor(itemId) return ItemType(itemId):isDoor() end +function isItemDoor(itemId) + return ItemType(itemId):isDoor() +end -function isItemContainer(itemId) return ItemType(itemId):isContainer() end +function isItemContainer(itemId) + return ItemType(itemId):isContainer() +end -function isItemFluidContainer(itemId) return ItemType(itemId):isFluidContainer() end +function isItemFluidContainer(itemId) + return ItemType(itemId):isFluidContainer() +end -function isItemMovable(itemId) return ItemType(itemId):isMovable() end +function isItemMovable(itemId) + return ItemType(itemId):isMovable() +end function isCorpse(uid) local i = Item(uid) @@ -1077,9 +1119,13 @@ end isItemMoveable = isItemMovable isMoveable = isMovable -function getItemName(itemId) return ItemType(itemId):getName() end +function getItemName(itemId) + return ItemType(itemId):getName() +end -function getItemWeight(itemId, ...) return ItemType(itemId):getWeight(...) / 100 end +function getItemWeight(itemId, ...) + return ItemType(itemId):getWeight(...) / 100 +end function getItemDescriptions(itemId) local itemType = ItemType(itemId) @@ -1087,7 +1133,7 @@ function getItemDescriptions(itemId) name = itemType:getName(), plural = itemType:getPluralName(), article = itemType:getArticle(), - description = itemType:getDescription() + description = itemType:getDescription(), } end @@ -1127,7 +1173,9 @@ function getItemRWInfo(uid) return rwFlags end -function getContainerCapById(itemId) return ItemType(itemId):getCapacity() end +function getContainerCapById(itemId) + return ItemType(itemId):getCapacity() +end function getFluidSourceType(itemId) local it = ItemType(itemId) @@ -1380,7 +1428,7 @@ function getConfigInfo(info) if type(info) ~= "string" then return nil end - dofile('config.lua') + dofile("config.lua") return _G[info] end @@ -1514,7 +1562,9 @@ function doTileAddItemEx(pos, uid, flags) return false end -function isInArray(array, value) return table.contains(array, value) end +function isInArray(array, value) + return table.contains(array, value) +end function doCreateItem(itemid, count, pos) local tile = Tile(pos) diff --git a/data-otservbr-global/lib/core/load.lua b/data-otservbr-global/lib/core/load.lua index 186eca44571..33acae25735 100644 --- a/data-otservbr-global/lib/core/load.lua +++ b/data-otservbr-global/lib/core/load.lua @@ -1,2 +1,2 @@ -dofile(DATA_DIRECTORY .. '/lib/core/storages.lua') -dofile(DATA_DIRECTORY .. '/lib/core/quests.lua') +dofile(DATA_DIRECTORY .. "/lib/core/storages.lua") +dofile(DATA_DIRECTORY .. "/lib/core/quests.lua") diff --git a/data-otservbr-global/lib/core/quests.lua b/data-otservbr-global/lib/core/quests.lua index b93495fff59..ef61ee2549b 100644 --- a/data-otservbr-global/lib/core/quests.lua +++ b/data-otservbr-global/lib/core/quests.lua @@ -11,7 +11,7 @@ if not Quests then missionId = 1, startValue = 1, endValue = 1, - description = "You broke the first seal." + description = "You broke the first seal.", }, [2] = { name = "The Plague Seal", @@ -19,7 +19,7 @@ if not Quests then missionId = 2, startValue = 1, endValue = 1, - description = "You broke the second seal." + description = "You broke the second seal.", }, [3] = { name = "The Seal of Demonrage", @@ -27,7 +27,7 @@ if not Quests then missionId = 3, startValue = 1, endValue = 1, - description = "You broke the third seal." + description = "You broke the third seal.", }, [4] = { name = "The Seal of Sacrifice", @@ -35,7 +35,7 @@ if not Quests then missionId = 4, startValue = 1, endValue = 1, - description = "You broke the fourth seal." + description = "You broke the fourth seal.", }, [5] = { name = "The Seal of True Path", @@ -43,7 +43,7 @@ if not Quests then missionId = 5, startValue = 1, endValue = 1, - description = "You broke the fifth seal." + description = "You broke the fifth seal.", }, [6] = { name = "The Seal of Logic", @@ -51,7 +51,7 @@ if not Quests then missionId = 6, startValue = 1, endValue = 1, - description = "You broke the sixth seal." + description = "You broke the sixth seal.", }, [7] = { name = "The Kiss of the Banshee Queen", @@ -59,7 +59,7 @@ if not Quests then missionId = 7, startValue = 1, endValue = 1, - description = "The Banshee Queen kissed you. This meant your death, and part of your soul always belongs to her now. You broke the last seal." + description = "The Banshee Queen kissed you. This meant your death, and part of your soul always belongs to her now. You broke the last seal.", }, [8] = { name = "The Final Battle", @@ -67,9 +67,9 @@ if not Quests then missionId = 8, startValue = 1, endValue = 1, - description = "You have braved all dangers of the Banshee Quest and escaped the dungeon alive. The end room is sealed for you from now on." - } - } + description = "You have braved all dangers of the Banshee Quest and escaped the dungeon alive. The end room is sealed for you from now on.", + }, + }, }, [2] = { name = "The Paradox Tower", @@ -87,7 +87,7 @@ if not Quests then [2] = "Zoltan told you about Crunor's Caress, a druid order originating from Carlin. Try to find out more about this.", [3] = "Padreia told you that Crunor's Caress founded the inn Crunor's Cottage south of Mt. Sternum. Try to find out more about this.", [4] = "Lubo told you about a magical experiment that went wrong and created a demonbunny. Someone might be interested in this...", - } + }, }, [2] = { name = "Favorite colour: Green", @@ -97,8 +97,8 @@ if not Quests then endValue = 2, states = { [1] = "Favorite colour is the green.", - [2] = "Favorite colour is the green." - } + [2] = "Favorite colour is the green.", + }, }, [3] = { name = "The Secret of Mathemagics", @@ -108,10 +108,10 @@ if not Quests then endValue = 2, states = { [1] = "You learnt Mathemagics. Everything is based on the simple fact that 1+1=1.", - [2] = "You learnt Mathemagics. Everything is based on the simple fact that 1+1=1." - } - } - } + [2] = "You learnt Mathemagics. Everything is based on the simple fact that 1+1=1.", + }, + }, + }, }, [3] = { name = "Spike Task", @@ -125,11 +125,8 @@ if not Quests then startValue = 0, endValue = 100, description = function(player) - return string.format( - "You have %d points of task. You need 100 points to take Cave Explorer outfit.", - (math.max(player:getStorageValue(Storage.SpikeTaskQuest.Gnomilly), 0)) - ) - end + return string.format("You have %d points of task. You need 100 points to take Cave Explorer outfit.", (math.max(player:getStorageValue(Storage.SpikeTaskQuest.Gnomilly), 0))) + end, }, [2] = { name = "Second Task", @@ -138,11 +135,8 @@ if not Quests then startValue = 0, endValue = 100, description = function(player) - return string.format( - "You have %d points of task. You need 100 points to take first addon.", - (math.max(player:getStorageValue(Storage.SpikeTaskQuest.Gnombold.Points), 0)) - ) - end + return string.format("You have %d points of task. You need 100 points to take first addon.", (math.max(player:getStorageValue(Storage.SpikeTaskQuest.Gnombold.Points), 0))) + end, }, [3] = { name = "Third Task", @@ -151,16 +145,13 @@ if not Quests then startValue = 0, endValue = 100, description = function(player) - return string.format( - "You have %d points of task. You need 100 points to take second addon.", - (math.max(player:getStorageValue(Storage.SpikeTaskQuest.Gnomargery.Points), 0)) - ) - end - } - } + return string.format("You have %d points of task. You need 100 points to take second addon.", (math.max(player:getStorageValue(Storage.SpikeTaskQuest.Gnomargery.Points), 0))) + end, + }, + }, }, [4] = { - name = "A Father\'s Burden", + name = "A Father's Burden", startStorageId = Storage.FathersBurden.QuestLog, startStorageValue = 1, missions = { @@ -173,8 +164,8 @@ if not Quests then states = { [1] = "Gather the material Tereban listed. \z Talk to him about your mission when you have given him everything he was looking for.", - [2] = "You brought all the required materials to Tereban and guaranteed his sons a great birthday party." - } + [2] = "You brought all the required materials to Tereban and guaranteed his sons a great birthday party.", + }, }, [2] = { name = "The Magic Bow - Sinew", @@ -184,8 +175,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the wyvern Heoni in the Edron mountains and take his sinew to Tereban.", - [2] = "You delivered Heoni\'s sinew to Tereban." - } + [2] = "You delivered Heoni's sinew to Tereban.", + }, }, [3] = { name = "The Magic Bow - Wood", @@ -196,8 +187,8 @@ if not Quests then states = { [1] = "Find the special wood in the barbarian camps of Hrodmir and bring it to Tereban. \z It might be a good idea to start looking in the northernmost camp.", - [2] = "You delivered the Wood to Tereban." - } + [2] = "You delivered the Wood to Tereban.", + }, }, [4] = { name = "The Magic Robe - Cloth", @@ -208,8 +199,8 @@ if not Quests then states = { [1] = "Find the spectral cloth hidden deep in the crypts of the isle of the kings and bring it to Tereban. \z You might have to look for a secret entrance.", - [2] = "You delivered the spectral cloth to Tereban." - } + [2] = "You delivered the spectral cloth to Tereban.", + }, }, [5] = { name = "The Magic Robe - Silk", @@ -219,8 +210,8 @@ if not Quests then endValue = 2, states = { [1] = "Find exquisite silk in the spider caves of southern Zao and deliver it to Tereban.", - [2] = "You brought Tereban the required silk." - } + [2] = "You brought Tereban the required silk.", + }, }, [6] = { name = "The Magic Rod - Crystal", @@ -230,8 +221,8 @@ if not Quests then endValue = 2, states = { [1] = "Find a magic crystal in the tomb buried under the sand east of Ankrahmun and bring it to Tereban.", - [2] = "Tereban received the magic crystal he was looking for." - } + [2] = "Tereban received the magic crystal he was looking for.", + }, }, [7] = { name = "The Magic Rod - Root", @@ -241,8 +232,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the mystic root under the city of Banuta and bring it to Tereban.", - [2] = "The magic root was delievered to Tereban." - } + [2] = "The magic root was delievered to Tereban.", + }, }, [8] = { name = "The Magic Shield - Iron", @@ -253,8 +244,8 @@ if not Quests then states = { [1] = "Find some old iron in the mines of Kazordoon for Tereban. Don't get lost - \z start searching close to the city.", - [2] = "Tereban got the old iron he required." - } + [2] = "Tereban got the old iron he required.", + }, }, [9] = { name = "The Magic Shield - Scale", @@ -264,13 +255,13 @@ if not Quests then endValue = 2, states = { [1] = "Find the dragon Glitterscale in the caves north of Thais and take its scale to Tereban.", - [2] = "You handed the looted scale to Tereban." - } - } - } + [2] = "You handed the looted scale to Tereban.", + }, + }, + }, }, [5] = { - name = "Bigfoot\'s Burden", + name = "Bigfoot's Burden", startStorageId = Storage.BigfootBurden.QuestLine, startStorageValue = 1, missions = { @@ -282,7 +273,7 @@ if not Quests then endValue = 2, description = "The dwarf Xelvar has sent you to meet the gnome Gnomerik. \z He can recruit you to the Bigfoot Company. \z - Use the teleporter near Xelvar to enter the gnomish base and start looking for Gnomerik." + Use the teleporter near Xelvar to enter the gnomish base and start looking for Gnomerik.", }, [2] = { name = "A New Recruit", @@ -290,7 +281,7 @@ if not Quests then missionId = 1034, startValue = 3, endValue = 4, - description = "You have found the gnomish recruiter and are ready to become a Bigfoot." + description = "You have found the gnomish recruiter and are ready to become a Bigfoot.", }, [3] = { name = "Recruitment: A Test in Gnomology", @@ -299,11 +290,11 @@ if not Quests then startValue = 5, endValue = 7, states = { - [5] = "Pass Gnomerik\'s test by answering his questions. \z + [5] = "Pass Gnomerik's test by answering his questions. \z If you fail to get a high enough score drink a mushroom beer and start again.", [6] = "You have passed the gnomish psychology test and can proceed to the medical exam. \z - Talk to Gnomespector about your next examination." - } + Talk to Gnomespector about your next examination.", + }, }, [4] = { name = "Recruitment: Medical Examination", @@ -311,7 +302,7 @@ if not Quests then missionId = 1036, startValue = 8, endValue = 9, - description = "Walk through the g-ray apparatus for your g-raying." + description = "Walk through the g-ray apparatus for your g-raying.", }, [5] = { name = "Recruitment: Ear Examination", @@ -323,8 +314,8 @@ if not Quests then [10] = "You have been g-rayed. It has been an ... unexpected experience. Now you are ready for your \z ear examination. Walk up to doctor Gnomedix and wait for him to finish your ear examination.", [11] = "You passed the ear examination. Well, at least most of you did. \z - Now talk to Gnomaticus about your next test. " - } + Now talk to Gnomaticus about your next test. ", + }, }, [6] = { name = "Recruitment: Gnomish Warfare", @@ -338,7 +329,7 @@ if not Quests then Don't hit an innocent target as it will reset your hit counter. %d / 5", (math.max(player:getStorageValue(Storage.BigfootBurden.Shooting), 0)) ) - end + end, }, [7] = { name = "Recruitment: Gnomish Warfare", @@ -346,7 +337,7 @@ if not Quests then missionId = 1039, startValue = 15, endValue = 16, - description = "You are now ready for your endurance test. Talk to Gnomewart about it." + description = "You are now ready for your endurance test. Talk to Gnomewart about it.", }, [8] = { name = "Recruitment: Endurance Test", @@ -357,8 +348,8 @@ if not Quests then states = { [17] = "Enter the lower chamber for your endurance test. Reach the teleporter north of the hall.", [18] = "You have passed the endurance test. Report back to Gnomewart.", - [19] = "You passed the endurance test and are ready to talk to Gnomelvis about your soul melody." - } + [19] = "You passed the endurance test and are ready to talk to Gnomelvis about your soul melody.", + }, }, [9] = { name = "Recruitment: Soul Melody", @@ -369,8 +360,8 @@ if not Quests then states = { [21] = "Find your personal soul melody by trial and error. \z Create the complete soul melody of seven notes and then report to Gnomelvis. Red notes indicate a failure.", - [22] = "You found your very own soul melody. You should talk to Gnomelvis about it!" - } + [22] = "You found your very own soul melody. You should talk to Gnomelvis about it!", + }, }, [10] = { name = "Recruitment", @@ -378,7 +369,7 @@ if not Quests then missionId = 1042, startValue = 1, endValue = 2, - description = "You are now a true member of the Bigfoot company." + description = "You are now a true member of the Bigfoot company.", }, [11] = { name = "Gnome Reputation", @@ -392,7 +383,7 @@ if not Quests then \nReputation 30 - I \nReputation 120 - II \nReputation 480 - III \nReputation 1440 - IV \n", (math.max(player:getStorageValue(Storage.BigfootBurden.Rank), 0)) ) - end + end, }, [12] = { name = "Daily Minor: Crystal Keeper", @@ -406,7 +397,7 @@ if not Quests then Damaged crystals will not glow.\n%d / 5", (math.max(player:getStorageValue(Storage.BigfootBurden.RepairedCrystalCount), 0)) ) - end + end, }, [13] = { name = "Daily Minor: Raiders of the Lost Spark", @@ -420,7 +411,7 @@ if not Quests then Gather 7 charges and report back. %d / 7", (math.max(player:getStorageValue(Storage.BigfootBurden.ExtractedCount), 0)) ) - end + end, }, [14] = { name = "Daily Minor Plus: Exterminators", @@ -429,11 +420,8 @@ if not Quests then startValue = 0, endValue = 10, description = function(player) - return string.format( - "Kill 10 of the wigglers for the gnomes. Then report back. %d / 10", - (math.max(player:getStorageValue(Storage.BigfootBurden.ExterminatedCount), 0)) - ) - end + return string.format("Kill 10 of the wigglers for the gnomes. Then report back. %d / 10", (math.max(player:getStorageValue(Storage.BigfootBurden.ExterminatedCount), 0))) + end, }, [15] = { name = "Daily Minor Plus: Mushroom Digger", @@ -448,7 +436,7 @@ if not Quests then Then report back to the gnomes. %d / 3", (math.max(player:getStorageValue(Storage.BigfootBurden.MushroomCount), 0)) ) - end + end, }, [16] = { name = "Daily Major: Matchmaker", @@ -459,11 +447,11 @@ if not Quests then states = { [0] = "You have to enter the crystal caves and find a crystal that is fitting the crystal you got \z from the gnomes. Use the crystal on one of the bigger red crystals in the caves to bond them.", - [1] = "You have finished this quest for now." - } + [1] = "You have finished this quest for now.", + }, }, [17] = { - name = "Daily Major: The Tinker\'s Bell", + name = "Daily Major: The Tinker's Bell", storageId = Storage.BigfootBurden.GolemCount, missionId = 1049, startValue = 0, @@ -474,7 +462,7 @@ if not Quests then automatically be teleported to the gnomish workshops. Then report back to the gnomes. %d / 4", (math.max(player:getStorageValue(Storage.BigfootBurden.GolemCount), 0)) ) - end + end, }, [18] = { name = "Daily Major Advanced: Spores", @@ -483,7 +471,7 @@ if not Quests then startValue = 0, endValue = 4, description = "Gather spores in the correct order. \z - Your spore gathering list will display the next color you have to look for." + Your spore gathering list will display the next color you have to look for.", }, [19] = { name = "Daily Major Advanced: Yet Another Grinding", @@ -491,7 +479,7 @@ if not Quests then missionId = 1051, startValue = 0, endValue = 2, - description = "Gather a grindstone from the lava area en report back." + description = "Gather a grindstone from the lava area en report back.", }, [20] = { name = "Gnomish War Hero (Warzone 1)", @@ -500,9 +488,9 @@ if not Quests then startValue = 1, endValue = 2, states = { - [1] = "Deliver the Deathstrike\'s snippet to gnomission to enter the first warzone for free.", - [2] = "You may enter the first warzone without using a mission crystal." - } + [1] = "Deliver the Deathstrike's snippet to gnomission to enter the first warzone for free.", + [2] = "You may enter the first warzone without using a mission crystal.", + }, }, [21] = { name = "Gnomish War Hero (Warzone 2)", @@ -511,9 +499,9 @@ if not Quests then startValue = 1, endValue = 2, states = { - [1] = "Deliver the Gnomevil\'s hat to gnomission to enter the second warzone for free.", - [2] = "You may enter the second warzone without using a mission crystal." - } + [1] = "Deliver the Gnomevil's hat to gnomission to enter the second warzone for free.", + [2] = "You may enter the second warzone without using a mission crystal.", + }, }, [22] = { name = "Gnomish War Hero (Warzone 3)", @@ -522,11 +510,11 @@ if not Quests then startValue = 1, endValue = 2, states = { - [1] = "Deliver the Abyssador\'s lash to gnomission to enter the third warzone for free.", - [2] = "You may enter the third warzone without using a mission crystal." - } - } - } + [1] = "Deliver the Abyssador's lash to gnomission to enter the third warzone for free.", + [2] = "You may enter the third warzone without using a mission crystal.", + }, + }, + }, }, [6] = { name = "Children of the Revolution", @@ -542,8 +530,8 @@ if not Quests then states = { [1] = "Your Mission is to go to a little camp of lizards at north-east of the Dragonblaze Peaks. \z You have to find and deliver the Tactical map complete the mission.", - [2] = "You delivered the Tactical map to Zalamon." - } + [2] = "You delivered the Tactical map to Zalamon.", + }, }, [2] = { name = "Mission 1: Corruption", @@ -552,10 +540,10 @@ if not Quests then startValue = 1, endValue = 3, states = { - [1] = "Go to the Temple of Equilibrium (it\'s marked on your map) and find out what happened there.", + [1] = "Go to the Temple of Equilibrium (it's marked on your map) and find out what happened there.", [2] = "The temple has been corrupted and is lost. Zalamon should be informed about this as soon as possible.", - [3] = "You already reported Zalamon about the Temple! Ask him for new mission!" - } + [3] = "You already reported Zalamon about the Temple! Ask him for new mission!", + }, }, [3] = { name = "Mission 2: Imperial Zzecret Weaponzz", @@ -569,8 +557,8 @@ if not Quests then [2] = "You spied 1 of 3 buildings of the camp.", [3] = "You spied 2 of 3 buildings of the camp.", [4] = "You spied 3 of 3 buildings of the camp. Zalamon should be informed about this as soon as possible.", - [5] = "You already reported Zalamon about the camp! Ask him for new mission!" - } + [5] = "You already reported Zalamon about the camp! Ask him for new mission!", + }, }, [4] = { name = "Mission 3: Zee Killing Fieldzz", @@ -579,12 +567,12 @@ if not Quests then startValue = 1, endValue = 3, states = { - [1] = "Get the poison from Zalamon\'s storage room. Then go to the teleporter to the Muggy Plains and head \z + [1] = "Get the poison from Zalamon's storage room. Then go to the teleporter to the Muggy Plains and head \z east from there to the rice fields. Go to the very top rice field and use the poison anywhere on the water.", - [2] = "The rice has been poisoned. This will weaken the Emperor\'s army significantly. \z + [2] = "The rice has been poisoned. This will weaken the Emperor's army significantly. \z Return and tell Zalamon about your success.", - [3] = "You already reported Zalamon about your success! Ask him for new mission!" - } + [3] = "You already reported Zalamon about your success! Ask him for new mission!", + }, }, [5] = { name = "Mission 4: Zze Way of Zztonezz", @@ -596,13 +584,13 @@ if not Quests then [1] = "Your mission is to find a way to enter the north of the valley and find a \z passage to the great gate itself. Search any temples or settlements you come across for hidden passages.", [2] = "Report Zalamon about the strange symbols that you found.", - [3] = "Get the greasy oil from Zalamon\'s storage room and put them on the levers that you found.", + [3] = "Get the greasy oil from Zalamon's storage room and put them on the levers that you found.", [4] = "Due to being extra greasy, the leavers can now be moved.", [5] = "You found the right combination for the puzzle in the mountains and triggered some kind of mechanism. \z You should head back to Zalamon to report your success.", [6] = "You already reported Zalamon about your success! You got a Tome of Knowledge as reward! \z - Ask him for new mission!" - } + Ask him for new mission!", + }, }, [6] = { name = "Mission 5: Phantom Army", @@ -613,10 +601,10 @@ if not Quests then states = { [1] = "Zalamon has sent you on a quest to find out what lies beneath the secret portal in the temple. Find it and explore the other side.", [2] = "Eternal guardians and lizard chosen has been awaken. Survive them and report it to Zalamon!", - [3] = "You Survived the Waves and reported Zalamon about your success! You got a Serpent Crest as reward!" - } - } - } + [3] = "You Survived the Waves and reported Zalamon about your success! You got a Serpent Crest as reward!", + }, + }, + }, }, [7] = { name = "Factions", @@ -632,8 +620,8 @@ if not Quests then states = { [1] = "Melchior told you the word "Djanni'hah" which can be used to talk to Djinns. \z Be aware that once you become an ally of one Djinn race, you cannot switch sides anymore.", - [2] = "" - } + [2] = "", + }, }, [2] = { name = "The Marid and the Efreet - Marid Faction", @@ -644,8 +632,8 @@ if not Quests then states = { [1] = "You have joined the Marid. These friendly, blue Djinns are honest and fair allies. \z You have pledged eternal loyalty to King Gabel and may enter Asha'daramai freely. Djanni'hah!", - [2] = "" - } + [2] = "", + }, }, [3] = { name = "The Efreet and the Efreet - Efreet Faction", @@ -656,10 +644,10 @@ if not Quests then states = { [1] = "You have joined the Efreet. These evil, green Djinns are always up to mischievous pranks. \z You have pledged eternal loyalty to King Malor and may enter Mal'ouquah freely. Djanni'hah!", - [2] = "" - } - } - } + [2] = "", + }, + }, + }, }, [8] = { name = "Friends and Traders", @@ -676,8 +664,8 @@ if not Quests then [1] = "Big Ben, the cyclops in Ab'Dendriel sends you to bring him 3 bast skirts for his woman. \z After this he will help you to forge different steel.", [2] = "Big Ben, the cyclops in Ab'Dendriel will help you to forge different steel now. \z - Just ask him if you need something." - } + Just ask him if you need something.", + }, }, [2] = { name = "The Mermaid Marina", @@ -689,8 +677,8 @@ if not Quests then [1] = "Marina, the mermaid north of Sabrehaven sends you to bring her 50 honeycombs. \z After this she will help you create spool of yarn.", [2] = "Marina, the mermaid north of Sabrehaven will help you to create a spool of yarn \z - from 10 pieces of spider silk. Just ask her if you need something." - } + from 10 pieces of spider silk. Just ask her if you need something.", + }, }, [3] = { name = "The Blessed Stake", @@ -709,11 +697,11 @@ if not Quests then [8] = 'You received Kasmir\'s prayer: "Let there be honor and humility". Now, bring your stake to Rahkem in Ankrahmun for the next line of the prayer.', [9] = 'You received Rahkem\'s prayer: "Let there be power and compassion". Now, bring your stake to Brewster in Port Hope for the next line of the prayer.', [10] = 'You received Brewster\'s prayer: "Your hand shall be guided - your feet shall walk in harmony". Now, bring your stake to Tyrias in Liberty Bay for the next line of the prayer.', - [11] = 'You received Tyrias\' prayer: "Your mind shall be a vessel for joy, light and wisdom". He wasn\'t exactly happy though and said that if you need some mumbo jumbo again, you should rather go to Chondur.', - [12] = "Chondur was surprised to hear that you had to travel through all of Tibia to have your wooden stake blessed. He offered you help with the blessing if you should need one again in the future." - } - } - } + [11] = "You received Tyrias' prayer: \"Your mind shall be a vessel for joy, light and wisdom\". He wasn't exactly happy though and said that if you need some mumbo jumbo again, you should rather go to Chondur.", + [12] = "Chondur was surprised to hear that you had to travel through all of Tibia to have your wooden stake blessed. He offered you help with the blessing if you should need one again in the future.", + }, + }, + }, }, [9] = { name = "Hot Cuisine", @@ -748,7 +736,7 @@ if not Quests then [10] = "You have completed the ninth dish, the tenth dish he will teach you to prepare is Carrot Cake. \z Bring him the ingredients he told you.", [11] = "You have completed the tenth dish. You are now able to obtain the cookbook from \z - Jean Pierre\'s room upstairs.", + Jean Pierre's room upstairs.", [12] = "The eleventh dish he will teach you to prepare is Coconut Shrimp Bake. \z Bring him the ingredients he told you.", [13] = "You have completed the eleventh dish, the twelfth dish he will teach you to prepare is Blackjack. \z @@ -757,10 +745,10 @@ if not Quests then prepare is Demonic Candy Balls. Bring him the ingredients he told you.", [15] = "You have completed the thirteenth dish, the fourteenth dish he will teach you to \z prepare is Sweet Mangonaise Elixir. Bring him the ingredients he told you.", - [16] = "You have completed all the dishes. You are now able to make all the dishes in any order you want." - } - } - } + [16] = "You have completed all the dishes. You are now able to make all the dishes in any order you want.", + }, + }, + }, }, [10] = { name = "In Service of Yalahar", @@ -780,8 +768,8 @@ if not Quests then [3] = "You cleaned 2 pipes of 4 from the garbage.", [4] = "You cleaned 3 pipes of 4 from the garbage.", [5] = "You cleaned 4 pipes of 4 from the garbage. Go back to Palimuth and report your mission", - [6] = "You cleaned all pipes from the garbage! Go back to Palimuth and ask for mission." - } + [6] = "You cleaned all pipes from the garbage! Go back to Palimuth and ask for mission.", + }, }, [2] = { name = "Mission 02: Watching the Watchmen", @@ -798,8 +786,8 @@ if not Quests then [5] = "You reported to 4 of 7 guards", [6] = "You reported to 5 of 7 guards", [7] = "You reported to 6 of 7 guards", - [8] = "You reported to 7 of 7 guards! Go back to Palimuth and ask for mission." - } + [8] = "You reported to 7 of 7 guards! Go back to Palimuth and ask for mission.", + }, }, [3] = { name = "Mission 03: Death to the Deathbringer", @@ -815,8 +803,8 @@ if not Quests then [4] = "Ask Palimuth for mission.", [5] = "First you will need to kill the three plague bearers and then get The Alchemists' Formulas. \z When this have been done head back to either Palimuth (good side) or Yalahari (Azerus) (bad side).", - [6] = "Ask Azerus the Yalahari for a mission." - } + [6] = "Ask Azerus the Yalahari for a mission.", + }, }, [4] = { name = "Mission 04: Good to be Kingpin", @@ -832,8 +820,8 @@ if not Quests then [3] = "You decided to help Palimuth, report him your mission.", [4] = "You decided to help Azerus, report him your mission. ", [5] = "Get back to Azerus and report him your mission.", - [6] = "Ask Azerus for a mission." - } + [6] = "Ask Azerus for a mission.", + }, }, [5] = { name = "Mission 05: Food or Fight", @@ -853,8 +841,8 @@ if not Quests then Then report the one you decided your mission.", [6] = "You decided to help Palimuth, report him your mission.", [7] = "You decided to help Azerus, report him your mission.", - [8] = "Ask Azerus for a mission." - } + [8] = "Ask Azerus for a mission.", + }, }, [6] = { name = "Mission 06: Frightening Fuel", @@ -872,8 +860,8 @@ if not Quests then [3] = "Good side: Go to Palimuth, ask him about your mission, and hand in the charm. Bad side: \z Ask about your mission to Yalahari (Azerus) and give it back.", [4] = "Get back to Azerus and report him your mission.", - [5] = "Ask Azerus for a mission." - } + [5] = "Ask Azerus for a mission.", + }, }, [7] = { name = "Mission 07: A Fishy Mission", @@ -889,8 +877,8 @@ if not Quests then about the Quara and she will explain what their problem is.", [3] = "Get back to Palimuth and report him your mission.", [4] = "You killed the Quarabosses. Ask Azerus for a mission.", - [5] = "Ask Azerus for a mission." - } + [5] = "Ask Azerus for a mission.", + }, }, [8] = { name = "Mission 08: Dangerous Machinations", @@ -904,8 +892,8 @@ if not Quests then find a pattern crystal, which will be used to supply weapons to help take control of the city. Good side: \z Palimuth will send you there to use the crystal to supply food for the city.", [3] = "Get back to Azerus and report him your mission.", - [4] = "Ask Azerus for a mission." - } + [4] = "Ask Azerus for a mission.", + }, }, [9] = { name = "Mission 09: Decision", @@ -914,11 +902,11 @@ if not Quests then startValue = 1, endValue = 2, states = { - [1] = "You now need to decide between supporting Palimuth or the Yalahari\'s goal. \z - To choose Palimuth\'s good side go to him, and simply ask him for a mission mission. \z + [1] = "You now need to decide between supporting Palimuth or the Yalahari's goal. \z + To choose Palimuth's good side go to him, and simply ask him for a mission mission. \z Likewise, to join the Yalahari (Azerus) (bad side) go to him and say the same.", - [2] = "you already decided!" - } + [2] = "you already decided!", + }, }, [10] = { name = "Mission 10: The Final Battle", @@ -934,10 +922,10 @@ if not Quests then [3] = "Report back to whichever principal you have chosen to help and you will receive Yalaharian Outfits.", [4] = "You got the access to the reward room. \z Choose carefully which reward you pick as you can only take one item.", - [5] = "You have completed the Quest!" - } - } - } + [5] = "You have completed the Quest!", + }, + }, + }, }, [11] = { name = "Killing in the Name of...", @@ -951,12 +939,8 @@ if not Quests then startValue = 0, endValue = 1, description = function(player) - return string.format( - "You joined the 'Paw and Fur - Hunting Elite'. Ask Grizzly Adams for some hunting tasks. You already gained %d points. You currently have %d boss points.", - (math.max(player:getStorageValue(POINTSSTORAGE), 0)), - (math.max(player:getStorageValue(Storage.KillingInTheNameOf.BossPoints), 0)) - ) - end + return string.format("You joined the 'Paw and Fur - Hunting Elite'. Ask Grizzly Adams for some hunting tasks. You already gained %d points. You currently have %d boss points.", (math.max(player:getStorageValue(POINTSSTORAGE), 0)), (math.max(player:getStorageValue(Storage.KillingInTheNameOf.BossPoints), 0))) + end, }, [2] = { name = "Paw and Fur - Rank: Huntsman", @@ -964,7 +948,7 @@ if not Quests then missionId = 1082, startValue = 0, endValue = 1, - description = "You have been promoted to the rank of a 'Huntsman' in the 'Paw and Fur - Hunting Elite'." + description = "You have been promoted to the rank of a 'Huntsman' in the 'Paw and Fur - Hunting Elite'.", }, [3] = { name = "Paw and Fur - Rank: Ranger", @@ -972,7 +956,7 @@ if not Quests then missionId = 1083, startValue = 2, endValue = 3, - description = "You have been promoted to the rank of a 'Ranger' in the 'Paw and Fur - Hunting Elite'." + description = "You have been promoted to the rank of a 'Ranger' in the 'Paw and Fur - Hunting Elite'.", }, [4] = { name = "Paw and Fur - Rank: Big Game Hunter", @@ -980,7 +964,7 @@ if not Quests then missionId = 1084, startValue = 4, endValue = 5, - description = "You have been promoted to the rank of a 'Big Game Hunter' in the 'Paw and Fur - Hunting Elite'." + description = "You have been promoted to the rank of a 'Big Game Hunter' in the 'Paw and Fur - Hunting Elite'.", }, [5] = { name = "Paw and Fur - Rank: Trophy Hunter", @@ -988,7 +972,7 @@ if not Quests then missionId = 1085, startValue = 5, endValue = 6, - description = "You have been promoted to the rank of a 'Trophy Hunter' in the 'Paw and Fur - Hunting Elite'." + description = "You have been promoted to the rank of a 'Trophy Hunter' in the 'Paw and Fur - Hunting Elite'.", }, [6] = { name = "Paw and Fur - Rank: Elite Hunter", @@ -996,7 +980,7 @@ if not Quests then missionId = 1086, startValue = 7, endValue = 8, - description = "You have been promoted to the rank of a 'Elite Hunter' in the 'Paw and Fur - Hunting Elite'." + description = "You have been promoted to the rank of a 'Elite Hunter' in the 'Paw and Fur - Hunting Elite'.", }, [7] = { -- Grizzly Adams name = "Paw and Fur: Crocodiles", @@ -1005,14 +989,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 crocodiles.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.CrocodileCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 crocodiles.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.CrocodileCount)) + end, [1] = "You successfully hunted 300 crocodiles. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 crocodiles." - } + [2] = "You succesfully hunted 300 crocodiles.", + }, }, [8] = { name = "Paw and Fur: Badgers", @@ -1021,14 +1003,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 badgers.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.BadgerCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 badgers.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.BadgerCount)) + end, [1] = "You successfully hunted 300 badgers. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 badgers." - } + [2] = "You succesfully hunted 300 badgers.", + }, }, [9] = { name = "Paw and Fur: Tarantulas", @@ -1037,14 +1017,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 tarantulas.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.TarantulaCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 tarantulas.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.TarantulaCount)) + end, [1] = "You successfully hunted 300 tarantulas. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 tarantulas." - } + [2] = "You succesfully hunted 300 tarantulas.", + }, }, [10] = { name = "Paw and Fur: Carniphilas", @@ -1053,14 +1031,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/150 carniphilas.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.CarniphilasCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/150 carniphilas.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.CarniphilasCount)) + end, [1] = "You successfully hunted 150 carniphilas. If you want to you may complete this task again.", - [2] = "You succesfully hunted 150 carniphilas." - } + [2] = "You succesfully hunted 150 carniphilas.", + }, }, [11] = { name = "Paw and Fur: Stone Golems", @@ -1069,14 +1045,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/200 stone golems.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.StoneGolemCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/200 stone golems.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.StoneGolemCount)) + end, [1] = "You successfully hunted 200 stone golems. If you want to you may complete this task again.", - [2] = "You succesfully hunted 200 stone golems." - } + [2] = "You succesfully hunted 200 stone golems.", + }, }, [12] = { name = "Paw and Fur: Mammoths", @@ -1085,14 +1059,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 mammoths.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.MammothCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 mammoths.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.MammothCount)) + end, [1] = "You successfully hunted 300 mammoths. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 mammoths." - } + [2] = "You succesfully hunted 300 mammoths.", + }, }, [13] = { name = "Paw and Fur: Gnarlhounds", @@ -1101,14 +1073,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 gnarlhounds.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.GnarlhoundCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 gnarlhounds.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.GnarlhoundCount)) + end, [1] = "You successfully hunted 300 gnarlhounds. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 gnarlhounds." - } + [2] = "You succesfully hunted 300 gnarlhounds.", + }, }, [14] = { name = "Paw and Fur: Terramites", @@ -1117,14 +1087,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 terramites.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.TerramiteCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 terramites.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.TerramiteCount)) + end, [1] = "You successfully hunted 300 terramites. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 terramites." - } + [2] = "You succesfully hunted 300 terramites.", + }, }, [15] = { name = "Paw and Fur: Apes", @@ -1133,16 +1101,17 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d kongras, %d merlkins and %d sibangs. You are supposed to kill 300 apes in total.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.KongraCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.MerlkinCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.SibangCount)) - end, + [0] = function(player) + return string.format( + "You already hunted %d kongras, %d merlkins and %d sibangs. You are supposed to kill 300 apes in total.", + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.KongraCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.MerlkinCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.SibangCount) + ) + end, [1] = "You successfully hunted 300 apes. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 apes." - } + [2] = "You succesfully hunted 300 apes.", + }, }, [16] = { name = "Paw and Fur: Thornback Tortoises", @@ -1151,14 +1120,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 thornback tortoises.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.ThornbackTortoiseCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 thornback tortoises.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.ThornbackTortoiseCount)) + end, [1] = "You successfully hunted 300 thornback tortoises. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 thornback tortoises." - } + [2] = "You succesfully hunted 300 thornback tortoises.", + }, }, [17] = { name = "Paw and Fur: Gargoyles", @@ -1167,14 +1134,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 gargoyles.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.GargoyleCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 gargoyles.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.GargoyleCount)) + end, [1] = "You successfully hunted 300 gargoyles. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 gargoyles." - } + [2] = "You succesfully hunted 300 gargoyles.", + }, }, [18] = { name = "Paw and Fur: Ice Golems", @@ -1183,14 +1148,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 ice golems.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.IceGolemCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 ice golems.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.IceGolemCount)) + end, [1] = "You successfully hunted 300 ice golems. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 ice golems." - } + [2] = "You succesfully hunted 300 ice golems.", + }, }, [19] = { name = "Paw and Fur: Quara Scouts", @@ -1199,18 +1162,19 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already killed %d constrictor scouts, %d hydromancer scouts, %d mantassin scouts, %d pincher scouts and %d predator scouts. You are supposed to kill 400 in total.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraConstrictorScoutCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraHydromancerScoutCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaramMntassinScoutCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraPincherScoutCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraPredatorScoutCount)) - end, + [0] = function(player) + return string.format( + "You already killed %d constrictor scouts, %d hydromancer scouts, %d mantassin scouts, %d pincher scouts and %d predator scouts. You are supposed to kill 400 in total.", + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraConstrictorScoutCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraHydromancerScoutCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaramMntassinScoutCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraPincherScoutCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraPredatorScoutCount) + ) + end, [1] = "You successfully hunted 400 quara scouts. If you want to you may complete this task again.", - [2] = "You succesfully hunted 400 quara scouts." - } + [2] = "You succesfully hunted 400 quara scouts.", + }, }, [20] = { name = "Paw and Fur: Mutated Rats", @@ -1219,14 +1183,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/400 mutated rats.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.MutatedRatCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/400 mutated rats.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.MutatedRatCount)) + end, [1] = "You successfully hunted 400 mutated rats. If you want to you may complete this task again.", - [2] = "You succesfully hunted 400 mutated rats." - } + [2] = "You succesfully hunted 400 mutated rats.", + }, }, [21] = { name = "Paw and Fur: Ancient Scarabs", @@ -1235,14 +1197,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/250 ancient scarabs.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.AncientScarabCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/250 ancient scarabs.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.AncientScarabCount)) + end, [1] = "You successfully hunted 250 ancient scarabs. If you want to you may complete this task again.", - [2] = "You succesfully hunted 250 ancient scarabs." - } + [2] = "You succesfully hunted 250 ancient scarabs.", + }, }, [22] = { name = "Paw and Fur: Wyverns", @@ -1251,14 +1211,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 wyverns.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.WyvernCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 wyverns.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.WyvernCount)) + end, [1] = "You successfully hunted 300 wyverns. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 wyverns." - } + [2] = "You succesfully hunted 300 wyverns.", + }, }, [23] = { name = "Paw and Fur: Lancer Beetles", @@ -1267,14 +1225,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 lancer beetles.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.LancerBeetleCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 lancer beetles.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.LancerBeetleCount)) + end, [1] = "You successfully hunted 300 lancer beetles. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 lancer beetles." - } + [2] = "You succesfully hunted 300 lancer beetles.", + }, }, [24] = { name = "Paw and Fur: Wailing Widows", @@ -1283,14 +1239,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/400 wailing widows.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.WailingWidowCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/400 wailing widows.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.WailingWidowCount)) + end, [1] = "You successfully hunted 400 wailing widows. If you want to you may complete this task again.", - [2] = "You succesfully hunted 400 wailing widows." - } + [2] = "You succesfully hunted 400 wailing widows.", + }, }, [25] = { name = "Paw and Fur: Killer Caimans", @@ -1299,14 +1253,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/250 killer caimans.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.KillerCaimanCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/250 killer caimans.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.KillerCaimanCount)) + end, [1] = "You successfully hunted 250 killer caimans. If you want to you may complete this task again.", - [2] = "You succesfully hunted 250 killer caimans." - } + [2] = "You succesfully hunted 250 killer caimans.", + }, }, [26] = { name = "Paw and Fur: Bonebeasts", @@ -1315,14 +1267,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 bonebeasts.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.BonebeastCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 bonebeasts.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.BonebeastCount)) + end, [1] = "You successfully hunted 300 bonebeasts. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 bonebeasts." - } + [2] = "You succesfully hunted 300 bonebeasts.", + }, }, [27] = { name = "Paw and Fur: Crystal Spiders", @@ -1331,14 +1281,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 crystal spiders.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.CrystalSpiderCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 crystal spiders.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.CrystalSpiderCount)) + end, [1] = "You successfully hunted 300 crystal spiders. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 crystal spiders." - } + [2] = "You succesfully hunted 300 crystal spiders.", + }, }, [28] = { name = "Paw and Fur: Mutated Tigers", @@ -1347,14 +1295,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 mutated tigers.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.MutatedTigerCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 mutated tigers.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.MutatedTigerCount)) + end, [1] = "You successfully hunted 300 mutated tigers. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 mutated tigers." - } + [2] = "You succesfully hunted 300 mutated tigers.", + }, }, [29] = { name = "Paw and Fur: Underwater Quara", @@ -1363,18 +1309,19 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already killed %d constrictors, %d hydromancers, %d mantassins, %d pinchers and %d predators. You are supposed to kill 600 in total.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraConstrictorCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraHydromancerCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraMantassinCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraPincherCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraPredatorCount)) - end, + [0] = function(player) + return string.format( + "You already killed %d constrictors, %d hydromancers, %d mantassins, %d pinchers and %d predators. You are supposed to kill 600 in total.", + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraConstrictorCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraHydromancerCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraMantassinCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraPincherCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.QuaraPredatorCount) + ) + end, [1] = "You successfully hunted 600 underwater quara. If you want to you may complete this task again.", - [2] = "You succesfully hunted 600 underwater quara." - } + [2] = "You succesfully hunted 600 underwater quara.", + }, }, [30] = { name = "Paw and Fur: Giant Spiders", @@ -1383,14 +1330,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/500 giant spiders.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.GiantSpiderCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/500 giant spiders.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.GiantSpiderCount)) + end, [1] = "You successfully hunted 500 giant spiders. If you want to you may complete this task again.", - [2] = "You succesfully hunted 500 giant spiders." - } + [2] = "You succesfully hunted 500 giant spiders.", + }, }, [31] = { name = "Paw and Fur: Werewolves", @@ -1399,14 +1344,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/300 werewolves.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.WerewolveCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/300 werewolves.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.WerewolveCount)) + end, [1] = "You successfully hunted 300 werewolves. If you want to you may complete this task again.", - [2] = "You succesfully hunted 300 werewolves." - } + [2] = "You succesfully hunted 300 werewolves.", + }, }, [32] = { name = "Paw and Fur: Nightmares", @@ -1415,15 +1358,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d nightmares and %d nightmare scions. You are supposed to kill 400 in total.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.NightmareCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.NightmareScionCount)) - end, + [0] = function(player) + return string.format("You already hunted %d nightmares and %d nightmare scions. You are supposed to kill 400 in total.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.NightmareCount), player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.NightmareScionCount)) + end, [1] = "You successfully hunted 400 nightmares. If you want to you may complete this task again.", - [2] = "You succesfully hunted 400 nightmares." - } + [2] = "You succesfully hunted 400 nightmares.", + }, }, [33] = { name = "Paw and Fur: Hellspawns", @@ -1432,14 +1372,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/600 hellspawns.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.HellspawnCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/600 hellspawns.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.HellspawnCount)) + end, [1] = "You successfully hunted 600 hellspawns. If you want to you may complete this task again.", - [2] = "You succesfully hunted 600 hellspawns." - } + [2] = "You succesfully hunted 600 hellspawns.", + }, }, [34] = { name = "Paw and Fur: Lizards", @@ -1448,18 +1386,19 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d Chosen, %d Dragon Priest, %d High Guard, %d Legionnaire and %d Zaogun. You are supposed to kill 800 high class lizards in total.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.LizardChosenCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.LizardDragonPriestCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.LizardHighGuardCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.LizardLegionnaireCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.LizardZaogunCount)) - end, + [0] = function(player) + return string.format( + "You already hunted %d Chosen, %d Dragon Priest, %d High Guard, %d Legionnaire and %d Zaogun. You are supposed to kill 800 high class lizards in total.", + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.LizardChosenCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.LizardDragonPriestCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.LizardHighGuardCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.LizardLegionnaireCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.LizardZaogunCount) + ) + end, [1] = "You successfully hunted 800 high class lizards. If you want to you may complete this task again.", - [2] = "You succesfully hunted 800 high class lizards." - } + [2] = "You succesfully hunted 800 high class lizards.", + }, }, [35] = { name = "Paw and Fur: Stampors", @@ -1468,14 +1407,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/600 stampors.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.StamporCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/600 stampors.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.StamporCount)) + end, [1] = "You successfully hunted 600 stampors. If you want to you may complete this task again.", - [2] = "You succesfully hunted 600 stampors." - } + [2] = "You succesfully hunted 600 stampors.", + }, }, [36] = { name = "Paw and Fur: Brimstone Bugs", @@ -1484,14 +1421,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/500 brimstone bugs.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.BrimstoneBugCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/500 brimstone bugs.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.BrimstoneBugCount)) + end, [1] = "You successfully hunted 500 brimstone bugs. If you want to you may complete this task again.", - [2] = "You succesfully hunted 500 brimstone bugs." - } + [2] = "You succesfully hunted 500 brimstone bugs.", + }, }, [37] = { name = "Paw and Fur: Mutated Bats", @@ -1500,14 +1435,12 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/400 mutated bats.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.MutatedBatCount)) - end, + [0] = function(player) + return string.format("You already hunted %d/400 mutated bats.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.MutatedBatCount)) + end, [1] = "You successfully hunted 400 mutated bats. If you want to you may complete this task again.", - [2] = "You succesfully hunted 400 mutated bats." - } + [2] = "You succesfully hunted 400 mutated bats.", + }, }, [38] = { name = "Paw and Fur: Hydras", @@ -1516,13 +1449,11 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/650 hydras.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.HydraCount)) - end, - [1] = "You successfully hunted 650 hydras. If you want to you may complete this task again." - } + [0] = function(player) + return string.format("You already hunted %d/650 hydras.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.HydraCount)) + end, + [1] = "You successfully hunted 650 hydras. If you want to you may complete this task again.", + }, }, [39] = { name = "Paw and Fur: Serpent Spawns", @@ -1531,13 +1462,11 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/800 serpent spawns.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.SerpentSpawnCount)) - end, - [1] = "You successfully hunted 800 serpent spawns. If you want to you may complete this task again." - } + [0] = function(player) + return string.format("You already hunted %d/800 serpent spawns.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.SerpentSpawnCount)) + end, + [1] = "You successfully hunted 800 serpent spawns. If you want to you may complete this task again.", + }, }, [40] = { name = "Paw and Fur: Medusae", @@ -1546,13 +1475,11 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/500 medusae.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.MedusaCount)) - end, - [1] = "You successfully hunted 500 medusae. If you want to you may complete this task again." - } + [0] = function(player) + return string.format("You already hunted %d/500 medusae.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.MedusaCount)) + end, + [1] = "You successfully hunted 500 medusae. If you want to you may complete this task again.", + }, }, [41] = { name = "Paw and Fur: Behemoths", @@ -1561,13 +1488,11 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/700 behemoths.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.BehemothCount)) - end, - [1] = "You successfully hunted 700 behemoths. If you want to you may complete this task again." - } + [0] = function(player) + return string.format("You already hunted %d/700 behemoths.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.BehemothCount)) + end, + [1] = "You successfully hunted 700 behemoths. If you want to you may complete this task again.", + }, }, [42] = { name = "Paw and Fur: Sea Serpents", @@ -1576,14 +1501,11 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d sea serpents and %d young sea serpents. You are supposed to kill 900 in total.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.SeaSerpentCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.YoungSeaSerpentCount)) - end, - [1] = "You successfully hunted 900 sea serpents. If you want to you may complete this task again." - } + [0] = function(player) + return string.format("You already hunted %d sea serpents and %d young sea serpents. You are supposed to kill 900 in total.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.SeaSerpentCount), player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.YoungSeaSerpentCount)) + end, + [1] = "You successfully hunted 900 sea serpents. If you want to you may complete this task again.", + }, }, [43] = { name = "Paw and Fur: Hellhounds", @@ -1592,13 +1514,11 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/250 hellhounds.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.HellhoundCount)) - end, - [1] = "You successfully hunted 250 hellhounds. If you want to you may complete this task again." - } + [0] = function(player) + return string.format("You already hunted %d/250 hellhounds.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.HellhoundCount)) + end, + [1] = "You successfully hunted 250 hellhounds. If you want to you may complete this task again.", + }, }, [44] = { name = "Paw and Fur: Ghastly Dragons", @@ -1607,13 +1527,11 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/500 ghastly dragons.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.GhastlyDragonCount)) - end, - [1] = "You successfully hunted 500 ghastly dragons. If you want to you may complete this task again." - } + [0] = function(player) + return string.format("You already hunted %d/500 ghastly dragons.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.GhastlyDragonCount)) + end, + [1] = "You successfully hunted 500 ghastly dragons. If you want to you may complete this task again.", + }, }, [45] = { name = "Paw and Fur: Drakens", @@ -1622,16 +1540,17 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d draken abomination, %d draken elite, %d draken spellweaver and %d draken warmaster. You are supposed to kill 900 drakens in total.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.DrakenAbominationCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.DrakenEliteCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.DrakenSpellweaverCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.DrakenWarmasterCount)) - end, - [1] = "You successfully hunted 900 drakens. If you want to you may complete this task again." - } + [0] = function(player) + return string.format( + "You already hunted %d draken abomination, %d draken elite, %d draken spellweaver and %d draken warmaster. You are supposed to kill 900 drakens in total.", + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.DrakenAbominationCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.DrakenEliteCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.DrakenSpellweaverCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.DrakenWarmasterCount) + ) + end, + [1] = "You successfully hunted 900 drakens. If you want to you may complete this task again.", + }, }, [46] = { name = "Paw and Fur: Destroyers", @@ -1640,13 +1559,11 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/650 destroyers.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.DestroyerCount)) - end, - [1] = "You successfully hunted 650 destroyers. If you want to you may complete this task again." - } + [0] = function(player) + return string.format("You already hunted %d/650 destroyers.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.DestroyerCount)) + end, + [1] = "You successfully hunted 650 destroyers. If you want to you may complete this task again.", + }, }, [47] = { name = "Paw and Fur: Undead Dragons", @@ -1655,13 +1572,11 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("You already hunted %d/400 undead dragons.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.UndeadDragonCount)) - end, - [1] = "You successfully hunted 400 undead dragons. If you want to you may complete this task again." - } + [0] = function(player) + return string.format("You already hunted %d/400 undead dragons.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.UndeadDragonCount)) + end, + [1] = "You successfully hunted 400 undead dragons. If you want to you may complete this task again.", + }, }, [48] = { name = "Paw and Fur: Demons", @@ -1670,13 +1585,11 @@ if not Quests then startValue = 0, endValue = 1, states = { - [0] = - function(player) - return string.format("You already hunted %d/6666 demons.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.DemonCount)) - end, - [1] = "You successfully hunted 6666 demons." - } + [0] = function(player) + return string.format("You already hunted %d/6666 demons.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.DemonCount)) + end, + [1] = "You successfully hunted 6666 demons.", + }, }, [49] = { -- Grizzly Adams Boss name = "Paw and Fur: The Snapper", @@ -1687,8 +1600,8 @@ if not Quests then states = { [1] = "Grizzly told you about the Snapper, a crocodile that already killed many citizens of Port Hope. Try find its hideout and kill it.", [2] = "You have found the hideout of Snapper. Talk to Grizzly again.", - [3] = "You've killed the Snapper and reported back to Grizzly." - } + [3] = "You've killed the Snapper and reported back to Grizzly.", + }, }, [50] = { name = "Paw and Fur: Hide", @@ -1699,8 +1612,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Hide', a tarantula that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Hide. Talk to Grizzly again.", - [3] = "You've killed Hide and reported back to Grizzly." - } + [3] = "You've killed Hide and reported back to Grizzly.", + }, }, [51] = { name = "Paw and Fur: Deathbine", @@ -1711,8 +1624,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Deathbine', a carniphila that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Deathbine. Talk to Grizzly again.", - [3] = "You've killed Deathbine and reported back to Grizzly." - } + [3] = "You've killed Deathbine and reported back to Grizzly.", + }, }, [52] = { name = "Paw and Fur: The Bloodtusk", @@ -1723,8 +1636,8 @@ if not Quests then states = { [1] = "Grizzly told you about the Bloodtusk, a mammoth that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Bloodtusk. Talk to Grizzly again.", - [3] = "You've killed the Bloodtusk and reported back to Grizzly." - } + [3] = "You've killed the Bloodtusk and reported back to Grizzly.", + }, }, [53] = { name = "Paw and Fur: Shardhead", @@ -1735,8 +1648,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Shardhead', a ice golem that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Shardhead. Talk to Grizzly again.", - [3] = "You've killed Shardhead and reported back to Grizzly." - } + [3] = "You've killed Shardhead and reported back to Grizzly.", + }, }, [54] = { name = "Paw and Fur: Esmerelda", @@ -1747,8 +1660,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Esmerelda', a mutated rat that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Esmerelda. Talk to Grizzly again.", - [3] = "You've killed Esmerelda and reported back to Grizzly." - } + [3] = "You've killed Esmerelda and reported back to Grizzly.", + }, }, [55] = { name = "Paw and Fur: Fleshcrawler", @@ -1759,8 +1672,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Fleshcrawler', a ancient scarab that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Fleshcrawler. Talk to Grizzly again.", - [3] = "You've killed Fleshcrawler and reported back to Grizzly." - } + [3] = "You've killed Fleshcrawler and reported back to Grizzly.", + }, }, [56] = { name = "Paw and Fur: Ribstride", @@ -1771,8 +1684,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Ribstride', a bonebeast that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Ribstride. Talk to Grizzly again.", - [3] = "You've killed Ribstride and reported back to Grizzly." - } + [3] = "You've killed Ribstride and reported back to Grizzly.", + }, }, [57] = { name = "Paw and Fur: Bloodweb", @@ -1783,8 +1696,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Bloodweb', a crystal spider that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Bloodweb. Talk to Grizzly again.", - [3] = "You've killed Bloodweb and reported back to Grizzly." - } + [3] = "You've killed Bloodweb and reported back to Grizzly.", + }, }, [58] = { name = "Paw and Fur: Thul", @@ -1795,8 +1708,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Thul', a quara that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Thul. Talk to Grizzly again.", - [3] = "You've killed Thul and reported back to Grizzly." - } + [3] = "You've killed Thul and reported back to Grizzly.", + }, }, [59] = { name = "Paw and Fur: The Old Widow", @@ -1807,8 +1720,8 @@ if not Quests then states = { [1] = "Grizzly told you about the Old Widow, a giant spider that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Old Widow. Talk to Grizzly again.", - [3] = "You've killed the Old Widow and reported back to Grizzly." - } + [3] = "You've killed the Old Widow and reported back to Grizzly.", + }, }, [60] = { name = "Paw and Fur: Hemming", @@ -1819,8 +1732,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Hemming', a werewolf that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Hemming. Talk to Grizzly again.", - [3] = "You've killed Hemming and reported back to Grizzly." - } + [3] = "You've killed Hemming and reported back to Grizzly.", + }, }, [61] = { name = "Paw and Fur: Tormentor", @@ -1831,8 +1744,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Tormentor', a nightmare that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Tormentor. Talk to Grizzly again.", - [3] = "You've killed Tormentor and reported back to Grizzly." - } + [3] = "You've killed Tormentor and reported back to Grizzly.", + }, }, [62] = { name = "Paw and Fur: Flameborn", @@ -1843,8 +1756,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Flameborn', a hellspawn that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Flameborn. Talk to Grizzly again.", - [3] = "You've killed Flameborn and reported back to Grizzly." - } + [3] = "You've killed Flameborn and reported back to Grizzly.", + }, }, [63] = { name = "Paw and Fur: Fazzrah", @@ -1855,8 +1768,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Fazzrah', a lizard that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Fazzrah. Talk to Grizzly again.", - [3] = "You've killed Fazzrah and reported back to Grizzly." - } + [3] = "You've killed Fazzrah and reported back to Grizzly.", + }, }, [64] = { name = "Paw and Fur: Tromphonyte", @@ -1867,8 +1780,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Tromphonyte', a stampor that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Tromphonyte. Talk to Grizzly again.", - [3] = "You've killed Tromphonyte and reported back to Grizzly." - } + [3] = "You've killed Tromphonyte and reported back to Grizzly.", + }, }, [65] = { name = "Paw and Fur: Sulphur Scuttler", @@ -1879,8 +1792,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Sulphur Scuttler', a brimstone bug that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Sulphur Scuttler. Talk to Grizzly again.", - [3] = "You've killed Sulphur Scuttler and reported back to Grizzly." - } + [3] = "You've killed Sulphur Scuttler and reported back to Grizzly.", + }, }, [66] = { name = "Paw and Fur: Bruise Payne", @@ -1891,8 +1804,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Bruise Payne', a mutated bat that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Bruise Payne. Talk to Grizzly again.", - [3] = "You've killed Bruise Payne and reported back to Grizzly." - } + [3] = "You've killed Bruise Payne and reported back to Grizzly.", + }, }, [67] = { name = "Paw and Fur: The Many", @@ -1903,8 +1816,8 @@ if not Quests then states = { [1] = "Grizzly told you about the Many, a hydra that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Many. Talk to Grizzly again.", - [3] = "You've killed the Many and reported back to Grizzly." - } + [3] = "You've killed the Many and reported back to Grizzly.", + }, }, [68] = { name = "Paw and Fur: The Noxious Spawn", @@ -1915,8 +1828,8 @@ if not Quests then states = { [1] = "Grizzly told you about the Noxious Spawn, a serpent spawn that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Noxious Spawn. Talk to Grizzly again.", - [3] = "You've killed the Noxious Spawn and reported back to Grizzly." - } + [3] = "You've killed the Noxious Spawn and reported back to Grizzly.", + }, }, [69] = { name = "Paw and Fur: Gorgo", @@ -1927,8 +1840,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Gorgo', a medusa that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Gorgo. Talk to Grizzly again.", - [3] = "You've killed Gorgo and reported back to Grizzly." - } + [3] = "You've killed Gorgo and reported back to Grizzly.", + }, }, [70] = { name = "Paw and Fur: Stonecracker", @@ -1939,8 +1852,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Stonecracker', a behemoth that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Stonecracker. Talk to Grizzly again.", - [3] = "You've killed Stonecracker and reported back to Grizzly." - } + [3] = "You've killed Stonecracker and reported back to Grizzly.", + }, }, [71] = { name = "Paw and Fur: Leviathan", @@ -1951,8 +1864,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Leviathan', a sea serpent that already killed many citizens of Svargrond. Try find its hideout and kill it.", [2] = "You have found the hideout of Leviathan. Talk to Grizzly again.", - [3] = "You've killed Leviathan and reported back to Grizzly." - } + [3] = "You've killed Leviathan and reported back to Grizzly.", + }, }, [72] = { name = "Paw and Fur: Kerberos", @@ -1963,8 +1876,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Kerberos', a hellhound that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Kerberos. Talk to Grizzly again.", - [3] = "You've killed Kerberos and reported back to Grizzly." - } + [3] = "You've killed Kerberos and reported back to Grizzly.", + }, }, [73] = { name = "Paw and Fur: Ethershreck", @@ -1975,8 +1888,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Ethershreck', a ghastly dragon that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Ethershreck. Talk to Grizzly again.", - [3] = "You've killed Ethershreck and reported back to Grizzly." - } + [3] = "You've killed Ethershreck and reported back to Grizzly.", + }, }, [74] = { name = "Paw and Fur: Paiz the Pauperizer", @@ -1987,8 +1900,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Paiz the Pauperizer', a daunting draken that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Paiz the Pauperizer. Talk to Grizzly again.", - [3] = "You've killed Paiz the Pauperizer and reported back to Grizzly." - } + [3] = "You've killed Paiz the Pauperizer and reported back to Grizzly.", + }, }, [75] = { name = "Paw and Fur: Bretzecutioner", @@ -1999,8 +1912,8 @@ if not Quests then states = { [1] = "Grizzly told you about 'Bretzecutioner', a destroyer that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Bretzecutioner. Talk to Grizzly again.", - [3] = "You've killed Bretzecutioner and reported back to Grizzly." - } + [3] = "You've killed Bretzecutioner and reported back to Grizzly.", + }, }, [76] = { name = "Paw and Fur: Zanakeph", @@ -2011,8 +1924,8 @@ if not Quests then states = { [1] = "Grizzly told you about Zanakeph, an undead dragon that already killed many citizens. Try find its hideout and kill it.", [2] = "You have found the hideout of Zanakeph. Talk to Grizzly again.", - [3] = "You've killed Zanakeph and reported back to Grizzly." - } + [3] = "You've killed Zanakeph and reported back to Grizzly.", + }, }, [77] = { name = "Paw and Fur: Tiquandas Revenge", @@ -2023,8 +1936,8 @@ if not Quests then states = { [1] = "You have the special task to bring down Tiquanda's Revenge.", [2] = "You have fought 'Tiquanda's Revenge'. Report to Grizzly Adams about your special task.", - [3] = "You found the hideout of Tiquanda's Revenge and managed to kill it." - } + [3] = "You found the hideout of Tiquanda's Revenge and managed to kill it.", + }, }, [78] = { name = "Paw and Fur: Demodras", @@ -2035,8 +1948,8 @@ if not Quests then states = { [1] = "You have the special task to bring down Demodras.", [2] = "You have fought 'Demodras'. Report to Grizzly Adams about your special task.", - [3] = "You found the hideout of Demodras and managed to kill it." - } + [3] = "You found the hideout of Demodras and managed to kill it.", + }, }, [79] = { -- Others name = "The Marid: Green Djinns", @@ -2045,16 +1958,13 @@ if not Quests then startValue = 0, endValue = 3, states = { - [0] = - function(player) - return string.format("Gabel sent you to kill 500 green djinns or Efreet. You have killed %d green djinns and %d Efreet so far.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.GreenDjinnCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.EfreetCount)) - end, + [0] = function(player) + return string.format("Gabel sent you to kill 500 green djinns or Efreet. You have killed %d green djinns and %d Efreet so far.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.GreenDjinnCount), player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.EfreetCount)) + end, [1] = "If you dare, you can try finding and fighting Merikh the Slaughterer.", [2] = "You faced Merikh the Slaughterer. Go back to Gabel.", - [3] = "You've finished this task. If you want to kill green djinns or Efreet again, talk to Gabel about this task." - } + [3] = "You've finished this task. If you want to kill green djinns or Efreet again, talk to Gabel about this task.", + }, }, [80] = { name = "The Efreet: Blue Djinns", @@ -2063,16 +1973,13 @@ if not Quests then startValue = 0, endValue = 3, states = { - [0] = - function(player) - return string.format("Malor sent you to kill 500 blue djinns or Marid. You have killed %d blue djinns and %d Marid so far.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.BlueDjinnCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.MaridCount)) - end, + [0] = function(player) + return string.format("Malor sent you to kill 500 blue djinns or Marid. You have killed %d blue djinns and %d Marid so far.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.BlueDjinnCount), player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.MaridCount)) + end, [1] = "If you dare, you can try finding and fighting Fahim the wise.", [2] = "You faced Fahim the wise. Go back to Malor.", - [3] = "You've finished this task. If you want to kill blue djinns or Marid again, talk to Malor about this task." - } + [3] = "You've finished this task. If you want to kill blue djinns or Marid again, talk to Malor about this task.", + }, }, [81] = { name = "Meriana Rebels: Pirates", @@ -2081,18 +1988,19 @@ if not Quests then startValue = 0, endValue = 3, states = { - [0] = - function(player) - return string.format("Kill 3000 pirates in total to help the rebels on Meriana. So far, you have killed %d Marauders, %d Cutthroats, %d Buccaneers and %d Corsairs.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.PirateMarauderCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.PirateCutthroadCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.PirateBuccaneerCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.PirateCorsairCount)) - end, + [0] = function(player) + return string.format( + "Kill 3000 pirates in total to help the rebels on Meriana. So far, you have killed %d Marauders, %d Cutthroats, %d Buccaneers and %d Corsairs.", + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.PirateMarauderCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.PirateCutthroadCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.PirateBuccaneerCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.PirateCorsairCount) + ) + end, [1] = "You succesfully killed 3000 pirates. Striker sent you to find the secret hideout of the pirate leaders on Nargor and vanquish whoever you find inside.", [2] = "You discovered the secret hideout of a pirate leader. Talk to Ray Striker if you like.", - [3] = "You succesfully killed 3000 pirates." - } + [3] = "You succesfully killed 3000 pirates.", + }, }, [82] = { name = "Turmoil of War", @@ -2101,17 +2009,18 @@ if not Quests then startValue = 0, endValue = 2, states = { - [0] = - function(player) - return string.format("Budrik asked you to kill 5000 minotaurs for him. You already killed %d minotaurs, %d minotaur guards, %d minotaur mages and %d minotaur archers.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.MinotaurCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.MinotaurGuardCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.MinotaurMageCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.MinotaurArcherCount)) - end, + [0] = function(player) + return string.format( + "Budrik asked you to kill 5000 minotaurs for him. You already killed %d minotaurs, %d minotaur guards, %d minotaur mages and %d minotaur archers.", + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.MinotaurCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.MinotaurGuardCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.MinotaurMageCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.MinotaurArcherCount) + ) + end, [1] = "Budrik found the hideout of The Horned Fox! You have a single chance of bringing him down. Go for it.", - [2] = "You have slain 5000 minotaurs and fought The Horned Fox for Budrik and the whole dwarven kind." - } + [2] = "You have slain 5000 minotaurs and fought The Horned Fox for Budrik and the whole dwarven kind.", + }, }, [83] = { name = "Lugri: Necromancers and Priestesses", @@ -2120,28 +2029,30 @@ if not Quests then startValue = 0, endValue = 4, states = { - [0] = - function(player) - return string.format("Lugri sent you to kill 4000 necromancers, though he said 'no reward'. So far you killed %d Necromancers, %d Priestesses, %d Blood Priests, %d Blood Hands and %d Shadow Pupils.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.NecromancerCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.PriestessCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.BloodPriestCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.BloodHandCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.ShadowPupilCount)) - end, + [0] = function(player) + return string.format( + "Lugri sent you to kill 4000 necromancers, though he said 'no reward'. So far you killed %d Necromancers, %d Priestesses, %d Blood Priests, %d Blood Hands and %d Shadow Pupils.", + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.NecromancerCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.PriestessCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.BloodPriestCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.BloodHandCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.ShadowPupilCount) + ) + end, [1] = "If you dare, you can try finding and fighting Necropharus in his Halls of Sacrifice, deep under Drefia. Note that this will be the only time you're allowed to enter his room, so be well prepared.", [2] = "You faced Necropharus. Go back to Lugri if you like.", - [3] = - function(player) - return string.format("Lugri sent you to kill 1000 necromancers. So far you killed %d Necromancers, %d Priestesses, %d Blood Priests, %d Blood Hands and %d Shadow Pupils.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.NecromancerCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.PriestessCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.BloodPriestCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.BloodHandCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.ShadowPupilCount)) - end, - [4] = "You've finished this task - for now. If you want to kill the different necromancers and priestesses again for an experience and money bonus, talk to Lugri about this task." - } + [3] = function(player) + return string.format( + "Lugri sent you to kill 1000 necromancers. So far you killed %d Necromancers, %d Priestesses, %d Blood Priests, %d Blood Hands and %d Shadow Pupils.", + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.NecromancerCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.PriestessCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.BloodPriestCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.BloodHandCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.ShadowPupilCount) + ) + end, + [4] = "You've finished this task - for now. If you want to kill the different necromancers and priestesses again for an experience and money bonus, talk to Lugri about this task.", + }, }, [84] = { name = "Edron City: Trolls", @@ -2150,14 +2061,11 @@ if not Quests then startValue = 0, endValue = 1, states = { - [0] = - function(player) - return string.format("Daniel Steelsoul sent you to kill 100 trolls, preferably west of Edron city. You have killed %d trolls and %d troll champions so far.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.TrollCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.TrollChampionCount)) - end, - [1] = "You succesfully killed 100 trolls. As long as you are level 20 or lower, you may repeat this task by talking to Daniel Steelsoul about it." - } + [0] = function(player) + return string.format("Daniel Steelsoul sent you to kill 100 trolls, preferably west of Edron city. You have killed %d trolls and %d troll champions so far.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.TrollCount), player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.TrollChampionCount)) + end, + [1] = "You succesfully killed 100 trolls. As long as you are level 20 or lower, you may repeat this task by talking to Daniel Steelsoul about it.", + }, }, [85] = { name = "Edron City: Goblins", @@ -2166,15 +2074,16 @@ if not Quests then startValue = 0, endValue = 1, states = { - [0] = - function(player) - return string.format("Daniel Steelsoul sent you to kill 150 goblins, preferably west of Edron city. You have killed %d goblins so far, %d goblin scavengers and %d goblin assassins.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.GoblinCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.GoblinScavengerCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.GoblinAssassinCount)) - end, - [1] = "You succesfully killed 150 goblins. As long as you are level 20 or lower, you may repeat this task by talking to Daniel Steelsoul about it." - } + [0] = function(player) + return string.format( + "Daniel Steelsoul sent you to kill 150 goblins, preferably west of Edron city. You have killed %d goblins so far, %d goblin scavengers and %d goblin assassins.", + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.GoblinCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.GoblinScavengerCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.GoblinAssassinCount) + ) + end, + [1] = "You succesfully killed 150 goblins. As long as you are level 20 or lower, you may repeat this task by talking to Daniel Steelsoul about it.", + }, }, [86] = { name = "Edron City: Rotworms", @@ -2183,14 +2092,11 @@ if not Quests then startValue = 0, endValue = 1, states = { - [0] = - function(player) - return string.format("Daniel Steelsoul sent you to kill 300 rotworms, preferably in their tunnels south of Edron city. You have killed %d rotworms and %d carrion worms so far.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.RotwormCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.CarrionWormnCount)) - end, - [1] = "You succesfully killed 300 rotworms. As long as you are level 40 or lower, you may repeat this task by talking to Daniel Steelsoul about it." - } + [0] = function(player) + return string.format("Daniel Steelsoul sent you to kill 300 rotworms, preferably in their tunnels south of Edron city. You have killed %d rotworms and %d carrion worms so far.", player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.RotwormCount), player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.CarrionWormnCount)) + end, + [1] = "You succesfully killed 300 rotworms. As long as you are level 40 or lower, you may repeat this task by talking to Daniel Steelsoul about it.", + }, }, [87] = { name = "Edron City: Cyclops", @@ -2199,17 +2105,18 @@ if not Quests then startValue = 0, endValue = 1, states = { - [0] = - function(player) - return string.format("Daniel Steelsoul sent you to kill 500 cyclops, preferably in Cyclopolis north of Edron city. You have killed %d cyclops, %d drones and %d smiths so far.", - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.CyclopsCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.CyclopsDroneCount), - player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.CyclopsSmithCount)) - end, - [1] = "You succesfully killed 500 cyclops. As long as you are level 60 or lower, you may repeat this task by talking to Daniel Steelsoul about it." - } - }, - } + [0] = function(player) + return string.format( + "Daniel Steelsoul sent you to kill 500 cyclops, preferably in Cyclopolis north of Edron city. You have killed %d cyclops, %d drones and %d smiths so far.", + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.CyclopsCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.CyclopsDroneCount), + player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.CyclopsSmithCount) + ) + end, + [1] = "You succesfully killed 500 cyclops. As long as you are level 60 or lower, you may repeat this task by talking to Daniel Steelsoul about it.", + }, + }, + }, }, [12] = { name = "Outfit and Addon Quests", @@ -2225,8 +2132,8 @@ if not Quests then states = { [1] = "Atrad wants only two items from you for his old katana: a behemoth claw and a nose ring, \z both at the same time. He also told you about a "horned fox" who wears such as nose ring", - [2] = "You have received the second assassin addon." - } + [2] = "You have received the second assassin addon.", + }, }, [2] = { name = "Citizen Addon: Backpack", @@ -2238,8 +2145,8 @@ if not Quests then [1] = "Collect 100 pieces of minotaur leather and bring it to either Amber or Lubo \z to have them make a backpack addon for you.", [2] = "You delivered 100 pieces of minotaur leather. Some time is needed to make the backpack for you though. \z - You should check back later and ask either Amber or Lubo for your backpack." - } + You should check back later and ask either Amber or Lubo for your backpack.", + }, }, [3] = { name = "Citizen Addon: Feather Hat", @@ -2249,8 +2156,8 @@ if not Quests then endValue = 2, states = { [1] = "Collect a legion helmet, 100 chicken feathers and 50 honeycombs and bring them to either \z - Hanna or Norma to have them make a feather hat addon for you." - } + Hanna or Norma to have them make a feather hat addon for you.", + }, }, [4] = { name = "Barbarian Outfit Quest", @@ -2273,7 +2180,7 @@ if not Quests then [7] = "In order to make a shirt as a present for Ajax, Bron wants you to bring him 50 Pieces of \z Red Cloth and 50 Pieces of Green Cloth.", [8] = "Bron wants you to bring him 10 Spider Silk Yarn.", - [9] = "Bron wants you to bring him the Warrior\'s Sweat.", + [9] = "Bron wants you to bring him the Warrior's Sweat.", [10] = "You brought him all required items! accept it!", [11] = "You got the Barbarian Wig Addon! Bring now the present from Bron to Ajax!", [12] = "Bring Ajax in Northport 100 Iron Ore.", @@ -2281,8 +2188,8 @@ if not Quests then [14] = "Bring Ajax 50 Perfect Behemoth Fang", [15] = "Bring Ajax 50 Lizard Leather", [16] = "Come later in 2 hours and ask Ajax for the axe.", - [17] = "You got the Axe Addon!" - } + [17] = "You got the Axe Addon!", + }, }, [5] = { name = "Beggar Outfit: The Newest Fashion", @@ -2296,10 +2203,10 @@ if not Quests then If you don't know how to get leather, you should ask Kalvin.", [3] = "Your current task is to bring 10 bat wings to Hugo.", [4] = "Your current task is to bring 30 heaven blossoms to Hugo. Elves are said to cultivate these flowers.", - [5] = "You brought all items required for the "poor man\'s look" to Hugo. \z + [5] = "You brought all items required for the "poor man's look" to Hugo. \z He told you to come back to him after a whole day has passed, then the outfit should be finished.", - [6] = "You got the outfit!" - } + [6] = "You got the outfit!", + }, }, [6] = { name = "Druid Outfit Quest", @@ -2316,11 +2223,11 @@ if not Quests then [4] = "Ask Ceiron for task.", [5] = "Bring Ceiron 100 ounces of demon dust.", [6] = "Ask Ceiron for task.", - [7] = "The last mission is to find and retrieve Ceiron\'s Wolf Tooth Chain lost inside the Orc Fortress.", + [7] = "The last mission is to find and retrieve Ceiron's Wolf Tooth Chain lost inside the Orc Fortress.", [8] = "Ask Ceiron for Faolan.", - [9] = "Head over to Cormaya, find A Majestic Warwolf\'s Cave and ask her about an addon.", - [10] = "You got the Outfit!" - } + [9] = "Head over to Cormaya, find A Majestic Warwolf's Cave and ask her about an addon.", + [10] = "You got the Outfit!", + }, }, [7] = { name = "Hunter Outfit Quest", @@ -2333,8 +2240,8 @@ if not Quests then [2] = "Bring Elane 100 pieces of lizard leather and 100 pieces of red dragon leather.", [3] = "Bring Elane 5 enchanted chicken wings.", [4] = "Bring Elane one piece of royal steel, draconian steel and hell steel each.", - [5] = "You got the Outfit!" - } + [5] = "You got the Outfit!", + }, }, [8] = { name = "Knight Addon: Helmet", @@ -2346,14 +2253,14 @@ if not Quests then [1] = "Your current task is to bring 100 perfect behemoth fangs to Gregor in Thais.", [2] = "Your current task is to retrieve the helmet of Ramsay the Reckless from Banuta. \z These pesky apes steal everything they can get their dirty hands on.", - [3] = "Your current task is to obtain a flask of warrior\'s sweat, which can be magicially extracted \z + [3] = "Your current task is to obtain a flask of warrior's sweat, which can be magicially extracted \z from headgear worn by a true warrior, but only in small amounts. Djinns are said to be good at this.", [4] = "Your current task is to bring royal steel to Gregor in Thais. \z Royal steel can only be refined by very skilled smiths.", [5] = "You have delivered all items required for the helmet addon. \z Go talk to Sam and tell him Gregor sent you. He will be glad to refine your helmet.", - [6] = "Sam is currently creating the helmet for you. Be patient and don't forget to check on it later!" - } + [6] = "Sam is currently creating the helmet for you. Be patient and don't forget to check on it later!", + }, }, [9] = { name = "Mage & Summoner Outfit Quest (Wand)", @@ -2370,8 +2277,8 @@ if not Quests then [4] = "Bring Lynda the Necromancer's soul stone", [5] = "Bring Lynda 20 ankhs now to complete the ritual.", [6] = "You need to wait 3 hours for the ritual to be completed", - [7] = "You got the Outfit!" - } + [7] = "You got the Outfit!", + }, }, [10] = { name = "Mage & Summoner Outfit Quest (Fluid Belt)", @@ -2381,8 +2288,8 @@ if not Quests then endValue = 2, states = { [1] = "Now you can get a lottery ticket at Sandra for 100 empty vials.", - [2] = "You got the Outfit! Now you can get for a lottery prize 50000 gold!" - } + [2] = "You got the Outfit! Now you can get for a lottery prize 50000 gold!", + }, }, [11] = { name = "Female Mage and Male Summoner Addon: Headgear", @@ -2406,8 +2313,8 @@ if not Quests then [9] = "Your current task is to bring 30 ounces of vampire dusts to Myra in Port Hope. \z You might need to ask a priest for a special blessed stake to turn vampires into dust.", [10] = "You finally collected all of the items which Myra asked for. \z - Go talk to Zoltan in Edron and tell him that Myra nominated you for an award." - } + Go talk to Zoltan in Edron and tell him that Myra nominated you for an award.", + }, }, [12] = { name = "Norseman Outfit Quest", @@ -2418,8 +2325,8 @@ if not Quests then states = { [1] = "Bring Hjaern 5 frostheart shards to get the first Addon. Ask him for shard!", [2] = "Bring Hjaern 10 frostheart shards to get the second Addon. Ask him for shard!", - [3] = "You got the Outfit Addons! You can trade the rest shards to Hjaern for 2000 gold each!" - } + [3] = "You got the Outfit Addons! You can trade the rest shards to Hjaern for 2000 gold each!", + }, }, [13] = { name = "Warrior Addon: Shoulder Spike", @@ -2441,8 +2348,8 @@ if not Quests then Go talk to Cornelia and tell her Trisha sent you. She will be glad to create the should spikes.", [6] = "Cornelia is currently creating the should spikes for you. \z Be patient and don't forget to check on it later!", - [7] = "You have obtained the shoulder spike addon." - } + [7] = "You have obtained the shoulder spike addon.", + }, }, [14] = { name = "Wizard Outfits Quest", @@ -2457,8 +2364,8 @@ if not Quests then [4] = "Bring Lugri the Ring of the Sky!", [5] = "You got the first Outfit Addon!", [6] = "Bring The Queen Of The Banshees 50 Holy Orchids and she will reward you with the second addon.", - [7] = "You got the second Outfit Addon!" - } + [7] = "You got the second Outfit Addon!", + }, }, [15] = { name = "Pirate Outfit Quest (Sabre)", @@ -2471,8 +2378,8 @@ if not Quests then [2] = "Bring Duncan 100 peg legs from pirates!", [3] = "Bring Duncan 100 pirate hooks from pirates!", [4] = "Go to Morgan and tell him this codeword: 'firebird' to get the outfit addon!", - [5] = "You got the Outfit Addon!" - } + [5] = "You got the Outfit Addon!", + }, }, [16] = { name = "Oriental Addon: Hipwear", @@ -2481,11 +2388,11 @@ if not Quests then startValue = 1, endValue = 2, states = { - [1] = "Your current task is to find a mermaid\'s comb. \z + [1] = "Your current task is to find a mermaid's comb. \z If you have ever encountered a mermaid, you should ask her. \z Bring the comb to Habdel if you are male or to Ishina if you are female.", - [2] = "You have received the first oriental addon." - } + [2] = "You have received the first oriental addon.", + }, }, [17] = { name = "Oriental Addon: Headgear", @@ -2501,8 +2408,8 @@ if not Quests then or to Miraia if you are female.", [4] = "Your current task is to bring 100 pieces of blue cloth to Razan if you are male, \z or to Miraia if you are female.", - [5] = "You have received the second oriental addon." - } + [5] = "You have received the second oriental addon.", + }, }, [18] = { name = "Shaman Addon: Staff", @@ -2512,8 +2419,8 @@ if not Quests then endValue = 2, states = { [1] = "Try to find a monster which sometimes lurks in the Tiquandian jungle as the revenge of the jungle \z - against mankind. Bring the rare root it carries to Chondur as well as 5 voodoo dolls." - } + against mankind. Bring the rare root it carries to Chondur as well as 5 voodoo dolls.", + }, }, [19] = { name = "Shaman Addon: Mask", @@ -2523,13 +2430,13 @@ if not Quests then endValue = 2, states = { [1] = "Your current task is to collect 5 tribal masks from the dworcs and 5 banana staves from the apes. \z - Bring them to Chondur to earn your shamanic mask." - } - } - } + Bring them to Chondur to earn your shamanic mask.", + }, + }, + }, }, [13] = { - name = "Sam\'s Old Backpack", + name = "Sam's Old Backpack", startStorageId = Storage.SamsOldBackpack, startStorageValue = 1, missions = { @@ -2544,10 +2451,10 @@ if not Quests then Just tell him, his old buddy Sam is sending you.", [2] = "You have the permission to retrive a dwarven armor from the mines. \z The problem is, some giant spiders made the tunnels where the storage is their new home.", - [3] = "You have completed Dwarven Armor Quest!" - } - } - } + [3] = "You have completed Dwarven Armor Quest!", + }, + }, + }, }, [14] = { name = "Sea of Light", @@ -2570,8 +2477,8 @@ if not Quests then He began reconstructing the invention as soon as he got ahold of them. \z It will take a while for him to work out the problem which caused the initial failure.", [4] = "You returned to Speculus who finally worked out the failure of the initial construction. \z - He recapitulated the plans and needs only one item before he can start building the magic device." - } + He recapitulated the plans and needs only one item before he can start building the magic device.", + }, }, [2] = { name = "Mission 2: The Collector", @@ -2584,8 +2491,8 @@ if not Quests then it you will gain access to the lair of the Collector who guards a vital component of the device.", [2] = "Luckily, you survived the horrors of the Lost Mines and recovered a rare crystal. \z You should visit Spectulus in Edron to seek counsel on what to do next.", - [3] = "You returned to astronomer Spectulus and gave him the rare crystal." - } + [3] = "You returned to astronomer Spectulus and gave him the rare crystal.", + }, }, [3] = { name = "Mission 3: The Mirror Crystal", @@ -2594,18 +2501,18 @@ if not Quests then startValue = 1, endValue = 4, states = { - [1] = "In order to access the lair of the Collector, you will need to find the creature\'s well on \z - an ice isle near Carlin. To donate the rare crystal overcome your greed and use it at the well\'s pedestal.", - [2] = "You offered the rare crystal to the creature and can now enter the Collector\'s lair. \z + [1] = "In order to access the lair of the Collector, you will need to find the creature's well on \z + an ice isle near Carlin. To donate the rare crystal overcome your greed and use it at the well's pedestal.", + [2] = "You offered the rare crystal to the creature and can now enter the Collector's lair. \z Its crystal chamber cannot be accessed by outsiders. You need to find a way to snatch the Mirror Crystal.", [3] = "The Collector has been defeated. \z You packed the fragile Mirror Crystal into the device Spectulus gave you. \z All yo have to do now is to return to the astronomer and to present him your acquisition.", [4] = "It may have been the excitement or simple nervousness but as soon as Spectulus removed the crystal, \z - it somehow slipped. Unfinishable for all eternity, the device left yet another scholar in despair." - } - } - } + it somehow slipped. Unfinishable for all eternity, the device left yet another scholar in despair.", + }, + }, + }, }, [15] = { name = "Secret Service", @@ -2622,8 +2529,8 @@ if not Quests then [1] = "Your first mission is to deliver a warning to the Venoreans. \z Get a fire bug from Liberty Bay and set their shipyard on fire.", [2] = "You have set the Venoreans shipyard on fire, report back to Chester!", - [3] = "You have reported back that you have completed your mission, ask Chester for a new mission!" - } + [3] = "You have reported back that you have completed your mission, ask Chester for a new mission!", + }, }, [2] = { name = "Mission 1: For Your Eyes Only", @@ -2634,10 +2541,10 @@ if not Quests then states = { [1] = "Your first task is to deliver a letter to Gamel in thais, If he is a bit reluctant, be persuasive.", [2] = "Gamel sent his thugs on you, defeat them and deliver the letter to Gamel!", - [3] = "After defeating Gamel\'s thugs, he found you to be persuasive enough to accept the letter. \z + [3] = "After defeating Gamel's thugs, he found you to be persuasive enough to accept the letter. \z Report back to Uncle!", - [4] = "You have reported back that you have completed your task. Ask Uncle for a new mission!" - } + [4] = "You have reported back that you have completed your task. Ask Uncle for a new mission!", + }, }, [3] = { name = "Mission 1: Borrowed Knowledge", @@ -2647,8 +2554,8 @@ if not Quests then endValue = 2, states = { [1] = "Emma has requested that you steal a Nature Magic Spellbook in the Edron academy.", - [2] = "You have delivered the Nature Magic Spellbook to Emma, ask her for a new mission!" - } + [2] = "You have delivered the Nature Magic Spellbook to Emma, ask her for a new mission!", + }, }, [4] = { name = "Mission 2: Operation Green Claw", @@ -2659,8 +2566,8 @@ if not Quests then states = { [1] = "Your next mission is to find some information about one of \z their missing agents in The Green Claw Swamp.", - [2] = "You have delivered the Black Knight\'s notes to Chester, ask him for a new mission!" - } + [2] = "You have delivered the Black Knight's notes to Chester, ask him for a new mission!", + }, }, [5] = { name = "Mission 2: A File Between Friends", @@ -2670,8 +2577,8 @@ if not Quests then endValue = 2, states = { [1] = "Your next task is to retrieve a file named AH-X17L89.", - [2] = "You have delivered the file named AH-X17L89 to Uncle, ask him for a new mission!" - } + [2] = "You have delivered the file named AH-X17L89 to Uncle, ask him for a new mission!", + }, }, [6] = { name = "Mission 2: Codename:Lumberjack", @@ -2682,8 +2589,8 @@ if not Quests then states = { [1] = "Emma has requested that you retrieve a Rotten Heart of a Tree from \z the Black Knight Villa in Greenclaw swamp north-west of Venore.", - [2] = "You have delivered the Rotten Heart of a Tree to Emma, ask her for a new mission!" - } + [2] = "You have delivered the Rotten Heart of a Tree to Emma, ask her for a new mission!", + }, }, [7] = { name = "Mission 3: Treachery in Port Hope", @@ -2694,8 +2601,8 @@ if not Quests then states = { [1] = "Your next mission is to retrieve some evidence that the traders in Port Hope are up to no good!", [2] = "You have found the evidence, report back to Chester!", - [3] = "You have reported back that you have completed your mission, ask Chester for a new mission!" - } + [3] = "You have reported back that you have completed your mission, ask Chester for a new mission!", + }, }, [8] = { name = "Mission 3: What Men are Made of", @@ -2708,8 +2615,8 @@ if not Quests then [2] = "On your way to the Secret Tavern in the sewers you were attacked by amazons trying to stop you! \z Deliver the barrel of beer to Karl.", [3] = "You have delivered the barrel of beer to Karl, report back to Uncle!", - [4] = "You have reported back that you have completed your task, ask Uncle for a new mission!" - } + [4] = "You have reported back that you have completed your task, ask Uncle for a new mission!", + }, }, [9] = { name = "Mission 3: Rust in Peace", @@ -2721,8 +2628,8 @@ if not Quests then [1] = "Emma has requested that you damage the Ironhouse of Venore, use the \z Case of Rust Bugs on the keyhole in the cellar of the ironhouse.", [2] = "The bugs are at work! Report back to Emma.", - [3] = "You have reported back that you have completed your mission, ask her for a new mission!" - } + [3] = "You have reported back that you have completed your mission, ask her for a new mission!", + }, }, [10] = { name = "Mission 4: Objective Hellgate", @@ -2732,8 +2639,8 @@ if not Quests then endValue = 2, states = { [1] = "Your next mission is to investigate for some documents in Hellgate.", - [2] = "You have delivered the documents to Chester, ask him for a new mission!" - } + [2] = "You have delivered the documents to Chester, ask him for a new mission!", + }, }, [11] = { name = "Mission 4: Pawn Captures Knight", @@ -2742,10 +2649,10 @@ if not Quests then startValue = 1, endValue = 3, states = { - [1] = "Your next task is to travel to the Black Knight\'s Villa and kill the Black Knight!", + [1] = "Your next task is to travel to the Black Knight's Villa and kill the Black Knight!", [2] = "You have killed the Black Knight, report back to Uncle!", - [3] = "You have reported back that you have completed your task, ask Uncle for a new mission!" - } + [3] = "You have reported back that you have completed your task, ask Uncle for a new mission!", + }, }, [12] = { name = "Mission 4: Plot for A Plan", @@ -2755,8 +2662,8 @@ if not Quests then endValue = 2, states = { [1] = "Emma has requested that you retrieve the Building Plans for a ship from the Venore shipyard.", - [2] = "You have delivered the Building Plans to Emma, ask her for a new mission!" - } + [2] = "You have delivered the Building Plans to Emma, ask her for a new mission!", + }, }, [13] = { name = "Mission 5: Coldfinger", @@ -2767,8 +2674,8 @@ if not Quests then states = { [1] = "Your next mission is to travel to the southern barbarians camp and place false evidence!", [2] = "You have placed the false evidence! Report back to Chester.", - [3] = "You have reported back that you have completed your mission, ask Chester for a new mission!" - } + [3] = "You have reported back that you have completed your mission, ask Chester for a new mission!", + }, }, [14] = { name = "Mission 5: A Cryptic Mission", @@ -2778,8 +2685,8 @@ if not Quests then endValue = 2, states = { [1] = "Your next task is to travel to the Isle of the Kings and find a ring.", - [2] = "You have delivered the ring to Uncle, ask him for a new mission!" - } + [2] = "You have delivered the ring to Uncle, ask him for a new mission!", + }, }, [15] = { name = "Mission 5: No Admittance", @@ -2789,8 +2696,8 @@ if not Quests then endValue = 2, states = { [1] = "Emma has requested that you find some hints in the ruins of Dark Cathedral.", - [2] = "You have delivered the Suspicious Documents to Emma, ask her for a new mission!" - } + [2] = "You have delivered the Suspicious Documents to Emma, ask her for a new mission!", + }, }, [16] = { name = "Mission 6: The Weakest Spot", @@ -2800,10 +2707,10 @@ if not Quests then endValue = 3, states = { [1] = "Your next mission is to disguise yourself as an amazon and destroy a \z - beer casket in the north-east corner in the cellar of Svargrond\'s Tavern.", + beer casket in the north-east corner in the cellar of Svargrond's Tavern.", [2] = "You have succesfully destroyed the beer casket disguised as an amazon, report back to Chester!", - [3] = "You have reported back that you have completed your mission, ask Chester for a new mission!" - } + [3] = "You have reported back that you have completed your mission, ask Chester for a new mission!", + }, }, [17] = { name = "Mission 6: A Little Bribe Won't Hurt", @@ -2814,8 +2721,8 @@ if not Quests then states = { [1] = "Your next task is to bribe a barbarian in the large barbarian camp with a weapons crate.", [2] = "You have bribed Freezhild with the weapons create! Report back to Uncle.", - [3] = "You have reported back that you have completed your task, ask Uncle for a new mission!" - } + [3] = "You have reported back that you have completed your task, ask Uncle for a new mission!", + }, }, [18] = { name = "Mission 6: News From the Past", @@ -2825,8 +2732,8 @@ if not Quests then endValue = 2, states = { [1] = "Emma has requested that you go to the Isle of the Kings and retrieve a book.", - [2] = "You have delivered the book to Emma, ask her for a new mission!" - } + [2] = "You have delivered the book to Emma, ask her for a new mission!", + }, }, [19] = { name = "Mission 7: Licence to Kill", @@ -2837,10 +2744,10 @@ if not Quests then states = { [1] = "A Mad Technomancer in Kazordoon is trying to blackmail the city! \z Kill him and bring back his beard as proof.", - [2] = "You have reported back that you have completed your mission, you are now a Special Agent!" - } - } - } + [2] = "You have reported back that you have completed your mission, you are now a Special Agent!", + }, + }, + }, }, [16] = { name = "The Ancient Tombs", @@ -2848,12 +2755,12 @@ if not Quests then startStorageValue = 1, missions = { [1] = { - name = "Omruc\'s Treasure", + name = "Omruc's Treasure", storageId = Storage.TheAncientTombs.OmrucsTreasure, missionId = 10210, startValue = 1, endValue = 1, - description = "You defeated Omruc and received a helmet adornment" + description = "You defeated Omruc and received a helmet adornment", }, [2] = { name = "Thalas' Treasure", @@ -2861,15 +2768,15 @@ if not Quests then missionId = 10211, startValue = 1, endValue = 1, - description = "You defeated Thalas and received a Gem Holder" + description = "You defeated Thalas and received a Gem Holder", }, [3] = { - name = "Diphtrah\'s Treasure", + name = "Diphtrah's Treasure", storageId = Storage.TheAncientTombs.DiphtrahsTreasure, missionId = 10212, startValue = 1, endValue = 1, - description = "You defeated Dipthrah and received a Damaged Helmet" + description = "You defeated Dipthrah and received a Damaged Helmet", }, [4] = { name = "Mahrdis' Treasure", @@ -2877,15 +2784,15 @@ if not Quests then missionId = 10213, startValue = 1, endValue = 1, - description = "You defeated Mahrdis and received a Helmet Ornament" + description = "You defeated Mahrdis and received a Helmet Ornament", }, [5] = { - name = "Vashresamun\'s Treasure", + name = "Vashresamun's Treasure", storageId = Storage.TheAncientTombs.VashresamunsTreasure, missionId = 10214, startValue = 1, endValue = 1, - description = "You solved the musical riddles of Vashresamun\'s Tomb and received a left horn." + description = "You solved the musical riddles of Vashresamun's Tomb and received a left horn.", }, [6] = { name = "Morguthis' Treasure", @@ -2893,7 +2800,7 @@ if not Quests then missionId = 10215, startValue = 1, endValue = 1, - description = "You defeated Morguthis and received a Right Horn" + description = "You defeated Morguthis and received a Right Horn", }, [7] = { name = "Rahemos' Treasure", @@ -2901,9 +2808,9 @@ if not Quests then missionId = 10216, startValue = 1, endValue = 1, - description = "You defeated Rahemos and received a Helmet Piece" - } - } + description = "You defeated Rahemos and received a Helmet Piece", + }, + }, }, [17] = { name = "The Ape City", @@ -2954,10 +2861,10 @@ if not Quests then the snake god with the hammer that Hairycles gave to you.", [18] = "You successfully destroyed the monument of the snake god. \z As reward, you can buy sacred statues from Hairycles. \z - If you haven't done so yet, you should also ask him for a shaman outfit." - } - } - } + If you haven't done so yet, you should also ask him for a shaman outfit.", + }, + }, + }, }, [18] = { name = "The Beginning", @@ -2975,7 +2882,7 @@ if not Quests then Maybe you should talk to him again to find out more.", [2] = "Santiago asked you to go into his house. Upstairs you will find a chest. \z You can keep what you find inside of it. Once you got that, talk to Santiago again.", - [3] = "You have found Santiago\'s Coat and reported back to him. \z + [3] = "You have found Santiago's Coat and reported back to him. \z Your quest is not done yet, you should talk to him a bit more.", [4] = "Santiago gave you a weapon. After equipping it, go to the cellar of his house to find out \z about the cockroach plague.", @@ -2988,8 +2895,8 @@ if not Quests then Afterwards, you should talk to Santiago again.", [10] = "Santiago asked you if you had seen Zirella. Don't let him wait for the answer.", [11] = "You have helped Santiago a lot by killing the cokcroaches in his cellar. \z - In exchange, he gave you equipment and some valuable experience. Well done!" - } + In exchange, he gave you equipment and some valuable experience. Well done!", + }, }, [2] = { name = "Collecting Wood", @@ -3010,8 +2917,8 @@ if not Quests then [6] = "Go into the forest south of here and look for trees without leaves. 'Use' one to break a branch \z from it, then drag & drop the branch back to her cart and 'Use' it with the cart.", [7] = "You have brought a branch to Zirella, congratulations! You should talk to her again for your reward.", - [8] = "You have helped Zirella by collecting wood for her. The reward can be found in her house." - } + [8] = "You have helped Zirella by collecting wood for her. The reward can be found in her house.", + }, }, [3] = { name = "A Hungry Tailor", @@ -3033,10 +2940,10 @@ if not Quests then [7] = "You sucessfully learnt how to change your outfit and how to trade with NPCs. \z Time to head over the bridge to Rookgaard!", [8] = "You have passed the bridge to Rookgaard and have sucessfully completed the Tutorial. \z - If you want to skip the tutorial in the future with a new character, simply say \'skip tutorial' to Santiago." - } - } - } + If you want to skip the tutorial in the future with a new character, simply say 'skip tutorial' to Santiago.", + }, + }, + }, }, [19] = { name = "The Djinn War - Efreet Faction", @@ -3054,8 +2961,8 @@ if not Quests then [2] = "You have found the potential supply thief - Partos in Thais seemed very suspicious. \z Baa'leal might be interested in this matter.", [3] = "You have reported the case to Baa'leal. \z - He seemed very satisfied and told you that Alesar might have another mission for you." - } + He seemed very satisfied and told you that Alesar might have another mission for you.", + }, }, [2] = { name = "Efreet Mission 2: The Tear of Daraman", @@ -3067,9 +2974,9 @@ if not Quests then [1] = "Sneak into Ashta'daramai and steal a "Tear of Daraman". \z For more information about these gems visit the Efreet library.", [2] = "You have successfully managed to steal a Tear of Daraman from Ashta'daramai. Bring it to Alesar.", - [3] = "You have delivered Daraman\'s Tear. \z - Alesar seemed very satisfied and told you that Malor himself might have another mission for you." - } + [3] = "You have delivered Daraman's Tear. \z + Alesar seemed very satisfied and told you that Malor himself might have another mission for you.", + }, }, [3] = { name = "Efreet Mission 3: The Sleeping Lamp", @@ -3078,13 +2985,13 @@ if not Quests then startValue = 1, endValue = 3, states = { - [1] = "Malor asked you to find Fa'hradin\'s sleeping lamp in the orc fortress at Ulderek\'s Rock. \z - Then, sneak into Ashta'daramai and exchange Gabel\'s sleeping lamp with Fa'hradin\'s lamp.", + [1] = "Malor asked you to find Fa'hradin's sleeping lamp in the orc fortress at Ulderek's Rock. \z + Then, sneak into Ashta'daramai and exchange Gabel's sleeping lamp with Fa'hradin's lamp.", [2] = "You successfully exchanged the lamps. Malor will be happy to hear about this.", - [3] = "The Efreet are very satisfied with your help. King Malor allowed you to trade with Yaman and Alesar." - } - } - } + [3] = "The Efreet are very satisfied with your help. King Malor allowed you to trade with Yaman and Alesar.", + }, + }, + }, }, [20] = { name = "The Djinn War - Marid Faction", @@ -3100,8 +3007,8 @@ if not Quests then states = { [1] = "Bring a cookbook of the dwarven kitchen to Bo'ques.", [2] = "You have delivered the cookbook. \z - Bo'ques seemed very satisfied and told you that Fa'hradin might have another mission for you." - } + Bo'ques seemed very satisfied and told you that Fa'hradin might have another mission for you.", + }, }, [2] = { name = "Marid Mission 2: The Spyreport", @@ -3113,8 +3020,8 @@ if not Quests then [1] = "Fa'hradin asked you to sneak into the Efreet fortress Mal'ouqhah and find their undercover spy. \z The codeword is PIEDPIPER.", [2] = "You have delivered the spyreport. \z - Fa'hradin seemed impressed and told you that Gabel himself might have another mission for you." - } + Fa'hradin seemed impressed and told you that Gabel himself might have another mission for you.", + }, }, [3] = { name = "Rata'Mari and the Cheese", @@ -3124,8 +3031,8 @@ if not Quests then endValue = 2, states = { [1] = "You have promised Rata'Mari cheese. Once you deliver some to him, he will hand over his spyreport.", - [2] = "You got Rata'Mari\'s spyreport. He seems to be quite happy with the cheese you brought him." - } + [2] = "You got Rata'Mari's spyreport. He seems to be quite happy with the cheese you brought him.", + }, }, [4] = { name = "Marid Mission 3: The Sleeping Lamp", @@ -3134,13 +3041,13 @@ if not Quests then startValue = 1, endValue = 3, states = { - [1] = "Gabel asked you to find Fa'hradin\'s sleeping lamp in the orc fortress at Ulderek\'s Rock. \z - Then, sneak into Mal'ouqhah and exchange Malor\'s sleeping lamp with Fa'hradin\'s lamp.", + [1] = "Gabel asked you to find Fa'hradin's sleeping lamp in the orc fortress at Ulderek's Rock. \z + Then, sneak into Mal'ouqhah and exchange Malor's sleeping lamp with Fa'hradin's lamp.", [2] = "You successfully exchanged the lamps. Gabel will be happy to hear about this.", - [3] = "The Marid deeply appreciate your help. King Gabel allowed you to trade with Haroun and Nah'bob." - } - } - } + [3] = "The Marid deeply appreciate your help. King Gabel allowed you to trade with Haroun and Nah'bob.", + }, + }, + }, }, [21] = { name = "The Hidden City of Beregar", @@ -3156,8 +3063,8 @@ if not Quests then states = { [1] = "Deliver 3 Gear Wheels to Xorlosh.", [2] = "You sucessfully helped Xorlosh in repairing the elevator. \z - You can now enter the teleporter to the eastern part of the mine." - } + You can now enter the teleporter to the eastern part of the mine.", + }, }, [2] = { name = "Justice for All", @@ -3171,10 +3078,10 @@ if not Quests then Furthermore you should try to find that ring which belongs to Rerun.", [2] = "You should talking to Grombur about Nokmir.", [3] = "You should try to find that ring which belongs to Rerun everywhere in the mine.", - [4] = "You have found Rerun\'s ring. Bring the ring to the emperor Rehal and talk to him about Nokmir.", + [4] = "You have found Rerun's ring. Bring the ring to the emperor Rehal and talk to him about Nokmir.", [5] = "You informed emperor Rehal about your recent discoveries and he acquitted Nokmir of being a thief.", - [6] = "You told Nokmir about his acquittal and he granted you access to the northern mine." - } + [6] = "You told Nokmir about his acquittal and he granted you access to the northern mine.", + }, }, [3] = { name = "Pythius the Rotten", @@ -3184,8 +3091,8 @@ if not Quests then endValue = 1, states = { [1] = "You won the battle against the malicious undead dragon Pythius the Rotten. \z - He granted you firewalker boots as a reward." - } + He granted you firewalker boots as a reward.", + }, }, [4] = { name = "Sweet as Chocolate Cake", @@ -3197,8 +3104,8 @@ if not Quests then [1] = "Bake a Chocolate Cake and bring it to Bolfona at the bar.", [2] = "Report back to Frafnar by telling him about the mission.", [3] = "You told Frafnar that you did everything he asked you to do. \z - You may now enter the western part of the mine." - } + You may now enter the western part of the mine.", + }, }, [5] = { name = "The Good Guard", @@ -3209,10 +3116,10 @@ if not Quests then states = { [1] = "Grombur asked you to get him a cask of dwarven brown ale. \z You heard that Boozer in Venore tried to brew some. Maybe you should pay him a visit.", - [2] = "Grombur liked the ale and you are now allowed to enter his part of the mine." - } - } - } + [2] = "Grombur liked the ale and you are now allowed to enter his part of the mine.", + }, + }, + }, }, [22] = { name = "The Ice Islands Quest", @@ -3231,8 +3138,8 @@ if not Quests then Call him sniffler and feed him with meat.", [2] = "Tell Iskan that you found and feed Sniffler", [3] = "You are now a friend of Iskan and can ask him for a passage to Nibelor. \z - You should ask Hjaern in Nibelor if you can help him." - } + You should ask Hjaern in Nibelor if you can help him.", + }, }, [2] = { name = "Nibelor 1: Breaking the Ice", @@ -3246,8 +3153,8 @@ if not Quests then [2] = "You have broke 1 of 3 icepassages", [3] = "You have broke 2 of 3 icepassages", [4] = "You have broke 3 of 3 icepassages! Tell Hjaern your mission!", - [5] = "You should ask Silfind if you can help her in some matters." - } + [5] = "You should ask Silfind if you can help her in some matters.", + }, }, [3] = { name = "Nibelor 2: Ecological Terrorism", @@ -3261,8 +3168,8 @@ if not Quests then [2] = "Now head back to Svargrond and go to Buddel, the drunk sailor in southern Svargrond, \z and ask him to take you to Tyrsung. Now go all the way to the southern shores \z where you find a outpost. Go to the bottom deck and use the jug with the western mast", - [3] = "Go tell Siflind that you released the ants and aks her for mission!" - } + [3] = "Go tell Siflind that you released the ants and aks her for mission!", + }, }, [4] = { name = "Nibelor 3: Artful Sabotage", @@ -3273,8 +3180,8 @@ if not Quests then states = { [1] = "Siflind gave you a Vial of Paint to use on some Baby Seals. \z Go back to Tyrsung and follow the shore from Buddel south. Use the Vial of Paint on three of these seals.", - [2] = "Go tell Siflind that you painted the seals and aks her for mission!" - } + [2] = "Go tell Siflind that you painted the seals and aks her for mission!", + }, }, [5] = { name = "Nibelor 4: Berserk Brewery", @@ -3288,8 +3195,8 @@ if not Quests then [3] = "The next items Siflind need are 3 bonelord eyes. Bring her them!", [4] = "The next items Siflind need are 2 fish fins. Bring her them!", [5] = "The next item Siflind need is a green dragon scale. Bring her that!", - [6] = "You helped Siflind to defend Svargrond. Now Nilsor need help, go ask him for mission." - } + [6] = "You helped Siflind to defend Svargrond. Now Nilsor need help, go ask him for mission.", + }, }, [6] = { name = "Nibelor 5: Cure the Dogs", @@ -3315,8 +3222,8 @@ if not Quests then The giant glimmercap mushroom exists in caves and other preferably warm and humid places. \z Use an ordinary kitchen spoon on a mushroom to collectits spores.", [8] = "You found all ingredients to cure Nilsor dogs, ask him for mission. \z - You can now travel by Dog Sleds to Inukaya." - } + You can now travel by Dog Sleds to Inukaya.", + }, }, [7] = { name = "The Secret of Helheim", @@ -3328,8 +3235,8 @@ if not Quests then [1] = "Hjaern might have a mission for you. So maybe you go and talk to him.", [2] = "Hjaern send you to find someone in Svargrond who can give you a passage to \z Helheim and seek the reason for the unrest there.", - [3] = "You discovered the necromantic altar and should report Hjaern about it." - } + [3] = "You discovered the necromantic altar and should report Hjaern about it.", + }, }, [8] = { name = "The Contact", @@ -3338,13 +3245,13 @@ if not Quests then startValue = 1, endValue = 4, states = { - [1] = "Get out of Nibelor and go to the Svargrond Explorer\'s Society. Ask Lurik for the mission.", + [1] = "Get out of Nibelor and go to the Svargrond Explorer's Society. Ask Lurik for the mission.", [2] = "Get to the raider camp, then follow to the extreme south where you find lots of barbarians. \z Near the southern most coastline, try looking for the NPC Nor. Ask him about Memory Crystal.", [3] = "Go back to Lurik and deliver him the memory crystal.", [4] = "Give Lurik some time to evaluate the information (ca. 5min). \z - Then talk to him again about your mission." - } + Then talk to him again about your mission.", + }, }, [9] = { name = "Formorgar Mines 1: The Mission", @@ -3356,8 +3263,8 @@ if not Quests then [1] = "Find the entrance of the Formorgar Mines. \z Find some hint or someone who is willing to talk about what is going on there.", [2] = "You found a old and tattered written paper in a skeleton next to a Restless Soul, \z - you can only make out a signature: Tylaf, apprentice of Hjaern. Ask Hjaern about Tylaf." - } + you can only make out a signature: Tylaf, apprentice of Hjaern. Ask Hjaern about Tylaf.", + }, }, [10] = { name = "Formorgar Mines 2: Ghostwhisperer", @@ -3367,8 +3274,8 @@ if not Quests then endValue = 2, states = { [1] = "Go back to the mine and ask the restless soul about his story.", - [2] = "You already have listen to his story!" - } + [2] = "You already have listen to his story!", + }, }, [11] = { name = "Formorgar Mines 3: The Secret", @@ -3380,8 +3287,8 @@ if not Quests then [1] = "The Cultists plan is to create a new demon army for their master to conquer the world. \z Hjaern and the other shamans must learn about it! Hurry before its too late.", [2] = "The Cultists plan is to create a new demon army for their master to conquer the world. \z - Hjaern and the other shamans are already informed!" - } + Hjaern and the other shamans are already informed!", + }, }, [12] = { name = "Formorgar Mines 4: Retaliation", @@ -3396,8 +3303,8 @@ if not Quests then [3] = "2 of 4 obelisks are marked.", [4] = "3 of 4 obelisks are marked.", [5] = "Once all 4 obelisks are marked report back to Hjaern.", - [6] = "You got the Norseman outfit and you have access to the Yakchal room deep in the Formorgar Mines." - } + [6] = "You got the Norseman outfit and you have access to the Yakchal room deep in the Formorgar Mines.", + }, }, [13] = { name = "Barbarian Test 1: Barbarian Booze", @@ -3408,8 +3315,8 @@ if not Quests then states = { [1] = "You participate in the drinking challenge. Now you can get the permission for a few sips of barbarian mead in exchange for some honey.", [2] = "Now drink from the bucket until you drink 10 sips in a row without passing out", - [3] = "You have mastered the first task of the barbarian test. If you haven't done so yet, talk to Sven about it." - } + [3] = "You have mastered the first task of the barbarian test. If you haven't done so yet, talk to Sven about it.", + }, }, [14] = { name = "Barbarian Test 2: The Bear Hugging", @@ -3419,8 +3326,8 @@ if not Quests then endValue = 2, states = { [1] = "Somewhere north of Svargrond you will find a lonely bear which you have to hug. You wonder what you were thinking when accepting this quest...", - [2] = "You passed the bear hugging test (and should take a bath). If you haven't done so yet, talk to Sven about it." - } + [2] = "You passed the bear hugging test (and should take a bath). If you haven't done so yet, talk to Sven about it.", + }, }, [15] = { name = "Barbarian Test 3: The Mammoth Pushing", @@ -3430,8 +3337,8 @@ if not Quests then endValue = 2, states = { [1] = "Find a mammoth north-west of Svargrond and knock it over. You wonder whether your mission is becoming a barbarian or rather commiting suicide.", - [2] = "You have knocked over a mammoth - though you wonder what this crushing noise at your spine was. If you haven't done so yet, talk to Sven about the mammoth pushing." - } + [2] = "You have knocked over a mammoth - though you wonder what this crushing noise at your spine was. If you haven't done so yet, talk to Sven about the mammoth pushing.", + }, }, [16] = { name = "The Honorary Barbarian", @@ -3440,10 +3347,10 @@ if not Quests then startValue = 8, endValue = 8, states = { - [8] = "You are now a honorary barbarian and can become a citizen of Svargrond. If you haven't done so yet, you should look for a barbarian in need of help in the north of the town." - } - } - } + [8] = "You are now a honorary barbarian and can become a citizen of Svargrond. If you haven't done so yet, you should look for a barbarian in need of help in the north of the town.", + }, + }, + }, }, [23] = { name = "The Inquisition", @@ -3464,8 +3371,8 @@ if not Quests then [4] = "You investigated 3 of 5 guards in Thais.", [5] = "You investigated 4 of 5 guards in Thais.", [6] = "You investigated 5 of 5 guards in Thais. Get back to Thais and report your mission to Henricus.", - [7] = "You investigated all guards in Thais." - } + [7] = "You investigated all guards in Thais.", + }, }, [2] = { name = "Mission 2: Eclipse", @@ -3479,8 +3386,8 @@ if not Quests then Use the vial of holy water that he gives you on the big cauldron and open the chest to your left, \z then bring the witches' grimoire to Henricus.", [2] = "Find the witches' grimoire and bring it to Henricus.", - [3] = "You already brought the witches' grimoire to Henricus." - } + [3] = "You already brought the witches' grimoire to Henricus.", + }, }, [3] = { name = "Mission 3: Vampire Hunt", @@ -3490,15 +3397,15 @@ if not Quests then endValue = 6, states = { [1] = "Henricus wants you to find the Dwarfish Vampire Hunter, Storkus, located west of the Dwarf Bridge. \z - It\'s good idea bring your 20 Vampire Dusts with you to save some time.", + It's good idea bring your 20 Vampire Dusts with you to save some time.", [2] = "Go Back to Storkus the Dwarf and ask for Mission.", [3] = "Now Storkus wants you to kill a vampire lord, The Count in the Green Claw Swamp, \z The Count is located near to the Blood Herb Quest. To summon The Count, \z you must use the coffin in the center of the room. Kill it and bring The Ring of the Count to Storkus.", [4] = "Kill The Count and bring his ring to Storkus the Dwarf and ask for Mission.", [5] = "Return to Henricus and tell him that you finished your job here.", - [6] = "Get back to Thais and report your mission to Henricus." - } + [6] = "Get back to Thais and report your mission to Henricus.", + }, }, [4] = { name = "Mission 4: The Haunted Ruin", @@ -3510,8 +3417,8 @@ if not Quests then [1] = "Henricus will gave you a Special Flask (vial of holy water). Go to Liberty Bay \z and use the vial on an old house. Use this vial of holy water on that spot to drive out the evil being.", [2] = "Kill the Pirate Ghost and get back to Thais and report your mission to Henricus.", - [3] = "You already cleaned the abandoned and haunted house in Liberty, ask Henricus for mission." - } + [3] = "You already cleaned the abandoned and haunted house in Liberty, ask Henricus for mission.", + }, }, [5] = { name = "Mission 5: Essential Gathering", @@ -3522,8 +3429,8 @@ if not Quests then states = { [1] = "Henricus wants 20 Demonic Essences as a proof of your accomplishments.", [2] = "Now ask Henricus for outfit to get the Demon Hunter Outfit.", - [3] = "You got the Demon Hunter Outfit! Ask Henricus for mission to unlock more addons." - } + [3] = "You got the Demon Hunter Outfit! Ask Henricus for mission to unlock more addons.", + }, }, [6] = { name = "Mission 6: The Demon Ungreez", @@ -3534,8 +3441,8 @@ if not Quests then states = { [1] = "Henricus wants you to kill a demon called Ungreez. Head to Edron Hero Cave and go down a few levels.", [2] = "You killed Ungreez, report your mission to Henricus.", - [3] = "You got the the first addon of Demon Hunter Outfit! Ask Henricus for mission to unlock more addons." - } + [3] = "You got the the first addon of Demon Hunter Outfit! Ask Henricus for mission to unlock more addons.", + }, }, [7] = { name = "Mission 7: The Shadow Nexus", @@ -3549,10 +3456,10 @@ if not Quests then [2] = "You destroyed the shadow nexus! Get back to Thais and report your mission to Henricus.", [3] = "Now ask to Henricus for a outfit. He will give you the 2nd addon of the Demon Hunter Outfits.", [4] = "You got the the second addon of Demon Hunter Outfit! Go now to the reward room and choose one wisely!", - [5] = "You have completed The Inquisition Quest! You can now buy the Blessing of the Inquisition!" - } - } - } + [5] = "You have completed The Inquisition Quest! You can now buy the Blessing of the Inquisition!", + }, + }, + }, }, [24] = { name = "The Postman Missions", @@ -3571,8 +3478,8 @@ if not Quests then [3] = "Kevin wants you to travel with Captain Seahorse to Venore.", [4] = "Kevin wants you to travel with Brodrosch to Cormaya", [5] = "You have checked the Postal Routes, report back to Kevin!", - [6] = "You have reported back that you have completed the mission." - } + [6] = "You have reported back that you have completed the mission.", + }, }, [2] = { name = "Mission 02 - Fix Mailbox", @@ -3583,8 +3490,8 @@ if not Quests then states = { [1] = "Kevin wants you to fix one of their Mailboxes located on Folda with a crowbar.", [2] = "You have fixed the mailbox, report back to Kevin!", - [3] = "You have reported back that you have completed the mission." - } + [3] = "You have reported back that you have completed the mission.", + }, }, [3] = { name = "Mission 03 - Bill Delivery", @@ -3594,10 +3501,10 @@ if not Quests then endValue = 3, states = { [1] = "Kevin wants you to deliver a bill to the stage magician David Brassacres. \z - He\'s hiding from his creditors somewhere in Venore.", + He's hiding from his creditors somewhere in Venore.", [2] = "You have delivered the bill to the stage magician David Brassacres, report back to Kevin!", - [3] = "You have reported back that you have completed the mission." - } + [3] = "You have reported back that you have completed the mission.", + }, }, [4] = { name = "Mission 04 - Aggressive Dogs", @@ -3607,8 +3514,8 @@ if not Quests then endValue = 2, states = { [1] = "Kevin has asked you to deliver 20 Bones to him.", - [2] = "You have delivered 20 Bones to Kevin." - } + [2] = "You have delivered 20 Bones to Kevin.", + }, }, [5] = { name = "Mission 05 - Present Delivery", @@ -3621,8 +3528,8 @@ if not Quests then lower right side of his room and deliver it to Dermot in Fibula.", [2] = "Deliver the present to Dermot in Fibula.", [3] = "You have delivered the present to Dermot, report back to Kevin!", - [4] = "You have reported back that you have completed the mission." - } + [4] = "You have reported back that you have completed the mission.", + }, }, [6] = { name = "Mission 06 - New Uniforms", @@ -3645,8 +3552,8 @@ if not Quests then [10] = "Noodles dislikes mouldy cheese! Report back to Kevin.", [11] = "Kevin wants you to tell Hugo that they order those uniforms.", [12] = "Hugo has agreed to make the uniforms, report back to Kevin!", - [13] = "You have reported back that you have completed the mission." - } + [13] = "You have reported back that you have completed the mission.", + }, }, [7] = { name = "Mission 07 - Measurements", @@ -3662,8 +3569,8 @@ if not Quests then [5] = "You have received the measurements from 4 of 6 post officers.", [6] = "You have received the measurements from 5 of 6 post officers.", [7] = "You have received all measurements, report back to Kevin!", - [8] = "You have reported back that you have completed the mission." - } + [8] = "You have reported back that you have completed the mission.", + }, }, [8] = { name = "Mission 08 - Missing Courier", @@ -3674,8 +3581,8 @@ if not Quests then states = { [1] = "Kevin wants you to find the missing courier Waldo or at least his posthorn.", [2] = "You have found Waldos posthorn.", - [3] = "You have reported back that you have completed the mission." - } + [3] = "You have reported back that you have completed the mission.", + }, }, [9] = { name = "Mission 09 - Dear Santa", @@ -3687,8 +3594,8 @@ if not Quests then [1] = "Kevin wants you to deliver som letters to Santa Claus on Vega.", [2] = "You have retrieved the letters, deliver them to Santa Claus on Vega.", [3] = "You have delivered the letters to Santa Claus on Vega.", - [4] = "You have reported back that you have completed the mission." - } + [4] = "You have reported back that you have completed the mission.", + }, }, [10] = { name = "Mission 10 - Mintwallin", @@ -3699,8 +3606,8 @@ if not Quests then states = { [1] = "Kevin wants you to deliver a letter to Markwin, king of Mintwallin from his mother.", [2] = "You have delivered the letter to Markwin.", - [3] = "You have reported back that you have completed the mission." - } + [3] = "You have reported back that you have completed the mission.", + }, }, [11] = { name = "Postman Rank", @@ -3713,10 +3620,10 @@ if not Quests then [2] = "Postman", [3] = "Grand Postman", [4] = "Grand Postman for Special Operations", - [5] = "Arch Postman" - } - } - } + [5] = "Arch Postman", + }, + }, + }, }, [25] = { name = "The Shattered Isles", @@ -3735,9 +3642,9 @@ if not Quests then [3] = "Ocelus told you to get a poem for him, if you didn't buy one already, \z head to Ab'Dendriel and buy a Love Poem from Elvith.", [4] = "You need to go recite the poem to Marina and impress her \z - with the Djinn\'s romantic and poetic abilities.", - [5] = "After reciting the poem to Marina, she decided to date Ocelus and release Ray Striker from her spell." - } + with the Djinn's romantic and poetic abilities.", + [5] = "After reciting the poem to Marina, she decided to date Ocelus and release Ray Striker from her spell.", + }, }, [2] = { name = "A Poem for the Mermaid", @@ -3751,8 +3658,8 @@ if not Quests then [2] = "You discovered that she does in fact have a spell on him, and will not release him unless \z someone better comes along.", [3] = "You are a true master in reciting love poems now. \z - No mermaid will be able to resist if you ask for a date!" - } + No mermaid will be able to resist if you ask for a date!", + }, }, [3] = { name = "Access to Goroma", @@ -3761,7 +3668,7 @@ if not Quests then startValue = 1, endValue = 1, description = "After helping Jack Fate to collect the 30 woodpieces, \z - Jack Fate in Liberty Bay will bring you to Goroma." + Jack Fate in Liberty Bay will bring you to Goroma.", }, [4] = { name = "Access to Laguna Island", @@ -3769,8 +3676,8 @@ if not Quests then missionId = 10266, startValue = 1, endValue = 1, - description = "After arranging a date for Marina and Ocelus, you are allowed to use Marina\'s sea turtles. \z - They will bring you to the idyllic Laguna Islands." + description = "After arranging a date for Marina and Ocelus, you are allowed to use Marina's sea turtles. \z + They will bring you to the idyllic Laguna Islands.", }, [5] = { name = "Access to Meriana", @@ -3778,8 +3685,8 @@ if not Quests then missionId = 10267, startValue = 1, endValue = 1, - description = "After earning the trust of the governor\'s daughter Eleonore, \z - Captain Waverider in Liberty Bay will bring you to Meriana if you tell him the secret codeword 'peg leg'." + description = "After earning the trust of the governor's daughter Eleonore, \z + Captain Waverider in Liberty Bay will bring you to Meriana if you tell him the secret codeword 'peg leg'.", }, [6] = { name = "Access to Nargor", @@ -3788,10 +3695,10 @@ if not Quests then startValue = 1, endValue = 1, description = "After convincing the people in Sabrehaven that you are a trustworthy hero, \z - Sebastian will sail you to Nargor." + Sebastian will sail you to Nargor.", }, [7] = { - name = "Ray\'s Mission 1: Fafnar\'s Fire", + name = "Ray's Mission 1: Fafnar's Fire", storageId = Storage.TheShatteredIsles.RaysMission1, missionId = 10269, startValue = 1, @@ -3801,12 +3708,12 @@ if not Quests then whom the other pirates sent to get the fire. When she asks for a payment, tell her \z 'Your continued existence is payment enough'.", [2] = "Sandra will be enraged and will cut any deals with pirates. Report back to Raymond Striker.", - [3] = "Ray Striker was pleased to hear about Sandra\'s rage. If you haven't done so yet, \z - ask him for other missions." - } + [3] = "Ray Striker was pleased to hear about Sandra's rage. If you haven't done so yet, \z + ask him for other missions.", + }, }, [8] = { - name = "Ray\'s Mission 2: Sabotage", + name = "Ray's Mission 2: Sabotage", storageId = Storage.TheShatteredIsles.RaysMission2, missionId = 10270, startValue = 1, @@ -3814,27 +3721,27 @@ if not Quests then states = { [1] = "Buy a fire bug at Liberty Bay and infiltrate Nargor. \z Find the pirates' harbor and use the fire bug to sabotage their catapult there.", - [2] = "You were able to sabotage the catapult in the pirate\'s harbor. \z + [2] = "You were able to sabotage the catapult in the pirate's harbor. \z Report back to Ray Striker to tell him about mission.", [3] = "Ray Striker was pleased to hear about successful sabotage. \z - If you haven't done so yet, ask him for other missions." - } + If you haven't done so yet, ask him for other missions.", + }, }, [9] = { - name = "Ray\'s Mission 3: Spy Mission", + name = "Ray's Mission 3: Spy Mission", storageId = Storage.TheShatteredIsles.RaysMission3, missionId = 10271, startValue = 1, endValue = 2, states = { - [1] = "Travel to Nargor and try to enter de pirate\'s tavern by deceiving the guard in front of it. \z + [1] = "Travel to Nargor and try to enter de pirate's tavern by deceiving the guard in front of it. \z Read all the plans which you can find in the tavern and report back to Striker.", - [2] = "You studied all of the pirate\'s plans in their tavern which will give insight about their next strikes. \z - If you haven't done so yet, ask Ray for another mission." - } + [2] = "You studied all of the pirate's plans in their tavern which will give insight about their next strikes. \z + If you haven't done so yet, ask Ray for another mission.", + }, }, [10] = { - name = "Ray\'s Mission 4: Proof of Death", + name = "Ray's Mission 4: Proof of Death", storageId = Storage.TheShatteredIsles.RaysMission4, missionId = 10272, startValue = 1, @@ -3849,8 +3756,8 @@ if not Quests then [4] = "Klaus belieaves that Ray Striker is dead and will celebrate a big party. \z You should tell Ray about your successful mission.", [5] = "Ray was very impressed to hear about your successful mission \z - and gave you a ship and a pirate outfit as reward." - } + and gave you a ship and a pirate outfit as reward.", + }, }, [11] = { name = "Reputation in Sabrehaven: Suspicious", @@ -3878,8 +3785,8 @@ if not Quests then people there might have missions for you. This will improve your reputation and earn their trust.", [11] = "Ariella asked you to bring a sample of whisper beer from a secret whisper bar in Carlin. \z Help her and improve your reputation in Sabrehaven.", - [12] = "Take the sample of whisper beer to Ariella. Help her and improve your reputation in Sabrehaven." - } + [12] = "Take the sample of whisper beer to Ariella. Help her and improve your reputation in Sabrehaven.", + }, }, [12] = { name = "Reputation in Sabrehaven: Friendly", @@ -3893,8 +3800,8 @@ if not Quests then [15] = "You have finished six missions. People in Sabrehaven seem to start trusting you. \z Maybe this is a good time for some more difficult missions.", [16] = "You have finished seven missions. People in Sabrehaven seem to start trusting you. \z - Maybe this is a good time for some more difficult missions." - } + Maybe this is a good time for some more difficult missions.", + }, }, [13] = { name = "Reputation in Sabrehaven: Cordial", @@ -3903,7 +3810,7 @@ if not Quests then startValue = 18, endValue = 19, description = "You have finished eight missions. \z - People in Sabrehaven seem to trust you, but there is still one last mission left." + People in Sabrehaven seem to trust you, but there is still one last mission left.", }, [14] = { name = "Reputation in Sabrehaven: Loyal", @@ -3914,8 +3821,8 @@ if not Quests then states = { [20] = "You have finished nine missions. People in Sabrehaven are considering you as one of them.", [21] = "You have finished all missions. \z - People in Sabrehaven are considering you as one of them and you earned their full trust." - } + People in Sabrehaven are considering you as one of them and you earned their full trust.", + }, }, [15] = { name = "The Counterspell", @@ -3924,15 +3831,15 @@ if not Quests then startValue = 1, endValue = 4, states = { - [1] = "You have begun Chondur\'s ritual. Bring him a fresh dead chicken so that he can begin to \z + [1] = "You have begun Chondur's ritual. Bring him a fresh dead chicken so that he can begin to \z create a counterspell which will allow you to pass the magical barrier on Goroma.", - [2] = "You have begun Chondur\'s ritual. Bring him a fresh dead rat so that he can continue \z + [2] = "You have begun Chondur's ritual. Bring him a fresh dead rat so that he can continue \z creating a counterspell which will allow you to pass the magical barrier on Goroma.", - [3] = "You have begun Chondur\'s ritual. Bring him a fresh dead black sheep so that he can \z + [3] = "You have begun Chondur's ritual. Bring him a fresh dead black sheep so that he can \z complete his counterspell which will allow you to pass the magical barrier on Goroma.", [4] = "You may pass the energy barrier on Goroma. The counterspell Chondur created for you \z - with his ritual will allow you to withstand the evil magic of the cultist." - } + with his ritual will allow you to withstand the evil magic of the cultist.", + }, }, [16] = { name = "The Errand", @@ -3943,23 +3850,23 @@ if not Quests then states = { [1] = "You told Eleonore to run a small errand. Deliver the 200 gold pieces she \z gave to the herbalist Charlotta in the south-western part of Liberty Bay.", - [2] = "You delivered the gold to Charlotta. Return to Eleonore and tell her the secret password: peg leg" - } + [2] = "You delivered the gold to Charlotta. Return to Eleonore and tell her the secret password: peg leg", + }, }, [17] = { - name = "The Governor\'s Daughter", + name = "The Governor's Daughter", storageId = Storage.TheShatteredIsles.TheGovernorDaughter, missionId = 10279, startValue = 1, endValue = 3, states = { - [1] = "You promised to find Eleonore\'s lost ring. She told you that a parrot stole it from her \z + [1] = "You promised to find Eleonore's lost ring. She told you that a parrot stole it from her \z dressing table and flew to the nearby mountains. You might need a rake to retrieve the ring.", [2] = "You found the ring. Return it to Eleonore.", - [3] = "You returned the ring to Eleonore." - } - } - } + [3] = "You returned the ring to Eleonore.", + }, + }, + }, }, [26] = { name = "The Thieves Guild", @@ -3974,8 +3881,8 @@ if not Quests then endValue = 2, states = { [1] = "Dorian wants you to collect 10 elephant tusks and deliver them to him.", - [2] = "You delivered the ten tusks to Dorian." - } + [2] = "You delivered the ten tusks to Dorian.", + }, }, [2] = { name = "Mission 2: Burglary", @@ -3984,10 +3891,10 @@ if not Quests then startValue = 1, endValue = 3, states = { - [1] = "Dorian wants you to steal a vase from Sarina, the owner of Carlin\'s general store.", + [1] = "Dorian wants you to steal a vase from Sarina, the owner of Carlin's general store.", [2] = "You have stolen the vase, report back to Dorian!", - [3] = "You have delivered the stolen vase to Dorian, ask him for a new mission!" - } + [3] = "You have delivered the stolen vase to Dorian, ask him for a new mission!", + }, }, [3] = { name = "Mission 3: Invitation", @@ -3996,10 +3903,10 @@ if not Quests then startValue = 1, endValue = 3, states = { - [1] = "Your task is to somehow convince Oswald to hand you an invitation to the king\'s ball.", - [2] = "You have received the invitation to the King\'s ball, report back to Dorian!", - [3] = "You have delivered the invitation to Dorian, ask him for a new mission!" - } + [1] = "Your task is to somehow convince Oswald to hand you an invitation to the king's ball.", + [2] = "You have received the invitation to the King's ball, report back to Dorian!", + [3] = "You have delivered the invitation to Dorian, ask him for a new mission!", + }, }, [4] = { name = "Mission 4: Bridge Robbery", @@ -4015,8 +3922,8 @@ if not Quests then [5] = "You have received the forged documents from Ahmet, next is to get a disguise from Percybald in Venore!", [6] = "You have received the dwarf disguise from Percybald. Now go do the deal with Nurik.", [7] = "You have traded the forged documents for the painting, report back to Dorian.", - [8] = "You have delivered the painting to Dorian, ask him for a new mission!" - } + [8] = "You have delivered the painting to Dorian, ask him for a new mission!", + }, }, [5] = { name = "Mission 5: Enforcing Debts", @@ -4027,8 +3934,8 @@ if not Quests then states = { [1] = "Your mission is to travel to Tiquanda. Fina a hidden smuggler cave to the north of Port Hope \z and try to retrieve the valuable goblet which Dorian is looking for. Once you got it, bring it to him.", - [2] = "You have delivered the golden goblet to Dorian, ask him for a new mission!" - } + [2] = "You have delivered the golden goblet to Dorian, ask him for a new mission!", + }, }, [6] = { name = "Mission 6: Fishnapping", @@ -4041,8 +3948,8 @@ if not Quests then Talk to Chantalle in Liberty Bay.", [2] = "You have received the key for Theodore Loveless' room, time to fishnap his fish!", [3] = "You have fishnapped Theodore Loveless' fish, deliver it to Dorian.", - [4] = "You have delivered the fish to Dorian, ask him for a new mission!" - } + [4] = "You have delivered the fish to Dorian, ask him for a new mission!", + }, }, [7] = { name = "Mission 7: Blackmail", @@ -4053,8 +3960,8 @@ if not Quests then states = { [1] = "Your current task is to find compromising information about one of the \z Venore city guards, no matter how. A good starting point might be in their barracks.", - [2] = "You have delivered the compromising letter to Dorian, ask him for a new mission!" - } + [2] = "You have delivered the compromising letter to Dorian, ask him for a new mission!", + }, }, [8] = { name = "Mission 8: Message", @@ -4066,10 +3973,10 @@ if not Quests then [1] = "Dorian wants you to deliver a message to his competitors in the dark cathedral.", [2] = "You have put up the message, report back to Dorian.", [3] = "You have reported back that you have completed the mission, \z - Dorian now allows you to trade with Black Bert." - } - } - } + Dorian now allows you to trade with Black Bert.", + }, + }, + }, }, [27] = { name = "The Travelling Trader Quest", @@ -4085,8 +3992,8 @@ if not Quests then states = { [1] = "Your first mission for becoming a recognized trader is to bring the \z traveling salesman Rashid a Deer Trophy.", - [2] = "You have completed this mission. Talk with Rashid to continue." - } + [2] = "You have completed this mission. Talk with Rashid to continue.", + }, }, [2] = { name = "Mission 2: Delivery", @@ -4100,8 +4007,8 @@ if not Quests then So he wants you to go and pick it up from Snake Eye.", [3] = "Take the package just next door.", [4] = "Now bring back the package to Rashid.", - [5] = "You have completed this mission. Talk with Rashid to continue." - } + [5] = "You have completed this mission. Talk with Rashid to continue.", + }, }, [3] = { name = "Mission 3: Cheese", @@ -4113,8 +4020,8 @@ if not Quests then [1] = "Rashid wants you to pick his special order from Miraia in Darashia. \z But you have to be quick, Scarab cheese can rot really fast in high temperature.", [2] = "Now quickly bring back the Scarab cheese to Rashid.", - [3] = "You have completed this mission. Talk with Rashid to continue." - } + [3] = "You have completed this mission. Talk with Rashid to continue.", + }, }, [4] = { name = "Mission 4: Vase", @@ -4127,8 +4034,8 @@ if not Quests then He asks you to buy it from Briasol and bring it back. \z But you should be carefully, since the vase is very fragile.", [2] = "Now carefully bring the vase back to Rashid.", - [3] = "You have completed this mission. Talk with Rashid to continue." - } + [3] = "You have completed this mission. Talk with Rashid to continue.", + }, }, [5] = { name = "Mission 5: Make a deal", @@ -4140,8 +4047,8 @@ if not Quests then [1] = "This time, Rashid is testing your trading skills to buy a Crimson Sword from Uzgod. \z But it have to be less than 400 gold coins and the quality has to be perfect.", [2] = "Now bring the sword back to Rashid.", - [3] = "You have completed this mission. Talk with Rashid to continue." - } + [3] = "You have completed this mission. Talk with Rashid to continue.", + }, }, [6] = { name = "Mission 6: Goldfish", @@ -4151,8 +4058,8 @@ if not Quests then endValue = 2, states = { [1] = "Rashid wants you to bring him a Goldfish Bowl.", - [2] = "You have completed this mission. Talk with Rashid to continue." - } + [2] = "You have completed this mission. Talk with Rashid to continue.", + }, }, [7] = { name = "Mission 7: Declare", @@ -4162,10 +4069,10 @@ if not Quests then endValue = 1, states = { [1] = "Rashid has declare you as one of his recognized traders, \z - and now you are able to trade with him anytime.." - } - } - } + and now you are able to trade with him anytime..", + }, + }, + }, }, [28] = { name = "The Explorer Society", @@ -4184,8 +4091,8 @@ if not Quests then [2] = "Get into Dwacatra and get Uzgod's family brooch.", [3] = "Bring family brooch back to Uzgod", [4] = "Bring the pickaxe back to the Explorer Society representative.", - [5] = "You have completed Joining the Explorers" - } + [5] = "You have completed Joining the Explorers", + }, }, [2] = { name = "The Ice Delivery", @@ -4198,8 +4105,8 @@ if not Quests then Get some ice and bring it here as fast as you can. \z If the ice melt away, report on your ice delivery mission anyway.", [7] = "You have 10 minutes before the icicle defrosts. Run back to the Explorer Society representative!", - [8] = "You have completed The Ice Delivery." - } + [8] = "You have completed The Ice Delivery.", + }, }, [3] = { name = "The Butterfly Hunt", @@ -4219,8 +4126,8 @@ if not Quests then [15] = "This preparation kit will allow you to collect a RED butterfly you have killed. \z Just use it on the fresh corpse of a RED butterfly.", [16] = "Return the prepared butterfly to Explorer Society representative.", - [17] = "You have completed The Butterfly Hunt." - } + [17] = "You have completed The Butterfly Hunt.", + }, }, [4] = { name = "The Plant Collection", @@ -4229,16 +4136,16 @@ if not Quests then startValue = 18, endValue = 26, states = { - [18] = "Take botanist\'s container. Use it on a jungle bells plant to collect a sample.", + [18] = "Take botanist's container. Use it on a jungle bells plant to collect a sample.", [19] = "Report about your plant collection to Explorer Society representative.", [20] = "Ask for plant collection when you are ready to continue.", - [21] = "Use botanist\'s container on a witches cauldron to collect a sample.", + [21] = "Use botanist's container on a witches cauldron to collect a sample.", [22] = "Report about your plant collection to Explorer Society representative.", [23] = "Ask for plant collection when you are ready to continue.", - [24] = "Use this botanist\'s container on a giant jungle rose to obtain a sample.", + [24] = "Use this botanist's container on a giant jungle rose to obtain a sample.", [25] = "Report about your plant collection to Explorer Society representative.", - [26] = "You have completed The Plant Collection." - } + [26] = "You have completed The Plant Collection.", + }, }, [5] = { name = "The Lizard Urn", @@ -4251,8 +4158,8 @@ if not Quests then Beneath the newly constructed temple there, the lizards hide the urn. \z Acquire an ancient urn which is some sort of relic to the lizard people of Tiquanda.", [28] = "Bring the Funeral Urn back to the Explorer Society.", - [29] = "You have completed The Lizard Urn." - } + [29] = "You have completed The Lizard Urn.", + }, }, [6] = { name = "The Bonelord Secret", @@ -4264,8 +4171,8 @@ if not Quests then [30] = "Travel to the city of Darashia and then head north-east for the pyramid. \z If any documents are left, you probably find them in the catacombs beneath.", [31] = "Bring the Wrinkled Parchment back to the Explorer Society representative.", - [32] = "You have completed The Bonelord Secret." - } + [32] = "You have completed The Bonelord Secret.", + }, }, [7] = { name = "The Orc Powder", @@ -4278,8 +4185,8 @@ if not Quests then in some hill in the north-east of their city. \z There you should find lots of their war wolves and hopefully also some of the orcish powder.", [34] = "Bring the Strange Powder to the Explorer Society representative to complete your mission.", - [35] = "You have completed The Orc Powder." - } + [35] = "You have completed The Orc Powder.", + }, }, [8] = { name = "The Elven Poetry", @@ -4290,8 +4197,8 @@ if not Quests then states = { [36] = "This mission is easy but nonetheless vital. Travel Hellgate beneath Ab'Dendriel and get the book.", [37] = "Bring back an elven poetry book to the Explorer Society representative.", - [38] = "You have completed The Elven Poetry." - } + [38] = "You have completed The Elven Poetry.", + }, }, [9] = { name = "The Memory Stone", @@ -4302,8 +4209,8 @@ if not Quests then states = { [39] = "In the ruins of north-western Edron you should be able to find a memory stone. ", [40] = "Bring back a memory stone to the Explorer Society representative.", - [41] = "You have completed The Memory Stone." - } + [41] = "You have completed The Memory Stone.", + }, }, [10] = { name = "The Rune Writings", @@ -4316,8 +4223,8 @@ if not Quests then that were once inhabited by lizards. Look there for an atypical structure that \z would rather fit to Ankrahmun and its Ankrahmun Tombs. Copy the runes you will find on this structure.", [43] = "Report back to the Explorer Society representative.", - [44] = "You have completed The Rune Writings." - } + [44] = "You have completed The Rune Writings.", + }, }, [11] = { name = "The Ectoplasm", @@ -4327,8 +4234,8 @@ if not Quests then endValue = 47, states = { [45] = "Take ectoplasm container and use it on a ghost that was recently slain.", - [46] = "Return back to the Explorer Society representative with the collected ectoplasm." - } + [46] = "Return back to the Explorer Society representative with the collected ectoplasm.", + }, }, [12] = { name = "The Spectral Dress", @@ -4339,8 +4246,8 @@ if not Quests then states = { [48] = "The queen of the banshees lives in the so called Ghostlands, south west of Carlin. \z Try to get a spectral dress from her.", - [49] = "Report to the Explorer Society with the spectral dress." - } + [49] = "Report to the Explorer Society with the spectral dress.", + }, }, [13] = { name = "The Spectral Stone", @@ -4354,8 +4261,8 @@ if not Quests then [52] = "Tell our fellow explorer that the papers are in the mail already.", [53] = "Take the spectral essence and use it on the strange carving in this building \z as well as on the corresponding tile in our second base.", - [54] = "Good! Now use the spectral essence on the strange carving in our second base." - } + [54] = "Good! Now use the spectral essence on the strange carving in our second base.", + }, }, [14] = { name = "The Astral Portals", @@ -4365,8 +4272,8 @@ if not Quests then endValue = 56, states = { [56] = "Both carvings are now charged and harmonised. You are able to travel in zero time from \z - one base to the other, but you need to have an orichalcum pearl in your possession to use it as power source." - } + one base to the other, but you need to have an orichalcum pearl in your possession to use it as power source.", + }, }, [15] = { name = "The Island of Dragons", @@ -4377,8 +4284,8 @@ if not Quests then states = { [57] = "Travel to Okolnir and try to find a proof for the existence of dragon lords there in the old times. \z I think old Buddel might be able to bring you there.", - [58] = "Report back to Lurik with the dragon scale." - } + [58] = "Report back to Lurik with the dragon scale.", + }, }, [16] = { name = "The Ice Music", @@ -4391,8 +4298,8 @@ if not Quests then In this cave, there are a waterfall and a lot of stalagmites. \z Take the resonance crystal and use it on the stalagmites in the cave to record the sound of the wind.", [61] = "Report back to Lurik.", - [62] = "Now you may use the Astral Bridge from Liberty Bay to Svargrond." - } + [62] = "Now you may use the Astral Bridge from Liberty Bay to Svargrond.", + }, }, [17] = { name = "The Undersea Kingdom", @@ -4403,10 +4310,10 @@ if not Quests then states = { [1] = "Captain Max will bring you to Calassa whenever you are ready. \z Please try to retrieve the missing logbook which must be in one of the sunken shipwrecks.", - [2] = "Report about your Calassa mission to Berenice in Liberty Bay." - } - } - } + [2] = "Report about your Calassa mission to Berenice in Liberty Bay.", + }, + }, + }, }, [29] = { name = "The Ultimate Challenges", @@ -4421,8 +4328,8 @@ if not Quests then endValue = 2, states = { [1] = "You have to defeat all enemies in this mode.", - [2] = "You have defeated all enemies in this mode." - } + [2] = "You have defeated all enemies in this mode.", + }, }, [2] = { name = "Barbarian Arena - Scrapper Mode", @@ -4432,8 +4339,8 @@ if not Quests then endValue = 2, states = { [1] = "You have to defeat all enemies in this mode.", - [2] = "You have defeated all enemies in this mode." - } + [2] = "You have defeated all enemies in this mode.", + }, }, [3] = { name = "Barbarian Arena - Warlord Mode", @@ -4443,10 +4350,10 @@ if not Quests then endValue = 2, states = { [1] = "You have to defeat all enemies in this mode.", - [2] = "You have defeated all enemies in this mode." - } - } - } + [2] = "You have defeated all enemies in this mode.", + }, + }, + }, }, [30] = { name = "The White Raven Monastery", @@ -4461,8 +4368,8 @@ if not Quests then endValue = 2, states = { [1] = "You are a friend of Dalbrect. \z - Since you returned his family brooch he will sail you to the Isle of Kings unless you do something stupid." - } + Since you returned his family brooch he will sail you to the Isle of Kings unless you do something stupid.", + }, }, [2] = { name = "The Investigation", @@ -4472,11 +4379,11 @@ if not Quests then endValue = 2, states = { [1] = "Investigate the catacombs. Abbot Costello should be interested in information about brother Fugio.", - [2] = "You returned Fugio\'s Diary. \z - Costello was very thankful about your help and gave you a blessed ankh as reward." - } - } - } + [2] = "You returned Fugio's Diary. \z + Costello was very thankful about your help and gave you a blessed ankh as reward.", + }, + }, + }, }, [31] = { name = "Tibia Tales", @@ -4492,10 +4399,10 @@ if not Quests then states = { [1] = "Kazzan sent you to talk with Ubaid and Umar to offer an appeasement treaty to the Djinn races. \z Talk to Umar first.", - [2] = "Umar said he won't be part of Kazzan\'s plans. Now you need to try with Ubaid.", + [2] = "Umar said he won't be part of Kazzan's plans. Now you need to try with Ubaid.", [3] = "Umar and Ubaid said they won't be part of those plans. Return to Kazzan and collect your reward.", - [4] = "You have completed the quest!" - } + [4] = "You have completed the quest!", + }, }, [2] = { name = "Arito's Task", @@ -4506,8 +4413,8 @@ if not Quests then states = { [1] = "Arito asked you to make a peace agreement between him and the Nomads.", [2] = "Return to Arito and tell him the good news.", - [3] = "Now Arito are safe and you have access to Nomads Cave." - } + [3] = "Now Arito are safe and you have access to Nomads Cave.", + }, }, [3] = { name = "Lion's Rock", @@ -4517,21 +4424,24 @@ if not Quests then endValue = 11, states = { [1] = function(player) - return string.format("You have discovered the Lion's Rock. If you pass the following tests you may enter the inner sanctum.\n\nThe Lion's Strength %d/1\nThe Lion's Beauty %d/1\nThe Lion's Tears %d/1", + return string.format( + "You have discovered the Lion's Rock. If you pass the following tests you may enter the inner sanctum.\n\nThe Lion's Strength %d/1\nThe Lion's Beauty %d/1\nThe Lion's Tears %d/1", (math.max(player:getStorageValue(Storage.LionsRock.OuterSanctum.LionsStrength), 0)), (math.max(player:getStorageValue(Storage.LionsRock.OuterSanctum.LionsBeauty), 0)), (math.max(player:getStorageValue(Storage.LionsRock.OuterSanctum.LionsTears), 0)) ) end, [2] = function(player) - return string.format("You have discovered the Lion's Rock. If you pass the following tests you may enter the inner sanctum.\n\nThe Lion's Strength %d/1\nThe Lion's Beauty %d/1\nThe Lion's Tears %d/1", + return string.format( + "You have discovered the Lion's Rock. If you pass the following tests you may enter the inner sanctum.\n\nThe Lion's Strength %d/1\nThe Lion's Beauty %d/1\nThe Lion's Tears %d/1", (math.max(player:getStorageValue(Storage.LionsRock.OuterSanctum.LionsStrength), 0)), (math.max(player:getStorageValue(Storage.LionsRock.OuterSanctum.LionsBeauty), 0)), (math.max(player:getStorageValue(Storage.LionsRock.OuterSanctum.LionsTears), 0)) ) end, [3] = function(player) - return string.format("You have discovered the Lion's Rock. If you pass the following tests you may enter the inner sanctum.\n\nThe Lion's Strength %d/1\nThe Lion's Beauty %d/1\nThe Lion's Tears %d/1", + return string.format( + "You have discovered the Lion's Rock. If you pass the following tests you may enter the inner sanctum.\n\nThe Lion's Strength %d/1\nThe Lion's Beauty %d/1\nThe Lion's Tears %d/1", (math.max(player:getStorageValue(Storage.LionsRock.OuterSanctum.LionsStrength), 0)), (math.max(player:getStorageValue(Storage.LionsRock.OuterSanctum.LionsBeauty), 0)), (math.max(player:getStorageValue(Storage.LionsRock.OuterSanctum.LionsTears), 0)) @@ -4567,8 +4477,8 @@ if not Quests then ) end, [9] = 'In the north-west area of the Inner Sanctum, find the southern rectangular room to the south-west. In this room you will find 4 "sun" floor inscriptions as well as a rock in the center. The sun inscriptions represent gem slots.', - [11] = "By solving the gem puzzle you unveiled the last secret of the Lion's Rock. You drew a treasure out of the ornamented fountain in the lower temple areas." - } + [11] = "By solving the gem puzzle you unveiled the last secret of the Lion's Rock. You drew a treasure out of the ornamented fountain in the lower temple areas.", + }, }, [4] = { name = "Against the Spider Cult", @@ -4582,8 +4492,8 @@ if not Quests then [3] = "You destroyed 2 of 4 Spider Eggs in the Edron Orc Cave", [4] = "You destroyed 3 of 4 Spider Eggs in the Edron Orc Cave", [5] = "You destroyed all Spider Eggs in the Edron Orc Cave, report back to Daniel Steelsoul!", - [6] = "You have completed the Quest!" - } + [6] = "You have completed the Quest!", + }, }, [5] = { name = "An Interest In Botany", @@ -4598,8 +4508,8 @@ if not Quests then [2] = "Now you must find the second plant, a Giant Verminous and use your \z Obsidian Knife on it to obtain a sample.", [3] = "You found the two samples, report back to Rabaz in Farmine!", - [4] = "You have completed the Quest!" - } + [4] = "You have completed the Quest!", + }, }, [6] = { name = "Graves Sanctified - In Progress", @@ -4608,11 +4518,8 @@ if not Quests then startValue = 1, endValue = 15, description = function(player) - return string.format( - "You sanctified %d of 15 graves.", - (math.max(player:getStorageValue(Storage.TibiaTales.RestInHallowedGround.HolyWater), 0)) - ) - end + return string.format("You sanctified %d of 15 graves.", (math.max(player:getStorageValue(Storage.TibiaTales.RestInHallowedGround.HolyWater), 0))) + end, }, [7] = { name = "Into the Bone Pit", @@ -4624,8 +4531,8 @@ if not Quests then [1] = "Search the Cursed Bone Pit in the dungeon north of Thais and dig for a \z well-preserved human bone for Muriel.", [2] = "You have found a desecrated bone for Muriel.", - [3] = "You helped Muriel to obtain a desecrated bone." - } + [3] = "You helped Muriel to obtain a desecrated bone.", + }, }, [8] = { name = "Rest in Hallowed Ground", @@ -4639,8 +4546,8 @@ if not Quests then Go back to Amanda and report about your mission.", [3] = "Sanctify every single grave at the unholy graveyard north of Edron with the holy water.", [4] = "You have sanctified all graves at the unholy graveyard of Edron. Report about your mission at Amanda.", - [5] = "You helped Amanda by sanctifying the cursed graveyard of Edron." - } + [5] = "You helped Amanda by sanctifying the cursed graveyard of Edron.", + }, }, [9] = { name = "The Exterminator", @@ -4653,8 +4560,8 @@ if not Quests then Carlin by poisoning their spawn pool.", [2] = "You poisoned the spawn pool of the slimes in the sewers of Carlin. \z Report to Padreia about your mission.", - [3] = "You successfully helped Padreia in saving Carlin from a slimy disease." - } + [3] = "You successfully helped Padreia in saving Carlin from a slimy disease.", + }, }, [10] = { name = "The Ultimate Booze", @@ -4666,8 +4573,8 @@ if not Quests then [1] = "Boozer in Vernore asked you to bring him some special dwarven brown ale. \z You may find some in the brewery in Kazordoon.", [2] = "You found the special dwarven brown ale. Bring it to Boozer in Vernore.", - [3] = "You have completed The Ultimate Booze Quest!" - } + [3] = "You have completed The Ultimate Booze Quest!", + }, }, [11] = { name = "Jack to the Future", @@ -4677,30 +4584,30 @@ if not Quests then endValue = 11, states = { [1] = "Spectulus told you about a failed experiment he once did, involving an intern \z - named Jack, and asked you to help him rescue Jack. Go to Jack\'s house and talk to him \z + named Jack, and asked you to help him rescue Jack. Go to Jack's house and talk to him \z about Spectulus.", [2] = "You have talked to Jack and found out that he is not remembering the time \z accident or Spectulus. Return to Spectulus in the Edron Academy to tell him about \z your findings.", - [3] = "Spectulus wants you to trigger Jack\'s memory. Jack used to like his red cushioned \z + [3] = "Spectulus wants you to trigger Jack's memory. Jack used to like his red cushioned \z chair, an old globe, a telescope, a large amphora and a rocking horse. Place those in his \z room and ask him about it.", [4] = "You have talked to Jack about the furniture you placed in his house. Report it back \z to Spectulus in the Edron Academy.", [5] = "Spectulus sent you once again to his former intern Jack. Explain the incident to the \z - people close to him. Talk to Jack\'s mother and sister and return to Spectulus to report their reaction.", - [6] = "You have talked with Jack\'s mother and sister. Report it back to Spectulus.", + people close to him. Talk to Jack's mother and sister and return to Spectulus to report their reaction.", + [6] = "You have talked with Jack's mother and sister. Report it back to Spectulus.", [7] = "Spectulus suggested asking Jack abouthis hobbies. Make Jack leave his hobby be by whateber \z means it takes. Only by doing this he will be separated from what distracts him from his former self.", - [8] = "You found out and destroyed Jack\'s hobby. Jack is now finally ready and beginning to change. \z + [8] = "You found out and destroyed Jack's hobby. Jack is now finally ready and beginning to change. \z He event seems to start remembering Spectulus and the Academy.", [9] = "Jack is finally remembering Spectulus and the Academy. Report back your mission.", [10] = "Spectulus found out that you were convincing the wrong Jack. His real intern was transported \z way back to the past. He left a note years ago which, to your misery, reached Spectulus a little too late.", [11] = function(player) return string.format("%s", getJackLastMissionState(player)) - end - } + end, + }, }, [12] = { name = "The Cursed Crystal", @@ -4719,8 +4626,8 @@ if not Quests then With this balm you may unpetrify a petrified object.", [3] = "With the Medusa's Ointment you unpetrified a banshee's scream near the evil crystal. \z Thus the baleful artefact was destroyed. You should return to One-Eyed Joe.", - [4] = "You have completed the Quest!" - } + [4] = "You have completed the Quest!", + }, }, [13] = { name = "Hidden Threats", @@ -4738,8 +4645,8 @@ if not Quests then [4] = "With the forged key you have unlocked the three areas. The Corym Servant was very relieved \z and asked you to bring 20 units of rare earth.", [5] = "You have brought 20 units of rare earth to Corym Servant. He was very thankful and gave you \z - a reward. The revolution should now take place as intended." - } + a reward. The revolution should now take place as intended.", + }, }, [14] = { name = "To Outfox a Fox", @@ -4749,8 +4656,8 @@ if not Quests then endValue = 2, states = { [1] = "Budrik asked you to look for the hideout of the Horned Fox and bring his stolen mining helmet back. The Fox's lair is presumed to be west of Kazordoon near the coast.", - [2] = "You succesfully helped Budrik in stealing back his old mining helemt." - } + [2] = "You succesfully helped Budrik in stealing back his old mining helemt.", + }, }, [15] = { name = "Fish for a Serpent", @@ -4763,8 +4670,8 @@ if not Quests then [2] = "Your second task is to bring 5 northern pike.", [3] = "Your third task is to bring 5 green perch.", [4] = "Your forth task is to bring 5 rainbow trout.", - [5] = "You bring enough fish to make the bait. Now you're ready for the hunt." - } + [5] = "You bring enough fish to make the bait. Now you're ready for the hunt.", + }, }, [16] = { name = "The hunt for the Sea Serpent", @@ -4774,9 +4681,9 @@ if not Quests then endValue = 2, states = { [1] = "", - [2] = "You navigated the ship to the right location. You are now able to dive down and explore the caves." - } - } + [2] = "You navigated the ship to the right location. You are now able to dive down and explore the caves.", + }, + }, -- [17] = { -- name = "Nomads Land", -- storageId = PLACEHOLDER, @@ -4788,7 +4695,7 @@ if not Quests then -- [2] = "" -- } -- } - } + }, }, [32] = { name = "Unnatural Selection", @@ -4805,8 +4712,8 @@ if not Quests then [1] = "Your mission is to find the Holy Skull. It is in a cave in the northern orc settlement, \z which is located north-west on the Zao Steppe.", [2] = "You found the Holy Skull. Retrieve it to Lazaran in the Zao Mountains.", - [3] = "You brought Lazaran the Holy Skull. Ask him for new mission!" - } + [3] = "You brought Lazaran the Holy Skull. Ask him for new mission!", + }, }, [2] = { name = "Mission 2: All Around the World", @@ -4839,8 +4746,8 @@ if not Quests then You need to stand at the highest place of Carlin", [12] = "You visited all the highest places with the skull. \z Turn the skull back to Lazaran and report him your mission!", - [13] = "You turned the skull already back to Lazaran. Ask him for new mission!" - } + [13] = "You turned the skull already back to Lazaran. Ask him for new mission!", + }, }, [3] = { name = "Mission 3: Dance Dance Evolution", @@ -4852,8 +4759,8 @@ if not Quests then [1] = "Lazaran told you to go to Ulala, who is located above Lazaran.", [2] = "Ulala told you to dance to please their god Krunus. \z On the south mountain in the camp you will find the Krunus altar, there are lots of leaves on the ground.", - [3] = "You solved the dance. Head back to Ulala and report your mission!" - } + [3] = "You solved the dance. Head back to Ulala and report your mission!", + }, }, [4] = { name = "Mission 4: Bits and Pieces", @@ -4864,8 +4771,8 @@ if not Quests then states = { [1] = "Now the god Krunus is pleased, another god called Pandor needs to be pleased. \z Ulala wants you to collect 5 Orc Teeth, 5 Minotaur leathers and 5 Lizard Leathers. Bring them to her.", - [2] = "You brought Ulala 5 Orc Teeth, 5 Minotaur leathers and 5 Lizard Leathers. Ask her for new mission!" - } + [2] = "You brought Ulala 5 Orc Teeth, 5 Minotaur leathers and 5 Lizard Leathers. Ask her for new mission!", + }, }, [5] = { name = "Mission 5: Ray of Light", @@ -4877,8 +4784,8 @@ if not Quests then [1] = "The third god which needs to be pleased is called Fasuon. \z Find the great crystal on top of mountain of Fasuon and pray there for his support!", [2] = "You already prayed at the great crystal. Report it to Ulala", - [3] = "You have reported back to Ulala that you have completed the mission." - } + [3] = "You have reported back to Ulala that you have completed the mission.", + }, }, [6] = { name = "Mission 6: Firewater Burn", @@ -4889,10 +4796,10 @@ if not Quests then states = { [1] = "Speak with Lazaran and tell the gods are pleased now.", [2] = "Bring Lazaran a Pot of brown water for a party after the great hunt.", - [3] = "You brought Lazaran the beer and got a Serpent Crest as reward!" - } - } - } + [3] = "You brought Lazaran the beer and got a Serpent Crest as reward!", + }, + }, + }, }, [33] = { name = "What a foolish Quest", @@ -4907,8 +4814,8 @@ if not Quests then endValue = 2, states = { [1] = "Cut a flower at the Whiteflower Temple south of Thais. Then report to Bozo about your mission.", - [2] = "You have finished your first mission and should ask Bozo for the next mission." - } + [2] = "You have finished your first mission and should ask Bozo for the next mission.", + }, }, [2] = { name = "What a foolish Quest - That stinks!", @@ -4920,8 +4827,8 @@ if not Quests then [1] = "It sometimes stinks to be a fool. \z Collect some noxious fumes from a recently slain slime with the special vial. \z Then report to Bozo about your mission.", - [2] = "You have finished your second mission and should ask Bozo for the next mission." - } + [2] = "You have finished your second mission and should ask Bozo for the next mission.", + }, }, [3] = { name = "What a foolish Quest - A Piece of Cake", @@ -4931,8 +4838,8 @@ if not Quests then endValue = 2, states = { [1] = "Get 12 pies from Mirabell in Edron. Then report to Bozo about your mission.", - [2] = "You have finished your third mission and should ask Bozo for the next mission." - } + [2] = "You have finished your third mission and should ask Bozo for the next mission.", + }, }, [4] = { name = "What a foolish Quest - Fool Spirits", @@ -4942,9 +4849,9 @@ if not Quests then endValue = 3, states = { [1] = "Get 18 vials of wine for Bozo. Then report to Bozo about your mission.", - [2] = "Exchange the crates in front of Xodet\'s house and return to Bozo with the swapped crate.", - [3] = "You have finished your fourth mission and should ask Bozo for the next mission." - } + [2] = "Exchange the crates in front of Xodet's house and return to Bozo with the swapped crate.", + [3] = "You have finished your fourth mission and should ask Bozo for the next mission.", + }, }, [5] = { name = "What a foolish Quest - Watch out for the foolish", @@ -4957,8 +4864,8 @@ if not Quests then Then report to Bozo about your mission.", [2] = "Use the magic watch to steal the beard of the sleeping dwarven emperor.", [3] = "You have already finished five missions for that fool. \z - You should definitely talk to Bozo about your jester outfit now!" - } + You should definitely talk to Bozo about your jester outfit now!", + }, }, [6] = { name = "What a foolish Quest - The queen of farts", @@ -4970,9 +4877,9 @@ if not Quests then [1] = "Get Bozo 4 pieces of minotaur leather.", [2] = "Get Bozo a piece of giant spider silk.", [3] = "Ask Bozo about your mission, he might be finished with the whoopee cushion by now.", - [4] = "Place the whoopee cushion on the queen\'s throne in Carlin by using the cushion with the throne.", - [5] = "You have finished your sixth mission and should ask Bozo for the next mission." - } + [4] = "Place the whoopee cushion on the queen's throne in Carlin by using the cushion with the throne.", + [5] = "You have finished your sixth mission and should ask Bozo for the next mission.", + }, }, [7] = { name = "What a foolish Quest - For your mice only", @@ -4981,9 +4888,9 @@ if not Quests then startValue = 1, endValue = 2, states = { - [1] = "Get the toy mouse of Queen Eloise\'s cat and show it to Carina, the jeweler in Venore, to scare her.", - [2] = "You have finished your seventh mission and should ask Bozo for the next mission." - } + [1] = "Get the toy mouse of Queen Eloise's cat and show it to Carina, the jeweler in Venore, to scare her.", + [2] = "You have finished your seventh mission and should ask Bozo for the next mission.", + }, }, [8] = { name = "What a foolish Quest - Smoking is a foolish thing", @@ -4996,11 +4903,11 @@ if not Quests then [2] = "You brought Bozo the sulphur. Now cut him some leaves of the jungle dweller bush with a kitchen knife.", [3] = "You have gathered the ordered ingredients and should ask Bozo for the next mission.", [4] = "Deliver the exploding cigar to Theodore Loveless in Liberty Bay.", - [5] = "You have finished your eighth mission and should ask Bozo for the next mission." - } + [5] = "You have finished your eighth mission and should ask Bozo for the next mission.", + }, }, [9] = { - name = "What a foolish Quest - A fool\'s bargain", + name = "What a foolish Quest - A fool's bargain", storageId = Storage.WhatAFoolish.Mission9, missionId = 10344, startValue = 1, @@ -5012,8 +4919,8 @@ if not Quests then Use the vial on a slain constrictor immediately after its death. Then report to Bozo about your mission.", [3] = "You have gathered the ordered ingredients and should ask Bozo for the next mission.", [4] = "Order 2000 steel shields from Sam. Sign his contract with the magic ink.", - [5] = "You have finished your ninth mission and should ask Bozo for the next mission." - } + [5] = "You have finished your ninth mission and should ask Bozo for the next mission.", + }, }, [10] = { name = "What a foolish Quest - A sweet surprise", @@ -5024,8 +4931,8 @@ if not Quests then states = { [1] = "Deliver a cookie to Avar Tar, Simon, Ariella, Lorbas, King Markwin, \z Hjaern, Wyda, Hairycles, the orc king and EITHER Yaman OR Nah'Bob. Then report to Bozo about the mission.", - [2] = "You have finished your tenth mission and should ask Bozo for the next mission." - } + [2] = "You have finished your tenth mission and should ask Bozo for the next mission.", + }, }, [11] = { name = "What a foolish Quest - The final foolishness", @@ -5039,8 +4946,8 @@ if not Quests then cloth an old and worn look. Some ancient altar should suit your needs best - use the white cloth on it.", [3] = "Use your mummy disguise to scare the caliph Kazzan in Darashia. \z DON'T use the disguise too early or you will fail the quest.", - [4] = "You have finished all of Bozo\'s missions and you are a complete fool now. Yay!" - } + [4] = "You have finished all of Bozo's missions and you are a complete fool now. Yay!", + }, }, [12] = { name = "What a foolish Quest - To become a complete fool", @@ -5049,10 +4956,10 @@ if not Quests then startValue = 4, endValue = 4, states = { - [4] = "Now that you have a basic outfit, you should talk to Bozo about your missions to gain further rewards." - } - } - } + [4] = "Now that you have a basic outfit, you should talk to Bozo about your missions to gain further rewards.", + }, + }, + }, }, [34] = { name = "Wrath of the Emperor", @@ -5070,8 +4977,8 @@ if not Quests then [2] = "Go to the tunnel in eastern Muggy Plains and reach the other side. \z Try to hide in the dark and avoid being seen at all by using the crate. \z After that you need to find the rebel hideout and talk to their leader Chartan.", - [3] = "You passed the maintenance tunnel and successfully made contact with the resistance in their hideout north of the Great Gate." - } + [3] = "You passed the maintenance tunnel and successfully made contact with the resistance in their hideout north of the Great Gate.", + }, }, [2] = { name = "Mission 02: First Contact", @@ -5085,8 +4992,8 @@ if not Quests then To do this you will need some tools to improvise.", [2] = "As you give the coal into the pool the corrupted fluid begins to dissolve, leaving purified, \z refreshing water. The teleporter is reactivated. Report back to Chartan.", - [3] = "Report back to Zalamon for the next mission." - } + [3] = "Report back to Zalamon for the next mission.", + }, }, [3] = { name = "Mission 03: The Keeper", @@ -5098,8 +5005,8 @@ if not Quests then [1] = "Zalamon gives you a Flask of Plant Poison to destroy plants in the garden \z of the Emperor to lure out and kill The Keeper to get his tail. The garden is southeast of the rebel hideout.", [2] = "You killed the Keeper and got his tail. Bring it to Zalamon.", - [3] = "You brought the tail of the Keeper to Zalamon and completed the mission. Ask for the next mission." - } + [3] = "You brought the tail of the Keeper to Zalamon and completed the mission. Ask for the next mission.", + }, }, [4] = { name = "Mission 04: Sacrament of the Snake", @@ -5114,8 +5021,8 @@ if not Quests then On the 4th and final floor you need to assemble the sceptre..", [2] = "After you've assembled the Snake Sceptre and fought your way back out, \z head back to Zalamon and give it to him.", - [3] = "You have delievered the recreated sceptre to the rebels." - } + [3] = "You have delievered the recreated sceptre to the rebels.", + }, }, [5] = { name = "Mission 05: New in Town", @@ -5126,8 +5033,8 @@ if not Quests then states = { [1] = "Enter the imperial city Razachai to the west and talk to your contact in the ministry there for further missions.", [2] = "Now you only have to walk west until you find Zlak inside the big green building.", - [3] = "You went deep inside the city to find Zlak and completed the mission. Ask for the next mission." - } + [3] = "You went deep inside the city to find Zlak and completed the mission. Ask for the next mission.", + }, }, [6] = { name = "Mission 06: The Office Job", @@ -5136,11 +5043,8 @@ if not Quests then startValue = 0, endValue = 4, description = function(player) - return string.format( - "Kill four Magistrati in the office building. Then report back to Zlak. You have killed %d magistrati so far.", - (math.max(player:getStorageValue(Storage.WrathoftheEmperor.Mission06), 0)) - ) - end + return string.format("Kill four Magistrati in the office building. Then report back to Zlak. You have killed %d magistrati so far.", (math.max(player:getStorageValue(Storage.WrathoftheEmperor.Mission06), 0))) + end, }, [7] = { name = "Mission 07: A Noble Cause", @@ -5149,11 +5053,8 @@ if not Quests then startValue = 0, endValue = 6, description = function(player) - return string.format( - "Kill six nobles in the city and report back to Zlak. You have killed %d nobles so far.", - (math.max(player:getStorageValue(Storage.WrathoftheEmperor.Mission07), 0)) - ) - end + return string.format("Kill six nobles in the city and report back to Zlak. You have killed %d nobles so far.", (math.max(player:getStorageValue(Storage.WrathoftheEmperor.Mission07), 0))) + end, }, [8] = { name = "Mission 08: Uninvited Guests", @@ -5163,8 +5064,8 @@ if not Quests then endValue = 2, states = { [1] = "Use the old escape tunnel in the northern basement of the ministry to enter the imperial palace. Fight your way to the basement to meet your new rebel contact.", - [2] = "You have reached your rebel contact Zizzle in the imperial palace." - } + [2] = "You have reached your rebel contact Zizzle in the imperial palace.", + }, }, [9] = { name = "Mission 09: The Sleeping Dragon", @@ -5175,8 +5076,8 @@ if not Quests then states = { [1] = "To enter the inner realms of the Emperor you need to free the mind of a dragon. \z An interdimensional potion will help you to enter this dream and unleash his consciousness.", - [2] = "You travelled through the Sleeping Dragon dreams and freed his mind." - } + [2] = "You travelled through the Sleeping Dragon dreams and freed his mind.", + }, }, [10] = { name = "Mission 10: A Message of Freedom", @@ -5189,16 +5090,16 @@ if not Quests then Report back to Zizzle.", [2] = "You possess the key to enter the inner realms of the emperor. \z Start with the one in the north-west and work your way clockwise trough the room and kill those manifestation. \z - Then use your sceptre on the remain to destroy the emperor\'s influence over the crystal.", + Then use your sceptre on the remain to destroy the emperor's influence over the crystal.", [3] = "You possess the key to enter the inner realms of the emperor. \z - You destroyed 1 of 4 emperor\'s influences.", + You destroyed 1 of 4 emperor's influences.", [4] = "You possess the key to enter the inner realms of the emperor. \z - You destroyed 2 of 4 emperor\'s influences.", + You destroyed 2 of 4 emperor's influences.", [5] = "You possess the key to enter the inner realms of the emperor. \z - You destroyed 3 of 4 emperor\'s influences.", + You destroyed 3 of 4 emperor's influences.", [6] = "You possess the key to enter the inner realms of the emperor. \z - You destroyed all emperor\'s influences." - } + You destroyed all emperor's influences.", + }, }, [11] = { name = "Mission 11: Payback Time", @@ -5209,8 +5110,8 @@ if not Quests then states = { [1] = "Your Mission is to kill Zalamon. Step into the teleporter to confront him. \z Finally use your sceptre on the death body.", - [2] = "Go back to Awareness Of The Emperor and report him your success!" - } + [2] = "Go back to Awareness Of The Emperor and report him your success!", + }, }, [12] = { name = "Mission 12: Just Rewards", @@ -5220,10 +5121,10 @@ if not Quests then endValue = 1, states = { [0] = "The Emperor has promised you wealth beyond measure. Go claim it in the ministry.", - [1] = "You completed this Quest!" - } - } - } + [1] = "You completed this Quest!", + }, + }, + }, }, [35] = { name = "Oramond", @@ -5237,9 +5138,9 @@ if not Quests then startValue = 1, endValue = 3000, description = "Five Juicy roots from the outskirts of Rathleton may already help feed the poor. \z - Try to find a city official to deliver them to or go to the Rathleton poor house." - } - } + Try to find a city official to deliver them to or go to the Rathleton poor house.", + }, + }, }, [36] = { name = "Forgotten Knowledge", @@ -5253,8 +5154,8 @@ if not Quests then startValue = 0, endValue = 1522018605, states = { - [1] = "You defeated the rogue Lady Tenebris." - } + [1] = "You defeated the rogue Lady Tenebris.", + }, }, [2] = { name = "Bane of the Cosmic Force", @@ -5264,8 +5165,8 @@ if not Quests then endValue = 1522018605, states = { [1] = "You calmed poor, misguided Lloyd. All he wanted was protection from the outside world. \z - Luckily he seems to have learned his lesson... or has he?" - } + Luckily he seems to have learned his lesson... or has he?", + }, }, [3] = { name = "The Desecrated Glade", @@ -5275,8 +5176,8 @@ if not Quests then endValue = 1522018605, states = { [1] = "You defeated the Thorn Knight and shattered the root of evil with all your might. \z - The honor of being a guardian of the glade indeed comes with pride as well as responsibility." - } + The honor of being a guardian of the glade indeed comes with pride as well as responsibility.", + }, }, [4] = { name = "The Unwary Mage", @@ -5286,8 +5187,8 @@ if not Quests then endValue = 1522018605, states = { [1] = "With help of Ivalisse from the temple of the Astral Shapers in Thais and her father, \z - you averted the Dragon King\'s menace deep in the Zao Muggy Plains." - } + you averted the Dragon King's menace deep in the Zao Muggy Plains.", + }, }, [5] = { name = "Dragon in Distress", @@ -5296,8 +5197,8 @@ if not Quests then startValue = 0, endValue = 1522018605, states = { - [1] = "You saved the Dragon Mother\'s egg and she melted the ice wall that blocked your way." - } + [1] = "You saved the Dragon Mother's egg and she melted the ice wall that blocked your way.", + }, }, [6] = { name = "Time is a Window", @@ -5307,8 +5208,8 @@ if not Quests then endValue = 1522018605, states = { [1] = "You defeated the Time Guardian and are free to return to your own time. \z - For some creatures in this world, it seems neither past nor future are an obstacle." - } + For some creatures in this world, it seems neither past nor future are an obstacle.", + }, }, [7] = { name = "Final Fight", @@ -5317,10 +5218,10 @@ if not Quests then startValue = 0, endValue = 1522018605, states = { - [1] = "Description Fault." - } - } - } + [1] = "Description Fault.", + }, + }, + }, }, [37] = { name = "The First Dragon", @@ -5335,7 +5236,7 @@ if not Quests then endValue = 200, description = function(player) return ("You already hunted %d/200 dragons."):format(player:getStorageValue(Storage.FirstDragon.DragonCounter)) - end + end, }, [2] = { name = "Treasure", @@ -5344,7 +5245,7 @@ if not Quests then startValue = 0, endValue = 20, description = "Treasure is the favorite of the dragon lords. \z - Find and take Kalyassa\'s treasures spread across the world." + Find and take Kalyassa's treasures spread across the world.", }, [3] = { name = "Knowledge", @@ -5352,8 +5253,8 @@ if not Quests then missionId = 10370, startValue = 0, endValue = 1, - description = "You learned that frost dragon\'s incitement is the thirst for knowledge, \z - perhaps if you bring some to Gelidrazah\'s you'll meet him." + description = "You learned that frost dragon's incitement is the thirst for knowledge, \z + perhaps if you bring some to Gelidrazah's you'll meet him.", }, [4] = { name = "Life", @@ -5362,9 +5263,9 @@ if not Quests then startValue = 0, endValue = 3, description = "Undead dragons aspires for life. \z - No better way to see life as it grows around the world, is there?" - } - } + No better way to see life as it grows around the world, is there?", + }, + }, }, [38] = { name = "Cults of Tibia", @@ -5379,10 +5280,8 @@ if not Quests then endValue = 50, description = function(player) return ("James asked you to enter the cave for hunting 50 empowered minotaurs. \z - Then he will be able to continue his research.\nMinotaurs killed: %d/50"):format( - player:getStorageValue(Storage.CultsOfTibia.Minotaurs.JamesfrancisTask) - ) - end + Then he will be able to continue his research.\nMinotaurs killed: %d/50"):format(player:getStorageValue(Storage.CultsOfTibia.Minotaurs.JamesfrancisTask)) + end, }, [2] = { name = "The Strengthtening of the Minotaurs", @@ -5397,8 +5296,8 @@ if not Quests then the minotaurs became too strong. He gave you the key to investigate this room as well.", [3] = "You found an entrance to the minotaur boss. You killed it and now you have to return to Jamesfrancis.", [4] = "Jamesfrancis sent you to talk with Gerimor about the minotaur cult.", - [5] = "You have reported the Druid of Crunor about the minotaur cult." - } + [5] = "You have reported the Druid of Crunor about the minotaur cult.", + }, }, [3] = { name = "Patron of Arts", @@ -5408,7 +5307,7 @@ if not Quests then endValue = 15, states = { [1] = "The Druid of Cronor gave you the hint that the Thais exhibition has expanded. \z - The new section is called MOTA (Museum of Tibian Arts). It\'s really worth a visit.", + The new section is called MOTA (Museum of Tibian Arts). It's really worth a visit.", [2] = "Gareth told you how to become a patron of the arts. To fulfil your duty you have to manage some tasks. \z First you have to investigate the crime scene of a theft in the museum.", [3] = "You found a ransom note, wich requests you to pay some money for \z @@ -5420,7 +5319,7 @@ if not Quests then [6] = "You have to go to Angelo and get a magnifier to investigate all small \z pictures in the entrance hall of the MOTA. One of them should be a fake.", [7] = "Angelo allowed you to take a magnifier from a crate next to the cave entrance.", - [8] = "You've fetched the magnifier from Angelo\'s crate. You're ready for your job in the museum.", + [8] = "You've fetched the magnifier from Angelo's crate. You're ready for your job in the museum.", [9] = "Indeed! One of the investigated small pictures is fake. Report to Gareth!", [10] = "After you told Gareth about the fake painting, he asked you to go to Angelo to get a new picture.", [11] = "Angelo was not willing to give you a new picture. \z @@ -5430,8 +5329,8 @@ if not Quests then [13] = "INTERNAL MESSAGE: THIS NEED QUESTLOG INFORMATION", [14] = "The Denomintator opened the door for you after you answered his questions to the wanted number. \z In the end he mentioned the Druid of Conor. Maybe you should pay him a visit.", - [15] = "In the end you told the Druid of Crunor about your experiences in the MoTA." - } + [15] = "In the end you told the Druid of Crunor about your experiences in the MoTA.", + }, }, [4] = { name = "Barkless", @@ -5458,8 +5357,8 @@ if not Quests then [6] = "The Leiden you confronted has strayed far from his own original vision of Barkless. \z What you encountered was more monster than elf and less virtuous than his devotees would have you believe.", [7] = "You returned to Gerimor after putting an end to the mischief of Leyden the Penitent. \z - May the Barkless walk the true path again one day." - } + May the Barkless walk the true path again one day.", + }, }, [5] = { name = "Misguided", @@ -5477,8 +5376,8 @@ if not Quests then end, [4] = "You defeated the cult leader of Misguided by uncovering the true master to pull his strings \z and freeing this world from its malicious existance. Return to Gerimor to tell him about the victory.", - [5] = "You have spoken to Gerimor about your victory." - } + [5] = "You have spoken to Gerimor about your victory.", + }, }, [6] = { name = "The Orc Idol", @@ -5491,8 +5390,8 @@ if not Quests then [2] = "ASD", [3] = "You returned to Gerimor after facing the being the orcs worshipped. \z Whatever it was, it did not find the orcs by accident. \z - A far more powerful force seems to have strategically place it here." - } + A far more powerful force seems to have strategically place it here.", + }, }, [7] = { name = "The Secret of the Sandy Cave", @@ -5516,8 +5415,8 @@ if not Quests then [8] = "You Killed the boss", [9] = "You reported your victory to Angelo", [10] = "You have told Gerimor about your stay in the sandy cave. \z - He was not really surprised and felt vindicated that the rumors about a cult in the cave might be true." - } + He was not really surprised and felt vindicated that the rumors about a cult in the cave might be true.", + }, }, [8] = { name = "Zathroth Remmants", @@ -5528,17 +5427,14 @@ if not Quests then states = { [1] = function(player) return ("A remnant cult of Zathroth has formed in a forbidden temple beneath Carlin. \z - Find out what's behind this and stop it in time.\nTemporarily vaporised souls:\n%d Decaying\n%d Withering"):format( - math.max(player:getStorageValue(18551), 0), - math.max(player:getStorageValue(18550), 0) - ) + Find out what's behind this and stop it in time.\nTemporarily vaporised souls:\n%d Decaying\n%d Withering"):format(math.max(player:getStorageValue(18551), 0), math.max(player:getStorageValue(18550), 0)) end, [2] = "ASD", [3] = "You returned to Gerimor after encounter with the remnants of Zathroth. On one hand its is \z - furtunate that Zathroth indeed wasn't behind all this, but on the other... what is going on there?" - } - } - } + furtunate that Zathroth indeed wasn't behind all this, but on the other... what is going on there?", + }, + }, + }, }, [39] = { name = "Dangerous Depths", @@ -5555,13 +5451,10 @@ if not Quests then [1] = function(player) return ("Destroy makeshift homes of the Lost to force them to fight you! Try making some \z prisoners in the progress and report back to Klom Stonecutter.\n\nLost Exiles: %d/20\nPrisoners (bonus): \z - %d/3"):format( - math.max(player:getStorageValue(Storage.DangerousDepths.Dwarves.LostExiles), 0), - math.max(player:getStorageValue(Storage.DangerousDepths.Dwarves.Prisoners), 0) - ) + %d/3"):format(math.max(player:getStorageValue(Storage.DangerousDepths.Dwarves.LostExiles), 0), math.max(player:getStorageValue(Storage.DangerousDepths.Dwarves.Prisoners), 0)) end, - [2] = "You drove off the Lost but more are sure to come. Check back with Klom Stonecutter at a later time." - } + [2] = "You drove off the Lost but more are sure to come. Check back with Klom Stonecutter at a later time.", + }, }, [2] = { name = "Dwarves: Subterranean Life", @@ -5573,13 +5466,11 @@ if not Quests then [1] = function(player) return ("Klome Stonecutter sent you on a grave mission to exterminate large populaces of \z subterranian life. Looks like the dwarves make short work of the deep intruders.\n\nSubterranean organisms: \z - %d/50"):format( - math.max(player:getStorageValue(Storage.DangerousDepths.Dwarves.Organisms), 0) - ) + %d/50"):format(math.max(player:getStorageValue(Storage.DangerousDepths.Dwarves.Organisms), 0)) end, [2] = "You helped Klom defend the outpost by cutting down a number of vermin from deep down below. \z - The gnomes don't seem to completely approve of this but everyone appreciates the drop in the enemy's ranks." - } + The gnomes don't seem to completely approve of this but everyone appreciates the drop in the enemy's ranks.", + }, }, [3] = { name = "Gnomes: Gnomal Warming Measurements", @@ -5599,8 +5490,8 @@ if not Quests then ) end, [2] = "You helped Lardoc Bashsmite fighting back the verminous growth in the northern mineshaft. \z - Return to him later to see if he has more work for you." - } + Return to him later to see if he has more work for you.", + }, }, [4] = { name = "Gnomes: Ordnance", @@ -5613,14 +5504,11 @@ if not Quests then Travel to the east of the cave system and find the old gnome trail where reinforcements will arrive.", [2] = function(player) return ("You found the old gnome trail where ordnance for the gnome outpost arrive, escort them \z - and their pack animals to safety and return to Gnomus.\n\nRescued gnomes: %d/5\nRescued animals: %d/3"):format( - math.max(player:getStorageValue(Storage.DangerousDepths.Gnomes.GnomesCount), 0), - math.max(player:getStorageValue(Storage.DangerousDepths.Gnomes.CrawlersCount), 0) - ) + and their pack animals to safety and return to Gnomus.\n\nRescued gnomes: %d/5\nRescued animals: %d/3"):format(math.max(player:getStorageValue(Storage.DangerousDepths.Gnomes.GnomesCount), 0), math.max(player:getStorageValue(Storage.DangerousDepths.Gnomes.CrawlersCount), 0)) end, [3] = "You helped Lardoc Bashsmite fighting back the verminous growth in the northern mineshaft. \z - Return to him later to see if he has more work for you." - } + Return to him later to see if he has more work for you.", + }, }, [5] = { name = "Gnomes: Uncharted Territory", @@ -5642,8 +5530,8 @@ if not Quests then ) end, [2] = "You helped Gnomus chart the area around the deep base. You found traces of what \z - could have been an old civilisation but there's not enough left to draw any conclusion." - } + could have been an old civilisation but there's not enough left to draw any conclusion.", + }, }, [6] = { name = "Scouts: Explosive Growth", @@ -5663,8 +5551,8 @@ if not Quests then ) end, [2] = "You helped Lardoc Bashsmite fighting back the verminous growth in the northern mineshaft. \z - Return to him later to see if he has more work for you." - } + Return to him later to see if he has more work for you.", + }, }, [7] = { name = "Scouts: Pesticide", @@ -5676,15 +5564,13 @@ if not Quests then [1] = function(player) return ("Lardoc asked you to follow a plan of the gnomes to stop the deep threat by trying to \z neutralise diremaw spawn with pesticies. Diremaws lay eggs inside corpses of their skin. \z - \n\nNeutralised: %d/20"):format( - math.max(player:getStorageValue(Storage.DangerousDepths.Scouts.DiremawsCount), 0) - ) + \n\nNeutralised: %d/20"):format(math.max(player:getStorageValue(Storage.DangerousDepths.Scouts.DiremawsCount), 0)) end, [2] = "You reported back to Lardoc Bashsmite to inform him that the gnome's plan to \z - neutralise diremaw corpses seems to work." - } - } - } + neutralise diremaw corpses seems to work.", + }, + }, + }, }, [40] = { -- FREE SLOT FOR A SIMPLE QUEST name = "XXXXXXXXXXXX", @@ -5699,10 +5585,10 @@ if not Quests then endValue = 2, states = { [1] = "XXXXXXXXXXXX", - [2] = "XXXXXXXXXXXX" - } - } - } + [2] = "XXXXXXXXXXXX", + }, + }, + }, }, [41] = { name = "Adventurers Guild", @@ -5717,12 +5603,10 @@ if not Quests then endValue = 2, description = function(player) return ("You are exploring the Kha'zeel Dragon Lairs. Others obviously found a terrible end here. \z - But the dragon hoards might justify the risks. You killed %d/50 dragons and dragon lords."):format( - math.max(player:getStorageValue(Storage.AdventurersGuild.GreatDragonHunt.DragonCounter), 0) - ) - end - } - } + But the dragon hoards might justify the risks. You killed %d/50 dragons and dragon lords."):format(math.max(player:getStorageValue(Storage.AdventurersGuild.GreatDragonHunt.DragonCounter), 0)) + end, + }, + }, }, [42] = { name = "Dawnport", @@ -5736,7 +5620,7 @@ if not Quests then startValue = 1, endValue = 2, description = "You have reached the Outpost, where young heroes are trained in combat and hunting. \z - When you have reached level 8 at least, you can leave for the Mainland. Talk to Inigo if you have questions." + When you have reached level 8 at least, you can leave for the Mainland. Talk to Inigo if you have questions.", }, [2] = { name = "The Lost Amulet", @@ -5747,8 +5631,8 @@ if not Quests then states = { [1] = "Mr Morris tasked you to find an ancient amulet that was lost somewhare on Dawnport - probably next to a corpse somewhare.", [2] = "Come back to Mr Morris", - [3] = "Mr Morris thanks for the help" - } + [3] = "Mr Morris thanks for the help", + }, }, [3] = { name = "The Stolen Log Book", @@ -5758,8 +5642,8 @@ if not Quests then endValue = 2, states = { [1] = "Mr Morris urged you fo find a log book that was stolen by trolls.", - [2] = "Mr Morris thanks for the help" - } + [2] = "Mr Morris thanks for the help", + }, }, [4] = { name = "The Rare Herb", @@ -5770,8 +5654,8 @@ if not Quests then states = { [1] = "Mr Morris needs the rae Dawnfire herb harvested and brought to hin. It grows on grey sand only, he said.", [2] = "Come back to Mr Morris", - [3] = "Mr Morris thanks for the help" - } + [3] = "Mr Morris thanks for the help", + }, }, [5] = { name = "The Dorm Key", @@ -5780,12 +5664,12 @@ if not Quests then startValue = 1, endValue = 5, states = { - [1] = "The key to the adventurer\'s dormitory has disappeared. Maybe you can find it. Ask around to find out who was the last to have seen it.", + [1] = "The key to the adventurer's dormitory has disappeared. Maybe you can find it. Ask around to find out who was the last to have seen it.", [2] = "use the fishing rod in the nearby lake to fish old nasty", [3] = "Come back to Woblin with Old Nasty", [4] = "Come back to Mr Morris with key 0010", - [5] = "Mr Morris thanks for the help" - } + [5] = "Mr Morris thanks for the help", + }, }, [6] = { name = "Task: Mountain Trolls", @@ -5793,11 +5677,9 @@ if not Quests then missionId = 10394, startValue = 0, endValue = 20, - description = - function(player) - return string.format("You already hunted %d/20 Mountain Trolls.", - (math.max(player:getStorageValue(65062), 0))) - end + description = function(player) + return string.format("You already hunted %d/20 Mountain Trolls.", (math.max(player:getStorageValue(65062), 0))) + end, }, [7] = { name = "Task: Muglex Clan Footman", @@ -5805,11 +5687,9 @@ if not Quests then missionId = 10395, startValue = 0, endValue = 20, - description = - function(player) - return string.format("You already hunted %d/20 Muglex Clan Footman.", - (math.max(player:getStorageValue(65061), 0))) - end + description = function(player) + return string.format("You already hunted %d/20 Muglex Clan Footman.", (math.max(player:getStorageValue(65061), 0))) + end, }, [8] = { name = "Task: Minotaur Bruisers", @@ -5817,13 +5697,11 @@ if not Quests then missionId = 10396, startValue = 0, endValue = 20, - description = - function(player) - return string.format("You already hunted %d/20 Minotaurs Bruisers.", - (math.max(player:getStorageValue(65060), 0))) - end + description = function(player) + return string.format("You already hunted %d/20 Minotaurs Bruisers.", (math.max(player:getStorageValue(65060), 0))) + end, }, - } + }, }, [43] = { name = "The Rookie Guard", @@ -5837,8 +5715,8 @@ if not Quests then startValue = 1, endValue = 1, states = { - [1] = "" - } + [1] = "", + }, }, [2] = { name = "Mission 02: Defence!", @@ -5851,8 +5729,8 @@ if not Quests then [2] = "You retrieved one stone from the big pile. Climb onto the roof of either Norma's bar, Obi's shop or the academy to find a catapult to use it on.", [3] = "You loaded a stone on one of the catapults. One more to go! Climb onto the roof of either Norma's bar, Obi's shop or the academy to find a catapult to load with a heavy stone.", [4] = "Two of the four catapults on the roofs are loaded. That should be enough to build up a decent defence. Return to Vascalir to turn in your quest.", - [5] = "You made sure that Rookgaard's defences are at their best. If the orcs try to enter the village, they won't have an easy time!" - } + [5] = "You made sure that Rookgaard's defences are at their best. If the orcs try to enter the village, they won't have an easy time!", + }, }, [3] = { name = "Mission 03: A Rational Request", @@ -5862,13 +5740,10 @@ if not Quests then endValue = 2, states = { [1] = function(player) - return string.format( - "Vascalir sent you to the Rookgaard sewers to kill 5 rats. You have already killed %d/5. Return to Vascalir once you're done.", - player:getStorageValue(Storage.TheRookieGuard.RatKills) - ) + return string.format("Vascalir sent you to the Rookgaard sewers to kill 5 rats. You have already killed %d/5. Return to Vascalir once you're done.", player:getStorageValue(Storage.TheRookieGuard.RatKills)) end, - [2] = "Vascalir was pleased with your hunting efforts. You've proven that you are a skilled hunter, ready for the task at hand." - } + [2] = "Vascalir was pleased with your hunting efforts. You've proven that you are a skilled hunter, ready for the task at hand.", + }, }, [4] = { name = "Mission 04: Home-Brewed", @@ -5882,8 +5757,8 @@ if not Quests then [3] = "You've delivered the fresh herbs to Hyacinth. He still has a reward for you though - make sure to talk to him again!", [4] = "Hyacinth has another reward for you - make sure to talk to him again with enough space in your inventory.", [5] = "You've delivered the herbs to Hyacinth and got potions and a ring as reward. Save the potions for when you're low on health and wear the ring if you want to regain health faster. Return to Vascalir.", - [6] = "You've told Vascalir about your successful delivery. The next mission awaits." - } + [6] = "You've told Vascalir about your successful delivery. The next mission awaits.", + }, }, [5] = { name = "Mission 05: Web of Terror", @@ -5897,8 +5772,8 @@ if not Quests then [3] = "You retrieved some of the spider queen's web. Return to Vascalir and try not to get caught by the queen on the way out!", [4] = "The spider queen caught you in her net. If you had a sample of her web, you've lost it. Find a way out of her net and retry!", [5] = "Vascalir took the sample from you. He still has a studded armor for you - talk to him once you have enough space in your inventory.", - [6] = "You've brought the spider queen's web back to Vascalir. This will definitely come in handy later on." - } + [6] = "You've brought the spider queen's web back to Vascalir. This will definitely come in handy later on.", + }, }, [6] = { name = "Mission 06: Run Like a Wolf", @@ -5913,8 +5788,8 @@ if not Quests then [4] = "You've skinned a war wolf - but you alerted the wolf pack! Run to the exit, quickly!", [5] = "RUN! You have only a limited time to reach the exit with the war wolf leather!", [6] = "Phew - you managed to get out of the wolves' den in time. Return to Tom to finish your mission.", - [7] = "Tom gave you a pair of leather boots as reward for your good work. Vascalir surely has a new mission for you now." - } + [7] = "Tom gave you a pair of leather boots as reward for your good work. Vascalir surely has a new mission for you now.", + }, }, [7] = { name = "Mission 07: Attack!", @@ -5924,8 +5799,8 @@ if not Quests then endValue = 2, states = { [1] = "While you were gone, trolls have infiltrated the academy and set it on fire! Enter the burning vault deep underground and try to recover the copy of the book of orc language before it's destroyed.", - [2] = "You've done all you could - but unfortunately the book is lost. No need to lose heart though - there is still hidden knowledge about the orc language in the village, and the next mission awaits." - } + [2] = "You've done all you could - but unfortunately the book is lost. No need to lose heart though - there is still hidden knowledge about the orc language in the village, and the next mission awaits.", + }, }, [8] = { name = "Mission 08: Less Risk - More Fun", @@ -5935,8 +5810,8 @@ if not Quests then endValue = 2, states = { [1] = "Before getting revenge on the trolls, eliminate the risk of losing money on the way. Paulie has an interesting bonus offer for you if you deposit your money at the bank. Find him below the academy.", - [2] = "You've done as Vascalir asked and talked to Paulie. Remember to always leave your gold on your account! That way there's no risk of losing it." - } + [2] = "You've done as Vascalir asked and talked to Paulie. Remember to always leave your gold on your account! That way there's no risk of losing it.", + }, }, [9] = { name = "Mission 09: Rock 'n Troll", @@ -5954,8 +5829,8 @@ if not Quests then [7] = "You've weakened all the beams! Hurry out of the tunnel before it collapses!", [8] = "The tunnel collapsed behind you. Time to return to Vascalir.", [9] = "Vascalir rewarded you with experience, but there's still something he has to give you. You should talk to him again.", - [10] = "The trolls will not be able to enter the academy via their tunnel again. The village is safe for now - at least from trolls." - } + [10] = "The trolls will not be able to enter the academy via their tunnel again. The village is safe for now - at least from trolls.", + }, }, [10] = { name = "Mission 10: Tomb Raiding", @@ -5966,8 +5841,8 @@ if not Quests then states = { [1] = "Leave the village to the north and walk south-east to find the haunted graveyard. Descend into the crypt and find a sarcophagus that might still contain a fleshy bone. Bring it to Vascalir.", [2] = "You've brought the fleshy bone back to Vascalir. Talk to him again to receive your reward.", - [3] = "You managed to get a fleshy bone from the crypt! Who knows what Vascalir plans with it - but this is going to be good." - } + [3] = "You managed to get a fleshy bone from the crypt! Who knows what Vascalir plans with it - but this is going to be good.", + }, }, [11] = { name = "Mission 11: Sweet Poison", @@ -5980,8 +5855,8 @@ if not Quests then [2] = "You've found the wasp lair. Kill one wasp and use the empty flask on its dead body to retrieve some of its poison.", [3] = "You've retrieved some lethal wasp poison. Bring it back to Vascalir to complete the mission.", [4] = "You brought Vascalir the highly toxic poison. You should talk to him again to receive your reward.", - [5] = "You've retrieved highly toxic wasp poison for Vascalir. It's time for your final challenge." - } + [5] = "You've retrieved highly toxic wasp poison for Vascalir. It's time for your final challenge.", + }, }, [12] = { name = "Mission 12: Into The Fortress", @@ -6004,10 +5879,10 @@ if not Quests then [12] = "You've entered Kraknaknork's throne room. Fight him! You can back out at any time via the teleporter, but you'll have to start the battle over. Once he is dead, enter the teleporter near his throne.", [13] = "You've vanquished Kraknaknork and found his treasure room. You can probably take a few things from there before you leave - he wouldn't care anymore.", [14] = "With the last bit of Kraknaknork's energy, you were teleported out of the fortress. Time to return to Vascalir victoriously.", - [15] = "You've vanquished Kraknaknork and brought peace to the village of Rookgaard. It will soon be time for you to leave for the Isle of Destiny, choose a vocation and enter the open world of Tibia." - } - } - } + [15] = "You've vanquished Kraknaknork and brought peace to the village of Rookgaard. It will soon be time for you to leave for the Isle of Destiny, choose a vocation and enter the open world of Tibia.", + }, + }, + }, }, [44] = { name = "The New Frontier", @@ -6023,8 +5898,8 @@ if not Quests then states = { [1] = "Explore the new land and reach the bottom of the mountain.", [2] = "You have found a passage from the mountains. You can report back to Ongulf.", - [3] = "You have reported the scouted route to Ongulf." - } + [3] = "You have reported the scouted route to Ongulf.", + }, }, [2] = { name = "Mission 02: From Kazordoon With Love", @@ -6038,8 +5913,8 @@ if not Quests then [2] = "Prepare the three trees which Melfar marked on your map with the beaver bait. \z Once you've marked all three return to Melfar and tell him about your success.", [3] = "Melfar has finally promised to send more miners and wood. Report this to Ongulf in Farmine.", - [4] = "You have reported that Melfar will send more miners and wood for Farmine." - } + [4] = "You have reported that Melfar will send more miners and wood for Farmine.", + }, }, [3] = { name = "Mission 03: Strangers in the Night", @@ -6052,8 +5927,8 @@ if not Quests then somewhere during their escape. Try to negotiate a peaceful agreement if possible.", [2] = "You have talked to the leader of the primitive humans and have assured their peacefulness. \z Report this to Ongulf back in the base.", - [3] = "You have negotiated a peacful agreement between the dwarfs and the local primitives." - } + [3] = "You have negotiated a peacful agreement between the dwarfs and the local primitives.", + }, }, [4] = { name = "Mission 04: The Mine Is Mine", @@ -6064,8 +5939,8 @@ if not Quests then states = { [1] = "Free the mine of the monstrous threat. Use a lift to reach the mines and look for a leader \z of the stone creatures. Slay this creature and report back to Ongulf.", - [2] = "You have slain the monster that terrorised the mines." - } + [2] = "You have slain the monster that terrorised the mines.", + }, }, [5] = { name = "Mission 05: Getting Things Busy", @@ -6074,11 +5949,11 @@ if not Quests then startValue = 1, endValue = 2, states = { - [1] = "Try getting the support of the people mentioned. Talk to them about \"farmine\", then \z - choose the \"flatter\", \"threaten\", \"impress\", \"bluff\", \"reason\" or \"plea\" and report \z - any progress to Ongulf.", - [2] = "You have gained the necessary support for Farmine." - } + [1] = 'Try getting the support of the people mentioned. Talk to them about "farmine", then \z + choose the "flatter", "threaten", "impress", "bluff", "reason" or "plea" and report \z + any progress to Ongulf.', + [2] = "You have gained the necessary support for Farmine.", + }, }, [6] = { name = "Mission 5: Support of Kazordoon's Worm Tamer", @@ -6088,8 +5963,8 @@ if not Quests then endValue = 2, states = { [1] = "Talk to the worm tamer in Kazordoon.", - [2] = "Find an item that interests Humgolf to get another chance." - } + [2] = "Find an item that interests Humgolf to get another chance.", + }, }, [7] = { name = "Mission 5: Support of the Edron Academy", @@ -6099,8 +5974,8 @@ if not Quests then endValue = 2, states = { [1] = "Talk to the magician Wyrdin in the Edron Academy.", - [2] = "Find an item that interests Wyrdin to get another chance." - } + [2] = "Find an item that interests Wyrdin to get another chance.", + }, }, [8] = { name = "Mission 5: Support of the Explorer Society", @@ -6110,8 +5985,8 @@ if not Quests then endValue = 2, states = { [1] = "Talk to the representative of the Explorer Society in Port Hope.", - [2] = "Find an item that interests Angus to get another chance." - } + [2] = "Find an item that interests Angus to get another chance.", + }, }, [9] = { name = "Mission 5: Support of the Inventor Telas", @@ -6121,8 +5996,8 @@ if not Quests then endValue = 2, states = { [1] = "Talk to the inventor Telas in Edron.", - [2] = "Find an item that interests Telas to get another chance." - } + [2] = "Find an item that interests Telas to get another chance.", + }, }, [10] = { name = "Mission 5: Support of the Thaian King", @@ -6132,8 +6007,8 @@ if not Quests then endValue = 2, states = { [1] = "Talk to King Tibianus in the Thaian Castle.", - [2] = "Find an item that interests King Tibianus to get another chance." - } + [2] = "Find an item that interests King Tibianus to get another chance.", + }, }, [11] = { name = "Mission 5: Support of the Venorean Traders", @@ -6143,8 +6018,8 @@ if not Quests then endValue = 2, states = { [1] = "Talk to Leeland Slim, the representative of the Venorean Traders.", - [2] = "Find an item that interests Leeland Slim to get another chance." - } + [2] = "Find an item that interests Leeland Slim to get another chance.", + }, }, [12] = { name = "Mission 06: Days Of Doom", @@ -6158,8 +6033,8 @@ if not Quests then prove your worth in their arena. You will have to survive against Mooh'Tah master for 2 minutes, so prepare!", [3] = "You have survived the arena. Talk to Curos again about your mission.", [4] = "Your negotiations had moderate success. Your can report back to Ongulf.", - [5] = "You have ensured a brittle peace between Farmine and the orcs." - } + [5] = "You have ensured a brittle peace between Farmine and the orcs.", + }, }, [13] = { name = "Mission 07: Messengers Of Peace", @@ -6170,8 +6045,8 @@ if not Quests then states = { [1] = "Find a lizardman somewhere in the north and try to start a negotiation of peace.", [2] = "It seems that the lizardmen are not interested in peace and you will have to focus \z - on other problems at hand." - } + on other problems at hand.", + }, }, [14] = { name = "Mission 08: An Offer You Can't Refuse", @@ -6182,8 +6057,8 @@ if not Quests then states = { [1] = "Captured by lizardmen trap you have to find a way out of the prison. Perhaps \z something in your cell might lead you to an opportunity for freedom.", - [2] = "You managed to find a way of the captivity of the lizardmen - but for a price." - } + [2] = "You managed to find a way of the captivity of the lizardmen - but for a price.", + }, }, [15] = { name = "Mission 09: Mortal Combat", @@ -6197,8 +6072,8 @@ if not Quests then [2] = "You are the champion of the great tournament! Still the lizardmen are a menace to \z behold. You should report to Chrak before you leave the isle.", [3] = "You have reported your latest doings to Chrak. It seems you bought the dwarfs some \z - time of peace. Only the dragon kings may know how long though." - } + time of peace. Only the dragon kings may know how long though.", + }, }, [16] = { name = "Mission 10: New Horizons", @@ -6210,8 +6085,8 @@ if not Quests then [1] = "Ongulf will be anxious to learn about your latest adventures. Travel back to Farmine \z for a final report.", [2] = "Ongulf got very satisfied with your journey, this land is yours to be taken. You can \z - find now on top of the mountain a red carpet, it might offer you access to some cities." -- This last questlog message is not accurate, need to update. - } + find now on top of the mountain a red carpet, it might offer you access to some cities.", -- This last questlog message is not accurate, need to update. + }, }, [17] = { name = "Tome of Knowledge Counter", @@ -6253,10 +6128,10 @@ if not Quests then [12] = "You brought the twelfth Tome of Knowledge to Cael. \z He learnt something about reveals some of the power structures in Zao. \z Cael will now make a Dragon Throne for you after you bring him a Red Piece of Cloth. \z - He will reward you with 5000 experience points for each extra tome you give to him." - } - } - } + He will reward you with 5000 experience points for each extra tome you give to him.", + }, + }, + }, }, [45] = { name = "Spirithunters Quest", @@ -6271,8 +6146,8 @@ if not Quests then endValue = 2, states = { [1] = "Use the item on the tombstones.", - [2] = "You have used these item in the tombstones." - } + [2] = "You have used these item in the tombstones.", + }, }, [2] = { name = "First Mission", @@ -6282,8 +6157,8 @@ if not Quests then endValue = 4, states = { [3] = "Talk to Sinclair and take the ghost residue.", - [4] = "You got the ghost waste." - } + [4] = "You got the ghost waste.", + }, }, [3] = { name = "Second Mission", @@ -6293,10 +6168,10 @@ if not Quests then endValue = 6, states = { [5] = "You need to get more samples of ghosts.", - [6] = "You got all the ghost scraps." - } - } - } + [6] = "You got all the ghost scraps.", + }, + }, + }, }, [46] = { name = "Threatened Dreams", @@ -6340,8 +6215,8 @@ if not Quests then [15] = "You found enough magical swan feathers. The swan maiden will now be able to restore her cloak. You \z should talk to Alkestios again.", [16] = "Alkestios was very happy about your support. You earned the Fae's trust and may now enter their secret \z - realm. Search for an elemental shrine of ice, fire, earth or energy to reach Feyrist." - } + realm. Search for an elemental shrine of ice, fire, earth or energy to reach Feyrist.", + }, }, [2] = { name = "Nightmare Intruders", @@ -6371,8 +6246,8 @@ if not Quests then [7] = "You may now repair the barrier. Charge the five moon sculptures of Feyrist with moon rays, the five \z dreambird trees with starlight and the five sun mosics with sunlight.", [8] = "You repaired tha magical barrier that protects Feyrist from the outside world. The fae's secret realm \z - is safe again." - } + is safe again.", + }, }, [3] = { name = "An Unlikely Couple", @@ -6388,10 +6263,10 @@ if not Quests then [3] = "The faun Taegen wants to spend some time with his lover, the mermaid Aurita. He wants to visit her \z home and thus must be able to breath under water. Therefore he needs the rare raven herb.", [4] = "You found the rare raven herb and gave it to Taegen. Now he will create a sun catcher for you. \z - You may also ask Aurita for the starlight vial now." - } - } - } + You may also ask Aurita for the starlight vial now.", + }, + }, + }, }, [47] = { name = "Blood Brothers", @@ -6408,8 +6283,8 @@ if not Quests then [1] = "Think of a way to earn Julius' trust and prove that you are not a vampire. Once you thought of something, talk to him again about your mission.", [2] = "", [3] = "", - [4] = "You have Julius' trust." - } + [4] = "You have Julius' trust.", + }, }, [2] = { name = "Mission 02: Bad Eggs", @@ -6419,8 +6294,8 @@ if not Quests then endValue = 2, states = { [1] = "Bake garlic cookies by using the garlic dough on a baking tray before you put it on the oven. Hand out cookies to the citizens and watch their reactions. Report any suspicious people to Julius.", - [2] = "You have reported five suspects - probably vamires - to Julius." - } + [2] = "You have reported five suspects - probably vamires - to Julius.", + }, }, [3] = { name = "Mission 03: His True Face", @@ -6431,8 +6306,8 @@ if not Quests then states = { [1] = "Use the magic words 'alori mort' in front of the suspicious citizens you discovered to hopefully reveal who among them is their leader.", [2] = "", - [3] = "You reported the incident with Armenius to Julius." - } + [3] = "You reported the incident with Armenius to Julius.", + }, }, [4] = { name = "Mission 04: The Dark Lands", @@ -6441,10 +6316,10 @@ if not Quests then startValue = 1, endValue = 1, states = { - [1] = "Your task is to find someone to bring you to Vengoth. Explore the island and use Julius' map whenever you find an unusual spot to mark it. Mark at least 5 spots including the castle and report back." - } - } - } + [1] = "Your task is to find someone to bring you to Vengoth. Explore the island and use Julius' map whenever you find an unusual spot to mark it. Mark at least 5 spots including the castle and report back.", + }, + }, + }, }, [48] = { name = "Grave Danger", @@ -6459,21 +6334,24 @@ if not Quests then endValue = 2, states = { [1] = function(player) - return string.format("Prevent the raising of twelve lich knights. Sanctify the graves yet untouched and destroy any lich knights that might have been raised. Graves exlored: %d/12", - player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Edron) + - player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.DarkCathedral) + - player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Ghostlands) + - player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Cormaya) + - player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.FemorHills) + - player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Ankrahmun) + - player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Kilmaresh) + - player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Vengoth) + - player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Darashia) + - player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Thais) + - player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Orclands) + - player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.IceIslands) - 12) - end - } + return string.format( + "Prevent the raising of twelve lich knights. Sanctify the graves yet untouched and destroy any lich knights that might have been raised. Graves exlored: %d/12", + player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Edron) + + player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.DarkCathedral) + + player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Ghostlands) + + player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Cormaya) + + player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.FemorHills) + + player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Ankrahmun) + + player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Kilmaresh) + + player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Vengoth) + + player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Darashia) + + player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Thais) + + player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.Orclands) + + player:getStorageValue(Storage.Quest.U12_20.GraveDanger.Graves.IceIslands) + - 12 + ) + end, + }, }, [2] = { name = "01 The grave in Edron", @@ -6483,8 +6361,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the grave in Edron's north.", - [2] = "The Edron grave was visited." - } + [2] = "The Edron grave was visited.", + }, }, [3] = { name = "02 The grave in the dark cathedral", @@ -6494,8 +6372,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the grave in the dark cathedral.", - [2] = "The grave in the dark cathedral was visited." - } + [2] = "The grave in the dark cathedral was visited.", + }, }, [4] = { name = "03 The grave in Ghostlands", @@ -6505,8 +6383,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the grave in the ghostlands.", - [2] = "The grave in the Ghostlands was visited." - } + [2] = "The grave in the Ghostlands was visited.", + }, }, [5] = { name = "04 The grave in Cormaya", @@ -6516,8 +6394,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the grave in Cormaya.", - [2] = "The grave in Cormaya was visited." - } + [2] = "The grave in Cormaya was visited.", + }, }, [6] = { name = "05 The grave in the Femor Hills", @@ -6527,8 +6405,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the grave in the Femor Hills.", - [2] = "The grave in the Femor Hills was visited." - } + [2] = "The grave in the Femor Hills was visited.", + }, }, [7] = { name = "06 The grave on an isle NE of Ankrahmun", @@ -6538,8 +6416,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the grave on an isle north-east of Ankrahmun.", - [2] = "The grave on an isle north-east of Ankrahmun was visited." - } + [2] = "The grave on an isle north-east of Ankrahmun was visited.", + }, }, [8] = { name = "07 The grave in Kilmaresh", @@ -6549,8 +6427,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the grave in Kilmaresh.", - [2] = "The grave in Kilmaresh was visited." - } + [2] = "The grave in Kilmaresh was visited.", + }, }, [9] = { name = "08 The grave in Vengoth", @@ -6560,8 +6438,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the grave in Vengoth.", -- - [2] = "The grave in Vengoth was visited." - } + [2] = "The grave in Vengoth was visited.", + }, }, [10] = { name = "09 The grave in Darashia", @@ -6571,8 +6449,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the grave in Darashia.", -- - [2] = "The grave in Darashia was visited." - } + [2] = "The grave in Darashia was visited.", + }, }, [11] = { name = "10 The grave in the old Thais temple", @@ -6582,8 +6460,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the grave in the old Thais temple.", -- - [2] = "The grave in the old temple of Thais has been visited." - } + [2] = "The grave in the old temple of Thais has been visited.", + }, }, [12] = { name = "11 The grave at the orclands entrance", @@ -6593,8 +6471,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the grave at the orclands entrance.", -- - [2] = "The grave at the orcland entrance was visited." - } + [2] = "The grave at the orcland entrance was visited.", + }, }, [13] = { name = "12 The grave on the southern ice islands", @@ -6604,8 +6482,8 @@ if not Quests then endValue = 2, states = { [1] = "Find the grave on the southern ice islands.", -- - [2] = "The grave on the southern ice islands was visited." - } + [2] = "The grave on the southern ice islands was visited.", + }, }, [14] = { name = "The Order of the Cobra", @@ -6615,10 +6493,10 @@ if not Quests then endValue = 2, states = { [1] = "", -- - [2] = "Scarlett Etzel once stood proud and righteous. The assassins she rallied around her under the Order of the Cobra, however, where of ill repute and had to be vanquished. And so did she, you prevailed." - } - } - } - } + [2] = "Scarlett Etzel once stood proud and righteous. The assassins she rallied around her under the Order of the Cobra, however, where of ill repute and had to be vanquished. And so did she, you prevailed.", + }, + }, + }, + }, } end diff --git a/data-otservbr-global/lib/core/storages.lua b/data-otservbr-global/lib/core/storages.lua index 673a933a80c..d5f434274b0 100644 --- a/data-otservbr-global/lib/core/storages.lua +++ b/data-otservbr-global/lib/core/storages.lua @@ -151,81 +151,81 @@ Storage = { FirstStage = 50001, SecondStage = 50002, ThirdStage = 50003, - Crystal = 50004 + Crystal = 50004, }, LiquidBlackQuest = { -- Reserved storage from 50010 - 50014 Questline = 50010, - Visitor = 50011 + Visitor = 50011, }, Kilmaresh = { -- Reserved storage from 50015 - 50049 Questline = 50015, First = { - Title = 50016 + Title = 50016, }, Second = { - Investigating = 50017 + Investigating = 50017, }, Third = { - Recovering = 50018 + Recovering = 50018, }, Fourth = { Moe = 50019, - MoeTimer = 50020 + MoeTimer = 50020, }, Fifth = { Memories = 50021, - MemoriesShards = 50022 + MemoriesShards = 50022, }, Sixth = { Favor = 50023, FourMasks = 50024, - BlessedStatues = 50025 + BlessedStatues = 50025, }, Set = { - Ritual = 50026 + Ritual = 50026, }, Eighth = { Yonan = 50027, Narsai = 50028, Shimun = 50029, - Tefrit = 50030 + Tefrit = 50030, }, Nine = { - Owl = 50031 + Owl = 50031, }, Tem = { - Bleeds = 50032 + Bleeds = 50032, }, Eleven = { - Basin = 50033 + Basin = 50033, }, Twelve = { Boss = 50034, Bragrumol = 50035, Mozradek = 50036, - Xogixath = 50037 + Xogixath = 50037, }, Thirteen = { Fafnar = 50038, Lyre = 50039, - Presente = 50040 + Presente = 50040, }, Fourteen = { - Remains = 50041 + Remains = 50041, }, UrmahlulluTimer = 50042, AccessDoor = 50043, NeferiTheSpyTimer = 50044, SisterHetaiTimer = 55045, AmenefTimer = 55046, - CatacombDoors = 55047 + CatacombDoors = 55047, }, TheSecretLibrary = { -- Reserved storage from 50050 - 50074 TheOrderOfTheFalcon = { - OberonTimer = 50050 + OberonTimer = 50050, }, LiquidDeath = 50051, Mota = 50052, @@ -241,26 +241,26 @@ Storage = { HighDry = 50062, FalconBastionAccess = 50063, FalconBastionChestsTimer = { - Key0909 = 50064 + Key0909 = 50064, }, MiniBosses = { GrandCommanderSoeren = 50065, PreceptorLazare = 50066, GrandChaplainGaunder = 50067, GrandCanonDominus = 50068, - DazedLeafGolem = 50069 + DazedLeafGolem = 50069, }, LowerBastionAccess = 50070, UndergroundBastionAccess = 50071, OberonAccess = 50072, - ShortcutToBastion = 50073 + ShortcutToBastion = 50073, }, DeeplingBosses = { -- Reserved storage from 50075 - 50079 Jaul = 50075, Tanjis = 50076, Obujos = 50077, - DeeplingStatus = 50078 + DeeplingStatus = 50078, }, DangerousDepths = { -- Reserved storage from 50080 - 50199 @@ -273,7 +273,7 @@ Storage = { Prisoners = 50085, Organisms = 50086, TimeTaskHome = 50087, - TimeTaskSubterranean = 50088 + TimeTaskSubterranean = 50088, }, Scouts = { Status = 50090, @@ -290,7 +290,7 @@ Storage = { TimeTaskDiremaws = 50101, TimeTaskGrowth = 50102, Barrel = 50103, - BarrelTimer = 50104 + BarrelTimer = 50104, }, Gnomes = { Status = 50115, @@ -317,7 +317,7 @@ Storage = { ChartingCount = 50135, -- Contador TimeTaskOrdnance = 50136, TimeTaskMeasurements = 50137, - TimeTaskCharting = 50138 + TimeTaskCharting = 50138, }, Access = { LavaPumpWarzoneVI = 50139, @@ -325,7 +325,7 @@ Storage = { LavaPumpWarzoneV = 50141, TimerWarzoneV = 50142, LavaPumpWarzoneIV = 50143, - TimerWarzoneIV = 50144 + TimerWarzoneIV = 50144, }, Crystals = { WarzoneVI = { @@ -334,7 +334,7 @@ Storage = { MediumCrystal1 = 50157, MediumCrystal2 = 50158, SmallCrystal1 = 50159, - SmallCrystal2 = 50160 + SmallCrystal2 = 50160, }, WarzoneV = { BigCrystal1 = 50165, @@ -342,7 +342,7 @@ Storage = { MediumCrystal1 = 50167, MediumCrystal2 = 50168, SmallCrystal1 = 50169, - SmallCrystal2 = 50170 + SmallCrystal2 = 50170, }, WarzoneIV = { BigCrystal1 = 50175, @@ -350,8 +350,8 @@ Storage = { MediumCrystal1 = 50177, MediumCrystal2 = 50178, SmallCrystal1 = 50179, - SmallCrystal2 = 50180 - } + SmallCrystal2 = 50180, + }, }, Bosses = { TheCountOfTheCore = 50185, @@ -360,8 +360,8 @@ Storage = { TheCountOfTheCoreAchiev = 50188, TheDukeOfTheDepthsAchiev = 50189, TheBaronFromBelowAchiev = 50190, - LastAchievement = 50191 - } + LastAchievement = 50191, + }, }, CultsOfTibia = { -- Reserved storage from 50200 - 50269 @@ -371,7 +371,7 @@ Storage = { JamesfrancisTask = 50202, Mission = 50203, BossTimer = 50204, - AccessDoor = 50205 + AccessDoor = 50205, }, MotA = { Mission = 50210, @@ -382,7 +382,7 @@ Storage = { QuestionId = 50215, AccessDoorInvestigation = 50216, AccessDoorGareth = 50217, - AccessDoorDenominator = 50218 + AccessDoorDenominator = 50218, }, Barkless = { Mission = 50225, @@ -396,23 +396,23 @@ Storage = { TrialAccessDoor = 50243, -- 50233 is used by an ore wagon TarAccessDoor = 50234, AccessDoor = 50235, - BossAccessDoor = 50236 + BossAccessDoor = 50236, }, Orcs = { Mission = 50240, LookType = 50241, - BossTimer = 50242 + BossTimer = 50242, }, Life = { Mission = 50245, BossTimer = 50246, - AccessDoor = 50264 + AccessDoor = 50264, }, Humans = { Mission = 50250, Vaporized = 50251, Decaying = 50252, - BossTimer = 50253 + BossTimer = 50253, }, Misguided = { Mission = 50255, @@ -420,13 +420,13 @@ Storage = { Exorcisms = 50257, Time = 50258, BossTimer = 50259, - AccessDoor = 50260 + AccessDoor = 50260, }, FinalBoss = { Mission = 50261, BossTimer = 50262, - AccessDoor = 50263 - } + AccessDoor = 50263, + }, }, FirstDragon = { -- Reserved storage from 50350 - 50379 @@ -451,12 +451,12 @@ Storage = { FirstDragonTimer = 50368, RewardFeather = 50369, RewardMask = 50370, - RewardBackpack = 50371 + RewardBackpack = 50371, }, Grimvale = { -- Reserved storage from 50380 - 50399 SilverVein = 50380, - WereHelmetEnchant = 50381 + WereHelmetEnchant = 50381, }, HeroRathleton = { -- Reserved storage from 50400 - 50419 @@ -466,7 +466,7 @@ Storage = { AccessDoor = 50403, AccessTeleport1 = 50404, AccessTeleport2 = 50405, - AccessTeleport3 = 50406 + AccessTeleport3 = 50406, }, FerumbrasAscension = { -- Reserved storage from 50420 - 50469 @@ -510,7 +510,7 @@ Storage = { Ring2 = 50457, Bone = 50458, Reward = 50459, - TheShattererLever = 50460 + TheShattererLever = 50460, }, ForgottenKnowledge = { -- Reserved storage from 50470 - 50519 @@ -552,12 +552,12 @@ Storage = { Tomes = 50506, BabyDragon = 50507, SpiderWeb = 50508, - LloydEvent = 50509 + LloydEvent = 50509, }, SweetyCyclops = { -- Reserved storage from 50520 - 50529 AmuletTimer = 50520, - AmuletStatus = 50521 + AmuletStatus = 50521, }, ExplorerSociety = { -- Reserved storage from 50530 - 50599 @@ -592,7 +592,7 @@ Storage = { FamilyBroochDoor = 50558, TheElvenPoetry = 50559, SpectralStoneDoor = 50560, - IceMusicDoor = 50561 + IceMusicDoor = 50561, }, TravellingTrader = { -- Reserved storage from 50600 - 50619 @@ -610,7 +610,7 @@ Storage = { Faction = { Greeting = 50620, MaridDoor = 50621, - EfreetDoor = 50622 + EfreetDoor = 50622, }, RecievedLamp = 50625, -- Blue djinn @@ -621,7 +621,7 @@ Storage = { RataMari = 50633, Mission03 = 50634, DoorToLamp = 50635, - DoorToEfreetTerritory = 50636 + DoorToEfreetTerritory = 50636, }, -- Green djinn EfreetFaction = { @@ -630,12 +630,12 @@ Storage = { Mission02 = 50642, Mission03 = 50643, DoorToLamp = 50644, - DoorToMaridTerritory = 50645 - } + DoorToMaridTerritory = 50645, + }, }, VampireHunter = { -- Reserved storage from 50650 - 50659 - Rank = 50650 + Rank = 50650, }, BigfootBurden = { -- Reserved storage from 50660 - 50719 @@ -689,22 +689,22 @@ Storage = { BossWarzone1 = 50707, BossWarzone2 = 50708, BossWarzone3 = 50709, - GnomedixMsg = 50710 + GnomedixMsg = 50710, }, TheirMastersVoice = { -- Reserved storage from 50720 - 50739 SlimeGobblerTimeout = 50720, - SlimeGobblerReceived = 50721 + SlimeGobblerReceived = 50721, }, KosheiTheDeathless = { -- Reserved storage from 50740 - 50749 - RewardDoor = 50740 + RewardDoor = 50740, }, ElementalSphere = { -- Reserved storage from 50750 - 50759 QuestLine = 50750, BossStorage = 50751, - MachineGemCount = 50752 + MachineGemCount = 50752, }, GravediggerOfDrefia = { -- Reserved storage from 50760 - 50849 @@ -789,7 +789,7 @@ Storage = { Mission72 = 50838, Mission73 = 50839, Mission74 = 50840, - Bookcase = 50841 + Bookcase = 50841, }, Oramond = { -- Reserved storage from 50850 - 50879 @@ -800,7 +800,7 @@ Storage = { TaskProbing = 50854, DoorBeggarKing = 50855, MissionAbandonedSewer = 50856, - DoorAbandonedSewer = 50857 + DoorAbandonedSewer = 50857, }, DarkTrails = { -- Reserved storage from 50880 - 50909 @@ -824,7 +824,7 @@ Storage = { Mission18 = 50898, Outfit = 50899, -- final storage DoorQuandon = 50901, - DoorHideout = 50902 + DoorHideout = 50902, }, SpikeTaskQuest = { -- Reserved storage from 50910 - 50959 @@ -835,15 +835,15 @@ Storage = { Nests = 50913, Fertilise = 50914, Kill = 50915, - Charges = 50916 + Charges = 50916, }, Gnomargery = { Points = 50920, Deliver = 50921, Undercover = 50922, Temperature = 50923, - Kill = 50924 - } + Kill = 50924, + }, }, OutfitQuest = { -- Reserved storage from 50960 - 51039 @@ -853,7 +853,7 @@ Storage = { Afflicted = { Outfit = 50962, AddonPlagueMask = 50963, - AddonPlagueBell = 50964 + AddonPlagueBell = 50964, }, Citizen = { -- Mission storages for temporary questlog entries @@ -861,7 +861,7 @@ Storage = { AddonHat = 50967, MissionBackpack = 50968, AddonBackpack = 50969, - AddonBackpackTimer = 50970 + AddonBackpackTimer = 50970, }, -- Begger Outfit Quest BeggarFirstAddonDoor = 50975, -- Staff quest @@ -885,21 +885,21 @@ Storage = { HunterHatAddon = 50989, Hunter = { AddonGlove = 50990, - AddonHat = 50991 + AddonHat = 50991, }, Knight = { AddonSword = 50992, MissionHelmet = 50993, AddonHelmet = 50994, AddonHelmetTimer = 50995, - RamsaysHelmetDoor = 50996 + RamsaysHelmetDoor = 50996, }, MageSummoner = { AddonWand = 50997, AddonBelt = 50998, MissionHatCloak = 50999, AddonHatCloak = 51000, - AddonWandTimer = 51001 + AddonWandTimer = 51001, }, -- Nobleman Outfit NoblemanFirstAddon = 51002, @@ -929,11 +929,11 @@ Storage = { Shaman = { AddonStaffMask = 51020, MissionStaff = 51021, - MissionMask = 51022 + MissionMask = 51022, }, DeeplingAnchor = 51023, FirstOrientalAddon = 51024, - SecondOrientalAddon = 51025 + SecondOrientalAddon = 51025, }, TheAncientTombs = { -- Reserved storage from 50940 - 51059 @@ -954,7 +954,7 @@ Storage = { MahrdisTreasure = 50953, VashresamunsTreasure = 50954, MorguthisTreasure = 50955, - RahemosTreasure = 50956 + RahemosTreasure = 50956, }, TheApeCity = { -- Reserved storage from 51060 - 51079 @@ -969,7 +969,7 @@ Storage = { Casks = 51068, HolyApeHair = 51069, SnakeDestroyer = 51070, - ShamanOufit = 51071 + ShamanOufit = 51071, }, TheInquisition = { -- Reserved storage from 51110 - 51139 @@ -990,7 +990,7 @@ Storage = { StorkusVampiredust = 51125, EnterTeleport = 51126, Reward = 51127, - RewardRoomText = 51128 + RewardRoomText = 51128, }, BarbarianTest = { -- Reserved storage from 51140 - 51159 @@ -999,7 +999,7 @@ Storage = { Mission02 = 51142, Mission03 = 51143, MeadTotalSips = 51144, - MeadSuccessSips = 51145 + MeadSuccessSips = 51145, }, TheIceIslands = { -- Reserved storage from 51160 - 51199 @@ -1030,11 +1030,11 @@ Storage = { Obelisk04 = 51184, yakchalDoor = 51185, HuskyKill = 51186, - HuskyKillStatus = 51187 + HuskyKillStatus = 51187, }, TheWayToYalahar = { -- Reserved storage from 51200 - 51209 - QuestLine = 51200 + QuestLine = 51200, }, InServiceofYalahar = { -- Reserved storage from 51210 - 51259 @@ -1077,7 +1077,7 @@ Storage = { DoorToLastFight = 55137, DoorToMatrix = 51247, DoorToQuara = 51248, - DoorToReward = 51249 + DoorToReward = 51249, }, ChildrenoftheRevolution = { -- Reserved storage from 55145 - 51279 @@ -1092,7 +1092,7 @@ Storage = { SpyBuilding02 = 51268, SpyBuilding03 = 51269, StrangeSymbols = 55154, - teleportAccess = 55155 + teleportAccess = 55155, }, UnnaturalSelection = { -- Reserved storage from 55159 - 51299 @@ -1103,7 +1103,7 @@ Storage = { Mission04 = 51284, Mission05 = 51285, Mission06 = 51286, - DanceStatus = 51287 + DanceStatus = 51287, }, WrathoftheEmperor = { -- Reserved storage from 51300 - 51339 @@ -1140,8 +1140,8 @@ Storage = { InnerSanctum = 51329, AwarnessEmperor = 51330, Wote10 = 51331, - BossRoom = 51332 - } + BossRoom = 51332, + }, }, FriendsandTraders = { -- Reserved storage from 51340 - 51359 @@ -1149,7 +1149,7 @@ Storage = { TheSweatyCyclops = 51341, TheMermaidMarina = 51342, TheBlessedStake = 51343, - TheBlessedStakeWaitTime = 51344 + TheBlessedStakeWaitTime = 51344, }, Postman = { -- Reserved storage from 51360 - 51389 @@ -1174,7 +1174,7 @@ Storage = { MeasurementsDove = 51378, MeasurementsLiane = 51379, MeasurementsChrystal = 51380, - MeasurementsOlrik = 51381 + MeasurementsOlrik = 51381, }, ThievesGuild = { -- Reserved storage from 515206 - 51409 @@ -1189,7 +1189,7 @@ Storage = { Mission08 = 51398, Door = 51399, Reward = 51400, - TheatreScript = 51401 + TheatreScript = 51401, }, TheHuntForTheSeaSerpent = { -- Reserved storage from 51410 - 51419 @@ -1216,7 +1216,7 @@ Storage = { AVINMission06 = 51437, CGBMission06 = 51438, Mission07 = 51439, - RottenTree = 51440 + RottenTree = 51440, }, HiddenCityOfBeregar = { -- Reserved storage from 51450 - 51479 @@ -1234,7 +1234,7 @@ Storage = { DoorWestMine = 51461, DoorSouthMine = 51462, BrownMushrooms = 51463, - TunnellingGuide = 51464 + TunnellingGuide = 51464, }, TibiaTales = { -- Reserved storage from 51480 - 51539 @@ -1267,8 +1267,8 @@ Storage = { Grave13 = 51513, Grave14 = 51514, Grave15 = 51515, - Grave16 = 51516 - } + Grave16 = 51516, + }, }, JackFutureQuest = { QuestLine = 51520, @@ -1280,13 +1280,13 @@ Storage = { Mother = 51526, Sister = 51527, Statue = 51528, - LastMissionState = 51529 + LastMissionState = 51529, }, TheCursedCrystal = { Oneeyedjoe = 51530, MedusaOil = 51531, - Questline = 51532 - } + Questline = 51532, + }, }, TheShatteredIsles = { -- Reserved storage from 51540 - 51589 @@ -1312,7 +1312,7 @@ Storage = { YavernDoor = 51559, TavernMap1 = 51560, TavernMap2 = 51561, - TavernMap3 = 51562 + TavernMap3 = 51562, }, SearoutesAroundYalahar = { -- Reserved storage from 51590 - 51609 @@ -1324,7 +1324,7 @@ Storage = { PortHope = 51595, Thais = 51596, LibertyBay = 51597, - Carlin = 51598 + Carlin = 51598, }, KillingInTheNameOf = { -- Reserved storage from 51610 - 51629 @@ -1341,14 +1341,14 @@ Storage = { TrollTask = 51620, GoblinTask = 51621, RotwormTask = 51622, - CyclopsTask = 51623 + CyclopsTask = 51623, }, HotCuisineQuest = { -- Reserved storage from 51650 - 51659 QuestStart = 51650, CurrentDish = 51651, QuestLog = 51652, - CookbookDoor = 51653 + CookbookDoor = 51653, }, RookgaardTutorialIsland = { -- Reserved storage from 51660 - 51679 @@ -1362,7 +1362,7 @@ Storage = { ZirellaQuestLog = 51672, CarlosNpcTradeStorage = 51673, CarlosNpcGreetStorage = 51677, - CarlosQuestLog = 51678 + CarlosQuestLog = 51678, }, TheRookieGuard = { --Reserved storage 52360 - 52395 @@ -1397,7 +1397,7 @@ Storage = { WarWolfDenChest = 52388, UnholyCryptChests = 52389, OrcFortressChests = 52390, - Level8Warning = 52391 + Level8Warning = 52391, }, BanutaSecretTunnel = { -- Reserved storage from 51680 - 51689 @@ -1411,7 +1411,7 @@ Storage = { AxeBlowsBird = 51703, AxeBlowsLeft = 51704, AxeBlowsRight = 51705, - AxeBlowsFace = 51706 + AxeBlowsFace = 51706, }, SvargrondArena = { -- Reserved storage from 51710 - 51729 @@ -1428,7 +1428,7 @@ Storage = { TrophyWarlord = 51720, GreenhornDoor = 51721, ScrapperDoor = 51722, - WarlordDoor = 51723 + WarlordDoor = 51723, }, QuestChests = { -- Reserved storage from 51730 - 51999 @@ -1469,7 +1469,7 @@ Storage = { WhisperMoss = 51766, OldParchment = 51767, DragahsSpellbook = 51768, - StealFromThieves = 51769 + StealFromThieves = 51769, }, PitsOfInferno = { -- Reserved storage from 52000 - 52019 @@ -1483,7 +1483,7 @@ Storage = { ThroneApocalypse = 52007, ThroneBazir = 52008, ThroneAshfalor = 52009, - ThronePumin = 52010 + ThronePumin = 52010, }, HorestisTomb = { -- Reserved storage from 52020 - 52029 @@ -1491,14 +1491,14 @@ Storage = { JarFloor2 = 52021, JarFloor3 = 52022, JarFloor4 = 52023, - JarFloor5 = 52024 + JarFloor5 = 52024, }, WhiteRavenMonastery = { -- Reserved storage from 52030 - 52039 QuestLog = 52030, Passage = 52031, Diary = 52032, - Door = 52033 + Door = 52033, }, FathersBurden = { -- Reserved storage from 52040 - 52059 @@ -1515,8 +1515,8 @@ Storage = { Scale = 52050, Corpse = { Scale = 52051, - Sinew = 52052 - } + Sinew = 52052, + }, }, WhatAFoolish = { -- Reserved storage from 52060 - 52099 @@ -1555,11 +1555,11 @@ Storage = { OrcKing = 52091, Lorbas = 52092, Wyda = 52093, - Hjaern = 52094 + Hjaern = 52094, }, OldWornCloth = 52095, LostDisguise = 52096, - ScaredKazzan = 52097 + ScaredKazzan = 52097, }, SpiritHunters = { -- Reserved storage from 52100 - 52109 @@ -1568,7 +1568,7 @@ Storage = { CharmUse = 52102, NightstalkerUse = 52103, SouleaterUse = 52104, - GhostUse = 52105 + GhostUse = 52105, }, SeaOfLight = { -- Reserved storage from 52110 - 52119 @@ -1577,14 +1577,14 @@ Storage = { Mission2 = 52112, Mission3 = 52113, StudyTimer = 52114, - LostMinesCrystal = 52115 + LostMinesCrystal = 52115, }, Diapason = { -- Reserved storage from 52120 - 52129 Lyre = 52120, LyreTimer = 52121, Edala = 52122, - EdalaTimer = 52123 + EdalaTimer = 52123, }, AdventurersGuild = { -- Reserved storage from 52130 - 52159 @@ -1604,12 +1604,12 @@ Storage = { RockWithASoftSpot = 52142, Tyrias = 52143, Yberius = 52144, - Rahkem = 52145 + Rahkem = 52145, }, GreatDragonHunt = { WarriorSkeleton = 52146, - DragonCounter = 52147 - } + DragonCounter = 52147, + }, }, DreamersChallenge = { -- Reserved storage from 52160 - 52199 @@ -1620,7 +1620,7 @@ Storage = { LeverBrotherhood2 = 52164, LeverBrotherhood3 = 52165, TicTac = 52166, - Reward = 52167 + Reward = 52167, }, HallsOfHope = { -- Reserved storage from 52200 - 52219 @@ -1629,7 +1629,7 @@ Storage = { Reward2 = 52202, Reward3 = 52203, Reward4 = 52204, - Reward5 = 52205 + Reward5 = 52205, }, InsectoidCell = { -- Reserved storage from 52220 - 52249 @@ -1649,7 +1649,7 @@ Storage = { Reward13 = 52233, Reward14 = 52234, Reward15 = 52235, - Reward16 = 52236 + Reward16 = 52236, }, Dawnport = { -- Reserved storage from 52250 - 52289 @@ -1682,7 +1682,7 @@ Storage = { Tutorial = 52276, MessageStair = 52277, Lever = 52278, - Mainland = 52279 + Mainland = 52279, }, LionsRock = { -- Reserved storage from 52290 - 52309 @@ -1698,17 +1698,17 @@ Storage = { LizardSign = 52296, ScorpionSign = 52297, HyenaSign = 52298, - Message = 52299 + Message = 52299, }, - Time = 52300 + Time = 52300, }, GraveDanger = { -- Reserved storage from 52310 - 52339 Questline = 52310, CobraBastion = { Questline = 52311, - ScarlettTimer = 52312 - } + ScarlettTimer = 52312, + }, }, RottinWoodAndMaried = { -- Reserved storage from 52340 - 52349 @@ -1733,7 +1733,7 @@ Storage = { Commander = 52396, -- Global TotalLionCommanders = 52397, -- Global TotalUsurperCommanders = 52398, -- Global - Timer = 52399 + Timer = 52399, }, }, -- News quest development @@ -1766,7 +1766,7 @@ Storage = { ID4055 = 4055, ID4502 = 4502, ID5010 = 5010, - ID6010 = 6010 + ID6010 = 6010, }, -- Start of quests per version -- Use the reserved storage keys accordingly @@ -1778,175 +1778,175 @@ Storage = { WarriorHelmet = 40002, DwarvenRing = 40003, ElvenAmulet = 40004, - KnightAxe = 40005 - } + KnightAxe = 40005, + }, }, OrnamentedShield = { Rewards = { OrnamentedShield = 40006, - TimeRing = 40007 - } + TimeRing = 40007, + }, }, ShortSword = { Rewards = { - Book = 40008 - } + Book = 40008, + }, }, ThaisLighthouse = { Rewards = { BattleHammer = 40009, - DarkShield = 40010 - } + DarkShield = 40010, + }, }, }, U6_0 = { -- update 6.0 - Reserved Storages 40021 - 40030 StuddedShield = { Rewards = { BananaFree = 40021, - BananaPremium = 40022 - } + BananaPremium = 40022, + }, }, }, U6_1 = { -- update 6.1 - Reserved Storages 40031 - 40050 EmperorsCookies = { Rewards = { Cookies = 40031, - } + }, }, ExplorerBrooch = { - Brooch = 40032 + Brooch = 40032, }, OrcFortress = { Rewards = { KnightAxe = 40033, KnightArmor = 40034, - FireSword = 40035 - } + FireSword = 40035, + }, }, Panpipe = { Rewards = { - Panpipe = 40036 - } + Panpipe = 40036, + }, }, }, U6_2 = { -- update 6.2 - Reserved Storages 40051 - 40070 Draconia = { Rewards = { BagWithWeapons = 40051, - BagWithAmulets = 40052 - } + BagWithAmulets = 40052, + }, }, }, U6_4 = { -- update 6.4 - Reserved Storages 40071 - 40110 AdornedUHRune = { Rewards = { - SilverRuneEmblem = 40071 - } + SilverRuneEmblem = 40071, + }, }, BarbarianAxe = { Rewards = { BarbarianAxe = 40072, - Scimitar = 40073 - } + Scimitar = 40073, + }, }, BerserkerTreasure = { Rewards = { - WhitePearls = 40074 - } + WhitePearls = 40074, + }, }, DarkArmor = { Rewards = { - Armor = 40075 - } + Armor = 40075, + }, }, DemonHelmet = { Rewards = { SteelBoots = 40076, DemonHelmet = 40077, - DemonShield = 40078 - } + DemonShield = 40078, + }, }, DoubleHero = { Rewards = { RedGem = 40079, - ClubRing = 40080 - } + ClubRing = 40080, + }, }, EdronGoblin = { Rewards = { SilverAmulet = 40081, - SteelShield = 40082 - } + SteelShield = 40082, + }, }, FireAxe = { Rewards = { Bag = 40083, - FireAxe = 40084 - } + FireAxe = 40084, + }, }, PoisonDaggers = { Rewards = { - BackpackReward = 40085 - } + BackpackReward = 40085, + }, }, ShamanTreasure = { Rewards = { - BlankRunes = 40086 - } + BlankRunes = 40086, + }, }, TrollCave = { Rewards = { GarlicNecklace = 40087, - BrassLegs = 40088 - } + BrassLegs = 40088, + }, }, VampireShield = { Rewards = { StrangeSymbol = 40089, DragonLance = 40090, - VampireShield = 40091 - } + VampireShield = 40091, + }, }, WeddingRing = { Rewards = { DragonNecklace = 40092, - WeedingRing = 40093 - } + WeedingRing = 40093, + }, }, }, U6_5 = { -- update 6.5 - Reserved Storages 40111 - 40120 AlawarsVault = { Rewards = { WhitePearl = 40111, - Broadsword = 40112 - } + Broadsword = 40112, + }, }, }, U7_1 = { -- update 7.1 - Reserved Storages 40121 - 40140 BlackKnight = { Rewards = { CrownArmor = 40121, - CrownShield = 40122 - } + CrownShield = 40122, + }, }, DragonTower = { Rewards = { Backpack1 = 40123, - Backpack2 = 40124 - } + Backpack2 = 40124, + }, }, Ring = { Rewards = { TimeRing = 40125, - SwordRing = 40126 - } + SwordRing = 40126, + }, }, TimeRing = { Rewards = { CrystallBall = 40127, TimeRing = 40128, - ElvenAmulet = 40129 - } + ElvenAmulet = 40129, + }, }, }, U7_2 = { -- update 7.2 - Reserved Storages 40141 - 40200 @@ -1954,10 +1954,10 @@ Storage = { Bag = 10061, GuardianHalberd = 10062, DemonShield = 10063, - GoldenArmor = 10064 + GoldenArmor = 10064, }, ParchmentRoom = { - Bag = 10065 + Bag = 10065, }, TheQueenOfTheBanshees = { Reward = { @@ -1966,7 +1966,7 @@ Storage = { TowerShield = 10068, GiantSword = 10069, BootsOfHaste = 10070, - PlatinumCoin = 10071 + PlatinumCoin = 10071, }, QuestLine = 10072, FirstSeal = 10073, @@ -1986,32 +1986,32 @@ Storage = { LastSeal = 10087, LastSealDoor = 10088, BansheeDoor = 10089, - FinalBattle = 10090 + FinalBattle = 10090, }, }, U7_24 = { -- update 7.24 - Reserved Storages 40201 - 40350 FamilyBrooch = { - Brooch = 9000 + Brooch = 9000, }, GiantSmithhammer = { QuestLine = 10091, Talon = 10092, Hammer = 10093, - GoldCoin = 10094 + GoldCoin = 10094, }, MadMageRoom = { QuestLine = 10095, APrisoner = 10096, StarAmulet = 10097, Hat = 10098, - StoneSkinAmulet = 10099 + StoneSkinAmulet = 10099, }, SkullOfRatha = { Bag1 = 10100, - Bag2 = 10101 + Bag2 = 10101, }, TheAnnihilator = { - Reward = 10102 + Reward = 10102, }, TheParadoxTower = { QuestLine = 10103, @@ -2023,8 +2023,8 @@ Storage = { Egg = 10108, Gold = 10109, Talon = 10110, - Wand = 10111 - } + Wand = 10111, + }, }, ThePostmanMissions = {}, TheWhiteRavenMonastery = {}, @@ -2112,7 +2112,7 @@ Storage = { SecretService = {}, StealFromThieves = {}, StrongPotions = { - Reward = 10043 + Reward = 10043, }, TheExterminator = {}, TheTravellingTrader = {}, @@ -2130,20 +2130,20 @@ Storage = { TheBeginning = {}, TheDemonOak = {}, FishForASerpent = { - QuestLine = 41651 + QuestLine = 41651, }, TheHuntForTheSeaSerpent = { QuestLine = 41652, SuccessSwitch = 41653, Bait = 41654, Direction = 41655, - Access = 41656 + Access = 41656, }, TheInquisition = {}, TheThievesGuild = {}, TrollSabotage = { Questline = 41840, - JumpTimer = 41841 + JumpTimer = 41841, }, VampireHunter = {}, }, @@ -2158,11 +2158,11 @@ Storage = { Lisander = 41906, Ortheus = 41907, Maris = 41908, - Armenius = 41909 + Armenius = 41909, }, Mission03 = 41910, Mission04 = 41911, - VengothAccess = 41912 + VengothAccess = 41912, }, InServiceOfYalahar = {}, TheHiddenCityOfBeregar = {}, @@ -2340,8 +2340,8 @@ Storage = { -- Cyclops CyclopsCount = 42500, CyclopsDroneCount = 42501, - CyclopsSmithCount = 42502 - } + CyclopsSmithCount = 42502, + }, }, LoneMedusa = {}, PilgrimageOfAshes = {}, @@ -2354,7 +2354,7 @@ Storage = { U8_54 = { -- update 8.54 - Reserved Storages 42551 - 42950 AnUneasyAlliance = { Questline = 42551, - QuestDoor = 42552 + QuestDoor = 42552, }, -- 42551 - 42600 ChildrenOfTheRevolution = {}, -- 42601 - 42650 SeaOfLight = {}, -- 42651 - 42700 @@ -2402,12 +2402,12 @@ Storage = { Reward = { Potions = 42726, GoldIngot = 42727, - PigBank = 42728 + PigBank = 42728, }, TomeofKnowledge = 42729, ZaoPalaceDoors = 42730, -- 10th Tome: Zao Palace SnakeHeadTeleport = 42731, -- 7th Tome: Snake Head Teleport - CorruptionHole = 42732 -- 8th Tome: Corruption Hole + CorruptionHole = 42732, -- 8th Tome: Corruption Hole }, TomesOfKnowledge = { OrcCamp = 42751, @@ -2421,7 +2421,7 @@ Storage = { Arena = 42759, CobraHead = 42760, OrcRaid = 42761, - ZaoPalace = 42762 + ZaoPalace = 42762, }, UnnaturalSelection = {}, -- 42781 - 42830 WarmasterOutfits = {}, -- 42831 - 42840 @@ -2547,11 +2547,11 @@ Storage = { MorrisGoblin = 20012, MorrisGoblinCount = 20013, MorrisMinos = 20014, - MorrisMinosCount = 20015 + MorrisMinosCount = 20015, }, SanctuaryOfTheLizardGod = { LizardGodTeleport = 20020, - LegionHelmet = 20021 + LegionHelmet = 20021, }, }, U10_70 = { -- update 10.70 - Reserved Storages 44801 - 44950 @@ -2614,7 +2614,7 @@ Storage = { Feathers2 = 45757, Feathers3 = 45758, Feathers4 = 45759, - Feathers5 = 45760 + Feathers5 = 45760, }, Mission02 = { 45761, -- Nightmare Intruders @@ -2647,7 +2647,7 @@ Storage = { StarlightPos02 = 45788, StarlightPos03 = 45789, StarlightPos04 = 45790, - StarlightPos05 = 45791 + StarlightPos05 = 45791, }, Mission03 = { 45792, -- An Unlikely Couple @@ -2655,12 +2655,12 @@ Storage = { PanpipesTimer = 45794, RavenHerbTimer = 45795, DarkSunCatcher = 45796, - EmptyStarlightVial = 45797 + EmptyStarlightVial = 45797, }, Mission04 = { 45798, }, - Mission05 = 45799 + Mission05 = 45799, }, }, U11_50 = { -- update 11.50 - Reserved Storages 45851 - 46000 @@ -2675,7 +2675,7 @@ Storage = { Rewards = { metalFile = 45977, keyFragment01 = 45978, - keyFragment02 = 45979 + keyFragment02 = 45979, }, CorymRescued01 = 45980, CorymRescued02 = 45981, @@ -2685,7 +2685,7 @@ Storage = { CorymRescued06 = 45985, CorymRescued07 = 45986, CorymRescued08 = 45987, - CorymRescueMission = 45988 + CorymRescueMission = 45988, }, MakeshiftWarriorOutfits = {}, }, @@ -2700,7 +2700,7 @@ Storage = { ThroneHall = 46283, Shortcut = 46284, LowerBastion = 46285, - UndergroundBastion = 46286 + UndergroundBastion = 46286, }, GhuloshTimer = 46015, GhuloshKilled = 46016, @@ -2712,7 +2712,7 @@ Storage = { MazzinorKilled = 46022, ScourgeOfOblivionDoor = 46023, ScourgeOfOblivionTimer = 46024, - ScourgeOfOblivionKilled = 46025 + ScourgeOfOblivionKilled = 46025, }, }, U12_00 = { -- update 12.00 - Reserved Storages 46301 - 46600 @@ -2732,7 +2732,7 @@ Storage = { AlptramunKilled = 46314, IzcandarKilled = 46315, NightmareBeastTimer = 46316, - NightmareBeastKilled = 46317 + NightmareBeastKilled = 46317, }, }, U12_02 = { -- update 12.02 - Reserved Storages 46601 - 46800 @@ -2757,7 +2757,7 @@ Storage = { Darashia = 46860, Thais = 46861, Orclands = 46862, - IceIslands = 46863 + IceIslands = 46863, }, Bosses = { BaelocNictrosTimer = 46865, @@ -2775,7 +2775,7 @@ Storage = { KingZelosKilled = 46877, InquisitionOutfitReceived = 46878, }, - Cobra = 46864 + Cobra = 46864, }, HandOfTheInquisitionOutfits = {}, -- Kilmaresh = {}, done earlier in the file @@ -2801,14 +2801,14 @@ Storage = { }, PoltergeistOutfits = { Received = 47020, - } + }, }, U12_40 = { -- update 12.40 - Reserved Storages 47201 - 47500 RevenantOutfits = {}, TheOrderOfTheLion = { QuestLine = 47401, AccessEastSide = 47402, - AccessSouthernSide = 47403 + AccessSouthernSide = 47403, }, SoulWar = { GoshnarMaliceTimer = 47210, @@ -2836,7 +2836,7 @@ Storage = { TentuglyTimer = 47515, RatmiralTimer = 47516, }, - RascoohanOutfits = {} + RascoohanOutfits = {}, }, U12_70 = { -- update 12.70 - Reserved Storages 47601 - 47800 AdventuresOfGalthen = { @@ -2847,10 +2847,10 @@ Storage = { RoyalBounaceanAdvisorOutfits = {}, TooHotToHandle = { BrainstealerTimer = 47611, - } + }, }, U12_80 = { -- update 12.80 - Reserved Storages 47801 - 47850 - RoyalCostumeOutfits = {} + RoyalCostumeOutfits = {}, }, U12_90 = { -- update 12.90 - Reserved Storages 47851 - 47900 PrimalOrdeal = { @@ -2868,7 +2868,7 @@ Storage = { }, WithinTheTides = { TimiraTimer = 47858, - } + }, }, U13_10 = { -- update 13.10 - Reserved Storages 47901 - 47951 CradleOfMonsters = { @@ -2879,8 +2879,8 @@ Storage = { Monster = 47904, MutatedAbomination = 47905, }, - } - } + }, + }, }, -- Reserved storage from 63951 - 63999 ThaisExhibition = { @@ -2910,7 +2910,7 @@ Storage = { PhoenixStatue = 63974, OrcsJawShredder = 63975, BagOfOrientalSpices = 63976, - TibiorasBox = 63977 + TibiorasBox = 63977, }, -- Reserved storage from 64000 - 64099 @@ -3011,18 +3011,18 @@ GlobalStorage = { Geodes = { WarzoneVI = 60001, WarzoneV = 60002, - WarzoneIV = 60003 - } + WarzoneIV = 60003, + }, }, TheirMastersVoice = { -- Reserved storage from 60010 - 60019 CurrentServantWave = 60010, - ServantsKilled = 60011 + ServantsKilled = 60011, }, Feroxa = { -- Reserved storage from 60020 - 60029 Chance = 60020, - Active = 60021 + Active = 60021, }, FerumbrasAscendant = { -- Reserved storage from 60030 - 60069 @@ -3038,7 +3038,7 @@ GlobalStorage = { Crystal6 = 60045, Crystal7 = 60046, Crystal8 = 60047, - AllCrystals = 60048 + AllCrystals = 60048, }, Habitats = { Roshamuul = 60050, @@ -3049,7 +3049,7 @@ GlobalStorage = { Ice = 60055, Corrupted = 60056, Dimension = 60057, - AllHabitats = 60058 + AllHabitats = 60058, }, Elements = { First = 60060, @@ -3057,8 +3057,8 @@ GlobalStorage = { Third = 60062, Four = 60063, Active = 60064, - Done = 60065 - } + Done = 60065, + }, }, HeroRathleton = { -- Reserved storage from 60070 - 60089 @@ -3085,13 +3085,13 @@ GlobalStorage = { GoldenServant = 60093, DiamondServant = 60094, AstralPowerCounter = 60095, - AstralGlyph = 60096 + AstralGlyph = 60096, }, InServiceOfYalahar = { -- Reserved storage from 60100 - 60109 LastFight = 60100, WarGolemsMachine1 = 60101, - WarGolemsMachine2 = 60102 + WarGolemsMachine2 = 60102, }, BigfootBurden = { -- Reserved storage from 60110 - 60119 @@ -3099,9 +3099,9 @@ GlobalStorage = { Weeper = 60111, Versperoth = { Battle = 60112, - Health = 60113 + Health = 60113, }, - Mouthpiece = 60114 + Mouthpiece = 60114, }, WrathOfTheEmperor = { -- Reserved storage from 60120 - 60139 @@ -3113,8 +3113,8 @@ GlobalStorage = { Fury = 60130, Wrath = 60131, Scorn = 60132, - Spite = 60133 - } + Spite = 60133, + }, }, ElementalSphere = { -- Reserved storage from 60140 - 60159 @@ -3126,13 +3126,13 @@ GlobalStorage = { Machine1 = 60145, Machine2 = 60146, Machine3 = 60147, - Machine4 = 60148 + Machine4 = 60148, }, TheAncientTombs = { -- Reserved storage from 60160 - 60169 ThalasSwitchesGlobalStorage = 60160, DiprathSwitchesGlobalStorage = 60161, - AshmunrahSwitchesGlobalStorage = 60162 + AshmunrahSwitchesGlobalStorage = 60162, }, FuryGates = 65000, Yakchal = 65001, @@ -3183,7 +3183,7 @@ startupGlobalStorages = { GlobalStorage.FerumbrasAscendant.Elements.First, GlobalStorage.FerumbrasAscendant.Elements.Second, GlobalStorage.FerumbrasAscendant.Elements.Third, - GlobalStorage.FerumbrasAscendant.Elements.Done + GlobalStorage.FerumbrasAscendant.Elements.Done, } -- Values extraction function @@ -3207,8 +3207,7 @@ table.sort(extraction) -- Sort the table if #extraction > 1 then for i = 1, #extraction - 1 do if extraction[i] == extraction[i + 1] then - logger.warn("Duplicate storage value found: {}", - extraction[i]) + logger.warn("Duplicate storage value found: {}", extraction[i]) end end end diff --git a/data-otservbr-global/lib/lib.lua b/data-otservbr-global/lib/lib.lua index 12e082714e7..012cf2cdc2b 100644 --- a/data-otservbr-global/lib/lib.lua +++ b/data-otservbr-global/lib/lib.lua @@ -1,18 +1,18 @@ -- Core API functions implemented in Lua -- Load storages first -dofile(DATA_DIRECTORY .. '/lib/core/load.lua') +dofile(DATA_DIRECTORY .. "/lib/core/load.lua") -- Compatibility library for our old Lua API -dofile(DATA_DIRECTORY .. '/lib/compat/compat.lua') +dofile(DATA_DIRECTORY .. "/lib/compat/compat.lua") -- Tables library -dofile(DATA_DIRECTORY .. '/lib/tables/load.lua') +dofile(DATA_DIRECTORY .. "/lib/tables/load.lua") -- Others library -dofile(DATA_DIRECTORY .. '/lib/others/load.lua') +dofile(DATA_DIRECTORY .. "/lib/others/load.lua") -- Quests library -dofile(DATA_DIRECTORY .. '/lib/quests/quest.lua') +dofile(DATA_DIRECTORY .. "/lib/quests/quest.lua") -- Vip System library -dofile(DATA_DIRECTORY .. '/lib/vip/vip_system.lua') +dofile(DATA_DIRECTORY .. "/lib/vip/vip_system.lua") diff --git a/data-otservbr-global/lib/others/dawnport_lib.lua b/data-otservbr-global/lib/others/dawnport_lib.lua index 869a268ba6a..0d63265b192 100644 --- a/data-otservbr-global/lib/others/dawnport_lib.lua +++ b/data-otservbr-global/lib/others/dawnport_lib.lua @@ -4,18 +4,18 @@ Dawnport = { skillsLimit = { [VOCATION.ID.NONE] = {}, [VOCATION.ID.SORCERER] = { - [SKILL_MAGLEVEL] = 20 + [SKILL_MAGLEVEL] = 20, }, [VOCATION.ID.DRUID] = { - [SKILL_MAGLEVEL] = 20 + [SKILL_MAGLEVEL] = 20, }, [VOCATION.ID.PALADIN] = { - [SKILL_MAGLEVEL] = 9 + [SKILL_MAGLEVEL] = 9, }, [VOCATION.ID.KNIGHT] = { - [SKILL_MAGLEVEL] = 4 - } - } + [SKILL_MAGLEVEL] = 4, + }, + }, } -- Change player vocation, converts magic level and skills between vocations and set proper stats @@ -37,7 +37,7 @@ function Player.changeVocation(self, newVocationId) { id = SKILL_SWORD }, { id = SKILL_AXE }, { id = SKILL_DISTANCE }, - { id = SKILL_SHIELD } + { id = SKILL_SHIELD }, } -- Get current vocation skills levels and skills tries for i = 1, #skills do @@ -56,7 +56,7 @@ function Player.changeVocation(self, newVocationId) local reqManaSpent = self:getVocation():getRequiredManaSpent(newMagicLevel + 1) while magic.manaSpent >= reqManaSpent do magic.manaSpent = magic.manaSpent - reqManaSpent - newMagicLevel = newMagicLevel + 1; + newMagicLevel = newMagicLevel + 1 reqManaSpent = self:getVocation():getRequiredManaSpent(newMagicLevel + 1) end end @@ -74,7 +74,7 @@ function Player.changeVocation(self, newVocationId) local reqSkillTries = self:getVocation():getRequiredSkillTries(skills[i].id, (newSkillLevel + 1)) while skills[i].tries >= reqSkillTries do skills[i].tries = skills[i].tries - reqSkillTries - newSkillLevel = newSkillLevel + 1; + newSkillLevel = newSkillLevel + 1 reqSkillTries = self:getVocation():getRequiredSkillTries(skills[i].id, (newSkillLevel + 1)) end end @@ -100,12 +100,9 @@ function Player.changeVocation(self, newVocationId) local baseLevel = 7 local baseVocation = Vocation(VOCATION.ID.NONE) local level = self:getLevel() - 8 - stats.health = stats.health - + (baseLevel * baseVocation:getHealthGain()) + (level * self:getVocation():getHealthGain()) - stats.mana = stats.mana - + (baseLevel * baseVocation:getManaGain()) + (level * self:getVocation():getManaGain()) - stats.capacity = stats.capacity - + (baseLevel * baseVocation:getCapacityGain()) + (level * self:getVocation():getCapacityGain()) + stats.health = stats.health + (baseLevel * baseVocation:getHealthGain()) + (level * self:getVocation():getHealthGain()) + stats.mana = stats.mana + (baseLevel * baseVocation:getManaGain()) + (level * self:getVocation():getManaGain()) + stats.capacity = stats.capacity + (baseLevel * baseVocation:getCapacityGain()) + (level * self:getVocation():getCapacityGain()) end self:setMaxHealth(stats.health) self:addHealth(stats.health) @@ -161,7 +158,7 @@ function removeMainlandSmugglingItems(player) 268, -- Mana potion 7876, -- Small health potion 21352, -- Lightest missile rune - 21351 -- Light stone shower rune + 21351, -- Light stone shower rune } for i = 1, #smugglingItemIds do local smugglingItemAmount = player:getItemCount(smugglingItemIds[i]) diff --git a/data-otservbr-global/lib/others/load.lua b/data-otservbr-global/lib/others/load.lua index d3d823b1468..82414197a47 100644 --- a/data-otservbr-global/lib/others/load.lua +++ b/data-otservbr-global/lib/others/load.lua @@ -1,2 +1,2 @@ -dofile(DATA_DIRECTORY .. '/lib/others/dawnport_lib.lua') -dofile(DATA_DIRECTORY .. '/lib/others/bath_tube.lua') +dofile(DATA_DIRECTORY .. "/lib/others/dawnport_lib.lua") +dofile(DATA_DIRECTORY .. "/lib/others/bath_tube.lua") diff --git a/data-otservbr-global/lib/quests/bigfoot_burden.lua b/data-otservbr-global/lib/quests/bigfoot_burden.lua index 93609469bd8..05c303de1be 100644 --- a/data-otservbr-global/lib/quests/bigfoot_burden.lua +++ b/data-otservbr-global/lib/quests/bigfoot_burden.lua @@ -2,18 +2,24 @@ if not warzoneConfig then warzoneConfig = { [45700] = { center = Position(33110, 31965, 10), - maxRangeX = 12, minRangeX = 26, minRangeY = 15, maxRangeY = 17, + maxRangeX = 12, + minRangeX = 26, + minRangeY = 15, + maxRangeY = 17, bossResp = Position(33102, 31956, 10), boss = "Deathstrike", teleportTo = Position(33096, 31955, 10), locked = false, storage = Storage.BigfootBurden.BossWarzone1, interval = configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN), - exit = Position(33001, 31900, 9) + exit = Position(33001, 31900, 9), }, [45701] = { center = Position(33117, 31956, 11), - maxRangeX = 14, minRangeX = 14, minRangeY = 14, maxRangeY = 14, + maxRangeX = 14, + minRangeX = 14, + minRangeY = 14, + maxRangeY = 14, bossResp = Position(33116, 31956, 11), boss = "Gnomevil", teleportTo = Position(33106, 31955, 11), @@ -21,19 +27,22 @@ if not warzoneConfig then storage = Storage.BigfootBurden.BossWarzone2, interval = configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN), exit = Position(33001, 31900, 9), - wall = 16169 --Id of current crystais in warzone 2 (open killing parasite) + wall = 16169, --Id of current crystais in warzone 2 (open killing parasite) }, [45702] = { center = Position(33090, 31910, 12), - maxRangeX = 12, minRangeX = 12, minRangeY = 12, maxRangeY = 12, + maxRangeX = 12, + minRangeX = 12, + minRangeY = 12, + maxRangeY = 12, bossResp = Position(33088, 31910, 12), boss = "Abyssador", teleportTo = Position(33083, 31904, 12), --Place where the player will be teleported inside the room locked = false, storage = Storage.BigfootBurden.BossWarzone3, interval = configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN), - exit = Position(33001, 31900, 9) - } + exit = Position(33001, 31900, 9), + }, } warzoneConfig.spawnBoss = function(name, pos) @@ -41,12 +50,12 @@ if not warzoneConfig then if boss then local c = warzoneConfig.findByName(name) c.locked = true - boss:registerEvent('BossWarzoneDeath') + boss:registerEvent("BossWarzoneDeath") end end warzoneConfig.findByName = function(name, last) local i, v = next(warzoneConfig, last) - if type(v) == 'table' and v.boss == name then + if type(v) == "table" and v.boss == name then return v elseif not i then return nil @@ -59,8 +68,7 @@ if not warzoneConfig then roomwarzone.locked = false end - local spectators = Game.getSpectators(roomwarzone.center, false, false, - roomwarzone.minRangeX, roomwarzone.maxRangeX, roomwarzone.minRangeY, roomwarzone.maxRangeY) + local spectators = Game.getSpectators(roomwarzone.center, false, false, roomwarzone.minRangeX, roomwarzone.maxRangeX, roomwarzone.minRangeY, roomwarzone.maxRangeY) for i = 1, #spectators do if spectators[i]:isPlayer() then spectators[i]:teleportTo(roomwarzone.exit) diff --git a/data-otservbr-global/lib/quests/grimvale.lua b/data-otservbr-global/lib/quests/grimvale.lua index b46910256d3..ba2f5842feb 100644 --- a/data-otservbr-global/lib/quests/grimvale.lua +++ b/data-otservbr-global/lib/quests/grimvale.lua @@ -1,7 +1,7 @@ local oldpos = {} local config = { - position = { fromPosition = Position(33415, 31522, 11), toPosition = Position(33445, 31554, 11) } + position = { fromPosition = Position(33415, 31522, 11), toPosition = Position(33445, 31554, 11) }, } local function teleportPlayer(playerId, pos) @@ -12,7 +12,7 @@ local function teleportPlayer(playerId, pos) end local function loadMap() - Game.loadMap(DATA_DIRECTORY .. '/world/world_changes/full_moon/final.otbm') + Game.loadMap(DATA_DIRECTORY .. "/world/world_changes/full_moon/final.otbm") end local function removeFeroxa(feroxa) @@ -20,7 +20,7 @@ local function removeFeroxa(feroxa) return true end - feroxa = Game.createMonster('Feroxa', Position(33380, 31537, 11), true, true) + feroxa = Game.createMonster("Feroxa", Position(33380, 31537, 11), true, true) if feroxa then addEvent(removeFeroxa, 5 * 60 * 1000, feroxa:getId()) end @@ -41,9 +41,9 @@ local function final() teleport:setActionId(12450) end if spec then - spec:say('You are the contenders. This is your only chance to break the Curse of The Full Moon. Make it count!', TALKTYPE_MONSTER_SAY, false, nil, Position(33419, 31539, 10)) + spec:say("You are the contenders. This is your only chance to break the Curse of The Full Moon. Make it count!", TALKTYPE_MONSTER_SAY, false, nil, Position(33419, 31539, 10)) end - local feroxa = Game.createMonster('Feroxa', Position(33380, 31537, 11), true, true) + local feroxa = Game.createMonster("Feroxa", Position(33380, 31537, 11), true, true) addEvent(removeFeroxa, 5 * 60 * 1000, feroxa:getId()) end @@ -82,12 +82,12 @@ function grimvaleSpectators() if Game.getStorageValue(GlobalStorage.Feroxa.Active) == 2 then addEvent(removeItems, 15 * 60 * 1000) addEvent(loadMap, 15 * 60 * 1000) - addEvent(Game.broadcastMessage, 15 * 60 * 1000, 'The full moon is completely exposed: Feroxa awaits!', MESSAGE_EVENT_ADVANCE) + addEvent(Game.broadcastMessage, 15 * 60 * 1000, "The full moon is completely exposed: Feroxa awaits!", MESSAGE_EVENT_ADVANCE) addEvent(final, 30 * 60 * 1000) Game.setStorageValue(GlobalStorage.Feroxa.Active, 3) return true end Game.setStorageValue(GlobalStorage.Feroxa.Active, 2) addEvent(grimvaleSpectators, 15 * 60 * 1000) - addEvent(Game.broadcastMessage, 15 * 60 * 1000, 'Half of the current full moon is visible now, there are still a lot of clouds in front of it.', MESSAGE_EVENT_ADVANCE) + addEvent(Game.broadcastMessage, 15 * 60 * 1000, "Half of the current full moon is visible now, there are still a lot of clouds in front of it.", MESSAGE_EVENT_ADVANCE) end diff --git a/data-otservbr-global/lib/quests/killing_in_the_name_of.lua b/data-otservbr-global/lib/quests/killing_in_the_name_of.lua index 6f892abacbe..154bf6d428d 100644 --- a/data-otservbr-global/lib/quests/killing_in_the_name_of.lua +++ b/data-otservbr-global/lib/quests/killing_in_the_name_of.lua @@ -24,49 +24,52 @@ JOIN_STOR = 100157 KILLSSTORAGE_BASE = 65000 REPEATSTORAGE_BASE = 48950 POINTSSTORAGE = 2500 -tasks = -{ - Extra = - { +tasks = { + Extra = { [1] = { killsRequired = 20, raceName = "Mountain Trolls", - level = { 1, 9999 }, storage = { 12701, 1 }, norepeatable = true, + level = { 1, 9999 }, + storage = { 12701, 1 }, + norepeatable = true, premium = false, creatures = { - "mountain trolls" + "mountain trolls", }, rewards = { - { type = "storage", value = { 17524, 1 } } - } + { type = "storage", value = { 17524, 1 } }, + }, }, [2] = { killsRequired = 20, raceName = "Muglex Clan Footman", - level = { 1, 9999 }, storage = { 12702, 1 }, norepeatable = true, + level = { 1, 9999 }, + storage = { 12702, 1 }, + norepeatable = true, premium = false, creatures = { - "muglex clan footman " + "muglex clan footman ", }, rewards = { - { type = "storage", value = { 17525, 1 } } - } + { type = "storage", value = { 17525, 1 } }, + }, }, [3] = { killsRequired = 20, raceName = "Minotaur Bruisers", - level = { 1, 9999 }, storage = { 12703, 1 }, norepeatable = true, + level = { 1, 9999 }, + storage = { 12703, 1 }, + norepeatable = true, premium = false, creatures = { - "minotaur bruisers" + "minotaur bruisers", }, rewards = { - { type = "storage", value = { 17526, 1 } } - } - } + { type = "storage", value = { 17526, 1 } }, + }, + }, }, - DanielSteelsoul = - { + DanielSteelsoul = { [1] = { killsRequired = 100, raceName = "Trolls", @@ -74,12 +77,12 @@ tasks = premium = true, creatures = { "troll", - "troll champion" + "troll champion", }, rewards = { { type = "exp", value = { 200 } }, - { type = "money", value = { 200 } } - } + { type = "money", value = { 200 } }, + }, }, [2] = { killsRequired = 150, @@ -89,12 +92,12 @@ tasks = creatures = { "goblin", "goblin scavenger", - "goblin assassin" + "goblin assassin", }, rewards = { { type = "exp", value = { 300 } }, - { type = "money", value = { 250 } } - } + { type = "money", value = { 250 } }, + }, }, [3] = { killsRequired = 300, @@ -103,12 +106,12 @@ tasks = premium = true, creatures = { "rotworm", - "carrion worm" + "carrion worm", }, rewards = { { type = "exp", value = { 1000 } }, - { type = "money", value = { 400 } } - } + { type = "money", value = { 400 } }, + }, }, [4] = { killsRequired = 500, @@ -118,16 +121,15 @@ tasks = creatures = { "cyclops", "cyclops drone", - "cyclops smith" + "cyclops smith", }, rewards = { { type = "exp", value = { 3000 } }, - { type = "money", value = { 800 } } - } + { type = "money", value = { 800 } }, + }, }, }, - Gabel = - { + Gabel = { [1] = { killsRequired = 500, raceName = "Green Djinns or Efreets", @@ -135,16 +137,15 @@ tasks = premium = true, creatures = { "green djinn", - "efreet" + "efreet", }, rewards = { { type = "exp", value = { 10000 } }, - { type = "money", value = { 5000 } } - } - } + { type = "money", value = { 5000 } }, + }, + }, }, - Malor = - { + Malor = { [1] = { killsRequired = 500, raceName = "Blue Djinns or Marids", @@ -152,16 +153,15 @@ tasks = premium = true, creatures = { "blue djinn", - "marid" + "marid", }, rewards = { { type = "exp", value = { 10000 } }, - { type = "money", value = { 5000 } } - } - } + { type = "money", value = { 5000 } }, + }, + }, }, - RaymondStriker = - { + RaymondStriker = { [1] = { killsRequired = 3000, raceName = "Pirates", @@ -171,47 +171,46 @@ tasks = "pirate marauder", "pirate cutthroat", "pirate buccaneer", - "pirate corsair" + "pirate corsair", }, rewards = { { type = "exp", value = { 10000 } }, - { type = "money", value = { 5000 } } - } - } + { type = "money", value = { 5000 } }, + }, + }, }, - Budrik = - { + Budrik = { [1] = { killsRequired = 5000, raceName = "Minotaurs", - level = { 1, 40 }, norepeatable = true, + level = { 1, 40 }, + norepeatable = true, premium = false, creatures = { "minotaur", "minotaur guard", "minotaur mage", - "minotaur archer" - } - } + "minotaur archer", + }, + }, }, - Lugri = - { + Lugri = { [1] = { killsRequired = 4000, raceName = "Necromancers and Priestesses", - level = { 60, 9999 }, norepeatable = true, + level = { 60, 9999 }, + norepeatable = true, premium = true, creatures = { "necromancer", "priestess", "blood priest", "blood hand", - "shadow pupil" - } - } + "shadow pupil", + }, + }, }, - GrizzlyAdams = - { + GrizzlyAdams = { [1] = { killsRequired = 300, raceName = "Crocodiles", @@ -220,14 +219,14 @@ tasks = bossId = 1, premium = true, creatures = { - "crocodile" + "crocodile", }, rewards = { { type = "exp", value = { 800 } }, { type = "achievement", value = { "Blood-Red Snapper" } }, { type = "storage", value = { 34100, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.SnapperCount, 1, 0 } }, -- bossTP, bossCount, startValueTP, startValueCount - { type = "points", value = { 1 } } - } + { type = "points", value = { 1 } }, + }, }, [2] = { killsRequired = 300, @@ -235,12 +234,12 @@ tasks = level = { 6, 49 }, premium = true, creatures = { - "badger" + "badger", }, rewards = { { type = "exp", value = { 500 } }, - { type = "points", value = { 1 } } - } + { type = "points", value = { 1 } }, + }, }, [3] = { killsRequired = 300, @@ -250,14 +249,14 @@ tasks = bossId = 2, premium = true, creatures = { - "tarantula" + "tarantula", }, rewards = { { type = "exp", value = { 1500 } }, { type = "achievement", value = { "No More Hiding" } }, { type = "storage", value = { 34101, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.HideCount, 1, 0 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [4] = { killsRequired = 150, @@ -267,14 +266,14 @@ tasks = bossId = 3, premium = true, creatures = { - "carniphila" + "carniphila", }, rewards = { { type = "exp", value = { 2500 } }, { type = "achievement", value = { "Rootless Behaviour" } }, { type = "storage", value = { 34102, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.DeathbineCount, 1, 0 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [5] = { killsRequired = 200, @@ -282,12 +281,12 @@ tasks = level = { 6, 49 }, premium = true, creatures = { - "stone golem" + "stone golem", }, rewards = { { type = "exp", value = { 2000 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [6] = { killsRequired = 300, @@ -297,14 +296,14 @@ tasks = bossId = 4, premium = true, creatures = { - "mammoth" + "mammoth", }, rewards = { { type = "exp", value = { 4000 } }, { type = "achievement", value = { "Meat Skewer" } }, { type = "storage", value = { 34103, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.BloodtuskCount, 1, 0 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [7] = { killsRequired = 300, @@ -312,12 +311,12 @@ tasks = level = { 6, 49 }, premium = true, creatures = { - "gnarlhound" + "gnarlhound", }, rewards = { { type = "exp", value = { 1000 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [8] = { killsRequired = 300, @@ -325,12 +324,12 @@ tasks = level = { 6, 49 }, premium = true, creatures = { - "terramite" + "terramite", }, rewards = { { type = "exp", value = { 1000 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [9] = { killsRequired = 300, @@ -340,12 +339,12 @@ tasks = creatures = { "kongra", "merlkin", - "sibang" + "sibang", }, rewards = { { type = "exp", value = { 1000 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [10] = { killsRequired = 300, @@ -353,12 +352,12 @@ tasks = level = { 6, 49 }, premium = true, creatures = { - "thornback tortoise" + "thornback tortoise", }, rewards = { { type = "exp", value = { 1500 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [11] = { killsRequired = 300, @@ -366,11 +365,11 @@ tasks = level = { 6, 49 }, premium = true, creatures = { - "gargoyle" + "gargoyle", }, rewards = { - { type = "exp", value = { 1500 } } - } + { type = "exp", value = { 1500 } }, + }, }, [12] = { killsRequired = 300, @@ -380,14 +379,14 @@ tasks = bossId = 5, premium = true, creatures = { - "ice golem" + "ice golem", }, rewards = { { type = "exp", value = { 12000 } }, { type = "achievement", value = { "Breaking The Ice" } }, { type = "storage", value = { 34104, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.ShardheadCount, 1, 0 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [13] = { killsRequired = 400, @@ -399,12 +398,12 @@ tasks = "quara hydromancer scout", "quara mantassin scout", "quara pincher scout", - "quara predator scout" + "quara predator scout", }, rewards = { { type = "exp", value = { 10000 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [14] = { killsRequired = 400, @@ -414,14 +413,14 @@ tasks = bossId = 6, premium = true, creatures = { - "mutated rat" + "mutated rat", }, rewards = { { type = "exp", value = { 10000 } }, { type = "achievement", value = { "Twisted Mutation" } }, { type = "storage", value = { 34105, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.EsmeraldaCount, 1, 0 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [15] = { killsRequired = 250, @@ -431,14 +430,14 @@ tasks = bossId = 7, premium = true, creatures = { - "ancient scarab" + "ancient scarab", }, rewards = { { type = "exp", value = { 15000 } }, { type = "achievement", value = { "Crawling Death" } }, { type = "storage", value = { 34106, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.FleshcrawlerCount, 1, 0 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [16] = { killsRequired = 300, @@ -446,12 +445,12 @@ tasks = level = { 50, 79 }, premium = true, creatures = { - "wyvern" + "wyvern", }, rewards = { { type = "exp", value = { 12000 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [17] = { killsRequired = 300, @@ -459,12 +458,12 @@ tasks = level = { 50, 79 }, premium = true, creatures = { - "lancer beetle" + "lancer beetle", }, rewards = { { type = "exp", value = { 8000 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [18] = { killsRequired = 400, @@ -472,12 +471,12 @@ tasks = level = { 50, 79 }, premium = true, creatures = { - "wailing widow" + "wailing widow", }, rewards = { { type = "exp", value = { 12000 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [19] = { killsRequired = 250, @@ -485,12 +484,12 @@ tasks = level = { 50, 79 }, premium = true, creatures = { - "killer caiman" + "killer caiman", }, rewards = { { type = "exp", value = { 10000 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [20] = { killsRequired = 300, @@ -500,14 +499,14 @@ tasks = bossId = 8, premium = true, creatures = { - "bonebeast" + "bonebeast", }, rewards = { { type = "exp", value = { 12000 } }, { type = "achievement", value = { "Spareribs for Dinner" } }, { type = "storage", value = { 34107, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.RibstrideCount, 1, 0 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [21] = { killsRequired = 300, @@ -516,15 +515,15 @@ tasks = level = { 50, 79 }, bossId = 9, creatures = { - "crystal spider" + "crystal spider", }, premium = true, rewards = { { type = "exp", value = { 15000 } }, { type = "achievement", value = { "Arachnoise" } }, { type = "storage", value = { 34108, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.BloodwebCount, 1, 0 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [22] = { killsRequired = 300, @@ -532,12 +531,12 @@ tasks = level = { 50, 79 }, premium = true, creatures = { - "mutated tiger" + "mutated tiger", }, rewards = { { type = "exp", value = { 12000 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [23] = { killsRequired = 600, @@ -551,14 +550,14 @@ tasks = "quara hydromancer", "quara mantassin", "quara pincher", - "quara predator" + "quara predator", }, rewards = { { type = "exp", value = { 15000 } }, { type = "achievement", value = { "Back into the Abyss" } }, { type = "storage", value = { 34109, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.ThulCount, 1, 0 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [24] = { killsRequired = 500, @@ -568,14 +567,14 @@ tasks = bossId = 11, premium = true, creatures = { - "giant spider" + "giant spider", }, rewards = { { type = "exp", value = { 20000 } }, { type = "achievement", value = { "Choking on Her Venom" } }, { type = "storage", value = { 34110, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.WidowCount, 1, 0 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [25] = { killsRequired = 300, @@ -585,14 +584,14 @@ tasks = bossId = 12, premium = true, creatures = { - "werewolf" + "werewolf", }, rewards = { { type = "exp", value = { 30000 } }, { type = "achievement", value = { "Howly Silence" } }, { type = "storage", value = { 34111, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.HemmingCount, 1, 0 } }, - { type = "points", value = { 4 } } - } + { type = "points", value = { 4 } }, + }, }, [26] = { killsRequired = 400, @@ -603,14 +602,14 @@ tasks = premium = true, creatures = { "nightmare", - "nightmare scion" + "nightmare scion", }, rewards = { { type = "exp", value = { 25000 } }, { type = "achievement", value = { "Dream's Over" } }, { type = "storage", value = { 34112, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.TormentorCount, 1, 0 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [27] = { killsRequired = 600, @@ -620,13 +619,13 @@ tasks = bossId = 14, premium = true, creatures = { - "hellspawn" + "hellspawn", }, rewards = { { type = "exp", value = { 25000 } }, { type = "achievement", value = { "Scorched Flames" } }, { type = "storage", value = { 34113, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.FlamebornCount, 1, 0 } }, - } + }, }, [28] = { killsRequired = 800, @@ -640,14 +639,14 @@ tasks = "lizard dragon priest", "lizard high guard", "lizard legionnaire", - "lizard zaogun" + "lizard zaogun", }, rewards = { { type = "exp", value = { 30000 } }, { type = "achievement", value = { "Zzztill Zzztanding!" } }, { type = "storage", value = { 34114, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.FazzrahCount, 1, 0 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [29] = { killsRequired = 600, @@ -657,14 +656,14 @@ tasks = bossId = 16, premium = true, creatures = { - "stampor" + "stampor", }, rewards = { { type = "exp", value = { 20000 } }, { type = "achievement", value = { "Stepped on a Big Toe" } }, { type = "storage", value = { 34115, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.TromphonyteCount, 1, 0 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [30] = { killsRequired = 500, @@ -674,14 +673,14 @@ tasks = bossId = 17, premium = true, creatures = { - "brimstone bug" + "brimstone bug", }, rewards = { { type = "exp", value = { 15000 } }, { type = "achievement", value = { "Something Smells" } }, { type = "storage", value = { 34116, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.ScuttlerCount, 1, 0 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [31] = { killsRequired = 400, @@ -691,14 +690,14 @@ tasks = bossId = 18, premium = true, creatures = { - "mutated bat" + "mutated bat", }, rewards = { { type = "exp", value = { 20000 } }, { type = "achievement", value = { "Kapow!" } }, { type = "storage", value = { 34117, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.PayneCount, 1, 0 } }, - { type = "points", value = { 2 } } - } + { type = "points", value = { 2 } }, + }, }, [32] = { killsRequired = 650, @@ -709,14 +708,14 @@ tasks = repeatable = true, premium = true, creatures = { - "hydra" + "hydra", }, rewards = { { type = "exp", value = { 30000 } }, { type = "achievement", value = { "One Less" } }, { type = "storage", value = { 34118, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.ManyCount, 1, 0 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [33] = { killsRequired = 800, @@ -727,14 +726,14 @@ tasks = repeatable = true, premium = true, creatures = { - "serpent spawn" + "serpent spawn", }, rewards = { { type = "exp", value = { 30000 } }, { type = "achievement", value = { "Hissing Downfall" } }, { type = "storage", value = { 34119, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.NoxiousCount, 1, 0 } }, - { type = "points", value = { 4 } } - } + { type = "points", value = { 4 } }, + }, }, [34] = { killsRequired = 500, @@ -745,14 +744,14 @@ tasks = repeatable = true, premium = true, creatures = { - "medusa" + "medusa", }, rewards = { { type = "exp", value = { 40000 } }, { type = "achievement", value = { "The Serpent's Bride" } }, { type = "storage", value = { 34120, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.GorgoCount, 1, 0 } }, - { type = "points", value = { 5 } } - } + { type = "points", value = { 5 } }, + }, }, [35] = { killsRequired = 700, @@ -763,14 +762,14 @@ tasks = repeatable = true, premium = true, creatures = { - "behemoth" + "behemoth", }, rewards = { { type = "exp", value = { 30000 } }, { type = "achievement", value = { "Just Cracked Me Up!" } }, { type = "storage", value = { 34121, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.StonecrackerCount, 1, 0 } }, - { type = "points", value = { 4 } } - } + { type = "points", value = { 4 } }, + }, }, [36] = { killsRequired = 900, @@ -782,14 +781,14 @@ tasks = premium = true, creatures = { "sea serpent", - "young sea serpent" + "young sea serpent", }, rewards = { { type = "exp", value = { 30000 } }, { type = "achievement", value = { "The Drowned Sea God" } }, { type = "storage", value = { 34122, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.LeviathanCount, 1, 0 } }, - { type = "points", value = { 4 } } - } + { type = "points", value = { 4 } }, + }, }, [37] = { killsRequired = 250, @@ -800,14 +799,14 @@ tasks = repeatable = true, premium = true, creatures = { - "hellhound" + "hellhound", }, rewards = { { type = "exp", value = { 40000 } }, { type = "achievement", value = { "The Gates of Hell" } }, { type = "storage", value = { 34123, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.KerberosCount, 1, 0 } }, - { type = "points", value = { 5 } } - } + { type = "points", value = { 5 } }, + }, }, [38] = { killsRequired = 500, @@ -818,14 +817,14 @@ tasks = repeatable = true, premium = true, creatures = { - "ghastly dragon" + "ghastly dragon", }, rewards = { { type = "exp", value = { 30000 } }, { type = "achievement", value = { "Beautiful Agony" } }, { type = "storage", value = { 34124, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.EthershreckCount, 1, 0 } }, - { type = "points", value = { 5 } } - } + { type = "points", value = { 5 } }, + }, }, [39] = { killsRequired = 900, @@ -839,14 +838,14 @@ tasks = "draken abomination", "draken elite", "draken spellweaver", - "draken warmaster" + "draken warmaster", }, rewards = { { type = "exp", value = { 30000 } }, { type = "achievement", value = { "Enter zze Draken!" } }, { type = "storage", value = { 34125, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.PauperizerCount, 1, 0 } }, - { type = "points", value = { 3 } } - } + { type = "points", value = { 3 } }, + }, }, [40] = { killsRequired = 650, @@ -857,14 +856,14 @@ tasks = repeatable = true, premium = true, creatures = { - "destroyer" + "destroyer", }, rewards = { { type = "exp", value = { 30000 } }, { type = "achievement", value = { "King of the Ring" } }, { type = "storage", value = { 34126, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.BretzecutionerCount, 1, 0 } }, - { type = "points", value = { 4 } } - } + { type = "points", value = { 4 } }, + }, }, [41] = { killsRequired = 400, @@ -875,42 +874,38 @@ tasks = repeatable = true, premium = true, creatures = { - "undead dragon" + "undead dragon", }, rewards = { { type = "exp", value = { 50000 } }, { type = "achievement", value = { "Back from the Dead" } }, { type = "storage", value = { 34127, Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.ZanakephCount, 1, 0 } }, - { type = "points", value = { 6 } } - } + { type = "points", value = { 6 } }, + }, }, [42] = { killsRequired = 6666, raceName = "Demons", - level = { 130, 9999 }, rank = RANK_ELITEHUNTER, norepeatable = true, + level = { 130, 9999 }, + rank = RANK_ELITEHUNTER, + norepeatable = true, premium = true, creatures = { - "demon" + "demon", }, rewards = { { type = "item", value = { 9388, 1 } }, - { type = "storage", value = { 41300, 1 } } - } - } - } + { type = "storage", value = { 41300, 1 } }, + }, + }, + }, } tasksByPlayer = 3 repeatTimes = 3 function Player.getPawAndFurRank(self) - return (self:getStorageValue(POINTSSTORAGE) >= 100 - and RANK_ELITEHUNTER or self:getStorageValue(POINTSSTORAGE) >= 70 - and RANK_TROPHYHUNTER or self:getStorageValue(POINTSSTORAGE) >= 40 - and RANK_BIGGAMEHUNTER or self:getStorageValue(POINTSSTORAGE) >= 20 - and RANK_RANGER or self:getStorageValue(POINTSSTORAGE) >= 10 - and RANK_HUNTSMAN or self:getStorageValue(JOIN_STOR) == 1 - and RANK_JOIN or RANK_NONE) + return (self:getStorageValue(POINTSSTORAGE) >= 100 and RANK_ELITEHUNTER or self:getStorageValue(POINTSSTORAGE) >= 70 and RANK_TROPHYHUNTER or self:getStorageValue(POINTSSTORAGE) >= 40 and RANK_BIGGAMEHUNTER or self:getStorageValue(POINTSSTORAGE) >= 20 and RANK_RANGER or self:getStorageValue(POINTSSTORAGE) >= 10 and RANK_HUNTSMAN or self:getStorageValue(JOIN_STOR) == 1 and RANK_JOIN or RANK_NONE) end function Player.getPawAndFurPoints(self) @@ -959,7 +954,7 @@ function Player.getTasks(self) end if able[k] then - canmake[#canmake+1] = k + canmake[#canmake + 1] = k end end end @@ -1024,7 +1019,7 @@ function Player.getStartedTasks(self) local tmp = {} for k, v in ipairs(tasks.GrizzlyAdams) do if self:getStorageValue(QUESTSTORAGE_BASE + k) > 0 and self:getStorageValue(QUESTSTORAGE_BASE + k) < 2 then - tmp[#tmp+1] = k + tmp[#tmp + 1] = k end end return tmp diff --git a/data-otservbr-global/lib/quests/quest.lua b/data-otservbr-global/lib/quests/quest.lua index fd7a835ec40..3919c962ffd 100644 --- a/data-otservbr-global/lib/quests/quest.lua +++ b/data-otservbr-global/lib/quests/quest.lua @@ -1,8 +1,8 @@ -dofile(DATA_DIRECTORY .. '/lib/quests/bigfoot_burden.lua') -dofile(DATA_DIRECTORY .. '/lib/quests/demon_oak.lua') -dofile(DATA_DIRECTORY .. '/lib/quests/grimvale.lua') -dofile(DATA_DIRECTORY .. '/lib/quests/killing_in_the_name_of.lua') -dofile(DATA_DIRECTORY .. '/lib/quests/svargrond_arena.lua') -dofile(DATA_DIRECTORY .. '/lib/quests/the_cursed_crystal.lua') -dofile(DATA_DIRECTORY .. '/lib/quests/the_queen_of_the_banshees.lua') -dofile(DATA_DIRECTORY .. '/lib/quests/their_masters_voice.lua') +dofile(DATA_DIRECTORY .. "/lib/quests/bigfoot_burden.lua") +dofile(DATA_DIRECTORY .. "/lib/quests/demon_oak.lua") +dofile(DATA_DIRECTORY .. "/lib/quests/grimvale.lua") +dofile(DATA_DIRECTORY .. "/lib/quests/killing_in_the_name_of.lua") +dofile(DATA_DIRECTORY .. "/lib/quests/svargrond_arena.lua") +dofile(DATA_DIRECTORY .. "/lib/quests/the_cursed_crystal.lua") +dofile(DATA_DIRECTORY .. "/lib/quests/the_queen_of_the_banshees.lua") +dofile(DATA_DIRECTORY .. "/lib/quests/their_masters_voice.lua") diff --git a/data-otservbr-global/lib/quests/svargrond_arena.lua b/data-otservbr-global/lib/quests/svargrond_arena.lua index fe6d1576ff8..a32fc0df6b6 100644 --- a/data-otservbr-global/lib/quests/svargrond_arena.lua +++ b/data-otservbr-global/lib/quests/svargrond_arena.lua @@ -29,7 +29,7 @@ local firstPit = { center = { x = 32210, y = 31098, z = 7 }, pillar = { x = 32204, y = 31098, z = 7 }, tp = { x = 32204, y = 31098, z = 7 }, - summon = { x = 32210, y = 31100, z = 7 } + summon = { x = 32210, y = 31100, z = 7 }, } PITS = { @@ -39,7 +39,7 @@ PITS = { center = firstPit.center, pillar = firstPit.pillar, tp = firstPit.tp, - summon = firstPit.summon + summon = firstPit.summon, }, [2] = { fromPos = { x = firstPit.fromPos.x - 14, y = firstPit.fromPos.y, z = firstPit.fromPos.z }, @@ -47,7 +47,7 @@ PITS = { center = { x = firstPit.center.x - 14, y = firstPit.center.y, z = firstPit.center.z }, pillar = { x = firstPit.pillar.x - 14, y = firstPit.pillar.y, z = firstPit.pillar.z }, tp = { x = firstPit.tp.x - 14, y = firstPit.tp.y, z = firstPit.tp.z }, - summon = { x = firstPit.summon.x - 14, y = firstPit.summon.y, z = firstPit.summon.z } + summon = { x = firstPit.summon.x - 14, y = firstPit.summon.y, z = firstPit.summon.z }, }, [3] = { fromPos = { x = firstPit.fromPos.x - 28, y = firstPit.fromPos.y, z = firstPit.fromPos.z }, @@ -55,7 +55,7 @@ PITS = { center = { x = firstPit.center.x - 28, y = firstPit.center.y, z = firstPit.center.z }, pillar = { x = firstPit.pillar.x - 28, y = firstPit.pillar.y, z = firstPit.pillar.z }, tp = { x = firstPit.tp.x - 28, y = firstPit.tp.y, z = firstPit.tp.z }, - summon = { x = firstPit.summon.x - 28, y = firstPit.summon.y, z = firstPit.summon.z } + summon = { x = firstPit.summon.x - 28, y = firstPit.summon.y, z = firstPit.summon.z }, }, [4] = { fromPos = { x = firstPit.fromPos.x - 42, y = firstPit.fromPos.y, z = firstPit.fromPos.z }, @@ -63,7 +63,7 @@ PITS = { center = { x = firstPit.center.x - 42, y = firstPit.center.y, z = firstPit.center.z }, pillar = { x = firstPit.pillar.x - 42, y = firstPit.pillar.y, z = firstPit.pillar.z }, tp = { x = firstPit.tp.x - 42, y = firstPit.tp.y, z = firstPit.tp.z }, - summon = { x = firstPit.summon.x - 42, y = firstPit.summon.y, z = firstPit.summon.z } + summon = { x = firstPit.summon.x - 42, y = firstPit.summon.y, z = firstPit.summon.z }, }, [5] = { fromPos = { x = firstPit.fromPos.x - 35, y = firstPit.fromPos.y - 14, z = firstPit.fromPos.z }, @@ -71,7 +71,7 @@ PITS = { center = { x = firstPit.center.x - 35, y = firstPit.center.y - 14, z = firstPit.center.z }, pillar = { x = firstPit.pillar.x - 35, y = firstPit.pillar.y - 14, z = firstPit.pillar.z }, tp = { x = firstPit.tp.x - 35, y = firstPit.tp.y - 14, z = firstPit.tp.z }, - summon = { x = firstPit.summon.x - 35, y = firstPit.summon.y - 14, z = firstPit.summon.z } + summon = { x = firstPit.summon.x - 35, y = firstPit.summon.y - 14, z = firstPit.summon.z }, }, [6] = { fromPos = { x = firstPit.fromPos.x - 21, y = firstPit.fromPos.y - 14, z = firstPit.fromPos.z }, @@ -79,7 +79,7 @@ PITS = { center = { x = firstPit.center.x - 21, y = firstPit.center.y - 14, z = firstPit.center.z }, pillar = { x = firstPit.pillar.x - 21, y = firstPit.pillar.y - 14, z = firstPit.pillar.z }, tp = { x = firstPit.tp.x - 21, y = firstPit.tp.y - 14, z = firstPit.tp.z }, - summon = { x = firstPit.summon.x - 21, y = firstPit.summon.y - 14, z = firstPit.summon.z } + summon = { x = firstPit.summon.x - 21, y = firstPit.summon.y - 14, z = firstPit.summon.z }, }, [7] = { fromPos = { x = firstPit.fromPos.x - 7, y = firstPit.fromPos.y - 14, z = firstPit.fromPos.z }, @@ -87,7 +87,7 @@ PITS = { center = { x = firstPit.center.x - 7, y = firstPit.center.y - 14, z = firstPit.center.z }, pillar = { x = firstPit.pillar.x - 7, y = firstPit.pillar.y - 14, z = firstPit.pillar.z }, tp = { x = firstPit.tp.x - 7, y = firstPit.tp.y - 14, z = firstPit.tp.z }, - summon = { x = firstPit.summon.x - 7, y = firstPit.summon.y - 14, z = firstPit.summon.z } + summon = { x = firstPit.summon.x - 7, y = firstPit.summon.y - 14, z = firstPit.summon.z }, }, [8] = { fromPos = { x = firstPit.fromPos.x - 14, y = firstPit.fromPos.y - 28, z = firstPit.fromPos.z }, @@ -95,7 +95,7 @@ PITS = { center = { x = firstPit.center.x - 14, y = firstPit.center.y - 28, z = firstPit.center.z }, pillar = { x = firstPit.pillar.x - 14, y = firstPit.pillar.y - 28, z = firstPit.pillar.z }, tp = { x = firstPit.tp.x - 14, y = firstPit.tp.y - 28, z = firstPit.tp.z }, - summon = { x = firstPit.summon.x - 14, y = firstPit.summon.y - 28, z = firstPit.summon.z } + summon = { x = firstPit.summon.x - 14, y = firstPit.summon.y - 28, z = firstPit.summon.z }, }, [9] = { fromPos = { x = firstPit.fromPos.x - 28, y = firstPit.fromPos.y - 28, z = firstPit.fromPos.z }, @@ -103,7 +103,7 @@ PITS = { center = { x = firstPit.center.x - 28, y = firstPit.center.y - 28, z = firstPit.center.z }, pillar = { x = firstPit.pillar.x - 28, y = firstPit.pillar.y - 28, z = firstPit.pillar.z }, tp = { x = firstPit.tp.x - 28, y = firstPit.tp.y - 28, z = firstPit.tp.z }, - summon = { x = firstPit.summon.x - 28, y = firstPit.summon.y - 28, z = firstPit.summon.z } + summon = { x = firstPit.summon.x - 28, y = firstPit.summon.y - 28, z = firstPit.summon.z }, }, [10] = { fromPos = { x = firstPit.fromPos.x - 21, y = firstPit.fromPos.y - 42, z = firstPit.fromPos.z }, @@ -111,83 +111,83 @@ PITS = { center = { x = firstPit.center.x - 21, y = firstPit.center.y - 41, z = firstPit.center.z }, pillar = { x = firstPit.pillar.x - 21, y = firstPit.pillar.y - 41, z = firstPit.pillar.z }, tp = { x = firstPit.tp.x - 21, y = firstPit.tp.y - 41, z = firstPit.tp.z }, - summon = { x = firstPit.summon.x - 21, y = firstPit.summon.y - 41, z = firstPit.summon.z } - } + summon = { x = firstPit.summon.x - 21, y = firstPit.summon.y - 41, z = firstPit.summon.z }, + }, } ARENA = { [1] = { - name = 'Greenhorn', + name = "Greenhorn", price = 1000, questLog = Storage.SvargrondArena.QuestLogGreenhorn, - achievement = 'Greenhorn', + achievement = "Greenhorn", creatures = { - [1] = 'frostfur', - [2] = 'bloodpaw', - [3] = 'bovinus', - [4] = 'achad', - [5] = 'colerian the barbarian', - [6] = 'the hairy one', - [7] = 'axeitus headbanger', - [8] = 'rocky', - [9] = 'cursed gladiator', - [10] = 'orcus the cruel' - } + [1] = "frostfur", + [2] = "bloodpaw", + [3] = "bovinus", + [4] = "achad", + [5] = "colerian the barbarian", + [6] = "the hairy one", + [7] = "axeitus headbanger", + [8] = "rocky", + [9] = "cursed gladiator", + [10] = "orcus the cruel", + }, }, [2] = { - name = 'Scrapper', + name = "Scrapper", price = 5000, questLog = Storage.SvargrondArena.QuestLogScrapper, - achievement = 'Scrapper', + achievement = "Scrapper", creatures = { - [1] = 'avalanche', - [2] = 'kreebosh the exile', - [3] = 'the dark dancer', - [4] = 'the hag', - [5] = 'slim', - [6] = 'grimgor guteater', - [7] = 'drasilla', - [8] = 'spirit of earth', - [9] = 'spirit of water', - [10] = 'spirit of fire' - } + [1] = "avalanche", + [2] = "kreebosh the exile", + [3] = "the dark dancer", + [4] = "the hag", + [5] = "slim", + [6] = "grimgor guteater", + [7] = "drasilla", + [8] = "spirit of earth", + [9] = "spirit of water", + [10] = "spirit of fire", + }, }, [3] = { - name = 'Warlord', + name = "Warlord", price = 10000, questLog = Storage.SvargrondArena.QuestLogWarlord, - achievement = 'Warlord of Svargrond', + achievement = "Warlord of Svargrond", creatures = { - [1] = 'webster', - [2] = 'darakan the executioner', - [3] = 'norgle glacierbeard', - [4] = 'the pit lord', - [5] = 'svoren the mad', - [6] = 'the masked marauder', - [7] = 'gnorre chyllson', - [8] = 'fallen mooh\'tah master ghar', - [9] = 'deathbringer', - [10] = 'the obliverator' - } - } + [1] = "webster", + [2] = "darakan the executioner", + [3] = "norgle glacierbeard", + [4] = "the pit lord", + [5] = "svoren the mad", + [6] = "the masked marauder", + [7] = "gnorre chyllson", + [8] = "fallen mooh'tah master ghar", + [9] = "deathbringer", + [10] = "the obliverator", + }, + }, } ARENA_TROPHY = { [3264] = { trophy = 5807, trophyStorage = Storage.SvargrondArena.TrophyGreenhorn, - desc = 'It is given to the courageous victor of the barbarian arena in greenhorn difficulty. Awarded to %s', + desc = "It is given to the courageous victor of the barbarian arena in greenhorn difficulty. Awarded to %s", }, [3265] = { trophy = 5806, trophyStorage = Storage.SvargrondArena.TrophyScrapper, - desc = 'It is given to the courageous victor of the barbarian arena in scrapper difficulty. Awarded to %s.', + desc = "It is given to the courageous victor of the barbarian arena in scrapper difficulty. Awarded to %s.", }, [3266] = { trophy = 5805, trophyStorage = Storage.SvargrondArena.TrophyWarlord, - desc = 'It is given to the courageous victor of the barbarian arena in warlord difficulty. Awarded to %s.', - } + desc = "It is given to the courageous victor of the barbarian arena in warlord difficulty. Awarded to %s.", + }, } function SvargrondArena.getPitCreatures(pitId) @@ -198,7 +198,7 @@ function SvargrondArena.getPitCreatures(pitId) local ret = {} local specs = Game.getSpectators(PITS[pitId].center, false, false, 5, 5, 5, 5) for i = 1, #specs do - ret[#ret+1] = specs[i] + ret[#ret + 1] = specs[i] end return ret @@ -268,7 +268,7 @@ function SvargrondArena.kickPlayer(cid, hideMessage) SvargrondArena.kickPosition:sendMagicEffect(CONST_ME_TELEPORT) player:setStorageValue(Storage.SvargrondArena.PitDoor, 0) if not hideMessage then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Your time ran out!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your time ran out!") end end end @@ -335,7 +335,7 @@ function SvargrondArena.sendPillarEffect(pitId) Position(position.x + 1, position.y, position.z), Position(position.x + 1, position.y - 1, position.z), Position(position.x + 1, position.y + 1, position.z), - Position(position.x, position.y, position.z) + Position(position.x, position.y, position.z), } SvargrondArena.effectPositionCache[pitId] = effectPositions positions = effectPositions diff --git a/data-otservbr-global/lib/quests/the_queen_of_the_banshees.lua b/data-otservbr-global/lib/quests/the_queen_of_the_banshees.lua index eb4034c6cb1..4ff28551729 100644 --- a/data-otservbr-global/lib/quests/the_queen_of_the_banshees.lua +++ b/data-otservbr-global/lib/quests/the_queen_of_the_banshees.lua @@ -2,24 +2,24 @@ firstSealTable = { [30010] = { position = { x = 32259, y = 31891, z = 10 }, - revert = true + revert = true, }, [30011] = { position = { x = 32259, y = 31890, z = 10 }, - revert = true + revert = true, }, [30012] = { position = { x = 32266, y = 31860, z = 11 }, - revert = true - } + revert = true, + }, } -- Table of the second seal secondSealTable = { positions = { { position = { x = 32173, y = 31871, z = 15 }, pearlId = 3026 }, - { position = { x = 32180, y = 31871, z = 15 }, pearlId = 3027 } - } + { position = { x = 32180, y = 31871, z = 15 }, pearlId = 3027 }, + }, } -- Table of the third seal @@ -43,14 +43,14 @@ thirdSealTable = { { x = 32220, y = 31845, z = 14 }, { x = 32217, y = 31843, z = 14 }, { x = 32218, y = 31842, z = 14 }, - { x = 32219, y = 31841, z = 14 } + { x = 32219, y = 31841, z = 14 }, }, [2] = { { x = 32217, y = 31844, z = 14 }, { x = 32218, y = 31844, z = 14 }, { x = 32219, y = 31843, z = 14 }, { x = 32220, y = 31845, z = 14 }, - { x = 32219, y = 31845, z = 14 } + { x = 32219, y = 31845, z = 14 }, }, [3] = { { x = 32217, y = 31842, z = 14 }, @@ -58,14 +58,14 @@ thirdSealTable = { { x = 32219, y = 31845, z = 14 }, { x = 32218, y = 31844, z = 14 }, { x = 32217, y = 31844, z = 14 }, - { x = 32217, y = 31845, z = 14 } + { x = 32217, y = 31845, z = 14 }, }, [4] = { { x = 32217, y = 31845, z = 14 }, { x = 32218, y = 31846, z = 14 }, { x = 32218, y = 31844, z = 14 }, { x = 32219, y = 31845, z = 14 }, - { x = 32220, y = 31846, z = 14 } + { x = 32220, y = 31846, z = 14 }, }, [5] = { { x = 32219, y = 31841, z = 14 }, @@ -75,14 +75,14 @@ thirdSealTable = { { x = 32217, y = 31844, z = 14 }, { x = 32217, y = 31845, z = 14 }, { x = 32218, y = 31843, z = 14 }, - { x = 32218, y = 31845, z = 14 } - } + { x = 32218, y = 31845, z = 14 }, + }, }, coalBasinPosition = { { x = 32214, y = 31850, z = 15 }, { x = 32215, y = 31850, z = 15 }, - { x = 32216, y = 31850, z = 15 } + { x = 32216, y = 31850, z = 15 }, }, switchPosition = { @@ -90,8 +90,8 @@ thirdSealTable = { { x = 32220, y = 31843, z = 15 }, { x = 32220, y = 31844, z = 15 }, { x = 32220, y = 31845, z = 15 }, - { x = 32220, y = 31846, z = 15 } - } + { x = 32220, y = 31846, z = 15 }, + }, } -- Table of the fourth seal @@ -100,8 +100,8 @@ fourthSealTable = { { x = 32242, y = 31891, z = 14 }, { x = 32243, y = 31891, z = 14 }, { x = 32242, y = 31893, z = 14 }, - { x = 32243, y = 31893, z = 14 } - } + { x = 32243, y = 31893, z = 14 }, + }, } -- Table of the sixth seal @@ -121,6 +121,6 @@ sixthSealTable = { { position = { x = 32313, y = 31975, z = 13 }, campfireId = 1998 }, { position = { x = 32309, y = 31976, z = 13 }, campfireId = 1996 }, { position = { x = 32311, y = 31976, z = 13 }, campfireId = 1996 }, - { position = { x = 32313, y = 31976, z = 13 }, campfireId = 1998 } - } + { position = { x = 32313, y = 31976, z = 13 }, campfireId = 1998 }, + }, } diff --git a/data-otservbr-global/lib/quests/their_masters_voice.lua b/data-otservbr-global/lib/quests/their_masters_voice.lua index 2f65b1726aa..140d50e5ae5 100644 --- a/data-otservbr-global/lib/quests/their_masters_voice.lua +++ b/data-otservbr-global/lib/quests/their_masters_voice.lua @@ -3,13 +3,13 @@ local config = { slime_exhaust = 5, -- exhaust until you can remove another slime, in seconds slimes_needed = 25, -- slimes needed to be removed to kill mad mage and complete quest max_slimes = 100, -- max slimes needed to start waves - max_waves = 25 -- max waves, last one will be mad mage + max_waves = 25, -- max waves, last one will be mad mage } local mage_positions = { { x = 33328, y = 31859, z = 9 }, { x = 33367, y = 31873, z = 9 }, - { x = 33349, y = 31899, z = 9 } + { x = 33349, y = 31899, z = 9 }, } local servant_positions = { @@ -37,7 +37,7 @@ local servant_positions = { { x = 33311, y = 31854, z = 9 }, { x = 33334, y = 31889, z = 9 }, { x = 33340, y = 31890, z = 9 }, - { x = 33347, y = 31889, z = 9 } + { x = 33347, y = 31889, z = 9 }, } local slime_ids = { 12059, 12060, 12061, 12062, 12063 } @@ -45,7 +45,7 @@ local slime_ids = { 12059, 12060, 12061, 12062, 12063 } local servants = { { 10, "diamond servant" }, { 40, "golden servant" }, - { 100, "iron servant" } + { 100, "iron servant" }, } local slime_exhaust = slime_exhaust or {} @@ -74,7 +74,7 @@ function startServantWave() if random <= servants[servant_key][1] then local servant = Game.createMonster(servants[servant_key][2], servant_positions[pos_key], true, true) if servant then - current_servants[#current_servants+1] = servant.uid + current_servants[#current_servants + 1] = servant.uid servant:registerEvent("ServantDeath") break end @@ -123,7 +123,7 @@ function Gobbler_onUse(player, item, fromPosition, target, toPosition, isHotkey) slime_exhaust[player.uid] = time + config.slime_exhaust player:say("The slime gobbler gobbles large chunks of the slime fungus with great satisfaction.", TALKTYPE_MONSTER_SAY) player:addExperience(20, true, true) - slimes_removed[#slimes_removed+1] = { cid = player.uid, id = target.itemid, pos = toPosition } + slimes_removed[#slimes_removed + 1] = { cid = player.uid, id = target.itemid, pos = toPosition } target:transform(12065) if not table.contains(valid_participants, player.uid) then @@ -133,7 +133,7 @@ function Gobbler_onUse(player, item, fromPosition, target, toPosition, isHotkey) slime_count = slime_count + 1 if slime_count >= config.slimes_needed then player:say("You gobbled enough slime to get a good grip on this dungeon's slippery floor.", TALKTYPE_MONSTER_SAY) - valid_participants[#valid_participants+1] = player.uid + valid_participants[#valid_participants + 1] = player.uid break end end diff --git a/data-otservbr-global/lib/tables/load.lua b/data-otservbr-global/lib/tables/load.lua index 9092230b3fd..6aa8e2c4adb 100644 --- a/data-otservbr-global/lib/tables/load.lua +++ b/data-otservbr-global/lib/tables/load.lua @@ -1,2 +1,2 @@ -dofile(DATA_DIRECTORY .. '/lib/tables/teleport_item_destinations.lua') -dofile(DATA_DIRECTORY .. '/lib/tables/town.lua') +dofile(DATA_DIRECTORY .. "/lib/tables/teleport_item_destinations.lua") +dofile(DATA_DIRECTORY .. "/lib/tables/town.lua") diff --git a/data-otservbr-global/lib/tables/teleport_item_destinations.lua b/data-otservbr-global/lib/tables/teleport_item_destinations.lua index b38113b9f73..8443ab02b1c 100644 --- a/data-otservbr-global/lib/tables/teleport_item_destinations.lua +++ b/data-otservbr-global/lib/tables/teleport_item_destinations.lua @@ -11,5 +11,5 @@ ItemTeleports = { -- Rookgaard level bridge [50240] = { destination = Position(32092, 32177, 6), effect = CONST_ME_MAGIC_BLUE }, -- Rookgaard premium bridge - [50241] = { destination = Position(32066, 32192, 7), effect = CONST_ME_MAGIC_BLUE } + [50241] = { destination = Position(32066, 32192, 7), effect = CONST_ME_MAGIC_BLUE }, } diff --git a/data-otservbr-global/lib/tables/town.lua b/data-otservbr-global/lib/tables/town.lua index 9568101519b..93cfcca3030 100644 --- a/data-otservbr-global/lib/tables/town.lua +++ b/data-otservbr-global/lib/tables/town.lua @@ -24,5 +24,5 @@ TOWNS_LIST = { EVENT_ROOM = 23, COBRA_BASTION = 24, BOUNAC = 25, - FEYRIST = 26 + FEYRIST = 26, } diff --git a/data-otservbr-global/lib/vip/vip_system.lua b/data-otservbr-global/lib/vip/vip_system.lua index 741db06e29d..ca2aa3559f8 100644 --- a/data-otservbr-global/lib/vip/vip_system.lua +++ b/data-otservbr-global/lib/vip/vip_system.lua @@ -1,8 +1,8 @@ local config = { - activationMessage = 'You have received %s VIP days.', + activationMessage = "You have received %s VIP days.", activationMessageType = MESSAGE_EVENT_ADVANCE, - expirationMessage = 'Your VIP days ran out.', + expirationMessage = "Your VIP days ran out.", expirationMessageType = MESSAGE_STATUS_WARNING, outfits = {}, @@ -52,13 +52,13 @@ end function CheckPremiumAndPrint(player, msgType) if player:getVipDays() == 0xFFFF then - player:sendTextMessage(msgType, 'You have infinite amount of VIP days left.') + player:sendTextMessage(msgType, "You have infinite amount of VIP days left.") return true end local playerVipTime = player:getVipTime() if playerVipTime < os.time() then - local msg = 'You do not have VIP on your account.' + local msg = "You do not have VIP on your account." player:sendTextMessage(msgType, msg) return true end diff --git a/data-otservbr-global/migrations/22.lua b/data-otservbr-global/migrations/22.lua index a823766e14c..ee1caf87ac3 100644 --- a/data-otservbr-global/migrations/22.lua +++ b/data-otservbr-global/migrations/22.lua @@ -1,10 +1,8 @@ function onUpdateDatabase() logger.info("Updating database to version 23 (fix offline training skill size)") - db.query( - [[ + db.query([[ ALTER TABLE `players` MODIFY offlinetraining_skill tinyint(2) NOT NULL DEFAULT '-1'; - ]] - ) + ]]) return true end diff --git a/data-otservbr-global/monster/amphibics/azure_frog.lua b/data-otservbr-global/monster/amphibics/azure_frog.lua index e3d7f48c977..5695706b133 100644 --- a/data-otservbr-global/monster/amphibics/azure_frog.lua +++ b/data-otservbr-global/monster/amphibics/azure_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 87, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 268 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Meriana, Laguna Islands, and other Shattered Isles." + Locations = "Meriana, Laguna Islands, and other Shattered Isles.", } monster.health = 60 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 74230, maxCount = 10 }, - { name = "worm", chance = 9240 } + { name = "worm", chance = 9240 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/amphibics/bog_frog.lua b/data-otservbr-global/monster/amphibics/bog_frog.lua index be89a3ff569..cebfc5faf3e 100644 --- a/data-otservbr-global/monster/amphibics/bog_frog.lua +++ b/data-otservbr-global/monster/amphibics/bog_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 738 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Shadowthorn in the bog god's temple, Drefia, around Lake Equivocolao when it's dirty." + Locations = "Shadowthorn in the bog god's temple, Drefia, around Lake Equivocolao when it's dirty.", } monster.health = 25 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -74,8 +74,7 @@ monster.voices = { { text = "Ribbit! Ribbit!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, @@ -100,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/amphibics/coral_frog.lua b/data-otservbr-global/monster/amphibics/coral_frog.lua index 4b8d086896b..2a37771c904 100644 --- a/data-otservbr-global/monster/amphibics/coral_frog.lua +++ b/data-otservbr-global/monster/amphibics/coral_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 78, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 269 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Meriana, Laguna Islands, and other Shattered Isles." + Locations = "Meriana, Laguna Islands, and other Shattered Isles.", } monster.health = 60 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 75590, maxCount = 10 }, - { name = "worm", chance = 11310 } + { name = "worm", chance = 11310 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/amphibics/crimson_frog.lua b/data-otservbr-global/monster/amphibics/crimson_frog.lua index 9070997b408..25799383ec2 100644 --- a/data-otservbr-global/monster/amphibics/crimson_frog.lua +++ b/data-otservbr-global/monster/amphibics/crimson_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 77, lookFeet = 112, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 270 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Meriana, Laguna Islands, and other Shattered Isles." + Locations = "Meriana, Laguna Islands, and other Shattered Isles.", } monster.health = 60 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 76000, maxCount = 11 }, - { name = "worm", chance = 10000 } + { name = "worm", chance = 10000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/amphibics/deathspawn.lua b/data-otservbr-global/monster/amphibics/deathspawn.lua index 221a3322c03..cb0cd2f3a76 100644 --- a/data-otservbr-global/monster/amphibics/deathspawn.lua +++ b/data-otservbr-global/monster/amphibics/deathspawn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 97, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 225 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,8 +59,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40, effect = CONST_ME_DRAWBLOOD, { type = CONDITION_POISON, totalDamage = 30, interval = 4000 } }, @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/amphibics/filth_toad.lua b/data-otservbr-global/monster/amphibics/filth_toad.lua index 13c47a74006..590a5ac75b2 100644 --- a/data-otservbr-global/monster/amphibics/filth_toad.lua +++ b/data-otservbr-global/monster/amphibics/filth_toad.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 735 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 1, - Locations = "Tiquanda, around Lake Equivocolao." + Locations = "Tiquanda, around Lake Equivocolao.", } monster.health = 185 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -77,19 +77,19 @@ monster.loot = { { name = "two handed sword", chance = 500 }, { name = "mace", chance = 2000 }, { id = 3578, chance = 22000 }, -- fish - { name = "poisonous slime", chance = 3000 } + { name = "poisonous slime", chance = 3000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -55, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -8, maxDamage = -34, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -8, maxDamage = -34, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { defense = 15, armor = 6, mitigation = 0.41, - { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/amphibics/green_frog.lua b/data-otservbr-global/monster/amphibics/green_frog.lua index 474045c8dbe..d820a05d9ff 100644 --- a/data-otservbr-global/monster/amphibics/green_frog.lua +++ b/data-otservbr-global/monster/amphibics/green_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 267 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Meriana and other Shattered Isles, Port Hope caves, The Witches Cliff (only accessible during a quest)." + Locations = "Meriana and other Shattered Isles, Port Hope caves, The Witches Cliff (only accessible during a quest).", } monster.health = 25 @@ -35,7 +35,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -74,11 +74,9 @@ monster.voices = { { text = "Ribbit! Ribbit!", yell = false }, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 5, @@ -103,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/amphibics/infernal_frog.lua b/data-otservbr-global/monster/amphibics/infernal_frog.lua index 5010e85f9d0..a2358cd530d 100644 --- a/data-otservbr-global/monster/amphibics/infernal_frog.lua +++ b/data-otservbr-global/monster/amphibics/infernal_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 563 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Isle of Evil, Drefia." + Locations = "Isle of Evil, Drefia.", } monster.health = 655 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -76,19 +76,19 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 73330, maxCount = 65 } + { name = "gold coin", chance = 73330, maxCount = 65 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20, effect = CONST_ME_DRAWBLOOD }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -16, maxDamage = -32, shootEffect = CONST_ANI_POISON, target = true } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -16, maxDamage = -32, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { defense = 5, armor = 18, mitigation = 0.91, - { name = "speed", interval = 2000, chance = 20, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 8000 } + { name = "speed", interval = 2000, chance = 20, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 8000 }, } monster.elements = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/amphibics/makara.lua b/data-otservbr-global/monster/amphibics/makara.lua index cae54ea911e..66bd91a17dd 100644 --- a/data-otservbr-global/monster/amphibics/makara.lua +++ b/data-otservbr-global/monster/amphibics/makara.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2262 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Temple of the Moon Goddess." + Locations = "Temple of the Moon Goddess.", } monster.health = 5050 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/amphibics/orchid_frog.lua b/data-otservbr-global/monster/amphibics/orchid_frog.lua index 0808511ae44..7fe25247b15 100644 --- a/data-otservbr-global/monster/amphibics/orchid_frog.lua +++ b/data-otservbr-global/monster/amphibics/orchid_frog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 71, lookFeet = 70, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 271 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Meriana, Laguna Islands, and other Shattered Isles." + Locations = "Meriana, Laguna Islands, and other Shattered Isles.", } monster.health = 60 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 73230, maxCount = 10 }, - { name = "worm", chance = 8000 } + { name = "worm", chance = 8000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -24, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/amphibics/salamander.lua b/data-otservbr-global/monster/amphibics/salamander.lua index 0e49e7fb68c..d5a56eb0d41 100644 --- a/data-otservbr-global/monster/amphibics/salamander.lua +++ b/data-otservbr-global/monster/amphibics/salamander.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 913 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Shadowthorn in the bog god's temple, Drefia, around Lake Equivocolao when it's dirty." + Locations = "Shadowthorn in the bog god's temple, Drefia, around Lake Equivocolao when it's dirty.", } monster.health = 70 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -82,18 +82,18 @@ monster.loot = { { name = "brass helmet", chance = 2180 }, { name = "arrow", chance = 7890, maxCount = 3 }, { name = "health potion", chance = 1480 }, - { id = 3307, chance = 490 } -- scimitar + { id = 3307, chance = 490 }, -- scimitar } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 10, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 10, interval = 4000 } }, } monster.defenses = { defense = 5, armor = 3, mitigation = 0.13, - { name = "combat", interval = 6000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 4, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 6000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 4, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/amphibics/toad.lua b/data-otservbr-global/monster/amphibics/toad.lua index 533f44946ef..3e1c71fdf17 100644 --- a/data-otservbr-global/monster/amphibics/toad.lua +++ b/data-otservbr-global/monster/amphibics/toad.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 262 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "The Laguna Islands, Arena and Zoo Quarter, TiquandaTarantula Caves, Shadowthorn Bog God Temple, Northern Zao Plantations, Northern Brimstone Bug CavesBrimstone Bug Cave, Tainted Caves." + Locations = "The Laguna Islands, Arena and Zoo Quarter, TiquandaTarantula Caves, Shadowthorn Bog God Temple, Northern Zao Plantations, Northern Brimstone Bug CavesBrimstone Bug Cave, Tainted Caves.", } monster.health = 135 @@ -35,7 +35,7 @@ monster.manaCost = 400 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -79,19 +79,19 @@ monster.loot = { { name = "war hammer", chance = 148 }, { name = "mace", chance = 2854 }, { id = 3578, chance = 20000 }, -- fish - { name = "poisonous slime", chance = 4761 } + { name = "poisonous slime", chance = 4761 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -8, maxDamage = -17, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -8, maxDamage = -17, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { defense = 6, armor = 6, mitigation = 0.36, - { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/abyssal_calamary.lua b/data-otservbr-global/monster/aquatics/abyssal_calamary.lua index d8881726cda..25d689560c5 100644 --- a/data-otservbr-global/monster/aquatics/abyssal_calamary.lua +++ b/data-otservbr-global/monster/aquatics/abyssal_calamary.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1105 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Seacrest Grounds." + Locations = "Seacrest Grounds.", } monster.health = 300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -79,11 +79,10 @@ monster.loot = { { name = "white pearl", chance = 830, maxCount = 1 }, { name = "small sapphire", chance = 250, maxCount = 3 }, { name = "small ruby", chance = 500, maxCount = 3 }, - { name = "small amethyst", chance = 750, maxCount = 3 } + { name = "small amethyst", chance = 750, maxCount = 3 }, } -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 13, @@ -108,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/blood_crab.lua b/data-otservbr-global/monster/aquatics/blood_crab.lua index 7b026a968a0..a6d186a93e3 100644 --- a/data-otservbr-global/monster/aquatics/blood_crab.lua +++ b/data-otservbr-global/monster/aquatics/blood_crab.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 261 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Goroma (beyond electric barrier), Laguna Islands, Shattered Isles, Underground Port Hope, \z - Mistrock, Treasure Island. There is also one underwater next to The Tibianic, however it is unreachable." + Mistrock, Treasure Island. There is also one underwater next to The Tibianic, however it is unreachable.", } monster.health = 290 @@ -36,7 +36,7 @@ monster.manaCost = 505 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -79,11 +79,11 @@ monster.loot = { { name = "bloody pincers", chance = 6190 }, { name = "chain armor", chance = 5240 }, { name = "brass legs", chance = 2120 }, - { name = "white pearl", chance = 530 } + { name = "white pearl", chance = 530 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/calamary.lua b/data-otservbr-global/monster/aquatics/calamary.lua index 4da3c5b2fb4..bd80db06ca7 100644 --- a/data-otservbr-global/monster/aquatics/calamary.lua +++ b/data-otservbr-global/monster/aquatics/calamary.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 780 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 1, - Locations = "Fiehonja." + Locations = "Fiehonja.", } monster.health = 75 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -75,7 +75,7 @@ monster.voices = { } monster.loot = { - { name = "shrimp", chance = 12270, maxCount = 2 } + { name = "shrimp", chance = 12270, maxCount = 2 }, } monster.defenses = { @@ -101,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/crab.lua b/data-otservbr-global/monster/aquatics/crab.lua index 006c9f906a5..75a9a57fbeb 100644 --- a/data-otservbr-global/monster/aquatics/crab.lua +++ b/data-otservbr-global/monster/aquatics/crab.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 112 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Various locations like Goroma, Edron, Port Hope, Nargor and other Shattered Isles. \z - There is also one located underwater by The Tibianic, however it is unreachable." + There is also one located underwater by The Tibianic, however it is unreachable.", } monster.health = 55 @@ -36,7 +36,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 80000, maxCount = 10 }, { id = 3578, chance = 20000 }, -- fish - { name = "crab pincers", chance = 20000 } + { name = "crab pincers", chance = 20000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/crustacea_gigantica.lua b/data-otservbr-global/monster/aquatics/crustacea_gigantica.lua index f25331e0c3e..2a0a3d7cfc0 100644 --- a/data-otservbr-global/monster/aquatics/crustacea_gigantica.lua +++ b/data-otservbr-global/monster/aquatics/crustacea_gigantica.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 697 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 3, Locations = "Calassa, Treasure Island , Seacrest Grounds. \z In the Seacrest Grounds the spawns are Varying Monster Spawns in which the common creature is an Abyssal Calamary. \z - The chance to spawn a Crustacea Gigantica seems to be around 1%-2%." + The chance to spawn a Crustacea Gigantica seems to be around 1%-2%.", } monster.health = 1600 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -89,7 +89,7 @@ monster.loot = { } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/deathling_scout.lua b/data-otservbr-global/monster/aquatics/deathling_scout.lua index c6a96a82785..d0a54d6b17a 100644 --- a/data-otservbr-global/monster/aquatics/deathling_scout.lua +++ b/data-otservbr-global/monster/aquatics/deathling_scout.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1667 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Deepling Ancestorial Grounds and Sunken Temple." + Locations = "Deepling Ancestorial Grounds and Sunken Temple.", } monster.health = 7200 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_DEEPLING, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,19 +62,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = true, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "VBOX°O", yell = false }, - { text = "O(J-\"LJ-T =|-°", yell = false } + { text = 'O(J-"LJ-T =|-°', yell = false }, } monster.loot = { @@ -94,19 +94,19 @@ monster.loot = { { name = "warrior's axe", chance = 3470 }, { id = 3052, chance = 3000 }, -- life ring { name = "fish fin", chance = 920 }, - { name = "necklace of the deep", chance = 440 } + { name = "necklace of the deep", chance = 440 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 4000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -400, range = 5, shootEffect = CONST_ANI_HUNTINGSPEAR, target = false }, { name = "combat", interval = 4000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -300, range = 5, shootEffect = CONST_ANI_LARGEROCK, target = false }, - { name = "combat", interval = 4000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -550, radius = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 4000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -550, radius = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 72, - armor = 72 + armor = 72, } monster.elements = { @@ -119,14 +119,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/deathling_spellsinger.lua b/data-otservbr-global/monster/aquatics/deathling_spellsinger.lua index 9d2ff5e8994..d28ad9e1d5f 100644 --- a/data-otservbr-global/monster/aquatics/deathling_spellsinger.lua +++ b/data-otservbr-global/monster/aquatics/deathling_spellsinger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1677 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Ancient Ancestorial Grounds and Sunken Temple." + Locations = "Ancient Ancestorial Grounds and Sunken Temple.", } monster.health = 7200 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_DEEPLING, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "BOQOL\"°", yell = false }, - { text = "QOL\" VBOXCL°", yell = false } + { text = 'BOQOL"°', yell = false }, + { text = 'QOL" VBOXCL°', yell = false }, } monster.loot = { @@ -95,14 +95,14 @@ monster.loot = { { name = "warrior's axe", chance = 2950 }, { name = "small enchanted sapphire", chance = 2220, maxCount = 4 }, { id = 3052, chance = 2010 }, -- life ring - { name = "necklace of the deep", chance = 200 } + { name = "necklace of the deep", chance = 200 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 4000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -400, range = 5, shootEffect = CONST_ANI_HUNTINGSPEAR, target = false }, { name = "combat", interval = 4000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -300, range = 5, shootEffect = CONST_ANI_LARGEROCK, target = false }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/deepling_brawler.lua b/data-otservbr-global/monster/aquatics/deepling_brawler.lua index bb4c38198a9..ed81778f449 100644 --- a/data-otservbr-global/monster/aquatics/deepling_brawler.lua +++ b/data-otservbr-global/monster/aquatics/deepling_brawler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 859 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Fiehonja." + Locations = "Fiehonja.", } monster.health = 380 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_DEATHLING, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -85,12 +85,12 @@ monster.loot = { { name = "deepling scales", chance = 14500 }, { name = "eye of a deepling", chance = 6500 }, { name = "heavy trident", chance = 2720 }, - { name = "fish fin", chance = 680 } + { name = "fish fin", chance = 680 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, effect = CONST_ME_DRAWBLOOD }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -60, maxDamage = -120, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -60, maxDamage = -120, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/deepling_elite.lua b/data-otservbr-global/monster/aquatics/deepling_elite.lua index 957f6779ea2..a80ee5575cb 100644 --- a/data-otservbr-global/monster/aquatics/deepling_elite.lua +++ b/data-otservbr-global/monster/aquatics/deepling_elite.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 862 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Fiehonja (Tanjis lair)." + Locations = "Fiehonja (Tanjis lair).", } monster.health = 3200 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_DEATHLING, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,19 +94,19 @@ monster.loot = { { name = "heavy trident", chance = 3680 }, { name = "fish fin", chance = 2300 }, { name = "warrior's shield", chance = 1534 }, - { name = "warrior's axe", chance = 820 } + { name = "warrior's axe", chance = 820 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, effect = CONST_ME_DRAWBLOOD }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -290, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -290, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true }, } monster.defenses = { defense = 45, armor = 45, mitigation = 1.37, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/deepling_guard.lua b/data-otservbr-global/monster/aquatics/deepling_guard.lua index 1276c62b249..c77609e5964 100644 --- a/data-otservbr-global/monster/aquatics/deepling_guard.lua +++ b/data-otservbr-global/monster/aquatics/deepling_guard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 770 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Fiehonja. During Deeplings stage 1 around 10 spawns exist. \z - Also may spawn during the gemcutting mission. Many more spawns in almost all areas of Deepling stage 2 and 3." + Also may spawn during the gemcutting mission. Many more spawns in almost all areas of Deepling stage 2 and 3.", } monster.health = 1900 @@ -39,7 +39,7 @@ monster.enemyFactions = { FACTION_DEATHLING, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -96,20 +96,20 @@ monster.loot = { { name = "deepling squelcher", chance = 751 }, { name = "deepling backpack", chance = 333 }, { name = "ornate crossbow", chance = 362 }, - { name = "foxtail", chance = 10 } + { name = "foxtail", chance = 10 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -100, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -100, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { defense = 35, armor = 53, mitigation = 1.57, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 100, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 100, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/deepling_master_librarian.lua b/data-otservbr-global/monster/aquatics/deepling_master_librarian.lua index cf85307b534..888f25ab3c9 100644 --- a/data-otservbr-global/monster/aquatics/deepling_master_librarian.lua +++ b/data-otservbr-global/monster/aquatics/deepling_master_librarian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 860 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Fiehonja." + Locations = "Fiehonja.", } monster.health = 1700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,7 +88,7 @@ monster.loot = { { id = 3052, chance = 3200 }, -- life ring { name = "fish fin", chance = 1800 }, { name = "necklace of the deep", chance = 1250 }, - { name = "ornate crossbow", chance = 35 } + { name = "ornate crossbow", chance = 35 }, } monster.attacks = { @@ -97,14 +97,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_DROWNDAMAGE, minDamage = -150, maxDamage = -280, radius = 4, effect = CONST_ME_BUBBLES, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -140, range = 7, effect = CONST_ME_SMALLPLANTS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -60, maxDamage = -140, range = 7, effect = CONST_ME_SMALLPLANTS, target = false }, - { name = "deepling spellsinger skill reducer", interval = 2000, chance = 10, range = 5, target = false } + { name = "deepling spellsinger skill reducer", interval = 2000, chance = 10, range = 5, target = false }, } monster.defenses = { defense = 20, armor = 45, mitigation = 1.37, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/deepling_scout.lua b/data-otservbr-global/monster/aquatics/deepling_scout.lua index 9b2e250f5b2..d7ce0c2db19 100644 --- a/data-otservbr-global/monster/aquatics/deepling_scout.lua +++ b/data-otservbr-global/monster/aquatics/deepling_scout.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 734 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Fiehonja, Sunken Mines near Dwarf Mines." + Locations = "Fiehonja, Sunken Mines near Dwarf Mines.", } monster.health = 240 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_DEATHLING, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,12 +91,12 @@ monster.loot = { { name = "eye of a deepling", chance = 310 }, { name = "fish fin", chance = 310 }, { name = "small emerald", chance = 121 }, - { name = "flask of rust remover", chance = 111 } + { name = "flask of rust remover", chance = 111 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -105, effect = CONST_ME_DRAWBLOOD }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = 0, maxDamage = -110, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = 0, maxDamage = -110, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/deepling_spellsinger.lua b/data-otservbr-global/monster/aquatics/deepling_spellsinger.lua index 30640bbe7f9..56557793784 100644 --- a/data-otservbr-global/monster/aquatics/deepling_spellsinger.lua +++ b/data-otservbr-global/monster/aquatics/deepling_spellsinger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 772 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Fiehonja." + Locations = "Fiehonja.", } monster.health = 850 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_DEATHLING, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,7 +93,7 @@ monster.loot = { { name = "deepling staff", chance = 2020 }, { name = "necklace of the deep", chance = 790 }, { name = "fish fin", chance = 520 }, - { name = "ornate crossbow", chance = 220 } + { name = "ornate crossbow", chance = 220 }, } monster.attacks = { @@ -102,7 +102,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_DROWNDAMAGE, minDamage = -90, maxDamage = -130, radius = 4, effect = CONST_ME_BUBBLES, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -60, maxDamage = -140, range = 7, effect = CONST_ME_SMALLPLANTS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -60, maxDamage = -140, range = 7, effect = CONST_ME_SMALLPLANTS, target = false }, - { name = "deepling spellsinger skill reducer", interval = 2000, chance = 5, range = 5, target = false } + { name = "deepling spellsinger skill reducer", interval = 2000, chance = 5, range = 5, target = false }, } monster.defenses = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/deepling_tyrant.lua b/data-otservbr-global/monster/aquatics/deepling_tyrant.lua index 1d0d0a4ad41..290aeee78d2 100644 --- a/data-otservbr-global/monster/aquatics/deepling_tyrant.lua +++ b/data-otservbr-global/monster/aquatics/deepling_tyrant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 861 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 2, - Locations = "Fiehonja." + Locations = "Fiehonja.", } monster.health = 4500 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_DEATHLING, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,20 +95,20 @@ monster.loot = { { name = "guardian axe", chance = 1340 }, { name = "ornate crossbow", chance = 1190 }, { name = "deepling backpack", chance = 410 }, - { name = "foxtail", chance = 30 } + { name = "foxtail", chance = 30 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -501, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -375, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -180, maxDamage = -215, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -180, maxDamage = -215, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { defense = 45, armor = 54, mitigation = 1.65, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/deepling_warrior.lua b/data-otservbr-global/monster/aquatics/deepling_warrior.lua index 5a65bfa115b..7f31c9ae504 100644 --- a/data-otservbr-global/monster/aquatics/deepling_warrior.lua +++ b/data-otservbr-global/monster/aquatics/deepling_warrior.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 769 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Fiehonja." + Locations = "Fiehonja.", } monster.health = 1600 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_DEATHLING, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,19 +95,19 @@ monster.loot = { { name = "fish fin", chance = 870 }, { name = "warrior's shield", chance = 610 }, { name = "eye of a deepling", chance = 610 }, - { name = "warrior's axe", chance = 510 } + { name = "warrior's axe", chance = 510 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, effect = CONST_ME_DRAWBLOOD }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -290, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -290, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, } monster.defenses = { defense = 25, armor = 40, mitigation = 1.26, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/deepling_worker.lua b/data-otservbr-global/monster/aquatics/deepling_worker.lua index 32e2c40d23e..cb958c11553 100644 --- a/data-otservbr-global/monster/aquatics/deepling_worker.lua +++ b/data-otservbr-global/monster/aquatics/deepling_worker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 795 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Fiehonja, Coral mine." + Locations = "Fiehonja, Coral mine.", } monster.health = 190 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_DEATHLING, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,11 +86,11 @@ monster.loot = { { name = "heavy trident", chance = 510 }, { name = "fish fin", chance = 350 }, { name = "eye of a deepling", chance = 283 }, - { name = "small emerald", chance = 110, maxCount = 1 } + { name = "small emerald", chance = 110, maxCount = 1 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/deepsea_blood_crab.lua b/data-otservbr-global/monster/aquatics/deepsea_blood_crab.lua index 10014797c0a..63af17a9843 100644 --- a/data-otservbr-global/monster/aquatics/deepsea_blood_crab.lua +++ b/data-otservbr-global/monster/aquatics/deepsea_blood_crab.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 437 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Svargrond Sea Serpent Area, Drefia. There is also one under Rookgaard Academy, however it is unreachable." + Locations = "Svargrond Sea Serpent Area, Drefia. There is also one under Rookgaard Academy, however it is unreachable.", } monster.health = 320 @@ -33,10 +33,9 @@ monster.corpse = 6075 monster.speed = 190 monster.manaCost = 0 - monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -79,11 +78,11 @@ monster.loot = { { name = "bloody pincers", chance = 6980 }, { name = "chain armor", chance = 5020 }, { name = "brass legs", chance = 2720 }, - { name = "white pearl", chance = 620 } + { name = "white pearl", chance = 620 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -115, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -115, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -109,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/fish.lua b/data-otservbr-global/monster/aquatics/fish.lua index 5f150f3ce61..700856ca8ca 100644 --- a/data-otservbr-global/monster/aquatics/fish.lua +++ b/data-otservbr-global/monster/aquatics/fish.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 784 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Fiehonja." + Locations = "Fiehonja.", } monster.health = 25 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -74,8 +74,7 @@ monster.voices = { { text = "Blub!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, @@ -100,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/jellyfish.lua b/data-otservbr-global/monster/aquatics/jellyfish.lua index a4cc7c3e6df..a3cfcc2aa29 100644 --- a/data-otservbr-global/monster/aquatics/jellyfish.lua +++ b/data-otservbr-global/monster/aquatics/jellyfish.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 781 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 1, - Locations = "Fiehonja, Krailos Steppe underwater cave." + Locations = "Fiehonja, Krailos Steppe underwater cave.", } monster.health = 55 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -77,18 +77,18 @@ monster.voices = { } monster.loot = { - { name = "shrimp", chance = 8333, maxCount = 2 } + { name = "shrimp", chance = 8333, maxCount = 2 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { defense = 10, armor = 11, mitigation = 0.30, - { name = "invisible", interval = 2000, chance = 15 } + { name = "invisible", interval = 2000, chance = 15 }, } monster.elements = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/manta_ray.lua b/data-otservbr-global/monster/aquatics/manta_ray.lua index f9cd03dd4b9..9dace51e40a 100644 --- a/data-otservbr-global/monster/aquatics/manta_ray.lua +++ b/data-otservbr-global/monster/aquatics/manta_ray.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 779 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Fiehonja only in stage 3 in a large room." + Locations = "Fiehonja only in stage 3 in a large room.", } monster.health = 680 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -74,13 +74,13 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 63000, maxCount = 39 } + { name = "gold coin", chance = 63000, maxCount = 39 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 120, interval = 4000 } }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -75, maxDamage = -90, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -50, maxDamage = -110, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -50, maxDamage = -110, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/northern_pike.lua b/data-otservbr-global/monster/aquatics/northern_pike.lua index 90c23eff47d..5308ef8315d 100644 --- a/data-otservbr-global/monster/aquatics/northern_pike.lua +++ b/data-otservbr-global/monster/aquatics/northern_pike.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 783 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 1, Stars = 0, Occurrence = 1, - Locations = "Fiehonja." + Locations = "Fiehonja.", } monster.health = 95 @@ -35,7 +35,7 @@ monster.manaCost = 315 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -72,8 +72,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/quara_constrictor.lua b/data-otservbr-global/monster/aquatics/quara_constrictor.lua index 42dc2885e68..02b4877620e 100644 --- a/data-otservbr-global/monster/aquatics/quara_constrictor.lua +++ b/data-otservbr-global/monster/aquatics/quara_constrictor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 239 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Calassa, Frozen Trench underwater sites, Yalahar (Sunken Quarter)." + Locations = "Calassa, Frozen Trench underwater sites, Yalahar (Sunken Quarter).", } monster.health = 450 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -83,7 +83,7 @@ monster.loot = { { name = "shrimp", chance = 5140, maxCount = 5 }, { name = "brass armor", chance = 4810 }, { name = "small amethyst", chance = 3060 }, - { name = "fish fin", chance = 490 } + { name = "fish fin", chance = 490 }, } monster.attacks = { @@ -91,7 +91,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -90, radius = 3, effect = CONST_ME_HITAREA, target = false }, { name = "quara constrictor freeze", interval = 2000, chance = 10, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -40, maxDamage = -70, range = 7, radius = 4, effect = CONST_ME_ICEATTACK, target = false }, - { name = "quara constrictor electrify", interval = 2000, chance = 10, range = 1, target = false } + { name = "quara constrictor electrify", interval = 2000, chance = 10, range = 1, target = false }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/quara_constrictor_scout.lua b/data-otservbr-global/monster/aquatics/quara_constrictor_scout.lua index 1e12e0e3a26..52df8aaebea 100644 --- a/data-otservbr-global/monster/aquatics/quara_constrictor_scout.lua +++ b/data-otservbr-global/monster/aquatics/quara_constrictor_scout.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 240 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Malada, Arena Quarter, Treasure Island Eastern Caves, \z - Hrodmir Quara Scout Caves, Quara Grotto, Oramond." + Hrodmir Quara Scout Caves, Quara Grotto, Oramond.", } monster.health = 450 @@ -36,7 +36,7 @@ monster.manaCost = 600 monster.changeTarget = { interval = 4000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -84,12 +84,12 @@ monster.loot = { { name = "shrimp", chance = 5140, maxCount = 3 }, { name = "brass armor", chance = 4810 }, { name = "small amethyst", chance = 3060 }, - { name = "fish fin", chance = 490 } + { name = "fish fin", chance = 490 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -135, effect = CONST_ME_DRAWBLOOD }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -80, radius = 3, effect = CONST_ME_HITAREA, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -80, radius = 3, effect = CONST_ME_HITAREA, target = false }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/quara_hydromancer.lua b/data-otservbr-global/monster/aquatics/quara_hydromancer.lua index 434f9b4a785..83d0b76ca8e 100644 --- a/data-otservbr-global/monster/aquatics/quara_hydromancer.lua +++ b/data-otservbr-global/monster/aquatics/quara_hydromancer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 243 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Calassa, Frozen Trench, Yalahar (Sunken Quarter)." + Locations = "Calassa, Frozen Trench, Yalahar (Sunken Quarter).", } monster.health = 1100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { name = "fish fin", chance = 1410 }, { id = 3098, chance = 1218 }, -- ring of healing { name = "wand of cosmic energy", chance = 980 }, - { name = "knight armor", chance = 230 } + { name = "knight armor", chance = 230 }, } monster.attacks = { @@ -99,14 +99,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -90, maxDamage = -150, radius = 3, effect = CONST_ME_BUBBLES, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -170, maxDamage = -240, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -170, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, } monster.defenses = { defense = 15, armor = 30, mitigation = 1.04, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/quara_hydromancer_scout.lua b/data-otservbr-global/monster/aquatics/quara_hydromancer_scout.lua index 1f2e5f19bad..7e67e0bab45 100644 --- a/data-otservbr-global/monster/aquatics/quara_hydromancer_scout.lua +++ b/data-otservbr-global/monster/aquatics/quara_hydromancer_scout.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 244 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Malada, Hrodmir Quara Scout Caves, Quara Grotto, Oramond." + Locations = "Malada, Hrodmir Quara Scout Caves, Quara Grotto, Oramond.", } monster.health = 1100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,7 +91,7 @@ monster.loot = { { name = "obsidian lance", chance = 1530 }, { id = 3098, chance = 940 }, -- ring of healing { name = "wand of cosmic energy", chance = 910 }, - { name = "knight armor", chance = 520 } + { name = "knight armor", chance = 520 }, } monster.attacks = { @@ -100,14 +100,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -90, maxDamage = -150, radius = 3, effect = CONST_ME_BUBBLES, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -170, maxDamage = -240, length = 8, spread = 3, effect = CONST_ME_BUBBLES, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -170, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, } monster.defenses = { defense = 15, armor = 30, mitigation = 1.04, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/quara_mantassin.lua b/data-otservbr-global/monster/aquatics/quara_mantassin.lua index 0781ee7e151..53594881d50 100644 --- a/data-otservbr-global/monster/aquatics/quara_mantassin.lua +++ b/data-otservbr-global/monster/aquatics/quara_mantassin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 241 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Calassa, Frozen Trench, Yalahar (Sunken Quarter)." + Locations = "Calassa, Frozen Trench, Yalahar (Sunken Quarter).", } monster.health = 800 @@ -35,7 +35,7 @@ monster.manaCost = 480 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,11 +86,11 @@ monster.loot = { { name = "two handed sword", chance = 990 }, { name = "fish fin", chance = 610 }, { name = "strange helmet", chance = 100 }, - { name = "blue robe", chance = 60 } + { name = "blue robe", chance = 60 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -138, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -138, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -98,7 +98,7 @@ monster.defenses = { armor = 16, mitigation = 0.70, { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, - { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/quara_mantassin_scout.lua b/data-otservbr-global/monster/aquatics/quara_mantassin_scout.lua index 6bc745ed9f0..f42d6ec6065 100644 --- a/data-otservbr-global/monster/aquatics/quara_mantassin_scout.lua +++ b/data-otservbr-global/monster/aquatics/quara_mantassin_scout.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 242 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Malada, Water Elemental Cave near Port Hope, Hrodmir Quara Scout Caves, Quara Grotto, Oramond." + Locations = "Malada, Water Elemental Cave near Port Hope, Hrodmir Quara Scout Caves, Quara Grotto, Oramond.", } monster.health = 220 @@ -35,7 +35,7 @@ monster.manaCost = 480 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -82,11 +82,11 @@ monster.loot = { { name = "small sapphire", chance = 990 }, { name = "two handed sword", chance = 810 }, { id = 3049, chance = 710 }, -- stealth ring - { name = "fish fin", chance = 360 } + { name = "fish fin", chance = 360 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -112,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/quara_pincher.lua b/data-otservbr-global/monster/aquatics/quara_pincher.lua index a02c3fdaf30..200aed87628 100644 --- a/data-otservbr-global/monster/aquatics/quara_pincher.lua +++ b/data-otservbr-global/monster/aquatics/quara_pincher.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 245 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Calassa, Frozen Trench, Yalahar (Sunken Quarter)." + Locations = "Calassa, Frozen Trench, Yalahar (Sunken Quarter).", } monster.health = 1800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,12 +88,12 @@ monster.loot = { { name = "warrior helmet", chance = 1460 }, { name = "crown armor", chance = 280 }, { name = "glacier robe", chance = 120 }, - { name = "giant shrimp", chance = 40 } + { name = "giant shrimp", chance = 40 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -342, effect = CONST_ME_DRAWBLOOD }, - { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 1, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 1, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/quara_pincher_scout.lua b/data-otservbr-global/monster/aquatics/quara_pincher_scout.lua index 64b65c8cb6a..e3c3a609947 100644 --- a/data-otservbr-global/monster/aquatics/quara_pincher_scout.lua +++ b/data-otservbr-global/monster/aquatics/quara_pincher_scout.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 246 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Malada, Hrodmir Quara Scout Caves, Quara Grotto, Oramond." + Locations = "Malada, Hrodmir Quara Scout Caves, Quara Grotto, Oramond.", } monster.health = 775 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,12 +83,12 @@ monster.loot = { { name = "small ruby", chance = 3440 }, { name = "halberd", chance = 2070 }, { name = "fish fin", chance = 800 }, - { name = "life crystal", chance = 790 } + { name = "life crystal", chance = 790 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240, effect = CONST_ME_DRAWBLOOD }, - { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 1, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 1, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/quara_predator.lua b/data-otservbr-global/monster/aquatics/quara_predator.lua index e73388be4e1..e513aa5712c 100644 --- a/data-otservbr-global/monster/aquatics/quara_predator.lua +++ b/data-otservbr-global/monster/aquatics/quara_predator.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 237 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Calassa, Frozen Trench, Sunken Quarter, Alchemist Quarter (unreachable), \z - The Inquisition Quest, Seacrest Grounds." + The Inquisition Quest, Seacrest Grounds.", } monster.health = 2200 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,11 +91,11 @@ monster.loot = { { name = "assassin star", chance = 530 }, { name = "glacier robe", chance = 440 }, { name = "skull helmet", chance = 390 }, - { name = "giant shrimp", chance = 10 } + { name = "giant shrimp", chance = 10 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -473, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -473, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -103,7 +103,7 @@ monster.defenses = { armor = 40, mitigation = 1.46, { name = "speed", interval = 2000, chance = 15, speedChange = 270, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 25, maxDamage = 75, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 25, maxDamage = 75, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/quara_predator_scout.lua b/data-otservbr-global/monster/aquatics/quara_predator_scout.lua index e386e4dd5ab..2ecdeeab975 100644 --- a/data-otservbr-global/monster/aquatics/quara_predator_scout.lua +++ b/data-otservbr-global/monster/aquatics/quara_predator_scout.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 238 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Malada, Hrodmir Quara Scout Caves, Quara Grotto, Oramond." + Locations = "Malada, Hrodmir Quara Scout Caves, Quara Grotto, Oramond.", } monster.health = 890 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,11 +86,11 @@ monster.loot = { { name = "small diamond", chance = 5020, maxCount = 2 }, { name = "two handed sword", chance = 3010 }, { name = "fish fin", chance = 1080 }, - { name = "northwind rod", chance = 960 } + { name = "northwind rod", chance = 960 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -193, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -193, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/renegade_quara_constrictor.lua b/data-otservbr-global/monster/aquatics/renegade_quara_constrictor.lua index e1813bb3238..523271ae983 100644 --- a/data-otservbr-global/monster/aquatics/renegade_quara_constrictor.lua +++ b/data-otservbr-global/monster/aquatics/renegade_quara_constrictor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1097 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Seacrest Grounds when Seacrest Serpents are not spawning." + Locations = "Seacrest Grounds when Seacrest Serpents are not spawning.", } monster.health = 1500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -89,20 +89,20 @@ monster.loot = { { name = "violet crystal shard", chance = 1210 }, { name = "northwind rod", chance = 740 }, { name = "fish fin", chance = 370 }, - { name = "piggy bank", chance = 190 } + { name = "piggy bank", chance = 190 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 40, effect = CONST_ME_DRAWBLOOD }, { name = "quara constrictor freeze", interval = 2000, chance = 10, target = false }, - { name = "quara constrictor electrify", interval = 2000, chance = 10, range = 1, target = false } + { name = "quara constrictor electrify", interval = 2000, chance = 10, range = 1, target = false }, } monster.defenses = { defense = 20, armor = 35, mitigation = 1.04, - { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/renegade_quara_hydromancer.lua b/data-otservbr-global/monster/aquatics/renegade_quara_hydromancer.lua index b0bbdcc78fc..29a4bfeeda3 100644 --- a/data-otservbr-global/monster/aquatics/renegade_quara_hydromancer.lua +++ b/data-otservbr-global/monster/aquatics/renegade_quara_hydromancer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1098 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Seacrest Grounds when Seacrest Serpents are not spawning." + Locations = "Seacrest Grounds when Seacrest Serpents are not spawning.", } monster.health = 2000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -93,19 +93,19 @@ monster.loot = { { id = 281, chance = 1150 }, -- giant shimmering pearl (green) { name = "wand of cosmic energy", chance = 1150 }, { name = "green gem", chance = 460 }, - { name = "knight armor", chance = 460 } + { name = "knight armor", chance = 460 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 110, attack = 90, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 5, interval = 4000 } }, - { name = "speed", interval = 2000, chance = 15, speedChange = -350, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -350, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, } monster.defenses = { defense = 15, armor = 30, mitigation = 1.04, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/renegade_quara_mantassin.lua b/data-otservbr-global/monster/aquatics/renegade_quara_mantassin.lua index 91dae6dd6fa..3f105ec3991 100644 --- a/data-otservbr-global/monster/aquatics/renegade_quara_mantassin.lua +++ b/data-otservbr-global/monster/aquatics/renegade_quara_mantassin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1099 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Seacrest Grounds when Seacrest Serpents are not spawning." + Locations = "Seacrest Grounds when Seacrest Serpents are not spawning.", } monster.health = 1200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -87,18 +87,18 @@ monster.loot = { { name = "two handed sword", chance = 820 }, { name = "fish fin", chance = 740 }, { name = "blue robe", chance = 660 }, - { id = 3051, chance = 580 } -- energy ring + { id = 3051, chance = 580 }, -- energy ring } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 40, attack = 55, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, skill = 40, attack = 55, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { defense = 15, armor = 16, mitigation = 0.70, - { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/renegade_quara_pincher.lua b/data-otservbr-global/monster/aquatics/renegade_quara_pincher.lua index 5e77db3ff78..a89989e47be 100644 --- a/data-otservbr-global/monster/aquatics/renegade_quara_pincher.lua +++ b/data-otservbr-global/monster/aquatics/renegade_quara_pincher.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1100 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Seacrest Grounds when Seacrest Serpents are not spawning." + Locations = "Seacrest Grounds when Seacrest Serpents are not spawning.", } monster.health = 2800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -94,12 +94,12 @@ monster.loot = { { name = "talon", chance = 310 }, { name = "glacier robe", chance = 200 }, { name = "giant shrimp", chance = 100 }, - { name = "twiceslicer", chance = 100 } + { name = "twiceslicer", chance = 100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 60, effect = CONST_ME_DRAWBLOOD }, - { name = "speed", interval = 2000, chance = 20, speedChange = -300, range = 1, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -300, range = 1, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } monster.defenses = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/renegade_quara_predator.lua b/data-otservbr-global/monster/aquatics/renegade_quara_predator.lua index 6c94c7c25e8..b0e0615728a 100644 --- a/data-otservbr-global/monster/aquatics/renegade_quara_predator.lua +++ b/data-otservbr-global/monster/aquatics/renegade_quara_predator.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1101 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Seacrest Grounds when Seacrest Serpents are not spawning." + Locations = "Seacrest Grounds when Seacrest Serpents are not spawning.", } monster.health = 3250 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -91,11 +91,11 @@ monster.loot = { { name = "glacier robe", chance = 400 }, { name = "abyss hammer", chance = 320 }, { name = "frozen plate", chance = 160 }, - { name = "giant shrimp", chance = 80 } + { name = "giant shrimp", chance = 80 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 100, attack = 82, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, skill = 100, attack = 82, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -103,7 +103,7 @@ monster.defenses = { armor = 40, mitigation = 1.46, { name = "speed", interval = 2000, chance = 15, speedChange = 30, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/aquatics/shark.lua b/data-otservbr-global/monster/aquatics/shark.lua index 455d87778b8..ca990d46443 100644 --- a/data-otservbr-global/monster/aquatics/shark.lua +++ b/data-otservbr-global/monster/aquatics/shark.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 782 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Fiehonja, Seacrest Grounds, Krailos Steppe underwater cave." + Locations = "Fiehonja, Seacrest Grounds, Krailos Steppe underwater cave.", } monster.health = 1200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -81,11 +81,11 @@ monster.loot = { { name = "eye of a deepling", chance = 1200 }, { name = "small sapphire", chance = 1090 }, { id = 281, chance = 390 }, -- giant shimmering pearl (green) - { name = "fish fin", chance = 161 } + { name = "fish fin", chance = 161 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -175, effect = CONST_ME_DRAWBLOOD } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -175, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/agressive_chicken.lua b/data-otservbr-global/monster/birds/agressive_chicken.lua index 2c7a0573913..65ebb36a46d 100644 --- a/data-otservbr-global/monster/birds/agressive_chicken.lua +++ b/data-otservbr-global/monster/birds/agressive_chicken.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 15000 @@ -22,7 +22,7 @@ monster.manaCost = 220 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -46,31 +46,31 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Gokgoooook", yell = false }, - { text = "Cluck Cluck", yell = false } + { text = "Cluck Cluck", yell = false }, } monster.loot = { { name = "meat", chance = 2120, maxCount = 2 }, { id = 3606, chance = 950 }, -- egg { name = "worm", chance = 10000, maxCount = 3 }, - { name = "chicken feather", chance = 20000 } + { name = "chicken feather", chance = 20000 }, } monster.defenses = { defense = 5, - armor = 1 + armor = 1, } monster.elements = { @@ -83,14 +83,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/agrestic_chicken.lua b/data-otservbr-global/monster/birds/agrestic_chicken.lua index 7d923034ca1..c187503434b 100644 --- a/data-otservbr-global/monster/birds/agrestic_chicken.lua +++ b/data-otservbr-global/monster/birds/agrestic_chicken.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1979 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Bounac, the Order of the Lion settlement." + Locations = "Bounac, the Order of the Lion settlement.", } monster.health = 15 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,7 +76,7 @@ monster.loot = { { name = "meat", chance = 2120, maxCount = 2 }, { id = 3606, chance = 980, maxCount = 2 }, -- egg { name = "worm", chance = 11000, maxCount = 3 }, - { name = "chicken feather", chance = 19000, maxCount = 2 } + { name = "chicken feather", chance = 19000, maxCount = 2 }, } monster.defenses = { @@ -102,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/berserker_chicken.lua b/data-otservbr-global/monster/birds/berserker_chicken.lua index 9d40d8ee73e..787a5f826cc 100644 --- a/data-otservbr-global/monster/birds/berserker_chicken.lua +++ b/data-otservbr-global/monster/birds/berserker_chicken.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 561 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Isle of Evil." + Locations = "Isle of Evil.", } monster.health = 465 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -76,20 +76,20 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 50000, maxCount = 100 } + { name = "gold coin", chance = 50000, maxCount = 100 }, } monster.attacks = { { name = "melee", interval = 1200, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 1, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -41, maxDamage = -70, effect = CONST_ME_EXPLOSIONAREA, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -41, maxDamage = -70, effect = CONST_ME_EXPLOSIONAREA, target = false }, } monster.defenses = { defense = 12, armor = 12, mitigation = 0.28, - { name = "speed", interval = 1000, chance = 40, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 8000 } + { name = "speed", interval = 1000, chance = 40, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 8000 }, } monster.elements = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/cave_parrot.lua b/data-otservbr-global/monster/birds/cave_parrot.lua index 00fc23b751c..d88b32ff302 100644 --- a/data-otservbr-global/monster/birds/cave_parrot.lua +++ b/data-otservbr-global/monster/birds/cave_parrot.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1307 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Desecrated Glade" + Locations = "Desecrated Glade", } monster.health = 30 @@ -35,7 +35,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -72,11 +72,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 5 } + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 5 }, } monster.defenses = { @@ -102,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/chicken.lua b/data-otservbr-global/monster/birds/chicken.lua index d44947a262f..675ceead30c 100644 --- a/data-otservbr-global/monster/birds/chicken.lua +++ b/data-otservbr-global/monster/birds/chicken.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 111 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Sabrehaven, Rookgaard, The McRonalds Farm in Thais, Northport, \z Fibula, Carlin (killable but unreachable), Greenshore, Krimhorn, Orc Fortress, \z - Factory Quarter, also theres one in the farm near Edron." + Factory Quarter, also theres one in the farm near Edron.", } monster.health = 15 @@ -37,7 +37,7 @@ monster.manaCost = 220 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -80,7 +80,7 @@ monster.loot = { { name = "meat", chance = 2120, maxCount = 2 }, { id = 3606, chance = 950 }, -- egg { name = "worm", chance = 10000, maxCount = 3 }, - { name = "chicken feather", chance = 20000 } + { name = "chicken feather", chance = 20000 }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/demon_parrot.lua b/data-otservbr-global/monster/birds/demon_parrot.lua index f9337536edd..a606e4efe18 100644 --- a/data-otservbr-global/monster/birds/demon_parrot.lua +++ b/data-otservbr-global/monster/birds/demon_parrot.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 562 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Isle of Evil." + Locations = "Isle of Evil.", } monster.health = 360 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -78,14 +78,14 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 81630, maxCount = 99 } + { name = "gold coin", chance = 81630, maxCount = 99 }, } monster.attacks = { { name = "melee", interval = 1200, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "drunk", interval = 1000, chance = 30, length = 5, spread = 3, effect = CONST_ME_SOUND_RED, target = false }, { name = "combat", interval = 1000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -25, maxDamage = -45, range = 5, shootEffect = CONST_ANI_SUDDENDEATH, target = false }, - { name = "combat", interval = 1000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -45, range = 1, target = false } + { name = "combat", interval = 1000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -45, range = 1, target = false }, } monster.defenses = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/dire_penguin.lua b/data-otservbr-global/monster/birds/dire_penguin.lua index 3b2a753cdef..6eb73eff344 100644 --- a/data-otservbr-global/monster/birds/dire_penguin.lua +++ b/data-otservbr-global/monster/birds/dire_penguin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 335 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 3, Locations = "Any place with penguins like, Formorgar Glacier, Helheim, Tyrsung or Svargrond. \z - Known spawn locations: west of Svargrond, up the Formorgar Glacier." + Known spawn locations: west of Svargrond, up the Formorgar Glacier.", } monster.health = 173 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -79,20 +79,20 @@ monster.loot = { { id = 3578, chance = 11040, maxCount = 3 }, -- fish { name = "rainbow trout", chance = 4800 }, { id = 3580, chance = 5900 }, -- northern pike - { name = "green perch", chance = 6200 } + { name = "green perch", chance = 6200 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -35, range = 7, radius = 1, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_EXPLOSIONAREA, target = true }, - { name = "speed", interval = 2000, chance = 10, speedChange = -600, range = 7, radius = 4, effect = CONST_ME_POFF, target = false, duration = 9000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -600, range = 7, radius = 4, effect = CONST_ME_POFF, target = false, duration = 9000 }, } monster.defenses = { defense = 16, armor = 16, mitigation = 0.59, - { name = "speed", interval = 2000, chance = 15, speedChange = 310, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 310, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } monster.elements = { @@ -112,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/flamingo.lua b/data-otservbr-global/monster/birds/flamingo.lua index 47f46eb24cf..6556268a207 100644 --- a/data-otservbr-global/monster/birds/flamingo.lua +++ b/data-otservbr-global/monster/birds/flamingo.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 212 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Tiquanda, Shattered Isles, Gardens of Night." + Locations = "Tiquanda, Shattered Isles, Gardens of Night.", } monster.health = 25 @@ -35,7 +35,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -73,7 +73,7 @@ monster.voices = { } monster.loot = { - { name = "downy feather", chance = 1180 } + { name = "downy feather", chance = 1180 }, } monster.defenses = { @@ -99,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/headpecker.lua b/data-otservbr-global/monster/birds/headpecker.lua index ad8ccb1e5ac..2694021b76b 100644 --- a/data-otservbr-global/monster/birds/headpecker.lua +++ b/data-otservbr-global/monster/birds/headpecker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2275 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Crystal Enigma" + Locations = "Crystal Enigma", } monster.health = 16300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 70 + chance = 70, } monster.strategiesTarget = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/jungle_moa.lua b/data-otservbr-global/monster/birds/jungle_moa.lua index 09ed0e6aef9..97e8f703d1b 100644 --- a/data-otservbr-global/monster/birds/jungle_moa.lua +++ b/data-otservbr-global/monster/birds/jungle_moa.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2257 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "All around Marapur" + Locations = "All around Marapur", } monster.health = 1300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/marsh_stalker.lua b/data-otservbr-global/monster/birds/marsh_stalker.lua index b481ec6e037..2a98e2385ab 100644 --- a/data-otservbr-global/monster/birds/marsh_stalker.lua +++ b/data-otservbr-global/monster/birds/marsh_stalker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 914 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Venore swamp surface, Venore Salamander Cave, Dryad Gardens." + Locations = "Venore swamp surface, Venore Salamander Cave, Dryad Gardens.", } monster.health = 100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -82,12 +82,12 @@ monster.loot = { { name = "longsword", chance = 7560 }, { name = "marsh stalker beak", chance = 6080 }, { id = 3003, chance = 4830 }, -- rope - { name = "seeds", chance = 110 } + { name = "seeds", chance = 110 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -8, range = 7, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -8, range = 7, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/parrot.lua b/data-otservbr-global/monster/birds/parrot.lua index dc7f7595c57..7e67056a96f 100644 --- a/data-otservbr-global/monster/birds/parrot.lua +++ b/data-otservbr-global/monster/birds/parrot.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 217 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "In the jungle of Tiquanda, Liberty Bay, the Shattered Isles, and as a house pet in Meriana." + Locations = "In the jungle of Tiquanda, Liberty Bay, the Shattered Isles, and as a house pet in Meriana.", } monster.health = 25 @@ -35,7 +35,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -85,11 +85,10 @@ monster.voices = { { text = "I'm heeerrre! Screeeech!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, } monster.defenses = { @@ -115,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/penguin.lua b/data-otservbr-global/monster/birds/penguin.lua index 1d3f1748db2..aeb9966d8cb 100644 --- a/data-otservbr-global/monster/birds/penguin.lua +++ b/data-otservbr-global/monster/birds/penguin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 318 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "In and north of Formorgar Glacier, Nibelor, Helheim, Grimlund, south of Svargrond, Chyllfroest." + Locations = "In and north of Formorgar Glacier, Nibelor, Helheim, Grimlund, south of Svargrond, Chyllfroest.", } monster.health = 33 @@ -35,7 +35,7 @@ monster.manaCost = 290 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,11 +75,11 @@ monster.voices = { monster.loot = { { id = 3578, chance = 7830, maxCount = 2 }, -- fish { name = "rainbow trout", chance = 70 }, - { name = "green perch", chance = 130 } + { name = "green perch", chance = 130 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -3 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -3 }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/pigeon.lua b/data-otservbr-global/monster/birds/pigeon.lua index 0b5992d6d40..3eabb77dd01 100644 --- a/data-otservbr-global/monster/birds/pigeon.lua +++ b/data-otservbr-global/monster/birds/pigeon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 915 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 1, Stars = 0, Occurrence = 1, - Locations = "Streets of Venore, Gardens of Night." + Locations = "Streets of Venore, Gardens of Night.", } monster.health = 30 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,8 +75,7 @@ monster.voices = { { text = "Coo! Coo! Coooo!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/seagull.lua b/data-otservbr-global/monster/birds/seagull.lua index dca8dd8e57e..d9ef9f7c1a1 100644 --- a/data-otservbr-global/monster/birds/seagull.lua +++ b/data-otservbr-global/monster/birds/seagull.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 264 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Various locations, sighted in the Shattered Isles, Venore, Thais, Femor Hills, \z Cormaya, Edron Troll-Goblin Peninsula, Liberty Bay, Port Hope, Fibula, Drefia, Factory Quarter, \z bordering Orc Fort, Rookgaard Premium Zone (not reachable), AbDendriel elf caves, \z - Northern coast of Tibia between Dalbrect and Northport." + Northern coast of Tibia between Dalbrect and Northport.", } monster.health = 25 @@ -38,7 +38,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,11 +75,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -3 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -3 }, } monster.defenses = { @@ -105,7 +104,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/birds/terror_bird.lua b/data-otservbr-global/monster/birds/terror_bird.lua index ce8eaff910c..13e31a91698 100644 --- a/data-otservbr-global/monster/birds/terror_bird.lua +++ b/data-otservbr-global/monster/birds/terror_bird.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 218 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Around Port Hope, Arena and Zoo Quarter in Yalahar, few on Zao steppes." + Locations = "Around Port Hope, Arena and Zoo Quarter in Yalahar, few on Zao steppes.", } monster.health = 300 @@ -35,7 +35,7 @@ monster.manaCost = 490 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,11 +84,11 @@ monster.loot = { { name = "colourful feather", chance = 3090 }, { name = "health potion", chance = 690 }, { name = "seeds", chance = 280 }, - { name = "feather headdress", chance = 100 } + { name = "feather headdress", chance = 100 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/apocalypse.lua b/data-otservbr-global/monster/bosses/apocalypse.lua index cf0c753079e..77ad2d660c4 100644 --- a/data-otservbr-global/monster/bosses/apocalypse.lua +++ b/data-otservbr-global/monster/bosses/apocalypse.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 125000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 40 + chance = 40, } monster.strategiesTarget = { @@ -100,7 +100,7 @@ monster.loot = { { name = "teddy bear", chance = 10500 }, { name = "thunder hammer", chance = 3500 }, { id = 3002, chance = 5100 }, -- voodoo doll - { name = "white pearl", chance = 12500, maxCount = 35 } + { name = "white pearl", chance = 12500, maxCount = 35 }, } monster.attacks = { @@ -113,7 +113,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 9, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 5000, chance = 18, minDamage = -800, maxDamage = -1000, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "combat", interval = 2000, chance = 6, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1200, radius = 14, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 6, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1200, radius = 14, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.defenses = { armor = 188, -- mitigation = ???, { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 3000, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 8, speedChange = 480, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 2000, chance = 8, speedChange = 480, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -141,11 +141,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -153,13 +152,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/apprentice_sheng.lua b/data-otservbr-global/monster/bosses/apprentice_sheng.lua index f41de6f283c..f0c6feacd95 100644 --- a/data-otservbr-global/monster/bosses/apprentice_sheng.lua +++ b/data-otservbr-global/monster/bosses/apprentice_sheng.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 95 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Hyaena", chance = 30, interval = 5000, count = 2 } - } + { name = "Hyaena", chance = 30, interval = 5000, count = 2 }, + }, } monster.voices = { @@ -81,21 +81,21 @@ monster.loot = { { name = "leather legs", chance = 23000 }, { id = 3595, chance = 7690 }, -- carrot { name = "leather helmet", chance = 7690 }, - { name = "knife", chance = 7690 } + { name = "knife", chance = 7690 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, { name = "energyfield", interval = 1000, chance = 8, range = 7, radius = 1, shootEffect = CONST_ANI_ENERGY, target = true }, { name = "combat", interval = 1000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -25, range = 7, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -45, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -45, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 13, armor = 12, -- mitigation = ???, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 20, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 20, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -115,11 +115,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -127,13 +126,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/armenius.lua b/data-otservbr-global/monster/bosses/armenius.lua index ae66acc4fbe..ffe6c7b412e 100644 --- a/data-otservbr-global/monster/bosses/armenius.lua +++ b/data-otservbr-global/monster/bosses/armenius.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 550 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -64,13 +64,13 @@ monster.voices = { } monster.loot = { - { id = 3434, chance = 5230 } -- vampire shield + { id = 3434, chance = 5230 }, -- vampire shield } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 50 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, range = 1, radius = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -400, radius = 1, effect = CONST_ME_MAGIC_RED, target = false, duration = 60000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -400, radius = 1, effect = CONST_ME_MAGIC_RED, target = false, duration = 60000 }, } monster.defenses = { @@ -79,7 +79,7 @@ monster.defenses = { -- mitigation = ???, { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_GROUNDSHAKER, target = false, duration = 5000, outfitMonster = "bat" }, { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, target = false }, } monster.elements = { @@ -92,18 +92,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = -50 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -111,13 +110,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/bazir.lua b/data-otservbr-global/monster/bosses/bazir.lua index 28f271050ff..5fc46367c42 100644 --- a/data-otservbr-global/monster/bosses/bazir.lua +++ b/data-otservbr-global/monster/bosses/bazir.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 110000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "bazir", chance = 15, interval = 1000, count = 1 } - } + { name = "bazir", chance = 15, interval = 1000, count = 1 }, + }, } monster.voices = { @@ -130,7 +130,7 @@ monster.loot = { { id = 3265, chance = 20000 }, -- two handed sword { id = 3002, chance = 100 }, -- voodoo doll { id = 3069, chance = 3500 }, -- necrotic rod - { id = 3026, chance = 12500, maxCount = 15 } -- white pearl + { id = 3026, chance = 12500, maxCount = 15 }, -- white pearl } monster.attacks = { @@ -145,7 +145,7 @@ monster.attacks = { { name = "outfit", interval = 1000, chance = 2, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "demon" }, { name = "outfit", interval = 1000, chance = 2, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitItem = 3058 }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -900, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -500, maxDamage = -850, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -500, maxDamage = -850, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -157,7 +157,7 @@ monster.defenses = { { name = "speed", interval = 1000, chance = 8, speedChange = 1901, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, { name = "invisible", interval = 1000, chance = 4, effect = CONST_ME_MAGIC_BLUE }, { name = "invisible", interval = 1000, chance = 17, effect = CONST_ME_MAGIC_BLUE }, - { name = "outfit", interval = 1000, chance = 2, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000, outfitItem = 2916 } + { name = "outfit", interval = 1000, chance = 2, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000, outfitItem = 2916 }, } monster.elements = { @@ -177,11 +177,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -189,13 +188,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/bibby_bloodbath.lua b/data-otservbr-global/monster/bosses/bibby_bloodbath.lua index a369637192d..8c1b09af2b5 100644 --- a/data-otservbr-global/monster/bosses/bibby_bloodbath.lua +++ b/data-otservbr-global/monster/bosses/bibby_bloodbath.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,20 +86,20 @@ monster.loot = { { name = "giant sword", chance = 3160 }, { name = "crusader helmet", chance = 1900 }, { name = "butcher's axe", chance = 1270 }, - { id = 7395, chance = 1270 } -- orc trophy + { id = 7395, chance = 1270 }, -- orc trophy } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -300, radius = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -300, radius = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, } monster.defenses = { defense = 35, armor = 58, -- mitigation = ???, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -119,11 +119,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -131,13 +130,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/big_boss_trolliver.lua b/data-otservbr-global/monster/bosses/big_boss_trolliver.lua index 127720a8008..24bc4ef5250 100644 --- a/data-otservbr-global/monster/bosses/big_boss_trolliver.lua +++ b/data-otservbr-global/monster/bosses/big_boss_trolliver.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 5, summons = { - { name = "Troll Champion", chance = 30, interval = 2000, count = 5 } - } + { name = "Troll Champion", chance = 30, interval = 2000, count = 5 }, + }, } monster.voices = { @@ -83,11 +83,11 @@ monster.loot = { { name = "leather boots", chance = 9000 }, { name = "silver amulet", chance = 5450 }, { name = "studded club", chance = 5450 }, - { name = "spear", chance = 100000 } + { name = "spear", chance = 100000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, } monster.defenses = { @@ -113,11 +113,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -125,13 +124,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/black_knight.lua b/data-otservbr-global/monster/bosses/black_knight.lua index 00003fd5ca6..fe50d74af3f 100644 --- a/data-otservbr-global/monster/bosses/black_knight.lua +++ b/data-otservbr-global/monster/bosses/black_knight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 95, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,12 +93,12 @@ monster.loot = { { name = "lightning legs", chance = 580 }, { name = "boots of haste", chance = 400 }, { name = "dragon lance", chance = 290 }, - { name = "piggy bank", chance = 120 } + { name = "piggy bank", chance = 120 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SPEAR, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, } monster.defenses = { @@ -124,11 +124,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -136,13 +135,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/brain_parasite.lua b/data-otservbr-global/monster/bosses/brain_parasite.lua index d87220938e5..532d7df04d6 100644 --- a/data-otservbr-global/monster/bosses/brain_parasite.lua +++ b/data-otservbr-global/monster/bosses/brain_parasite.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 7500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { diff --git a/data-otservbr-global/monster/bosses/bullwark.lua b/data-otservbr-global/monster/bosses/bullwark.lua index d20417a45a4..2bc9ff91f02 100644 --- a/data-otservbr-global/monster/bosses/bullwark.lua +++ b/data-otservbr-global/monster/bosses/bullwark.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 3 + chance = 3, } monster.strategiesTarget = { @@ -85,7 +85,7 @@ monster.loot = { { name = "moohtant cudgel", chance = 1800 }, { name = "red piece of cloth", chance = 1500 }, { name = "yellow gem", chance = 1200 }, - { name = "one hit wonder", chance = 350 } + { name = "one hit wonder", chance = 350 }, } monster.attacks = { @@ -95,7 +95,7 @@ monster.attacks = { { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 9, minDamage = -400, maxDamage = -600, radius = 8, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -400, range = 7, radius = 6, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -400, range = 7, radius = 4, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "bullwark paralyze", interval = 2000, chance = 6, target = false } + { name = "bullwark paralyze", interval = 2000, chance = 6, target = false }, } monster.defenses = { @@ -104,7 +104,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 1, type = COMBAT_HEALING, minDamage = 4000, maxDamage = 6000, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 11, speedChange = 660, effect = CONST_ME_HITAREA, target = false, duration = 7000 }, - { name = "bullwark summon", interval = 2000, chance = 9, target = false } + { name = "bullwark summon", interval = 2000, chance = 9, target = false }, } monster.elements = { @@ -124,11 +124,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -136,13 +135,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/chikhaton.lua b/data-otservbr-global/monster/bosses/chikhaton.lua index 84fb857da1f..53a430621ca 100644 --- a/data-otservbr-global/monster/bosses/chikhaton.lua +++ b/data-otservbr-global/monster/bosses/chikhaton.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 30 + chance = 30, } monster.strategiesTarget = { @@ -68,19 +68,18 @@ monster.voices = { { text = "Vae Victis.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1130 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { defense = 35, armor = 35, -- mitigation = ???, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 550, maxDamage = 850, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 550, maxDamage = 850, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -100,11 +99,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -112,13 +110,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/clubarc_the_plunderer.lua b/data-otservbr-global/monster/bosses/clubarc_the_plunderer.lua index 0bd44f1f230..aa10611af90 100644 --- a/data-otservbr-global/monster/bosses/clubarc_the_plunderer.lua +++ b/data-otservbr-global/monster/bosses/clubarc_the_plunderer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 400 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -49,18 +49,18 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Orc arga Huummmak!", yell = false } + { text = "Orc arga Huummmak!", yell = false }, } monster.loot = { @@ -72,20 +72,20 @@ monster.loot = { { name = "bow", chance = 3230 }, { name = "orc tooth", chance = 2420 }, { name = "silkweaver bow", chance = 2420 }, - { name = "crossbow", chance = 1610 } + { name = "crossbow", chance = 1610 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -85, range = 7, shootEffect = CONST_ANI_ONYXARROW, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 11, minDamage = -8, maxDamage = -8, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 11, minDamage = -8, maxDamage = -8, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 25, armor = 25, - { name = "speed", interval = 2000, chance = 15, speedChange = 350, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 350, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -98,18 +98,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -117,13 +116,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/custodian.lua b/data-otservbr-global/monster/bosses/custodian.lua index 54d6cbb432e..71847cbe83c 100644 --- a/data-otservbr-global/monster/bosses/custodian.lua +++ b/data-otservbr-global/monster/bosses/custodian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,7 +83,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, { name = "explosion wave", interval = 2000, chance = 14, minDamage = -450, maxDamage = -600, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -610, radius = 5, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -730, radius = 4, effect = CONST_ME_FIREATTACK, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -730, radius = 4, effect = CONST_ME_FIREATTACK, target = false }, } monster.defenses = { @@ -109,11 +109,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -121,13 +120,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/dharalion.lua b/data-otservbr-global/monster/bosses/dharalion.lua index 452def8d030..3233e57448b 100644 --- a/data-otservbr-global/monster/bosses/dharalion.lua +++ b/data-otservbr-global/monster/bosses/dharalion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "demon skeleton", chance = 6, interval = 1000, count = 2 } - } + { name = "demon skeleton", chance = 6, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -94,7 +94,7 @@ monster.loot = { { name = "sling herb", chance = 8960 }, { id = 3257, chance = 7460 }, -- cornucopia { name = "green tunic", chance = 4480 }, - { name = "royal spear", chance = 1490, maxCount = 2 } + { name = "royal spear", chance = 1490, maxCount = 2 }, } monster.attacks = { @@ -102,7 +102,7 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -30, maxDamage = -60, range = 7, target = false }, { name = "combat", interval = 1000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -70, maxDamage = -90, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -80, maxDamage = -151, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = false }, - { name = "effect", interval = 1000, chance = 13, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false } + { name = "effect", interval = 1000, chance = 13, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { @@ -110,7 +110,7 @@ monster.defenses = { armor = 15, -- mitigation = ???, { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 90, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 7, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 } + { name = "speed", interval = 1000, chance = 7, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 }, } monster.elements = { @@ -130,11 +130,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -142,13 +141,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/diblis_the_fair.lua b/data-otservbr-global/monster/bosses/diblis_the_fair.lua index 326293e7bf2..531dc6c2818 100644 --- a/data-otservbr-global/monster/bosses/diblis_the_fair.lua +++ b/data-otservbr-global/monster/bosses/diblis_the_fair.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Banshee", chance = 50, interval = 4500, count = 3 } - } + { name = "Banshee", chance = 50, interval = 4500, count = 3 }, + }, } monster.voices = { @@ -87,12 +87,12 @@ monster.loot = { { name = "platinum coin", chance = 12000, maxCount = 5 }, { id = 3098, chance = 12000 }, -- ring of healing { id = 3114, chance = 12000 }, -- skull - { name = "spellbook of lost souls", chance = 2000 } + { name = "spellbook of lost souls", chance = 2000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 95 }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -155, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -155, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { @@ -100,7 +100,7 @@ monster.defenses = { armor = 30, -- mitigation = ???, { name = "combat", interval = 1000, chance = 12, type = COMBAT_HEALING, minDamage = 100, maxDamage = 235, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 3000, chance = 25, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 3000, chance = 25, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -120,11 +120,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -132,13 +131,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/diseased_bill.lua b/data-otservbr-global/monster/bosses/diseased_bill.lua index 409a035bc89..b8982c4e259 100644 --- a/data-otservbr-global/monster/bosses/diseased_bill.lua +++ b/data-otservbr-global/monster/bosses/diseased_bill.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -72,14 +72,14 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 28000, maxCount = 20 } + { name = "gold coin", chance = 28000, maxCount = 20 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -207, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -140, effect = CONST_ME_MAGIC_RED, target = true }, { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -175, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, target = false }, - { name = "speed", interval = 3000, chance = 40, speedChange = -900, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 } + { name = "speed", interval = 3000, chance = 40, speedChange = -900, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 }, } monster.defenses = { @@ -87,7 +87,7 @@ monster.defenses = { armor = 10, -- mitigation = ???, { name = "speed", interval = 10000, chance = 40, speedChange = 310, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 20000 }, - { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -107,11 +107,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -119,13 +118,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/diseased_dan.lua b/data-otservbr-global/monster/bosses/diseased_dan.lua index 320efacc5e6..8eb9d3a1535 100644 --- a/data-otservbr-global/monster/bosses/diseased_dan.lua +++ b/data-otservbr-global/monster/bosses/diseased_dan.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -72,14 +72,14 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 28000, maxCount = 21 } + { name = "gold coin", chance = 28000, maxCount = 21 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -207, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -140, effect = CONST_ME_MAGIC_RED, target = true }, { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -175, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, target = false }, - { name = "speed", interval = 3000, chance = 40, speedChange = -900, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 } + { name = "speed", interval = 3000, chance = 40, speedChange = -900, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 }, } monster.defenses = { @@ -87,7 +87,7 @@ monster.defenses = { armor = 10, -- mitigation = ???, { name = "speed", interval = 10000, chance = 40, speedChange = 310, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 20000 }, - { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -107,11 +107,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -119,13 +118,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/diseased_fred.lua b/data-otservbr-global/monster/bosses/diseased_fred.lua index db9b941a7a8..e516fd9e2df 100644 --- a/data-otservbr-global/monster/bosses/diseased_fred.lua +++ b/data-otservbr-global/monster/bosses/diseased_fred.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -72,14 +72,14 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 28000, maxCount = 17 } + { name = "gold coin", chance = 28000, maxCount = 17 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -207, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -140, effect = CONST_ME_MAGIC_RED, target = true }, { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -175, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, target = false }, - { name = "speed", interval = 3000, chance = 40, speedChange = -900, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 } + { name = "speed", interval = 3000, chance = 40, speedChange = -900, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 }, } monster.defenses = { @@ -87,7 +87,7 @@ monster.defenses = { armor = 10, -- mitigation = ???, { name = "speed", interval = 10000, chance = 40, speedChange = 310, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 20000 }, - { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -107,11 +107,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -119,13 +118,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/ekatrix.lua b/data-otservbr-global/monster/bosses/ekatrix.lua index e9617315ac0..99c7fc0f603 100644 --- a/data-otservbr-global/monster/bosses/ekatrix.lua +++ b/data-otservbr-global/monster/bosses/ekatrix.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 500 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1140, - bossRace = RARITY_ARCHFOE + bossRace = RARITY_ARCHFOE, } monster.strategiesTarget = { @@ -54,12 +54,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -77,18 +77,18 @@ monster.loot = { { name = "cookie", chance = 25000, maxCount = 10 }, { name = "star herb", chance = 11333 }, { name = "bag of apple slices", chance = 2940 }, - { name = "necrotic rod", chance = 2940 } + { name = "necrotic rod", chance = 2940 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -30, maxDamage = -60, range = 5, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "firefield", interval = 2000, chance = 10, range = 5, radius = 1, shootEffect = CONST_ANI_FIRE, target = true } + { name = "firefield", interval = 2000, chance = 10, range = 5, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -101,18 +101,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -120,13 +119,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/energized_raging_mage.lua b/data-otservbr-global/monster/bosses/energized_raging_mage.lua index 85fff943803..d8d7d4809e8 100644 --- a/data-otservbr-global/monster/bosses/energized_raging_mage.lua +++ b/data-otservbr-global/monster/bosses/energized_raging_mage.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "Golden Servant", chance = 50, interval = 2000, count = 1 } - } + { name = "Golden Servant", chance = 50, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -73,8 +73,7 @@ monster.voices = { { text = "MWAAAHAHAAA!! NO ONE!! NO ONE CAN DEFEAT MEEE!!!", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "energized raging mage skill reducer", interval = 3000, chance = 15, target = false }, @@ -82,14 +81,14 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 32, attack = 37 }, { name = "thunderstorm rune", interval = 2000, chance = 40, minDamage = -150, maxDamage = -230, range = 7, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -210, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_BIGCLOUDS, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_BIGCLOUDS, target = false }, } monster.defenses = { defense = 35, armor = 30, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 155, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 155, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -109,11 +108,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -121,13 +119,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/fleshslicer.lua b/data-otservbr-global/monster/bosses/fleshslicer.lua index 2b0552583d2..53aafc0fd31 100644 --- a/data-otservbr-global/monster/bosses/fleshslicer.lua +++ b/data-otservbr-global/monster/bosses/fleshslicer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -67,11 +67,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -99 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -99 }, } monster.defenses = { @@ -97,11 +96,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -109,13 +107,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/freegoiz.lua b/data-otservbr-global/monster/bosses/freegoiz.lua index d1c7e5d7f09..eee6234add3 100644 --- a/data-otservbr-global/monster/bosses/freegoiz.lua +++ b/data-otservbr-global/monster/bosses/freegoiz.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 80000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -63,7 +63,7 @@ monster.voices = { { text = "BOW TO THE POWER OF THE RUTHLESS SEVEN!", yell = true }, { text = "DESTRUCTION!", yell = true }, { text = "CHAOS!", yell = true }, - { text = "DEATH TO ALL!", yell = true } + { text = "DEATH TO ALL!", yell = true }, } monster.loot = { @@ -123,7 +123,7 @@ monster.loot = { { id = 3069, chance = 3500 }, -- necrotic rod { id = 3002, chance = 100 }, -- voodoo doll { id = 3072, chance = 2500 }, -- wand of decay - { id = 3026, chance = 12500, maxCount = 15 } -- white pearl + { id = 3026, chance = 12500, maxCount = 15 }, -- white pearl } monster.attacks = { @@ -136,7 +136,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 9, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 5000, chance = 18, minDamage = -800, maxDamage = -1000, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "combat", interval = 2000, chance = 6, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1200, radius = 14, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 6, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1200, radius = 14, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.defenses = { @@ -144,7 +144,7 @@ monster.defenses = { armor = 188, -- mitigation = ???, { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 3000, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 8, speedChange = 480, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 2000, chance = 8, speedChange = 480, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -164,11 +164,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -176,13 +175,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/gaffir.lua b/data-otservbr-global/monster/bosses/gaffir.lua index 5e43acb9478..3370cb9b08b 100644 --- a/data-otservbr-global/monster/bosses/gaffir.lua +++ b/data-otservbr-global/monster/bosses/gaffir.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 50, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -32,7 +32,7 @@ monster.events = { monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -70,8 +70,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "Black Cobra", chance = 10, interval = 2000, count = 1 } - } + { name = "Black Cobra", chance = 10, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -103,7 +103,7 @@ monster.loot = { { name = "cobra wand", chance = 100 }, { name = "cobra axe", chance = 100 }, { name = "cobra rod", chance = 100 }, - { name = "cobra crest", chance = 100 } + { name = "cobra crest", chance = 100 }, } monster.attacks = { @@ -112,7 +112,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -580, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 3000, chance = 14, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -750, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 16, type = COMBAT_EARTHDAMAGE, minDamage = -500, maxDamage = -620, radius = 4, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_GREEN_RINGS, target = true }, - { name = "combat", interval = 3000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -320, maxDamage = -500, radius = 2, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 3000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -320, maxDamage = -500, radius = 2, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { @@ -138,11 +138,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -150,13 +149,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/general_murius.lua b/data-otservbr-global/monster/bosses/general_murius.lua index 70e9bd0956f..4c761e0b89f 100644 --- a/data-otservbr-global/monster/bosses/general_murius.lua +++ b/data-otservbr-global/monster/bosses/general_murius.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.summon = { maxSummons = 4, summons = { { name = "Minotaur Archer", chance = 15, interval = 1000, count = 2 }, - { name = "Minotaur Guard", chance = 12, interval = 1000, count = 2 } - } + { name = "Minotaur Guard", chance = 12, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -92,13 +92,13 @@ monster.loot = { { id = 7401, chance = 23080 }, -- minotaur trophy { name = "power bolt", chance = 23080, maxCount = 7 }, { name = "fishing rod", chance = 7690 }, - { name = "strong health potion", chance = 7690 } + { name = "strong health potion", chance = 7690 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -170 }, { name = "combat", interval = 1000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -120, range = 7, shootEffect = CONST_ANI_BOLT, target = false }, - { name = "combat", interval = 1000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -80, radius = 3, effect = CONST_ME_HITAREA, target = false } + { name = "combat", interval = 1000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -80, radius = 3, effect = CONST_ME_HITAREA, target = false }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.defenses = { armor = 16, -- mitigation = ???, { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 275, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 275, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -126,11 +126,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -138,13 +137,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/glitterscale.lua b/data-otservbr-global/monster/bosses/glitterscale.lua index bb6127cfc90..0705a895176 100644 --- a/data-otservbr-global/monster/bosses/glitterscale.lua +++ b/data-otservbr-global/monster/bosses/glitterscale.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -67,13 +67,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 40 }, { name = "combat", interval = 2000, chance = 8, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -180, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -120, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -120, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { @@ -99,11 +98,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -111,13 +109,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/grandfather_tridian.lua b/data-otservbr-global/monster/bosses/grandfather_tridian.lua index e26d6fa8edc..6c2f0e9f188 100644 --- a/data-otservbr-global/monster/bosses/grandfather_tridian.lua +++ b/data-otservbr-global/monster/bosses/grandfather_tridian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -66,8 +66,8 @@ monster.summon = { maxSummons = 2, summons = { { name = "Crypt Shambler", chance = 10, interval = 2000, count = 1 }, - { name = "Ghost", chance = 10, interval = 2000, count = 1 } - } + { name = "Ghost", chance = 10, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -87,13 +87,13 @@ monster.loot = { { id = 6087, chance = 3000 }, -- music sheet (first verse) { id = 6088, chance = 3000 }, -- music sheet (second verse) { id = 6089, chance = 3000 }, -- music sheet (third verse) - { id = 6090, chance = 3000 } -- music sheet (fourth verse) + { id = 6090, chance = 3000 }, -- music sheet (fourth verse) } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -138, maxDamage = -362, range = 1, radius = 1, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYAREA, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -50, range = 1, radius = 1, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -50, range = 1, radius = 1, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { @@ -101,7 +101,7 @@ monster.defenses = { armor = 25, -- mitigation = ???, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 60, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_YELLOW_RINGS } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_YELLOW_RINGS }, } monster.elements = { @@ -121,11 +121,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -133,13 +132,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/gravelord_oshuran.lua b/data-otservbr-global/monster/bosses/gravelord_oshuran.lua index b8ab1c6c3fa..fd5abe25a3f 100644 --- a/data-otservbr-global/monster/bosses/gravelord_oshuran.lua +++ b/data-otservbr-global/monster/bosses/gravelord_oshuran.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3100 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 426, - bossRace = RARITY_NEMESIS + bossRace = RARITY_NEMESIS, } monster.strategiesTarget = { @@ -54,25 +54,25 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 4, summons = { - { name = "Bonebeast", chance = 10, interval = 2000, count = 3 } - } + { name = "Bonebeast", chance = 10, interval = 2000, count = 3 }, + }, } monster.voices = { interval = 5000, chance = 10, - { text = "Your mortality is disgusting!", yell = false } + { text = "Your mortality is disgusting!", yell = false }, } monster.loot = { @@ -84,7 +84,7 @@ monster.loot = { { id = 3567, chance = 500 }, -- blue robe { id = 820, chance = 900 }, -- lightning boots { id = 8076, chance = 300 }, -- spellscroll of prophecies - { id = 3059, chance = 4650 } -- spellbook + { id = 3059, chance = 4650 }, -- spellbook } monster.attacks = { @@ -92,13 +92,13 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 25, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 30000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -180, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -350, length = 7, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -245, range = 1, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -245, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { defense = 25, armor = 25, - { name = "combat", interval = 3000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 3000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -111,18 +111,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 35 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -130,13 +129,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/groam.lua b/data-otservbr-global/monster/bosses/groam.lua index 34c11a81fbf..e010d50e708 100644 --- a/data-otservbr-global/monster/bosses/groam.lua +++ b/data-otservbr-global/monster/bosses/groam.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -75,12 +75,12 @@ monster.loot = { { name = "hunting spear", chance = 31250, maxCount = 4 }, { id = 3052, chance = 25000 }, -- life ring { name = "rusted armor", chance = 6250 }, - { name = "fish fin", chance = 1500 } + { name = "fish fin", chance = 1500 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 34, attack = 45 }, - { name = "combat", interval = 1000, chance = 11, type = COMBAT_DROWNDAMAGE, minDamage = -15, maxDamage = -100, range = 5, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 1000, chance = 11, type = COMBAT_DROWNDAMAGE, minDamage = -15, maxDamage = -100, range = 5, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { @@ -106,11 +106,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -118,13 +117,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/guard_captain_quaid.lua b/data-otservbr-global/monster/bosses/guard_captain_quaid.lua index 363a97b37b9..e712117a732 100644 --- a/data-otservbr-global/monster/bosses/guard_captain_quaid.lua +++ b/data-otservbr-global/monster/bosses/guard_captain_quaid.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 21, lookFeet = 2, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -32,7 +32,7 @@ monster.events = { monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { name = "cobra crest", chance = 11000 }, { name = "cobra boots", chance = 115 }, { name = "cobra hood", chance = 120 }, - { name = "cobra crossbow", chance = 50 } + { name = "cobra crossbow", chance = 50 }, } monster.attacks = { @@ -97,7 +97,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 14, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -550, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -550, radius = 1, shootEffect = CONST_ANI_BURSTARROW, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -480, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -450, radius = 3, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -450, radius = 3, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { @@ -123,11 +123,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -135,13 +134,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/hairman_the_huge.lua b/data-otservbr-global/monster/bosses/hairman_the_huge.lua index a971e3cd574..735c1b3b263 100644 --- a/data-otservbr-global/monster/bosses/hairman_the_huge.lua +++ b/data-otservbr-global/monster/bosses/hairman_the_huge.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 14 + chance = 14, } monster.strategiesTarget = { @@ -73,18 +73,18 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 100000, maxCount = 60 }, { id = 3093, chance = 25000 }, -- club ring - { name = "banana", chance = 25000, maxCount = 1 } + { name = "banana", chance = 25000, maxCount = 1 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 45, attack = 40 } + { name = "melee", interval = 2000, chance = 100, skill = 45, attack = 40 }, } monster.defenses = { defense = 25, armor = 20, -- mitigation = ???, - { name = "speed", interval = 1000, chance = 7, speedChange = 260, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 } + { name = "speed", interval = 1000, chance = 7, speedChange = 260, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } monster.elements = { @@ -104,11 +104,10 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -116,13 +115,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/heoni.lua b/data-otservbr-global/monster/bosses/heoni.lua index 2e9c4305d98..b5e9cfdcfd3 100644 --- a/data-otservbr-global/monster/bosses/heoni.lua +++ b/data-otservbr-global/monster/bosses/heoni.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -68,14 +68,13 @@ monster.voices = { { text = "Shriiiek", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 40, condition = { type = CONDITION_POISON, totalDamage = 480, interval = 4000 } }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -20, maxDamage = -240, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, - { name = "drunk", interval = 2000, chance = 13, length = 8, spread = 3, effect = CONST_ME_SOUND_WHITE, target = false, duration = 25000 } + { name = "drunk", interval = 2000, chance = 13, length = 8, spread = 3, effect = CONST_ME_SOUND_WHITE, target = false, duration = 25000 }, } monster.defenses = { @@ -83,7 +82,7 @@ monster.defenses = { armor = 25, -- mitigation = ???, { name = "combat", interval = 2000, chance = 11, type = COMBAT_HEALING, minDamage = 76, maxDamage = 84, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -103,11 +102,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -115,13 +113,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/incredibly_old_witch.lua b/data-otservbr-global/monster/bosses/incredibly_old_witch.lua index 6d99f7b939e..8680042f7ca 100644 --- a/data-otservbr-global/monster/bosses/incredibly_old_witch.lua +++ b/data-otservbr-global/monster/bosses/incredibly_old_witch.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 620 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -64,8 +64,7 @@ monster.voices = { { text = "I will teach them all to leave me alone!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "outfit", interval = 4000, chance = 12, range = 7, radius = 4, effect = CONST_ME_MAGIC_BLUE, target = true, duration = 2000, outfitMonster = "rat" }, @@ -76,7 +75,7 @@ monster.attacks = { { name = "outfit", interval = 4000, chance = 12, range = 7, radius = 4, effect = CONST_ME_MAGIC_BLUE, target = true, duration = 2000, outfitMonster = "kongra" }, { name = "outfit", interval = 4000, chance = 12, range = 7, radius = 4, effect = CONST_ME_MAGIC_BLUE, target = true, duration = 2000, outfitMonster = "dog" }, { name = "outfit", interval = 4000, chance = 12, range = 7, radius = 4, effect = CONST_ME_MAGIC_BLUE, target = true, duration = 2000, outfitMonster = "skunk" }, - { name = "outfit", interval = 4000, chance = 12, range = 7, radius = 4, effect = CONST_ME_MAGIC_BLUE, target = true, duration = 2000, outfitMonster = "donkey" } + { name = "outfit", interval = 4000, chance = 12, range = 7, radius = 4, effect = CONST_ME_MAGIC_BLUE, target = true, duration = 2000, outfitMonster = "donkey" }, } monster.defenses = { @@ -102,11 +101,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -114,13 +112,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/infernatil.lua b/data-otservbr-global/monster/bosses/infernatil.lua index f5466d894ee..c7ca8c53050 100644 --- a/data-otservbr-global/monster/bosses/infernatil.lua +++ b/data-otservbr-global/monster/bosses/infernatil.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 110000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "hellfire fighter", chance = 8, interval = 1000, count = 3 } - } + { name = "hellfire fighter", chance = 8, interval = 1000, count = 3 }, + }, } monster.voices = { @@ -132,7 +132,7 @@ monster.loot = { { id = 3069, chance = 3500 }, -- necrotic rod { id = 3002, chance = 100 }, -- voodoo doll { id = 3072, chance = 2500 }, -- wand of decay - { id = 3026, chance = 12500, maxCount = 15 } -- white pearl + { id = 3026, chance = 12500, maxCount = 15 }, -- white pearl } monster.attacks = { @@ -144,7 +144,7 @@ monster.attacks = { { name = "firefield", interval = 1000, chance = 4, radius = 8, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -850, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 1000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 1000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 1000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { @@ -153,7 +153,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 5000, maxDamage = 10000, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 2000, maxDamage = 3000, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 10, speedChange = 1800, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 } + { name = "speed", interval = 1000, chance = 10, speedChange = 1800, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } monster.elements = { @@ -173,11 +173,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -185,13 +184,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/jesse_the_wicked.lua b/data-otservbr-global/monster/bosses/jesse_the_wicked.lua index 929dfce90fa..e4052189eaf 100644 --- a/data-otservbr-global/monster/bosses/jesse_the_wicked.lua +++ b/data-otservbr-global/monster/bosses/jesse_the_wicked.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 113, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -74,11 +74,11 @@ monster.voices = { monster.loot = { { name = "platinum coin", chance = 100000, maxCount = 99 }, - { name = "bag with stolen gold", chance = 100000 } + { name = "bag with stolen gold", chance = 100000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, } monster.defenses = { @@ -104,11 +104,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -116,13 +115,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/koshei_the_deathless.lua b/data-otservbr-global/monster/bosses/koshei_the_deathless.lua index 8beef7053ff..5ad88a01c71 100644 --- a/data-otservbr-global/monster/bosses/koshei_the_deathless.lua +++ b/data-otservbr-global/monster/bosses/koshei_the_deathless.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "bonebeast", chance = 21, interval = 1000, count = 1 } - } + { name = "bonebeast", chance = 21, interval = 1000, count = 1 }, + }, } monster.voices = { @@ -77,8 +77,7 @@ monster.voices = { { text = "Ahhh, your life energy tastes so delicious!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -170, condition = { type = CONDITION_POISON, totalDamage = 300, interval = 4000 } }, @@ -87,14 +86,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -140, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, -- curse { name = "condition", type = CONDITION_CURSED, interval = 3000, chance = 15, minDamage = -54, maxDamage = -54, range = 1, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -900, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -900, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 30000 }, } monster.defenses = { defense = 20, armor = 20, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 30, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 30, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -114,11 +113,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -126,13 +124,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/kraknaknork's_demon.lua b/data-otservbr-global/monster/bosses/kraknaknork's_demon.lua index fd7944018ba..8902bd9e527 100644 --- a/data-otservbr-global/monster/bosses/kraknaknork's_demon.lua +++ b/data-otservbr-global/monster/bosses/kraknaknork's_demon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 117, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 120 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,20 +62,19 @@ monster.voices = { chance = 10, { text = "STEP A BIT CLOSER, RIGHT THERE, HAHAHA!", yell = true }, { text = "COME AND DIE!", yell = true }, - { text = "ROOKIE FOR BREAKFAST", yell = true } + { text = "ROOKIE FOR BREAKFAST", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -499 }, - { name = "combat", interval = 3000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -10, maxDamage = -40, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = true } + { name = "combat", interval = 3000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -10, maxDamage = -40, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = true }, } monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -88,18 +87,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -107,13 +105,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/kraknaknork.lua b/data-otservbr-global/monster/bosses/kraknaknork.lua index 0b900ff46f8..2bb4eb32b4a 100644 --- a/data-otservbr-global/monster/bosses/kraknaknork.lua +++ b/data-otservbr-global/monster/bosses/kraknaknork.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 80 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -49,19 +49,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 1, summons = { - { name = "Weakened Demon", chance = 20, interval = 2000, count = 1 } - } + { name = "Weakened Demon", chance = 20, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -69,12 +69,12 @@ monster.voices = { chance = 10, { text = "KRAK ORC DEMON", yell = false }, { text = "???!!!", yell = false }, - { text = "Grak brrretz gulu.", yell = false } + { text = "Grak brrretz gulu.", yell = false }, } monster.loot = { { name = "gold coin", chance = 95000, maxCount = 15 }, - { name = "orc leather", chance = 4300 } + { name = "orc leather", chance = 4300 }, } monster.attacks = { @@ -84,12 +84,12 @@ monster.attacks = { { name = "kraknaknork explosion wave", interval = 2000, chance = 10, minDamage = 0, maxDamage = -12, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -8, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "speed", interval = 1000, chance = 6, speedChange = -100, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, - { name = "outfit", interval = 2000, chance = 10, range = 7, target = false, duration = 3000, outfitMonster = "Sheep" } + { name = "outfit", interval = 2000, chance = 10, range = 7, target = false, duration = 3000, outfitMonster = "Sheep" }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -102,29 +102,24 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end -mType.onAppear = function(monster, creature) -end +mType.onAppear = function(monster, creature) end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/kroazur.lua b/data-otservbr-global/monster/bosses/kroazur.lua index ef20536bb93..78357fbf8e7 100644 --- a/data-otservbr-global/monster/bosses/kroazur.lua +++ b/data-otservbr-global/monster/bosses/kroazur.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 80, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -85,14 +85,14 @@ monster.loot = { { name = "assassin star", chance = 8540 }, { name = "gold token", chance = 6580 }, { name = "gold ingot", chance = 6410 }, - { name = "nightmare blade", chance = 3020 } + { name = "nightmare blade", chance = 3020 }, } monster.attacks = { { name = "melee", interval = 200, chance = 20, minDamage = 0, maxDamage = -650 }, { name = "combat", interval = 200, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -500, target = false }, { name = "combat", interval = 500, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 500, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -300, radius = 8, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 500, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -300, radius = 8, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { @@ -100,7 +100,7 @@ monster.defenses = { armor = 55, -- mitigation = ???, { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -120,11 +120,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -132,13 +131,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/lisa.lua b/data-otservbr-global/monster/bosses/lisa.lua index 4676bf5be46..7cbff8d7d49 100644 --- a/data-otservbr-global/monster/bosses/lisa.lua +++ b/data-otservbr-global/monster/bosses/lisa.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 3 + chance = 3, } monster.strategiesTarget = { @@ -88,7 +88,7 @@ monster.loot = { { name = "glooth cape", chance = 6000 }, { id = 3039, chance = 2600 }, -- red gem { name = "yellow gem", chance = 2500 }, - { name = "lisa's doll", chance = 300 } + { name = "lisa's doll", chance = 300 }, } monster.attacks = { @@ -99,7 +99,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 13, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -200, radius = 8, effect = CONST_ME_POISONAREA, target = false }, { name = "lisa paralyze", interval = 2000, chance = 12, target = false }, { name = "lisa skill reducer", interval = 2000, chance = 15, target = false }, - { name = "lisa wave", interval = 2000, chance = 11, minDamage = -400, maxDamage = -900, target = false } + { name = "lisa wave", interval = 2000, chance = 11, minDamage = -400, maxDamage = -900, target = false }, } monster.defenses = { @@ -107,7 +107,7 @@ monster.defenses = { armor = 15, -- mitigation = ???, { name = "lisa summon", interval = 2000, chance = 5, target = false }, - { name = "lisa heal", interval = 1000, chance = 100, target = false } + { name = "lisa heal", interval = 1000, chance = 100, target = false }, } monster.elements = { @@ -127,11 +127,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -139,13 +138,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/mad_mage.lua b/data-otservbr-global/monster/bosses/mad_mage.lua index 51a9de61ec8..2ff8144d310 100644 --- a/data-otservbr-global/monster/bosses/mad_mage.lua +++ b/data-otservbr-global/monster/bosses/mad_mage.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 30 + chance = 30, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "Golden Servant", chance = 10, interval = 1000, count = 1 } - } + { name = "Golden Servant", chance = 10, interval = 1000, count = 1 }, + }, } monster.voices = { @@ -95,7 +95,7 @@ monster.loot = { { id = 11454, chance = 370 }, -- luminous orb { id = 2995, chance = 1370 }, -- piggy bank { id = 3006, chance = 1370 }, -- ring of the sky - { id = 8073, chance = 2370 } -- spellbook of warding + { id = 8073, chance = 2370 }, -- spellbook of warding } monster.attacks = { @@ -103,14 +103,14 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 1400, chance = 24, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -120, range = 6, shootEffect = CONST_ANI_ICE, target = false }, { name = "firefield", interval = 1600, chance = 20, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -200, radius = 4, effect = CONST_ME_BIGCLOUDS, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -200, radius = 4, effect = CONST_ME_BIGCLOUDS, target = false }, } monster.defenses = { defense = 20, armor = 20, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 35, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 35, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -130,11 +130,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -142,13 +141,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/mad_technomancer.lua b/data-otservbr-global/monster/bosses/mad_technomancer.lua index 774210080b7..7d72216b88a 100644 --- a/data-otservbr-global/monster/bosses/mad_technomancer.lua +++ b/data-otservbr-global/monster/bosses/mad_technomancer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 500, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -67,21 +67,21 @@ monster.voices = { } monster.loot = { - { id = 396, chance = 1000000 } -- technomancer beard + { id = 396, chance = 1000000 }, -- technomancer beard } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 40 }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -120, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_PHYSICALDAMAGE, minDamage = -55, maxDamage = -105, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, - { name = "combat", interval = 1000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -80, range = 7, target = false } + { name = "combat", interval = 1000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -80, range = 7, target = false }, } monster.defenses = { defense = 15, armor = 15, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 50, type = COMBAT_HEALING, minDamage = 75, maxDamage = 325, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 50, type = COMBAT_HEALING, minDamage = 75, maxDamage = 325, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -101,11 +101,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -113,13 +112,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/morik_the_gladiator.lua b/data-otservbr-global/monster/bosses/morik_the_gladiator.lua index 36ee1682a4d..5a8a012ca84 100644 --- a/data-otservbr-global/monster/bosses/morik_the_gladiator.lua +++ b/data-otservbr-global/monster/bosses/morik_the_gladiator.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 95, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 1235 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Gladiator", chance = 10, interval = 2000, count = 2 } - } + { name = "Gladiator", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -74,13 +74,13 @@ monster.voices = { } monster.loot = { - { id = 8820, chance = 100000 } -- morik's helmet + { id = 8820, chance = 100000 }, -- morik's helmet } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -110, radius = 3, effect = CONST_ME_HITAREA, target = false }, - { name = "drunk", interval = 3000, chance = 34, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = false, duration = 5000 } + { name = "drunk", interval = 3000, chance = 34, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = false, duration = 5000 }, } monster.defenses = { @@ -106,11 +106,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -118,13 +117,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/morshabaal.lua b/data-otservbr-global/monster/bosses/morshabaal.lua index acca9c43858..f4b55b1dd23 100644 --- a/data-otservbr-global/monster/bosses/morshabaal.lua +++ b/data-otservbr-global/monster/bosses/morshabaal.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1000000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 2118, - bossRace = RARITY_NEMESIS + bossRace = RARITY_NEMESIS, --storageCooldown = Storage.Quest.U12_70.AdventuresOfGalthen.MegasylvanYseldaTimer } @@ -55,12 +55,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -68,11 +68,10 @@ monster.voices = { chance = 10, { text = "Revenge for my little brother!", yell = false }, { text = "You are starting to annoy me!", yell = false }, - { text = "I will restore our family honor!", yell = false } + { text = "I will restore our family honor!", yell = false }, } -monster.summons = { -} +monster.summons = {} monster.loot = { { id = 3043, chance = 60000, maxCount = 35 }, -- crystal coin @@ -95,7 +94,7 @@ monster.loot = { { id = 37607, chance = 6666 }, -- Green Demon Legs { id = 37610, chance = 6666 }, -- Green Demon Slippers { id = 30053, chance = 6666 }, -- Dragon Figurine - { id = 3309, chance = 6666 } -- Thunder Hammer + { id = 3309, chance = 6666 }, -- Thunder Hammer } monster.attacks = { @@ -112,7 +111,7 @@ monster.attacks = { { name = "outfit", interval = 1000, chance = 2, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "demon" }, { name = "outfit", interval = 1000, chance = 2, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitItem = 3058 }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -900, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -500, maxDamage = -850, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -500, maxDamage = -850, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -123,7 +122,7 @@ monster.defenses = { { name = "speed", interval = 1000, chance = 8, speedChange = 1901, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, { name = "invisible", interval = 1000, chance = 4, effect = CONST_ME_MAGIC_BLUE }, { name = "invisible", interval = 1000, chance = 17, effect = CONST_ME_MAGIC_BLUE }, - { name = "outfit", interval = 1000, chance = 2, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000, outfitItem = 2916 } + { name = "outfit", interval = 1000, chance = 2, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000, outfitItem = 2916 }, } monster.elements = { @@ -136,7 +135,7 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { @@ -144,7 +143,7 @@ monster.immunities = { { type = "outfit", condition = false }, { type = "invisible", condition = true }, { type = "drunk", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onAppear = function(monster, creature) diff --git a/data-otservbr-global/monster/bosses/munster.lua b/data-otservbr-global/monster/bosses/munster.lua index b5ebb927c29..daeeac7655e 100644 --- a/data-otservbr-global/monster/bosses/munster.lua +++ b/data-otservbr-global/monster/bosses/munster.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 58 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 10000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -49,26 +49,26 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 2, summons = { - { name = "Rat", chance = 20, interval = 2000, count = 2 } - } + { name = "Rat", chance = 20, interval = 2000, count = 2 }, + }, } monster.voices = { interval = 5000, chance = 10, { text = "Meep!", yell = false }, - { text = "Meeeeep!", yell = false } + { text = "Meeeeep!", yell = false }, } monster.loot = { @@ -77,16 +77,16 @@ monster.loot = { { id = 3607, chance = 56000 }, -- cheese { id = 3492, chance = 51000, maxCount = 4 }, -- worm { id = 3598, chance = 2500, maxCount = 2 }, -- cookie - { id = 5792, chance = 250 } -- die + { id = 5792, chance = 250 }, -- die } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, } monster.defenses = { defense = 4, - armor = 2 + armor = 2, } monster.elements = { @@ -99,18 +99,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -118,13 +117,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/pythius_the_rotten.lua b/data-otservbr-global/monster/bosses/pythius_the_rotten.lua index d40485272ff..3331d64e027 100644 --- a/data-otservbr-global/monster/bosses/pythius_the_rotten.lua +++ b/data-otservbr-global/monster/bosses/pythius_the_rotten.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 9000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Undead Gladiator", chance = 10, interval = 1000, count = 2 } - } + { name = "Undead Gladiator", chance = 10, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -73,8 +73,7 @@ monster.voices = { { text = "YOU MADE A HUGE WASTE!", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -475 }, @@ -84,7 +83,7 @@ monster.attacks = { { name = "combat", interval = 2500, chance = 22, type = COMBAT_MANADRAIN, minDamage = -85, maxDamage = -110, range = 7, radius = 4, shootEffect = CONST_ANI_ICE, target = true }, { name = "speed", interval = 2000, chance = 20, speedChange = -300, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true, duration = 30000 }, -- curse - { name = "condition", type = CONDITION_CURSED, interval = 2000, chance = 15, range = 7, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true } + { name = "condition", type = CONDITION_CURSED, interval = 2000, chance = 15, range = 7, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, } monster.defenses = { @@ -110,11 +109,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -122,13 +120,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/raging_mage.lua b/data-otservbr-global/monster/bosses/raging_mage.lua index c992aaa2182..39518d5431a 100644 --- a/data-otservbr-global/monster/bosses/raging_mage.lua +++ b/data-otservbr-global/monster/bosses/raging_mage.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3500 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 718, - bossRace = RARITY_ARCHFOE + bossRace = RARITY_ARCHFOE, } monster.strategiesTarget = { @@ -54,19 +54,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 1, summons = { - { name = "Golden Servant", chance = 50, interval = 2000, count = 1 } - } + { name = "Golden Servant", chance = 50, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -74,7 +74,7 @@ monster.voices = { chance = 10, { text = "Behold the all permeating powers I draw from this gate!!", yell = false }, { text = "ENERGY!!", yell = false }, - { text = "I WILL RETURN!! My death will just be a door to await my homecoming, my physical hull will be... my... argh...", yell = false } + { text = "I WILL RETURN!! My death will just be a door to await my homecoming, my physical hull will be... my... argh...", yell = false }, } monster.loot = { @@ -99,19 +99,19 @@ monster.loot = { { id = 3079, chance = 610 }, -- boots of haste { id = 9067, chance = 610 }, -- crystal of power { id = 5741, chance = 610 }, -- skull helmet - { id = 8074, chance = 610 } -- spellbook of mind control + { id = 8074, chance = 610 }, -- spellbook of mind control } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, { name = "thunderstorm rune", interval = 2000, chance = 35, minDamage = -100, maxDamage = -200, range = 7, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -200, range = 7, target = false }, - { name = "energyfield", interval = 2000, chance = 15, range = 7, radius = 2, shootEffect = CONST_ANI_ENERGY, target = true } + { name = "energyfield", interval = 2000, chance = 15, range = 7, radius = 2, shootEffect = CONST_ANI_ENERGY, target = true }, } monster.defenses = { defense = 25, - armor = 25 + armor = 25, } monster.elements = { @@ -124,18 +124,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 15 } + { type = COMBAT_DEATHDAMAGE, percent = 15 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -143,13 +142,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/raxias.lua b/data-otservbr-global/monster/bosses/raxias.lua index 3584e8c9ebf..ea62576f52d 100644 --- a/data-otservbr-global/monster/bosses/raxias.lua +++ b/data-otservbr-global/monster/bosses/raxias.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 81, lookFeet = 79, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1100 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 1624, - bossRace = RARITY_NEMESIS + bossRace = RARITY_NEMESIS, } monster.strategiesTarget = { @@ -51,12 +51,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -64,23 +64,23 @@ monster.voices = { chance = 10, { text = "This is a nightmare and you won't wake up!", yell = false }, { text = "This was your last chance!", yell = false }, - { text = "Blood, fight and rage!", yell = false } + { text = "Blood, fight and rage!", yell = false }, } monster.loot = { { name = "gold coin", chance = 100000, maxCount = 60 }, - { name = "gold coin", chance = 100000, maxCount = 40 } + { name = "gold coin", chance = 100000, maxCount = 40 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 33, - armor = 28 + armor = 28, } monster.elements = { @@ -93,18 +93,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -1 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -112,13 +111,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/renegade_orc.lua b/data-otservbr-global/monster/bosses/renegade_orc.lua index 42b442feabc..c12f3d73e39 100644 --- a/data-otservbr-global/monster/bosses/renegade_orc.lua +++ b/data-otservbr-global/monster/bosses/renegade_orc.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 450 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -49,18 +49,18 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Harga puchak muhmak!", yell = false } + { text = "Harga puchak muhmak!", yell = false }, } monster.loot = { @@ -78,17 +78,17 @@ monster.loot = { { id = 3301, chance = 830 }, -- broadsword { id = 266, chance = 550 }, -- health potion { id = 3557, chance = 420 }, -- plate legs - { id = 3369, chance = 160 } -- warrior helmet + { id = 3369, chance = 160 }, -- warrior helmet } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { defense = 25, - armor = 25 + armor = 25, } monster.elements = { @@ -101,18 +101,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 20 }, - { type = COMBAT_DEATHDAMAGE, percent = -2 } + { type = COMBAT_DEATHDAMAGE, percent = -2 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -120,13 +119,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/robby_the_reckless.lua b/data-otservbr-global/monster/bosses/robby_the_reckless.lua index 1d5a35c18c7..0eb6fd3d4c3 100644 --- a/data-otservbr-global/monster/bosses/robby_the_reckless.lua +++ b/data-otservbr-global/monster/bosses/robby_the_reckless.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 118, lookFeet = 114, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -73,11 +73,11 @@ monster.voices = { monster.loot = { { id = 3035, chance = 100000, maxCount = 85 }, -- platinum coin - { id = 13429, chance = 100000 } -- bag with stolen gold + { id = 13429, chance = 100000 }, -- bag with stolen gold } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, } monster.defenses = { @@ -103,11 +103,10 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -115,13 +114,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/rukor_zad.lua b/data-otservbr-global/monster/bosses/rukor_zad.lua index 94d3f365ef7..361365745b5 100644 --- a/data-otservbr-global/monster/bosses/rukor_zad.lua +++ b/data-otservbr-global/monster/bosses/rukor_zad.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 95, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -77,7 +77,7 @@ monster.loot = { { id = 3287, chance = 9210, maxCount = 14 }, -- throwing star { id = 7366, chance = 6200, maxCount = 7 }, -- viper star { id = 3351, chance = 4190 }, -- steel helmet - { id = 3409, chance = 1940 } -- steel shield + { id = 3409, chance = 1940 }, -- steel shield } monster.attacks = { @@ -86,14 +86,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISONARROW, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -8, maxDamage = -8, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, - { name = "drunk", interval = 3000, chance = 34, range = 7, target = false, duration = 5000 } + { name = "drunk", interval = 3000, chance = 34, range = 7, target = false, duration = 5000 }, } monster.defenses = { defense = 15, armor = 15, -- mitigation = ???, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -113,11 +113,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -125,13 +124,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/smuggler_baron_silvertoe.lua b/data-otservbr-global/monster/bosses/smuggler_baron_silvertoe.lua index 877b3371234..b59d09d2387 100644 --- a/data-otservbr-global/monster/bosses/smuggler_baron_silvertoe.lua +++ b/data-otservbr-global/monster/bosses/smuggler_baron_silvertoe.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 77, lookFeet = 95, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Wild Warrior", chance = 20, interval = 2000, count = 3 } - } + { name = "Wild Warrior", chance = 20, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -81,19 +81,19 @@ monster.voices = { monster.loot = { { id = 3031, chance = 80000, maxCount = 30 }, -- gold coin - { id = 3294, chance = 10000 } -- short sword + { id = 3294, chance = 10000 }, -- short sword } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { defense = 15, armor = 15, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -113,11 +113,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -125,13 +124,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/spider_queen.lua b/data-otservbr-global/monster/bosses/spider_queen.lua index b319924007d..1f2b018f26c 100644 --- a/data-otservbr-global/monster/bosses/spider_queen.lua +++ b/data-otservbr-global/monster/bosses/spider_queen.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,17 +62,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "spider queen wrap", interval = 5000, chance = 100, target = true, range = 1 } + { name = "spider queen wrap", interval = 5000, chance = 100, target = true, range = 1 }, } monster.defenses = { defense = 5, armor = 10, - { name = "speed", interval = 1000, chance = 10, speedChange = 480, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 1000, chance = 10, speedChange = 480, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -85,18 +84,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -104,13 +102,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/splasher.lua b/data-otservbr-global/monster/bosses/splasher.lua index 36e0d6aa1fa..670c402c859 100644 --- a/data-otservbr-global/monster/bosses/splasher.lua +++ b/data-otservbr-global/monster/bosses/splasher.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1700 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -68,8 +68,7 @@ monster.voices = { { text = "Blup.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -109, condition = { type = CONDITION_POISON, totalDamage = 5, interval = 4000 } }, @@ -77,14 +76,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 7, type = COMBAT_LIFEDRAIN, minDamage = -162, maxDamage = -228, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_ICEDAMAGE, minDamage = -134, maxDamage = -148, length = 8, spread = 3, effect = CONST_ME_BUBBLES, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -101, maxDamage = -149, radius = 3, effect = CONST_ME_BUBBLES, target = false }, - { name = "speed", interval = 2000, chance = 20, speedChange = -300, range = 1, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -300, range = 1, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } monster.defenses = { defense = 15, armor = 15, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 100, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 100, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -104,11 +103,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -116,13 +114,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/teleskor.lua b/data-otservbr-global/monster/bosses/teleskor.lua index f3b4594c3cd..0c27b032658 100644 --- a/data-otservbr-global/monster/bosses/teleskor.lua +++ b/data-otservbr-global/monster/bosses/teleskor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 80 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -49,19 +49,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Who Disturbs my slumber?", yell = false }, - { text = "Mourn the dead, do not hunt them!", yell = false } + { text = "Mourn the dead, do not hunt them!", yell = false }, } monster.loot = { @@ -72,16 +72,16 @@ monster.loot = { { id = 3411, chance = 45000 }, -- brass shield { id = 2920, chance = 36000 }, -- torch { id = 3276, chance = 27000 }, -- hatchet - { id = 3264, chance = 27000 } -- sword + { id = 3264, chance = 27000 }, -- sword } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -94,18 +94,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = -5 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -113,13 +112,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/the_abomination.lua b/data-otservbr-global/monster/bosses/the_abomination.lua index a8790246af9..54df2943528 100644 --- a/data-otservbr-global/monster/bosses/the_abomination.lua +++ b/data-otservbr-global/monster/bosses/the_abomination.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin { id = 3035, chance = 10000, maxCount = 3 }, -- platinum coin { id = 6499, chance = 2857 }, -- demonic essence - { id = 5944, chance = 2500 } -- soul orb + { id = 5944, chance = 2500 }, -- soul orb } monster.attacks = { @@ -95,14 +95,14 @@ monster.attacks = { { name = "speed", interval = 1000, chance = 12, speedChange = -800, radius = 6, effect = CONST_ME_POISONAREA, target = false, duration = 10000 }, { name = "combat", interval = 1000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -650, radius = 4, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 1000, chance = 11, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -900, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_SOUND_GREEN, target = true }, - { name = "combat", interval = 2000, chance = 19, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -850, length = 7, spread = 3, shootEffect = CONST_ANI_POISON, target = false } + { name = "combat", interval = 2000, chance = 19, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -850, length = 7, spread = 3, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { defense = 25, armor = 25, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 75, type = COMBAT_HEALING, minDamage = 505, maxDamage = 605, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 75, type = COMBAT_HEALING, minDamage = 505, maxDamage = 605, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -122,11 +122,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -134,13 +133,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/the_astral_source.lua b/data-otservbr-global/monster/bosses/the_astral_source.lua index ccb4dbc0c20..6be4ef6fba7 100644 --- a/data-otservbr-global/monster/bosses/the_astral_source.lua +++ b/data-otservbr-global/monster/bosses/the_astral_source.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "the astral source" monster.experience = 3000 monster.outfit = { - lookTypeEx = 24228 + lookTypeEx = 24228, } monster.health = 150000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,7 +47,7 @@ monster.flags = { } monster.events = { - "AstralSource" + "AstralSource", } monster.light = { @@ -60,15 +60,14 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -330 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, range = 7, radius = 6, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_PURPLEENERGY, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, range = 7, radius = 6, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -400, length = 5, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -400, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -400, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.defenses = { @@ -94,11 +93,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -106,13 +104,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/the_blightfather.lua b/data-otservbr-global/monster/bosses/the_blightfather.lua index e73334395fb..1cb8c870901 100644 --- a/data-otservbr-global/monster/bosses/the_blightfather.lua +++ b/data-otservbr-global/monster/bosses/the_blightfather.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 12 + chance = 12, } monster.strategiesTarget = { @@ -74,18 +74,18 @@ monster.loot = { { id = 9640, chance = 12500 }, -- poisonous slime { id = 10455, chance = 7000 }, -- lancer beetle shell { id = 10457, chance = 400 }, -- beetle necklace - { id = 3033, chance = 800 } -- small amethyst + { id = 3033, chance = 800 }, -- small amethyst } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 40, attack = 80 } + { name = "melee", interval = 2000, chance = 100, skill = 40, attack = 80 }, } monster.defenses = { defense = 25, armor = 25, -- mitigation = ???, - { name = "invisible", interval = 1000, chance = 10, effect = CONST_ME_MAGIC_RED } + { name = "invisible", interval = 1000, chance = 10, effect = CONST_ME_MAGIC_RED }, } monster.elements = { @@ -105,11 +105,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -117,13 +116,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/the_book_of_death.lua b/data-otservbr-global/monster/bosses/the_book_of_death.lua index 137f66efbf3..c6445b9f45c 100644 --- a/data-otservbr-global/monster/bosses/the_book_of_death.lua +++ b/data-otservbr-global/monster/bosses/the_book_of_death.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 7800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -62,13 +62,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -94,11 +93,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -106,13 +104,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/the_brainstealer.lua b/data-otservbr-global/monster/bosses/the_brainstealer.lua index eab8c419d9f..7c45f8d04ee 100644 --- a/data-otservbr-global/monster/bosses/the_brainstealer.lua +++ b/data-otservbr-global/monster/bosses/the_brainstealer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 88, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -29,12 +29,12 @@ monster.summon = { maxSummons = 2, summons = { { name = "brain parasite", chance = 20, interval = 4000, count = 1 }, - } + }, } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.flags = { @@ -87,7 +87,7 @@ monster.loot = { { name = "gilded eldritch wand", chance = 80 }, { name = "gilded eldritch rod", chance = 60 }, { name = "gilded eldritch bow", chance = 50 }, - { name = "eldritch crystal", chance = 30 } + { name = "eldritch crystal", chance = 30 }, } monster.attacks = { @@ -114,7 +114,7 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { @@ -130,8 +130,7 @@ monster.voices = { { text = "My lich-knights will conquer this world for me!", yell = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -139,13 +138,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/the_collector.lua b/data-otservbr-global/monster/bosses/the_collector.lua index 6af595e858d..3dd239b3ed0 100644 --- a/data-otservbr-global/monster/bosses/the_collector.lua +++ b/data-otservbr-global/monster/bosses/the_collector.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 340 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -63,14 +63,13 @@ monster.voices = { { text = "Leave as long as you can.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 100, attack = 40 }, { name = "speed", interval = 1000, chance = 13, speedChange = -800, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false, duration = 20000 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -85, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, - { name = "melee", interval = 2000, chance = 15, minDamage = -10, maxDamage = -80 } + { name = "melee", interval = 2000, chance = 15, minDamage = -10, maxDamage = -80 }, } monster.defenses = { @@ -96,11 +95,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -108,13 +106,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/the_evil_eye.lua b/data-otservbr-global/monster/bosses/the_evil_eye.lua index 12889f67593..f712959cdd7 100644 --- a/data-otservbr-global/monster/bosses/the_evil_eye.lua +++ b/data-otservbr-global/monster/bosses/the_evil_eye.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -63,8 +63,8 @@ monster.summon = { maxSummons = 5, summons = { { name = "demon skeleton", chance = 13, interval = 1000, count = 5 }, - { name = "ghost", chance = 12, interval = 1000, count = 3 } - } + { name = "ghost", chance = 12, interval = 1000, count = 3 }, + }, } monster.voices = { @@ -93,14 +93,14 @@ monster.attacks = { { name = "speed", interval = 1000, chance = 10, speedChange = -850, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, { name = "combat", interval = 1000, chance = 8, type = COMBAT_EARTHDAMAGE, minDamage = -35, maxDamage = -85, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, { name = "combat", interval = 1000, chance = 6, type = COMBAT_LIFEDRAIN, minDamage = -75, maxDamage = -85, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 1000, chance = 9, type = COMBAT_MANADRAIN, minDamage = -150, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false } + { name = "combat", interval = 1000, chance = 9, type = COMBAT_MANADRAIN, minDamage = -150, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, } monster.defenses = { defense = 23, armor = 19, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 9, type = COMBAT_HEALING, minDamage = 1, maxDamage = 219, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 9, type = COMBAT_HEALING, minDamage = 1, maxDamage = 219, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -120,11 +120,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -132,13 +131,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/the_first_dragon.lua b/data-otservbr-global/monster/bosses/the_first_dragon.lua index 8859c200ccb..e70114de0a3 100644 --- a/data-otservbr-global/monster/bosses/the_first_dragon.lua +++ b/data-otservbr-global/monster/bosses/the_first_dragon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 101, lookFeet = 79, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 50000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.bosstiary = { bossRaceId = 1368, - bossRace = RARITY_NEMESIS + bossRace = RARITY_NEMESIS, } monster.strategiesTarget = { @@ -54,16 +54,16 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "First Dragon Death" + "First Dragon Death", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -71,8 +71,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 120, attack = 130 }, @@ -80,13 +79,13 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -1010, maxDamage = -1995, length = 9, spread = 3, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -410, maxDamage = -595, radius = 7, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -280, radius = 6, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -280, radius = 6, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 64, armor = 52, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 1500, maxDamage = 4500, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 1500, maxDamage = 4500, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -99,18 +98,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -118,13 +116,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/the_frog_prince.lua b/data-otservbr-global/monster/bosses/the_frog_prince.lua index d1fe9fa2ecb..d90c6c78b2e 100644 --- a/data-otservbr-global/monster/bosses/the_frog_prince.lua +++ b/data-otservbr-global/monster/bosses/the_frog_prince.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 69, lookFeet = 66, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -70,11 +70,10 @@ monster.voices = { { text = "Perhaps a kiss might release me!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 1 } + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 1 }, } monster.defenses = { @@ -100,11 +99,10 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -112,13 +110,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/verminor.lua b/data-otservbr-global/monster/bosses/verminor.lua index 9a7207b6f37..1712cccab2e 100644 --- a/data-otservbr-global/monster/bosses/verminor.lua +++ b/data-otservbr-global/monster/bosses/verminor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 80000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,7 +63,7 @@ monster.voices = { { text = "BOW TO THE POWER OF THE RUTHLESS SEVEN!", yell = true }, { text = "DESTRUCTION!", yell = true }, { text = "CHAOS!", yell = true }, - { text = "DEATH TO ALL!", yell = true } + { text = "DEATH TO ALL!", yell = true }, } monster.loot = { @@ -123,7 +123,7 @@ monster.loot = { { id = 3069, chance = 3500 }, -- necrotic rod { id = 3002, chance = 100 }, -- voodoo doll { id = 3072, chance = 2500 }, -- wand of decay - { id = 3026, chance = 12500, maxCount = 15 } -- white pearl + { id = 3026, chance = 12500, maxCount = 15 }, -- white pearl } monster.attacks = { @@ -136,14 +136,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 9, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 5000, chance = 18, minDamage = -800, maxDamage = -1000, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "combat", interval = 2000, chance = 6, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1200, radius = 14, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 6, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1200, radius = 14, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.defenses = { defense = 145, armor = 188, { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 3000, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 8, speedChange = 480, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 2000, chance = 8, speedChange = 480, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -156,18 +156,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -175,13 +174,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/visco.lua b/data-otservbr-global/monster/bosses/visco.lua index 93c3ef4fc72..6b4d0adb1a0 100644 --- a/data-otservbr-global/monster/bosses/visco.lua +++ b/data-otservbr-global/monster/bosses/visco.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 28000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -49,19 +49,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "I'm Zulazza, and you won't forget me that fazzt.", yell = false }, - { text = "Oh, HE will take revenge on zzizz azzault when you zztep in front of HIZZ fazze!", yell = false } + { text = "Oh, HE will take revenge on zzizz azzault when you zztep in front of HIZZ fazze!", yell = false }, } monster.loot = { @@ -87,7 +87,7 @@ monster.loot = { { id = 3414, chance = 5500 }, -- mastermind shield { id = 3010, chance = 10500 }, -- emerald bangle { id = 8063, chance = 5500 }, -- paladin armor - { id = 3415, chance = 5500 } -- guardian shield + { id = 3415, chance = 5500 }, -- guardian shield } monster.attacks = { @@ -95,13 +95,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -1300, radius = 3, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -130, range = 7, effect = CONST_ME_MAGIC_GREEN, target = true }, - { name = "speed", interval = 2000, chance = 20, speedChange = -500, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -500, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, } monster.defenses = { defense = 119, armor = 96, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 2000, maxDamage = 3000, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 2000, maxDamage = 3000, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -114,18 +114,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 20 }, - { type = COMBAT_DEATHDAMAGE, percent = 30 } + { type = COMBAT_DEATHDAMAGE, percent = 30 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -133,13 +132,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/warlord_ruzad.lua b/data-otservbr-global/monster/bosses/warlord_ruzad.lua index 59d9d5e5722..b66a9c3284b 100644 --- a/data-otservbr-global/monster/bosses/warlord_ruzad.lua +++ b/data-otservbr-global/monster/bosses/warlord_ruzad.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Orc Berserker", chance = 30, interval = 2000, count = 2 } - } + { name = "Orc Berserker", chance = 30, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -91,11 +91,11 @@ monster.loot = { { id = 3084, chance = 2690 }, -- protection amulet { id = 3265, chance = 2200 }, -- two handed sword { id = 3384, chance = 1900 }, -- dark helmet - { id = 818, chance = 750 } -- magma boots + { id = 818, chance = 750 }, -- magma boots } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, } monster.defenses = { @@ -121,11 +121,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -133,13 +132,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/weakened_demon.lua b/data-otservbr-global/monster/bosses/weakened_demon.lua index bdc38f78303..7daf2f5dfb2 100644 --- a/data-otservbr-global/monster/bosses/weakened_demon.lua +++ b/data-otservbr-global/monster/bosses/weakened_demon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 100, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -49,31 +49,30 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "UH?", yell = true } + { text = "UH?", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 }, } monster.defenses = { defense = 2, armor = 2, - { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -86,29 +85,24 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end -mType.onAppear = function(monster, creature) -end +mType.onAppear = function(monster, creature) end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/weakened_shlorg.lua b/data-otservbr-global/monster/bosses/weakened_shlorg.lua index e7d0b8249b2..af96e3d5389 100644 --- a/data-otservbr-global/monster/bosses/weakened_shlorg.lua +++ b/data-otservbr-global/monster/bosses/weakened_shlorg.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,19 +49,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Tchhh!", yell = false }, - { text = "Slurp!", yell = false } + { text = "Slurp!", yell = false }, } monster.loot = { @@ -84,7 +84,7 @@ monster.loot = { { id = 3297, chance = 20000 }, -- serpent sword { id = 8084, chance = 20000 }, -- springsprout rod { id = 8063, chance = 10000 }, -- paladin armor - { id = 9667, chance = 100000 } -- boggy dreads + { id = 9667, chance = 100000 }, -- boggy dreads } monster.attacks = { @@ -93,13 +93,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 14, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, radius = 5, effect = CONST_ME_GREEN_RINGS, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 13, minDamage = -360, maxDamage = -440, radius = 5, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "shlorg paralyze", interval = 2000, chance = 11, target = false } + { name = "shlorg paralyze", interval = 2000, chance = 11, target = false }, } monster.defenses = { defense = 15, armor = 10, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_HEALING, minDamage = 95, maxDamage = 150, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_HEALING, minDamage = 95, maxDamage = 150, effect = CONST_ME_MAGIC_RED, target = false }, } monster.elements = { @@ -112,18 +112,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = -5 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -131,13 +130,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/williwasp.lua b/data-otservbr-global/monster/bosses/williwasp.lua index b3152170a2b..64a90d09de1 100644 --- a/data-otservbr-global/monster/bosses/williwasp.lua +++ b/data-otservbr-global/monster/bosses/williwasp.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 250 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 955, - bossRace = RARITY_NEMESIS + bossRace = RARITY_NEMESIS, } monster.strategiesTarget = { @@ -54,12 +54,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -72,16 +72,16 @@ monster.loot = { { id = 5902, chance = 100000, maxCount = 3 }, -- honeycomb { id = 3054, chance = 17650 }, -- silver amulet { id = 3032, chance = 5880 }, -- small emerald - { id = 19083, chance = 5000 } -- silver raid token + { id = 19083, chance = 5000 }, -- silver raid token } monster.attacks = { - { name = "melee", interval = 1500, chance = 100, skill = 30, attack = 30, condition = { type = CONDITION_POISON, totalDamage = 25, interval = 4000 } } + { name = "melee", interval = 1500, chance = 100, skill = 30, attack = 30, condition = { type = CONDITION_POISON, totalDamage = 25, interval = 4000 } }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -94,18 +94,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -113,13 +112,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/yaga_the_crone.lua b/data-otservbr-global/monster/bosses/yaga_the_crone.lua index 5aa0ed2c02b..4987d01b4c2 100644 --- a/data-otservbr-global/monster/bosses/yaga_the_crone.lua +++ b/data-otservbr-global/monster/bosses/yaga_the_crone.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -81,7 +81,7 @@ monster.loot = { { name = "spellbook of mind control", chance = 8333 }, { name = "coat", chance = 4170 }, { name = "necrotic rod", chance = 4170 }, - { name = "silver dagger", chance = 4170 } + { name = "silver dagger", chance = 4170 }, } monster.attacks = { @@ -89,7 +89,7 @@ monster.attacks = { { name = "combat", interval = 2500, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -30, maxDamage = -50, range = 5, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_HITBYFIRE, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 3000, chance = 13, minDamage = -10, maxDamage = -10, range = 5, shootEffect = CONST_ANI_POISON, target = false }, - { name = "firefield", interval = 2000, chance = 13, range = 5, shootEffect = CONST_ANI_FIRE, target = false } + { name = "firefield", interval = 2000, chance = 13, range = 5, shootEffect = CONST_ANI_FIRE, target = false }, } monster.defenses = { @@ -97,7 +97,7 @@ monster.defenses = { armor = 15, -- mitigation = ???, { name = "invisible", interval = 2000, chance = 18, effect = CONST_ME_MAGIC_RED }, - { name = "outfit", interval = 4000, chance = 9, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000, outfitMonster = "green frog" } + { name = "outfit", interval = 4000, chance = 9, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000, outfitMonster = "green frog" }, } monster.elements = { @@ -117,11 +117,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -129,13 +128,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/zarabustor.lua b/data-otservbr-global/monster/bosses/zarabustor.lua index d55b882f478..a9e7f9b3fc8 100644 --- a/data-otservbr-global/monster/bosses/zarabustor.lua +++ b/data-otservbr-global/monster/bosses/zarabustor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 92, lookFeet = 97, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 5100 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 421, - bossRace = RARITY_NEMESIS + bossRace = RARITY_NEMESIS, } monster.strategiesTarget = { @@ -54,20 +54,20 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 5, summons = { { name = "Warlock", chance = 10, interval = 2000, count = 2 }, - { name = "Green Djinn", chance = 10, interval = 2000, count = 3 } - } + { name = "Green Djinn", chance = 10, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -75,7 +75,7 @@ monster.voices = { chance = 10, { text = "Killing is such a splendid diversion from my studies.", yell = false }, { text = "Time to test my newest spells!", yell = false }, - { text = "Ah, practice time once again!", yell = false } + { text = "Ah, practice time once again!", yell = false }, } monster.loot = { @@ -87,7 +87,7 @@ monster.loot = { { id = 3029, chance = 3190 }, -- small sapphire { id = 825, chance = 3040 }, -- lightning robe { id = 3006, chance = 2420 }, -- ring of the sky - { id = 3360, chance = 2240 } -- golden armor + { id = 3360, chance = 2240 }, -- golden armor } monster.attacks = { @@ -98,14 +98,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -130, maxDamage = -350, length = 8, spread = 3, effect = CONST_ME_BIGCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -250, range = 7, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -330, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, - { name = "warlock skill reducer", interval = 2000, chance = 5, range = 5, target = false } + { name = "warlock skill reducer", interval = 2000, chance = 5, range = 5, target = false }, } monster.defenses = { defense = 20, armor = 20, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 225, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -118,18 +118,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = -5 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -137,13 +136,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/zavarash.lua b/data-otservbr-global/monster/bosses/zavarash.lua index 73bef7494c9..a3f41dc6d04 100644 --- a/data-otservbr-global/monster/bosses/zavarash.lua +++ b/data-otservbr-global/monster/bosses/zavarash.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 57, lookFeet = 85, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 35000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "dark torturer", chance = 100, interval = 1000, count = 2 } - } + { name = "dark torturer", chance = 100, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -99,12 +99,12 @@ monster.loot = { { id = 3414, chance = 1400 }, -- mastermind shield { id = 7431, chance = 700 }, -- demonbone { id = 8049, chance = 350 }, -- lavos armor - { id = 8100, chance = 170 } -- obsidian truncheon + { id = 8100, chance = 170 }, -- obsidian truncheon } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -6000, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -6000, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 400, maxDamage = 600, radius = 8, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 18, speedChange = 784, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 7000 }, - { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -133,11 +133,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -145,13 +144,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/zevelon_duskbringer.lua b/data-otservbr-global/monster/bosses/zevelon_duskbringer.lua index 46de9c312b3..7dd4739741e 100644 --- a/data-otservbr-global/monster/bosses/zevelon_duskbringer.lua +++ b/data-otservbr-global/monster/bosses/zevelon_duskbringer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Vampire", chance = 40, interval = 3000, count = 3 } - } + { name = "Vampire", chance = 40, interval = 3000, count = 3 }, + }, } monster.voices = { @@ -87,13 +87,13 @@ monster.loot = { { id = 8192, chance = 100000 }, -- vampire lord token { id = 3035, chance = 50000, maxCount = 5 }, -- platinum coin { id = 3031, chance = 100000, maxCount = 75 }, -- gold coin - { id = 3434, chance = 4500 } -- vampire shield + { id = 3434, chance = 4500 }, -- vampire shield } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 65, attack = 75 }, { name = "combat", interval = 1000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -200, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "speed", interval = 2000, chance = 15, target = true } + { name = "speed", interval = 2000, chance = 15, target = true }, } monster.defenses = { @@ -101,7 +101,7 @@ monster.defenses = { armor = 30, -- mitigation = ???, { name = "combat", interval = 1000, chance = 12, type = COMBAT_HEALING, minDamage = 100, maxDamage = 235, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 3000, chance = 25, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 3000, chance = 25, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -121,11 +121,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -133,13 +132,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/zoralurk.lua b/data-otservbr-global/monster/bosses/zoralurk.lua index 300a96663b7..e8095a70f68 100644 --- a/data-otservbr-global/monster/bosses/zoralurk.lua +++ b/data-otservbr-global/monster/bosses/zoralurk.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 86, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 55000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 10000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "demon", chance = 50, interval = 4000, count = 2 } - } + { name = "demon", chance = 50, interval = 4000, count = 2 }, + }, } monster.voices = { @@ -81,7 +81,7 @@ monster.loot = { { name = "bright sword", chance = 20000 }, { name = "warlord sword", chance = 6000 }, { name = "patched boots", chance = 7000 }, - { id = 3123, chance = 16000 } -- worn leather boots + { id = 3123, chance = 16000 }, -- worn leather boots } monster.attacks = { @@ -89,7 +89,7 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -900, radius = 7, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -800, radius = 7, effect = CONST_ME_SMALLPLANTS, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -500, maxDamage = -800, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "combat", interval = 3000, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -600, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true } + { name = "combat", interval = 3000, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -600, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { @@ -102,7 +102,7 @@ monster.defenses = { { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_CRAPS, target = false, duration = 10000, outfitMonster = "fire devil" }, { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_CRAPS, target = false, duration = 10000, outfitMonster = "giant spider" }, { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_CRAPS, target = false, duration = 10000, outfitMonster = "undead dragon" }, - { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_CRAPS, target = false, duration = 10000, outfitMonster = "lost soul" } + { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_CRAPS, target = false, duration = 10000, outfitMonster = "lost soul" }, } monster.elements = { @@ -122,11 +122,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -134,13 +133,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/bosses/zushuka.lua b/data-otservbr-global/monster/bosses/zushuka.lua index afd3c0f787e..968e0c3c2dc 100644 --- a/data-otservbr-global/monster/bosses/zushuka.lua +++ b/data-otservbr-global/monster/bosses/zushuka.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 4, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -105,7 +105,7 @@ monster.loot = { { id = 5911, chance = 7000 }, -- red piece of cloth { id = 19365, chance = 7000 }, -- trapped lightning { id = 19366, chance = 3000 }, -- icy culottes - { id = 7410, chance = 3000 } -- queen's sceptre + { id = 7410, chance = 3000 }, -- queen's sceptre } monster.attacks = { @@ -114,7 +114,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -110, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -300, maxDamage = -750, length = 8, spread = 3, effect = CONST_ME_ICEAREA, target = false }, { name = "outfit", interval = 2000, chance = 10, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitItem = 7172 }, - { name = "speed", interval = 2000, chance = 15, speedChange = -330, range = 7, effect = CONST_ME_ICETORNADO, target = false, duration = 20000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -330, range = 7, effect = CONST_ME_ICETORNADO, target = false, duration = 20000 }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.defenses = { armor = 20, -- mitigation = ???, { name = "combat", interval = 10000, chance = 1, type = COMBAT_HEALING, minDamage = 7500, maxDamage = 7515, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "combat", interval = 3000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 3000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -142,11 +142,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -154,13 +153,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/animated_snowman.lua b/data-otservbr-global/monster/constructs/animated_snowman.lua index 279c1d9b04b..72f7c5c9dc6 100644 --- a/data-otservbr-global/monster/constructs/animated_snowman.lua +++ b/data-otservbr-global/monster/constructs/animated_snowman.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1751 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Percht Island." + Locations = "Percht Island.", } monster.health = 450 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -83,12 +83,12 @@ monster.loot = { { name = "glacier mask", chance = 250 }, { name = "glacier amulet", chance = 3290 }, { name = "moonlight rod", chance = 1830 }, - { name = "glacier kilt", chance = 1100 } + { name = "glacier kilt", chance = 1100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -10, maxDamage = -40, range = 7, radius = 2, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -10, maxDamage = -40, range = 7, radius = 2, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/biting_book.lua b/data-otservbr-global/monster/constructs/biting_book.lua index 23b38b1782d..d785bb06281 100644 --- a/data-otservbr-global/monster/constructs/biting_book.lua +++ b/data-otservbr-global/monster/constructs/biting_book.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1656 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Secret Library earth, energy, fire and ice sections. Also two incarcerated in the Issavi prison, reachable from the city Library." + Locations = "Secret Library earth, energy, fire and ice sections. Also two incarcerated in the Issavi prison, reachable from the city Library.", } monster.health = 6500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -77,13 +77,13 @@ monster.loot = { { name = "book page", chance = 500, maxCount = 4 }, { name = "glowing rune", chance = 500, maxCount = 2 }, { name = "platinum coin", chance = 10000, maxCount = 5 }, - { name = "silken bookmark", chance = 500, maxCount = 3 } + { name = "silken bookmark", chance = 500, maxCount = 3 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1055 }, { name = "combat", interval = 1000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1210, radius = 5, effect = CONST_ME_SMOKE, target = false }, - { name = "combat", interval = 1000, chance = 14, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1210, radius = 3, effect = CONST_ME_BATS, target = false } + { name = "combat", interval = 1000, chance = 14, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1210, radius = 3, effect = CONST_ME_BATS, target = false }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/clay_guardian.lua b/data-otservbr-global/monster/constructs/clay_guardian.lua index 158def11ada..804d671bdf9 100644 --- a/data-otservbr-global/monster/constructs/clay_guardian.lua +++ b/data-otservbr-global/monster/constructs/clay_guardian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 706 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Horestis Tomb, Middle Spike, Medusa Tower." + Locations = "Horestis Tomb, Middle Spike, Medusa Tower.", } monster.health = 625 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,20 +83,20 @@ monster.loot = { { name = "earth arrow", chance = 5555, maxCount = 8 }, { name = "small topaz", chance = 320 }, { name = "lump of earth", chance = 25000 }, - { name = "clay lump", chance = 1100 } + { name = "clay lump", chance = 1100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -125 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -30, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_EARTHDAMAGE, minDamage = -20, maxDamage = -30, radius = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_EARTHDAMAGE, minDamage = -20, maxDamage = -30, radius = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 25, armor = 42, mitigation = 0.70, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 40, maxDamage = 130, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 40, maxDamage = 130, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/damaged_crystal_golem.lua b/data-otservbr-global/monster/constructs/damaged_crystal_golem.lua index cbe17b26634..9700b8c9d89 100644 --- a/data-otservbr-global/monster/constructs/damaged_crystal_golem.lua +++ b/data-otservbr-global/monster/constructs/damaged_crystal_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 874 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 1, - Locations = "Golem Workshop in Gnomebase Alpha" + Locations = "Golem Workshop in Gnomebase Alpha", } monster.health = 500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -75,9 +75,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} - +monster.loot = {} monster.defenses = { defense = 5, @@ -102,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/damaged_worker_golem.lua b/data-otservbr-global/monster/constructs/damaged_worker_golem.lua index 8de08c0a809..9e322dd6cb3 100644 --- a/data-otservbr-global/monster/constructs/damaged_worker_golem.lua +++ b/data-otservbr-global/monster/constructs/damaged_worker_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 524 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Factory Quarter." + Locations = "Factory Quarter.", } monster.health = 260 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,19 +86,19 @@ monster.loot = { { name = "iron ore", chance = 400 }, { name = "nail", chance = 1460 }, { name = "heavily rusted armor", chance = 790 }, - { name = "gear crystal", chance = 200 } + { name = "gear crystal", chance = 200 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -45, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -45, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, } monster.defenses = { defense = 25, armor = 16, mitigation = 0.33, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 5, maxDamage = 11, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 5, maxDamage = 11, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/diamond_servant.lua b/data-otservbr-global/monster/constructs/diamond_servant.lua index 28d1c72cd00..71f94a02b8c 100644 --- a/data-otservbr-global/monster/constructs/diamond_servant.lua +++ b/data-otservbr-global/monster/constructs/diamond_servant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 702 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Edron." + Locations = "Edron.", } monster.health = 1000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,14 +95,14 @@ monster.loot = { { id = 9063, chance = 5320 }, -- crystal pedestal { name = "shockwave amulet", chance = 110 }, { name = "gear crystal", chance = 5000 }, - { name = "slime mould", chance = 480 } + { name = "slime mould", chance = 480 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -80, maxDamage = -120, radius = 3, effect = CONST_ME_YELLOWENERGY, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -125, maxDamage = -170, length = 5, spread = 2, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_STUN, target = true, duration = 3000 } + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_STUN, target = true, duration = 3000 }, } monster.defenses = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/diamond_servant_replica.lua b/data-otservbr-global/monster/constructs/diamond_servant_replica.lua index 130eb5393ee..487811413e1 100644 --- a/data-otservbr-global/monster/constructs/diamond_servant_replica.lua +++ b/data-otservbr-global/monster/constructs/diamond_servant_replica.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1326 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Replica Dungeon" + Locations = "Replica Dungeon", } monster.health = 2000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -89,14 +89,14 @@ monster.loot = { { id = 7440, chance = 400 }, -- mastermind potion { id = 9304, chance = 110 }, -- shockwave amulet { id = 8050, chance = 20 }, -- crystalline armor - { id = 7428, chance = 13 } -- bonebreaker + { id = 7428, chance = 13 }, -- bonebreaker } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 40, attack = 40 }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -210, radius = 3, effect = CONST_ME_YELLOWENERGY, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -75, maxDamage = -125, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "wyrm wave", interval = 2000, chance = 9, minDamage = -70, maxDamage = -120, target = false } + { name = "wyrm wave", interval = 2000, chance = 9, minDamage = -70, maxDamage = -120, target = false }, } monster.defenses = { @@ -104,7 +104,7 @@ monster.defenses = { armor = 25, mitigation = 0.83, { name = "combat", interval = 2000, chance = 11, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, effect = CONST_ME_YELLOWENERGY, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, effect = CONST_ME_YELLOWENERGY, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/enraged_crystal_golem.lua b/data-otservbr-global/monster/constructs/enraged_crystal_golem.lua index 250044a0c36..07feaeca31a 100644 --- a/data-otservbr-global/monster/constructs/enraged_crystal_golem.lua +++ b/data-otservbr-global/monster/constructs/enraged_crystal_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 873 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Golem Workshop." + Locations = "Golem Workshop.", } monster.health = 700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,18 +62,18 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Crrrrk! Chhhhr!", yell = false } + { text = "Crrrrk! Chhhhr!", yell = false }, } monster.loot = { @@ -84,16 +84,16 @@ monster.loot = { { name = "strong mana potion", chance = 8270 }, { name = "blue crystal splinter", chance = 4120 }, { name = "cyan crystal fragment", chance = 1050 }, - { name = "crystalline spikes", chance = 7980 } + { name = "crystalline spikes", chance = 7980 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -106,14 +106,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/eternal_guardian.lua b/data-otservbr-global/monster/constructs/eternal_guardian.lua index e27940b170d..204078582c4 100644 --- a/data-otservbr-global/monster/constructs/eternal_guardian.lua +++ b/data-otservbr-global/monster/constructs/eternal_guardian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 615 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "North-east Muggy Plains, Deeper Banuta." + Locations = "North-east Muggy Plains, Deeper Banuta.", } monster.health = 2500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,11 +91,11 @@ monster.loot = { { name = "spiked iron ball", chance = 9960 }, { name = "clay lump", chance = 720 }, { name = "piece of marble rock", chance = 430 }, - { id = 12600, chance = 400 } -- coal + { id = 12600, chance = 400 }, -- coal } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/glooth_golem.lua b/data-otservbr-global/monster/constructs/glooth_golem.lua index 9b23f8b6c45..386efb65c3d 100644 --- a/data-otservbr-global/monster/constructs/glooth_golem.lua +++ b/data-otservbr-global/monster/constructs/glooth_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1038 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Glooth Factory, Underground Glooth Factory, Rathleton Sewers, Jaccus Maxxens Dungeon, \z - Oramond Dungeon (depending on Magistrate votes)." + Oramond Dungeon (depending on Magistrate votes).", } monster.health = 2700 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -97,7 +97,7 @@ monster.loot = { { id = 21180, chance = 290 }, -- glooth axe { id = 3037, chance = 730 }, -- yellow gem { id = 9057, chance = 1560, maxCount = 4 }, -- small topaz - { id = 3032, chance = 1590, maxCount = 4 } -- small emerald + { id = 3032, chance = 1590, maxCount = 4 }, -- small emerald } monster.attacks = { @@ -105,7 +105,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 2, skill = 86, attack = 100 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -125, maxDamage = -245, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, { name = "war golem skill reducer", interval = 2000, chance = 16, target = false }, - { name = "war golem electrify", interval = 2000, chance = 9, range = 7, target = false } + { name = "war golem electrify", interval = 2000, chance = 9, range = 7, target = false }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.defenses = { armor = 43, mitigation = 1.37, { name = "speed", interval = 2000, chance = 13, speedChange = 404, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/golden_servant.lua b/data-otservbr-global/monster/constructs/golden_servant.lua index b3847cef32d..6eec2510b72 100644 --- a/data-otservbr-global/monster/constructs/golden_servant.lua +++ b/data-otservbr-global/monster/constructs/golden_servant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 701 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Edron." + Locations = "Edron.", } monster.health = 550 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,14 +90,14 @@ monster.loot = { { name = "spellbook of enlightenment", chance = 520 }, { name = "gear wheel", chance = 940 }, { name = "slime mould", chance = 340 }, - { name = "golden can of oil", chance = 40 } + { name = "golden can of oil", chance = 40 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -100, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_YELLOWENERGY, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -80, maxDamage = -110, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -90, maxDamage = -150, length = 5, spread = 2, effect = CONST_ME_YELLOWENERGY, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -90, maxDamage = -150, length = 5, spread = 2, effect = CONST_ME_YELLOWENERGY, target = false }, } monster.defenses = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/golden_servant_replica.lua b/data-otservbr-global/monster/constructs/golden_servant_replica.lua index 11c810002b4..dbf2b07dfeb 100644 --- a/data-otservbr-global/monster/constructs/golden_servant_replica.lua +++ b/data-otservbr-global/monster/constructs/golden_servant_replica.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1327 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Replica Dungeon" + Locations = "Replica Dungeon", } monster.health = 2000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -84,20 +84,20 @@ monster.loot = { { id = 12601, chance = 340 }, -- slime mould { id = 12801, chance = 36 }, -- golden can of oil { id = 3360, chance = 13 }, -- golden armor - { id = 3063, chance = 8 } -- gold ring + { id = 3063, chance = 8 }, -- gold ring } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 40, attack = 40 }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -110, length = 5, spread = 1, effect = CONST_ME_YELLOWENERGY, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -70, maxDamage = -110, range = 7, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -70, maxDamage = -110, range = 7, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true }, } monster.defenses = { defense = 45, armor = 29, mitigation = 0.88, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 13, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/ice_golem.lua b/data-otservbr-global/monster/constructs/ice_golem.lua index 0bdefa882d7..7e7d42d0643 100644 --- a/data-otservbr-global/monster/constructs/ice_golem.lua +++ b/data-otservbr-global/monster/constructs/ice_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 326 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Formorgar Glacier, Formorgar Mines, Nibelor Ice Cave, Ice Witch Temple, \z - Deeper Banuta, Crystal Caves, Chyllfroest." + Deeper Banuta, Crystal Caves, Chyllfroest.", } monster.health = 385 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -89,14 +89,14 @@ monster.loot = { { name = "strong health potion", chance = 2500 }, { name = "strong mana potion", chance = 3000 }, { name = "glacier mask", chance = 200 }, - { name = "frosty heart", chance = 14500 } + { name = "frosty heart", chance = 14500 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -220 }, { name = "speed", interval = 1000, chance = 13, speedChange = -800, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false, duration = 20000 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -85, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, - { name = "ice golem skill reducer", interval = 2000, chance = 10, target = false } + { name = "ice golem skill reducer", interval = 2000, chance = 10, target = false }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/infected_weeper.lua b/data-otservbr-global/monster/constructs/infected_weeper.lua index 7479187dda5..e302618f3eb 100644 --- a/data-otservbr-global/monster/constructs/infected_weeper.lua +++ b/data-otservbr-global/monster/constructs/infected_weeper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 897 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Warzone 2." + Locations = "Warzone 2.", } monster.health = 3000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -71,8 +71,8 @@ monster.light = { monster.summon = { maxSummons = 6, summons = { - { name = "Parasite", chance = 10, interval = 2000, count = 6 } - } + { name = "Parasite", chance = 10, interval = 2000, count = 6 }, + }, } monster.voices = { @@ -84,21 +84,21 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 100000, maxCount = 198 }, { name = "platinum coin", chance = 100000, maxCount = 7 }, - { id = 12600, chance = 1460 } -- coal + { id = 12600, chance = 1460 }, -- coal } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -280 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -250, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -250, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, } monster.defenses = { defense = 45, armor = 76, mitigation = 2.19, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/iron_servant.lua b/data-otservbr-global/monster/constructs/iron_servant.lua index 74e2cc126eb..d99f057ac33 100644 --- a/data-otservbr-global/monster/constructs/iron_servant.lua +++ b/data-otservbr-global/monster/constructs/iron_servant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 700 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 30, Stars = 2, Occurrence = 3, - Locations = "Edron." + Locations = "Edron.", } monster.health = 350 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -82,13 +82,13 @@ monster.loot = { { name = "halberd", chance = 1000 }, { name = "gear wheel", chance = 4840 }, { id = 8894, chance = 200 }, -- heavily rusted armor - { name = "slime mould", chance = 310 } + { name = "slime mould", chance = 310 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -60, range = 7, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_STUN, target = true, duration = 2000 } + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_STUN, target = true, duration = 2000 }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/iron_servant_replica.lua b/data-otservbr-global/monster/constructs/iron_servant_replica.lua index 04781d5dba7..5703d626d65 100644 --- a/data-otservbr-global/monster/constructs/iron_servant_replica.lua +++ b/data-otservbr-global/monster/constructs/iron_servant_replica.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1325 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Replica Dungeon" + Locations = "Replica Dungeon", } monster.health = 1000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -77,13 +77,13 @@ monster.loot = { { id = 3031, chance = 82190, maxCount = 55 }, -- gold coin { id = 266, chance = 1980 }, -- health potion { id = 3269, chance = 1000 }, -- halberd - { id = 12601, chance = 310 } -- slime mould + { id = 12601, chance = 310 }, -- slime mould } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 20, attack = 30 }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -60, range = 7, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "drunk", interval = 2000, chance = 14, range = 7, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_STUN, target = false, duration = 2000 } + { name = "drunk", interval = 2000, chance = 14, range = 7, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_STUN, target = false, duration = 2000 }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/lava_golem.lua b/data-otservbr-global/monster/constructs/lava_golem.lua index 41ccaf4c770..0aa0548574e 100644 --- a/data-otservbr-global/monster/constructs/lava_golem.lua +++ b/data-otservbr-global/monster/constructs/lava_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 884 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Warzone 2." + Locations = "Warzone 2.", } monster.health = 9000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -103,7 +103,7 @@ monster.loot = { { name = "red crystal fragment", chance = 10990 }, { name = "magma clump", chance = 15370, maxCount = 2 }, { name = "blazing bone", chance = 15200 }, - { name = "prismatic bolt", chance = 12580, maxCount = 5 } + { name = "prismatic bolt", chance = 12580, maxCount = 5 }, } monster.attacks = { @@ -113,7 +113,7 @@ monster.attacks = { { name = "lava golem soulfire", interval = 2000, chance = 15, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -220, maxDamage = -350, radius = 4, effect = CONST_ME_FIREAREA, target = true }, { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -280, maxDamage = -350, radius = 3, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -280, maxDamage = -350, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { @@ -139,7 +139,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/magma_crawler.lua b/data-otservbr-global/monster/constructs/magma_crawler.lua index bb4d2b7cd7d..d9c5c44080b 100644 --- a/data-otservbr-global/monster/constructs/magma_crawler.lua +++ b/data-otservbr-global/monster/constructs/magma_crawler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 885 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Warzone 2." + Locations = "Warzone 2.", } monster.health = 4800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -101,7 +101,7 @@ monster.loot = { { name = "green crystal fragment", chance = 7000 }, { name = "magma clump", chance = 11600 }, { name = "blazing bone", chance = 11500 }, - { name = "blazing bone", chance = 12220 } + { name = "blazing bone", chance = 12220 }, } monster.attacks = { @@ -111,14 +111,14 @@ monster.attacks = { { name = "magma crawler soulfire", interval = 2000, chance = 20, target = false }, { name = "soulfire rune", interval = 2000, chance = 10, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -140, maxDamage = -180, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = -800, radius = 2, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -800, radius = 2, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, } monster.defenses = { defense = 45, armor = 84, mitigation = 2.51, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -138,7 +138,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/metal_gargoyle.lua b/data-otservbr-global/monster/constructs/metal_gargoyle.lua index 14afeb4476d..206346bf4f2 100644 --- a/data-otservbr-global/monster/constructs/metal_gargoyle.lua +++ b/data-otservbr-global/monster/constructs/metal_gargoyle.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1039 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Workshop Quarter, Glooth Factory, Underground Glooth Factory, Abandoned Sewers, \z - Oramond Dungeon (depending on Magistrate votes), Jaccus Maxxens Dungeon." + Oramond Dungeon (depending on Magistrate votes), Jaccus Maxxens Dungeon.", } monster.health = 2100 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -92,14 +92,14 @@ monster.loot = { { id = 10310, chance = 2240 }, -- shiny stone { id = 21169, chance = 1490 }, -- metal spats { id = 21168, chance = 1490 }, -- alloy legs - { id = 8896, chance = 2990 } -- slightly rusted armor + { id = 8896, chance = 2990 }, -- slightly rusted armor } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 84, attack = 50 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -125, maxDamage = -230, length = 8, spread = 3, effect = CONST_ME_YELLOWENERGY, target = false }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = -85, maxDamage = -150, range = 7, radius = 3, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "metal gargoyle curse", interval = 2000, chance = 13, target = false } + { name = "metal gargoyle curse", interval = 2000, chance = 13, target = false }, } monster.defenses = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/orewalker.lua b/data-otservbr-global/monster/constructs/orewalker.lua index 5e8f0f5a139..767b8a049ae 100644 --- a/data-otservbr-global/monster/constructs/orewalker.lua +++ b/data-otservbr-global/monster/constructs/orewalker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 883 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Warzone 3." + Locations = "Warzone 3.", } monster.health = 7200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -103,7 +103,7 @@ monster.loot = { { name = "pulverized ore", chance = 20500 }, { name = "vein of ore", chance = 15000 }, { name = "prismatic bolt", chance = 15500, maxCount = 5 }, - { name = "crystal crossbow", chance = 300 } + { name = "crystal crossbow", chance = 300 }, } monster.attacks = { @@ -113,7 +113,7 @@ monster.attacks = { -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -800, maxDamage = -1080, radius = 3, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_SMALLPLANTS, target = true }, { name = "drunk", interval = 2000, chance = 15, radius = 4, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 6000 }, - { name = "speed", interval = 2000, chance = 15, speedChange = -800, radius = 2, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -800, radius = 2, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, } monster.defenses = { @@ -139,7 +139,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/rotten_golem.lua b/data-otservbr-global/monster/constructs/rotten_golem.lua index d63994a6fe8..edc6f909a70 100644 --- a/data-otservbr-global/monster/constructs/rotten_golem.lua +++ b/data-otservbr-global/monster/constructs/rotten_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1939 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Rotten Wasteland." + Locations = "Rotten Wasteland.", } monster.health = 28000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -91,7 +91,7 @@ monster.loot = { { name = "stone skin amulet", chance = 740 }, { name = "terra mantle", chance = 510 }, { name = "rubber cap", chance = 430 }, - { id = 34109, chance = 20 } -- bag you desire + { id = 34109, chance = 20 }, -- bag you desire } monster.attacks = { @@ -100,7 +100,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -900, maxDamage = -1400, radius = 5, effect = CONST_ME_BIGPLANTS, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -1100, maxDamage = -1300, radius = 7, effect = CONST_ME_BIGPLANTS, target = false }, { name = "poison chain", interval = 2000, chance = 20, minDamage = -1050, maxDamage = -1200, radius = 7, effect = CONST_ME_BIGPLANTS, target = false }, - { name = "root", interval = 2000, chance = 1, target = true } + { name = "root", interval = 2000, chance = 1, target = true }, } monster.defenses = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/rustheap_golem.lua b/data-otservbr-global/monster/constructs/rustheap_golem.lua index 3225336b79c..0828f732b2b 100644 --- a/data-otservbr-global/monster/constructs/rustheap_golem.lua +++ b/data-otservbr-global/monster/constructs/rustheap_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1041 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Workshop Quarter, Glooth Factory, Underground Glooth Factory, \z - Oramond Dungeon (depending on Magistrate votes), Jaccus Maxxens Dungeon." + Oramond Dungeon (depending on Magistrate votes), Jaccus Maxxens Dungeon.", } monster.health = 2800 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { chance = 10, { text = "*clatter*", yell = false }, { text = "*krrk*", yell = false }, - { text = "*frzzp*", yell = false } + { text = "*frzzp*", yell = false }, } monster.loot = { @@ -96,20 +96,20 @@ monster.loot = { { id = 21171, chance = 330 }, -- metal bat { id = 21170, chance = 2930 }, -- gearwheel chain { id = 8896, chance = 5860 }, -- slightly rusted armor - { id = 8899, chance = 4230 } -- slightly rusted legs + { id = 8899, chance = 4230 }, -- slightly rusted legs } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 118, attack = 50 }, { name = "rustheap golem electrify", interval = 2000, chance = 11, range = 7, target = false }, { name = "frazzlemaw paralyze", interval = 2000, chance = 10, target = false }, - { name = "rustheap golem wave", interval = 2000, chance = 9, minDamage = -100, maxDamage = -210, target = false } + { name = "rustheap golem wave", interval = 2000, chance = 9, minDamage = -100, maxDamage = -210, target = false }, } monster.defenses = { defense = 45, armor = 40, - { name = "speed", interval = 2000, chance = 11, speedChange = 428, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000 } + { name = "speed", interval = 2000, chance = 11, speedChange = 428, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000 }, } monster.elements = { @@ -122,14 +122,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/sandstone_scorpion.lua b/data-otservbr-global/monster/constructs/sandstone_scorpion.lua index 1133d31145b..4648207c0c4 100644 --- a/data-otservbr-global/monster/constructs/sandstone_scorpion.lua +++ b/data-otservbr-global/monster/constructs/sandstone_scorpion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 705 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Horestis Tomb." + Locations = "Horestis Tomb.", } monster.health = 900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,18 +83,18 @@ monster.loot = { { name = "daramian mace", chance = 5100 }, { name = "steel helmet", chance = 4620 }, { name = "black shield", chance = 1820 }, - { name = "fist on a stick", chance = 220 } + { name = "fist on a stick", chance = 220 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -193, condition = { type = CONDITION_POISON, totalDamage = 1000, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -193, condition = { type = CONDITION_POISON, totalDamage = 1000, interval = 4000 } }, } monster.defenses = { defense = 0, armor = 42, mitigation = 1.13, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 60, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 60, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/shrieking_cry-stal.lua b/data-otservbr-global/monster/constructs/shrieking_cry-stal.lua index c1e7aa2118f..ef5a6326393 100644 --- a/data-otservbr-global/monster/constructs/shrieking_cry-stal.lua +++ b/data-otservbr-global/monster/constructs/shrieking_cry-stal.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2278 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Crystal Enigma" + Locations = "Crystal Enigma", } monster.health = 20650 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/stone_devourer.lua b/data-otservbr-global/monster/constructs/stone_devourer.lua index 897390f3dbf..4af345b23d7 100644 --- a/data-otservbr-global/monster/constructs/stone_devourer.lua +++ b/data-otservbr-global/monster/constructs/stone_devourer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 879 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Warzone 1." + Locations = "Warzone 1.", } monster.health = 4200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -98,14 +98,14 @@ monster.loot = { { name = "green crystal splinter", chance = 6960 }, { name = "cyan crystal fragment", chance = 6810 }, { name = "stone nose", chance = 18679 }, - { name = "crystalline spikes", chance = 16320 } + { name = "crystalline spikes", chance = 16320 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -990 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -230, maxDamage = -460, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_STONES, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -650, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -260, length = 5, spread = 3, effect = CONST_ME_STONES, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -260, length = 5, spread = 3, effect = CONST_ME_STONES, target = false }, } monster.defenses = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/stone_golem.lua b/data-otservbr-global/monster/constructs/stone_golem.lua index 96c1794e5f6..8acd17a21f0 100644 --- a/data-otservbr-global/monster/constructs/stone_golem.lua +++ b/data-otservbr-global/monster/constructs/stone_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 67 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Maze of Lost Souls, in and around Ashta daramai, Formorgar Mines, \z Mad Technomancer room, Dark Cathedral, Demona, Goroma, Tarpit Tomb, Peninsula Tomb, \z Deeper Banuta, Forbidden Lands, Beregar Mines, Farmine Mines, Drillworm Caves, 2 caves on Hrodmir, \z - Orc Fortress (single spawn) and Medusa Tower." + Orc Fortress (single spawn) and Medusa Tower.", } monster.health = 270 @@ -38,7 +38,7 @@ monster.manaCost = 590 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -87,11 +87,11 @@ monster.loot = { { name = "shiny stone", chance = 760 }, { name = "sulphurous stone", chance = 10370 }, { name = "piece of marble rock", chance = 380 }, - { id = 12600, chance = 550 } -- coal + { id = 12600, chance = 550 }, -- coal } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/walker.lua b/data-otservbr-global/monster/constructs/walker.lua index 9ea09933d27..3ebcd2cc468 100644 --- a/data-otservbr-global/monster/constructs/walker.lua +++ b/data-otservbr-global/monster/constructs/walker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1043 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "A few spawns in the Underground Glooth Factory, Glooth Factory, and Rathleton Sewers." + Locations = "A few spawns in the Underground Glooth Factory, Glooth Factory, and Rathleton Sewers.", } monster.health = 3000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -88,13 +88,13 @@ monster.loot = { { id = 239, chance = 3230 }, -- great health potion { id = 238, chance = 2300 }, -- great mana potion { id = 21169, chance = 1780 }, -- metal spats - { id = 3554, chance = 450 } -- steel boots + { id = 3554, chance = 450 }, -- steel boots } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 50 }, { name = "walker skill reducer", interval = 2000, chance = 21, target = false }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -125, maxDamage = -245, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false } + { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -125, maxDamage = -245, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, } monster.defenses = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/war_golem.lua b/data-otservbr-global/monster/constructs/war_golem.lua index f23ceea169c..37bed1e4c29 100644 --- a/data-otservbr-global/monster/constructs/war_golem.lua +++ b/data-otservbr-global/monster/constructs/war_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 533 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Factory Quarter." + Locations = "Factory Quarter.", } monster.health = 4300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -109,7 +109,7 @@ monster.loot = { { id = 7422, chance = 120 }, -- jade hammer { id = 7428, chance = 770 }, -- bonebreaker { id = 3061, chance = 1000 }, -- life crystal - { id = 12305, chance = 100 } -- tin key + { id = 12305, chance = 100 }, -- tin key } monster.attacks = { @@ -117,7 +117,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -165, maxDamage = -220, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, { name = "outfit", interval = 2000, chance = 1, range = 7, target = false, duration = 3000, outfitMonster = "skeleton" }, { name = "war golem electrify", interval = 2000, chance = 15, range = 1, target = false }, - { name = "war golem skill reducer", interval = 2000, chance = 10, target = false } + { name = "war golem skill reducer", interval = 2000, chance = 10, target = false }, } monster.defenses = { @@ -125,7 +125,7 @@ monster.defenses = { armor = 35, mitigation = 1.18, { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -145,7 +145,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/weeper.lua b/data-otservbr-global/monster/constructs/weeper.lua index e7347e2c94a..29633af26e2 100644 --- a/data-otservbr-global/monster/constructs/weeper.lua +++ b/data-otservbr-global/monster/constructs/weeper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 882 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Warzone 2." + Locations = "Warzone 2.", } monster.health = 6800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,21 +94,21 @@ monster.loot = { { name = "magma clump", chance = 13240 }, { name = "blazing bone", chance = 14890 }, { name = "eye of a weeper", chance = 15870 }, - { name = "prismatic bolt", chance = 10900, maxCount = 5 } + { name = "prismatic bolt", chance = 10900, maxCount = 5 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, { name = "combat", interval = 3000, chance = 100, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -250, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, } monster.defenses = { defense = 50, armor = 76, mitigation = 2.19, - { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_RED } + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_RED }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/constructs/worker_golem.lua b/data-otservbr-global/monster/constructs/worker_golem.lua index b18ffc8abd7..f44685e5ffc 100644 --- a/data-otservbr-global/monster/constructs/worker_golem.lua +++ b/data-otservbr-global/monster/constructs/worker_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 503 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Factory Quarter." + Locations = "Factory Quarter.", } monster.health = 1470 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -99,19 +99,19 @@ monster.loot = { { id = 8895, chance = 200 }, -- rusted armor { id = 8898, chance = 50 }, -- rusted legs { id = 9066, chance = 2270 }, -- crystal pedestal - { name = "gear crystal", chance = 2270 } + { name = "gear crystal", chance = 2270 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -125, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -125, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, } monster.defenses = { defense = 35, armor = 35, mitigation = 1.32, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/brittle_skeleton.lua b/data-otservbr-global/monster/dawnport/brittle_skeleton.lua index 923743724e8..b7a073a0038 100644 --- a/data-otservbr-global/monster/dawnport/brittle_skeleton.lua +++ b/data-otservbr-global/monster/dawnport/brittle_skeleton.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 50 @@ -22,7 +22,7 @@ monster.manaCost = 300 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -69,12 +69,12 @@ monster.loot = { { id = 3378, chance = 2920 }, -- studded armor { id = 3264, chance = 6100 }, -- sword { id = 2920, chance = 10610 }, -- torch - { id = 3367, chance = 3980 } -- viking helmet + { id = 3367, chance = 3980 }, -- viking helmet } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 18 }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = false } + { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = false }, } monster.defenses = { @@ -100,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/crazed_dwarf.lua b/data-otservbr-global/monster/dawnport/crazed_dwarf.lua index 8a2b5f5a4d8..cef7e991928 100644 --- a/data-otservbr-global/monster/dawnport/crazed_dwarf.lua +++ b/data-otservbr-global/monster/dawnport/crazed_dwarf.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 105 monster.maxHealth = 105 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 320 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -69,11 +68,11 @@ monster.loot = { { id = 3456, chance = 8570 }, -- pick { id = 3410, chance = 17140 }, -- plate shield { id = 3378, chance = 8570 }, -- studded armor - { id = 3723, chance = 47140 } -- white mushroom + { id = 3723, chance = 47140 }, -- white mushroom } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 26 } + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 26 }, } monster.defenses = { @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/dawn_bat.lua b/data-otservbr-global/monster/dawnport/dawn_bat.lua index a195bd0dd56..c67f0c62bc2 100644 --- a/data-otservbr-global/monster/dawnport/dawn_bat.lua +++ b/data-otservbr-global/monster/dawnport/dawn_bat.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 30 monster.maxHealth = 30 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,11 +60,11 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 5120, maxCount = 3 } + { name = "gold coin", chance = 5120, maxCount = 3 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/dawn_scorpion.lua b/data-otservbr-global/monster/dawnport/dawn_scorpion.lua index 170d5ca7ac0..269c0877ae6 100644 --- a/data-otservbr-global/monster/dawnport/dawn_scorpion.lua +++ b/data-otservbr-global/monster/dawnport/dawn_scorpion.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 65 monster.maxHealth = 65 monster.race = "venom" @@ -23,7 +22,7 @@ monster.manaCost = 310 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -61,12 +60,12 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 100000, maxCount = 4 } -- gold coin + { id = 3031, chance = 100000, maxCount = 4 }, -- gold coin } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 20, attack = 20, condition = { type = CONDITION_POISON, totalDamage = 40, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -10, maxDamage = -20, range = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -10, maxDamage = -20, range = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/dawnfly.lua b/data-otservbr-global/monster/dawnport/dawnfly.lua index ecac4b06634..240be3c7934 100644 --- a/data-otservbr-global/monster/dawnport/dawnfly.lua +++ b/data-otservbr-global/monster/dawnport/dawnfly.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 90 monster.maxHealth = 90 monster.race = "venom" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -68,19 +67,19 @@ monster.loot = { { id = 3031, chance = 100000, maxCount = 12 }, -- gold coin { id = 266, chance = 3630 }, -- health potion { id = 268, chance = 3800 }, -- mana potion - { id = 3448, chance = 14500, maxCount = 8 } -- poison arrow + { id = 3448, chance = 14500, maxCount = 8 }, -- poison arrow } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 16, condition = { type = CONDITION_POISON, totalDamage = 8, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -4, maxDamage = -8, range = 7, shootEffect = CONST_ANI_POISONARROW, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -4, maxDamage = -8, range = 7, shootEffect = CONST_ANI_POISONARROW, target = false }, } monster.defenses = { defense = 2, armor = 3, mitigation = 0.25, - { name = "speed", interval = 2000, chance = 11, speedChange = 238, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 11, speedChange = 238, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -100,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/juvenile_cyclops.lua b/data-otservbr-global/monster/dawnport/juvenile_cyclops.lua index d2b01943ad6..d06e36d5d7b 100644 --- a/data-otservbr-global/monster/dawnport/juvenile_cyclops.lua +++ b/data-otservbr-global/monster/dawnport/juvenile_cyclops.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 260 monster.maxHealth = 260 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 490 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -71,12 +70,12 @@ monster.loot = { { id = 3410, chance = 1350 }, -- plate shield { id = 3362, chance = 9460 }, -- studded legs { id = 3264, chance = 21620 }, -- sword - { id = 3012, chance = 1350 } -- wolf tooth chain + { id = 3012, chance = 1350 }, -- wolf tooth chain } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 20, attack = 30 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { @@ -102,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/lesser_fire_devil.lua b/data-otservbr-global/monster/dawnport/lesser_fire_devil.lua index 043267ffe91..25f5765eefb 100644 --- a/data-otservbr-global/monster/dawnport/lesser_fire_devil.lua +++ b/data-otservbr-global/monster/dawnport/lesser_fire_devil.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 175 monster.maxHealth = 175 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 530 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -65,13 +64,13 @@ monster.loot = { { id = 3031, chance = 100000, maxCount = 10 }, -- gold coin { id = 11513, chance = 22810 }, -- small pitchfork { id = 2920, chance = 1750 }, -- torch - { id = 2920, chance = 1750 } -- torch + { id = 2920, chance = 1750 }, -- torch } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 25 }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_FIREDAMAGE, minDamage = -24, maxDamage = -36, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -4, maxDamage = -12, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -4, maxDamage = -12, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, } monster.defenses = { @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/meadow_strider.lua b/data-otservbr-global/monster/dawnport/meadow_strider.lua index d2df7aa1229..f7ede1f4203 100644 --- a/data-otservbr-global/monster/dawnport/meadow_strider.lua +++ b/data-otservbr-global/monster/dawnport/meadow_strider.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 100 monster.maxHealth = 100 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -71,19 +70,19 @@ monster.loot = { { id = 17462, chance = 8980 }, -- marsh stalker feather { id = 3285, chance = 7640 }, -- longsword { id = 3286, chance = 8310 }, -- mace - { id = 3276, chance = 6660 } -- hatchet + { id = 3276, chance = 6660 }, -- hatchet } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 13 }, - { name = "combat", interval = 2000, chance = 11, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -10, range = 7, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_EXPLOSIONAREA, target = false } + { name = "combat", interval = 2000, chance = 11, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -10, range = 7, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_EXPLOSIONAREA, target = false }, } monster.defenses = { defense = 2, armor = 1, -- mitigation = ???, - { name = "speed", interval = 2000, chance = 13, speedChange = 192, effect = CONST_ME_HITAREA, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 13, speedChange = 192, effect = CONST_ME_HITAREA, target = false, duration = 5000 }, } monster.elements = { @@ -103,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/mountain_troll.lua b/data-otservbr-global/monster/dawnport/mountain_troll.lua index 63bf54ab4e8..86e38adf4cd 100644 --- a/data-otservbr-global/monster/dawnport/mountain_troll.lua +++ b/data-otservbr-global/monster/dawnport/mountain_troll.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 30 monster.maxHealth = 30 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -69,11 +68,11 @@ monster.loot = { { id = 3272, chance = 3470 }, -- rapier { id = 3003, chance = 7870 }, -- rope { id = 3277, chance = 6800 }, -- spear - { id = 3336, chance = 3510 } -- studded club + { id = 3336, chance = 3510 }, -- studded club } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 9 } + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 9 }, } monster.defenses = { @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/muglex_clan_assassin.lua b/data-otservbr-global/monster/dawnport/muglex_clan_assassin.lua index e5abe800a16..1aada7ea8ef 100644 --- a/data-otservbr-global/monster/dawnport/muglex_clan_assassin.lua +++ b/data-otservbr-global/monster/dawnport/muglex_clan_assassin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 75 @@ -40,12 +40,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -65,20 +65,20 @@ monster.loot = { { id = 3294, chance = 9780 }, -- short sword { id = 3462, chance = 9540 }, -- small axe { id = 1781, chance = 11980, maxCount = 3 }, -- small stone - { id = 3378, chance = 1710 } -- studded armor + { id = 3378, chance = 1710 }, -- studded armor } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 15 }, { name = "drunk", interval = 2000, chance = 11, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false, duration = 3000 }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -30, range = 6, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -30, range = 6, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { defense = 5, armor = 3, { name = "invisible", interval = 2000, chance = 11, effect = CONST_ME_MAGIC_BLUE }, - { name = "speed", interval = 2000, chance = 10, speedChange = 145, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 145, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } monster.elements = { @@ -91,14 +91,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/muglex_clan_footman.lua b/data-otservbr-global/monster/dawnport/muglex_clan_footman.lua index f2ee17e8fc6..53bc52730f5 100644 --- a/data-otservbr-global/monster/dawnport/muglex_clan_footman.lua +++ b/data-otservbr-global/monster/dawnport/muglex_clan_footman.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 50 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -71,17 +71,17 @@ monster.loot = { { id = 3120, chance = 850 }, -- mouldy cheese { id = 3294, chance = 9720 }, -- short sword { id = 3462, chance = 7750 }, -- small axe - { id = 1781, chance = 15210 } -- small stone + { id = 1781, chance = 15210 }, -- small stone } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 10 }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -22, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false } + { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -22, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, } monster.defenses = { defense = 4, - armor = 2 + armor = 2, } monster.elements = { @@ -94,14 +94,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/muglex_clan_scavenger.lua b/data-otservbr-global/monster/dawnport/muglex_clan_scavenger.lua index d3acb093d7e..d2d45d94bff 100644 --- a/data-otservbr-global/monster/dawnport/muglex_clan_scavenger.lua +++ b/data-otservbr-global/monster/dawnport/muglex_clan_scavenger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 60 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -70,20 +70,20 @@ monster.loot = { { id = 3120, chance = 9020 }, -- mouldy cheese { id = 3294, chance = 11860 }, -- short sword { id = 3462, chance = 15210 }, -- small axe - { id = 1781, chance = 22420, maxCount = 2 } -- small stone + { id = 1781, chance = 22420, maxCount = 2 }, -- small stone } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 10 }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -22, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, - { name = "combat", interval = 2000, chance = 3, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -30, range = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 3, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -30, range = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 4, armor = 2, { name = "combat", interval = 2000, chance = 1, type = COMBAT_HEALING, minDamage = 10, maxDamage = 20, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 5, speedChange = 140, effect = CONST_ME_ENERGYHIT, target = false, duration = 4000 } + { name = "speed", interval = 2000, chance = 5, speedChange = 140, effect = CONST_ME_ENERGYHIT, target = false, duration = 4000 }, } monster.elements = { @@ -96,14 +96,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/sacred_snake.lua b/data-otservbr-global/monster/dawnport/sacred_snake.lua index e7f3a91483a..176ea7e79d2 100644 --- a/data-otservbr-global/monster/dawnport/sacred_snake.lua +++ b/data-otservbr-global/monster/dawnport/sacred_snake.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 10 monster.maxHealth = 10 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -64,11 +63,11 @@ monster.voices = { } monster.loot = { - { name = "eggs of a sacred snake", chance = 100000, maxCount = 20 } + { name = "eggs of a sacred snake", chance = 100000, maxCount = 20 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8, condition = { type = CONDITION_POISON, totalDamage = 1, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8, condition = { type = CONDITION_POISON, totalDamage = 1, interval = 4000 } }, } monster.defenses = { @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/salamander_trainer.lua b/data-otservbr-global/monster/dawnport/salamander_trainer.lua index d0afdead4d4..2dd136d4191 100644 --- a/data-otservbr-global/monster/dawnport/salamander_trainer.lua +++ b/data-otservbr-global/monster/dawnport/salamander_trainer.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 220 monster.maxHealth = 220 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -65,11 +64,11 @@ monster.loot = { { id = 3031, chance = 65300, maxCount = 12 }, -- gold coin { id = 3577, chance = 15200 }, -- meat { id = 3003, chance = 7960 }, -- rope - { id = 3277, chance = 12970, maxCount = 3 } -- spear + { id = 3277, chance = 12970, maxCount = 3 }, -- spear } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 25 } + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 25 }, } monster.defenses = { @@ -77,7 +76,7 @@ monster.defenses = { armor = 7, mitigation = 0.38, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 10, maxDamage = 25, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "salamander trainer summon", interval = 2000, chance = 30, target = false } + { name = "salamander trainer summon", interval = 2000, chance = 30, target = false }, } monster.elements = { @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/scar_tribe_shaman.lua b/data-otservbr-global/monster/dawnport/scar_tribe_shaman.lua index a77caa8910c..d30ab062b42 100644 --- a/data-otservbr-global/monster/dawnport/scar_tribe_shaman.lua +++ b/data-otservbr-global/monster/dawnport/scar_tribe_shaman.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 115 monster.maxHealth = 115 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -58,8 +57,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "Snake", chance = 25, interval = 2000, count = 3 } - } + { name = "Snake", chance = 25, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -75,20 +74,20 @@ monster.loot = { { id = 11478, chance = 3700 }, -- shamanic hood { id = 3277, chance = 55560 }, -- spear { id = 3378, chance = 3700 }, -- studded armor - { id = 3362, chance = 11110 } -- studded legs + { id = 3362, chance = 11110 }, -- studded legs } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 10 }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -10, maxDamage = -25, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_FIREDAMAGE, minDamage = -5, maxDamage = -30, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true } + { name = "combat", interval = 2000, chance = 8, type = COMBAT_FIREDAMAGE, minDamage = -5, maxDamage = -30, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { defense = 11, armor = 6, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 25, maxDamage = 35, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 25, maxDamage = 35, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -108,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/scar_tribe_warrior.lua b/data-otservbr-global/monster/dawnport/scar_tribe_warrior.lua index 3f96d67bc6e..f58ef72c95d 100644 --- a/data-otservbr-global/monster/dawnport/scar_tribe_warrior.lua +++ b/data-otservbr-global/monster/dawnport/scar_tribe_warrior.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 125 monster.maxHealth = 125 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -66,11 +65,11 @@ monster.loot = { { id = 3031, chance = 100000, maxCount = 8 }, -- gold coin { id = 3577, chance = 13480 }, -- meat { id = 11479, chance = 5620 }, -- orc leather - { id = 11480, chance = 1120 } -- skull belt + { id = 11480, chance = 1120 }, -- skull belt } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 25 } + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 25 }, } monster.defenses = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/spidris_elitesumom.lua b/data-otservbr-global/monster/dawnport/spidris_elitesumom.lua index 28ef60d5136..ba8ba050a0d 100644 --- a/data-otservbr-global/monster/dawnport/spidris_elitesumom.lua +++ b/data-otservbr-global/monster/dawnport/spidris_elitesumom.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -60,16 +60,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 75, attack = 82 } + { name = "melee", interval = 2000, chance = 100, skill = 75, attack = 82 }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, } monster.elements = { @@ -82,14 +81,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/troll-trained_salamander.lua b/data-otservbr-global/monster/dawnport/troll-trained_salamander.lua index 79fce242930..1a53a153c6b 100644 --- a/data-otservbr-global/monster/dawnport/troll-trained_salamander.lua +++ b/data-otservbr-global/monster/dawnport/troll-trained_salamander.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 70 monster.maxHealth = 70 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -72,12 +71,12 @@ monster.loot = { { id = 3448, chance = 2970, maxCount = 2 }, -- poison arrow { id = 3294, chance = 4470 }, -- short sword { id = 3457, chance = 5080 }, -- shovel - { id = 3376, chance = 4070 } -- studded helmet + { id = 3376, chance = 4070 }, -- studded helmet } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 11, condition = { type = CONDITION_POISON, totalDamage = 5, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 11, type = COMBAT_EARTHDAMAGE, minDamage = -4, maxDamage = -6, range = 5, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = true } + { name = "combat", interval = 2000, chance = 11, type = COMBAT_EARTHDAMAGE, minDamage = -4, maxDamage = -6, range = 5, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = true }, } monster.defenses = { @@ -103,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/troll_marauder.lua b/data-otservbr-global/monster/dawnport/troll_marauder.lua index ce1d0fc21bb..8d83f045db9 100644 --- a/data-otservbr-global/monster/dawnport/troll_marauder.lua +++ b/data-otservbr-global/monster/dawnport/troll_marauder.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 70 monster.maxHealth = 70 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 350 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -71,11 +70,11 @@ monster.loot = { { id = 3336, chance = 10390 }, -- studded club { id = 3378, chance = 9090 }, -- studded armor { id = 11515, chance = 5190 }, -- trollroot - { id = 3412, chance = 11690 } -- wooden shield + { id = 3412, chance = 11690 }, -- wooden shield } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 25 } + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 25 }, } monster.defenses = { @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dawnport/woodling.lua b/data-otservbr-global/monster/dawnport/woodling.lua index 357a3b59363..77143bbab0e 100644 --- a/data-otservbr-global/monster/dawnport/woodling.lua +++ b/data-otservbr-global/monster/dawnport/woodling.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 80 monster.maxHealth = 80 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -68,13 +67,13 @@ monster.loot = { { id = 3378, chance = 4950 }, -- studded armor { id = 3426, chance = 2670 }, -- studded shield { id = 17822, chance = 20250 }, -- swampling moss - { id = 3723, chance = 18200, maxCount = 4 } -- white mushroom + { id = 3723, chance = 18200, maxCount = 4 }, -- white mushroom } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 14 }, { name = "woodling paralyze", interval = 2000, chance = 10, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -4, maxDamage = -9, range = 3, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_INSECTS, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -4, maxDamage = -9, range = 3, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_INSECTS, target = false }, } monster.defenses = { @@ -100,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/askarak_demon.lua b/data-otservbr-global/monster/demons/askarak_demon.lua index 0cd873e42ac..4802c5306ad 100644 --- a/data-otservbr-global/monster/demons/askarak_demon.lua +++ b/data-otservbr-global/monster/demons/askarak_demon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 727 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Demonwar Crypt teleporter before vampire shield quest." + Locations = "Demonwar Crypt teleporter before vampire shield quest.", } monster.health = 1500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,7 +94,7 @@ monster.loot = { { name = "strong health potion", chance = 5263 }, { name = "strong mana potion", chance = 5263 }, { name = "terra legs", chance = 123 }, - { name = "springsprout rod", chance = 512 } + { name = "springsprout rod", chance = 512 }, } monster.attacks = { @@ -102,7 +102,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -20, maxDamage = -60, range = 7, radius = 6, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, { name = "askarak wave", interval = 2000, chance = 15, minDamage = -75, maxDamage = -140, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -130, maxDamage = -170, length = 4, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = -600, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -600, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 }, } monster.defenses = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/askarak_lord.lua b/data-otservbr-global/monster/demons/askarak_lord.lua index 4b6c0a324f1..c16d893f0f9 100644 --- a/data-otservbr-global/monster/demons/askarak_lord.lua +++ b/data-otservbr-global/monster/demons/askarak_lord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 728 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Demonwar Crypt." + Locations = "Demonwar Crypt.", } monster.health = 2100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,7 +94,7 @@ monster.loot = { { name = "strong health potion", chance = 6250 }, { name = "strong mana potion", chance = 7692 }, { name = "terra mantle", chance = 70 }, - { name = "springsprout rod", chance = 1010 } + { name = "springsprout rod", chance = 1010 }, } monster.attacks = { @@ -102,14 +102,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -80, range = 7, radius = 6, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, { name = "askarak wave", interval = 2000, chance = 15, minDamage = -95, maxDamage = -180, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -130, maxDamage = -180, length = 4, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -650, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -650, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 }, } monster.defenses = { defense = 20, armor = 40, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 120, maxDamage = 160, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 120, maxDamage = 160, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/askarak_prince.lua b/data-otservbr-global/monster/demons/askarak_prince.lua index 51a2d6f7f08..227ac9542ee 100644 --- a/data-otservbr-global/monster/demons/askarak_prince.lua +++ b/data-otservbr-global/monster/demons/askarak_prince.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 729 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Demonwar Crypt." + Locations = "Demonwar Crypt.", } monster.health = 2600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,7 +94,7 @@ monster.loot = { { name = "strong mana potion", chance = 14285 }, { name = "terra mantle", chance = 840 }, { name = "springsprout rod", chance = 950 }, - { name = "demonic finger", chance = 420 } + { name = "demonic finger", chance = 420 }, } monster.attacks = { @@ -102,7 +102,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -70, maxDamage = -250, range = 7, radius = 6, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, { name = "askarak wave", interval = 2000, chance = 15, minDamage = -100, maxDamage = -200, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -200, length = 4, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 }, } monster.defenses = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/brachiodemon.lua b/data-otservbr-global/monster/demons/brachiodemon.lua index a76cba527eb..88c09c550a6 100644 --- a/data-otservbr-global/monster/demons/brachiodemon.lua +++ b/data-otservbr-global/monster/demons/brachiodemon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1930 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Claustrophobic Inferno." + Locations = "Claustrophobic Inferno.", } monster.health = 25000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -99,7 +99,7 @@ monster.loot = { { name = "mastermind shield", chance = 420 }, { name = "assassin dagger", chance = 340 }, { name = "alloy legs", chance = 170 }, - { id = 34109, chance = 20 } -- bag you desire + { id = 34109, chance = 20 }, -- bag you desire } monster.attacks = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/dark_torturer.lua b/data-otservbr-global/monster/demons/dark_torturer.lua index 8d75087cfe5..00d0b5f3201 100644 --- a/data-otservbr-global/monster/demons/dark_torturer.lua +++ b/data-otservbr-global/monster/demons/dark_torturer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 285 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 4, Occurrence = 0, Locations = "Pits of Inferno, Vengoth, The Inquisition Quest's Blood Halls, Oramond Dungeon, \z - Oramond Fury Dungeon, Roshamuul Prison, Grounds of Damnation and Halls of Ascension." + Oramond Fury Dungeon, Roshamuul Prison, Grounds of Damnation and Halls of Ascension.", } monster.health = 7350 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -101,20 +101,20 @@ monster.loot = { { name = "butcher's axe", chance = 850 }, { name = "great mana potion", chance = 14830, maxCount = 2 }, { name = "great health potion", chance = 10000, maxCount = 2 }, - { name = "gold ingot", chance = 3140 } + { name = "gold ingot", chance = 3140 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -781, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, - { name = "dark torturer skill reducer", interval = 2000, chance = 5, target = false } + { name = "dark torturer skill reducer", interval = 2000, chance = 5, target = false }, } monster.defenses = { defense = 40, armor = 45, mitigation = 1.74, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -134,7 +134,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/dawnfire_asura.lua b/data-otservbr-global/monster/demons/dawnfire_asura.lua index 47e03829145..30fa645b924 100644 --- a/data-otservbr-global/monster/demons/dawnfire_asura.lua +++ b/data-otservbr-global/monster/demons/dawnfire_asura.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 78, lookFeet = 79, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1134 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Asura Palace." + Locations = "Asura Palace.", } monster.health = 2900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -102,7 +102,7 @@ monster.loot = { { id = 3016, chance = 800 }, -- ruby necklace { id = 5944, chance = 14560 }, -- soul orb { id = 8074, chance = 80 }, -- spellbook of mind control - { id = 3071, chance = 910 } -- wand of inferno + { id = 3071, chance = 910 }, -- wand of inferno } monster.attacks = { @@ -111,7 +111,7 @@ monster.attacks = { { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "energy strike", interval = 2000, chance = 10, minDamage = -10, maxDamage = -100, range = 1, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -100, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -100, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.defenses = { armor = 48, mitigation = 1.46, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -139,7 +139,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/demon.lua b/data-otservbr-global/monster/demons/demon.lua index 9ed949c27df..3a1208c210b 100644 --- a/data-otservbr-global/monster/demons/demon.lua +++ b/data-otservbr-global/monster/demons/demon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 35 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Hero Cave, Ferumbras' Citadel, Goroma, Ghostlands Warlock area unreachable, \z Liberty Bay hidden underground passage unreachable, Razachai, deep in Pits of Inferno (found in every throneroom except Verminor's), \z deep Formorgar Mines, Demon Forge, Alchemist Quarter, Magician Quarter, Chyllfroest, Oramond Dungeon, \z - Abandoned Sewers, Hell Hub and Halls of Ascension." + Abandoned Sewers, Hell Hub and Halls of Ascension.", } monster.health = 8200 @@ -38,7 +38,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -76,8 +76,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "fire elemental", chance = 10, interval = 2000, count = 1 } - } + { name = "fire elemental", chance = 10, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -124,7 +124,7 @@ monster.loot = { { id = 7393, chance = 90 }, -- demon trophy { name = "great mana potion", chance = 22220, maxCount = 3 }, { name = "ultimate health potion", chance = 19540, maxCount = 3 }, - { name = "great spirit potion", chance = 18510, maxCount = 3 } + { name = "great spirit potion", chance = 18510, maxCount = 3 }, } monster.attacks = { @@ -134,7 +134,7 @@ monster.attacks = { { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -490, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -300, range = 1, shootEffect = CONST_ANI_ENERGY, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } monster.defenses = { @@ -142,7 +142,7 @@ monster.defenses = { armor = 44, mitigation = 1.74, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 180, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -162,7 +162,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/demon_outcast.lua b/data-otservbr-global/monster/demons/demon_outcast.lua index 92a836b2818..10827c7d5a4 100644 --- a/data-otservbr-global/monster/demons/demon_outcast.lua +++ b/data-otservbr-global/monster/demons/demon_outcast.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1019 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Roshamuul Prison." + Locations = "Roshamuul Prison.", } monster.health = 6900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "energy elemental", chance = 10, interval = 2000, count = 2 } - } + { name = "energy elemental", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -110,7 +110,7 @@ monster.loot = { { name = "great mana potion", chance = 18000, maxCount = 2 }, { name = "ultimate health potion", chance = 20500, maxCount = 3 }, { name = "small topaz", chance = 9300, maxCount = 5 }, - { name = "cluster of solace", chance = 4550 } + { name = "cluster of solace", chance = 4550 }, } monster.attacks = { @@ -119,14 +119,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_YELLOWENERGY, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, effect = CONST_ME_ENERGYHIT, target = true }, { name = "demon outcast skill reducer", interval = 2000, chance = 10, range = 5, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.defenses = { defense = 40, armor = 49, mitigation = 1.60, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -146,7 +146,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/destroyer.lua b/data-otservbr-global/monster/demons/destroyer.lua index 0cf0ba06378..3e88a03c330 100644 --- a/data-otservbr-global/monster/demons/destroyer.lua +++ b/data-otservbr-global/monster/demons/destroyer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 287 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Pits of Inferno, Formorgar Mines, Alchemist Quarter, Oramond Dungeon and Grounds of Destruction." + Locations = "Pits of Inferno, Formorgar Mines, Alchemist Quarter, Oramond Dungeon and Grounds of Destruction.", } monster.health = 3700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -99,19 +99,19 @@ monster.loot = { { name = "dreaded cleaver", chance = 400 }, { name = "chaos mace", chance = 800 }, { name = "great health potion", chance = 1000 }, - { name = "metal spike", chance = 4850 } + { name = "metal spike", chance = 4850 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { defense = 30, armor = 35, mitigation = 1.74, - { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/diabolic_imp.lua b/data-otservbr-global/monster/demons/diabolic_imp.lua index 4b7c4f642c3..b1eb23fd0e2 100644 --- a/data-otservbr-global/monster/demons/diabolic_imp.lua +++ b/data-otservbr-global/monster/demons/diabolic_imp.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 288 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Inquisition, Pits of Inferno, Fenrock, Fury Dungeon and inside the Hellgore volcano \z - on Goroma during the Fire from the Earth Mini World Change." + on Goroma during the Fire from the Earth Mini World Change.", } monster.health = 1950 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -96,14 +96,14 @@ monster.loot = { { name = "demonic essence", chance = 8000 }, { name = "flask of demonic blood", chance = 25000, maxCount = 2 }, { name = "magma coat", chance = 250 }, - { name = "magma monocle", chance = 430 } + { name = "magma monocle", chance = 430 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -240, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -430, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, - { name = "diabolic imp skill reducer", interval = 2000, chance = 5, range = 5, target = false } + { name = "diabolic imp skill reducer", interval = 2000, chance = 5, range = 5, target = false }, } monster.defenses = { @@ -112,7 +112,7 @@ monster.defenses = { mitigation = 1.46, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 650, maxDamage = 800, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = 800, effect = CONST_ME_MAGIC_RED, target = false, duration = 2000 }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_TELEPORT } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_TELEPORT }, } monster.elements = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/duskbringer.lua b/data-otservbr-global/monster/demons/duskbringer.lua index ef4686297e1..91a8230c84c 100644 --- a/data-otservbr-global/monster/demons/duskbringer.lua +++ b/data-otservbr-global/monster/demons/duskbringer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 581 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Magician Quarter (Yalahar) one floor down around the the lightbringer's basin" + Locations = "Magician Quarter (Yalahar) one floor down around the the lightbringer's basin", } monster.health = 3550 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -76,7 +76,7 @@ monster.voices = { } monster.loot = { - { name = "midnight shard", chance = 10000 } + { name = "midnight shard", chance = 10000 }, } monster.attacks = { @@ -84,7 +84,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -165, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 3, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, target = false }, } monster.defenses = { @@ -92,7 +92,7 @@ monster.defenses = { armor = 42, mitigation = 1.04, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 130, maxDamage = 205, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -112,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/fire_devil.lua b/data-otservbr-global/monster/demons/fire_devil.lua index 9310be8f56e..da243c28180 100644 --- a/data-otservbr-global/monster/demons/fire_devil.lua +++ b/data-otservbr-global/monster/demons/fire_devil.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 40 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Desert Dungeon, Ancient Temple, Magician Tower, Shadow Tomb, Ghostlands, Goroma, \z - Plains of Havoc at Ornamented Shield Quest, Spike Sword Quest." + Plains of Havoc at Ornamented Shield Quest, Spike Sword Quest.", } monster.health = 200 @@ -36,7 +36,7 @@ monster.manaCost = 530 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -85,13 +85,13 @@ monster.loot = { { id = 3307, chance = 3000 }, -- scimitar { name = "guardian shield", chance = 210 }, { name = "cleaver", chance = 1100 }, - { name = "small pitchfork", chance = 19770 } + { name = "small pitchfork", chance = 19770 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -90, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -20, maxDamage = -50, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -20, maxDamage = -50, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/floating_savant.lua b/data-otservbr-global/monster/demons/floating_savant.lua index 504b64ba692..0e63eb84602 100644 --- a/data-otservbr-global/monster/demons/floating_savant.lua +++ b/data-otservbr-global/monster/demons/floating_savant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 78, lookFeet = 78, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1637 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "The Extension Site" + Locations = "The Extension Site", } monster.health = 8000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -70,8 +70,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "Lava Lurker Attendant", chance = 70, interval = 2000, count = 1 } - } + { name = "Lava Lurker Attendant", chance = 70, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -89,7 +89,7 @@ monster.loot = { { name = "flask of demonic blood", chance = 12000, maxCount = 5 }, { name = "demonic essence", chance = 10000, maxCount = 5 }, { id = 3456, chance = 10000 }, -- pick - { name = "sample of monster blood", chance = 10000, maxCount = 5 } + { name = "sample of monster blood", chance = 10000, maxCount = 5 }, } monster.attacks = { @@ -97,7 +97,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -390, maxDamage = -480, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -390, maxDamage = -480, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -400, radius = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -490, maxDamage = -630, length = 4, spread = 3, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -490, maxDamage = -630, length = 4, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/frost_flower_asura.lua b/data-otservbr-global/monster/demons/frost_flower_asura.lua index dbdf5b977e7..6013179e970 100644 --- a/data-otservbr-global/monster/demons/frost_flower_asura.lua +++ b/data-otservbr-global/monster/demons/frost_flower_asura.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 86, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 1619 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Asura Palace." + Locations = "Asura Palace.", } monster.health = 3500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -108,14 +108,14 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -110, maxDamage = -400 }, { name = "combat", interval = 1300, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -185, maxDamage = -210, length = 8, spread = 3, effect = CONST_ME_ICETORNADO, target = false }, - { name = "combat", interval = 1000, chance = 9, type = COMBAT_ICEDAMAGE, minDamage = -120, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = true } + { name = "combat", interval = 1000, chance = 9, type = COMBAT_ICEDAMAGE, minDamage = -120, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = true }, } monster.defenses = { defense = 30, armor = 56, mitigation = 1.62, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -135,7 +135,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/fury.lua b/data-otservbr-global/monster/demons/fury.lua index e2e6de5a454..7c990c16b5e 100644 --- a/data-otservbr-global/monster/demons/fury.lua +++ b/data-otservbr-global/monster/demons/fury.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 78, lookFeet = 79, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 291 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 4, Occurrence = 0, Locations = "Pits of Inferno (Apocalypse's Throne Room), The Inquisition Quest (The Shadow Nexus, Battlefield), \z - Vengoth, Fury Dungeon, Oramond Fury Dungeon, The Extension Site, Grounds of Destruction and Halls of Ascension." + Vengoth, Fury Dungeon, Oramond Fury Dungeon, The Extension Site, Grounds of Destruction and Halls of Ascension.", } monster.health = 4100 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -96,7 +96,7 @@ monster.loot = { { name = "assassin dagger", chance = 660 }, { name = "noble axe", chance = 2000 }, { name = "great health potion", chance = 10500 }, - { name = "jalapeno pepper", chance = 29280, maxCount = 4 } + { name = "jalapeno pepper", chance = 29280, maxCount = 4 }, } monster.attacks = { @@ -107,14 +107,14 @@ monster.attacks = { { name = "fury skill reducer", interval = 2000, chance = 5, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -120, maxDamage = -300, radius = 3, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -125, maxDamage = -250, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -800, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -800, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 30000 }, } monster.defenses = { defense = 20, armor = 35, mitigation = 1.32, - { name = "speed", interval = 2000, chance = 15, speedChange = 800, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 800, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -134,7 +134,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/gozzler.lua b/data-otservbr-global/monster/demons/gozzler.lua index e7767babcff..292ad812e6f 100644 --- a/data-otservbr-global/monster/demons/gozzler.lua +++ b/data-otservbr-global/monster/demons/gozzler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 523 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Magician Quarter, cave in Beregar, Farmine Mines." + Locations = "Magician Quarter, cave in Beregar, Farmine Mines.", } monster.health = 240 @@ -35,7 +35,7 @@ monster.manaCost = 800 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,12 +90,12 @@ monster.loot = { { name = "morning star", chance = 5000 }, { name = "serpent sword", chance = 250 }, { name = "clerical mace", chance = 900 }, - { name = "plate shield", chance = 10000 } + { name = "plate shield", chance = 10000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -32, maxDamage = -135, range = 1, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -32, maxDamage = -135, range = 1, target = false }, } monster.defenses = { @@ -103,7 +103,7 @@ monster.defenses = { armor = 25, mitigation = 1.37, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 210, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 210, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/grimeleech.lua b/data-otservbr-global/monster/demons/grimeleech.lua index cb514188c5e..8ef43ffadcc 100644 --- a/data-otservbr-global/monster/demons/grimeleech.lua +++ b/data-otservbr-global/monster/demons/grimeleech.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1196 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Grounds of Damnation, Grounds of Deceit, Grounds of Despair, Grounds of Fire, Grounds of Plague, Halls of Ascension and Hell Hub." + Locations = "Grounds of Damnation, Grounds of Deceit, Grounds of Despair, Grounds of Fire, Grounds of Plague, Halls of Ascension and Hell Hub.", } monster.health = 9500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 3000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -107,7 +107,7 @@ monster.loot = { { name = "rift bow", chance = 370 }, { name = "abyss hammer", chance = 210 }, { name = "vile axe", chance = 180 }, - { name = "magic plate armor", chance = 60 } + { name = "magic plate armor", chance = 60 }, } monster.attacks = { @@ -116,7 +116,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 14, type = COMBAT_PHYSICALDAMAGE, minDamage = 100, maxDamage = -565, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -220, length = 8, spread = 3, target = false }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -375, radius = 4, target = false }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, } monster.defenses = { @@ -126,7 +126,7 @@ monster.defenses = { { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 130, maxDamage = 205, effect = CONST_ME_MAGIC_RED, target = false }, { name = "effect", interval = 2000, chance = 9, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "effect", interval = 2000, chance = 10, target = false }, - { name = "speed", interval = 2000, chance = 12, speedChange = 532, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 } + { name = "speed", interval = 2000, chance = 12, speedChange = 532, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } monster.elements = { @@ -146,7 +146,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/hellfire_fighter.lua b/data-otservbr-global/monster/demons/hellfire_fighter.lua index 3b57c68fd39..1d6610844b5 100644 --- a/data-otservbr-global/monster/demons/hellfire_fighter.lua +++ b/data-otservbr-global/monster/demons/hellfire_fighter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 295 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Pits of Inferno, Demon Forge, Fury Dungeon." + Locations = "Pits of Inferno, Demon Forge, Fury Dungeon.", } monster.health = 3800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -100,7 +100,7 @@ monster.attacks = { { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -392, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -330, range = 7, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "hellfire fighter soulfire", interval = 2000, chance = 15, target = false } + { name = "hellfire fighter soulfire", interval = 2000, chance = 15, target = false }, } monster.defenses = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/hellflayer.lua b/data-otservbr-global/monster/demons/hellflayer.lua index b18e31f3728..f0b8b29df5c 100644 --- a/data-otservbr-global/monster/demons/hellflayer.lua +++ b/data-otservbr-global/monster/demons/hellflayer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1198 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Grounds of Damnation, Grounds of Despair, Grounds of Destruction, Grounds of Fire, Grounds of Plague, Grounds of Undeath, Halls of Ascension and Hell Hub" + Locations = "Grounds of Damnation, Grounds of Despair, Grounds of Destruction, Grounds of Fire, Grounds of Plague, Grounds of Undeath, Halls of Ascension and Hell Hub", } monster.health = 14000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -106,7 +106,7 @@ monster.loot = { { id = 7413, chance = 900 }, -- titan axe { id = 3360, chance = 750 }, -- golden armor { id = 8074, chance = 900 }, -- spellbook of mind control - { id = 3340, chance = 400 } -- heavy mace + { id = 3340, chance = 400 }, -- heavy mace } monster.attacks = { @@ -117,14 +117,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -550, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, { name = "warlock skill reducer", interval = 2000, chance = 5, range = 5, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 300, maxDamage = -500, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 300, maxDamage = -500, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true }, } monster.defenses = { defense = 20, armor = 55, mitigation = 1.60, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -144,7 +144,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/hellhound.lua b/data-otservbr-global/monster/demons/hellhound.lua index 4b25cf265ec..81fc0739e6a 100644 --- a/data-otservbr-global/monster/demons/hellhound.lua +++ b/data-otservbr-global/monster/demons/hellhound.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 294 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 4, Occurrence = 0, Locations = "Pits of Inferno (Infernatil's Throneroom), The Inquisition Quest Area, Hellgorge, \z - Roshamuul Prison, Chyllfroest, Oramond Dungeon, The Extension Site and Asura Vaults." + Roshamuul Prison, Chyllfroest, Oramond Dungeon, The Extension Site and Asura Vaults.", } monster.health = 7500 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -115,7 +115,7 @@ monster.loot = { { id = 3037, chance = 4500 }, -- yellow gem { id = 5911, chance = 3000 }, -- red piece of cloth { id = 5910, chance = 5000 }, -- green piece of cloth - { id = 5914, chance = 6000 } -- yellow piece of cloth + { id = 5914, chance = 6000 }, -- yellow piece of cloth } monster.attacks = { @@ -125,7 +125,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -660, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -350, maxDamage = -976, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -403, radius = 1, effect = CONST_ME_HITBYFIRE, target = true }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -549, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -549, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { @@ -133,7 +133,7 @@ monster.defenses = { armor = 60, mitigation = 2.75, { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 220, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 220, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -153,7 +153,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/hellspawn.lua b/data-otservbr-global/monster/demons/hellspawn.lua index 57496993645..95c8efb25a4 100644 --- a/data-otservbr-global/monster/demons/hellspawn.lua +++ b/data-otservbr-global/monster/demons/hellspawn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 519 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Magician Quarter, Vengoth, Deeper Banuta, Formorgar Minese, Chyllfroest, Oramond Dungeon, Asura Palace, Asura Vaults." + Locations = "Magician Quarter, Vengoth, Deeper Banuta, Formorgar Minese, Chyllfroest, Oramond Dungeon, Asura Palace, Asura Vaults.", } monster.health = 3500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -99,13 +99,13 @@ monster.loot = { { id = 9034, chance = 140 }, -- dracoyle statue { id = 9056, chance = 151 }, -- black skull { name = "small topaz", chance = 5882, maxCount = 3 }, - { name = "hellspawn tail", chance = 20000 } + { name = "hellspawn tail", chance = 20000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -352 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -175, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = false }, - { name = "hellspawn soulfire", interval = 2000, chance = 10, range = 5, target = false } + { name = "hellspawn soulfire", interval = 2000, chance = 10, range = 5, target = false }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.defenses = { armor = 44, mitigation = 1.32, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 120, maxDamage = 230, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 270, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 270, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/herald_of_gloom.lua b/data-otservbr-global/monster/demons/herald_of_gloom.lua index 1a87aa4d91e..f237ed4efa9 100644 --- a/data-otservbr-global/monster/demons/herald_of_gloom.lua +++ b/data-otservbr-global/monster/demons/herald_of_gloom.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 586 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Edron Hero Cave around the Lightbringers basin." + Locations = "Edron Hero Cave around the Lightbringers basin.", } monster.health = 340 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -79,13 +79,13 @@ monster.voices = { } monster.loot = { - { name = "midnight shard", chance = 1886 } + { name = "midnight shard", chance = 1886 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, { name = "speed", interval = 3000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, - { name = "combat", interval = 2000, chance = 24, type = COMBAT_HOLYDAMAGE, minDamage = -90, maxDamage = -170, range = 4, shootEffect = CONST_ANI_SMALLHOLY, target = false } + { name = "combat", interval = 2000, chance = 24, type = COMBAT_HOLYDAMAGE, minDamage = -90, maxDamage = -170, range = 4, shootEffect = CONST_ANI_SMALLHOLY, target = false }, } monster.defenses = { @@ -99,7 +99,7 @@ monster.defenses = { { name = "outfit", interval = 1500, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "the count =" }, { name = "outfit", interval = 1500, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "grim reaper" }, { name = "outfit", interval = 1500, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "tarantula" }, - { name = "outfit", interval = 1500, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "ferumbras" } + { name = "outfit", interval = 1500, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "ferumbras" }, } monster.elements = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/infernal_demon.lua b/data-otservbr-global/monster/demons/infernal_demon.lua index a41a0f74dac..7c4a1d80302 100644 --- a/data-otservbr-global/monster/demons/infernal_demon.lua +++ b/data-otservbr-global/monster/demons/infernal_demon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1938 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Claustrophobic Inferno." + Locations = "Claustrophobic Inferno.", } monster.health = 32000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/juggernaut.lua b/data-otservbr-global/monster/demons/juggernaut.lua index d7938bfc03e..bab7fcf5dad 100644 --- a/data-otservbr-global/monster/demons/juggernaut.lua +++ b/data-otservbr-global/monster/demons/juggernaut.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 296 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Deep in Pits of Inferno (Apocalypse's throne room), The Dark Path, The Blood Halls, \z The Vats, The Hive, The Shadow Nexus, a room deep in Formorgar Mines, Roshamuul Prison, \z - Oramond Dungeon, Grounds of Destruction and Halls of Ascension." + Oramond Dungeon, Grounds of Destruction and Halls of Ascension.", } monster.health = 20000 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -111,12 +111,12 @@ monster.loot = { { name = "great mana potion", chance = 35000 }, { name = "great health potion", chance = 32000 }, { name = "skullcracker armor", chance = 400 }, - { name = "gold ingot", chance = 7692, maxCount = 2 } + { name = "gold ingot", chance = 7692, maxCount = 2 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1470 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -780, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -780, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { @@ -124,7 +124,7 @@ monster.defenses = { armor = 70, mitigation = 1.74, { name = "speed", interval = 2000, chance = 15, speedChange = 520, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -144,7 +144,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/many_faces.lua b/data-otservbr-global/monster/demons/many_faces.lua index 14792892ba2..e557770d9c8 100644 --- a/data-otservbr-global/monster/demons/many_faces.lua +++ b/data-otservbr-global/monster/demons/many_faces.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1927 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Mirrored Nightmare." + Locations = "Mirrored Nightmare.", } monster.health = 30000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/midnight_asura.lua b/data-otservbr-global/monster/demons/midnight_asura.lua index 266697cce8c..6eb53ae84a1 100644 --- a/data-otservbr-global/monster/demons/midnight_asura.lua +++ b/data-otservbr-global/monster/demons/midnight_asura.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 90, lookFeet = 90, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1135 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Asura Palace." + Locations = "Asura Palace.", } monster.health = 3100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -108,7 +108,7 @@ monster.loot = { { id = 8074, chance = 150 }, -- spellbook of mind control { id = 3403, chance = 2030 }, -- tribal mask { id = 8082, chance = 760 }, -- underworld rod - { id = 3037, chance = 870 } -- yellow gem + { id = 3037, chance = 870 }, -- yellow gem } monster.attacks = { @@ -117,7 +117,7 @@ monster.attacks = { { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "energy strike", interval = 2000, chance = 10, minDamage = -10, maxDamage = -100, range = 1, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -100, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -100, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } monster.defenses = { @@ -125,7 +125,7 @@ monster.defenses = { armor = 55, mitigation = 1.60, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -145,7 +145,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/nightfiend.lua b/data-otservbr-global/monster/demons/nightfiend.lua index eeec4e99276..2f1b22034ac 100644 --- a/data-otservbr-global/monster/demons/nightfiend.lua +++ b/data-otservbr-global/monster/demons/nightfiend.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 973 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Deep under Drefia." + Locations = "Deep under Drefia.", } monster.health = 2700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -86,12 +86,12 @@ monster.loot = { { name = "strong health potion", chance = 4761 }, { name = "strong mana potion", chance = 5000 }, { id = 3039, chance = 55 }, -- red gem - { id = 3098, chance = 1000 } -- ring of healing + { id = 3098, chance = 1000 }, -- ring of healing } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, - { name = "combat", interval = 1000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -5, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 1000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -5, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/plaguesmith.lua b/data-otservbr-global/monster/demons/plaguesmith.lua index 84d6341f7a3..6fbc96b533d 100644 --- a/data-otservbr-global/monster/demons/plaguesmith.lua +++ b/data-otservbr-global/monster/demons/plaguesmith.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 314 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Pits of Inferno, Formorgar Mines, Edron Demon Forge (The Vats, The Foundry), \z - Magician Quarter, Alchemist Quarter, Roshamuul Prison, Grounds of Plague and Halls of Ascension." + Magician Quarter, Alchemist Quarter, Roshamuul Prison, Grounds of Plague and Halls of Ascension.", } monster.health = 8250 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -108,14 +108,14 @@ monster.loot = { { name = "demonic essence", chance = 9033 }, { name = "onyx arrow", chance = 7692, maxCount = 4 }, { name = "great health potion", chance = 10000 }, - { id = 8896, chance = 540 } -- slightly rusted armor + { id = 8896, chance = 540 }, -- slightly rusted armor } monster.attacks = { { name = "melee", interval = 1500, chance = 100, minDamage = 0, maxDamage = -539, condition = { type = CONDITION_POISON, totalDamage = 200, interval = 4000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -114, radius = 4, effect = CONST_ME_POISONAREA, target = false }, { name = "plaguesmith wave", interval = 2000, chance = 10, minDamage = -100, maxDamage = -350, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -800, radius = 4, effect = CONST_ME_POISONAREA, target = false, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -800, radius = 4, effect = CONST_ME_POISONAREA, target = false, duration = 30000 }, } monster.defenses = { @@ -123,7 +123,7 @@ monster.defenses = { armor = 30, mitigation = 1.32, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 200, maxDamage = 280, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 440, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 440, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -143,7 +143,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/shaburak_demon.lua b/data-otservbr-global/monster/demons/shaburak_demon.lua index aedea627a3b..043fd39641b 100644 --- a/data-otservbr-global/monster/demons/shaburak_demon.lua +++ b/data-otservbr-global/monster/demons/shaburak_demon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 724 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Demonwar Crypt." + Locations = "Demonwar Crypt.", } monster.health = 1500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,7 +93,7 @@ monster.loot = { { name = "bullseye potion", chance = 628 }, { name = "strong health potion", chance = 4761 }, { name = "strong mana potion", chance = 5000 }, - { name = "magma legs", chance = 155 } + { name = "magma legs", chance = 155 }, } monster.attacks = { @@ -101,14 +101,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -20, maxDamage = -60, range = 7, radius = 6, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = false }, { name = "shaburak wave", interval = 2000, chance = 15, minDamage = -70, maxDamage = -140, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -130, maxDamage = -170, length = 4, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = -600, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -600, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 }, } monster.defenses = { defense = 15, armor = 35, mitigation = 1.04, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/shaburak_lord.lua b/data-otservbr-global/monster/demons/shaburak_lord.lua index 83cb1f40960..3da72894836 100644 --- a/data-otservbr-global/monster/demons/shaburak_lord.lua +++ b/data-otservbr-global/monster/demons/shaburak_lord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 725 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Demonwar Crypt" + Locations = "Demonwar Crypt", } monster.health = 2100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,7 +93,7 @@ monster.loot = { { name = "bullseye potion", chance = 400 }, { name = "strong health potion", chance = 7000 }, { name = "strong mana potion", chance = 7000 }, - { name = "magma coat", chance = 100 } + { name = "magma coat", chance = 100 }, } monster.attacks = { @@ -101,14 +101,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -30, maxDamage = -75, range = 7, radius = 6, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = false }, { name = "shaburak wave", interval = 2000, chance = 15, minDamage = -80, maxDamage = -170, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -140, maxDamage = -200, length = 4, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = -650, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -650, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 }, } monster.defenses = { defense = 20, armor = 40, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/shaburak_prince.lua b/data-otservbr-global/monster/demons/shaburak_prince.lua index d8faa4b2472..7885b5b086f 100644 --- a/data-otservbr-global/monster/demons/shaburak_prince.lua +++ b/data-otservbr-global/monster/demons/shaburak_prince.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 726 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Demonwar Crypt" + Locations = "Demonwar Crypt", } monster.health = 2600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,7 +95,7 @@ monster.loot = { { name = "strong health potion", chance = 14285 }, { name = "strong mana potion", chance = 14285 }, { name = "magma coat", chance = 714 }, - { name = "demonic finger", chance = 178 } + { name = "demonic finger", chance = 178 }, } monster.attacks = { @@ -103,14 +103,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -40, maxDamage = -90, range = 7, radius = 6, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = false }, { name = "shaburak wave", interval = 2000, chance = 15, minDamage = -100, maxDamage = -200, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, length = 4, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 }, } monster.defenses = { defense = 30, armor = 45, mitigation = 1.32, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/shadow_hound.lua b/data-otservbr-global/monster/demons/shadow_hound.lua index b846f1c41d2..175a4d7fdac 100644 --- a/data-otservbr-global/monster/demons/shadow_hound.lua +++ b/data-otservbr-global/monster/demons/shadow_hound.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 582 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Ramoa around the Lightbringers basin." + Locations = "Ramoa around the Lightbringers basin.", } monster.health = 555 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -77,19 +77,19 @@ monster.voices = { } monster.loot = { - { name = "midnight shard", chance = 8333 } + { name = "midnight shard", chance = 8333 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, - { name = "combat", interval = 2000, chance = 24, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -160, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = false } + { name = "combat", interval = 2000, chance = 24, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -160, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = false }, } monster.defenses = { defense = 55, armor = 38, mitigation = 1.04, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 60, maxDamage = 230, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 60, maxDamage = 230, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/true_dawnfire_asura.lua b/data-otservbr-global/monster/demons/true_dawnfire_asura.lua index 77a121655e4..b434eb8be72 100644 --- a/data-otservbr-global/monster/demons/true_dawnfire_asura.lua +++ b/data-otservbr-global/monster/demons/true_dawnfire_asura.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 79, lookFeet = 121, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1620 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Asura Palace, Asura Vaults." + Locations = "Asura Palace, Asura Vaults.", } monster.health = 8500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -99,7 +99,7 @@ monster.loot = { { id = 3016, chance = 2330 }, -- ruby necklace { id = 5944, chance = 20140 }, -- soul orb { id = 8074, chance = 620 }, -- spellbook of mind control - { id = 3071, chance = 1440 } -- wand of inferno + { id = 3071, chance = 1440 }, -- wand of inferno } monster.attacks = { @@ -107,7 +107,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -300, range = 7, target = false }, -- mana drain beam { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -450, maxDamage = -830, length = 1, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, -- fire missile { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -550, maxDamage = -750, radius = 4, effect = CONST_ME_BLACKSMOKE, target = false }, -- death ball - { name = "speed", interval = 2000, chance = 15, speedChange = -200, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 } -- smoke berserk + { name = "speed", interval = 2000, chance = 15, speedChange = -200, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, -- smoke berserk } monster.defenses = { @@ -115,7 +115,7 @@ monster.defenses = { armor = 77, mitigation = 2.16, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -135,7 +135,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/true_frost_flower_asura.lua b/data-otservbr-global/monster/demons/true_frost_flower_asura.lua index f92325469f2..6aff33bd5d2 100644 --- a/data-otservbr-global/monster/demons/true_frost_flower_asura.lua +++ b/data-otservbr-global/monster/demons/true_frost_flower_asura.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 86, lookFeet = 9, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1622 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Asura Palace, Asura Vaults" + Locations = "Asura Palace, Asura Vaults", } monster.health = 4000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -112,7 +112,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -250, range = 7, target = false }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -550, maxDamage = -780, length = 8, spread = 3, effect = CONST_ME_ICETORNADO, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -100, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -100, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } monster.defenses = { @@ -120,7 +120,7 @@ monster.defenses = { armor = 72, mitigation = 2.11, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -140,7 +140,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/true_midnight_asura.lua b/data-otservbr-global/monster/demons/true_midnight_asura.lua index 2db94eda26d..1327b384f97 100644 --- a/data-otservbr-global/monster/demons/true_midnight_asura.lua +++ b/data-otservbr-global/monster/demons/true_midnight_asura.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 53, lookFeet = 0, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1621 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Asura Palace, Asura Vaults." + Locations = "Asura Palace, Asura Vaults.", } monster.health = 9000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -123,7 +123,7 @@ monster.defenses = { mitigation = 2.16, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, - { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -143,7 +143,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/demons/vexclaw.lua b/data-otservbr-global/monster/demons/vexclaw.lua index d5f0d6108f1..9a6e1666209 100644 --- a/data-otservbr-global/monster/demons/vexclaw.lua +++ b/data-otservbr-global/monster/demons/vexclaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1197 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "The Dungeons of The Ruthless Seven." + Locations = "The Dungeons of The Ruthless Seven.", } monster.health = 8500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,19 +62,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Weakness must be culled!", yell = false }, - { text = "Power is miiiiine!", yell = false } + { text = "Power is miiiiine!", yell = false }, } monster.loot = { @@ -108,7 +108,7 @@ monster.loot = { { name = "devil helmet", chance = 520 }, { name = "rift crossbow", chance = 370 }, { name = "magic plate armor", chance = 70 }, - { name = "demonrage sword", chance = 30 } + { name = "demonrage sword", chance = 30 }, } monster.attacks = { @@ -121,14 +121,14 @@ monster.attacks = { { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -490, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "energy strike", interval = 2000, chance = 10, minDamage = -210, maxDamage = -300, range = 1, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -300, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -300, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } monster.defenses = { defense = 55, armor = 55, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 180, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -141,14 +141,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 20 } + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/dragon.lua b/data-otservbr-global/monster/dragons/dragon.lua index d53732282ab..52ca6324429 100644 --- a/data-otservbr-global/monster/dragons/dragon.lua +++ b/data-otservbr-global/monster/dragons/dragon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 34 @@ -28,7 +28,7 @@ monster.Bestiary = { Maze of Lost Souls, southern cave and dragon tower in Shadowthorn, Orc Fortress, Venore Dragon Lair, \z Pits of Inferno, Behemoth Quest room in Edron, Hero Cave, deep Cyclopolis, Edron Dragon Lair, Goroma, \z Ankrahmun Dragon Lairs, Draconia, Dragonblaze Peaks, some Ankrahmun Tombs, \z - underground of Fenrock (on the way to Beregar), Krailos Steppe and Crystal Lakes." + underground of Fenrock (on the way to Beregar), Krailos Steppe and Crystal Lakes.", } monster.health = 1000 @@ -40,7 +40,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -106,18 +106,17 @@ monster.loot = { { name = "dragon shield", chance = 110 }, } - monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -140, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -170, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -170, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 30, armor = 25, mitigation = 0.99, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -137,7 +136,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/dragon_hatchling.lua b/data-otservbr-global/monster/dragons/dragon_hatchling.lua index 7fb38aaac42..cc6aafa6adc 100644 --- a/data-otservbr-global/monster/dragons/dragon_hatchling.lua +++ b/data-otservbr-global/monster/dragons/dragon_hatchling.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 385 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Thais Dragon Lair, beneath Fenrock, Darashia Dragon Lair, Venore Dragon Lair, \z - Edron Dragon Lair, Dragonblaze Peaks, Krailos Steppe. Also summoned by Lizard Dragon Priests." + Edron Dragon Lair, Dragonblaze Peaks, Krailos Steppe. Also summoned by Lizard Dragon Priests.", } monster.health = 380 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,14 +88,14 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -55 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -90, length = 5, spread = 2, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -30, maxDamage = -55, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -30, maxDamage = -55, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { defense = 10, armor = 15, mitigation = 0.78, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 8, maxDamage = 33, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 8, maxDamage = 33, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/dragon_lord.lua b/data-otservbr-global/monster/dragons/dragon_lord.lua index 9665d224d13..57ce3725109 100644 --- a/data-otservbr-global/monster/dragons/dragon_lord.lua +++ b/data-otservbr-global/monster/dragons/dragon_lord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 39 @@ -29,7 +29,7 @@ monster.Bestiary = { Pits of Inferno Dragon Lair, Dragon Lord hole in Plains of Havoc, Carlin Dragon Lair, \z Thais Dragon Lair, Goroma Dragon Lairs, Hot Spot, Venore Dragon Lair, Arena and Zoo Quarter(Yalahar), \z beneath Fenrock, Darashia Dragon Lair, Razachai, Dragonblaze Peaks, Ferumbras Citadel, Fury Dungeon, \z - Lower Spike, Krailos Steppe." + Lower Spike, Krailos Steppe.", } monster.health = 1900 @@ -41,7 +41,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -106,19 +106,18 @@ monster.loot = { { name = "dragon scale mail", chance = 90 }, } - monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -230 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -220, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 2000, chance = 22, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -270, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 22, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -270, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 34, armor = 34, mitigation = 1.29, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 57, maxDamage = 93, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 57, maxDamage = 93, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -138,7 +137,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/dragon_lord_hatchling.lua b/data-otservbr-global/monster/dragons/dragon_lord_hatchling.lua index 17de4c835d9..53b23d3f0f0 100644 --- a/data-otservbr-global/monster/dragons/dragon_lord_hatchling.lua +++ b/data-otservbr-global/monster/dragons/dragon_lord_hatchling.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 386 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Thais Dragon Lair, Venore Dragon Lair, Edron Dragon Lair by the Fire Axe Quest, \z - on the way to Pythius the Rotten, Razzachai, Dragonblaze Peaks." + on the way to Pythius the Rotten, Razzachai, Dragonblaze Peaks.", } monster.health = 750 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,19 +63,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Fchu?", yell = false }, - { text = "Rooawwrr", yell = false } + { text = "Rooawwrr", yell = false }, } monster.loot = { @@ -90,13 +90,13 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -125, length = 5, spread = 2, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -55, maxDamage = -105, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true } + { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { defense = 20, armor = 20, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 26, maxDamage = 48, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 26, maxDamage = 48, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -109,14 +109,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/draken_abomination.lua b/data-otservbr-global/monster/dragons/draken_abomination.lua index b7850c2d25e..e1eb996e3a5 100644 --- a/data-otservbr-global/monster/dragons/draken_abomination.lua +++ b/data-otservbr-global/monster/dragons/draken_abomination.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 673 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Razachai including the Inner Sanctum." + Locations = "Razachai including the Inner Sanctum.", } monster.health = 6250 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -70,8 +70,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Death Blob", chance = 10, interval = 2000, count = 2 } - } + { name = "Death Blob", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -103,7 +103,7 @@ monster.loot = { { name = "shield of corruption", chance = 10 }, { name = "draken boots", chance = 540 }, { name = "snake god's wristguard", chance = 10 }, - { name = "bamboo leaves", chance = 360 } + { name = "bamboo leaves", chance = 360 }, } monster.attacks = { @@ -112,14 +112,14 @@ monster.attacks = { { name = "draken abomination curse", interval = 2000, chance = 10, range = 5, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -170, maxDamage = -370, length = 4, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "drunk", interval = 2000, chance = 15, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false, duration = 9000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { defense = 30, armor = 45, mitigation = 1.60, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 650, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 650, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -139,7 +139,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/draken_elite.lua b/data-otservbr-global/monster/dragons/draken_elite.lua index 5a6093992f4..1383ba443f2 100644 --- a/data-otservbr-global/monster/dragons/draken_elite.lua +++ b/data-otservbr-global/monster/dragons/draken_elite.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 672 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Razachai, including the Crystal Column chambers in the Inner Sanctum." + Locations = "Razachai, including the Crystal Column chambers in the Inner Sanctum.", } monster.health = 5550 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -99,7 +99,6 @@ monster.loot = { { name = "cobra crown", chance = 0 }, } - monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -354 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -240, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, @@ -107,14 +106,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -280, maxDamage = -410, radius = 4, effect = CONST_ME_POFF, target = true }, { name = "soulfire rune", interval = 2000, chance = 10, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -250, maxDamage = -320, range = 7, shootEffect = CONST_ANI_POISON, target = true } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -250, maxDamage = -320, range = 7, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { defense = 60, armor = 60, mitigation = 1.60, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 510, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 510, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -134,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/draken_spellweaver.lua b/data-otservbr-global/monster/dragons/draken_spellweaver.lua index c720b0190e9..e2c17acaaa8 100644 --- a/data-otservbr-global/monster/dragons/draken_spellweaver.lua +++ b/data-otservbr-global/monster/dragons/draken_spellweaver.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 618 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Zao Palace, Razachai, and Zzaion." + Locations = "Zao Palace, Razachai, and Zzaion.", } monster.health = 5000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -97,8 +97,6 @@ monster.loot = { { name = "draken trophy", chance = 10 }, } - - monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -252 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -240, maxDamage = -480, length = 4, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, @@ -107,7 +105,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -380, radius = 4, effect = CONST_ME_POFF, target = true }, { name = "soulfire rune", interval = 2000, chance = 10, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -280, maxDamage = -360, shootEffect = CONST_ANI_POISON, target = true } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -280, maxDamage = -360, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { @@ -115,7 +113,7 @@ monster.defenses = { armor = 25, mitigation = 1.35, { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_RED }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 270, maxDamage = 530, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 270, maxDamage = 530, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -135,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/draken_warmaster.lua b/data-otservbr-global/monster/dragons/draken_warmaster.lua index 91000b13023..f6c06e2b1ed 100644 --- a/data-otservbr-global/monster/dragons/draken_warmaster.lua +++ b/data-otservbr-global/monster/dragons/draken_warmaster.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 617 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Zao Palace, Chazorai, Razzachai, and Zzaion." + Locations = "Zao Palace, Chazorai, Razzachai, and Zzaion.", } monster.health = 4150 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,19 +59,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Attack aggrezzively! Dezztroy zze intruderzz!", yell = false }, - { text = "Hizzzzzz!", yell = false } + { text = "Hizzzzzz!", yell = false }, } monster.loot = { @@ -94,13 +94,13 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -240, maxDamage = -520, length = 4, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -240, maxDamage = -520, length = 4, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, } monster.defenses = { defense = 40, armor = 55, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 510, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 510, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -113,14 +113,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, { type = COMBAT_HOLYDAMAGE, percent = 5 }, - { type = COMBAT_DEATHDAMAGE, percent = 50 } + { type = COMBAT_DEATHDAMAGE, percent = 50 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/elder_wyrm.lua b/data-otservbr-global/monster/dragons/elder_wyrm.lua index 912eb3fb152..90e7dc727f7 100644 --- a/data-otservbr-global/monster/dragons/elder_wyrm.lua +++ b/data-otservbr-global/monster/dragons/elder_wyrm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 963 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Drefia Wyrm Lair, Vandura Wyrm Cave, Oramond Factory Raids (west), Warzone 4." + Locations = "Drefia Wyrm Lair, Vandura Wyrm Cave, Oramond Factory Raids (west), Warzone 4.", } monster.health = 2700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -100,20 +100,19 @@ monster.loot = { { name = "shockwave amulet", chance = 120 }, } - monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -360 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -90, maxDamage = -150, radius = 4, effect = CONST_ME_TELEPORT, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -140, maxDamage = -250, radius = 5, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, - { name = "elder wyrm wave", interval = 2000, chance = 10, minDamage = -200, maxDamage = -300, target = false } + { name = "elder wyrm wave", interval = 2000, chance = 10, minDamage = -200, maxDamage = -300, target = false }, } monster.defenses = { defense = 45, armor = 48, mitigation = 1.35, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -133,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/frost_dragon.lua b/data-otservbr-global/monster/dragons/frost_dragon.lua index 4dffb74290d..34814c4f569 100644 --- a/data-otservbr-global/monster/dragons/frost_dragon.lua +++ b/data-otservbr-global/monster/dragons/frost_dragon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 317 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Okolnir, Razachai, Ice Witch Temple, Frost Dragon Tunnel, \z - Yakchal Crypt (only during Yakchals awakening ritual), Dragonblaze Peaks, Deeper Banuta, Chyllfroest." + Yakchal Crypt (only during Yakchals awakening ritual), Dragonblaze Peaks, Deeper Banuta, Chyllfroest.", } monster.health = 1800 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -108,7 +108,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 5, type = COMBAT_ICEDAMAGE, minDamage = -60, maxDamage = -120, radius = 3, effect = CONST_ME_ICETORNADO, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -240, radius = 4, effect = CONST_ME_ICEAREA, target = true }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -220, length = 1, spread = 0, effect = CONST_ME_POFF, target = false }, - { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 4, effect = CONST_ME_ICEAREA, target = true, duration = 12000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 4, effect = CONST_ME_ICEAREA, target = true, duration = 12000 }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.defenses = { armor = 38, mitigation = 1.07, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -136,7 +136,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/frost_dragon_hatchling.lua b/data-otservbr-global/monster/dragons/frost_dragon_hatchling.lua index 0df9fc867a8..ac86db509e4 100644 --- a/data-otservbr-global/monster/dragons/frost_dragon_hatchling.lua +++ b/data-otservbr-global/monster/dragons/frost_dragon_hatchling.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 402 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Okolnir, Factory Quarter (Yalahar), Dragonblaze Peaks, Ice Witch Temple, Frost Dragon Tunnel, Chyllfroest." + Locations = "Okolnir, Factory Quarter (Yalahar), Dragonblaze Peaks, Ice Witch Temple, Frost Dragon Tunnel, Chyllfroest.", } monster.health = 800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -85,19 +85,18 @@ monster.loot = { { name = "spellbook of enlightenment", chance = 430 }, } - monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -60, maxDamage = -110, length = 5, spread = 2, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -60, maxDamage = -110, radius = 4, effect = CONST_ME_ICEAREA, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -600, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = true, duration = 12000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -600, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = true, duration = 12000 }, } monster.defenses = { defense = 15, armor = 32, mitigation = 1.04, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 45, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 45, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -117,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/ghastly_dragon.lua b/data-otservbr-global/monster/dragons/ghastly_dragon.lua index 169303cad9f..a4e989ea21f 100644 --- a/data-otservbr-global/monster/dragons/ghastly_dragon.lua +++ b/data-otservbr-global/monster/dragons/ghastly_dragon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 643 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Ghastly Dragon Lair, Corruption Hole, Razachai including the Inner Sanctum, Zao Palace, Deeper Banuta single spawn, Chyllfroest." + Locations = "Ghastly Dragon Lair, Corruption Hole, Razachai including the Inner Sanctum, Zao Palace, Deeper Banuta single spawn, Chyllfroest.", } monster.health = 7800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -107,7 +107,6 @@ monster.loot = { { name = "zaoan sword", chance = 120 }, } - monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -603 }, { name = "ghastly dragon curse", interval = 2000, chance = 5, range = 5, target = false }, @@ -116,7 +115,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -230, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, { name = "ghastly dragon wave", interval = 2000, chance = 10, minDamage = -120, maxDamage = -250, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -110, maxDamage = -180, radius = 4, effect = CONST_ME_MORTAREA, target = false }, - { name = "speed", interval = 2000, chance = 20, speedChange = -800, range = 7, effect = CONST_ME_SMALLCLOUDS, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -800, range = 7, effect = CONST_ME_SMALLCLOUDS, target = true, duration = 30000 }, } monster.defenses = { @@ -142,7 +141,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/hydra.lua b/data-otservbr-global/monster/dragons/hydra.lua index 22ae99fe5a2..bed09ae1461 100644 --- a/data-otservbr-global/monster/dragons/hydra.lua +++ b/data-otservbr-global/monster/dragons/hydra.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 121 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Northern Hydra Mountain in east Tiquanda, southern Hydra Mountain, Hydra Egg Quest in Tiquanda \z north-east of the Elephant Tusk Quest, Forbidden Lands hydra cave, Deeper Banuta, Talahu surface, \z - Ferumbras Citadel, Yalahar Arena and Zoo Quarter, Yalahar Foreigner Quarter (Crystal Lake), Oramond Hydra/Bog Raider Cave." + Ferumbras Citadel, Yalahar Arena and Zoo Quarter, Yalahar Foreigner Quarter (Crystal Lake), Oramond Hydra/Bog Raider Cave.", } monster.health = 2350 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -98,20 +98,19 @@ monster.loot = { { name = "royal helmet", chance = 90 }, } - monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -270 }, { name = "speed", interval = 2000, chance = 25, speedChange = -700, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true, duration = 15000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -80, maxDamage = -155, shootEffect = CONST_ANI_SMALLICE, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -66, maxDamage = -320, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -66, maxDamage = -320, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, } monster.defenses = { defense = 35, armor = 27, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 260, maxDamage = 407, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 260, maxDamage = 407, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -131,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/dragons/wyrm.lua b/data-otservbr-global/monster/dragons/wyrm.lua index 5bb56fd5695..afb39698c20 100644 --- a/data-otservbr-global/monster/dragons/wyrm.lua +++ b/data-otservbr-global/monster/dragons/wyrm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 461 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Drefia Wyrm Lair (after the Medusa Shield Quest room), Darashia Wyrm Hills, Arena and Zoo Quarter, \z - beneath Fenrock, Deeper Razachai, Lower Spike, Vandura Wyrm Cave and Vandura Mountain in Liberty Bay." + beneath Fenrock, Deeper Razachai, Lower Spike, Vandura Wyrm Cave and Vandura Mountain in Liberty Bay.", } monster.health = 1825 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -102,7 +102,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -220, radius = 3, effect = CONST_ME_YELLOWENERGY, target = false }, { name = "wyrm wave", interval = 2000, chance = 40, minDamage = -130, maxDamage = -200, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -125, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -98, maxDamage = -145, length = 4, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -98, maxDamage = -145, length = 4, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -110,7 +110,7 @@ monster.defenses = { armor = 34, mitigation = 0.83, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "effect", interval = 2000, chance = 10, radius = 1, effect = CONST_ME_SOUND_YELLOW, target = false } + { name = "effect", interval = 2000, chance = 10, radius = 1, effect = CONST_ME_SOUND_YELLOW, target = false }, } monster.elements = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/cliff_strider.lua b/data-otservbr-global/monster/elementals/cliff_strider.lua index 9142560296f..b03a7f25932 100644 --- a/data-otservbr-global/monster/elementals/cliff_strider.lua +++ b/data-otservbr-global/monster/elementals/cliff_strider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 889 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Warzone 3." + Locations = "Warzone 3.", } monster.health = 9400 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -110,7 +110,7 @@ monster.loot = { { name = "vein of ore", chance = 18000, maxCount = 2 }, { name = "prismatic bolt", chance = 9090, maxCount = 8 }, { name = "crystalline sword", chance = 620 }, - { name = "crystal crossbow", chance = 830 } + { name = "crystal crossbow", chance = 830 }, } monster.attacks = { @@ -119,7 +119,7 @@ monster.attacks = { { name = "cliff strider skill reducer", interval = 2000, chance = 10, target = false }, { name = "cliff strider electrify", interval = 2000, chance = 15, range = 1, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1000, length = 6, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -300, radius = 4, effect = CONST_ME_YELLOWENERGY, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -300, radius = 4, effect = CONST_ME_YELLOWENERGY, target = false }, } monster.defenses = { @@ -145,7 +145,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/earth_elemental.lua b/data-otservbr-global/monster/elementals/earth_elemental.lua index b7a0e52f390..84ab9418e29 100644 --- a/data-otservbr-global/monster/elementals/earth_elemental.lua +++ b/data-otservbr-global/monster/elementals/earth_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 458 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Edron Earth Elemental Cave, Vandura Mountain, Deeper Banuta, Vengoth Castle, Robson Isle, \z - Drillworm Caves, Crystal Grounds, Middle Spike." + Drillworm Caves, Crystal Grounds, Middle Spike.", } monster.health = 650 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,7 +88,7 @@ monster.loot = { { name = "small topaz", chance = 620 }, { name = "lump of earth", chance = 20460 }, { name = "clay lump", chance = 570 }, - { id = 12600, chance = 470 } -- coal + { id = 12600, chance = 470 }, -- coal } monster.attacks = { @@ -99,14 +99,14 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -200, maxDamage = -260, length = 6, spread = 3, effect = CONST_ME_BIGPLANTS, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -100, maxDamage = -140, radius = 5, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = -330, range = 5, effect = CONST_ME_SMALLPLANTS, target = true, duration = 5000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -330, range = 5, effect = CONST_ME_SMALLPLANTS, target = true, duration = 5000 }, } monster.defenses = { defense = 25, armor = 45, mitigation = 0.78, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 60, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 60, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/energy_elemental.lua b/data-otservbr-global/monster/elementals/energy_elemental.lua index c45aa554cf7..7811ffe3cff 100644 --- a/data-otservbr-global/monster/elementals/energy_elemental.lua +++ b/data-otservbr-global/monster/elementals/energy_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 457 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Khazeel, Energy Elemental Lair, Vandura Mountain, Vengoths mountain." + Locations = "Khazeel, Energy Elemental Lair, Vandura Mountain, Vengoths mountain.", } monster.health = 500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,21 +89,21 @@ monster.loot = { { name = "crystal sword", chance = 5882 }, { name = "strong mana potion", chance = 7692 }, { name = "mana potion", chance = 11711 }, - { id = 761, chance = 10000, maxCount = 10 } -- flash arrow + { id = 761, chance = 10000, maxCount = 10 }, -- flash arrow } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -175 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -125, maxDamage = -252, range = 7, radius = 2, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -130, range = 7, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "energy elemental electrify", interval = 2000, chance = 20, target = false } + { name = "energy elemental electrify", interval = 2000, chance = 20, target = false }, } monster.defenses = { defense = 15, armor = 25, mitigation = 0.72, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/fire_elemental.lua b/data-otservbr-global/monster/elementals/fire_elemental.lua index cd26480b5b4..588f8823fa3 100644 --- a/data-otservbr-global/monster/elementals/fire_elemental.lua +++ b/data-otservbr-global/monster/elementals/fire_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 49 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Cyclopolis, Hero Cave in Edron, Ankrahmun tombs, Serpentine Tower, Factory Quarter in Yalahar, \z - Deeper Banuta, Goroma inside the volcano and beneath Fenrock." + Deeper Banuta, Goroma inside the volcano and beneath Fenrock.", } monster.health = 280 @@ -36,7 +36,7 @@ monster.manaCost = 690 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -74,13 +74,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -45, maxDamage = -160, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "firefield", interval = 2000, chance = 25, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true } + { name = "firefield", interval = 2000, chance = 25, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { @@ -106,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/foam_stalker.lua b/data-otservbr-global/monster/elementals/foam_stalker.lua index d351a4a5803..5668eb0e29d 100644 --- a/data-otservbr-global/monster/elementals/foam_stalker.lua +++ b/data-otservbr-global/monster/elementals/foam_stalker.lua @@ -17,7 +17,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Great Pearl Fan Reef" + Locations = "Great Pearl Fan Reef", } monster.health = 4500 @@ -29,7 +29,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.flags = { @@ -87,7 +87,7 @@ monster.loot = { { name = "terra boots", chance = 5075 }, { name = "mercenary sword", chance = 4167 }, { name = "knight legs", chance = 3649 }, - { name = "violet gem", chance = 3389 } + { name = "violet gem", chance = 3389 }, } monster.attacks = { @@ -95,14 +95,14 @@ monster.attacks = { { name = "foamsplash", interval = 5000, chance = 50, minDamage = -100, maxDamage = -300 }, { name = "combat", interval = 2500, chance = 35, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, length = 6, spread = 0, effect = CONST_ME_LOSEENERGY }, { name = "combat", interval = 2000, chance = 45, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, range = 4, radius = 1, target = true, effect = CONST_ME_ICEATTACK, shootEffect = CONST_ANI_ICE }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, radius = 4, target = false, effect = CONST_ME_ICEAREA } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, radius = 4, target = false, effect = CONST_ME_ICEAREA }, } monster.defenses = { defense = 64, armor = 64, mitigation = 1.74, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 80, maxDamage = 113 } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 80, maxDamage = 113 }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/high_voltage_elemental.lua b/data-otservbr-global/monster/elementals/high_voltage_elemental.lua index b48f10873de..ca99e57527e 100644 --- a/data-otservbr-global/monster/elementals/high_voltage_elemental.lua +++ b/data-otservbr-global/monster/elementals/high_voltage_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1116 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "South side of the second floor of Underground Glooth Factory, Warzone 5" + Locations = "South side of the second floor of Underground Glooth Factory, Warzone 5", } monster.health = 1500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -83,13 +83,13 @@ monster.loot = { { id = 3007, chance = 7142 }, -- crystal ring { id = 3313, chance = 4761 }, -- obsidian lance { id = 268, chance = 4761 }, -- mana potion - { id = 7449, chance = 4761 } -- crystal sword + { id = 7449, chance = 4761 }, -- crystal sword } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 66, attack = 70 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -205, maxDamage = -497, range = 7, radius = 2, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -201, maxDamage = -277, range = 7, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -201, maxDamage = -277, range = 7, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/ironblight.lua b/data-otservbr-global/monster/elementals/ironblight.lua index fca15a12c1f..f6391182c10 100644 --- a/data-otservbr-global/monster/elementals/ironblight.lua +++ b/data-otservbr-global/monster/elementals/ironblight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 890 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Warzone 3." + Locations = "Warzone 3.", } monster.health = 6600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -101,7 +101,7 @@ monster.loot = { { name = "green crystal shard", chance = 5720 }, { name = "brown crystal splinter", chance = 12610, maxCount = 2 }, { name = "red crystal fragment", chance = 10540 }, - { name = "crystalline spikes", chance = 18400 } + { name = "crystalline spikes", chance = 18400 }, } monster.attacks = { @@ -110,14 +110,14 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -460, maxDamage = -480, radius = 6, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -260, maxDamage = -350, length = 7, spread = 3, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -180, maxDamage = -250, radius = 2, shootEffect = CONST_ANI_GREENSTAR, effect = CONST_ME_BIGPLANTS, target = true }, - { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, } monster.defenses = { defense = 35, armor = 84, mitigation = 2.40, - { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -137,7 +137,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/knowledge_elemental.lua b/data-otservbr-global/monster/elementals/knowledge_elemental.lua index 8c2d0f2cc4c..c23f5b8e0b0 100644 --- a/data-otservbr-global/monster/elementals/knowledge_elemental.lua +++ b/data-otservbr-global/monster/elementals/knowledge_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1670 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Secret Library energy section." + Locations = "Secret Library energy section.", } monster.health = 10500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -91,13 +91,13 @@ monster.loot = { { name = "mana potion", chance = 10000, maxCount = 10 }, { name = "ultimate mana potion", chance = 10000, maxCount = 8 }, { name = "ultimate health potion", chance = 10000, maxCount = 8 }, - { name = "wand of cosmic energy", chance = 300 } + { name = "wand of cosmic energy", chance = 300 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -680, radius = 3, effect = CONST_ME_HOLYDAMAGE, target = true }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -680, range = 7, shootEffect = CONST_ANI_ENERGY, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -680, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.defenses = { armor = 76, mitigation = 2.08, { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 100, maxDamage = 300, radius = 3, effect = CONST_ME_BLOCKHIT, target = false }, - { name = "combat", interval = 200, chance = 55, type = COMBAT_PHYSICALDAMAGE, minDamage = 100, maxDamage = 300, radius = 3, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 200, chance = 55, type = COMBAT_PHYSICALDAMAGE, minDamage = 100, maxDamage = 300, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/lava_lurker.lua b/data-otservbr-global/monster/elementals/lava_lurker.lua index e8e092ec5a4..675d807fa9e 100644 --- a/data-otservbr-global/monster/elementals/lava_lurker.lua +++ b/data-otservbr-global/monster/elementals/lava_lurker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1563 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Gnome Deep Hub" + Locations = "Gnome Deep Hub", } monster.health = 5900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -76,13 +76,13 @@ monster.voices = { } monster.loot = { - { id = 676, chance = 14620, maxCount = 2 } -- small enchanted ruby + { id = 676, chance = 14620, maxCount = 2 }, -- small enchanted ruby } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -300, range = 7, length = 3, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/massive_earth_elemental.lua b/data-otservbr-global/monster/elementals/massive_earth_elemental.lua index 01e3f298757..674a26d553e 100644 --- a/data-otservbr-global/monster/elementals/massive_earth_elemental.lua +++ b/data-otservbr-global/monster/elementals/massive_earth_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 455 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Forbidden Lands, on top of a hill in the northern part of the Arena and Zoo Quarter, \z - Lower Spike, Truffels Garden and Mushroom Gardens." + Lower Spike, Truffels Garden and Mushroom Gardens.", } monster.health = 1330 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { name = "small topaz", chance = 5280, maxCount = 2 }, { name = "lump of earth", chance = 40680 }, { name = "clay lump", chance = 480 }, - { id = 12600, chance = 430 } -- coal + { id = 12600, chance = 430 }, -- coal } monster.attacks = { @@ -101,14 +101,14 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -300, maxDamage = -320, length = 6, spread = 3, effect = CONST_ME_BIGPLANTS, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -200, maxDamage = -220, radius = 5, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, - { name = "speed", interval = 2000, chance = 20, speedChange = -330, range = 5, effect = CONST_ME_SMALLPLANTS, target = true, duration = 5000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -330, range = 5, effect = CONST_ME_SMALLPLANTS, target = true, duration = 5000 }, } monster.defenses = { defense = 35, armor = 60, mitigation = 1.04, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 150, maxDamage = 180, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 150, maxDamage = 180, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/massive_energy_elemental.lua b/data-otservbr-global/monster/elementals/massive_energy_elemental.lua index dbe26452b83..17081263d98 100644 --- a/data-otservbr-global/monster/elementals/massive_energy_elemental.lua +++ b/data-otservbr-global/monster/elementals/massive_energy_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 456 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "North west of Ankrahmun, you must Levitate to hunt. Two can also be found in the Asura Palace." + Locations = "North west of Ankrahmun, you must Levitate to hunt. Two can also be found in the Asura Palace.", } monster.health = 1100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -86,21 +86,21 @@ monster.loot = { { name = "spellbook of warding", chance = 360 }, { name = "wand of starstorm", chance = 730 }, { id = 8895, chance = 730 }, -- rusted armor - { name = "shockwave amulet", chance = 500 } + { name = "shockwave amulet", chance = 500 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -175 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -270, maxDamage = -615, range = 7, radius = 2, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -175, maxDamage = -205, range = 7, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "massive energy elemental electrify", interval = 2000, chance = 20, effect = CONST_ME_BLOCKHIT, target = false } + { name = "massive energy elemental electrify", interval = 2000, chance = 20, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { defense = 20, armor = 35, mitigation = 1.04, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 190, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 190, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/massive_fire_elemental.lua b/data-otservbr-global/monster/elementals/massive_fire_elemental.lua index d562aa0ace1..ab29c321263 100644 --- a/data-otservbr-global/monster/elementals/massive_fire_elemental.lua +++ b/data-otservbr-global/monster/elementals/massive_fire_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 313 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Demon Forge, Deeper Banuta, Hero Cave, Hot Spot, Fury Dungeon." + Locations = "Demon Forge, Deeper Banuta, Hero Cave, Hot Spot, Fury Dungeon.", } monster.health = 1800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,7 +83,7 @@ monster.loot = { { name = "magma amulet", chance = 1300 }, { name = "magma boots", chance = 560 }, { name = "magma legs", chance = 210 }, - { id = 8895, chance = 1330 } -- rusted armor + { id = 8895, chance = 1330 }, -- rusted armor } monster.attacks = { @@ -92,7 +92,7 @@ monster.attacks = { { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -700, length = 7, spread = 3, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -250, radius = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "massive fire elemental soulfire", interval = 2000, chance = 15, target = false } + { name = "massive fire elemental soulfire", interval = 2000, chance = 15, target = false }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/massive_water_elemental.lua b/data-otservbr-global/monster/elementals/massive_water_elemental.lua index e302b8b839c..65ead75130e 100644 --- a/data-otservbr-global/monster/elementals/massive_water_elemental.lua +++ b/data-otservbr-global/monster/elementals/massive_water_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 279 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Calassa, Frozen Trench, Water Elemental Dungeon through the water channels, before Zugurosh in The Inquisition Quest." + Locations = "Calassa, Frozen Trench, Water Elemental Dungeon through the water channels, before Zugurosh in The Inquisition Quest.", } monster.health = 1250 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,7 +86,7 @@ monster.loot = { { name = "rainbow trout", chance = 1340 }, { name = "green perch", chance = 1590 }, { name = "great mana potion", chance = 10400 }, - { name = "great health potion", chance = 10000 } + { name = "great health potion", chance = 10000 }, } monster.attacks = { @@ -94,14 +94,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -330, maxDamage = -450, range = 7, radius = 2, effect = CONST_ME_LOSEENERGY, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -170, maxDamage = -210, range = 7, shootEffect = CONST_ANI_SMALLICE, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -355, maxDamage = -420, radius = 5, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -355, maxDamage = -420, radius = 5, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 25, armor = 45, mitigation = 1.32, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 120, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 120, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/raging_fire.lua b/data-otservbr-global/monster/elementals/raging_fire.lua index eadde86004d..a5da1da9fe1 100644 --- a/data-otservbr-global/monster/elementals/raging_fire.lua +++ b/data-otservbr-global/monster/elementals/raging_fire.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1121 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Jaccus Maxxen's Dungeon." + Locations = "Jaccus Maxxen's Dungeon.", } monster.health = 1800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,15 +73,14 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 100 }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_FIREDAMAGE, minDamage = -65, maxDamage = -605, length = 7, spread = 3, target = false }, { name = "massive fire elemental soulfire", interval = 2000, chance = 12, target = false }, { name = "firefield", interval = 2000, chance = 11, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "firefield", interval = 2000, chance = 11, radius = 3, effect = CONST_ME_HITBYFIRE, target = false } + { name = "firefield", interval = 2000, chance = 11, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { @@ -107,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/ravenous_lava_lurker.lua b/data-otservbr-global/monster/elementals/ravenous_lava_lurker.lua index 743faa1a8da..b7556077530 100644 --- a/data-otservbr-global/monster/elementals/ravenous_lava_lurker.lua +++ b/data-otservbr-global/monster/elementals/ravenous_lava_lurker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1569 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Gnome Deep Hub in the Gnomish area." + Locations = "Gnome Deep Hub in the Gnomish area.", } monster.health = 5000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -76,13 +76,13 @@ monster.voices = { } monster.loot = { - { name = "small enchanted ruby", chance = 14620 } + { name = "small enchanted ruby", chance = 14620 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "ravennouslavalurkerwave", interval = 2000, chance = 15, minDamage = 0, maxDamage = -400, target = false }, - { name = "ravennouslavalurkertarget", interval = 2000, chance = 40, minDamage = 0, maxDamage = -400, target = true } + { name = "ravennouslavalurkertarget", interval = 2000, chance = 40, minDamage = 0, maxDamage = -400, target = true }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/sulphur_spouter.lua b/data-otservbr-global/monster/elementals/sulphur_spouter.lua index 4f4b4abc1d8..6f574cc0a07 100644 --- a/data-otservbr-global/monster/elementals/sulphur_spouter.lua +++ b/data-otservbr-global/monster/elementals/sulphur_spouter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2265 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Monster Graveyard" + Locations = "Monster Graveyard", } monster.health = 19000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/turbulent_elemental.lua b/data-otservbr-global/monster/elementals/turbulent_elemental.lua index 97cdf455141..3bef5da44e3 100644 --- a/data-otservbr-global/monster/elementals/turbulent_elemental.lua +++ b/data-otservbr-global/monster/elementals/turbulent_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1940 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Ebb and Flow." + Locations = "Ebb and Flow.", } monster.health = 28000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/elementals/water_elemental.lua b/data-otservbr-global/monster/elementals/water_elemental.lua index 0bc262e8aa0..0272e24d799 100644 --- a/data-otservbr-global/monster/elementals/water_elemental.lua +++ b/data-otservbr-global/monster/elementals/water_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 236 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Water Elemental Cave in Port Hope, Water Elemental Dungeon, Deeper Banuta, Malada, Ramoa, \z Talahu, Folda (7 spawn on the 3rd floor), Water Elemental Cave in Outlaw Camp (only during the Down the \z - Drain Mini World Change), Krailos Steppe underwater cave." + Drain Mini World Change), Krailos Steppe underwater cave.", } monster.health = 550 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,7 +89,7 @@ monster.loot = { { name = "rainbow trout", chance = 940 }, { name = "green perch", chance = 1050 }, { name = "strong health potion", chance = 10000 }, - { name = "strong mana potion", chance = 10000 } + { name = "strong mana potion", chance = 10000 }, } monster.attacks = { @@ -97,7 +97,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_DROWNDAMAGE, minDamage = -125, maxDamage = -235, range = 7, radius = 2, effect = CONST_ME_LOSEENERGY, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -88, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SMALLICE, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -225, maxDamage = -260, radius = 5, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -225, maxDamage = -260, radius = 5, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.defenses = { armor = 37, mitigation = 0.88, { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/bones.lua b/data-otservbr-global/monster/event_creatures/bones.lua index 2df797a949d..15ca8f7cdf3 100644 --- a/data-otservbr-global/monster/event_creatures/bones.lua +++ b/data-otservbr-global/monster/event_creatures/bones.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 9500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -79,20 +79,20 @@ monster.loot = { { name = "demonic essence", chance = 1538 }, { id = 6570, chance = 5538, maxCount = 3 }, -- surprise bag { id = 6571, chance = 1538 }, -- surprise bag - { name = "dragonbone staff", chance = 50000 } + { name = "dragonbone staff", chance = 50000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -845 }, { name = "combat", interval = 1000, chance = 13, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -600, radius = 1, target = true }, - { name = "combat", interval = 3000, chance = 34, type = COMBAT_DEATHDAMAGE, minDamage = -180, maxDamage = -500, range = 1, radius = 1, shootEffect = CONST_ANI_DEATH, target = true } + { name = "combat", interval = 3000, chance = 34, type = COMBAT_DEATHDAMAGE, minDamage = -180, maxDamage = -500, range = 1, radius = 1, shootEffect = CONST_ANI_DEATH, target = true }, } monster.defenses = { defense = 55, armor = 50, mitigation = 2.00, - { name = "combat", interval = 5000, chance = 25, type = COMBAT_HEALING, minDamage = 60, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 5000, chance = 25, type = COMBAT_HEALING, minDamage = 60, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -112,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/eclipse_knight.lua b/data-otservbr-global/monster/event_creatures/eclipse_knight.lua index 35bef659769..2644e39a7c5 100644 --- a/data-otservbr-global/monster/event_creatures/eclipse_knight.lua +++ b/data-otservbr-global/monster/event_creatures/eclipse_knight.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 45000 monster.maxHealth = 45000 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,20 +62,20 @@ monster.voices = { } monster.loot = { - { name = "midnight shard", chance = 25000 } + { name = "midnight shard", chance = 25000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -781, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, - { name = "dark torturer skill reducer", interval = 2000, chance = 5, target = false } + { name = "dark torturer skill reducer", interval = 2000, chance = 5, target = false }, } monster.defenses = { defense = 40, armor = 40, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/essence_of_darkness.lua b/data-otservbr-global/monster/event_creatures/essence_of_darkness.lua index ff2923c3935..824f60da1df 100644 --- a/data-otservbr-global/monster/event_creatures/essence_of_darkness.lua +++ b/data-otservbr-global/monster/event_creatures/essence_of_darkness.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 1000 monster.maxHealth = 1000 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -63,11 +62,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, } monster.defenses = { @@ -93,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/fluffy.lua b/data-otservbr-global/monster/event_creatures/fluffy.lua index dbef6bf7b88..b2f8086b077 100644 --- a/data-otservbr-global/monster/event_creatures/fluffy.lua +++ b/data-otservbr-global/monster/event_creatures/fluffy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -74,7 +74,7 @@ monster.loot = { { id = 6499, chance = 7200 }, -- demonic essence { id = 3318, chance = 2857 }, -- knight axe { id = 3271, chance = 2500 }, -- spike sword - { id = 6558, chance = 8888 } -- flask of demonic blood + { id = 6558, chance = 8888 }, -- flask of demonic blood } monster.attacks = { @@ -82,7 +82,7 @@ monster.attacks = { { name = "combat", interval = 1500, chance = 300, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -200, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 1000, chance = 150, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 1000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -105, maxDamage = -235, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = false }, - { name = "combat", interval = 1000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -135, maxDamage = -255, range = 7, radius = 6, effect = CONST_ME_LOSEENERGY, target = false } + { name = "combat", interval = 1000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -135, maxDamage = -255, range = 7, radius = 6, effect = CONST_ME_LOSEENERGY, target = false }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/grynch_clan_goblin.lua b/data-otservbr-global/monster/event_creatures/grynch_clan_goblin.lua index 5a96c64b12b..3c852794ac8 100644 --- a/data-otservbr-global/monster/event_creatures/grynch_clan_goblin.lua +++ b/data-otservbr-global/monster/event_creatures/grynch_clan_goblin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 393 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 3, Locations = "They do not have a set respawn spot. They are announced to be stealing presents from a \z random Tibian city and spawn in the aforetold city. \z - There are two or three messages that appear on each raid and three massive spawns of goblins." + There are two or three messages that appear on each raid and three massive spawns of goblins.", } monster.health = 80 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -132,17 +132,16 @@ monster.loot = { { name = "christmas present bag", chance = 7000 }, { name = "gingerbreadman", chance = 4000, maxCount = 2 }, { name = "walnut", chance = 3500, maxCount = 5 }, - { name = "peanut", chance = 3500, maxCount = 100 } + { name = "peanut", chance = 3500, maxCount = 100 }, } -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 12, armor = 5, mitigation = 0.25, - { name = "speed", interval = 1000, chance = 15, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 1000, chance = 15, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -162,7 +161,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/hacker.lua b/data-otservbr-global/monster/event_creatures/hacker.lua index 73e694e0be1..6dfbe554b61 100644 --- a/data-otservbr-global/monster/event_creatures/hacker.lua +++ b/data-otservbr-global/monster/event_creatures/hacker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 430 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -81,11 +81,11 @@ monster.loot = { { name = "war hammer", chance = 5000 }, { name = "ham", chance = 50000 }, { id = 6570, chance = 5538 }, -- surprise bag - { id = 6571, chance = 1538 } -- surprise bag + { id = 6571, chance = 1538 }, -- surprise bag } monster.attacks = { - { name = "melee", interval = 1000, chance = 100, minDamage = 0, maxDamage = -83 } + { name = "melee", interval = 1000, chance = 100, minDamage = 0, maxDamage = -83 }, } monster.defenses = { @@ -93,7 +93,7 @@ monster.defenses = { armor = 15, mitigation = 0.36, { name = "speed", interval = 1000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, - { name = "outfit", interval = 10000, chance = 15, effect = CONST_ME_MAGIC_RED, target = false, duration = 500, outfitMonster = "pig" } + { name = "outfit", interval = 10000, chance = 15, effect = CONST_ME_MAGIC_RED, target = false, duration = 500, outfitMonster = "pig" }, } monster.elements = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_banshee.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_banshee.lua index 1958063da05..b7e74374a7f 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_banshee.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_banshee.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3600 monster.maxHealth = 3600 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -64,21 +63,21 @@ monster.voices = { monster.loot = { { name = "candlestick", chance = 70000 }, - { name = "silver amulet", chance = 8700 } + { name = "silver amulet", chance = 8700 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 3, interval = 4000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -150, radius = 4, effect = CONST_ME_SOUND_RED, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -55, maxDamage = -170, range = 1, radius = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, } monster.defenses = { defense = 25, armor = 25, mitigation = 1.10, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 120, maxDamage = 190, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 120, maxDamage = 190, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_book.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_book.lua index 058f7207bc1..0a063554f0c 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_book.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_book.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3670 monster.maxHealth = 3670 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -67,12 +66,12 @@ monster.loot = { { name = "great spirit potion", chance = 26400 }, { name = "ultimate health potion", chance = 15390 }, { name = "bottle of champagne", chance = 8300 }, - { name = "green crystal shard", chance = 7200 } + { name = "green crystal shard", chance = 7200 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -150, range = 7, shootEffect = CONST_ANI_ICE, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -150, range = 7, shootEffect = CONST_ANI_ICE, target = false }, } monster.defenses = { @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_carnisylvan.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_carnisylvan.lua index c8c17445893..1ecfdd96e1b 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_carnisylvan.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_carnisylvan.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 22, lookFeet = 61, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 3800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,7 +47,7 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { @@ -63,7 +63,7 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 70000, maxCount = 75 }, { name = "emerald bangle", chance = 4970 }, - { name = "small topaz", chance = 6810, maxCount = 2 } + { name = "small topaz", chance = 6810, maxCount = 2 }, } monster.attacks = { @@ -76,7 +76,7 @@ monster.defenses = { defense = 37, armor = 37, mitigation = 1.30, - { name = "speed", interval = 2000, chance = 8, speedChange = 250, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 8, speedChange = 250, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 }, } monster.elements = { @@ -96,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_dwarf.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_dwarf.lua index f88c4580f8c..e939c4d9788 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_dwarf.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_dwarf.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3730 monster.maxHealth = 3730 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -72,11 +71,11 @@ monster.loot = { { name = "battle shield", chance = 6000 }, { name = "white mushroom", chance = 55000, maxCount = 2 }, { name = "health potion", chance = 380 }, - { id = 12600, chance = 280 } -- coal + { id = 12600, chance = 280 }, -- coal } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 }, } monster.defenses = { @@ -102,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_faun.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_faun.lua index 8c0e95b0b16..f11a9d23f2b 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_faun.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_faun.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 114, lookFeet = 81, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3500 monster.maxHealth = 3500 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -75,21 +74,21 @@ monster.loot = { { name = "cave turnip", chance = 55000, maxCount = 4 }, { id = 37531, chance = 5155 }, -- candy floss { name = "bottle of champagne", chance = 5155 }, - { name = "mandrake", chance = 50 } + { name = "mandrake", chance = 50 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -115, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, { name = "drunk", interval = 2000, chance = 11, length = 4, spread = 2, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 25000 }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_LEAFSTAR, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_LEAFSTAR, target = false }, } monster.defenses = { defense = 45, armor = 45, mitigation = 1.30, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 75, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 75, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -109,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_frazzlemaw.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_frazzlemaw.lua index 19bf48598a9..c8181abc4e0 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_frazzlemaw.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_frazzlemaw.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3770 monster.maxHealth = 3770 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -74,7 +73,7 @@ monster.loot = { { name = "ham", chance = 6000, maxCount = 2 }, { name = "violet crystal shard", chance = 3000 }, { name = "gold ingot", chance = 2300 }, - { name = "fishbone", chance = 10000 } + { name = "fishbone", chance = 10000 }, } monster.attacks = { @@ -84,14 +83,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -110, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 30, armor = 30, mitigation = 1.40, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -111,7 +110,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_fungus.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_fungus.lua index 13899c3769f..781372f05bc 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_fungus.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_fungus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3580 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -69,7 +69,7 @@ monster.loot = { { name = "mushroom pie", chance = 17130, maxCount = 3 }, { name = "great health potion", chance = 4950, maxCount = 2 }, { id = 37531, chance = 5155 }, -- candy floss - { name = "yellow gem", chance = 4000 } + { name = "yellow gem", chance = 4000 }, } monster.attacks = { @@ -80,7 +80,7 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -30, maxDamage = -150, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -130, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -50, maxDamage = -180, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -50, maxDamage = -180, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { @@ -88,7 +88,7 @@ monster.defenses = { armor = 70, mitigation = 1.40, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 225, maxDamage = 380, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_golem.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_golem.lua index 9888d817c11..006c65482bb 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_golem.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_golem.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3660 monster.maxHealth = 3660 monster.race = "venom" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -71,7 +70,7 @@ monster.loot = { { name = "small emerald", chance = 7430, maxCount = 2 }, { id = 37531, chance = 5155 }, -- candy floss { name = "special fx box", chance = 1500 }, - { name = "heat core", chance = 5155 } + { name = "heat core", chance = 5155 }, } monster.attacks = { @@ -86,7 +85,7 @@ monster.defenses = { armor = 40, mitigation = 1.40, { name = "speed", interval = 2000, chance = 13, speedChange = 404, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -106,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_hero.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_hero.lua index 40f99043f27..4f41080f567 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_hero.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_hero.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3850 monster.maxHealth = 3850 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -76,19 +75,19 @@ monster.loot = { { name = "red rose", chance = 20450 }, { name = "bottle of champagne", chance = 2006 }, { name = "sniper arrow", chance = 11400, maxCount = 4 }, - { name = "great health potion", chance = 720 } + { name = "great health potion", chance = 720 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -170 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -120, range = 7, shootEffect = CONST_ANI_ARROW, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -120, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, } monster.defenses = { defense = 40, armor = 40, mitigation = 1.50, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -108,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_hydra.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_hydra.lua index 4464cba7322..eaf3cc9fa08 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_hydra.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_hydra.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3550 monster.maxHealth = 3550 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -68,7 +67,7 @@ monster.loot = { { name = "gold coin", chance = 34000, maxCount = 148 }, { name = "platinum coin", chance = 48000, maxCount = 3 }, { name = "knight armor", chance = 1000 }, - { name = "stone skin amulet", chance = 900 } + { name = "stone skin amulet", chance = 900 }, } monster.attacks = { @@ -76,14 +75,14 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 25, speedChange = -700, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true, duration = 15000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -150, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -80, maxDamage = -110, shootEffect = CONST_ANI_SMALLICE, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -66, maxDamage = -100, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -66, maxDamage = -100, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, } monster.defenses = { defense = 35, armor = 35, mitigation = 1.50, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 260, maxDamage = 407, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 260, maxDamage = 407, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -103,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_lizard.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_lizard.lua index 0c658993bec..91caf8556b7 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_lizard.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_lizard.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3520 monster.maxHealth = 3520 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -72,18 +71,18 @@ monster.loot = { { name = "bunch of ripe rice", chance = 4950 }, { name = "zaoan legs", chance = 720 }, { name = "special fx box", chance = 1500 }, - { id = 37531, chance = 5155 } -- candy floss + { id = 37531, chance = 5155 }, -- candy floss } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, } monster.defenses = { defense = 35, armor = 35, mitigation = 1.30, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 25, maxDamage = 75, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 25, maxDamage = 75, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -103,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_mammoth.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_mammoth.lua index f7f42b89b6f..8ecb66ab3fb 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_mammoth.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_mammoth.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3850 monster.maxHealth = 3850 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -70,11 +69,11 @@ monster.loot = { { name = "thick fur", chance = 7280 }, { id = 37531, chance = 5155 }, -- candy floss { name = "bottle of champagne", chance = 7280 }, - { name = "mammoth tusk", chance = 7500, maxCount = 2 } + { name = "mammoth tusk", chance = 7500, maxCount = 2 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, } monster.defenses = { @@ -100,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_manticore.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_manticore.lua index f911f7800a0..83811f94d61 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_manticore.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_manticore.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 113, lookFeet = 20, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3730 monster.maxHealth = 3730 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -66,14 +65,14 @@ monster.loot = { { name = "green crystal fragment", chance = 7000 }, { name = "small emerald", chance = 6890, maxCount = 2 }, { name = "prismatic quartz", chance = 719 }, - { name = "violet gem", chance = 1700 } + { name = "violet gem", chance = 1700 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -150, length = 8, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 4000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -150, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_GREEN_RINGS, target = true }, - { name = "combat", interval = 2000, chance = 22, type = COMBAT_FIREDAMAGE, minDamage = -10, maxDamage = -100, range = 4, shootEffect = CONST_ANI_BURSTARROW, target = true } + { name = "combat", interval = 2000, chance = 22, type = COMBAT_FIREDAMAGE, minDamage = -10, maxDamage = -100, range = 4, shootEffect = CONST_ANI_BURSTARROW, target = true }, } monster.defenses = { @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_pirate.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_pirate.lua index 135b686a43f..1f596061434 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_pirate.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_pirate.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3750 monster.maxHealth = 3750 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -69,12 +68,12 @@ monster.loot = { { name = "battle shield", chance = 3850 }, { name = "pirate shirt", chance = 1200 }, { id = 37531, chance = 5155 }, -- candy floss - { name = "strong health potion", chance = 670 } + { name = "strong health potion", chance = 670 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 4, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 4, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { @@ -100,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_scarab.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_scarab.lua index 29a9e74d2b4..a9e6fb4ca31 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_scarab.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_scarab.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3620 monster.maxHealth = 3620 monster.race = "venom" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,8 +59,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Larva", chance = 10, interval = 2000, count = 3 } - } + { name = "Larva", chance = 10, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -78,7 +77,7 @@ monster.loot = { { id = 3046, chance = 11480 }, -- magic light wand { name = "plate armor", chance = 10300 }, { name = "special fx box", chance = 1500 }, - { name = "strong health potion", chance = 660 } + { name = "strong health potion", chance = 660 }, } monster.attacks = { @@ -86,14 +85,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -15, maxDamage = -145, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -700, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false, duration = 25000 }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = -70, maxDamage = -150, radius = 5, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = -70, maxDamage = -150, radius = 5, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 30, armor = 30, mitigation = 1.10, - { name = "speed", interval = 2000, chance = 15, speedChange = 380, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 380, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -113,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_shaper.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_shaper.lua index 88040cccb23..ba877ecbfe6 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_shaper.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_shaper.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3710 monster.maxHealth = 3710 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -71,7 +70,7 @@ monster.loot = { { name = "brown mushroom", chance = 7000 }, { name = "meat", chance = 12000 }, { name = "platinum coin", chance = 22000, maxCount = 2 }, - { name = "small ruby", chance = 7000, maxCount = 2 } + { name = "small ruby", chance = 7000, maxCount = 2 }, } monster.attacks = { @@ -79,14 +78,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -50, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -100, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -100, radius = 7, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 9, speedChange = -440, effect = CONST_ME_GIANTICE, target = true, duration = 7000 } + { name = "speed", interval = 2000, chance = 9, speedChange = -440, effect = CONST_ME_GIANTICE, target = true, duration = 7000 }, } monster.defenses = { defense = 25, armor = 25, mitigation = 1.30, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -106,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_vampire.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_vampire.lua index ca5dc221e47..5c03a7a7a2c 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_vampire.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_vampire.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3650 monster.maxHealth = 3650 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,13 +72,13 @@ monster.loot = { { name = "vampire shield", chance = 230 }, { name = "grave flower", chance = 1910 }, { name = "special fx box", chance = 1500 }, - { name = "strong health potion", chance = 1500 } + { name = "strong health potion", chance = 1500 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -100, range = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -400, range = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 60000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -400, range = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 60000 }, } monster.defenses = { @@ -88,7 +87,7 @@ monster.defenses = { mitigation = 1.20, { name = "outfit", interval = 4000, chance = 10, effect = CONST_ME_GROUNDSHAKER, target = false, duration = 5000, outfitMonster = "bat" }, { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, target = false }, } monster.elements = { @@ -108,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_werelion.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_werelion.lua index e8bc032dd50..a3a5ba65cee 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_werelion.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_werelion.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 94, lookFeet = 0, lookAddons = 3, - lookMount = 0 + lookMount = 0, } - monster.health = 3880 monster.maxHealth = 3880 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.flags = { @@ -63,21 +62,21 @@ monster.loot = { { name = "onyx chip", chance = 1500 }, { name = "small diamond", chance = 1500, maxCount = 2 }, { name = "special fx box", chance = 1500 }, - { name = "small enchanted ruby", chance = 5000, maxCount = 2 } + { name = "small enchanted ruby", chance = 5000, maxCount = 2 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "werelion wave", interval = 2000, chance = 20, minDamage = -50, maxDamage = -150, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -50, maxDamage = -150, range = 3, effect = CONST_ME_HOLYAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -50, maxDamage = -100, range = 3, shootEffect = CONST_ANI_HOLY, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -50, maxDamage = -100, range = 3, shootEffect = CONST_ANI_HOLY, target = true }, } monster.defenses = { defense = 40, armor = 40, mitigation = 1.40, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_wolf.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_wolf.lua index 5f41a1497e4..1a3a1574703 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_wolf.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_wolf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3640 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,11 +59,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, } monster.defenses = { @@ -89,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_yalahari.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_yalahari.lua index b7ed0295847..c1a36dbd5f7 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_yalahari.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_a_yalahari.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3540 monster.maxHealth = 3540 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -65,11 +64,11 @@ monster.loot = { { id = 37531, chance = 5155 }, -- candy floss { name = "bottle of champagne", chance = 7280 }, { name = "special fx box", chance = 1500 }, - { name = "violet crystal shard", chance = 5000 } + { name = "violet crystal shard", chance = 5000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160 }, } monster.defenses = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_amazon.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_amazon.lua index dc8ece0ee12..85413b81f19 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_amazon.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_amazon.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 95, lookFeet = 115, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3600 monster.maxHealth = 3600 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -64,12 +63,12 @@ monster.loot = { { name = "dagger", chance = 80000 }, { id = 3114, chance = 80000, maxCount = 2 }, -- skull { name = "gold coin", chance = 40000, maxCount = 20 }, - { name = "brown bread", chance = 30000 } + { name = "brown bread", chance = 30000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 5, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 5, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_elf.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_elf.lua index 3f229f60df5..71b875cbf30 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_elf.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_elf.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3440 monster.maxHealth = 3440 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -68,21 +67,21 @@ monster.loot = { { name = "green tunic", chance = 7000 }, { name = "blank rune", chance = 18000 }, { name = "wand of cosmic energy", chance = 1160 }, - { name = "strong mana potion", chance = 3000 } + { name = "strong mana potion", chance = 3000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -30, maxDamage = -50, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -85, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -85, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 15, armor = 15, mitigation = 1.20, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -102,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_insectoid.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_insectoid.lua index 5510ad24d39..3424ca48c4d 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_insectoid.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_insectoid.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3630 monster.maxHealth = 3630 monster.race = "venom" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -66,11 +65,11 @@ monster.loot = { { name = "small emerald", chance = 2880 }, { name = "epee", chance = 560 }, { name = "health potion", chance = 5090 }, - { name = "bottle of champagne", chance = 15380 } + { name = "bottle of champagne", chance = 15380 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -163, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -163, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, } monster.defenses = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_ogre.lua b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_ogre.lua index 4368380c45f..284b560b4cb 100644 --- a/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_ogre.lua +++ b/data-otservbr-global/monster/event_creatures/memory_creatures/memory_of_an_ogre.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 3570 monster.maxHealth = 3570 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -75,20 +74,20 @@ monster.loot = { { name = "white pearl", chance = 530 }, { name = "opal", chance = 5155 }, { name = "bonebreaker", chance = 400 }, - { name = "bottle of champagne", chance = 600 } + { name = "bottle of champagne", chance = 600 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false }, - { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_TELEPORT, target = false } + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_TELEPORT, target = false }, } monster.defenses = { defense = 20, armor = 20, mitigation = 1.30, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -108,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/minishabaal.lua b/data-otservbr-global/monster/event_creatures/minishabaal.lua index 7ee8998ba61..988a8582a4f 100644 --- a/data-otservbr-global/monster/event_creatures/minishabaal.lua +++ b/data-otservbr-global/monster/event_creatures/minishabaal.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Diabolic Imp", chance = 40, interval = 2000, count = 3 } - } + { name = "Diabolic Imp", chance = 40, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -95,13 +95,13 @@ monster.loot = { { id = 3382, chance = 800 }, -- crown legs { id = 3415, chance = 1333 }, -- guardian shield { id = 3019, chance = 909 }, -- demonbone amulet - { id = 3442, chance = 500 } -- tempest shield + { id = 3442, chance = 500 }, -- tempest shield } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 95 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -350, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 3000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -120, maxDamage = -500, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true } + { name = "combat", interval = 3000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -120, maxDamage = -500, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { @@ -110,7 +110,7 @@ monster.defenses = { mitigation = 1.60, { name = "combat", interval = 1000, chance = 50, type = COMBAT_HEALING, minDamage = 155, maxDamage = 255, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 1000, chance = 12, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, - { name = "invisible", interval = 4000, chance = 50, effect = CONST_ME_MAGIC_RED } + { name = "invisible", interval = 4000, chance = 50, effect = CONST_ME_MAGIC_RED }, } monster.elements = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/party_skeleton.lua b/data-otservbr-global/monster/event_creatures/party_skeleton.lua index f10f31923e8..f9d923f154f 100644 --- a/data-otservbr-global/monster/event_creatures/party_skeleton.lua +++ b/data-otservbr-global/monster/event_creatures/party_skeleton.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 40 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,12 +59,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, - { name = "combat", interval = 1000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 1, target = false } + { name = "combat", interval = 1000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 1, target = false }, } monster.defenses = { @@ -90,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/pinata_dragon.lua b/data-otservbr-global/monster/event_creatures/pinata_dragon.lua index 086eadeb42b..055e5e5ed63 100644 --- a/data-otservbr-global/monster/event_creatures/pinata_dragon.lua +++ b/data-otservbr-global/monster/event_creatures/pinata_dragon.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a pinata dragon" monster.experience = 50 monster.outfit = { - lookTypeEx = 25062 + lookTypeEx = 25062, } monster.health = 10000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -43,19 +43,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 3, summons = { - { name = "Demon", chance = 7, interval = 2000, count = 3 } - } + { name = "Demon", chance = 7, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -66,19 +66,17 @@ monster.voices = { { text = "Na Nana Naaa Naaa!", yell = false }, { text = "You'll never get my stuff!", yell = false }, { text = "Do you really want to hurt me?", yell = false }, - { text = "Bring it on!", yell = false } + { text = "Bring it on!", yell = false }, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 1, armor = 1, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, effect = CONST_ME_MORTAREA, target = false }, } monster.elements = { @@ -91,14 +89,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/primitive.lua b/data-otservbr-global/monster/event_creatures/primitive.lua index 471d5f8c4ca..1f7d1267827 100644 --- a/data-otservbr-global/monster/event_creatures/primitive.lua +++ b/data-otservbr-global/monster/event_creatures/primitive.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 1, lookFeet = 1, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -90,14 +90,14 @@ monster.loot = { { name = "studded armor", chance = 7000 }, { name = "studded shield", chance = 1200 }, { id = 6570, chance = 500 }, -- surprise bag - { id = 6571, chance = 500 } -- surprise bag + { id = 6571, chance = 500 }, -- surprise bag } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -32 }, { name = "drunk", interval = 1000, chance = 20, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -20, maxDamage = -20, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "outfit", interval = 1000, chance = 2, radius = 4, effect = CONST_ME_LOSEENERGY, target = false, duration = 10000, outfitMonster = "primitive" } + { name = "outfit", interval = 1000, chance = 2, radius = 4, effect = CONST_ME_LOSEENERGY, target = false, duration = 10000, outfitMonster = "primitive" }, } monster.defenses = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/spectral_scum.lua b/data-otservbr-global/monster/event_creatures/spectral_scum.lua index 21a2b3f6976..ccac602d9be 100644 --- a/data-otservbr-global/monster/event_creatures/spectral_scum.lua +++ b/data-otservbr-global/monster/event_creatures/spectral_scum.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -69,12 +69,11 @@ monster.voices = { { text = "A pirate's unlife for me!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 }, - { name = "drunk", interval = 5000, chance = 10, range = 2, effect = CONST_ME_POFF, target = false } + { name = "drunk", interval = 5000, chance = 10, range = 2, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -100,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/the_halloween_hare.lua b/data-otservbr-global/monster/event_creatures/the_halloween_hare.lua index 7a97d4299b1..07cac277c00 100644 --- a/data-otservbr-global/monster/event_creatures/the_halloween_hare.lua +++ b/data-otservbr-global/monster/event_creatures/the_halloween_hare.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 2000 monster.maxHealth = 2000 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 95 + chance = 95, } monster.strategiesTarget = { @@ -63,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 }, @@ -82,14 +80,14 @@ monster.attacks = { { name = "outfit", interval = 2000, chance = 5, radius = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 6000, outfitMonster = "minotaur mage" }, { name = "outfit", interval = 2000, chance = 5, radius = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 6000, outfitMonster = "green frog" }, { name = "outfit", interval = 2000, chance = 5, radius = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 6000, outfitMonster = "parrot" }, - { name = "outfit", interval = 2000, chance = 15, radius = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 6000, outfitItem = 2096 } + { name = "outfit", interval = 2000, chance = 15, radius = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 6000, outfitItem = 2096 }, } monster.defenses = { defense = 1244, armor = 1244, mitigation = 0.00, - { name = "combat", interval = 1000, chance = 50, type = COMBAT_HEALING, minDamage = 1500, maxDamage = 2000, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 50, type = COMBAT_HEALING, minDamage = 1500, maxDamage = 2000, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -109,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/the_mutated_pumpkin.lua b/data-otservbr-global/monster/event_creatures/the_mutated_pumpkin.lua index 0abb42781b7..5e219736804 100644 --- a/data-otservbr-global/monster/event_creatures/the_mutated_pumpkin.lua +++ b/data-otservbr-global/monster/event_creatures/the_mutated_pumpkin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -89,7 +89,7 @@ monster.loot = { { name = "bar of chocolate", chance = 1000 }, { id = 6570, chance = 1000 }, -- surprise bag { id = 6571, chance = 1000 }, -- surprise bag - { id = 2977, chance = 1000 } -- pumpkinhead + { id = 2977, chance = 1000 }, -- pumpkinhead } monster.attacks = { @@ -100,14 +100,14 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -300, radius = 8, effect = CONST_ME_POFF, target = false }, { name = "combat", interval = 3000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_PLANTATTACK, target = false }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -400, length = 6, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "outfit", interval = 1000, chance = 2, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "The Mutated Pumpkin" } + { name = "outfit", interval = 1000, chance = 2, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "The Mutated Pumpkin" }, } monster.defenses = { defense = 60, armor = 60, mitigation = 1.00, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 2000, maxDamage = 2900, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 2000, maxDamage = 2900, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -127,11 +127,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -139,13 +138,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/event_creatures/undead_minion.lua b/data-otservbr-global/monster/event_creatures/undead_minion.lua index ee50157045d..a982dba6e2b 100644 --- a/data-otservbr-global/monster/event_creatures/undead_minion.lua +++ b/data-otservbr-global/monster/event_creatures/undead_minion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 850 @@ -22,7 +22,7 @@ monster.manaCost = 620 monster.changeTarget = { interval = 5000, - chance = 1 + chance = 1, } monster.strategiesTarget = { @@ -69,12 +69,12 @@ monster.loot = { { name = "battle shield", chance = 1000 }, { name = "guardian shield", chance = 5000 }, { id = 6570, chance = 5538 }, -- surprise bag - { id = 6571, chance = 1538 } -- surprise bag + { id = 6571, chance = 1538 }, -- surprise bag } monster.attacks = { { name = "melee", interval = 1000, chance = 100, minDamage = 0, maxDamage = -248 }, - { name = "combat", interval = 1000, chance = 13, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -160, radius = 4, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 1000, chance = 13, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -160, radius = 4, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { @@ -100,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/extra_dimensional/breach_brood.lua b/data-otservbr-global/monster/extra_dimensional/breach_brood.lua index 53512782da1..a1e6a3291f6 100644 --- a/data-otservbr-global/monster/extra_dimensional/breach_brood.lua +++ b/data-otservbr-global/monster/extra_dimensional/breach_brood.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1235 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Otherworld." + Locations = "Otherworld.", } monster.health = 3500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -102,7 +102,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, range = 6, shootEffect = CONST_ANI_FLASHARROW, effect = CONST_ME_STUN, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -350, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "breach brood reducer", interval = 2000, chance = 20, target = false } + { name = "breach brood reducer", interval = 2000, chance = 20, target = false }, } monster.defenses = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/extra_dimensional/courage_leech.lua b/data-otservbr-global/monster/extra_dimensional/courage_leech.lua index 48c90172afa..4942741341e 100644 --- a/data-otservbr-global/monster/extra_dimensional/courage_leech.lua +++ b/data-otservbr-global/monster/extra_dimensional/courage_leech.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1941 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Furious Crater" + Locations = "Furious Crater", } monster.health = 27000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/extra_dimensional/dread_intruder.lua b/data-otservbr-global/monster/extra_dimensional/dread_intruder.lua index 44e103f766f..d72cea138e7 100644 --- a/data-otservbr-global/monster/extra_dimensional/dread_intruder.lua +++ b/data-otservbr-global/monster/extra_dimensional/dread_intruder.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1260 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Otherworld" + Locations = "Otherworld", } monster.health = 4500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -99,7 +99,7 @@ monster.loot = { { id = 23533, chance = 450 }, -- ring of red plasma { id = 23542, chance = 230 }, -- collar of blue plasma { id = 23543, chance = 230 }, -- collar of green plasma - { id = 23529, chance = 230 } -- ring of blue plasma + { id = 23529, chance = 230 }, -- ring of blue plasma } monster.attacks = { @@ -107,14 +107,14 @@ monster.attacks = { -- energy damage { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -400, maxDamage = -600, radius = 5, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -400, range = 4, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "dread intruder wave", interval = 2000, chance = 25, minDamage = -350, maxDamage = -550, target = false } + { name = "dread intruder wave", interval = 2000, chance = 25, minDamage = -350, maxDamage = -550, target = false }, } monster.defenses = { defense = 50, armor = 50, mitigation = 1.54, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 80, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 80, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -134,7 +134,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/extra_dimensional/instable_breach_brood.lua b/data-otservbr-global/monster/extra_dimensional/instable_breach_brood.lua index b2b599d7b53..6b115858b60 100644 --- a/data-otservbr-global/monster/extra_dimensional/instable_breach_brood.lua +++ b/data-otservbr-global/monster/extra_dimensional/instable_breach_brood.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1265 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Otherworld Dwarf Bridge" + Locations = "Otherworld Dwarf Bridge", } monster.health = 2200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,14 +89,14 @@ monster.loot = { { id = 16121, chance = 3400 }, -- green crystal shard { id = 16125, chance = 3300 }, -- cyan crystal fragment { id = 16124, chance = 2600 }, -- blue crystal splinter - { id = 16119, chance = 2100 } -- blue crystal shard + { id = 16119, chance = 2100 }, -- blue crystal shard } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -160, maxDamage = -250, range = 6, shootEffect = CONST_ANI_FLASHARROW, effect = CONST_ME_STUN, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -200, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "breach brood reducer", interval = 2000, chance = 20, target = false } + { name = "breach brood reducer", interval = 2000, chance = 20, target = false }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/extra_dimensional/instable_sparkion.lua b/data-otservbr-global/monster/extra_dimensional/instable_sparkion.lua index 815ba6f2275..9ad49260b0d 100644 --- a/data-otservbr-global/monster/extra_dimensional/instable_sparkion.lua +++ b/data-otservbr-global/monster/extra_dimensional/instable_sparkion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1264 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Otherworld Dwarf Bridge" + Locations = "Otherworld Dwarf Bridge", } monster.health = 1900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { id = 23504, chance = 4000 }, -- sparkion legs { id = 23505, chance = 3500 }, -- sparkion stings { id = 16124, chance = 2600 }, -- blue crystal splinter - { id = 16119, chance = 2100 } -- blue crystal shard + { id = 16119, chance = 2100 }, -- blue crystal shard } monster.attacks = { @@ -98,7 +98,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -350, length = 6, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -200, range = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, -- energy damage - { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -300, maxDamage = -600, range = 6, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true } + { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -300, maxDamage = -600, range = 6, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.defenses = { armor = 37, mitigation = 1.18, { name = "speed", interval = 2000, chance = 10, speedChange = 360, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/extra_dimensional/reality_reaver.lua b/data-otservbr-global/monster/extra_dimensional/reality_reaver.lua index 10a47c2d1d3..9aaf25be514 100644 --- a/data-otservbr-global/monster/extra_dimensional/reality_reaver.lua +++ b/data-otservbr-global/monster/extra_dimensional/reality_reaver.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1224 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Otherworld" + Locations = "Otherworld", } monster.health = 3900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -98,7 +98,7 @@ monster.loot = { { id = 3036, chance = 370 }, -- violet gem { id = 23529, chance = 370 }, -- ring of blue plasma { id = 23544, chance = 300 }, -- collar of red plasma - { id = 23531, chance = 220 } -- ring of green plasma + { id = 23531, chance = 220 }, -- ring of green plasma } monster.attacks = { @@ -106,7 +106,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -180, maxDamage = -400, range = 5, radius = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_PURPLEENERGY, target = true }, { name = "reality reaver wave", interval = 2000, chance = 20, minDamage = -200, maxDamage = -500, target = false }, -- energy damage - { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -400, maxDamage = -800, radius = 5, effect = CONST_ME_STUN, target = false } + { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -400, maxDamage = -800, radius = 5, effect = CONST_ME_STUN, target = false }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.defenses = { armor = 51, mitigation = 1.76, { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_POFF }, - { name = "speed", interval = 2000, chance = 10, speedChange = 380, effect = CONST_ME_HITAREA, target = false, duration = 8000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 380, effect = CONST_ME_HITAREA, target = false, duration = 8000 }, } monster.elements = { @@ -134,7 +134,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/extra_dimensional/sparkion.lua b/data-otservbr-global/monster/extra_dimensional/sparkion.lua index 710898f0600..f11b76bce6b 100644 --- a/data-otservbr-global/monster/extra_dimensional/sparkion.lua +++ b/data-otservbr-global/monster/extra_dimensional/sparkion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1234 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Otherworld" + Locations = "Otherworld", } monster.health = 2700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -100,7 +100,7 @@ monster.loot = { { id = 23529, chance = 240 }, -- ring of blue plasma { id = 23543, chance = 240 }, -- collar of green plasma { id = 23542, chance = 240 }, -- collar of blue plasma - { id = 23544, chance = 200 } -- collar of red plasma + { id = 23544, chance = 200 }, -- collar of red plasma } monster.attacks = { @@ -108,7 +108,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -400, length = 6, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, range = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, -- energy damage - { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -300, maxDamage = -600, range = 6, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true } + { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -300, maxDamage = -600, range = 6, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.defenses = { armor = 40, mitigation = 1.32, { name = "speed", interval = 2000, chance = 10, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 50, maxDamage = 180, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 50, maxDamage = 180, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -136,7 +136,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/extra_dimensional/stabilizing_dread_intruder.lua b/data-otservbr-global/monster/extra_dimensional/stabilizing_dread_intruder.lua index 799dfa689bc..f51e27ea897 100644 --- a/data-otservbr-global/monster/extra_dimensional/stabilizing_dread_intruder.lua +++ b/data-otservbr-global/monster/extra_dimensional/stabilizing_dread_intruder.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1267 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Otherworld (Edron)" + Locations = "Otherworld (Edron)", } monster.health = 2800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -92,20 +92,20 @@ monster.loot = { { id = 3029, chance = 4400, maxCount = 2 }, -- small sapphire { id = 16120, chance = 4200 }, -- violet crystal shard { id = 3030, chance = 3400, maxCount = 2 }, -- small ruby - { id = 16125, chance = 3300 } -- cyan crystal fragment + { id = 16125, chance = 3300 }, -- cyan crystal fragment } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -300, range = 4, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "dread intruder wave", interval = 2000, chance = 25, minDamage = -350, maxDamage = -450, target = false } + { name = "dread intruder wave", interval = 2000, chance = 25, minDamage = -350, maxDamage = -450, target = false }, } monster.defenses = { defense = 50, armor = 46, mitigation = 1.37, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 80, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 80, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/extra_dimensional/stabilizing_reality_reaver.lua b/data-otservbr-global/monster/extra_dimensional/stabilizing_reality_reaver.lua index cbb91bc8f6b..c43f3f2d52c 100644 --- a/data-otservbr-global/monster/extra_dimensional/stabilizing_reality_reaver.lua +++ b/data-otservbr-global/monster/extra_dimensional/stabilizing_reality_reaver.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1266 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Otherworld (Edron)" + Locations = "Otherworld (Edron)", } monster.health = 2500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -92,14 +92,14 @@ monster.loot = { { id = 16124, chance = 2700, maxCount = 2 }, -- blue crystal splinter { id = 16119, chance = 1900 }, -- blue crystal shard { id = 3039, chance = 1500 }, -- red gem - { id = 8092, chance = 1100 } -- wand of starstorm + { id = 8092, chance = 1100 }, -- wand of starstorm } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -180, maxDamage = -300, range = 5, radius = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_PURPLEENERGY, target = true }, { name = "reality reaver wave", interval = 2000, chance = 20, minDamage = -200, maxDamage = -350, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -80, maxDamage = -200, radius = 3, effect = CONST_ME_STUN, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -80, maxDamage = -200, radius = 3, effect = CONST_ME_STUN, target = false }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.defenses = { mitigation = 1.57, { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_POFF }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 80, maxDamage = 210, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = 330, effect = CONST_ME_HITAREA, target = false, duration = 8000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 330, effect = CONST_ME_HITAREA, target = false, duration = 8000 }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/extra_dimensional/yielothax.lua b/data-otservbr-global/monster/extra_dimensional/yielothax.lua index 86bc35d9793..76b1194cd07 100644 --- a/data-otservbr-global/monster/extra_dimensional/yielothax.lua +++ b/data-otservbr-global/monster/extra_dimensional/yielothax.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 717 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "In another dimension, through a portal in the Raging Mage tower, southern Zao." + Locations = "In another dimension, through a portal in the Raging Mage tower, southern Zao.", } monster.health = 1500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,19 +62,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "IIEEH!! Iiih iih ih iiih!!!", yell = true }, - { text = "Bsssssssm Bssssssm Bsssssssssssm!", yell = true } + { text = "Bsssssssm Bssssssm Bsssssssssssm!", yell = true }, } monster.loot = { @@ -95,7 +95,7 @@ monster.loot = { { name = "shockwave amulet", chance = 571 }, { name = "broken ring of ending", chance = 261 }, { name = "yielowax", chance = 300 }, - { name = "yielocks", chance = 320 } + { name = "yielocks", chance = 320 }, } monster.attacks = { @@ -103,13 +103,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -130, length = 4, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -250, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -70, maxDamage = -120, radius = 3, effect = CONST_ME_HITBYPOISON, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -150, length = 4, spread = 3, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -150, length = 4, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 30, armor = 30, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -122,14 +122,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 50 } + { type = COMBAT_DEATHDAMAGE, percent = 50 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/familiars/druid_familiar.lua b/data-otservbr-global/monster/familiars/druid_familiar.lua index f8f6dc1310a..4e3861b5ba8 100644 --- a/data-otservbr-global/monster/familiars/druid_familiar.lua +++ b/data-otservbr-global/monster/familiars/druid_familiar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20000 @@ -22,7 +22,7 @@ monster.manaCost = 3000 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,7 +50,7 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - familiar = true + familiar = true, } monster.light = { @@ -63,21 +63,20 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -230, maxDamage = -260, range = 5, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_STONES, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -90, maxDamage = -150, length = 2, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "summon challenge", interval = 2000, chance = 40, target = false } + { name = "summon challenge", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 55, armor = 55, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 600, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 600, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { diff --git a/data-otservbr-global/monster/familiars/knight_familiar.lua b/data-otservbr-global/monster/familiars/knight_familiar.lua index fdb6deefb0d..ce507c0af72 100644 --- a/data-otservbr-global/monster/familiars/knight_familiar.lua +++ b/data-otservbr-global/monster/familiars/knight_familiar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 1000 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,7 +50,7 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - familiar = true + familiar = true, } monster.light = { @@ -63,8 +63,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, @@ -73,14 +72,14 @@ monster.attacks = { { name = "combat", interval = 3000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -180, maxDamage = -250, range = 5, radius = 3, effect = CONST_ME_MORTAREA, target = true }, { name = "combat", interval = 3000, chance = 25, type = COMBAT_ICEDAMAGE, minDamage = -180, maxDamage = -250, range = 5, radius = 3, effect = CONST_ME_ICEAREA, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -250, range = 6, radius = 2, effect = CONST_ME_ICETORNADO, target = true }, - { name = "ice strike", interval = 2000, chance = 17, minDamage = -300, maxDamage = -350, range = 5, target = true } + { name = "ice strike", interval = 2000, chance = 17, minDamage = -300, maxDamage = -350, range = 5, target = true }, } monster.defenses = { defense = 55, armor = 55, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 300, maxDamage = 300, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 300, maxDamage = 300, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { diff --git a/data-otservbr-global/monster/familiars/paladin_familiar.lua b/data-otservbr-global/monster/familiars/paladin_familiar.lua index 17bd35a4117..42b4736a1f3 100644 --- a/data-otservbr-global/monster/familiars/paladin_familiar.lua +++ b/data-otservbr-global/monster/familiars/paladin_familiar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 15000 @@ -22,7 +22,7 @@ monster.manaCost = 2000 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,7 +50,7 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - familiar = true + familiar = true, } monster.light = { @@ -63,22 +63,21 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -270, range = 5, radius = 3, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYAREA, target = true }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -270, range = 5, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_FIREDAMAGE, minDamage = -170, maxDamage = -230, range = 5, radius = 5, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_HOLYDAMAGE, minDamage = -170, maxDamage = -230, range = 5, radius = 5, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYAREA, target = true } + { name = "combat", interval = 2000, chance = 18, type = COMBAT_HOLYDAMAGE, minDamage = -170, maxDamage = -230, range = 5, radius = 5, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYAREA, target = true }, } monster.defenses = { defense = 55, armor = 55, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 450, maxDamage = 450, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 450, maxDamage = 450, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { diff --git a/data-otservbr-global/monster/familiars/sorcerer_familiar.lua b/data-otservbr-global/monster/familiars/sorcerer_familiar.lua index 6749ef82b8e..b4685c8763c 100644 --- a/data-otservbr-global/monster/familiars/sorcerer_familiar.lua +++ b/data-otservbr-global/monster/familiars/sorcerer_familiar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20000 @@ -22,7 +22,7 @@ monster.manaCost = 3000 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - familiar = true + familiar = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,20 +63,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -280 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -150, length = 2, spread = 0, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -190, maxDamage = -210, length = 2, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "summon challenge", interval = 2000, chance = 40, target = false } + { name = "summon challenge", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 55, armor = 55, - { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 600, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 600, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -89,14 +88,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/fey/arctic_faun.lua b/data-otservbr-global/monster/fey/arctic_faun.lua index 1d320466ad5..89eb567738c 100644 --- a/data-otservbr-global/monster/fey/arctic_faun.lua +++ b/data-otservbr-global/monster/fey/arctic_faun.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 85, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1626 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Arctic Faun's Island." + Locations = "Arctic Faun's Island.", } monster.health = 300 @@ -33,10 +33,9 @@ monster.corpse = 28811 monster.speed = 105 monster.manaCost = 0 - monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -71,7 +70,6 @@ monster.light = { color = 0, } - monster.voices = { interval = 5000, chance = 10, @@ -97,13 +95,13 @@ monster.loot = { { name = "wood cape", chance = 820 }, { name = "leaf legs", chance = 340 }, { name = "wooden spellbook", chance = 210 }, - { id = 5792, chance = 140 } -- die + { id = 5792, chance = 140 }, -- die } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -129,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/fey/boogy.lua b/data-otservbr-global/monster/fey/boogy.lua index 3d6cdc425a6..997d476acec 100644 --- a/data-otservbr-global/monster/fey/boogy.lua +++ b/data-otservbr-global/monster/fey/boogy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1439 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Feyrist (night time) and its underground (all day)." + Locations = "Feyrist (night time) and its underground (all day).", } monster.health = 1300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,14 +93,14 @@ monster.loot = { { name = "fairy wings", chance = 15000 }, { name = "wooden spellbook", chance = 3440 }, { name = "leaf star", chance = 3440, maxCount = 7 }, - { id = 3727, chance = 4500 } -- wood mushroom + { id = 3727, chance = 4500 }, -- wood mushroom } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, -- bleed { name = "condition", type = CONDITION_BLEEDING, interval = 3000, chance = 11, minDamage = -100, maxDamage = -300, radius = 6, shootEffect = CONST_ANI_WHIRLWINDCLUB, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -115, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -115, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.defenses = { armor = 35, mitigation = 1.24, { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 0, maxDamage = 110, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 0, maxDamage = 110, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/fey/dark_faun.lua b/data-otservbr-global/monster/fey/dark_faun.lua index 8e24e072ee7..cb87fafe89b 100644 --- a/data-otservbr-global/monster/fey/dark_faun.lua +++ b/data-otservbr-global/monster/fey/dark_faun.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1496 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Feyrist (nighttime) and its underground (all day)." + Locations = "Feyrist (nighttime) and its underground (all day).", } monster.health = 1100 @@ -35,14 +35,14 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { nearest = 70, health = 10, damage = 10, - random = 10 + random = 10, } monster.flags = { @@ -96,21 +96,21 @@ monster.loot = { { name = "leaf star", chance = 10000, maxCount = 8 }, { name = "strong health potion", chance = 6800, maxCount = 2 }, { name = "goat grass", chance = 5155 }, - { name = "great health potion", chance = 591 } + { name = "great health potion", chance = 591 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -515 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -115, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, { name = "drunk", interval = 2000, chance = 11, length = 4, spread = 2, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 25000 }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_LEAFSTAR, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_LEAFSTAR, target = false }, } monster.defenses = { defense = 50, armor = 50, mitigation = 1.21, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 85, maxDamage = 105, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 85, maxDamage = 105, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/fey/dryad.lua b/data-otservbr-global/monster/fey/dryad.lua index 4e6d9571ec2..84fab5b28d6 100644 --- a/data-otservbr-global/monster/fey/dryad.lua +++ b/data-otservbr-global/monster/fey/dryad.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 5, lookFeet = 102, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 383 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 3, Locations = "Dryads appear in forest areas of Edron, Port Hope, Carlin and Cormaya during raids in June. \z - There are 5 total waves, the initial one with the raid message and the rest every 15 minutes during next hour." + There are 5 total waves, the initial one with the raid message and the rest every 15 minutes during next hour.", } monster.health = 310 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -79,12 +79,12 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 40000, maxCount = 20 } + { name = "gold coin", chance = 40000, maxCount = 20 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { @@ -110,7 +110,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/fey/faun.lua b/data-otservbr-global/monster/fey/faun.lua index 25cd57a6b94..e0ee663ca07 100644 --- a/data-otservbr-global/monster/fey/faun.lua +++ b/data-otservbr-global/monster/fey/faun.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 62, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1434 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Feyrist (daytime)." + Locations = "Feyrist (daytime).", } monster.health = 900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -97,21 +97,21 @@ monster.loot = { { name = "small stone", chance = 492, maxCount = 3 }, { name = "wood cape", chance = 492 }, { id = 5792, chance = 80 }, -- die - { name = "mandrake", chance = 50 } + { name = "mandrake", chance = 50 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -370 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -115, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, { name = "drunk", interval = 2000, chance = 11, length = 4, spread = 2, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 25000 }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_LEAFSTAR, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_LEAFSTAR, target = false }, } monster.defenses = { defense = 45, armor = 45, mitigation = 1.10, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 75, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 75, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/fey/nymph.lua b/data-otservbr-global/monster/fey/nymph.lua index b921a41315b..91292e7624f 100644 --- a/data-otservbr-global/monster/fey/nymph.lua +++ b/data-otservbr-global/monster/fey/nymph.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1485 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Feyrist" + Locations = "Feyrist", } monster.health = 900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -96,21 +96,21 @@ monster.loot = { { id = 25700, chance = 720 }, -- dream blossom staff { id = 25698, chance = 840 }, -- butterfly ring { id = 25692, chance = 15000, maxCount = 2 }, -- fresh fruit - { id = 237, chance = 1000 } -- strong mana potion + { id = 237, chance = 1000 }, -- strong mana potion } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -205 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -85, maxDamage = -135, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -85, maxDamage = -135, range = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_HEARTS, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -85, maxDamage = -135, range = 7, effect = CONST_ME_HEARTS, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -85, maxDamage = -135, range = 7, effect = CONST_ME_HEARTS, target = true }, } monster.defenses = { defense = 60, armor = 60, mitigation = 1.26, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 75, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 75, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/fey/pixie.lua b/data-otservbr-global/monster/fey/pixie.lua index 7ea91ad7771..73a5c4cbec1 100644 --- a/data-otservbr-global/monster/fey/pixie.lua +++ b/data-otservbr-global/monster/fey/pixie.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1438 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Feyrist." + Locations = "Feyrist.", } monster.health = 770 @@ -35,7 +35,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { { text = "Glamour, glitter, glistering things! Do you have any of those?", yell = false }, { text = "Sweet dreams!", yell = false }, { text = "You might be a threat! I'm sorry but I can't allow you to linger here.", yell = false }, - { text = "Let's try a step or two!", yell = false } + { text = "Let's try a step or two!", yell = false }, } monster.loot = { @@ -97,7 +97,7 @@ monster.loot = { { name = "wild flowers", chance = 5155 }, { name = "great mana potion", chance = 591 }, { name = "dandelion seeds", chance = 5800 }, - { name = "fresh fruit", chance = 3400, maxCount = 2 } + { name = "fresh fruit", chance = 3400, maxCount = 2 }, } monster.attacks = { @@ -105,13 +105,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -85, maxDamage = -135, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "speed", interval = 2000, chance = 11, speedChange = -440, length = 4, spread = 2, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 7000 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -100, range = 4, shootEffect = CONST_ANI_LEAFSTAR, target = false }, - { name = "pixie skill reducer", interval = 2000, chance = 20, target = false } + { name = "pixie skill reducer", interval = 2000, chance = 20, target = false }, } monster.defenses = { defense = 45, armor = 50, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 40, maxDamage = 75, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 40, maxDamage = 75, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -124,14 +124,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, { type = COMBAT_HOLYDAMAGE, percent = 60 }, - { type = COMBAT_DEATHDAMAGE, percent = 30 } + { type = COMBAT_DEATHDAMAGE, percent = 30 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/fey/pooka.lua b/data-otservbr-global/monster/fey/pooka.lua index 316fb62b945..ad1f9dd94ef 100644 --- a/data-otservbr-global/monster/fey/pooka.lua +++ b/data-otservbr-global/monster/fey/pooka.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1435 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Feyrist (daytime)." + Locations = "Feyrist (daytime).", } monster.health = 500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,20 +91,20 @@ monster.loot = { { name = "opal", chance = 5155 }, { name = "shimmering beetles", chance = 591 }, { name = "rainbow quartz", chance = 5800 }, - { name = "small enchanted ruby", chance = 3400, maxCount = 2 } + { name = "small enchanted ruby", chance = 3400, maxCount = 2 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -50, range = 4, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_STONES, target = true }, - { name = "drunk", interval = 2000, chance = 11, length = 4, spread = 2, effect = CONST_ME_STUN, target = false, duration = 5000 } + { name = "drunk", interval = 2000, chance = 11, length = 4, spread = 2, effect = CONST_ME_STUN, target = false, duration = 5000 }, } monster.defenses = { defense = 38, armor = 38, mitigation = 0.99, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/fey/swan_maiden.lua b/data-otservbr-global/monster/fey/swan_maiden.lua index 4ddc1d33cfb..070c31aae70 100644 --- a/data-otservbr-global/monster/fey/swan_maiden.lua +++ b/data-otservbr-global/monster/fey/swan_maiden.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 114, lookFeet = 78, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1437 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Feyrist Meadows" + Locations = "Feyrist Meadows", } monster.health = 800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -97,21 +97,21 @@ monster.loot = { { name = "summer dress", chance = 3400 }, { name = "wild flowers", chance = 3400 }, { name = "boots of haste", chance = 50 }, - { name = "butterfly ring", chance = 100 } + { name = "butterfly ring", chance = 100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -215 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -115, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_MANADRAIN, minDamage = -82, maxDamage = -215, range = 7, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYAREA, target = true }, - { name = "speed", interval = 2000, chance = 11, speedChange = -450, radius = 6, effect = CONST_ME_PIXIE_EXPLOSION, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 11, speedChange = -450, radius = 6, effect = CONST_ME_PIXIE_EXPLOSION, target = false, duration = 5000 }, } monster.defenses = { defense = 54, armor = 54, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 85, maxDamage = 105, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 85, maxDamage = 105, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/fey/tainted_soul.lua b/data-otservbr-global/monster/fey/tainted_soul.lua index f56589f6638..02aef9b6412 100644 --- a/data-otservbr-global/monster/fey/tainted_soul.lua +++ b/data-otservbr-global/monster/fey/tainted_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1137 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Tainted Caves in the Green Claw Swamp." + Locations = "Tainted Caves in the Green Claw Swamp.", } monster.health = 250 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,12 +75,12 @@ monster.voices = { } monster.loot = { - { name = "small ruby", chance = 1000 } + { name = "small ruby", chance = 1000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -37, range = 1, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -37, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { @@ -89,7 +89,7 @@ monster.defenses = { mitigation = 0.46, { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000 } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000 }, } monster.elements = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/fey/twisted_pooka.lua b/data-otservbr-global/monster/fey/twisted_pooka.lua index bf60ce756f8..f240f08ecbe 100644 --- a/data-otservbr-global/monster/fey/twisted_pooka.lua +++ b/data-otservbr-global/monster/fey/twisted_pooka.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1436 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Feyrist (nighttime) and its underground (all day)." + Locations = "Feyrist (nighttime) and its underground (all day).", } monster.health = 700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,7 +91,7 @@ monster.loot = { { name = "shimmering beetles", chance = 591 }, { name = "prismatic quartz", chance = 2500 }, { name = "crystal of focus", chance = 60 }, - { name = "small enchanted ruby", chance = 3400, maxCount = 2 } + { name = "small enchanted ruby", chance = 3400, maxCount = 2 }, } monster.attacks = { @@ -99,14 +99,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -50, range = 4, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_STONES, target = true }, -- earth damage { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -50, maxDamage = -100, range = 3, effect = CONST_ME_POISONAREA, target = true }, - { name = "drunk", interval = 2000, chance = 11, length = 4, spread = 2, effect = CONST_ME_STUN, target = false, duration = 5000 } + { name = "drunk", interval = 2000, chance = 11, length = 4, spread = 2, effect = CONST_ME_STUN, target = false, duration = 5000 }, } monster.defenses = { defense = 38, armor = 41, mitigation = 1.04, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/fey/wisp.lua b/data-otservbr-global/monster/fey/wisp.lua index 70afb8c3942..a7a4f2898e3 100644 --- a/data-otservbr-global/monster/fey/wisp.lua +++ b/data-otservbr-global/monster/fey/wisp.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 462 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "All around Tiquanda and Feyrist. Several groups of Wisps can be found in and around \z the forests north of Edron. West of Hardek. Inside the Cyclops Camp. North of the triple \z Wyvern spawn outside Kazordoon. West of Ab'Dendriel. West of Venore Amazon Camp. \z - A few spawns around Venore, 2 spawn on the Formorgar Glacier, and on Krimhorn." + A few spawns around Venore, 2 spawn on the Formorgar Glacier, and on Krimhorn.", } monster.health = 115 @@ -38,7 +38,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -78,12 +78,12 @@ monster.voices = { } monster.loot = { - { name = "moon backpack", chance = 220 } + { name = "moon backpack", chance = 220 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -3, maxDamage = -7, range = 1, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -3, maxDamage = -7, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { @@ -92,7 +92,7 @@ monster.defenses = { mitigation = 0.43, { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000 } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000 }, } monster.elements = { @@ -112,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/beast_hulking_prehemoth.lua b/data-otservbr-global/monster/giants/beast_hulking_prehemoth.lua index 4791bcce139..3e0b9093791 100644 --- a/data-otservbr-global/monster/giants/beast_hulking_prehemoth.lua +++ b/data-otservbr-global/monster/giants/beast_hulking_prehemoth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 20700 @@ -23,7 +23,7 @@ monster.maxSummons = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,7 +63,7 @@ monster.voices = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -455 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 300, maxDamage = -400, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 300, maxDamage = -400, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { @@ -81,14 +81,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = -20 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/behemoth.lua b/data-otservbr-global/monster/giants/behemoth.lua index a0fceb74a44..f4fd8e1f6e5 100644 --- a/data-otservbr-global/monster/giants/behemoth.lua +++ b/data-otservbr-global/monster/giants/behemoth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 55 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Cyclopolis, deepest part of Tarpit Tomb after the flame, Forbidden Lands, Vandura Mountain, \z Deeper Banuta, Serpentine Tower (unreachable), deep into the Formorgar Mines, Arena and Zoo Quarter, \z - The Dark Path, Lower Spike, Chyllfroest, Medusa Tower and Underground Glooth Factory (west side)." + The Dark Path, Lower Spike, Chyllfroest, Medusa Tower and Underground Glooth Factory (west side).", } monster.health = 4000 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -102,19 +102,19 @@ monster.loot = { { id = 7396, chance = 170 }, -- behemoth trophy { name = "titan axe", chance = 90 }, { name = "great health potion", chance = 5120 }, - { name = "battle stone", chance = 14000 } + { name = "battle stone", chance = 14000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { defense = 45, armor = 50, mitigation = 1.74, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -134,7 +134,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/cyclops.lua b/data-otservbr-global/monster/giants/cyclops.lua index 8392f9f2db9..811c1897400 100644 --- a/data-otservbr-global/monster/giants/cyclops.lua +++ b/data-otservbr-global/monster/giants/cyclops.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 22 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Plains of Havoc, Mount Sternum, Femor Hills, Cyclops Camp, Cyclopolis, Ancient Temple, Shadowthorn, \z - Orc Fort, Mistrock, Foreigner Quarter, Outlaw Camp and in the Cyclops version of the Forsaken Mine. " + Orc Fort, Mistrock, Foreigner Quarter, Outlaw Camp and in the Cyclops version of the Forsaken Mine. ", } monster.health = 260 @@ -36,7 +36,7 @@ monster.manaCost = 490 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,11 +92,11 @@ monster.loot = { { id = 7398, chance = 80 }, -- cyclops trophy { name = "health potion", chance = 210 }, { name = "cyclops toe", chance = 4930 }, - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -105 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -105 }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/cyclops_drone.lua b/data-otservbr-global/monster/giants/cyclops_drone.lua index d1364ecf26b..229d97faa10 100644 --- a/data-otservbr-global/monster/giants/cyclops_drone.lua +++ b/data-otservbr-global/monster/giants/cyclops_drone.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 391 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Cyclopolis, Mount Sternum, Mistrock and in the Cyclops version of the Forsaken Mine." + Locations = "Cyclopolis, Mount Sternum, Mistrock and in the Cyclops version of the Forsaken Mine.", } monster.health = 325 @@ -35,7 +35,7 @@ monster.manaCost = 525 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,12 +88,12 @@ monster.loot = { { name = "meat", chance = 50430, maxCount = 2 }, { id = 7398, chance = 120 }, -- cyclops trophy { name = "strong health potion", chance = 520 }, - { name = "cyclops toe", chance = 6750 } + { name = "cyclops toe", chance = 6750 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -105 }, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -80, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -80, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/cyclops_smith.lua b/data-otservbr-global/monster/giants/cyclops_smith.lua index 3e6a8b05467..51c5d57aee1 100644 --- a/data-otservbr-global/monster/giants/cyclops_smith.lua +++ b/data-otservbr-global/monster/giants/cyclops_smith.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 389 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Cyclopolis second floor and below, Mistrock, Mount Sternum, \z - Cyclops Camp second floor and in the Cyclops version of the Forsaken Mine." + Cyclops Camp second floor and in the Cyclops version of the Forsaken Mine.", } monster.health = 435 @@ -36,7 +36,7 @@ monster.manaCost = 695 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,13 +91,13 @@ monster.loot = { { id = 7398, chance = 140 }, -- cyclops trophy { name = "spiked squelcher", chance = 150 }, { name = "strong health potion", chance = 390 }, - { name = "cyclops toe", chance = 10280 } + { name = "cyclops toe", chance = 10280 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 7, shootEffect = CONST_ANI_WHIRLWINDCLUB, target = false }, - { name = "drunk", interval = 2000, chance = 10, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_STUN, target = false, duration = 4000 } + { name = "drunk", interval = 2000, chance = 10, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_STUN, target = false, duration = 4000 }, } monster.defenses = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/frost_giant.lua b/data-otservbr-global/monster/giants/frost_giant.lua index 352c1c9fcbf..689787a4901 100644 --- a/data-otservbr-global/monster/giants/frost_giant.lua +++ b/data-otservbr-global/monster/giants/frost_giant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 324 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Tyrsung (in the Jotunar mountain), Formorgar Glacier (single spawn), \z - Mammoth Shearing Factory, Chyllfroest." + Mammoth Shearing Factory, Chyllfroest.", } monster.health = 270 @@ -36,7 +36,7 @@ monster.manaCost = 490 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,19 +92,19 @@ monster.loot = { { id = 7441, chance = 2180 }, -- ice cube { name = "norse shield", chance = 250 }, { name = "health potion", chance = 819 }, - { name = "frost giant pelt", chance = 5000 } + { name = "frost giant pelt", chance = 5000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -90, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -90, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { defense = 20, armor = 22, mitigation = 0.46, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/frost_giantess.lua b/data-otservbr-global/monster/giants/frost_giantess.lua index 9820f51a6f6..ab49c3f13d9 100644 --- a/data-otservbr-global/monster/giants/frost_giantess.lua +++ b/data-otservbr-global/monster/giants/frost_giantess.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 334 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Tyrsung (in the Jotunar mountain), Formorgar Glacier (single spawn), \z - Mammoth Shearing Factory, Chyllfroest." + Mammoth Shearing Factory, Chyllfroest.", } monster.health = 275 @@ -36,7 +36,7 @@ monster.manaCost = 490 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { { text = "No run so much, must stay fat!", yell = false }, { text = "H�rre Sjan Flan!", yell = false }, { text = "Damned fast food.", yell = false }, - { text = "Come kiss the cook!", yell = false } + { text = "Come kiss the cook!", yell = false }, } monster.loot = { @@ -91,18 +91,18 @@ monster.loot = { { id = 7441, chance = 2008 }, -- ice cube { name = "norse shield", chance = 320 }, { name = "mana potion", chance = 950 }, - { name = "frost giant pelt", chance = 4800 } + { name = "frost giant pelt", chance = 4800 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -90, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -90, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { defense = 15, armor = 15, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -115,14 +115,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = -3 } + { type = COMBAT_DEATHDAMAGE, percent = -3 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/hulking_prehemoth.lua b/data-otservbr-global/monster/giants/hulking_prehemoth.lua index 4f01356ab0f..24adf51b948 100644 --- a/data-otservbr-global/monster/giants/hulking_prehemoth.lua +++ b/data-otservbr-global/monster/giants/hulking_prehemoth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2271 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Sparkling Pools" + Locations = "Sparkling Pools", } monster.health = 20700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/ogre_brute.lua b/data-otservbr-global/monster/giants/ogre_brute.lua index 37043d5a7b7..26272cc0716 100644 --- a/data-otservbr-global/monster/giants/ogre_brute.lua +++ b/data-otservbr-global/monster/giants/ogre_brute.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1161 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Krailos Steppe." + Locations = "Krailos Steppe.", } monster.health = 1000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -96,20 +96,20 @@ monster.loot = { { id = 22171, chance = 800 }, -- ogre klubba { id = 3465, chance = 500 }, -- pot { id = 8906, chance = 200 }, -- heavily rusted helmet - { id = 22192, chance = 300 } -- shamanic mask + { id = 22192, chance = 300 }, -- shamanic mask } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false }, - { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_TELEPORT, target = false } + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_TELEPORT, target = false }, } monster.defenses = { defense = 20, armor = 41, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/ogre_rowdy.lua b/data-otservbr-global/monster/giants/ogre_rowdy.lua index 7470789e764..c479a8f9c7b 100644 --- a/data-otservbr-global/monster/giants/ogre_rowdy.lua +++ b/data-otservbr-global/monster/giants/ogre_rowdy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1821 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt, Kilmaresh Mountains underground." + Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt, Kilmaresh Mountains underground.", } monster.health = 4500 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_FAFNAR, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,14 +86,14 @@ monster.loot = { { name = "jalapeno pepper", chance = 3760, maxCount = 3 }, { name = "wand of draconia", chance = 2150 }, { name = "wand of everblazing", chance = 1080 }, - { name = "ogre choppa", chance = 540 } + { name = "ogre choppa", chance = 540 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -400, range = 5, radius = 4, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONHIT, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -450, radius = 3, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_FIREDAMAGE, minDamage = -280, maxDamage = -420, range = 3, shootEffect = CONST_ANI_FLAMMINGARROW, target = true } + { name = "combat", interval = 2000, chance = 18, type = COMBAT_FIREDAMAGE, minDamage = -280, maxDamage = -420, range = 3, shootEffect = CONST_ANI_FLAMMINGARROW, target = true }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/ogre_ruffian.lua b/data-otservbr-global/monster/giants/ogre_ruffian.lua index e939453b7b1..fd9ab8232f1 100644 --- a/data-otservbr-global/monster/giants/ogre_ruffian.lua +++ b/data-otservbr-global/monster/giants/ogre_ruffian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1820 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt, Kilmaresh Mountains underground." + Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt, Kilmaresh Mountains underground.", } monster.health = 5500 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_FAFNAR, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,13 +86,13 @@ monster.loot = { { name = "war hammer", chance = 2160 }, { name = "metal spats", chance = 1440 }, { name = "skull fetish", chance = 1440 }, - { name = "stone skin amulet", chance = 4320 } + { name = "stone skin amulet", chance = 4320 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -450, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -350, range = 4, radius = 5, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_POFF, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -350, range = 4, radius = 5, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_POFF, target = true }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/ogre_sage.lua b/data-otservbr-global/monster/giants/ogre_sage.lua index aa015a89676..83bb6ce0b71 100644 --- a/data-otservbr-global/monster/giants/ogre_sage.lua +++ b/data-otservbr-global/monster/giants/ogre_sage.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1822 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt, Kilmaresh Mountains underground." + Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt, Kilmaresh Mountains underground.", } monster.health = 4800 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_FAFNAR, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -74,8 +74,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "Young Goanna", chance = 10, interval = 2000, count = 1 } - } + { name = "Young Goanna", chance = 10, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -92,7 +92,7 @@ monster.loot = { { name = "skull fetish", chance = 9090 }, { name = "terra boots", chance = 4550 }, { name = "bone fetish", chance = 2270 }, - { name = "sacred tree amulet", chance = 1140 } + { name = "sacred tree amulet", chance = 1140 }, } monster.attacks = { @@ -100,14 +100,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 24, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -130, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = true }, { name = "combat", interval = 2000, chance = 16, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -165, range = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -115, maxDamage = -200, range = 7, radius = 3, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -300, range = 7, radius = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = true } + { name = "combat", interval = 2000, chance = 13, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -300, range = 7, radius = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = true }, } monster.defenses = { defense = 93, armor = 93, mitigation = 2.51, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/ogre_savage.lua b/data-otservbr-global/monster/giants/ogre_savage.lua index c849b13ae6a..5adfbc48728 100644 --- a/data-otservbr-global/monster/giants/ogre_savage.lua +++ b/data-otservbr-global/monster/giants/ogre_savage.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1162 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Krailos Steppe." + Locations = "Krailos Steppe.", } monster.health = 1400 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,19 +93,19 @@ monster.loot = { { id = 22191, chance = 1200 }, -- skull fetish { id = 236, chance = 2200, maxCount = 3 }, -- strong health potion { id = 3279, chance = 600 }, -- war hammer - { id = 22192, chance = 300 } -- shamanic mask + { id = 22192, chance = 300 }, -- shamanic mask } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { defense = 20, armor = 32, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/ogre_shaman.lua b/data-otservbr-global/monster/giants/ogre_shaman.lua index 7c3be25789c..332230e478f 100644 --- a/data-otservbr-global/monster/giants/ogre_shaman.lua +++ b/data-otservbr-global/monster/giants/ogre_shaman.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1163 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Krailos Steppe." + Locations = "Krailos Steppe.", } monster.health = 800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -74,8 +74,8 @@ monster.summon = { maxSummons = 2, summons = { { name = "Dworc Fleshhunter", chance = 30, interval = 1000, count = 1 }, - { name = "Terror Bird", chance = 30, interval = 1000, count = 1 } - } + { name = "Terror Bird", chance = 30, interval = 1000, count = 1 }, + }, } monster.voices = { @@ -107,21 +107,21 @@ monster.loot = { { id = 22183, chance = 300 }, -- ogre scepta { id = 22192, chance = 300 }, -- shamanic mask { id = 3002, chance = 100 }, -- voodoo doll - { id = 2965, chance = 100, maxCount = 2 } -- didgeridoo + { id = 2965, chance = 100, maxCount = 2 }, -- didgeridoo } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false }, { name = "outfit", interval = 2000, chance = 8, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "chicken" }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -15, maxDamage = -120, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -15, maxDamage = -120, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, } monster.defenses = { defense = 20, armor = 30, mitigation = 1.04, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -141,7 +141,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/orclops_doomhauler.lua b/data-otservbr-global/monster/giants/orclops_doomhauler.lua index 00429f7dfb9..b963069abc0 100644 --- a/data-otservbr-global/monster/giants/orclops_doomhauler.lua +++ b/data-otservbr-global/monster/giants/orclops_doomhauler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1314 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Desecrated Glade, Edron Orc Cave" + Locations = "Desecrated Glade, Edron Orc Cave", } monster.health = 1700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -98,21 +98,21 @@ monster.loot = { { id = 2966, chance = 910 }, -- war drum { id = 7439, chance = 910 }, -- berserk potion { id = 10457, chance = 910 }, -- beetle necklace - { id = 23811, chance = 300 } -- reinvigorating seeds + { id = 23811, chance = 300 }, -- reinvigorating seeds } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = -117, maxDamage = -220, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true }, -- curse - { name = "condition", type = CONDITION_CURSED, interval = 2000, chance = 50, minDamage = -100, maxDamage = -200, radius = 4, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "condition", type = CONDITION_CURSED, interval = 2000, chance = 50, minDamage = -100, maxDamage = -200, radius = 4, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { defense = 25, armor = 35, mitigation = 1.32, - { name = "speed", interval = 2000, chance = 10, speedChange = 336, effect = CONST_ME_MAGIC_RED, target = false, duration = 2000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 336, effect = CONST_ME_MAGIC_RED, target = false, duration = 2000 }, } monster.elements = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/giants/orclops_ravager.lua b/data-otservbr-global/monster/giants/orclops_ravager.lua index 1d3ea83f9de..2d0ec5a7ee7 100644 --- a/data-otservbr-global/monster/giants/orclops_ravager.lua +++ b/data-otservbr-global/monster/giants/orclops_ravager.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 80, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1320 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Desecrated Glade" + Locations = "Desecrated Glade", } monster.health = 1200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -97,12 +97,12 @@ monster.loot = { { id = 17828, chance = 910 }, -- pair of iron fists { id = 2966, chance = 910 }, -- war drum { id = 7439, chance = 910 }, -- berserk potion - { id = 7419, chance = 300 } -- dreaded cleaver + { id = 7419, chance = 300 }, -- dreaded cleaver } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -220, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -220, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true }, } monster.defenses = { @@ -110,7 +110,7 @@ monster.defenses = { armor = 35, mitigation = 1.24, { name = "speed", interval = 2000, chance = 10, speedChange = 336, effect = CONST_ME_MAGIC_RED, target = false, duration = 2000 }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_HEALING, minDamage = 80, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 17, type = COMBAT_HEALING, minDamage = 80, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/broken_shaper.lua b/data-otservbr-global/monster/humanoids/broken_shaper.lua index 16fa4a493bd..a829ba02969 100644 --- a/data-otservbr-global/monster/humanoids/broken_shaper.lua +++ b/data-otservbr-global/monster/humanoids/broken_shaper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 82, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1321 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Astral Shaper Dungeon, Astral Shaper Ruins, Old Masonry" + Locations = "Astral Shaper Dungeon, Astral Shaper Ruins, Old Masonry", } monster.health = 2200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -99,13 +99,13 @@ monster.loot = { { id = 3098, chance = 2000 }, -- ring of healing { id = 3030, chance = 3000 }, -- small ruby { id = 3029, chance = 5000 }, -- small sapphire - { id = 3725, chance = 6500, maxCount = 5 } -- brown mushroom + { id = 3725, chance = 6500, maxCount = 5 }, -- brown mushroom } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = true }, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, length = 5, spread = 3, effect = CONST_ME_SOUND_RED, target = false } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, length = 5, spread = 3, effect = CONST_ME_SOUND_RED, target = false }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.defenses = { armor = 37, mitigation = 1.46, { name = "speed", interval = 2000, chance = 10, speedChange = 336, effect = CONST_ME_MAGIC_RED, target = false, duration = 2000 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 0, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 0, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/chakoya_toolshaper.lua b/data-otservbr-global/monster/humanoids/chakoya_toolshaper.lua index 8d87ebcb511..e7a68a152a3 100644 --- a/data-otservbr-global/monster/humanoids/chakoya_toolshaper.lua +++ b/data-otservbr-global/monster/humanoids/chakoya_toolshaper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 328 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Inukaya, Chyllfroest, Chakoya Iceberg." + Locations = "Inukaya, Chyllfroest, Chakoya Iceberg.", } monster.health = 80 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -87,12 +87,12 @@ monster.loot = { { name = "green perch", chance = 70 }, { name = "mammoth whopper", chance = 160 }, { id = 7441, chance = 450 }, -- ice cube - { name = "fireproof horn", chance = 390 } + { name = "fireproof horn", chance = 390 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -45, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLSTONE, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -45, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLSTONE, target = true }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/chakoya_tribewarden.lua b/data-otservbr-global/monster/humanoids/chakoya_tribewarden.lua index 72a84a3e906..76ef89e5fbf 100644 --- a/data-otservbr-global/monster/humanoids/chakoya_tribewarden.lua +++ b/data-otservbr-global/monster/humanoids/chakoya_tribewarden.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 319 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Inukaya, Chyllfroest, Chakoya Iceberg, Nibelor (during a quest)." + Locations = "Inukaya, Chyllfroest, Chakoya Iceberg, Nibelor (during a quest).", } monster.health = 68 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -85,11 +85,11 @@ monster.loot = { { name = "rainbow trout", chance = 50 }, { name = "green perch", chance = 100 }, { name = "mammoth whopper", chance = 130 }, - { name = "fireproof horn", chance = 350 } + { name = "fireproof horn", chance = 350 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/chakoya_windcaller.lua b/data-otservbr-global/monster/humanoids/chakoya_windcaller.lua index a3bbfd518a7..e99f6ddb408 100644 --- a/data-otservbr-global/monster/humanoids/chakoya_windcaller.lua +++ b/data-otservbr-global/monster/humanoids/chakoya_windcaller.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 329 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Inukaya, Chyllfroest, Chakoya Iceberg." + Locations = "Inukaya, Chyllfroest, Chakoya Iceberg.", } monster.health = 84 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -84,7 +84,7 @@ monster.loot = { { name = "northern pike", chance = 40 }, { name = "rainbow trout", chance = 40 }, { name = "green perch", chance = 110 }, - { name = "fireproof horn", chance = 410 } + { name = "fireproof horn", chance = 410 }, } monster.attacks = { @@ -92,14 +92,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -16, maxDamage = -32, range = 7, shootEffect = CONST_ANI_ICE, target = false }, -- freeze { name = "condition", type = CONDITION_FREEZING, interval = 2000, chance = 10, minDamage = -130, maxDamage = -160, radius = 3, effect = CONST_ME_ICEAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -9, maxDamage = -30, length = 5, spread = 2, effect = CONST_ME_ICEAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -9, maxDamage = -30, length = 5, spread = 2, effect = CONST_ME_ICEAREA, target = false }, } monster.defenses = { defense = 10, armor = 7, mitigation = 0.38, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/cheese_thief.lua b/data-otservbr-global/monster/humanoids/cheese_thief.lua index 101d5ec108a..3d8676b6a72 100644 --- a/data-otservbr-global/monster/humanoids/cheese_thief.lua +++ b/data-otservbr-global/monster/humanoids/cheese_thief.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 101, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1100 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,19 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { - -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -100 } + { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -100 }, } monster.defenses = { defense = 50, armor = 50, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -94,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/corym_charlatan.lua b/data-otservbr-global/monster/humanoids/corym_charlatan.lua index 4999f93e07a..e9dce8b0055 100644 --- a/data-otservbr-global/monster/humanoids/corym_charlatan.lua +++ b/data-otservbr-global/monster/humanoids/corym_charlatan.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 59, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 916 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Venore Corym Cave, Tiquanda Corym Cave, Corym Black Market, \z - Carlin Corym Cave/Dwarf Mines Diggers Depths Mine, Upper Spike." + Carlin Corym Cave/Dwarf Mines Diggers Depths Mine, Upper Spike.", } monster.health = 250 @@ -36,7 +36,7 @@ monster.manaCost = 490 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -90,11 +90,11 @@ monster.loot = { { name = "earflap", chance = 7142 }, { name = "soft cheese", chance = 12500 }, { name = "rat cheese", chance = 14285 }, - { name = "leather harness", chance = 537 } + { name = "leather harness", chance = 537 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -105 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -105 }, } monster.defenses = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/corym_skirmisher.lua b/data-otservbr-global/monster/humanoids/corym_skirmisher.lua index 5d9dc472190..59980509138 100644 --- a/data-otservbr-global/monster/humanoids/corym_skirmisher.lua +++ b/data-otservbr-global/monster/humanoids/corym_skirmisher.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 83, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 917 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Venore Corym Cave, Tiquanda Corym Cave, Corym Black Market, \z - Carlin Corym Cave/Dwarf Mines Diggers Depths Mine, Upper Spike." + Carlin Corym Cave/Dwarf Mines Diggers Depths Mine, Upper Spike.", } monster.health = 450 @@ -36,7 +36,7 @@ monster.manaCost = 695 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,12 +91,12 @@ monster.loot = { { name = "soft cheese", chance = 14285 }, { name = "rat cheese", chance = 16666 }, { name = "rat god doll", chance = 12 }, - { name = "leather harness", chance = 561 } + { name = "leather harness", chance = 561 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -90, range = 7, shootEffect = CONST_ANI_WHIRLWINDCLUB, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -90, range = 7, shootEffect = CONST_ANI_WHIRLWINDCLUB, target = false }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/corym_vanguard.lua b/data-otservbr-global/monster/humanoids/corym_vanguard.lua index 0d46389a566..3326d290d21 100644 --- a/data-otservbr-global/monster/humanoids/corym_vanguard.lua +++ b/data-otservbr-global/monster/humanoids/corym_vanguard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 121, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 918 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Venore Corym Cave, Tiquanda Corym Cave, Corym Black Market, \z - Carlin Corym Cave/Dwarf Mines Diggers Depths Mine, Upper Spike." + Carlin Corym Cave/Dwarf Mines Diggers Depths Mine, Upper Spike.", } monster.health = 700 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,20 +91,20 @@ monster.loot = { { name = "rat cheese", chance = 14285 }, { name = "rat god doll", chance = 14 }, { name = "leather harness", chance = 1612 }, - { name = "spiky club", chance = 3225 } + { name = "spiky club", chance = 3225 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 }, { name = "corym vanguard wave", interval = 2000, chance = 10, minDamage = -50, maxDamage = -100, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -40, maxDamage = -70, radius = 4, effect = CONST_ME_MORTAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -40, maxDamage = -70, radius = 4, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { defense = 20, armor = 29, mitigation = 0.99, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/crazed_summer_rearguard.lua b/data-otservbr-global/monster/humanoids/crazed_summer_rearguard.lua index 4fe787c10ca..03c8a6000c3 100644 --- a/data-otservbr-global/monster/humanoids/crazed_summer_rearguard.lua +++ b/data-otservbr-global/monster/humanoids/crazed_summer_rearguard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 3, lookFeet = 121, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1733 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Court of Summer, Dream Labyrinth." + Locations = "Court of Summer, Dream Labyrinth.", } monster.health = 5300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,7 +94,7 @@ monster.loot = { { name = "wood cape", chance = 1300 }, { name = "small diamond", chance = 600 }, { name = "yellow gem", chance = 1000 }, - { name = "crystal crossbow", chance = 500 } + { name = "crystal crossbow", chance = 500 }, } monster.attacks = { @@ -102,7 +102,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -270, maxDamage = -710, length = 3, spread = 0, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -380, radius = 5, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 5, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 5, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { @@ -112,7 +112,7 @@ monster.defenses = { } monster.reflects = { - { type = COMBAT_FIREDAMAGE, percent = 70 } + { type = COMBAT_FIREDAMAGE, percent = 70 }, } monster.elements = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/crazed_summer_vanguard.lua b/data-otservbr-global/monster/humanoids/crazed_summer_vanguard.lua index 846c7fc41f3..8c9e3f361fc 100644 --- a/data-otservbr-global/monster/humanoids/crazed_summer_vanguard.lua +++ b/data-otservbr-global/monster/humanoids/crazed_summer_vanguard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 3, lookFeet = 83, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1732 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Court of Summer, Dream Labyrinth." + Locations = "Court of Summer, Dream Labyrinth.", } monster.health = 5500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,7 +92,7 @@ monster.loot = { { name = "wand of draconia", chance = 4800 }, { name = "magma boots", chance = 2900 }, { name = "sun fruit", chance = 900 }, - { name = "bullseye potion", chance = 300 } + { name = "bullseye potion", chance = 300 }, } monster.attacks = { @@ -100,7 +100,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -270, maxDamage = -710, length = 3, spread = 0, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -380, radius = 5, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 5, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 5, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { @@ -110,7 +110,7 @@ monster.defenses = { } monster.reflects = { - { type = COMBAT_FIREDAMAGE, percent = 70 } + { type = COMBAT_FIREDAMAGE, percent = 70 }, } monster.elements = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/crazed_winter_rearguard.lua b/data-otservbr-global/monster/humanoids/crazed_winter_rearguard.lua index 5a53903e100..17fce82c98e 100644 --- a/data-otservbr-global/monster/humanoids/crazed_winter_rearguard.lua +++ b/data-otservbr-global/monster/humanoids/crazed_winter_rearguard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 85, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1731 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Court of Winter, Dream Labyrinth." + Locations = "Court of Winter, Dream Labyrinth.", } monster.health = 5200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,13 +95,13 @@ monster.loot = { { name = "glacier robe", chance = 1930 }, { name = "cyan crystal fragment", chance = 2100 }, { name = "elven amulet", chance = 1260 }, - { name = "blue gem", chance = 330 } + { name = "blue gem", chance = 330 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -110, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -300, radius = 3, effect = CONST_ME_ICEAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_ICE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_ICE, target = false }, } monster.defenses = { @@ -111,7 +111,7 @@ monster.defenses = { } monster.reflects = { - { type = COMBAT_ICEDAMAGE, percent = 70 } + { type = COMBAT_ICEDAMAGE, percent = 70 }, } monster.elements = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/crazed_winter_vanguard.lua b/data-otservbr-global/monster/humanoids/crazed_winter_vanguard.lua index 0bf8ecc437b..b324bd32223 100644 --- a/data-otservbr-global/monster/humanoids/crazed_winter_vanguard.lua +++ b/data-otservbr-global/monster/humanoids/crazed_winter_vanguard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 8, lookFeet = 1, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1730 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Court of Winter, Dream Labyrinth." + Locations = "Court of Winter, Dream Labyrinth.", } monster.health = 5800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,14 +91,14 @@ monster.loot = { { name = "ice rapier", chance = 6250 }, { name = "glacier robe", chance = 2500 }, { name = "elven amulet", chance = 720 }, - { name = "blue gem", chance = 200 } + { name = "blue gem", chance = 200 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -300, radius = 5, effect = CONST_ME_ICEAREA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -240, maxDamage = -300, length = 4, spread = 3, effect = CONST_ME_GIANTICE, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_ICE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_ICE, target = false }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.defenses = { } monster.reflects = { - { type = COMBAT_ICEDAMAGE, percent = 70 } + { type = COMBAT_ICEDAMAGE, percent = 70 }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/dwarf.lua b/data-otservbr-global/monster/humanoids/dwarf.lua index 790de9ff7c9..3aa07ac02c6 100644 --- a/data-otservbr-global/monster/humanoids/dwarf.lua +++ b/data-otservbr-global/monster/humanoids/dwarf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 69 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Kazordoon Dwarf Mines, Dwarf Bridge, deep Elvenbane, Tiquanda Dwarf Cave, Cormaya Dwarf Cave, \z - Island of Destiny (Knights area), Beregar." + Island of Destiny (Knights area), Beregar.", } monster.health = 90 @@ -36,7 +36,7 @@ monster.manaCost = 320 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -85,11 +85,11 @@ monster.loot = { { id = 3505, chance = 8000 }, -- letter { name = "leather legs", chance = 10000 }, { name = "white mushroom", chance = 50000 }, - { name = "iron ore", chance = 700 } + { name = "iron ore", chance = 700 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/dwarf_geomancer.lua b/data-otservbr-global/monster/humanoids/dwarf_geomancer.lua index 487e47fcf0e..0e74ad51a86 100644 --- a/data-otservbr-global/monster/humanoids/dwarf_geomancer.lua +++ b/data-otservbr-global/monster/humanoids/dwarf_geomancer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 66 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Mount Sternum Undead Cave, Dwarf Mines, Circle Room in Kazordoon, Triangle Tower, \z - Tiquanda Dwarf Cave, Cormaya Dwarven Cave, Beregar Mines." + Tiquanda Dwarf Cave, Cormaya Dwarven Cave, Beregar Mines.", } monster.health = 380 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,19 +89,19 @@ monster.loot = { { name = "iron ore", chance = 120 }, { name = "terra boots", chance = 470 }, { name = "geomancer's robe", chance = 8000 }, - { name = "geomancer's staff", chance = 7000 } + { name = "geomancer's staff", chance = 7000 }, } monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -110, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -80, range = 7, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -80, range = 7, target = false }, } monster.defenses = { defense = 15, armor = 15, mitigation = 0.91, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_HEALING, minDamage = 75, maxDamage = 125, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_HEALING, minDamage = 75, maxDamage = 125, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/dwarf_guard.lua b/data-otservbr-global/monster/humanoids/dwarf_guard.lua index c8010e8d6a0..659020748b4 100644 --- a/data-otservbr-global/monster/humanoids/dwarf_guard.lua +++ b/data-otservbr-global/monster/humanoids/dwarf_guard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 70 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Kazordoon Dwarf Mines, Dwacatra, Ferngrims Gate, Cyclopolis, Mount Sternum Undead Cave, \z - Stonehome Rotworm cave (near Edron), Maze of Lost Souls, Tiquanda Dwarf Cave, Beregar, Cormaya Dwarf Cave." + Stonehome Rotworm cave (near Edron), Maze of Lost Souls, Tiquanda Dwarf Cave, Beregar, Cormaya Dwarf Cave.", } monster.health = 245 @@ -36,7 +36,7 @@ monster.manaCost = 650 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,11 +89,11 @@ monster.loot = { { name = "white mushroom", chance = 55000, maxCount = 2 }, { name = "iron ore", chance = 510 }, { name = "health potion", chance = 380 }, - { id = 12600, chance = 280 } -- coal + { id = 12600, chance = 280 }, -- coal } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/dwarf_henchman.lua b/data-otservbr-global/monster/humanoids/dwarf_henchman.lua index 90611a79ffd..cb28457f885 100644 --- a/data-otservbr-global/monster/humanoids/dwarf_henchman.lua +++ b/data-otservbr-global/monster/humanoids/dwarf_henchman.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 93, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 379 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Kazordoon Underground" + Locations = "Kazordoon Underground", } monster.health = 350 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,11 +76,10 @@ monster.voices = { { text = "We have license to kill!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, --drown --envenom } @@ -108,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/dwarf_miner.lua b/data-otservbr-global/monster/humanoids/dwarf_miner.lua index 86166ee509a..bca12fdc68b 100644 --- a/data-otservbr-global/monster/humanoids/dwarf_miner.lua +++ b/data-otservbr-global/monster/humanoids/dwarf_miner.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 97, lookFeet = 115, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 120 monster.maxHealth = 120 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 420 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -74,11 +73,11 @@ monster.loot = { { id = 3456, chance = 11111 }, -- pick { name = "leather legs", chance = 9090 }, { name = "meat", chance = 3846 }, - { name = "iron ore", chance = 793 } + { name = "iron ore", chance = 793 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, } monster.defenses = { @@ -104,7 +103,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/dwarf_soldier.lua b/data-otservbr-global/monster/humanoids/dwarf_soldier.lua index 274629e9469..1ec0276d73c 100644 --- a/data-otservbr-global/monster/humanoids/dwarf_soldier.lua +++ b/data-otservbr-global/monster/humanoids/dwarf_soldier.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 71 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Kazordoon Dwarf Mines, Cyclopolis, Dwacatra, Ferngrims Gate, Dwarf Bridge, \z - Mount Sternum Undead Cave, Beregar, Tiquanda Dwarf Cave, Cormaya Dwarf Cave." + Mount Sternum Undead Cave, Beregar, Tiquanda Dwarf Cave, Cormaya Dwarf Cave.", } monster.health = 135 @@ -36,7 +36,7 @@ monster.manaCost = 360 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,12 +86,12 @@ monster.loot = { { id = 3457, chance = 10000 }, -- shovel { name = "white mushroom", chance = 40000, maxCount = 3 }, { name = "iron ore", chance = 300 }, - { name = "piercing bolt", chance = 4000, maxCount = 3 } + { name = "piercing bolt", chance = 4000, maxCount = 3 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -60, range = 7, shootEffect = CONST_ANI_BOLT, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -60, range = 7, shootEffect = CONST_ANI_BOLT, target = false }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/dworc_fleshhunter.lua b/data-otservbr-global/monster/humanoids/dworc_fleshhunter.lua index d22fbb5556a..cc9e12dfbbf 100644 --- a/data-otservbr-global/monster/humanoids/dworc_fleshhunter.lua +++ b/data-otservbr-global/monster/humanoids/dworc_fleshhunter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 215 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "South of Port Hope (Trapwood) on ground level and underground." + Locations = "South of Port Hope (Trapwood) on ground level and underground.", } monster.health = 85 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -84,12 +84,12 @@ monster.loot = { { name = "cleaver", chance = 9750 }, { name = "ripper lance", chance = 90 }, { name = "hunting spear", chance = 2000 }, - { name = "tribal mask", chance = 500 } + { name = "tribal mask", chance = 500 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -15, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -15, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/dworc_venomsniper.lua b/data-otservbr-global/monster/humanoids/dworc_venomsniper.lua index 13984328668..94495f9356b 100644 --- a/data-otservbr-global/monster/humanoids/dworc_venomsniper.lua +++ b/data-otservbr-global/monster/humanoids/dworc_venomsniper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 216 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "South of Port Hope (Trapwood) on ground level and underground and on Foreigner Quarter of Yalahar." + Locations = "South of Port Hope (Trapwood) on ground level and underground and on Foreigner Quarter of Yalahar.", } monster.health = 80 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -85,13 +85,13 @@ monster.loot = { { name = "poison arrow", chance = 5000, maxCount = 3 }, { name = "tribal mask", chance = 510 }, { name = "bast skirt", chance = 100 }, - { name = "seeds", chance = 200 } + { name = "seeds", chance = 200 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -20, maxDamage = -40, range = 5, shootEffect = CONST_ANI_POISON, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -20, maxDamage = -40, range = 5, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/dworc_voodoomaster.lua b/data-otservbr-global/monster/humanoids/dworc_voodoomaster.lua index 2504cc26cff..9a9770186f3 100644 --- a/data-otservbr-global/monster/humanoids/dworc_voodoomaster.lua +++ b/data-otservbr-global/monster/humanoids/dworc_voodoomaster.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 214 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "South of Port Hope around Trapwood. There is also a group of 3 voodoomasters \z - and 2 crypt shamblers on the shore east of Trapwood." + and 2 crypt shamblers on the shore east of Trapwood.", } monster.health = 80 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { name = "leather armor", chance = 10000 }, { id = 3002, chance = 130 }, -- voodoo doll { name = "tribal mask", chance = 500 }, - { name = "health potion", chance = 600 } + { name = "health potion", chance = 600 }, } monster.attacks = { @@ -97,7 +97,7 @@ monster.attacks = { { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_TELEPORT, target = false }, { name = "outfit", interval = 2000, chance = 10, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 5000, outfitMonster = "chicken" }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -6, maxDamage = -18, radius = 6, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "poisonfield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true } + { name = "poisonfield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.defenses = { mitigation = 0.20, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 3, maxDamage = 9, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/elf.lua b/data-otservbr-global/monster/humanoids/elf.lua index bd842edf13a..d7ae1164a58 100644 --- a/data-otservbr-global/monster/humanoids/elf.lua +++ b/data-otservbr-global/monster/humanoids/elf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 62 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Yalahar Foreigner Quarter and Trade Quarter, Maze of Lost Souls, Orc Fort (unreachable), \z - Hellgate, Shadowthorn, Ab'Dendriel elf caves, Elvenbane, north of Thais." + Hellgate, Shadowthorn, Ab'Dendriel elf caves, Elvenbane, north of Thais.", } monster.health = 100 @@ -36,7 +36,7 @@ monster.manaCost = 320 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -88,12 +88,12 @@ monster.loot = { { name = "leather boots", chance = 11410 }, { id = 5921, chance = 940 }, -- heaven blossom { name = "plum", chance = 20000, maxCount = 2 }, - { name = "elvish talisman", chance = 2100 } + { name = "elvish talisman", chance = 2100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -25, range = 7, shootEffect = CONST_ANI_ARROW, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -25, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/elf_arcanist.lua b/data-otservbr-global/monster/humanoids/elf_arcanist.lua index cf162412c8b..b8fa53e3c56 100644 --- a/data-otservbr-global/monster/humanoids/elf_arcanist.lua +++ b/data-otservbr-global/monster/humanoids/elf_arcanist.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 63 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Yalahar Foreigner Quarter, Demona, Shadowthorn, northwest of Ab'Dendriel, Maze of Lost Souls, \z - Cyclopolis, Elvenbane, near Mount Sternum." + Cyclopolis, Elvenbane, near Mount Sternum.", } monster.health = 220 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -99,21 +99,21 @@ monster.loot = { { name = "strong mana potion", chance = 3000 }, { name = "health potion", chance = 4000 }, { name = "elvish talisman", chance = 10000 }, - { name = "elven astral observer", chance = 7710 } + { name = "elven astral observer", chance = 7710 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -30, maxDamage = -50, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -85, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -85, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 15, armor = 15, mitigation = 0.51, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/elf_overseer.lua b/data-otservbr-global/monster/humanoids/elf_overseer.lua index a0302499899..ea6a2c4360e 100644 --- a/data-otservbr-global/monster/humanoids/elf_overseer.lua +++ b/data-otservbr-global/monster/humanoids/elf_overseer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 114, lookFeet = 116, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 741 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Shadowthorn" + Locations = "Shadowthorn", } monster.health = 220 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -98,21 +98,21 @@ monster.loot = { { name = "strong mana potion", chance = 3000 }, { name = "health potion", chance = 4000 }, { name = "elvish talisman", chance = 10000 }, - { name = "elven astral observer", chance = 7710 } + { name = "elven astral observer", chance = 7710 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -94 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -120, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -80, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -135, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -135, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 15, armor = 15, mitigation = 0.51, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/elf_scout.lua b/data-otservbr-global/monster/humanoids/elf_scout.lua index 19cf956e9e3..4caf78895aa 100644 --- a/data-otservbr-global/monster/humanoids/elf_scout.lua +++ b/data-otservbr-global/monster/humanoids/elf_scout.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 64 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Yalahar Foreigner Quarter, Shadowthorn, northwest of Ab'Dendriel, north and west of Mount Sternum, \z Hellgate, Maze of Lost Souls, near Knightwatch Tower in the Plains of Havoc. \z - Two may also spawn when a Desperate White Deer or an Enraged White Deer is killed." + Two may also spawn when a Desperate White Deer or an Enraged White Deer is killed.", } monster.health = 160 @@ -37,7 +37,7 @@ monster.manaCost = 360 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,12 +90,12 @@ monster.loot = { { id = 5921, chance = 1130 }, -- heaven blossom { name = "elvish bow", chance = 140 }, { name = "elvish talisman", chance = 5200 }, - { name = "elven scouting glass", chance = 9750 } + { name = "elven scouting glass", chance = 9750 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -80, range = 7, shootEffect = CONST_ANI_ARROW, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -80, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/elite_pirat.lua b/data-otservbr-global/monster/humanoids/elite_pirat.lua index 549e3a7d327..48738c82446 100644 --- a/data-otservbr-global/monster/humanoids/elite_pirat.lua +++ b/data-otservbr-global/monster/humanoids/elite_pirat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -76,17 +76,17 @@ monster.loot = { { id = 17820, chance = 14285 }, -- soft cheese { id = 17821, chance = 14285 }, -- rat cheese { id = 820, chance = 1612 }, -- lightning boots - { id = 818, chance = 3225 } -- magma boots + { id = 818, chance = 3225 }, -- magma boots } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 400, maxDamage = -210 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 80, maxDamage = -110, range = 7, shootEffect = CONST_ANI_WHIRLWINDCLUB, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 80, maxDamage = -110, range = 7, shootEffect = CONST_ANI_WHIRLWINDCLUB, target = false }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, -- mitigation = ???, } @@ -107,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/enslaved_dwarf.lua b/data-otservbr-global/monster/humanoids/enslaved_dwarf.lua index 2ad238ccdac..24276210aff 100644 --- a/data-otservbr-global/monster/humanoids/enslaved_dwarf.lua +++ b/data-otservbr-global/monster/humanoids/enslaved_dwarf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 886 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Caves of the Lost and Lower Spike." + Locations = "Caves of the Lost and Lower Spike.", } monster.health = 3800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -103,7 +103,7 @@ monster.loot = { { name = "green crystal splinter", chance = 3110 }, { name = "brown crystal splinter", chance = 5630, maxCount = 2 }, { name = "red crystal fragment", chance = 3690 }, - { name = "drill bolt", chance = 3690, maxCount = 5 } + { name = "drill bolt", chance = 3690, maxCount = 5 }, } monster.attacks = { @@ -112,14 +112,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -250, range = 7, radius = 3, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONHIT, target = true }, { name = "drunk", interval = 2000, chance = 20, radius = 5, effect = CONST_ME_BLOCKHIT, target = false, duration = 6000 }, { name = "enslaved dwarf skill reducer 1", interval = 2000, chance = 5, target = false }, - { name = "enslaved dwarf skill reducer 2", interval = 2000, chance = 5, target = false } + { name = "enslaved dwarf skill reducer 2", interval = 2000, chance = 5, target = false }, } monster.defenses = { defense = 30, armor = 60, mitigation = 1.88, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 396, maxDamage = 478, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 396, maxDamage = 478, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -139,7 +139,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/execowtioner.lua b/data-otservbr-global/monster/humanoids/execowtioner.lua index 1f5f267e9f3..77b37dcd9c8 100644 --- a/data-otservbr-global/monster/humanoids/execowtioner.lua +++ b/data-otservbr-global/monster/humanoids/execowtioner.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1046 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Oramond Mountain Hideout, Oramond Minotaur Camp (northern camp), \z - Underground Glooth Factory, Oramond Dungeon." + Underground Glooth Factory, Oramond Dungeon.", } monster.health = 3500 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 4 + chance = 4, } monster.strategiesTarget = { @@ -60,12 +60,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { { text = "Justice is swift and unavoidable!", yell = false }, { text = "I'll bring justice!", yell = false }, { text = "There is excellence in execution!", yell = false }, - { text = "Your sentence is death!", yell = false } + { text = "Your sentence is death!", yell = false }, } monster.loot = { @@ -97,18 +97,18 @@ monster.loot = { { id = 21176, chance = 1420 }, -- execowtioner axe { id = 3318, chance = 770 }, -- knight axe { id = 7413, chance = 390 }, -- titan axe - { id = 7401, chance = 520 } -- minotaur trophy + { id = 7401, chance = 520 }, -- minotaur trophy } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 80 }, { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -135, maxDamage = -280, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -200, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -200, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { defense = 40, - armor = 40 + armor = 40, } monster.elements = { @@ -121,14 +121,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 15 } + { type = COMBAT_DEATHDAMAGE, percent = 15 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/firestarter.lua b/data-otservbr-global/monster/humanoids/firestarter.lua index 95a9684b9c3..fc8f9fcac9d 100644 --- a/data-otservbr-global/monster/humanoids/firestarter.lua +++ b/data-otservbr-global/monster/humanoids/firestarter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 78, lookFeet = 79, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 737 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 2, - Locations = "Shadowthorn, during the Thornfire World Change." + Locations = "Shadowthorn, during the Thornfire World Change.", } monster.health = 180 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -89,13 +89,13 @@ monster.loot = { { name = "flaming arrow", chance = 30000, maxCount = 12 }, { name = "elvish talisman", chance = 5000 }, { id = 12600, chance = 15280 }, -- coal - { name = "flintstone", chance = 340 } + { name = "flintstone", chance = 340 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -21, radius = 1, shootEffect = CONST_ANI_BURSTARROW, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "firefield", interval = 2000, chance = 10, radius = 1, shootEffect = CONST_ANI_FIRE, target = true } + { name = "firefield", interval = 2000, chance = 10, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/frost_troll.lua b/data-otservbr-global/monster/humanoids/frost_troll.lua index 30326388bde..b4eb9a60c88 100644 --- a/data-otservbr-global/monster/humanoids/frost_troll.lua +++ b/data-otservbr-global/monster/humanoids/frost_troll.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 53 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Ice Islands, Svargrond and Edron." + Locations = "Ice Islands, Svargrond and Edron.", } monster.health = 55 @@ -35,7 +35,7 @@ monster.manaCost = 300 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -82,11 +82,11 @@ monster.loot = { { id = 3412, chance = 15850 }, -- wooden shield { name = "coat", chance = 1200 }, { id = 3578, chance = 18000 }, -- fish - { name = "frosty ear of a troll", chance = 2000 } + { name = "frosty ear of a troll", chance = 2000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, } monster.defenses = { @@ -112,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/furious_orc_berserker.lua b/data-otservbr-global/monster/humanoids/furious_orc_berserker.lua index dafef85a518..5211cd9eeb6 100644 --- a/data-otservbr-global/monster/humanoids/furious_orc_berserker.lua +++ b/data-otservbr-global/monster/humanoids/furious_orc_berserker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 210 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.voices = { monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 }, } monster.defenses = { defense = 2, - armor = 1 + armor = 1, } monster.elements = { @@ -81,14 +81,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = true } + { type = "bleed", condition = true }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/furious_troll.lua b/data-otservbr-global/monster/humanoids/furious_troll.lua index 815fe12bf0f..4f438ebb8ac 100644 --- a/data-otservbr-global/monster/humanoids/furious_troll.lua +++ b/data-otservbr-global/monster/humanoids/furious_troll.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 540 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 1, - Locations = "Old Beregar mines." + Locations = "Old Beregar mines.", } monster.health = 245 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -70,8 +70,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Mechanical Fighter", chance = 90, interval = 2000, count = 2 } - } + { name = "Mechanical Fighter", chance = 90, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -85,11 +85,11 @@ monster.loot = { { name = "gold coin", chance = 93000, maxCount = 146 }, { name = "platinum coin", chance = 6000 }, { name = "war hammer", chance = 750 }, - { name = "bunch of troll hair", chance = 4400 } + { name = "bunch of troll hair", chance = 4400 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/glooth_powered_minotaur.lua b/data-otservbr-global/monster/humanoids/glooth_powered_minotaur.lua index c7a398b9257..084000ef41a 100644 --- a/data-otservbr-global/monster/humanoids/glooth_powered_minotaur.lua +++ b/data-otservbr-global/monster/humanoids/glooth_powered_minotaur.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,20 +60,19 @@ monster.voices = { { text = "POOOWEEER!", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -290 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, radius = 3, effect = CONST_ME_HITAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -225, range = 7, radius = 4, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -225, range = 7, radius = 4, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { defense = 45, armor = 40, -- mitigation = ???, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 145, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 145, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/goblin.lua b/data-otservbr-global/monster/humanoids/goblin.lua index 3fa4cbcdd19..20d96f107af 100644 --- a/data-otservbr-global/monster/humanoids/goblin.lua +++ b/data-otservbr-global/monster/humanoids/goblin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 61 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 1, Occurrence = 0, Locations = "Femor Hills, north east of Carlin, Edron Goblin Cave, Rookgaard (Premium Area), \z - Maze of Lost Souls and Fenrock." + Maze of Lost Souls and Fenrock.", } monster.health = 50 @@ -36,7 +36,7 @@ monster.manaCost = 290 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -90,12 +90,12 @@ monster.loot = { { name = "leather armor", chance = 2510 }, { name = "small axe", chance = 9700 }, { id = 3578, chance = 12750 }, -- fish - { name = "goblin ear", chance = 910 } + { name = "goblin ear", chance = 910 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -25, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -25, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/goblin_assassin.lua b/data-otservbr-global/monster/humanoids/goblin_assassin.lua index 8a9208a8708..81be68826f7 100644 --- a/data-otservbr-global/monster/humanoids/goblin_assassin.lua +++ b/data-otservbr-global/monster/humanoids/goblin_assassin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 463 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Femor Hills, Edron Goblin Cave and Fenrock." + Locations = "Femor Hills, Edron Goblin Cave and Fenrock.", } monster.health = 75 @@ -35,7 +35,7 @@ monster.manaCost = 360 monster.changeTarget = { interval = 10000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -88,13 +88,13 @@ monster.loot = { { name = "leather helmet", chance = 13000 }, { name = "leather armor", chance = 7240 }, { name = "small axe", chance = 9800 }, - { id = 3578, chance = 12400 } -- fish + { id = 3578, chance = 12400 }, -- fish } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, { name = "drunk", interval = 2000, chance = 10, shootEffect = CONST_ANI_POISON, target = false, duration = 10000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -35, range = 6, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -35, range = 6, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { @@ -102,7 +102,7 @@ monster.defenses = { armor = 6, mitigation = 0.15, { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, - { name = "speed", interval = 2000, chance = 15, speedChange = 100, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 100, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/goblin_leader.lua b/data-otservbr-global/monster/humanoids/goblin_leader.lua index 67f886c2e21..0f6f5d62a44 100644 --- a/data-otservbr-global/monster/humanoids/goblin_leader.lua +++ b/data-otservbr-global/monster/humanoids/goblin_leader.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 377 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 30, Stars = 2, Occurrence = 3, - Locations = "Way to Beregar, below Femor Hills (Tower Defence Quest), near Femor Hills during Goblin raid." + Locations = "Way to Beregar, below Femor Hills (Tower Defence Quest), near Femor Hills during Goblin raid.", } monster.health = 50 @@ -35,7 +35,7 @@ monster.manaCost = 290 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,12 +86,12 @@ monster.loot = { { name = "leather helmet", chance = 16670 }, { name = "leather armor", chance = 5000 }, { name = "small axe", chance = 12800 }, - { id = 3578, chance = 15000 } -- fish + { id = 3578, chance = 15000 }, -- fish } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -45, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -45, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/goblin_scavenger.lua b/data-otservbr-global/monster/humanoids/goblin_scavenger.lua index 4b0b0a90267..7bb4951248b 100644 --- a/data-otservbr-global/monster/humanoids/goblin_scavenger.lua +++ b/data-otservbr-global/monster/humanoids/goblin_scavenger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 464 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Femor Hills, Edron Goblin Cave, and Fenrock." + Locations = "Femor Hills, Edron Goblin Cave, and Fenrock.", } monster.health = 60 @@ -35,7 +35,7 @@ monster.manaCost = 310 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,21 +88,21 @@ monster.loot = { { name = "leather helmet", chance = 10180 }, { name = "leather armor", chance = 7700 }, { name = "small axe", chance = 9790 }, - { id = 3578, chance = 13640 } -- fish + { id = 3578, chance = 13640 }, -- fish } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -30, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_LIFEDRAIN, minDamage = -22, maxDamage = -30, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -1, maxDamage = -30, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -1, maxDamage = -30, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, } monster.defenses = { defense = 15, armor = 7, mitigation = 0.23, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 16, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 16, effect = CONST_ME_ENERGYHIT, target = false }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/insane_siren.lua b/data-otservbr-global/monster/humanoids/insane_siren.lua index e25a6e94595..1ded28143d0 100644 --- a/data-otservbr-global/monster/humanoids/insane_siren.lua +++ b/data-otservbr-global/monster/humanoids/insane_siren.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 79, lookFeet = 4, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 1735 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Court of Summer." + Locations = "Court of Summer.", } monster.health = 6500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { name = "wand of dragonbreath", chance = 2650 }, { name = "sun fruit", chance = 2570 }, { name = "magma legs", chance = 1200 }, - { name = "magma monocle", chance = 260 } + { name = "magma monocle", chance = 260 }, } monster.attacks = { @@ -98,7 +98,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -270, maxDamage = -710, length = 3, spread = 0, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -380, radius = 5, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 5, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 5, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/island_troll.lua b/data-otservbr-global/monster/humanoids/island_troll.lua index 6650b27c96a..f22c8d41ecc 100644 --- a/data-otservbr-global/monster/humanoids/island_troll.lua +++ b/data-otservbr-global/monster/humanoids/island_troll.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 277 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Goroma." + Locations = "Goroma.", } monster.health = 50 @@ -35,7 +35,7 @@ monster.manaCost = 290 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -89,11 +89,11 @@ monster.loot = { { name = "leather boots", chance = 10500 }, { name = "mango", chance = 5000 }, { id = 5901, chance = 30000 }, -- wood - { name = "marlin", chance = 40 } + { name = "marlin", chance = 40 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/little_corym_charlatan.lua b/data-otservbr-global/monster/humanoids/little_corym_charlatan.lua index 501cedeac4a..24e41e50aba 100644 --- a/data-otservbr-global/monster/humanoids/little_corym_charlatan.lua +++ b/data-otservbr-global/monster/humanoids/little_corym_charlatan.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 80, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 920 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 1, - Locations = "Venore marshes." + Locations = "Venore marshes.", } monster.health = 90 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,11 +75,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, } monster.defenses = { @@ -105,7 +104,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/lost_basher.lua b/data-otservbr-global/monster/humanoids/lost_basher.lua index f471fe7d13e..e19aef97f78 100644 --- a/data-otservbr-global/monster/humanoids/lost_basher.lua +++ b/data-otservbr-global/monster/humanoids/lost_basher.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 925 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Caves of the Lost, Lower Spike and in the Lost Dwarf version of the Forsaken Mine." + Locations = "Caves of the Lost, Lower Spike and in the Lost Dwarf version of the Forsaken Mine.", } monster.health = 2600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -101,21 +101,21 @@ monster.loot = { { name = "buckle", chance = 10930 }, { name = "bonecarving knife", chance = 7320 }, { name = "basalt fetish", chance = 8800 }, - { name = "basalt figurine", chance = 9470 } + { name = "basalt figurine", chance = 9470 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -351 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -220, range = 7, radius = 3, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true }, { name = "drunk", interval = 2000, chance = 15, radius = 4, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_SOUND_RED, target = true, duration = 6000 }, - { name = "speed", interval = 2000, chance = 15, speedChange = -650, radius = 2, effect = CONST_ME_ENERGYHIT, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -650, radius = 2, effect = CONST_ME_ENERGYHIT, target = false, duration = 15000 }, } monster.defenses = { defense = 30, armor = 57, mitigation = 1.62, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 250, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 250, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -135,7 +135,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/lost_berserker.lua b/data-otservbr-global/monster/humanoids/lost_berserker.lua index 8570ef328ab..cd48787df95 100644 --- a/data-otservbr-global/monster/humanoids/lost_berserker.lua +++ b/data-otservbr-global/monster/humanoids/lost_berserker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 888 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Warzones 2 and 3." + Locations = "Warzones 2 and 3.", } monster.health = 5900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -104,7 +104,7 @@ monster.loot = { { name = "brown crystal splinter", chance = 7540, maxCount = 2 }, { name = "blue crystal splinter", chance = 4610 }, { name = "green crystal fragment", chance = 6870 }, - { name = "drill bolt", chance = 8210, maxCount = 10 } + { name = "drill bolt", chance = 8210, maxCount = 10 }, } monster.attacks = { @@ -113,14 +113,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -250, range = 7, radius = 3, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONAREA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -150, maxDamage = -250, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, { name = "speed", interval = 2000, chance = 10, speedChange = -800, radius = 2, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, - { name = "drunk", interval = 2000, chance = 10, radius = 4, effect = CONST_ME_STUN, target = true, duration = 6000 } + { name = "drunk", interval = 2000, chance = 10, radius = 4, effect = CONST_ME_STUN, target = true, duration = 6000 }, } monster.defenses = { defense = 40, armor = 80, mitigation = 2.40, - { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_TELEPORT } + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_TELEPORT }, } monster.elements = { @@ -140,7 +140,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/lost_exile.lua b/data-otservbr-global/monster/humanoids/lost_exile.lua index 2c9ef252332..8fc53213306 100644 --- a/data-otservbr-global/monster/humanoids/lost_exile.lua +++ b/data-otservbr-global/monster/humanoids/lost_exile.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1529 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "South east of the Gnome Deep Hub's entrance." + Locations = "South east of the Gnome Deep Hub's entrance.", } monster.health = 1600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,19 +62,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "**", yell = false }, - { text = "**", yell = false } + { text = "**", yell = false }, } monster.loot = { @@ -105,7 +105,7 @@ monster.loot = { { name = "terra legs", chance = 240 }, { name = "fire axe", chance = 710 }, { name = "skull staff", chance = 480 }, - { name = "spiked squelcher", chance = 240 } + { name = "spiked squelcher", chance = 240 }, } monster.attacks = { @@ -114,13 +114,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -150, maxDamage = -250, range = 3, length = 5, spread = 5, effect = CONST_ME_SMOKE, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -290, range = 3, length = 5, spread = 5, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_POISONAREA, target = false }, { name = "sudden death rune", interval = 2000, chance = 15, minDamage = -70, maxDamage = -250, range = 7, target = false }, - { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 5000 } + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 5000 }, } monster.defenses = { defense = 20, armor = 20, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 160, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 160, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -133,14 +133,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 15 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 20 } + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/lost_husher.lua b/data-otservbr-global/monster/humanoids/lost_husher.lua index 292bb3839da..6961a18cde7 100644 --- a/data-otservbr-global/monster/humanoids/lost_husher.lua +++ b/data-otservbr-global/monster/humanoids/lost_husher.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 924 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Caves of the Lost, Lower Spike and in the Lost Dwarf version of the Forsaken Mine." + Locations = "Caves of the Lost, Lower Spike and in the Lost Dwarf version of the Forsaken Mine.", } monster.health = 1600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -98,7 +98,7 @@ monster.loot = { { name = "wimp tooth chain", chance = 8950 }, { name = "skull shatterer", chance = 12320 }, { name = "red hair dye", chance = 8510 }, - { name = "basalt figurine", chance = 8560 } + { name = "basalt figurine", chance = 8560 }, } monster.attacks = { @@ -106,7 +106,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -150, maxDamage = -250, radius = 5, effect = CONST_ME_BLACKSMOKE, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_MAGIC_GREEN, target = true }, - { name = "drunk", interval = 2000, chance = 10, radius = 4, effect = CONST_ME_SOUND_RED, target = false, duration = 6000 } + { name = "drunk", interval = 2000, chance = 10, radius = 4, effect = CONST_ME_SOUND_RED, target = false, duration = 6000 }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.defenses = { armor = 55, mitigation = 1.35, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 75, maxDamage = 92, effect = CONST_ME_YELLOWENERGY, target = false }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_TELEPORT } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_TELEPORT }, } monster.elements = { @@ -134,7 +134,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/lost_thrower.lua b/data-otservbr-global/monster/humanoids/lost_thrower.lua index 81de5e3037c..c2a87f0d551 100644 --- a/data-otservbr-global/monster/humanoids/lost_thrower.lua +++ b/data-otservbr-global/monster/humanoids/lost_thrower.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 926 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Caves of the Lost, Lower Spike and in the Lost Dwarf version of the Forsaken Mine." + Locations = "Caves of the Lost, Lower Spike and in the Lost Dwarf version of the Forsaken Mine.", } monster.health = 1700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { name = "lost bracers", chance = 14860 }, { name = "mad froth", chance = 11810 }, { name = "basalt fetish", chance = 6150 }, - { name = "basalt figurine", chance = 7900 } + { name = "basalt figurine", chance = 7900 }, } monster.attacks = { @@ -98,7 +98,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -250, range = 7, radius = 1, shootEffect = CONST_ANI_THROWINGSTAR, effect = CONST_ME_EXPLOSIONAREA, target = true }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, range = 7, radius = 2, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -300, range = 7, radius = 2, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_STUN, target = true }, - { name = "drunk", interval = 2000, chance = 10, radius = 3, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true, duration = 6000 } + { name = "drunk", interval = 2000, chance = 10, radius = 3, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true, duration = 6000 }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.defenses = { armor = 50, mitigation = 1.40, { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 100, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_TELEPORT } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_TELEPORT }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur.lua b/data-otservbr-global/monster/humanoids/minotaur.lua index 9a5a1c20674..b4a2b39e037 100644 --- a/data-otservbr-global/monster/humanoids/minotaur.lua +++ b/data-otservbr-global/monster/humanoids/minotaur.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 25 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Mino Hell (Rookgaard), Two outside Bear Room Quest, (Rookgaard) and also 2x on the premium side, \z Mintwallin, Folda, Minotaur Pyramid, Outlaw Camp, Kazordoon minotaur cave, Plains of Havoc, Elven Bane, \z Deeper Fibula Dungeon (level 50+ to open the door), Ancient Temple, Maze of Lost Souls, \z - Thais Minotaur Camp, Foreigner Quarter." + Thais Minotaur Camp, Foreigner Quarter.", } monster.health = 100 @@ -38,7 +38,7 @@ monster.manaCost = 330 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -89,11 +89,11 @@ monster.loot = { { id = 3457, chance = 310 }, -- shovel { name = "meat", chance = 5000 }, { name = "minotaur leather", chance = 990 }, - { name = "minotaur horn", chance = 2090, maxCount = 2 } + { name = "minotaur horn", chance = 2090, maxCount = 2 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_amazon.lua b/data-otservbr-global/monster/humanoids/minotaur_amazon.lua index 2a4d4e7d750..2eb8043163f 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_amazon.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_amazon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1045 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Underground Glooth Factory, Oramond Minotaur Camp, Oramond Dungeon" + Locations = "Underground Glooth Factory, Oramond Minotaur Camp, Oramond Dungeon", } monster.health = 2600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 11 + chance = 11, } monster.strategiesTarget = { @@ -99,7 +99,7 @@ monster.loot = { { id = 3081, chance = 850 }, -- stone skin amulet { id = 3037, chance = 870 }, -- yellow gem { id = 3369, chance = 1160 }, -- warrior helmet - { id = 7443, chance = 720 } -- bullseye potion + { id = 7443, chance = 720 }, -- bullseye potion } monster.attacks = { @@ -109,7 +109,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 22, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, range = 7, shootEffect = CONST_ANI_HUNTINGSPEAR, effect = CONST_ME_EXPLOSIONAREA, target = false }, -- bleed { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 40, minDamage = -300, maxDamage = -400, radius = 4, shootEffect = CONST_ANI_THROWINGKNIFE, target = true }, - { name = "minotaur amazon paralyze", interval = 2000, chance = 15, target = false } + { name = "minotaur amazon paralyze", interval = 2000, chance = 15, target = false }, } monster.defenses = { @@ -135,7 +135,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_archer.lua b/data-otservbr-global/monster/humanoids/minotaur_archer.lua index b5ba073fec3..31274a91737 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_archer.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_archer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 24 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Ancient Temple, way to Mintwallin, Folda Underground Cave, Outlaw Camp, Plains of Havoc, \z Kazordoon Minotaur Tower, Daramian Minotaur Pyramid, Deeper Fibula Dungeon (level 50+ to open the door), \z - Hero Cave, Foreigner Quarter and Elvenbane." + Hero Cave, Foreigner Quarter and Elvenbane.", } monster.health = 100 @@ -37,7 +37,7 @@ monster.manaCost = 390 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -87,12 +87,12 @@ monster.loot = { { name = "piercing bolt", chance = 12340, maxCount = 4 }, { name = "broken crossbow", chance = 15400 }, { name = "minotaur horn", chance = 1990, maxCount = 2 }, - { name = "piece of archer armor", chance = 8260 } + { name = "piece of archer armor", chance = 8260 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -80, range = 7, shootEffect = CONST_ANI_BOLT, target = false } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -80, range = 7, shootEffect = CONST_ANI_BOLT, target = false }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_bruiser.lua b/data-otservbr-global/monster/humanoids/minotaur_bruiser.lua index 88096e4a2f3..b704e765d2c 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_bruiser.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_bruiser.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 100 monster.maxHealth = 100 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 330 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -71,11 +70,11 @@ monster.loot = { { id = 3274, chance = 4000 }, -- axe { id = 11472, chance = 2000, maxCount = 2 }, -- minotaur horn { id = 5878, chance = 980 }, -- minotaur leather - { id = 3457, chance = 310 } -- shovel + { id = 3457, chance = 310 }, -- shovel } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, } monster.defenses = { @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_cult_follower.lua b/data-otservbr-global/monster/humanoids/minotaur_cult_follower.lua index 5940ed99461..1aff1c992c6 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_cult_follower.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_cult_follower.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1508 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Minotaurs Cult Cave" + Locations = "Minotaurs Cult Cave", } monster.health = 1600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -99,19 +99,19 @@ monster.loot = { { id = 3039, chance = 170 }, -- red gem { name = "meat", chance = 8020 }, { name = "minotaur leather", chance = 11530 }, - { name = "minotaur horn", chance = 14550, maxCount = 2 } + { name = "minotaur horn", chance = 14550, maxCount = 2 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -110, maxDamage = -210, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -110, maxDamage = -210, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { defense = 25, armor = 32, mitigation = 1.24, - { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_cult_prophet.lua b/data-otservbr-global/monster/humanoids/minotaur_cult_prophet.lua index 52e23c57d78..13e823fa17a 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_cult_prophet.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_cult_prophet.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1509 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Minotaurs Cult Cave" + Locations = "Minotaurs Cult Cave", } monster.health = 1700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -97,20 +97,20 @@ monster.loot = { { name = "meat", chance = 8040 }, { name = "ham", chance = 60140 }, { name = "minotaur leather", chance = 14230 }, - { name = "minotaur horn", chance = 18270, maxCount = 2 } + { name = "minotaur horn", chance = 18270, maxCount = 2 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -350, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { defense = 15, armor = 28, mitigation = 1.10, - { name = "Minotaur Cult Prophet Mass Healing", interval = 2000, chance = 20, target = false } + { name = "Minotaur Cult Prophet Mass Healing", interval = 2000, chance = 20, target = false }, } monster.elements = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_cult_zealot.lua b/data-otservbr-global/monster/humanoids/minotaur_cult_zealot.lua index 9ffee6db320..be4fc8a4bdc 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_cult_zealot.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_cult_zealot.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1510 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Minotaurs Cult Cave" + Locations = "Minotaurs Cult Cave", } monster.health = 1800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,12 +93,12 @@ monster.loot = { { name = "red piece of cloth", chance = 2460 }, { id = 3039, chance = 70 }, -- red gem { name = "minotaur leather", chance = 4780 }, - { name = "minotaur horn", chance = 2320, maxCount = 2 } + { name = "minotaur horn", chance = 2320, maxCount = 2 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -340 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -320, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -320, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, } monster.defenses = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_guard.lua b/data-otservbr-global/monster/humanoids/minotaur_guard.lua index 8a3026e7982..4f09a214a4b 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_guard.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_guard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 29 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Ancient Temple, Mintwallin, Minotaur Pyramid, Maze of Lost Souls, Folda, Cyclopolis, \z Deeper Fibula Dungeon (level 50+ to open the door), Hero Cave, underground of Elvenbane, \z - Plains of Havoc, Kazordoon Minotaur Cave, Foreigner Quarter." + Plains of Havoc, Kazordoon Minotaur Cave, Foreigner Quarter.", } monster.health = 185 @@ -37,7 +37,7 @@ monster.manaCost = 550 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,11 +89,11 @@ monster.loot = { { id = 7401, chance = 80 }, -- minotaur trophy { name = "health potion", chance = 400 }, { name = "minotaur horn", chance = 8330, maxCount = 2 }, - { name = "piece of warrior armor", chance = 5040 } + { name = "piece of warrior armor", chance = 5040 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_hunter.lua b/data-otservbr-global/monster/humanoids/minotaur_hunter.lua index c4b69c03412..40305444f68 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_hunter.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_hunter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1052 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Oramond/Southern Plains, Minotaur Hills, \z - Oramond Dungeon (depending on Magistrate votes), Underground Glooth Factory." + Oramond Dungeon (depending on Magistrate votes), Underground Glooth Factory.", } monster.health = 1400 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 11 + chance = 11, } monster.strategiesTarget = { @@ -99,7 +99,7 @@ monster.loot = { { id = 3037, chance = 470 }, -- yellow gem { id = 3039, chance = 400 }, -- red gem { id = 7401, chance = 190 }, -- minotaur trophy - { id = 21166, chance = 170 } -- mooh'tah plate + { id = 21166, chance = 170 }, -- mooh'tah plate } monster.attacks = { @@ -108,7 +108,7 @@ monster.attacks = { -- bleed { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 40, minDamage = -300, maxDamage = -400, range = 7, radius = 3, shootEffect = CONST_ANI_THROWINGKNIFE, effect = CONST_ME_HITAREA, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -160, maxDamage = -260, range = 7, radius = 2, shootEffect = CONST_ANI_BURSTARROW, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -35, maxDamage = -150, radius = 4, effect = CONST_ME_EXPLOSIONAREA, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -35, maxDamage = -150, radius = 4, effect = CONST_ME_EXPLOSIONAREA, target = false }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.defenses = { armor = 36, mitigation = 1.71, { name = "combat", interval = 2000, chance = 7, type = COMBAT_HEALING, minDamage = 95, maxDamage = 180, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = 520, effect = CONST_ME_POFF, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 520, effect = CONST_ME_POFF, target = false, duration = 5000 }, } monster.elements = { @@ -136,7 +136,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_invader.lua b/data-otservbr-global/monster/humanoids/minotaur_invader.lua index b29df84c9e8..8123efe552c 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_invader.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_invader.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1109 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Second floor Glooth Underground Factory, east side during the Oramond Minotaurs raid." + Locations = "Second floor Glooth Underground Factory, east side during the Oramond Minotaurs raid.", } monster.health = 1850 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -79,11 +79,11 @@ monster.loot = { { id = 11472, chance = 8330, maxCount = 2 }, -- minotaur horn { id = 11482, chance = 5040 }, -- piece of warrior armor { id = 5878, chance = 1000 }, -- minotaur leather - { id = 7401, chance = 90 } -- minotaur trophy + { id = 7401, chance = 90 }, -- minotaur trophy } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_mage.lua b/data-otservbr-global/monster/humanoids/minotaur_mage.lua index 94370c0fa8b..f5686f16bac 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_mage.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_mage.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 23 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Cyclopolis, Mintwallin, Maze of Lost Souls, Dark Pyramid, Folda (hidden cave), \z Kazordoon (The Horned Fox's hideout), the Plains of Havoc, Point of No Return south of Outlaw Camp, \z Elvenbane, the depths of Fibula Dungeon (level 50+), cave east from Dwarf Bridge, Foreigner Quarter, \z - Rookgaard Minotaur Hell (not reachable)." + Rookgaard Minotaur Hell (not reachable).", } monster.health = 155 @@ -38,7 +38,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,14 +88,14 @@ monster.loot = { { name = "taurus mace", chance = 1000 }, { name = "mana potion", chance = 490 }, { name = "minotaur horn", chance = 3020, maxCount = 2 }, - { name = "purple robe", chance = 6430, maxCount = 2 } + { name = "purple robe", chance = 6430, maxCount = 2 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -20, maxDamage = -59, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -105, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "energyfield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_ENERGYBALL, target = true } + { name = "energyfield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_ENERGYBALL, target = true }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_occultist.lua b/data-otservbr-global/monster/humanoids/minotaur_occultist.lua index 958552824e9..c2196704337 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_occultist.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_occultist.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 125 monster.maxHealth = 125 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -69,14 +68,14 @@ monster.loot = { { id = 268, chance = 3500 }, -- mana potion { id = 2920, chance = 3500 }, -- torch { id = 3355, chance = 1800 }, -- leather helmet - { id = 11473, chance = 1800 } -- purple robe + { id = 11473, chance = 1800 }, -- purple robe } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false }, - { name = "energyfield", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGYBALL, target = true } + { name = "energyfield", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGYBALL, target = true }, } monster.defenses = { @@ -102,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_poacher.lua b/data-otservbr-global/monster/humanoids/minotaur_poacher.lua index 24f3ba8b6bb..d2f8ba6a22f 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_poacher.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_poacher.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 160 monster.maxHealth = 160 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 390 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -70,12 +69,12 @@ monster.loot = { { name = "meat", chance = 3280 }, { name = "minotaur leather", chance = 1400 }, { name = "crossbow", chance = 710 }, - { name = "minotaur horn", chance = 710 } + { name = "minotaur horn", chance = 710 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_BOLT, target = false } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_BOLT, target = false }, } monster.defenses = { @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/minotaur_totem.lua b/data-otservbr-global/monster/humanoids/minotaur_totem.lua index b25800ff951..5686cb8b995 100644 --- a/data-otservbr-global/monster/humanoids/minotaur_totem.lua +++ b/data-otservbr-global/monster/humanoids/minotaur_totem.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a minotaur totem" monster.experience = 500 monster.outfit = { - lookTypeEx = 2299 + lookTypeEx = 2299, } monster.health = 6000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 16 + chance = 16, } monster.strategiesTarget = { @@ -53,17 +53,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 30, armor = 30, mitigation = 0.98, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 0, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 0, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -83,7 +81,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/mooh'tah_warrior.lua b/data-otservbr-global/monster/humanoids/mooh'tah_warrior.lua index 906d7d2bb37..ada61e26268 100644 --- a/data-otservbr-global/monster/humanoids/mooh'tah_warrior.lua +++ b/data-otservbr-global/monster/humanoids/mooh'tah_warrior.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1051 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Oramond/Southern Plains, Minotaur Hills, \z - Oramond Dungeon (depending on Magistrate votes), Underground Glooth Factory." + Oramond Dungeon (depending on Magistrate votes), Underground Glooth Factory.", } monster.health = 1200 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 4 + chance = 4, } monster.strategiesTarget = { @@ -60,19 +60,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Feel the power of the Mooh'Tah!", yell = false }, - { text = "Ommm!", yell = false } + { text = "Ommm!", yell = false }, } monster.loot = { @@ -102,10 +102,9 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -200, length = 4, spread = 3, effect = CONST_ME_YELLOWENERGY, target = false }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -135, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -150, radius = 3, effect = CONST_ME_HITAREA, target = false }, - { name = "mooh'tah master skill reducer", interval = 2000, chance = 19, range = 7, target = false } + { name = "mooh'tah master skill reducer", interval = 2000, chance = 19, range = 7, target = false }, } - monster.defenses = { defense = 37, armor = 37, @@ -124,14 +123,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 15 } + { type = COMBAT_DEATHDAMAGE, percent = 15 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/moohtant.lua b/data-otservbr-global/monster/humanoids/moohtant.lua index d54935b78c6..dc730c4f488 100644 --- a/data-otservbr-global/monster/humanoids/moohtant.lua +++ b/data-otservbr-global/monster/humanoids/moohtant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1044 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Oramond Mountain Hideout, Oramond Minotaur Camp (northern camp), \z - Underground Glooth Factory, Oramond Dungeon." + Underground Glooth Factory, Oramond Dungeon.", } monster.health = 3200 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 3 + chance = 3, } monster.strategiesTarget = { @@ -60,12 +60,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -91,7 +91,7 @@ monster.loot = { { id = 7452, chance = 430 }, -- spiked squelcher { id = 7427, chance = 280 }, -- chaos mace { id = 9058, chance = 280 }, -- gold ingot - { id = 7401, chance = 280 } -- minotaur trophy + { id = 7401, chance = 280 }, -- minotaur trophy } monster.attacks = { @@ -99,13 +99,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 13, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -230, length = 3, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 19, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -225, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -235, range = 7, radius = 4, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -235, range = 7, radius = 4, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { defense = 45, armor = 40, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -118,14 +118,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 15 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/orc.lua b/data-otservbr-global/monster/humanoids/orc.lua index dc1f260277d..ed940eef6fa 100644 --- a/data-otservbr-global/monster/humanoids/orc.lua +++ b/data-otservbr-global/monster/humanoids/orc.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 5 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Ulderek's Rock, Edron Orc Cave, Ancient Temple, Ice Islands, Venore Orc Cave, \z - Rookgaard Orc Fortress, Rookgaard main cave, Fibula Dungeon, Elvenbane, Foreigner Quarter, Zao Orc Land." + Rookgaard Orc Fortress, Rookgaard main cave, Fibula Dungeon, Elvenbane, Foreigner Quarter, Zao Orc Land.", } monster.health = 70 @@ -36,7 +36,7 @@ monster.manaCost = 300 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -86,11 +86,11 @@ monster.loot = { { name = "meat", chance = 10160 }, { name = "orc tooth", chance = 210 }, { name = "orc leather", chance = 590 }, - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/orc_berserker.lua b/data-otservbr-global/monster/humanoids/orc_berserker.lua index 06e2c952990..ac4cfb014c9 100644 --- a/data-otservbr-global/monster/humanoids/orc_berserker.lua +++ b/data-otservbr-global/monster/humanoids/orc_berserker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 8 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Orc Fort, Dwacatra, Orc Peninsula, Elvenbane, Edron Orc Cave, Plains of Havoc, below Point of No Return in Outlaw Camp, Maze of Lost Souls, Cyclopolis, Desert Dungeon, Ancient Temple, Foreigner Quarter, Zao Orc Land." + Locations = "Orc Fort, Dwacatra, Orc Peninsula, Elvenbane, Edron Orc Cave, Plains of Havoc, below Point of No Return in Outlaw Camp, Maze of Lost Souls, Cyclopolis, Desert Dungeon, Ancient Temple, Foreigner Quarter, Zao Orc Land.", } monster.health = 210 @@ -35,7 +35,7 @@ monster.manaCost = 590 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,18 +84,18 @@ monster.loot = { { name = "hunting spear", chance = 5000 }, { name = "orc tooth", chance = 3000 }, { name = "orcish gear", chance = 9400 }, - { name = "orc leather", chance = 4000 } + { name = "orc leather", chance = 4000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, } monster.defenses = { defense = 15, armor = 12, mitigation = 0.30, - { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/orc_leader.lua b/data-otservbr-global/monster/humanoids/orc_leader.lua index 76311317507..7cac6279eb6 100644 --- a/data-otservbr-global/monster/humanoids/orc_leader.lua +++ b/data-otservbr-global/monster/humanoids/orc_leader.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 59 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Orc Fort, Edron Orc Cave, South of the temple in PoH, Maze of Lost Souls, Cyclopolis, Zao Orc Land." + Locations = "Orc Fort, Edron Orc Cave, South of the temple in PoH, Maze of Lost Souls, Cyclopolis, Zao Orc Land.", } monster.health = 450 @@ -35,7 +35,7 @@ monster.manaCost = 640 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,12 +93,12 @@ monster.loot = { { name = "health potion", chance = 550 }, { name = "orc tooth", chance = 1030 }, { name = "orc leather", chance = 19510 }, - { name = "skull belt", chance = 2008 } + { name = "skull belt", chance = 2008 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -185 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/orc_marauder.lua b/data-otservbr-global/monster/humanoids/orc_marauder.lua index 251ed951f09..e6a2a6bf736 100644 --- a/data-otservbr-global/monster/humanoids/orc_marauder.lua +++ b/data-otservbr-global/monster/humanoids/orc_marauder.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 614 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Zao Orc Land." + Locations = "Zao Orc Land.", } monster.health = 235 @@ -35,7 +35,7 @@ monster.manaCost = 490 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,19 +84,19 @@ monster.loot = { { name = "orc tooth", chance = 3890 }, { name = "shaggy tail", chance = 10090 }, { name = "broken crossbow", chance = 4830 }, - { name = "orc leather", chance = 3800 } + { name = "orc leather", chance = 3800 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ONYXARROW, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ONYXARROW, target = false }, } monster.defenses = { defense = 25, armor = 16, mitigation = 0.83, - { name = "speed", interval = 2000, chance = 15, speedChange = 350, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 350, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/orc_rider.lua b/data-otservbr-global/monster/humanoids/orc_rider.lua index ecfb4766067..a76fe5d2a4b 100644 --- a/data-otservbr-global/monster/humanoids/orc_rider.lua +++ b/data-otservbr-global/monster/humanoids/orc_rider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 4 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Orc Fort, Orc Peninsula, near Dark Cathedral, Zao Orc Land." + Locations = "Orc Fort, Orc Peninsula, near Dark Cathedral, Zao Orc Land.", } monster.health = 180 @@ -35,7 +35,7 @@ monster.manaCost = 490 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,18 +86,18 @@ monster.loot = { { name = "meat", chance = 24000, maxCount = 3 }, { name = "orc tooth", chance = 2000 }, { name = "warwolf fur", chance = 9410 }, - { name = "orc leather", chance = 9760 } + { name = "orc leather", chance = 9760 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, } monster.defenses = { defense = 15, armor = 9, mitigation = 0.51, - { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/orc_shaman.lua b/data-otservbr-global/monster/humanoids/orc_shaman.lua index aeaeeda1997..33977e34630 100644 --- a/data-otservbr-global/monster/humanoids/orc_shaman.lua +++ b/data-otservbr-global/monster/humanoids/orc_shaman.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 6 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Edron Orc Cave, Temple of Xayepocax, below Point of No Return in Outlaw Camp, Venore Orc Cave, \z - Maze of Lost Souls, Orc Fort, north west of Thais, Elvenbane, Plains Of Havoc, Foreigner Quarter, Zao Orc Land." + Maze of Lost Souls, Orc Fort, north west of Thais, Elvenbane, Plains Of Havoc, Foreigner Quarter, Zao Orc Land.", } monster.health = 115 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -71,8 +71,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "Snake", chance = 20, interval = 2000, count = 3 } - } + { name = "Snake", chance = 20, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -93,20 +93,20 @@ monster.loot = { { name = "broken shamanic staff", chance = 10300 }, { name = "shamanic hood", chance = 6860 }, { name = "orc leather", chance = 4300 }, - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -20, maxDamage = -31, range = 7, shootEffect = CONST_ANI_ENERGYBALL, target = false }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_FIREDAMAGE, minDamage = -5, maxDamage = -43, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_FIREDAMAGE, minDamage = -5, maxDamage = -43, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { defense = 10, armor = 8, mitigation = 0.25, - { name = "combat", interval = 2000, chance = 60, type = COMBAT_HEALING, minDamage = 27, maxDamage = 43, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 60, type = COMBAT_HEALING, minDamage = 27, maxDamage = 43, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/orc_spearman.lua b/data-otservbr-global/monster/humanoids/orc_spearman.lua index 1a60202eb31..8c7fee62b59 100644 --- a/data-otservbr-global/monster/humanoids/orc_spearman.lua +++ b/data-otservbr-global/monster/humanoids/orc_spearman.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 50 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Orc Fortress, Folda Dungeon, Edron Orc Cave and around it, Ancient Temple, \z Venore Orc Cave, below the Point of No Return in Outlaw Camp, Plains of Havoc, \z North of Thais in the Orc Peninsula, Elvenbane and Orc Camp in Foreigner Quarter. \z - Also found in Rookgaard West plains, Zao Orc Land." + Also found in Rookgaard West plains, Zao Orc Land.", } monster.health = 105 @@ -38,7 +38,7 @@ monster.manaCost = 310 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -85,12 +85,12 @@ monster.loot = { { name = "meat", chance = 30200 }, { name = "orc tooth", chance = 150 }, { name = "orc leather", chance = 2300 }, - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -30, range = 7, shootEffect = CONST_ANI_SPEAR, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -30, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/orc_warlord.lua b/data-otservbr-global/monster/humanoids/orc_warlord.lua index 6b1630a1df9..db5b0e20288 100644 --- a/data-otservbr-global/monster/humanoids/orc_warlord.lua +++ b/data-otservbr-global/monster/humanoids/orc_warlord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Orc Fortress, Foreigner Quarter, Zao Orc Land." + Locations = "Orc Fortress, Foreigner Quarter, Zao Orc Land.", } monster.health = 950 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -101,19 +101,19 @@ monster.loot = { { name = "orc tooth", chance = 9640 }, { name = "broken helmet", chance = 24350 }, { name = "orc leather", chance = 20620 }, - { name = "skull belt", chance = 4610 } + { name = "skull belt", chance = 4610 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, } monster.defenses = { defense = 35, armor = 28, mitigation = 1.46, - { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/orc_warrior.lua b/data-otservbr-global/monster/humanoids/orc_warrior.lua index 15c7df1dd85..0a19598720e 100644 --- a/data-otservbr-global/monster/humanoids/orc_warrior.lua +++ b/data-otservbr-global/monster/humanoids/orc_warrior.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 7 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Ancient Temple in Thais, Orc Fort, below Point of No Return in Outlaw Camp and inside a \z mountain north of it, Orc Peninsula, Folda, Edron Orc cave, Maze of Lost Souls, Elvenbane Castle, \z - Foreigner Quarter, Zao Orc Land." + Foreigner Quarter, Zao Orc Land.", } monster.health = 125 @@ -37,7 +37,7 @@ monster.manaCost = 360 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -87,11 +87,11 @@ monster.loot = { { name = "broken helmet", chance = 10800 }, { name = "orc leather", chance = 4000 }, { name = "skull belt", chance = 980 }, - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/pirat_artillerist.lua b/data-otservbr-global/monster/humanoids/pirat_artillerist.lua index 62c172e25f5..a174e126444 100644 --- a/data-otservbr-global/monster/humanoids/pirat_artillerist.lua +++ b/data-otservbr-global/monster/humanoids/pirat_artillerist.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 86, lookFeet = 94, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 2700 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -76,20 +76,20 @@ monster.loot = { { id = 17820, chance = 14285 }, -- soft cheese { id = 17821, chance = 14285 }, -- rat cheese { id = 820, chance = 1612 }, -- lightning boots - { id = 818, chance = 3225 } -- magma boots + { id = 818, chance = 3225 }, -- magma boots } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 450, maxDamage = -140 }, { name = "corym vanguard wave", interval = 2000, chance = 10, minDamage = -50, maxDamage = -100, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -40, maxDamage = -70, radius = 4, effect = CONST_ME_MORTAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -40, maxDamage = -70, radius = 4, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { defense = 65, armor = 65, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/pirat_bombardier.lua b/data-otservbr-global/monster/humanoids/pirat_bombardier.lua index 96540de86b0..d82ce8d909b 100644 --- a/data-otservbr-global/monster/humanoids/pirat_bombardier.lua +++ b/data-otservbr-global/monster/humanoids/pirat_bombardier.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 86, lookFeet = 67, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.raceId = 2038 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Pirat Mine, The Wreckoning" + Locations = "Pirat Mine, The Wreckoning", } monster.health = 2300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,20 +84,20 @@ monster.loot = { { name = "mouldy powder", chance = 4000 }, { id = 23529, chance = 2000 }, -- ring of blue plasma { name = "lightning boots", chance = 1000 }, - { name = "wood cape", chance = 1000 } + { name = "wood cape", chance = 1000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -350 }, { name = "energy beam", interval = 2000, chance = 10, minDamage = -80, maxDamage = -160, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "energy wave", interval = 2000, chance = 10, minDamage = -35, maxDamage = -75, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false } + { name = "energy wave", interval = 2000, chance = 10, minDamage = -35, maxDamage = -75, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { defense = 20, armor = 65, mitigation = 1.82, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/pirat_cutthroat.lua b/data-otservbr-global/monster/humanoids/pirat_cutthroat.lua index db57a7f007f..ec13c5dcf7d 100644 --- a/data-otservbr-global/monster/humanoids/pirat_cutthroat.lua +++ b/data-otservbr-global/monster/humanoids/pirat_cutthroat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 78, lookFeet = 96, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 2036 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Darashia, Krailos Steppe, Liberty Bay, Pirat Mines, Port Hope, Thais, The Wreckoning." + Locations = "Darashia, Krailos Steppe, Liberty Bay, Pirat Mines, Port Hope, Thais, The Wreckoning.", } monster.health = 2600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -82,13 +82,13 @@ monster.loot = { { name = "knight armor", chance = 9550 }, { name = "focus cape", chance = 8250 }, { name = "pirat's tail", chance = 2120 }, - { name = "shark fins", chance = 1750 } + { name = "shark fins", chance = 1750 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = -110, maxDamage = -190, length = 4, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -120, maxDamage = -175, radius = 3, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -120, maxDamage = -175, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/pirat_mate.lua b/data-otservbr-global/monster/humanoids/pirat_mate.lua index 3030278560b..78255444fc2 100644 --- a/data-otservbr-global/monster/humanoids/pirat_mate.lua +++ b/data-otservbr-global/monster/humanoids/pirat_mate.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 113, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2039 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "The Wreckoning" + Locations = "The Wreckoning", } monster.health = 3200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,20 +90,20 @@ monster.loot = { { name = "yellow gem", chance = 3000 }, { name = "ice rapier", chance = 3000 }, { name = "green crystal shard", chance = 2000 }, - { name = "small treasure chest", chance = 2000 } + { name = "small treasure chest", chance = 2000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "energy beam", interval = 2000, chance = 10, minDamage = -150, maxDamage = -210, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "energy wave", interval = 2000, chance = 10, minDamage = -140, maxDamage = -80, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false } + { name = "energy wave", interval = 2000, chance = 10, minDamage = -140, maxDamage = -80, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { defense = 20, armor = 75, mitigation = 1.94, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/pirat_scoundrel.lua b/data-otservbr-global/monster/humanoids/pirat_scoundrel.lua index 72c2ada1066..0f6105f0b6c 100644 --- a/data-otservbr-global/monster/humanoids/pirat_scoundrel.lua +++ b/data-otservbr-global/monster/humanoids/pirat_scoundrel.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 80, lookFeet = 80, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2037 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Pirat Mine, The Wreckoning" + Locations = "Pirat Mine, The Wreckoning", } monster.health = 2200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -80,14 +80,14 @@ monster.loot = { { name = "pirat's tail", chance = 2120 }, { name = "springsprout rod", chance = 9550 }, { name = "wand of starstorm", chance = 1750 }, - { name = "wand of voodoo", chance = 1450 } + { name = "wand of voodoo", chance = 1450 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -110, maxDamage = -180, range = 7, radius = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -140, radius = 3, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -90, maxDamage = -120, radius = 3, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -90, maxDamage = -120, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/running_elite_orc_guard.lua b/data-otservbr-global/monster/humanoids/running_elite_orc_guard.lua index cf904663bcc..a017c853787 100644 --- a/data-otservbr-global/monster/humanoids/running_elite_orc_guard.lua +++ b/data-otservbr-global/monster/humanoids/running_elite_orc_guard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 950 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -46,29 +46,29 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = true, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "UAAAAH FETCHI!", yell = false } + { text = "UAAAAH FETCHI!", yell = false }, } monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 }, } monster.defenses = { defense = 35, - armor = 35 + armor = 35, } monster.elements = { @@ -81,14 +81,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = true } + { type = "bleed", condition = true }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/shaper_matriarch.lua b/data-otservbr-global/monster/humanoids/shaper_matriarch.lua index 28a40245b0e..0cac3a23448 100644 --- a/data-otservbr-global/monster/humanoids/shaper_matriarch.lua +++ b/data-otservbr-global/monster/humanoids/shaper_matriarch.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1394 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Old Masonry, Astral Shaper Ruins, small dungeon under the Formorgar Mines." + Locations = "Old Masonry, Astral Shaper Ruins, small dungeon under the Formorgar Mines.", } monster.health = 2000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -96,21 +96,21 @@ monster.loot = { { id = 24387, chance = 15000 }, -- tarnished rhino figurine { id = 3072, chance = 2000 }, -- wand of decay { id = 8094, chance = 800 }, -- wand of voodoo - { id = 2901, chance = 2000 } -- waterskin + { id = 2901, chance = 2000 }, -- waterskin } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 15, attack = 25 }, { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = -35, maxDamage = -160, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = -35, maxDamage = -160, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, length = 6, spread = 3, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, length = 6, spread = 3, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 40, armor = 40, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/soul-broken_harbinger.lua b/data-otservbr-global/monster/humanoids/soul-broken_harbinger.lua index 57c0d9ffac7..d07eae7ff16 100644 --- a/data-otservbr-global/monster/humanoids/soul-broken_harbinger.lua +++ b/data-otservbr-global/monster/humanoids/soul-broken_harbinger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 16, lookFeet = 83, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 1734 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Court of Winter." + Locations = "Court of Winter.", } monster.health = 6300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,23 +89,23 @@ monster.loot = { { name = "wood cape", chance = 1710 }, { id = 23529, chance = 1370 }, -- ring of blue plasma { name = "tower shield", chance = 680 }, - { id = 23543, chance = 680 } -- collar of green plasma + { id = 23543, chance = 680 }, -- collar of green plasma } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -120, range = 7, shootEffect = CONST_ANI_ARROW, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -120, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, } monster.defenses = { defense = 40, armor = 76, mitigation = 2.08, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.reflects = { - { type = COMBAT_ICEDAMAGE, percent = 70 } + { type = COMBAT_ICEDAMAGE, percent = 70 }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/swamp_troll.lua b/data-otservbr-global/monster/humanoids/swamp_troll.lua index b46eb92672c..db18293d2fa 100644 --- a/data-otservbr-global/monster/humanoids/swamp_troll.lua +++ b/data-otservbr-global/monster/humanoids/swamp_troll.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 76 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Port Hope Swamp Trolls, Venore Swamp Troll Cave, all around north area of Port Hope, \z - small spawn north-west of Venore and in cave south-east of Thais, also one in Foreigner Quarter." + small spawn north-west of Venore and in cave south-east of Thais, also one in Foreigner Quarter.", } monster.health = 55 @@ -36,7 +36,7 @@ monster.manaCost = 320 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -87,11 +87,11 @@ monster.loot = { { name = "troll green", chance = 1200 }, { id = 5901, chance = 2140 }, -- wood { name = "swamp grass", chance = 3100 }, - { name = "medicine pouch", chance = 2160 } + { name = "medicine pouch", chance = 2160 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -13, condition = { type = CONDITION_POISON, totalDamage = 1, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -13, condition = { type = CONDITION_POISON, totalDamage = 1, interval = 4000 } }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/troll.lua b/data-otservbr-global/monster/humanoids/troll.lua index 19e4326b044..0e42c993ce3 100644 --- a/data-otservbr-global/monster/humanoids/troll.lua +++ b/data-otservbr-global/monster/humanoids/troll.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 15 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 1, Occurrence = 0, Locations = "In many dungeons around Tibia like the troll cave in Thais, south of Carlin (out the east \z - exit and down the hole), Island of Destiny, Edron Troll Cave, and in Ab'Dendriel. Also found in Rookgaard." + exit and down the hole), Island of Destiny, Edron Troll Cave, and in Ab'Dendriel. Also found in Rookgaard.", } monster.health = 50 @@ -36,7 +36,7 @@ monster.manaCost = 290 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -90,11 +90,11 @@ monster.loot = { { name = "leather boots", chance = 10000 }, { name = "meat", chance = 15000 }, { name = "bunch of troll hair", chance = 1000 }, - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, } monster.defenses = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/troll_champion.lua b/data-otservbr-global/monster/humanoids/troll_champion.lua index baf660257c5..92270300b28 100644 --- a/data-otservbr-global/monster/humanoids/troll_champion.lua +++ b/data-otservbr-global/monster/humanoids/troll_champion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 392 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Edron Troll-Goblin Peninsula, Ab'dendriel Shadow Caves, Thais South-East Troll Caves, \z - Dusalk's Troll Clan Cave, Island of Destiny in Paladin's guild." + Dusalk's Troll Clan Cave, Island of Destiny in Paladin's guild.", } monster.health = 75 @@ -36,7 +36,7 @@ monster.manaCost = 350 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -88,10 +88,10 @@ monster.loot = { { name = "leather boots", chance = 9000 }, { name = "meat", chance = 9650 }, { name = "bunch of troll hair", chance = 3000 }, - { name = "trollroot", chance = 750 } + { name = "trollroot", chance = 750 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/troll_guard.lua b/data-otservbr-global/monster/humanoids/troll_guard.lua index 4d442242df8..a796c9226dc 100644 --- a/data-otservbr-global/monster/humanoids/troll_guard.lua +++ b/data-otservbr-global/monster/humanoids/troll_guard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 745 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 3, - Locations = "Rookgaards central cave in the Mapper Coords125.64125.136104textnew western Troll tunnel, north-west of Carlin during raids and Thais Knights Guild arena during raids on Kingsday Mini World ChangeKingsday." + Locations = "Rookgaards central cave in the Mapper Coords125.64125.136104textnew western Troll tunnel, north-west of Carlin during raids and Thais Knights Guild arena during raids on Kingsday Mini World ChangeKingsday.", } monster.health = 60 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.loot = { { id = 3003, chance = 10000 }, -- rope { name = "gold coin", chance = 58000, maxCount = 12 }, { name = "studded club", chance = 3000 }, - { name = "meat", chance = 14000, maxCount = 2 } + { name = "meat", chance = 14000, maxCount = 2 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -9 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -9 }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/troll_legionnaire.lua b/data-otservbr-global/monster/humanoids/troll_legionnaire.lua index 00f3ba4f052..4ebdfe1ee0c 100644 --- a/data-otservbr-global/monster/humanoids/troll_legionnaire.lua +++ b/data-otservbr-global/monster/humanoids/troll_legionnaire.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 541 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Old Beregar mines. In group with Furious Trolls almost all the time." + Locations = "Old Beregar mines. In group with Furious Trolls almost all the time.", } monster.health = 210 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -78,12 +78,12 @@ monster.loot = { { name = "gold coin", chance = 92000, maxCount = 155 }, { id = 3049, chance = 560 }, -- stealth ring { name = "throwing star", chance = 28000, maxCount = 10 }, - { name = "frosty ear of a troll", chance = 5120 } + { name = "frosty ear of a troll", chance = 5120 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -130, range = 6, shootEffect = CONST_ANI_THROWINGSTAR, target = true } + { name = "combat", interval = 2000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -130, range = 6, shootEffect = CONST_ANI_THROWINGSTAR, target = true }, } monster.defenses = { @@ -91,7 +91,7 @@ monster.defenses = { armor = 12, mitigation = 0.64, { name = "invisible", interval = 2000, chance = 18, effect = CONST_ME_MAGIC_BLUE }, - { name = "combat", interval = 2000, chance = 28, type = COMBAT_HEALING, minDamage = 17, maxDamage = 25, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 28, type = COMBAT_HEALING, minDamage = 17, maxDamage = 25, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/twisted_shaper.lua b/data-otservbr-global/monster/humanoids/twisted_shaper.lua index bff4e016741..63540262085 100644 --- a/data-otservbr-global/monster/humanoids/twisted_shaper.lua +++ b/data-otservbr-global/monster/humanoids/twisted_shaper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1322 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Astral Shaper Dungeon, Old Masonry, small dungeon under the Formorgar Mines." + Locations = "Astral Shaper Dungeon, Old Masonry, small dungeon under the Formorgar Mines.", } monster.health = 2500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,18 +62,18 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Ti Jezz Kur Tar!", yell = false } + { text = "Ti Jezz Kur Tar!", yell = false }, } monster.loot = { @@ -92,7 +92,7 @@ monster.loot = { { id = 3055, chance = 370 }, -- platinum amulet { id = 24384, chance = 17000 }, -- ancient belt buckle { id = 24385, chance = 20000 }, -- cracked alabaster vase - { id = 24390, chance = 4000 } -- ancient coin + { id = 24390, chance = 4000 }, -- ancient coin } monster.attacks = { @@ -100,13 +100,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -50, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -100, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -100, radius = 7, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 9, speedChange = -440, effect = CONST_ME_GIANTICE, target = true, duration = 7000 } + { name = "speed", interval = 2000, chance = 9, speedChange = -440, effect = CONST_ME_GIANTICE, target = true, duration = 7000 }, } monster.defenses = { defense = 25, armor = 25, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -119,14 +119,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 30 }, { type = COMBAT_HOLYDAMAGE, percent = 30 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/worm_priestess.lua b/data-otservbr-global/monster/humanoids/worm_priestess.lua index 1e2ddb0b108..53070064518 100644 --- a/data-otservbr-global/monster/humanoids/worm_priestess.lua +++ b/data-otservbr-global/monster/humanoids/worm_priestess.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1053 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Oramond/Southern Plains, Minotaur Hills, \z - Oramond Dungeon (depending on Magistrate votes), Underground Glooth Factory, Oramond Fury Dungeon." + Oramond Dungeon (depending on Magistrate votes), Underground Glooth Factory, Oramond Fury Dungeon.", } monster.health = 1100 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -97,7 +97,7 @@ monster.loot = { { id = 8082, chance = 1590 }, -- underworld rod { id = 3037, chance = 560 }, -- yellow gem { id = 3039, chance = 430 }, -- red gem - { id = 7401, chance = 160 } -- minotaur trophy + { id = 7401, chance = 160 }, -- minotaur trophy } monster.attacks = { @@ -106,7 +106,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 16, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -165, range = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POISONAREA, target = false }, { name = "worm priestess paralyze", interval = 2000, chance = 12, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -115, maxDamage = -200, range = 7, radius = 3, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -300, range = 7, radius = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = true } + { name = "combat", interval = 2000, chance = 13, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -300, range = 7, radius = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = true }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.defenses = { armor = 36, mitigation = 1.37, { name = "combat", interval = 2000, chance = 8, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "haste", interval = 2000, chance = 9, speedChange = 198, effect = CONST_ME_MAGIC_RED, target = false, duration = 1000 } + { name = "haste", interval = 2000, chance = 9, speedChange = 198, effect = CONST_ME_MAGIC_RED, target = false, duration = 1000 }, } monster.elements = { @@ -134,7 +134,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humanoids/young_troll.lua b/data-otservbr-global/monster/humanoids/young_troll.lua index 8cbca998428..b7668bdc1bb 100644 --- a/data-otservbr-global/monster/humanoids/young_troll.lua +++ b/data-otservbr-global/monster/humanoids/young_troll.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 30 monster.maxHealth = 30 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -65,11 +64,11 @@ monster.voices = { monster.loot = { { id = 3003, chance = 10000 }, -- rope { name = "gold coin", chance = 58000, maxCount = 12 }, - { name = "meat", chance = 14000 } + { name = "meat", chance = 14000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, } monster.defenses = { @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/acolyte_of_darkness.lua b/data-otservbr-global/monster/humans/acolyte_of_darkness.lua index 45048980c2b..39c19740c4c 100644 --- a/data-otservbr-global/monster/humans/acolyte_of_darkness.lua +++ b/data-otservbr-global/monster/humans/acolyte_of_darkness.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 578 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 30, Stars = 2, Occurrence = 3, - Locations = "Drefia." + Locations = "Drefia.", } monster.health = 325 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -76,20 +76,20 @@ monster.voices = { } monster.loot = { - { name = "midnight shard", chance = 1300 } + { name = "midnight shard", chance = 1300 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -120, range = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -65, maxDamage = -120, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -65, maxDamage = -120, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 19, armor = 19, mitigation = 0.78, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/acolyte_of_the_cult.lua b/data-otservbr-global/monster/humans/acolyte_of_the_cult.lua index 2c5f945b7fd..34b4fea2657 100644 --- a/data-otservbr-global/monster/humans/acolyte_of_the_cult.lua +++ b/data-otservbr-global/monster/humans/acolyte_of_the_cult.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 100, lookFeet = 19, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 253 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Goroma, Deeper Cult Cave, Formorgar Mines, Magician Quarter, Forbidden Temple." + Locations = "Goroma, Deeper Cult Cave, Formorgar Mines, Magician Quarter, Forbidden Temple.", } monster.health = 390 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "Skeleton", chance = 10, interval = 2000, count = 1 } - } + { name = "Skeleton", chance = 10, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -98,20 +98,20 @@ monster.loot = { { name = "cultish robe", chance = 8070 }, { name = "cultish symbol", chance = 40 }, { name = "rope belt", chance = 10420 }, - { name = "broken key ring", chance = 60 } + { name = "broken key ring", chance = 60 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 2, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -60, maxDamage = -120, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "drunk", interval = 2000, chance = 5, range = 7, radius = 1, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYDAMAGE, target = true, duration = 3000 } + { name = "drunk", interval = 2000, chance = 5, range = 7, radius = 1, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYDAMAGE, target = true, duration = 3000 }, } monster.defenses = { defense = 15, armor = 30, mitigation = 1.13, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/adept_of_the_cult.lua b/data-otservbr-global/monster/humans/adept_of_the_cult.lua index 182dd633b3b..11cb6bc235a 100644 --- a/data-otservbr-global/monster/humans/adept_of_the_cult.lua +++ b/data-otservbr-global/monster/humans/adept_of_the_cult.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 19, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 254 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Goroma, Liberty Bay's deeper cult dungeon, Formorgar Mines, Magician Quarter, Forbidden Temple." + Locations = "Goroma, Liberty Bay's deeper cult dungeon, Formorgar Mines, Magician Quarter, Forbidden Temple.", } monster.health = 430 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Ghoul", chance = 10, interval = 2000, count = 2 } - } + { name = "Ghoul", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -101,13 +101,13 @@ monster.loot = { { name = "cultish robe", chance = 10080 }, { name = "cultish symbol", chance = 90 }, { name = "rope belt", chance = 10000 }, - { name = "broken key ring", chance = 120 } + { name = "broken key ring", chance = 120 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90, condition = { type = CONDITION_POISON, totalDamage = 2, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -70, maxDamage = -150, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, - { name = "drunk", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYDAMAGE, target = true, duration = 4000 } + { name = "drunk", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYDAMAGE, target = true, duration = 4000 }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.defenses = { armor = 33, mitigation = 1.13, { name = "combat", interval = 3000, chance = 20, type = COMBAT_HEALING, minDamage = 45, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_YELLOW_RINGS } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_YELLOW_RINGS }, } monster.elements = { @@ -135,7 +135,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/adventurer.lua b/data-otservbr-global/monster/humans/adventurer.lua index 70a6547dd7f..c8b08a94476 100644 --- a/data-otservbr-global/monster/humans/adventurer.lua +++ b/data-otservbr-global/monster/humans/adventurer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 72, lookFeet = 80, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 922 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Venore swamp." + Locations = "Venore swamp.", } monster.health = 65 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -72,8 +72,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, armor = 8, @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/amazon.lua b/data-otservbr-global/monster/humans/amazon.lua index ee907f210d3..35745de1c50 100644 --- a/data-otservbr-global/monster/humans/amazon.lua +++ b/data-otservbr-global/monster/humans/amazon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 115, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 77 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Venore Amazon Camp, Carlin Amazon Camp, Amazon Tower, east of Carlin, underneath the Fields of Glory, west of Venore, Oasis Tomb, on the smallest of the Laguna Islands, Foreigner Quarter and Trade Quarter." + Locations = "Venore Amazon Camp, Carlin Amazon Camp, Amazon Tower, east of Carlin, underneath the Fields of Glory, west of Venore, Oasis Tomb, on the smallest of the Laguna Islands, Foreigner Quarter and Trade Quarter.", } monster.health = 110 @@ -33,10 +33,9 @@ monster.corpse = 18042 monster.speed = 86 monster.manaCost = 390 - monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,12 +85,12 @@ monster.loot = { { name = "protective charm", chance = 5200 }, { id = 2920, chance = 1000 }, -- torch { name = "crystal necklace", chance = 260 }, - { name = "small ruby", chance = 130 } + { name = "small ruby", chance = 130 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 5, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 5, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { @@ -117,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/angry_adventurer.lua b/data-otservbr-global/monster/humans/angry_adventurer.lua index 3dceb296f64..14b38b2d180 100644 --- a/data-otservbr-global/monster/humans/angry_adventurer.lua +++ b/data-otservbr-global/monster/humans/angry_adventurer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 92, lookFeet = 82, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 65 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,11 +59,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, } monster.defenses = { @@ -89,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/assassin.lua b/data-otservbr-global/monster/humans/assassin.lua index bad22591b8b..4eea6717abc 100644 --- a/data-otservbr-global/monster/humans/assassin.lua +++ b/data-otservbr-global/monster/humans/assassin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 95, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 224 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Dark Cathedral, Trade Quarter, Factory Quarter, Foreigner Quarter." + Locations = "Dark Cathedral, Trade Quarter, Factory Quarter, Foreigner Quarter.", } monster.health = 175 @@ -35,7 +35,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -90,21 +90,21 @@ monster.loot = { { name = "battle shield", chance = 1600 }, { name = "leopard armor", chance = 480 }, { name = "horseman helmet", chance = 230 }, - { name = "viper star", chance = 4200, maxCount = 7 } + { name = "viper star", chance = 4200, maxCount = 7 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -120, maxDamage = -160, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -120, maxDamage = -160, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 15, armor = 17, mitigation = 1.04, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/bandit.lua b/data-otservbr-global/monster/humans/bandit.lua index 6fa01e40837..0204984c5e2 100644 --- a/data-otservbr-global/monster/humans/bandit.lua +++ b/data-otservbr-global/monster/humans/bandit.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 24, lookFeet = 95, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 223 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Dark Cathedral, Tiquanda Bandit Caves, Outlaw Camp, mountain pass west of Ankrahmun, \z - Tyrsung, Thais Bandit Cave, Formorgar Mines. Also summoned by Gamel." + Tyrsung, Thais Bandit Cave, Formorgar Mines. Also summoned by Gamel.", } monster.health = 245 @@ -36,7 +36,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -84,11 +84,11 @@ monster.loot = { { name = "brass armor", chance = 2500 }, { name = "brass shield", chance = 16800 }, { name = "leather legs", chance = 15500 }, - { name = "tomato", chance = 7630, maxCount = 2 } + { name = "tomato", chance = 7630, maxCount = 2 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/barbarian_bloodwalker.lua b/data-otservbr-global/monster/humans/barbarian_bloodwalker.lua index 3e729162521..b81af9de2fb 100644 --- a/data-otservbr-global/monster/humans/barbarian_bloodwalker.lua +++ b/data-otservbr-global/monster/humans/barbarian_bloodwalker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 132, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 323 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Krimhorn, Bittermor, Ragnir, Arena and Zoo Quarter inside the Arena." + Locations = "Krimhorn, Bittermor, Ragnir, Arena and Zoo Quarter inside the Arena.", } monster.health = 305 @@ -35,7 +35,7 @@ monster.manaCost = 590 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,18 +91,18 @@ monster.loot = { { name = "red piece of cloth", chance = 540 }, { name = "shard", chance = 300 }, { name = "fur boots", chance = 100 }, - { name = "health potion", chance = 980 } + { name = "health potion", chance = 980 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, } monster.defenses = { defense = 0, armor = 9, mitigation = 0.25, - { name = "speed", interval = 2000, chance = 15, speedChange = 240, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 240, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/barbarian_brutetamer.lua b/data-otservbr-global/monster/humans/barbarian_brutetamer.lua index 2d67151f149..80e7a4262c3 100644 --- a/data-otservbr-global/monster/humans/barbarian_brutetamer.lua +++ b/data-otservbr-global/monster/humans/barbarian_brutetamer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 121, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 332 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Krimhorn, Bittermor, Ragnir, and Fenrock." + Locations = "Krimhorn, Bittermor, Ragnir, and Fenrock.", } monster.health = 145 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "War Wolf", chance = 10, interval = 2000, count = 2 } - } + { name = "War Wolf", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -97,20 +97,20 @@ monster.loot = { { name = "fur boots", chance = 170 }, { name = "mammoth fur cape", chance = 150 }, { name = "mammoth fur shorts", chance = 90 }, - { name = "mana potion", chance = 580 } + { name = "mana potion", chance = 580 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -34, range = 7, radius = 1, shootEffect = CONST_ANI_SNOWBALL, target = true }, - { name = "barbarian brutetamer skill reducer", interval = 2000, chance = 15, range = 5, target = false } + { name = "barbarian brutetamer skill reducer", interval = 2000, chance = 15, range = 5, target = false }, } monster.defenses = { defense = 0, armor = 8, mitigation = 0.36, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/barbarian_headsplitter.lua b/data-otservbr-global/monster/humans/barbarian_headsplitter.lua index 3fdc81f4e8f..45a6034a805 100644 --- a/data-otservbr-global/monster/humans/barbarian_headsplitter.lua +++ b/data-otservbr-global/monster/humans/barbarian_headsplitter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 119, lookFeet = 113, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 333 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Krimhorn, Bittermor, Ragnir, and Fenrock." + Locations = "Krimhorn, Bittermor, Ragnir, and Fenrock.", } monster.health = 100 @@ -35,7 +35,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -91,12 +91,12 @@ monster.loot = { { name = "brown piece of cloth", chance = 980 }, { name = "fur boots", chance = 90 }, { name = "krimhorn helmet", chance = 110 }, - { name = "health potion", chance = 560 } + { name = "health potion", chance = 560 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -60, range = 7, radius = 1, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -60, range = 7, radius = 1, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/barbarian_skullhunter.lua b/data-otservbr-global/monster/humans/barbarian_skullhunter.lua index 5d5707ca096..7e8e263ec31 100644 --- a/data-otservbr-global/monster/humans/barbarian_skullhunter.lua +++ b/data-otservbr-global/monster/humans/barbarian_skullhunter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 96, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 322 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Ragnir, Krimhorn, Bittermor, and Fenrock." + Locations = "Ragnir, Krimhorn, Bittermor, and Fenrock.", } monster.health = 135 @@ -35,7 +35,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -91,11 +91,11 @@ monster.loot = { { name = "crystal sword", chance = 100 }, { name = "fur boots", chance = 100 }, { name = "ragnir helmet", chance = 100 }, - { name = "health potion", chance = 100 } + { name = "health potion", chance = 100 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/black_sphinx_acolyte.lua b/data-otservbr-global/monster/humans/black_sphinx_acolyte.lua index ba48b4f8e54..fc98bcab36d 100644 --- a/data-otservbr-global/monster/humans/black_sphinx_acolyte.lua +++ b/data-otservbr-global/monster/humans/black_sphinx_acolyte.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 95, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1800 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Issavi Sewers, Kilmaresh Catacombs and Kilmaresh Mountains (above and under ground)." + Locations = "Issavi Sewers, Kilmaresh Catacombs and Kilmaresh Mountains (above and under ground).", } monster.health = 8100 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_ANUMA, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,19 +62,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 1, summons = { - { name = "Skeleton Elite Warrior", chance = 10, interval = 2000, count = 1 } - } + { name = "Skeleton Elite Warrior", chance = 10, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -82,7 +82,7 @@ monster.voices = { chance = 10, { text = "Darkness is the mother of all knowledge!", yell = false }, { text = "Get thee gone, unworthy!", yell = false }, - { text = "The Black Sphinx will prevail!", yell = false } + { text = "The Black Sphinx will prevail!", yell = false }, } monster.loot = { @@ -94,18 +94,18 @@ monster.loot = { { name = "opal", chance = 2200, maxCount = 2 }, { name = "wand of voodoo", chance = 2200 }, { id = 31331, chance = 3400 }, -- empty honey glass - { name = "small enchanted emerald", chance = 1500, maxCount = 3 } + { name = "small enchanted emerald", chance = 1500, maxCount = 3 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -400, radius = 3, effect = CONST_ME_SMALLPLANTS, target = false }, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -450, range = 4, radius = 3, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true } + { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -450, range = 4, radius = 3, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { defense = 82, - armor = 82 + armor = 82, } monster.elements = { @@ -118,14 +118,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = -30 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/blood_hand.lua b/data-otservbr-global/monster/humans/blood_hand.lua index 42fc01e53fb..042196f4864 100644 --- a/data-otservbr-global/monster/humans/blood_hand.lua +++ b/data-otservbr-global/monster/humans/blood_hand.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 974 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Drefia." + Locations = "Drefia.", } monster.health = 700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,7 +92,7 @@ monster.loot = { { name = "horoscope", chance = 7950 }, { name = "blood tincture in a vial", chance = 15460 }, { name = "incantation notes", chance = 8820 }, - { name = "pieces of magic chalk", chance = 6120 } + { name = "pieces of magic chalk", chance = 6120 }, } monster.attacks = { @@ -100,7 +100,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -100, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, { name = "speed", interval = 2000, chance = 10, speedChange = -600, radius = 4, effect = CONST_ME_BLOCKHIT, target = true, duration = 15000 }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 15, minDamage = -120, maxDamage = -160, radius = 6, effect = CONST_ME_HITAREA, target = false } + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 15, minDamage = -120, maxDamage = -160, radius = 6, effect = CONST_ME_HITAREA, target = false }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.defenses = { armor = 48, mitigation = 1.10, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 70, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "effect", interval = 2000, chance = 10, radius = 1, effect = CONST_ME_INSECTS, target = false } + { name = "effect", interval = 2000, chance = 10, radius = 1, effect = CONST_ME_INSECTS, target = false }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/blood_priest.lua b/data-otservbr-global/monster/humans/blood_priest.lua index a6de6a3ef55..26aec7facee 100644 --- a/data-otservbr-global/monster/humans/blood_priest.lua +++ b/data-otservbr-global/monster/humans/blood_priest.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 961 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Drefia and Old Fortress." + Locations = "Drefia and Old Fortress.", } monster.health = 820 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,7 +93,7 @@ monster.loot = { { name = "horoscope", chance = 9270 }, { name = "blood tincture in a vial", chance = 14460 }, { name = "incantation notes", chance = 14660 }, - { name = "pieces of magic chalk", chance = 7770 } + { name = "pieces of magic chalk", chance = 7770 }, } monster.attacks = { @@ -102,14 +102,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -40, maxDamage = -60, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 3000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -130, range = 1, length = 7, spread = 3, effect = CONST_ME_HITAREA, target = true }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 5, minDamage = -160, maxDamage = -290, range = 1, radius = 1, target = true } + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 5, minDamage = -160, maxDamage = -290, range = 1, radius = 1, target = true }, } monster.defenses = { defense = 30, armor = 55, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 80, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 80, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/burning_gladiator.lua b/data-otservbr-global/monster/humans/burning_gladiator.lua index bddcfd412a9..70f9f4f0c1d 100644 --- a/data-otservbr-global/monster/humans/burning_gladiator.lua +++ b/data-otservbr-global/monster/humans/burning_gladiator.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 3, lookFeet = 3, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1798 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Issavi Sewers, Kilmaresh Catacombs and Kilmaresh Mountains above and under ground." + Locations = "Issavi Sewers, Kilmaresh Catacombs and Kilmaresh Mountains above and under ground.", } monster.health = 10000 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_ANUMA, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -96,7 +96,7 @@ monster.loot = { { name = "lightning boots", chance = 1400 }, { name = "spellweaver's robe", chance = 850 }, { id = 31369, chance = 570 }, -- gryphon mask - { name = "sea horse figurine", chance = 140 } + { name = "sea horse figurine", chance = 140 }, } monster.attacks = { @@ -104,7 +104,7 @@ monster.attacks = { { name = "firering", interval = 2000, chance = 10, minDamage = -300, maxDamage = -500, target = false }, { name = "firex", interval = 2000, chance = 15, minDamage = -300, maxDamage = -500, target = false }, { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -500, radius = 2, effect = CONST_ME_FIREATTACK, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -500, length = 3, spread = 0, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -500, length = 3, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/carnisylvan_sapling.lua b/data-otservbr-global/monster/humans/carnisylvan_sapling.lua index 9931b0f1201..e3bb11f9558 100644 --- a/data-otservbr-global/monster/humans/carnisylvan_sapling.lua +++ b/data-otservbr-global/monster/humans/carnisylvan_sapling.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 750 monster.maxHealth = 750 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/cobra_assassin.lua b/data-otservbr-global/monster/humans/cobra_assassin.lua index ef9ebfd0910..d5616e5e0b0 100644 --- a/data-otservbr-global/monster/humans/cobra_assassin.lua +++ b/data-otservbr-global/monster/humans/cobra_assassin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 77, lookFeet = 19, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1775 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Cobra Bastion." + Locations = "Cobra Bastion.", } monster.health = 8200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -85,14 +85,14 @@ monster.loot = { { name = "bone sword", chance = 5000 }, { name = "machete", chance = 2250 }, { name = "carlin sword", chance = 2250 }, - { id = 23533, chance = 1690 } -- ring of red plasma + { id = 23533, chance = 1690 }, -- ring of red plasma } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "wave t", interval = 2000, chance = 10, minDamage = -300, maxDamage = -380, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -280, maxDamage = -400, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -400, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -400, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/cobra_scout.lua b/data-otservbr-global/monster/humans/cobra_scout.lua index 701c86c3aeb..7aded2b24ec 100644 --- a/data-otservbr-global/monster/humans/cobra_scout.lua +++ b/data-otservbr-global/monster/humans/cobra_scout.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 102, lookFeet = 78, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.raceId = 1776 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Cobra Bastion." + Locations = "Cobra Bastion.", } monster.health = 8500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,14 +90,14 @@ monster.loot = { { id = 3039, chance = 4800 }, -- red gem { name = "sacred tree amulet", chance = 5100 }, { name = "green crystal shard", chance = 2130 }, - { id = 23533, chance = 740 } -- ring of red plasma + { id = 23533, chance = 740 }, -- ring of red plasma } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, { name = "combat", interval = 2000, chance = 22, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -450, shootEffect = CONST_ANI_SNIPERARROW, target = true }, { name = "combat", interval = 2000, chance = 16, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -420, radius = 4, shootEffect = CONST_ANI_POISONARROW, effect = CONST_ME_GREEN_RINGS, target = true }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -380, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -380, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/cobra_vizier.lua b/data-otservbr-global/monster/humans/cobra_vizier.lua index 0178f573ac6..c510c4f4385 100644 --- a/data-otservbr-global/monster/humans/cobra_vizier.lua +++ b/data-otservbr-global/monster/humans/cobra_vizier.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 67, lookFeet = 78, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1824 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Cobra Bastion." + Locations = "Cobra Bastion.", } monster.health = 8500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,20 +92,20 @@ monster.loot = { { name = "serpent sword", chance = 2420 }, { name = "violet crystal shard", chance = 2420 }, { name = "green gem", chance = 1610 }, - { name = "onyx chip", chance = 1610, maxCount = 3 } + { name = "onyx chip", chance = 1610, maxCount = 3 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -480 }, { name = "explosion wave", interval = 2000, chance = 15, minDamage = -280, maxDamage = -400, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -520, radius = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = true } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -520, radius = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = true }, } monster.defenses = { defense = 82, armor = 82, mitigation = 2.31, - { name = "speed", interval = 2000, chance = 8, speedChange = 250, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 8, speedChange = 250, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/crazed_beggar.lua b/data-otservbr-global/monster/humans/crazed_beggar.lua index 7c26c5a120e..1c98a8c4f6e 100644 --- a/data-otservbr-global/monster/humans/crazed_beggar.lua +++ b/data-otservbr-global/monster/humans/crazed_beggar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 21, lookFeet = 97, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 525 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Factory, Foreigner, and Trade Quarters in Yalahar." + Locations = "Factory, Foreigner, and Trade Quarters in Yalahar.", } monster.health = 100 @@ -35,7 +35,7 @@ monster.manaCost = 300 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -94,11 +94,11 @@ monster.loot = { { name = "sling herb", chance = 420 }, { name = "rum flask", chance = 420 }, { id = 6091, chance = 300 }, -- very noble-looking watch - { id = 8894, chance = 80 } -- heavily rusted armor + { id = 8894, chance = 80 }, -- heavily rusted armor } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, } monster.defenses = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/crypt_defiler.lua b/data-otservbr-global/monster/humans/crypt_defiler.lua index d3c3985dd0a..502c295f75e 100644 --- a/data-otservbr-global/monster/humans/crypt_defiler.lua +++ b/data-otservbr-global/monster/humans/crypt_defiler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 42, lookFeet = 75, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 868 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 2, - Locations = "Horestis Tomb." + Locations = "Horestis Tomb.", } monster.health = 185 @@ -35,7 +35,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,12 +86,12 @@ monster.loot = { { name = "nomad parchment", chance = 220 }, { name = "potato", chance = 4840, maxCount = 3 }, { name = "dirty turban", chance = 1570 }, - { name = "rope belt", chance = 4040 } + { name = "rope belt", chance = 4040 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, radius = 1, shootEffect = CONST_ANI_THROWINGSTAR, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, radius = 1, shootEffect = CONST_ANI_THROWINGSTAR, target = true }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/dark_apprentice.lua b/data-otservbr-global/monster/humans/dark_apprentice.lua index 17c305bc394..a7855678b3e 100644 --- a/data-otservbr-global/monster/humans/dark_apprentice.lua +++ b/data-otservbr-global/monster/humans/dark_apprentice.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 115, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 372 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Magician Tower, Dark Cathedral, Hero Cave, Magician Quarter." + Locations = "Magician Tower, Dark Cathedral, Hero Cave, Magician Quarter.", } monster.health = 225 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,7 +83,7 @@ monster.loot = { { name = "blank rune", chance = 8125, maxCount = 3 }, { name = "health potion", chance = 2900 }, { name = "mana potion", chance = 2980 }, - { name = "reins", chance = 10 } + { name = "reins", chance = 10 }, } monster.attacks = { @@ -92,7 +92,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -10, maxDamage = -20, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -24, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, { name = "outfit", interval = 2000, chance = 1, range = 3, shootEffect = CONST_ANI_EXPLOSION, target = true, duration = 2000, outfitMonster = "cyclops" }, - { name = "outfit", interval = 2000, chance = 1, radius = 4, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 2000, outfitItem = 2324 } + { name = "outfit", interval = 2000, chance = 1, radius = 4, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 2000, outfitItem = 2324 }, } monster.defenses = { @@ -100,7 +100,7 @@ monster.defenses = { armor = 16, mitigation = 0.30, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 30, maxDamage = 40, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "outfit", interval = 2000, chance = 5, target = true, duration = 3000, outfitMonster = "green frog" } + { name = "outfit", interval = 2000, chance = 5, target = true, duration = 3000, outfitMonster = "green frog" }, } monster.elements = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/dark_carnisylvan.lua b/data-otservbr-global/monster/humans/dark_carnisylvan.lua index 03a9d0757d8..7171a5bf066 100644 --- a/data-otservbr-global/monster/humans/dark_carnisylvan.lua +++ b/data-otservbr-global/monster/humans/dark_carnisylvan.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 19, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.raceId = 2109 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Forest of Life." + Locations = "Forest of Life.", } monster.health = 7500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -89,7 +89,7 @@ monster.loot = { { name = "spellbook of warding", chance = 3390 }, { name = "gold ring", chance = 780 }, { name = "butterfly ring", chance = 520 }, - { name = "human teeth", chance = 1040 } + { name = "human teeth", chance = 1040 }, } monster.attacks = { @@ -103,7 +103,7 @@ monster.defenses = { armor = 41, mitigation = 0.91, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 80, maxDamage = 210, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = 330, effect = CONST_ME_HITAREA, target = false, duration = 8000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 330, effect = CONST_ME_HITAREA, target = false, duration = 8000 }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/dark_magician.lua b/data-otservbr-global/monster/humans/dark_magician.lua index 2fa90452cf2..37a81aa987d 100644 --- a/data-otservbr-global/monster/humans/dark_magician.lua +++ b/data-otservbr-global/monster/humans/dark_magician.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 51, lookFeet = 131, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.raceId = 371 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Hero Cave (Edron), Magician Tower, Dark Cathedral and Yalahar Academy of Magic in \z - Magician Quarter and a single one on The Witches' Cliff (only accessible during a quest)." + Magician Quarter and a single one on The Witches' Cliff (only accessible during a quest).", } monster.health = 325 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,13 +84,13 @@ monster.loot = { { name = "strong mana potion", chance = 2860 }, { name = "health potion", chance = 12000 }, { name = "mana potion", chance = 11900 }, - { name = "reins", chance = 20 } + { name = "reins", chance = 20 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -5, maxDamage = -40, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -20, maxDamage = -30, range = 7, shootEffect = CONST_ANI_ENERGY, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -20, maxDamage = -30, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, } monster.defenses = { @@ -98,7 +98,7 @@ monster.defenses = { armor = 15, mitigation = 0.64, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 60, maxDamage = 80, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/dark_monk.lua b/data-otservbr-global/monster/humans/dark_monk.lua index 3d4be1fa1ea..49710f169f4 100644 --- a/data-otservbr-global/monster/humans/dark_monk.lua +++ b/data-otservbr-global/monster/humans/dark_monk.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 225 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Dark Cathedral, Vandura (Cult Cave), Foreigner Quarter." + Locations = "Dark Cathedral, Vandura (Cult Cave), Foreigner Quarter.", } monster.health = 190 @@ -35,7 +35,7 @@ monster.manaCost = 480 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -91,12 +91,12 @@ monster.loot = { { name = "book of prayers", chance = 1900 }, { name = "dark rosary", chance = 10500 }, { name = "rope belt", chance = 6666 }, - { name = "safety pin", chance = 990 } + { name = "safety pin", chance = 990 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -50, range = 1, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -50, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -104,7 +104,7 @@ monster.defenses = { armor = 22, mitigation = 1.13, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 25, maxDamage = 49, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/enlightened_of_the_cult.lua b/data-otservbr-global/monster/humans/enlightened_of_the_cult.lua index 941e7d2e9b1..d88f9985d8a 100644 --- a/data-otservbr-global/monster/humans/enlightened_of_the_cult.lua +++ b/data-otservbr-global/monster/humans/enlightened_of_the_cult.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 252 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Goroma, Formorgar Mines, Magician Quarter, Forbidden Temple." + Locations = "Goroma, Formorgar Mines, Magician Quarter, Forbidden Temple.", } monster.health = 700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -74,8 +74,8 @@ monster.summon = { maxSummons = 2, summons = { { name = "Crypt Shambler", chance = 10, interval = 2000, count = 1 }, - { name = "Ghost", chance = 10, interval = 2000, count = 1 } - } + { name = "Ghost", chance = 10, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -105,14 +105,14 @@ monster.loot = { { name = "strong mana potion", chance = 740 }, { name = "cultish mask", chance = 10250 }, { name = "cultish symbol", chance = 890 }, - { name = "broken key ring", chance = 100 } + { name = "broken key ring", chance = 100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -70, maxDamage = -185, range = 1, radius = 1, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYAREA, target = true }, { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYDAMAGE, target = true, duration = 5000 }, - { name = "speed", interval = 2000, chance = 10, speedChange = -360, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 6000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -360, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 6000 }, } monster.defenses = { @@ -120,7 +120,7 @@ monster.defenses = { armor = 40, mitigation = 1.18, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 60, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_YELLOW_RINGS } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_YELLOW_RINGS }, } monster.elements = { @@ -140,7 +140,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/feverish_citizen.lua b/data-otservbr-global/monster/humans/feverish_citizen.lua index e268d47bb36..885387e6f00 100644 --- a/data-otservbr-global/monster/humans/feverish_citizen.lua +++ b/data-otservbr-global/monster/humans/feverish_citizen.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 719 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 2, - Locations = "Venore." + Locations = "Venore.", } monster.health = 125 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -91,19 +91,19 @@ monster.loot = { { name = "voluminous piece of cloth", chance = 2290 }, { name = "obvious piece of cloth", chance = 2006 }, { name = "ludicrous piece of cloth", chance = 2060 }, - { name = "luminous piece of cloth", chance = 2290 } + { name = "luminous piece of cloth", chance = 2290 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -18 }, - { name = "drunk", interval = 2000, chance = 15, length = 3, spread = 2, effect = CONST_ME_POISONAREA, target = false, duration = 3000 } + { name = "drunk", interval = 2000, chance = 15, length = 3, spread = 2, effect = CONST_ME_POISONAREA, target = false, duration = 3000 }, } monster.defenses = { defense = 15, armor = 14, mitigation = 0.25, - { name = "outfit", interval = 2000, chance = 1, radius = 3, effect = CONST_ME_GREEN_RINGS, target = false, duration = 5000, outfitMonster = "bog raider" } + { name = "outfit", interval = 2000, chance = 1, radius = 3, effect = CONST_ME_GREEN_RINGS, target = false, duration = 5000, outfitMonster = "bog raider" }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/gang_member.lua b/data-otservbr-global/monster/humans/gang_member.lua index 1a3a5ffceb3..9618d96ff31 100644 --- a/data-otservbr-global/monster/humans/gang_member.lua +++ b/data-otservbr-global/monster/humans/gang_member.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 23, lookFeet = 40, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 526 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Throughout the Foreigner, Factory, and Trade Quarters in Yalahar." + Locations = "Throughout the Foreigner, Factory, and Trade Quarters in Yalahar.", } monster.health = 295 @@ -35,7 +35,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -81,11 +81,11 @@ monster.loot = { { name = "gold coin", chance = 50110, maxCount = 30 }, { id = 3093, chance = 740 }, -- club ring { name = "studded legs", chance = 5220 }, - { name = "leather legs", chance = 15330 } + { name = "leather legs", chance = 15330 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, } monster.defenses = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/gladiator.lua b/data-otservbr-global/monster/humans/gladiator.lua index 14e7383577c..c08cf75c50c 100644 --- a/data-otservbr-global/monster/humans/gladiator.lua +++ b/data-otservbr-global/monster/humans/gladiator.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 79, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 527 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Trade Quarter, Arena and Zoo Quarter." + Locations = "Trade Quarter, Arena and Zoo Quarter.", } monster.health = 185 @@ -35,7 +35,7 @@ monster.manaCost = 470 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -86,18 +86,18 @@ monster.loot = { { name = "steel shield", chance = 840 }, { name = "plate shield", chance = 9950 }, { name = "meat", chance = 19000 }, - { name = "belted cape", chance = 340 } + { name = "belted cape", chance = 340 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, } monster.defenses = { defense = 25, armor = 14, mitigation = 0.78, - { name = "speed", interval = 2000, chance = 15, speedChange = 215, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 215, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/glooth_bandit.lua b/data-otservbr-global/monster/humans/glooth_bandit.lua index bbdd69adbba..1f46812490f 100644 --- a/data-otservbr-global/monster/humans/glooth_bandit.lua +++ b/data-otservbr-global/monster/humans/glooth_bandit.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 114, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1119 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Underground Glooth Factory." + Locations = "Underground Glooth Factory.", } monster.health = 2600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -102,19 +102,19 @@ monster.loot = { { id = 3344, chance = 1000 }, -- beastslayer axe { id = 21183, chance = 500 }, -- glooth amulet { id = 813, chance = 500 }, -- terra boots - { id = 812, chance = 500 } -- terra legs + { id = 812, chance = 500 }, -- terra legs } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 80, attack = 68 }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -60, maxDamage = -200, range = 8, shootEffect = CONST_ANI_ARROW, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -60, maxDamage = -200, range = 8, shootEffect = CONST_ANI_ARROW, target = false }, } monster.defenses = { defense = 32, armor = 46, mitigation = 1.65, - { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -134,7 +134,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/glooth_brigand.lua b/data-otservbr-global/monster/humans/glooth_brigand.lua index 34b5afb7e96..6de0f2eed41 100644 --- a/data-otservbr-global/monster/humans/glooth_brigand.lua +++ b/data-otservbr-global/monster/humans/glooth_brigand.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 110, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1120 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Underground Glooth Factory." + Locations = "Underground Glooth Factory.", } monster.health = 2400 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -99,19 +99,19 @@ monster.loot = { { id = 21167, chance = 502 }, -- heat core { id = 21158, chance = 502 }, -- glooth spear { id = 21165, chance = 502 }, -- rubber cap - { id = 830, chance = 502 } -- terra hood + { id = 830, chance = 502 }, -- terra hood } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 80, attack = 68 }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -40, maxDamage = -200, range = 8, shootEffect = CONST_ANI_ARROW, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -40, maxDamage = -200, range = 8, shootEffect = CONST_ANI_ARROW, target = false }, } monster.defenses = { defense = 26, armor = 51, mitigation = 1.74, - { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 200, maxDamage = 245, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 200, maxDamage = 245, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/grave_robber.lua b/data-otservbr-global/monster/humans/grave_robber.lua index ca5cec23e7a..4a9a1c62138 100644 --- a/data-otservbr-global/monster/humans/grave_robber.lua +++ b/data-otservbr-global/monster/humans/grave_robber.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 57, lookFeet = 19, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 867 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 2, - Locations = "Horestis Tomb." + Locations = "Horestis Tomb.", } monster.health = 165 @@ -35,7 +35,7 @@ monster.manaCost = 435 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -82,13 +82,13 @@ monster.loot = { { name = "nomad parchment", chance = 170 }, { name = "potato", chance = 5680, maxCount = 3 }, { name = "dirty turban", chance = 1700 }, - { name = "rope belt", chance = 7510 } + { name = "rope belt", chance = 7510 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -100, maxDamage = -160, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -100, maxDamage = -160, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/hardened_usurper_archer.lua b/data-otservbr-global/monster/humans/hardened_usurper_archer.lua index a34e2c700fa..cbfe82cd9eb 100644 --- a/data-otservbr-global/monster/humans/hardened_usurper_archer.lua +++ b/data-otservbr-global/monster/humans/hardened_usurper_archer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 21, lookFeet = 21, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 7300 @@ -25,7 +25,7 @@ monster.enemyFactions = { FACTION_LION, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,14 +62,13 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -430, range = 7, shootEffect = CONST_ANI_BURSTARROW, target = true }, { name = "combat", interval = 6000, chance = 8, type = COMBAT_DEATHDAMAGE, minDamage = -160, maxDamage = -485, range = 7, shootEffect = CONST_ANI_SMALLHOLY, target = true }, { name = "combat", interval = 4000, chance = 6, type = COMBAT_DEATHDAMAGE, minDamage = -160, maxDamage = -545, range = 7, effect = CONST_ME_MORTAREA, shootEffect = CONST_ANI_SUDDENDEATH, target = true }, - { name = "combat", interval = 4000, chance = 6, type = COMBAT_ICEDAMAGE, minDamage = -150, maxDamage = -425, radius = 3, effect = CONST_ME_ICEAREA, target = true } + { name = "combat", interval = 4000, chance = 6, type = COMBAT_ICEDAMAGE, minDamage = -150, maxDamage = -425, radius = 3, effect = CONST_ME_ICEAREA, target = true }, } monster.defenses = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/hardened_usurper_knight.lua b/data-otservbr-global/monster/humans/hardened_usurper_knight.lua index 86ba2a3d68e..341b85f2de2 100644 --- a/data-otservbr-global/monster/humans/hardened_usurper_knight.lua +++ b/data-otservbr-global/monster/humans/hardened_usurper_knight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 76, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 8200 @@ -25,7 +25,7 @@ monster.enemyFactions = { FACTION_LION, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,21 +62,20 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 6000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, radius = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 6000, chance = 13, type = COMBAT_ICEDAMAGE, minDamage = -150, maxDamage = -400, length = 4, spread = 0, effect = CONST_ME_ICEATTACK, target = false }, - { name = "singlecloudchain", interval = 8000, chance = 12, minDamage = -200, maxDamage = -450, range = 4, effect = CONST_ME_ENERGYHIT, target = true } + { name = "singlecloudchain", interval = 8000, chance = 12, minDamage = -200, maxDamage = -450, range = 4, effect = CONST_ME_ENERGYHIT, target = true }, } monster.defenses = { defense = 86, armor = 0, -- mitigation = ???, - { name = "combat", interval = 4000, chance = 40, type = COMBAT_HEALING, minDamage = 200, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 40, type = COMBAT_HEALING, minDamage = 200, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/hardened_usurper_warlock.lua b/data-otservbr-global/monster/humans/hardened_usurper_warlock.lua index 72a5400d4fb..04282653df3 100644 --- a/data-otservbr-global/monster/humans/hardened_usurper_warlock.lua +++ b/data-otservbr-global/monster/humans/hardened_usurper_warlock.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 21, lookFeet = 21, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 7500 @@ -25,7 +25,7 @@ monster.enemyFactions = { FACTION_LION, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,14 +62,13 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250, effect = CONST_ME_DRAWBLOOD }, { name = "singledeathchain", interval = 6000, chance = 7, minDamage = -250, maxDamage = -530, range = 5, effect = CONST_ME_MORTAREA, target = true }, { name = "singleicechain", interval = 6000, chance = 8, minDamage = -150, maxDamage = -450, range = 5, effect = CONST_ME_ICEATTACK, target = true }, - { name = "combat", interval = 4000, chance = 11, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -450, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true } -- avalanche + { name = "combat", interval = 4000, chance = 11, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -450, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, -- avalanche } monster.defenses = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/hero.lua b/data-otservbr-global/monster/humans/hero.lua index c156aeab956..401a41b9025 100644 --- a/data-otservbr-global/monster/humans/hero.lua +++ b/data-otservbr-global/monster/humans/hero.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 73 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "In Hero Cave in Edron, it has many rooms with many kinds of monsters and different amounts of Heroes. \z - Also in Magician Quarter, accompanied by other monsters. Old Fortress." + Also in Magician Quarter, accompanied by other monsters. Old Fortress.", } monster.health = 1400 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -105,19 +105,19 @@ monster.loot = { { name = "sniper arrow", chance = 11400, maxCount = 4 }, { name = "great health potion", chance = 720 }, { name = "small notebook", chance = 930 }, - { name = "scroll of heroic deeds", chance = 5000 } + { name = "scroll of heroic deeds", chance = 5000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -120, range = 7, shootEffect = CONST_ANI_ARROW, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -120, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, } monster.defenses = { defense = 40, armor = 35, mitigation = 1.32, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -137,7 +137,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/hulking_carnisylvan.lua b/data-otservbr-global/monster/humans/hulking_carnisylvan.lua index a689975f629..46cd198afc0 100644 --- a/data-otservbr-global/monster/humans/hulking_carnisylvan.lua +++ b/data-otservbr-global/monster/humans/hulking_carnisylvan.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 20, lookFeet = 57, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2107 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Forest of Life." + Locations = "Forest of Life.", } monster.health = 8600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,7 +86,7 @@ monster.loot = { { name = "diamond sceptre", chance = 4320 }, { name = "epee", chance = 2590 }, { name = "war hammer", chance = 3750 }, - { name = "human teeth", chance = 580 } + { name = "human teeth", chance = 580 }, } monster.attacks = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/hunter.lua b/data-otservbr-global/monster/humans/hunter.lua index acd399538b4..aa585caf39e 100644 --- a/data-otservbr-global/monster/humans/hunter.lua +++ b/data-otservbr-global/monster/humans/hunter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 120, lookFeet = 115, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 11 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "North of Mount Sternum, Plains of Havoc, Outlaw Camp, Dark Cathedral, Femor Hills, \z Maze of Lost Souls, north of the Amazon Camp, at the entrance and in the Hero Cave, \z - a castle tower at Elvenbane, Trade Quarter, Smuggler camp on Tyrsung, Formorgar Mines." + a castle tower at Elvenbane, Trade Quarter, Smuggler camp on Tyrsung, Formorgar Mines.", } monster.health = 150 @@ -37,7 +37,7 @@ monster.manaCost = 530 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,12 +95,12 @@ monster.loot = { { id = 7394, chance = 190 }, -- wolf trophy { id = 7397, chance = 520 }, -- deer trophy { id = 7400, chance = 70 }, -- lion trophy - { name = "hunter's quiver", chance = 10240 } + { name = "hunter's quiver", chance = 10240 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ARROW, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, } monster.defenses = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/ice_witch.lua b/data-otservbr-global/monster/humans/ice_witch.lua index b2596f22540..8d913366921 100644 --- a/data-otservbr-global/monster/humans/ice_witch.lua +++ b/data-otservbr-global/monster/humans/ice_witch.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 86, lookFeet = 86, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 331 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Ice Witch Temple, tower in Krimhorn, caves around Hrodmir ('camps' area), \z - Formorgar Glacier deepest mines, Magician Quarter in Yalahar (Level 60 Requirement Door)." + Formorgar Glacier deepest mines, Magician Quarter in Yalahar (Level 60 Requirement Door).", } monster.health = 650 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { name = "crystal sword", chance = 400 }, { name = "pair of earmuffs", chance = 90 }, { name = "strong mana potion", chance = 820 }, - { name = "glacier shoes", chance = 280 } + { name = "glacier shoes", chance = 280 }, } monster.attacks = { @@ -95,14 +95,14 @@ monster.attacks = { { name = "outfit", interval = 2000, chance = 1, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitItem = 7172 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -60, maxDamage = -130, length = 5, spread = 2, effect = CONST_ME_ICETORNADO, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -55, maxDamage = -115, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false, duration = 20000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false, duration = 20000 }, } monster.defenses = { defense = 20, armor = 70, mitigation = 0.91, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 90, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 90, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/infernalist.lua b/data-otservbr-global/monster/humans/infernalist.lua index ba082dd107b..d662f5fa270 100644 --- a/data-otservbr-global/monster/humans/infernalist.lua +++ b/data-otservbr-global/monster/humans/infernalist.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 39, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.raceId = 529 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Magician Quarter, Hero Cave, Demona, Fury Dungeon." + Locations = "Magician Quarter, Hero Cave, Demona, Fury Dungeon.", } monster.health = 3650 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -70,8 +70,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "fire elemental", chance = 20, interval = 2000, count = 1 } - } + { name = "fire elemental", chance = 20, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -101,7 +101,7 @@ monster.loot = { { name = "royal tapestry", chance = 520 }, { id = 9056, chance = 820 }, -- black skull { name = "gold ingot", chance = 70 }, - { name = "crystal of power", chance = 220 } + { name = "crystal of power", chance = 220 }, } monster.attacks = { @@ -111,7 +111,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -53, maxDamage = -120, range = 7, radius = 3, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_TELEPORT, target = true }, { name = "firefield", interval = 2000, chance = 15, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -150, radius = 2, effect = CONST_ME_EXPLOSIONAREA, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -150, radius = 2, effect = CONST_ME_EXPLOSIONAREA, target = false }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.defenses = { armor = 33, mitigation = 1.15, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 60, maxDamage = 230, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -139,7 +139,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/lion_archer.lua b/data-otservbr-global/monster/humans/lion_archer.lua index 764bb5f4f3b..706a398a613 100644 --- a/data-otservbr-global/monster/humans/lion_archer.lua +++ b/data-otservbr-global/monster/humans/lion_archer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 57, lookFeet = 57, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 7300 @@ -25,7 +25,7 @@ monster.enemyFactions = { FACTION_LIONUSURPERS } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -66,7 +66,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, range = 7, shootEffect = CONST_ANI_BURSTARROW, target = true }, { name = "combat", interval = 6000, chance = 22, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -500, range = 7, radius = 4, effect = CONST_ME_HOLYAREA, target = true }, { name = "combat", interval = 4000, chance = 12, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -500, range = 7, effect = CONST_ME_HOLYDAMAGE, target = true }, - { name = "combat", interval = 4000, chance = 17, type = COMBAT_ICEDAMAGE, minDamage = -400, maxDamage = -500, radius = 3, effect = CONST_ME_ICEAREA, target = false } + { name = "combat", interval = 4000, chance = 17, type = COMBAT_ICEDAMAGE, minDamage = -400, maxDamage = -500, radius = 3, effect = CONST_ME_ICEAREA, target = false }, } monster.defenses = { @@ -92,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/lion_knight.lua b/data-otservbr-global/monster/humans/lion_knight.lua index fb5d13c242a..c6f40217737 100644 --- a/data-otservbr-global/monster/humans/lion_knight.lua +++ b/data-otservbr-global/monster/humans/lion_knight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 57, lookFeet = 57, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 8200 @@ -25,7 +25,7 @@ monster.enemyFactions = { FACTION_LIONUSURPERS } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,7 +65,7 @@ monster.voices = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 6000, chance = 12, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -500, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, - { name = "combat", interval = 4000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -500, range = 5, radius = 3, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_HOLYAREA, target = true } + { name = "combat", interval = 4000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -500, range = 5, radius = 3, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_HOLYAREA, target = true }, } monster.defenses = { @@ -91,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/lion_warlock.lua b/data-otservbr-global/monster/humans/lion_warlock.lua index 79eadb4a335..3919c51fc69 100644 --- a/data-otservbr-global/monster/humans/lion_warlock.lua +++ b/data-otservbr-global/monster/humans/lion_warlock.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 96, lookFeet = 76, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 7500 @@ -25,7 +25,7 @@ monster.enemyFactions = { FACTION_LIONUSURPERS } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -66,7 +66,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 6000, chance = 22, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -500, range = 7, radius = 4, effect = CONST_ME_HOLYAREA, target = true }, { name = "combat", interval = 6000, chance = 12, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -500, range = 7, effect = CONST_ME_HOLYDAMAGE, target = true }, - { name = "combat", interval = 4000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -450, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true } -- avalanche + { name = "combat", interval = 4000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -450, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, -- avalanche } monster.defenses = { @@ -92,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/mad_scientist.lua b/data-otservbr-global/monster/humans/mad_scientist.lua index 1580774becf..e33ce268bea 100644 --- a/data-otservbr-global/monster/humans/mad_scientist.lua +++ b/data-otservbr-global/monster/humans/mad_scientist.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 20, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 528 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Magician Quarter, Trade Quarter, Factory Quarter,Isle of Evil, Tiquanda Laboratory." + Locations = "Magician Quarter, Trade Quarter, Factory Quarter,Isle of Evil, Tiquanda Laboratory.", } monster.health = 325 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,21 +86,21 @@ monster.loot = { { name = "mastermind potion", chance = 130 }, { name = "health potion", chance = 19000 }, { name = "mana potion", chance = 19000 }, - { name = "small enchanted amethyst", chance = 470 } + { name = "small enchanted amethyst", chance = 470 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -20, maxDamage = -56, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POFF, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -20, maxDamage = -36, shootEffect = CONST_ANI_POISON, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_SMALLPLANTS, target = true, duration = 2000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_SMALLPLANTS, target = true, duration = 2000 }, } monster.defenses = { defense = 15, armor = 15, mitigation = 0.64, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/monk.lua b/data-otservbr-global/monster/humans/monk.lua index c82f425442f..cf168ca7af9 100644 --- a/data-otservbr-global/monster/humans/monk.lua +++ b/data-otservbr-global/monster/humans/monk.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 57 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Edron Hero Cave, Triangle Tower near Thais, Maze of Lost Souls, Deeper Dark Cathedral, \z - Isle of the Kings, Trade Quarter." + Isle of the Kings, Trade Quarter.", } monster.health = 240 @@ -36,7 +36,7 @@ monster.manaCost = 600 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,11 +91,11 @@ monster.loot = { { name = "bread", chance = 20000 }, { name = "book of prayers", chance = 4930 }, { name = "rope belt", chance = 2950 }, - { name = "safety pin", chance = 1001 } + { name = "safety pin", chance = 1001 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, } monster.defenses = { @@ -103,7 +103,7 @@ monster.defenses = { armor = 25, mitigation = 1.37, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 30, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/monk_of_the_order.lua b/data-otservbr-global/monster/humans/monk_of_the_order.lua index 44855543fa1..fcc9c4fb82b 100644 --- a/data-otservbr-global/monster/humans/monk_of_the_order.lua +++ b/data-otservbr-global/monster/humans/monk_of_the_order.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 240 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,7 +62,7 @@ monster.voices = { } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, } monster.defenses = { @@ -70,7 +70,7 @@ monster.defenses = { armor = 0, -- mitigation = ???, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 30, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -90,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/mutated_human.lua b/data-otservbr-global/monster/humans/mutated_human.lua index bac009ae069..1b267a8e260 100644 --- a/data-otservbr-global/monster/humans/mutated_human.lua +++ b/data-otservbr-global/monster/humans/mutated_human.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 521 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Alchemist Quarter and Factory Quarter (Yalahar), Robson's Isle, Tiquanda Laboratory." + Locations = "Alchemist Quarter and Factory Quarter (Yalahar), Robson's Isle, Tiquanda Laboratory.", } monster.health = 240 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,7 +91,7 @@ monster.loot = { { name = "worm", chance = 7110, maxCount = 2 }, { name = "peanut", chance = 580 }, { id = 8894, chance = 190 }, -- heavily rusted armor - { name = "mutated flesh", chance = 19940 } + { name = "mutated flesh", chance = 19940 }, } monster.attacks = { @@ -99,14 +99,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -60, length = 3, spread = 1, effect = CONST_ME_POISONAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -190, maxDamage = -280, effect = CONST_ME_HITBYPOISON, target = true }, - { name = "speed", interval = 2000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_STUN, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_STUN, target = true, duration = 30000 }, } monster.defenses = { defense = 15, armor = 14, mitigation = 0.59, - { name = "speed", interval = 2000, chance = 15, speedChange = 220, effect = CONST_ME_GREEN_RINGS, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 220, effect = CONST_ME_GREEN_RINGS, target = false, duration = 5000 }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/necromancer.lua b/data-otservbr-global/monster/humans/necromancer.lua index c61ff431390..7e726147346 100644 --- a/data-otservbr-global/monster/humans/necromancer.lua +++ b/data-otservbr-global/monster/humans/necromancer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 9 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "All the Tombs, Lich Hell, Drefia, Medusa Shield Quest room, Old Fortress, Old Masonry, \z - beneath Fenrock, Cemetery Quarter and Magician Quarter." + beneath Fenrock, Cemetery Quarter and Magician Quarter.", } monster.health = 580 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.summon = { summons = { { name = "Ghoul", chance = 15, interval = 2000, count = 1 }, { name = "Ghost", chance = 5, interval = 2000, count = 1 }, - { name = "Mummy", chance = 5, interval = 2000, count = 1 } - } + { name = "Mummy", chance = 5, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -96,20 +96,20 @@ monster.loot = { { name = "strong mana potion", chance = 300 }, { name = "spellbook of warding", chance = 130 }, { name = "book of necromantic rituals", chance = 10130 }, - { name = "necromantic robe", chance = 1001 } + { name = "necromantic robe", chance = 1001 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -120, range = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -65, maxDamage = -120, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -65, maxDamage = -120, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 25, armor = 50, mitigation = 1.04, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/necromancer_servant.lua b/data-otservbr-global/monster/humans/necromancer_servant.lua index 0507c877235..87ef0c03885 100644 --- a/data-otservbr-global/monster/humans/necromancer_servant.lua +++ b/data-otservbr-global/monster/humans/necromancer_servant.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 600 monster.maxHealth = 600 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,12 +59,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, - { name = "combat", interval = 1000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -5, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 1000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -5, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { @@ -91,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/nomad.lua b/data-otservbr-global/monster/humans/nomad.lua index 8fd4ad2ad66..d656857b42f 100644 --- a/data-otservbr-global/monster/humans/nomad.lua +++ b/data-otservbr-global/monster/humans/nomad.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 40, lookFeet = 3, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 310 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 1, Locations = "Ankrahmun Pharaoh Tombs, Deeper Drefia, Kha'zeel Mountains, Northern Darama Desert, \z - Southern Darama Desert, Yalahar Foreigner Quarter, Yalahar Trade Quarter." + Southern Darama Desert, Yalahar Foreigner Quarter, Yalahar Trade Quarter.", } monster.health = 160 @@ -36,7 +36,7 @@ monster.manaCost = 420 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,12 +60,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -74,7 +74,7 @@ monster.voices = { { text = "We are the true sons of the desert!", yell = false }, { text = "I will leave your remains to the vultures!", yell = false }, { text = "Your riches will be mine!", yell = false }, - { text = "We are swift as the wind of the desert!", yell = false } + { text = "We are swift as the wind of the desert!", yell = false }, } monster.loot = { @@ -87,17 +87,17 @@ monster.loot = { { name = "nomad parchment", chance = 200 }, { name = "potato", chance = 4840, maxCount = 3 }, { name = "dirty turban", chance = 2160 }, - { name = "rope belt", chance = 6420 } + { name = "rope belt", chance = 6420 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, radius = 1, effect = CONST_ME_SOUND_WHITE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, radius = 1, effect = CONST_ME_SOUND_WHITE, target = false }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -110,14 +110,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 20 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/nomad_blue.lua b/data-otservbr-global/monster/humans/nomad_blue.lua index 3f0382e1119..02465d966f7 100644 --- a/data-otservbr-global/monster/humans/nomad_blue.lua +++ b/data-otservbr-global/monster/humans/nomad_blue.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 49, lookFeet = 3, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 777 @@ -24,7 +24,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 1, - Locations = "Drefia, Ankrahmun." + Locations = "Drefia, Ankrahmun.", } monster.health = 160 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,12 +59,12 @@ monster.flags = { healthHidden = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -73,7 +73,7 @@ monster.voices = { { text = "I will leave your remains to the vultures!", yell = false }, { text = "We are the true sons of the desert!", yell = false }, { text = "We are swift as the wind of the desert!", yell = false }, - { text = "Your riches will be mine!", yell = false } + { text = "Your riches will be mine!", yell = false }, } monster.loot = { @@ -86,17 +86,17 @@ monster.loot = { { id = 11456, chance = 2140 }, -- dirty turban { id = 3409, chance = 900 }, -- steel shield { id = 3353, chance = 660 }, -- iron helmet - { id = 7533, chance = 210 } -- nomad parchment + { id = 7533, chance = 210 }, -- nomad parchment } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_SOUND_WHITE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_SOUND_WHITE, target = false }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -109,14 +109,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 20 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/nomad_female.lua b/data-otservbr-global/monster/humans/nomad_female.lua index 9d70cb1cc9a..2703f84d4c6 100644 --- a/data-otservbr-global/monster/humans/nomad_female.lua +++ b/data-otservbr-global/monster/humans/nomad_female.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 40, lookFeet = 3, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 776 @@ -24,7 +24,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 1, - Locations = "Drefia, Ankrahmun." + Locations = "Drefia, Ankrahmun.", } monster.health = 160 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,12 +60,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -74,7 +74,7 @@ monster.voices = { { text = "I will leave your remains to the vultures!", yell = false }, { text = "We are the true sons of the desert!", yell = false }, { text = "We are swift as the wind of the desert!", yell = false }, - { text = "Your riches will be mine!", yell = false } + { text = "Your riches will be mine!", yell = false }, } monster.loot = { @@ -87,17 +87,17 @@ monster.loot = { { id = 11456, chance = 2140 }, -- dirty turban { id = 3409, chance = 900 }, -- steel shield { id = 3353, chance = 660 }, -- iron helmet - { id = 7533, chance = 210 } -- nomad parchment + { id = 7533, chance = 210 }, -- nomad parchment } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, radius = 1, effect = CONST_ME_SOUND_WHITE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, radius = 1, effect = CONST_ME_SOUND_WHITE, target = false }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -110,14 +110,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 20 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/novice_of_the_cult.lua b/data-otservbr-global/monster/humans/novice_of_the_cult.lua index 7ee9aa40cfc..5803fcdfedf 100644 --- a/data-otservbr-global/monster/humans/novice_of_the_cult.lua +++ b/data-otservbr-global/monster/humans/novice_of_the_cult.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 255 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Liberty Bay Cult Cave, Formorgar Mines, Yalahar Magician Quarter, \z - in the caves on top of the Hrodmir mountains." + in the caves on top of the Hrodmir mountains.", } monster.health = 285 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -74,8 +74,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "Chicken", chance = 10, interval = 2000, count = 1 } - } + { name = "Chicken", chance = 10, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -97,19 +97,19 @@ monster.loot = { { name = "pirate voodoo doll", chance = 520 }, { id = 6087, chance = 970 }, -- music sheet { name = "cultish robe", chance = 1030 }, - { name = "rope belt", chance = 5910 } + { name = "rope belt", chance = 5910 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -65, condition = { type = CONDITION_POISON, totalDamage = 1, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -80, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -80, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { defense = 15, armor = 15, mitigation = 0.62, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 20, maxDamage = 40, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 20, maxDamage = 40, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/pirate_buccaneer.lua b/data-otservbr-global/monster/humans/pirate_buccaneer.lua index bd3182e9cd7..10a1fbf9606 100644 --- a/data-otservbr-global/monster/humans/pirate_buccaneer.lua +++ b/data-otservbr-global/monster/humans/pirate_buccaneer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 249 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Nargor, Tyrsung on the ship, Yalahar Foreign Quarter, Krailos Steppe and The Cave." + Locations = "Nargor, Tyrsung on the ship, Yalahar Foreign Quarter, Krailos Steppe and The Cave.", } monster.health = 425 @@ -35,7 +35,7 @@ monster.manaCost = 595 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -92,12 +92,12 @@ monster.loot = { { name = "eye patch", chance = 420 }, { name = "peg leg", chance = 510 }, { name = "strong health potion", chance = 670 }, - { name = "compass", chance = 9780 } + { name = "compass", chance = 9780 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 4, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 4, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/pirate_corsair.lua b/data-otservbr-global/monster/humans/pirate_corsair.lua index 6eba91e1d61..c67c9adde21 100644 --- a/data-otservbr-global/monster/humans/pirate_corsair.lua +++ b/data-otservbr-global/monster/humans/pirate_corsair.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 250 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Nargor, Trade Quarter, Foreigner Quarter Dock, Krailos Steppe During a World Change." + Locations = "Nargor, Trade Quarter, Foreigner Quarter Dock, Krailos Steppe During a World Change.", } monster.health = 675 @@ -35,7 +35,7 @@ monster.manaCost = 775 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -92,13 +92,13 @@ monster.loot = { { name = "peg leg", chance = 600 }, { name = "strong health potion", chance = 820 }, { name = "compass", chance = 11050 }, - { name = "compass", chance = 11020 } + { name = "compass", chance = 11020 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -170 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, range = 3, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, - { name = "pirate corsair skill reducer", interval = 2000, chance = 5, target = false } + { name = "pirate corsair skill reducer", interval = 2000, chance = 5, target = false }, } monster.defenses = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/pirate_cutthroat.lua b/data-otservbr-global/monster/humans/pirate_cutthroat.lua index 8c16f02c5dd..bf4eed45a57 100644 --- a/data-otservbr-global/monster/humans/pirate_cutthroat.lua +++ b/data-otservbr-global/monster/humans/pirate_cutthroat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 248 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Nargor, Tyrsung on the ship, Yalahar, Krailos Steppe and The Cave." + Locations = "Nargor, Tyrsung on the ship, Yalahar, Krailos Steppe and The Cave.", } monster.health = 325 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -88,12 +88,12 @@ monster.loot = { { name = "hook", chance = 550 }, { name = "eye patch", chance = 450 }, { name = "peg leg", chance = 500 }, - { name = "compass", chance = 10120 } + { name = "compass", chance = 10120 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -170, condition = { type = CONDITION_POISON, totalDamage = 10, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -95, range = 3, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -95, range = 3, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/pirate_marauder.lua b/data-otservbr-global/monster/humans/pirate_marauder.lua index 32c18b13a61..33abb0b1e7d 100644 --- a/data-otservbr-global/monster/humans/pirate_marauder.lua +++ b/data-otservbr-global/monster/humans/pirate_marauder.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 247 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Nargor, Tyrsung, Yalahar, Krailos Steppe, The Cave." + Locations = "Nargor, Tyrsung, Yalahar, Krailos Steppe, The Cave.", } monster.health = 210 @@ -35,7 +35,7 @@ monster.manaCost = 490 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -90,12 +90,12 @@ monster.loot = { { name = "hook", chance = 520 }, { name = "eye patch", chance = 530 }, { name = "peg leg", chance = 520 }, - { name = "compass", chance = 9720 } + { name = "compass", chance = 9720 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, shootEffect = CONST_ANI_SPEAR, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/poacher.lua b/data-otservbr-global/monster/humans/poacher.lua index 09efe0b358b..ac986ea1683 100644 --- a/data-otservbr-global/monster/humans/poacher.lua +++ b/data-otservbr-global/monster/humans/poacher.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 118, lookFeet = 116, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 376 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "South of Elvenbane and Ab'Dendriel, Ferngrims Gate, Northeast of Carlin, \z - Edron Hunter Camps, Yalahar - Trade Quarter and Foreigner Quarter." + Edron Hunter Camps, Yalahar - Trade Quarter and Foreigner Quarter.", } monster.health = 90 @@ -36,7 +36,7 @@ monster.manaCost = 530 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -84,12 +84,12 @@ monster.loot = { { name = "poison arrow", chance = 2930, maxCount = 3 }, { id = 3481, chance = 710 }, -- closed trap { name = "leather legs", chance = 26740 }, - { name = "roll", chance = 11110, maxCount = 2 } + { name = "roll", chance = 11110, maxCount = 2 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -35, range = 7, shootEffect = CONST_ANI_ARROW, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -35, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/poisonous_carnisylvan.lua b/data-otservbr-global/monster/humans/poisonous_carnisylvan.lua index 2599daf0e0b..877b93cc636 100644 --- a/data-otservbr-global/monster/humans/poisonous_carnisylvan.lua +++ b/data-otservbr-global/monster/humans/poisonous_carnisylvan.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 22, lookFeet = 61, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 2108 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Forest of Life." + Locations = "Forest of Life.", } monster.health = 8000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -70,8 +70,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "Carnisylvan Sapling", chance = 70, interval = 2000, count = 1 } - } + { name = "Carnisylvan Sapling", chance = 70, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -97,7 +97,7 @@ monster.loot = { { name = "sacred tree amulet", chance = 2880 }, { id = 281, chance = 2090 }, -- giant shimmering pearl (green) { name = "gemmed figurine", chance = 790 }, - { name = "human teeth", chance = 520 } + { name = "human teeth", chance = 520 }, } monster.attacks = { @@ -110,7 +110,7 @@ monster.defenses = { defense = 37, armor = 37, mitigation = 1.13, - { name = "speed", interval = 2000, chance = 8, speedChange = 250, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 8, speedChange = 250, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 }, } monster.elements = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/priestess.lua b/data-otservbr-global/monster/humans/priestess.lua index 18c1119b825..bea9fcba7f4 100644 --- a/data-otservbr-global/monster/humans/priestess.lua +++ b/data-otservbr-global/monster/humans/priestess.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 58 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Hero Cave, Drefia ruins, Lich Hell, Tombs, Magician Quarter in Yalahar, Vengoth Castle." + Locations = "Hero Cave, Drefia ruins, Lich Hell, Tombs, Magician Quarter in Yalahar, Vengoth Castle.", } monster.health = 390 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -70,8 +70,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "ghoul", chance = 10, interval = 2000, count = 2 } - } + { name = "ghoul", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -101,7 +101,7 @@ monster.loot = { { name = "mana potion", chance = 850 }, { name = "cultish robe", chance = 1800 }, { name = "black hood", chance = 5230 }, - { name = "dark rosary", chance = 9840 } + { name = "dark rosary", chance = 9840 }, } monster.attacks = { @@ -109,14 +109,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -55, maxDamage = -120, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -2, maxDamage = -170, range = 7, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { defense = 15, armor = 30, mitigation = 1.32, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -136,7 +136,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/priestess_of_the_wild_sun.lua b/data-otservbr-global/monster/humans/priestess_of_the_wild_sun.lua index 5959ada8842..25eea0d8723 100644 --- a/data-otservbr-global/monster/humans/priestess_of_the_wild_sun.lua +++ b/data-otservbr-global/monster/humans/priestess_of_the_wild_sun.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 3, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1799 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Issavi Sewers, Kilmaresh Mountains, Kilmaresh Catacombs." + Locations = "Issavi Sewers, Kilmaresh Mountains, Kilmaresh Catacombs.", } monster.health = 8500 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_ANUMA, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,7 +91,7 @@ monster.loot = { { name = "wand of everblazing", chance = 1290 }, { name = "golden sickle", chance = 1250 }, { name = "relic sword", chance = 1390 }, - { name = "war axe", chance = 1777 } + { name = "war axe", chance = 1777 }, } monster.attacks = { @@ -99,7 +99,7 @@ monster.attacks = { { name = "targetfirering", interval = 2000, chance = 8, minDamage = -300, maxDamage = -500, target = true }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -500, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_EXPLOSIONHIT, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -400, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -350, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -350, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/renegade_knight.lua b/data-otservbr-global/monster/humans/renegade_knight.lua index 6b3774fcd76..1ec27376840 100644 --- a/data-otservbr-global/monster/humans/renegade_knight.lua +++ b/data-otservbr-global/monster/humans/renegade_knight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 98, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.raceId = 1146 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Old Fortress (north of Edron), Old Masonry, Forbidden Temple (Carlin)." + Locations = "Old Fortress (north of Edron), Old Masonry, Forbidden Temple (Carlin).", } monster.health = 1450 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -98,18 +98,18 @@ monster.loot = { { id = 2815, chance = 910 }, -- scroll { id = 11510, chance = 910 }, -- scroll of heroic deeds { id = 11450, chance = 910 }, -- small notebook - { id = 3004, chance = 510 } -- wedding ring + { id = 3004, chance = 510 }, -- wedding ring } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -175 } + { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -175 }, } monster.defenses = { defense = 50, armor = 38, mitigation = 1.46, - { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/shadow_pupil.lua b/data-otservbr-global/monster/humans/shadow_pupil.lua index dfb59bec267..2304a5dc18e 100644 --- a/data-otservbr-global/monster/humans/shadow_pupil.lua +++ b/data-otservbr-global/monster/humans/shadow_pupil.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 960 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Drefia." + Locations = "Drefia.", } monster.health = 450 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -71,8 +71,8 @@ monster.summon = { maxSummons = 4, summons = { { name = "Skeleton", chance = 10, interval = 2000, count = 4 }, - { name = "Ghost", chance = 5, interval = 2000, count = 4 } - } + { name = "Ghost", chance = 5, interval = 2000, count = 4 }, + }, } monster.voices = { @@ -95,13 +95,13 @@ monster.loot = { { name = "book of necromantic rituals", chance = 6920 }, { name = "horoscope", chance = 15000 }, { name = "incantation notes", chance = 9130 }, - { name = "pieces of magic chalk", chance = 4300 } + { name = "pieces of magic chalk", chance = 4300 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70, condition = { type = CONDITION_POISON, totalDamage = 90, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -80, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -60, radius = 3, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -60, radius = 3, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/smuggler.lua b/data-otservbr-global/monster/humans/smuggler.lua index ce9aa00d6ba..2d6b3ed29af 100644 --- a/data-otservbr-global/monster/humans/smuggler.lua +++ b/data-otservbr-global/monster/humans/smuggler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 113, lookFeet = 115, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 222 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Around Dark Cathedral, Tiquanda Bandit Caves, the Outlaw Camp, Tyrsung, Yalahar and Nargor." + Locations = "Around Dark Cathedral, Tiquanda Bandit Caves, the Outlaw Camp, Tyrsung, Yalahar and Nargor.", } monster.health = 130 @@ -35,7 +35,7 @@ monster.manaCost = 390 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -85,11 +85,11 @@ monster.loot = { { name = "leather legs", chance = 14840 }, { name = "ham", chance = 10200 }, { id = 7397, chance = 110 }, -- deer trophy - { name = "raspberry", chance = 5000, maxCount = 5 } + { name = "raspberry", chance = 5000, maxCount = 5 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/stalker.lua b/data-otservbr-global/monster/humans/stalker.lua index d789ddf4b73..2afd3d8924c 100644 --- a/data-otservbr-global/monster/humans/stalker.lua +++ b/data-otservbr-global/monster/humans/stalker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 95, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 72 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Triangle Tower, Drefia, Edron Hero Cave in the Warlock room, White Flower Temple, \z Ghostlands, Shadow Tomb, Ancient Ruins Tomb, Tarpit Tomb, Stone Tomb, Mountain Tomb, Peninsula Tomb, \z - Oasis Tomb, Yalahar Trade Quarter and Isle of the Kings." + Oasis Tomb, Yalahar Trade Quarter and Isle of the Kings.", } monster.health = 120 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -83,18 +83,18 @@ monster.loot = { { name = "obsidian lance", chance = 1210 }, { name = "brass legs", chance = 3500 }, { name = "brass shield", chance = 5510 }, - { name = "miraculum", chance = 1550 } + { name = "miraculum", chance = 1550 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -30, range = 1, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -30, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 15, armor = 14, - { name = "invisible", interval = 2000, chance = 40, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 40, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -107,14 +107,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/usurper_archer.lua b/data-otservbr-global/monster/humans/usurper_archer.lua index e1d44d30727..4f01920b395 100644 --- a/data-otservbr-global/monster/humans/usurper_archer.lua +++ b/data-otservbr-global/monster/humans/usurper_archer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 95, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.raceId = 1973 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Bounac, the Order of the Lion settlement." + Locations = "Bounac, the Order of the Lion settlement.", } monster.health = 7300 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_LION, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -97,14 +97,14 @@ monster.loot = { { name = "ornate crossbow", chance = 946 }, { name = "emerald bangle", chance = 811 }, { name = "wood cape", chance = 405 }, - { name = "elvish bow", chance = 270 } + { name = "elvish bow", chance = 270 }, } monster.attacks = { { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -430, range = 7, shootEffect = CONST_ANI_BURSTARROW, target = true }, { name = "combat", interval = 6000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -160, maxDamage = -485, range = 7, shootEffect = CONST_ANI_SMALLHOLY, target = true }, { name = "combat", interval = 4000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -160, maxDamage = -545, range = 7, effect = CONST_ME_MORTAREA, shootEffect = CONST_ANI_SUDDENDEATH, target = true }, - { name = "combat", interval = 4000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -150, maxDamage = -425, radius = 3, effect = CONST_ME_ICEAREA, target = true } + { name = "combat", interval = 4000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -150, maxDamage = -425, radius = 3, effect = CONST_ME_ICEAREA, target = true }, } monster.defenses = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/usurper_knight.lua b/data-otservbr-global/monster/humans/usurper_knight.lua index 8082d2ddadc..7116b67fbfa 100644 --- a/data-otservbr-global/monster/humans/usurper_knight.lua +++ b/data-otservbr-global/monster/humans/usurper_knight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 95, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1972 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Bounac, the Order of the Lion settlement." + Locations = "Bounac, the Order of the Lion settlement.", } monster.health = 8200 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_LION, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,21 +90,21 @@ monster.loot = { { name = "great mana potion", chance = 4680 }, { name = "blue gem", chance = 4171 }, { name = "green gem", chance = 2238 }, - { name = "magma legs", chance = 610 } + { name = "magma legs", chance = 610 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 6000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, radius = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 6000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -150, maxDamage = -400, length = 4, spread = 0, effect = CONST_ME_ICEATTACK, target = false }, - { name = "singlecloudchain", interval = 8000, chance = 17, minDamage = -200, maxDamage = -450, range = 4, effect = CONST_ME_ENERGYHIT, target = true } + { name = "singlecloudchain", interval = 8000, chance = 17, minDamage = -200, maxDamage = -450, range = 4, effect = CONST_ME_ENERGYHIT, target = true }, } monster.defenses = { defense = 86, armor = 83, mitigation = 2.40, - { name = "combat", interval = 4000, chance = 40, type = COMBAT_HEALING, minDamage = 200, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 40, type = COMBAT_HEALING, minDamage = 200, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/usurper_warlock.lua b/data-otservbr-global/monster/humans/usurper_warlock.lua index 88f1c5dfd5b..86f582d8e2c 100644 --- a/data-otservbr-global/monster/humans/usurper_warlock.lua +++ b/data-otservbr-global/monster/humans/usurper_warlock.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 21, lookFeet = 95, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1974 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Bounac, the Order of the Lion settlement." + Locations = "Bounac, the Order of the Lion settlement.", } monster.health = 7500 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_LION, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,14 +93,14 @@ monster.loot = { { name = "wand of cosmic energy", chance = 1778 }, { name = "underworld rod", chance = 1333 }, { name = "knight legs", chance = 1111 }, - { name = "wand of starstorm", chance = 667 } + { name = "wand of starstorm", chance = 667 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250, effect = CONST_ME_DRAWBLOOD }, { name = "singledeathchain", interval = 6000, chance = 15, minDamage = -250, maxDamage = -530, range = 5, effect = CONST_ME_MORTAREA, target = true }, { name = "singleicechain", interval = 6000, chance = 18, minDamage = -150, maxDamage = -450, range = 5, effect = CONST_ME_ICEATTACK, target = true }, - { name = "combat", interval = 4000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -450, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true } -- avalanche + { name = "combat", interval = 4000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -450, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, -- avalanche } monster.defenses = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/valkyrie.lua b/data-otservbr-global/monster/humans/valkyrie.lua index 565f083b2b7..b6c2ce76fe2 100644 --- a/data-otservbr-global/monster/humans/valkyrie.lua +++ b/data-otservbr-global/monster/humans/valkyrie.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 96, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 12 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Amazon Camp (Venore), Amazon Camp (Carlin), Amazonia, \z - single respawn to the north west of Thais, Foreigner Quarter in Yalahar." + single respawn to the north west of Thais, Foreigner Quarter in Yalahar.", } monster.health = 190 @@ -36,7 +36,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,12 +92,12 @@ monster.loot = { { id = 3114, chance = 760 }, -- skull { name = "health potion", chance = 500 }, { name = "double axe", chance = 430 }, - { name = "small diamond", chance = 130 } + { name = "small diamond", chance = 130 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 5, shootEffect = CONST_ANI_SPEAR, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 5, shootEffect = CONST_ANI_SPEAR, target = false }, } monster.defenses = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/vicious_squire.lua b/data-otservbr-global/monster/humans/vicious_squire.lua index e3f457c5368..a1d7124a0a0 100644 --- a/data-otservbr-global/monster/humans/vicious_squire.lua +++ b/data-otservbr-global/monster/humans/vicious_squire.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 73, lookFeet = 116, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1145 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Old Fortress (north of Edron), Old Masonry, Forbidden Temple (Carlin)." + Locations = "Old Fortress (north of Edron), Old Masonry, Forbidden Temple (Carlin).", } monster.health = 1000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -96,19 +96,19 @@ monster.loot = { { id = 3269, chance = 830 }, -- halberd { id = 3415, chance = 330 }, -- guardian shield { id = 3371, chance = 230 }, -- knight legs - { id = 3369, chance = 200 } -- warrior helmet + { id = 3369, chance = 200 }, -- warrior helmet } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -175 }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 10, maxDamage = -100, range = 7, shootEffect = CONST_ANI_BOLT, target = false } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 10, maxDamage = -100, range = 7, shootEffect = CONST_ANI_BOLT, target = false }, } monster.defenses = { defense = 50, armor = 30, mitigation = 1.24, - { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 20, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 20, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/vile_grandmaster.lua b/data-otservbr-global/monster/humans/vile_grandmaster.lua index 283b06f183a..f04f5361b8a 100644 --- a/data-otservbr-global/monster/humans/vile_grandmaster.lua +++ b/data-otservbr-global/monster/humans/vile_grandmaster.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 94, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1147 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Old Fortress (north of Edron), Old Masonry, Forbidden Temple (Carlin)." + Locations = "Old Fortress (north of Edron), Old Masonry, Forbidden Temple (Carlin).", } monster.health = 1700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -102,20 +102,20 @@ monster.loot = { { id = 3385, chance = 310 }, -- crown helmet { id = 3419, chance = 210 }, -- crown shield { id = 3382, chance = 110 }, -- crown legs - { id = 3055, chance = 210 } -- platinum amulet + { id = 3055, chance = 210 }, -- platinum amulet } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -260 }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -150, maxDamage = -225, radius = 4, shootEffect = CONST_ANI_THROWINGKNIFE, target = true } + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -150, maxDamage = -225, radius = 4, shootEffect = CONST_ANI_THROWINGKNIFE, target = true }, } monster.defenses = { defense = 50, armor = 40, mitigation = 1.48, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 220, maxDamage = 280, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 220, maxDamage = 280, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -135,7 +135,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/warlock.lua b/data-otservbr-global/monster/humans/warlock.lua index 2aebbb6b9c7..6e09184297b 100644 --- a/data-otservbr-global/monster/humans/warlock.lua +++ b/data-otservbr-global/monster/humans/warlock.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 128, lookFeet = 95, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 10 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Demona, Ghostland (Banshee Quest area), Temple of Xayepocax, Oasis Tomb, Kharos, Magician Quarter, \z - beneath Fenrock, The Arcanum." + beneath Fenrock, The Arcanum.", } monster.health = 3500 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -71,8 +71,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "stone golem", chance = 10, interval = 2000, count = 1 } - } + { name = "stone golem", chance = 10, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -108,7 +108,7 @@ monster.loot = { { name = "great mana potion", chance = 4760 }, { name = "great health potion", chance = 5190 }, { name = "lightning robe", chance = 1000 }, - { name = "luminous orb", chance = 510 } + { name = "luminous orb", chance = 510 }, } monster.attacks = { @@ -119,7 +119,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -180, range = 7, radius = 3, shootEffect = CONST_ANI_BURSTARROW, effect = CONST_ME_FIREAREA, target = true }, { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -230, length = 8, spread = 3, effect = CONST_ME_BIGCLOUDS, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, } monster.defenses = { @@ -127,7 +127,7 @@ monster.defenses = { armor = 33, mitigation = 1.32, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 225, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -147,7 +147,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/wild_warrior.lua b/data-otservbr-global/monster/humans/wild_warrior.lua index 56d9d43f666..0eaf9bd8be6 100644 --- a/data-otservbr-global/monster/humans/wild_warrior.lua +++ b/data-otservbr-global/monster/humans/wild_warrior.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 38, lookFeet = 38, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 47 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Dark Cathedral, Outlaw Camp, North of Thais, Cyclopolis, in Edron Hero Cave and around it, \z - the small camp near Femor Hills, in Ghostlands disguised as a statue." + the small camp near Femor Hills, in Ghostlands disguised as a statue.", } monster.health = 135 @@ -36,7 +36,7 @@ monster.manaCost = 420 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -85,18 +85,18 @@ monster.loot = { { name = "brass armor", chance = 2540 }, { name = "steel shield", chance = 910 }, { name = "brass shield", chance = 17000 }, - { id = 3606, chance = 9730, maxCount = 2 } -- egg + { id = 3606, chance = 9730, maxCount = 2 }, -- egg } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, } monster.defenses = { defense = 20, armor = 8, mitigation = 0.46, - { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/humans/witch.lua b/data-otservbr-global/monster/humans/witch.lua index 6be29840cbf..6bfeefa4685 100644 --- a/data-otservbr-global/monster/humans/witch.lua +++ b/data-otservbr-global/monster/humans/witch.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 54 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Vandura, west of the Dwarf Mines in a small house, Amazon Tower north of Carlin, \z Triangle Tower, Temple of Xayepocax, Green Claw Swamp and Amazon Camp (Venore), \z Dark Cathedral (2 levels underground), Goroma Volcano (underground), west from Necromant House, \z - Mammoth Shearing Factory, Trade Quarter in Yalahar, The Witches' Cliff (only accessible during a quest)." + Mammoth Shearing Factory, Trade Quarter in Yalahar, The Witches' Cliff (only accessible during a quest).", } monster.health = 300 @@ -38,7 +38,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,14 +93,14 @@ monster.loot = { { name = "witch broom", chance = 10000 }, { name = "witch hat", chance = 80 }, { name = "stuffed toad", chance = 10 }, - { name = "bag of apple slices", chance = 920 } + { name = "bag of apple slices", chance = 920 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -30, maxDamage = -75, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_HITBYFIRE, target = false }, { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "outfit", interval = 2000, chance = 1, range = 5, target = true, duration = 2000, outfitMonster = "green frog" } + { name = "outfit", interval = 2000, chance = 1, range = 5, target = true, duration = 2000, outfitMonster = "green frog" }, } monster.defenses = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/lycanthropes/werebadger.lua b/data-otservbr-global/monster/lycanthropes/werebadger.lua index f2af9dfc15f..1f8243b9520 100644 --- a/data-otservbr-global/monster/lycanthropes/werebadger.lua +++ b/data-otservbr-global/monster/lycanthropes/werebadger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1144 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Grimvale: -1 floor from ground level, also seen on surface during full moon (12th-14th of every month). \z - Also in the were-beasts cave south-west of Edron and in the Last Sanctum." + Also in the were-beasts cave south-west of Edron and in the Last Sanctum.", } monster.health = 1700 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,14 +95,14 @@ monster.loot = { { id = 8094, chance = 200 }, -- wand of voodoo { id = 22083, chance = 150 }, -- moonlight crystals { id = 22060, chance = 200 }, -- werewolf amulet - { id = 22101, chance = 100 } -- werebadger trophy + { id = 22101, chance = 100 }, -- werebadger trophy } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 60, condition = { type = CONDITION_POISON, totalDamage = 140, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -21, maxDamage = -150, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_CARNIPHILA, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -10, maxDamage = -100, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, - { name = "speed", interval = 4000, chance = 20, radius = 7, effect = CONST_ME_POFF, target = true } + { name = "speed", interval = 4000, chance = 20, radius = 7, effect = CONST_ME_POFF, target = true }, } monster.defenses = { @@ -110,7 +110,7 @@ monster.defenses = { armor = 31, mitigation = 0.75, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/lycanthropes/werebear.lua b/data-otservbr-global/monster/lycanthropes/werebear.lua index 3472d21e9bb..4c2ee27f8ba 100644 --- a/data-otservbr-global/monster/lycanthropes/werebear.lua +++ b/data-otservbr-global/monster/lycanthropes/werebear.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1142 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Grimvale underground, were-beasts cave south-west of Edron and in the Last Sanctum east of Cormaya." + Locations = "Grimvale underground, were-beasts cave south-west of Edron and in the Last Sanctum east of Cormaya.", } monster.health = 2400 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -98,20 +98,20 @@ monster.loot = { { id = 7452, chance = 300 }, -- spiked squelcher { id = 3053, chance = 400 }, -- time ring { id = 22103, chance = 200 }, -- werebear trophy - { id = 22083, chance = 200 } -- moonlight crystals + { id = 22083, chance = 200 }, -- moonlight crystals } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 50, maxDamage = -485 }, { name = "speed", interval = 4000, chance = 20, radius = 7, effect = CONST_ME_POFF, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -65, maxDamage = -335, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -65, maxDamage = -335, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.defenses = { defense = 30, armor = 38, mitigation = 0.91, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/lycanthropes/wereboar.lua b/data-otservbr-global/monster/lycanthropes/wereboar.lua index e2327c88108..c9b0dcbd0d0 100644 --- a/data-otservbr-global/monster/lycanthropes/wereboar.lua +++ b/data-otservbr-global/monster/lycanthropes/wereboar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1143 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Grimvale underground, were-beasts cave south-west of Edron and in the Last Sanctum east of Cormaya." + Locations = "Grimvale underground, were-beasts cave south-west of Edron and in the Last Sanctum east of Cormaya.", } monster.health = 2200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,13 +93,13 @@ monster.loot = { { id = 22085, chance = 200 }, -- fur armor { id = 22102, chance = 200 }, -- wereboar trophy { id = 22060, chance = 200 }, -- werewolf amulet - { id = 22083, chance = 200 } -- moonlight crystals + { id = 22083, chance = 200 }, -- moonlight crystals } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 60, condition = { type = CONDITION_POISON, totalDamage = 140, interval = 4000 } }, { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -385 }, - { name = "speed", interval = 4000, chance = 20, radius = 7, effect = CONST_ME_POFF, target = true } + { name = "speed", interval = 4000, chance = 20, radius = 7, effect = CONST_ME_POFF, target = true }, } monster.defenses = { @@ -107,7 +107,7 @@ monster.defenses = { armor = 32, mitigation = 0.78, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/lycanthropes/werefox.lua b/data-otservbr-global/monster/lycanthropes/werefox.lua index 08c52717fde..81905188e30 100644 --- a/data-otservbr-global/monster/lycanthropes/werefox.lua +++ b/data-otservbr-global/monster/lycanthropes/werefox.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1549 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Were-beasts cave south-west of Edron and in the Last Sanctum east of Cormaya." + Locations = "Were-beasts cave south-west of Edron and in the Last Sanctum east of Cormaya.", } monster.health = 1500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,26 +62,26 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 1, summons = { - { name = "fox", chance = 10, interval = 2000, count = 1 } - } + { name = "fox", chance = 10, interval = 2000, count = 1 }, + }, } monster.voices = { interval = 5000, chance = 10, { text = "Yelp!", yell = false }, - { text = "Grrrrrr", yell = false } + { text = "Grrrrrr", yell = false }, } monster.loot = { @@ -100,21 +100,21 @@ monster.loot = { { name = "platinum amulet", chance = 130 }, { id = 3098, chance = 200 }, -- ring of healing { name = "werewolf amulet", chance = 50 }, - { id = 27706, chance = 30 } -- werefox trophy + { id = 27706, chance = 30 }, -- werefox trophy } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -290 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -200, shootEffect = CONST_ANI_GREENSTAR, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -225, range = 7, radius = 4, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 45, armor = 40, { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 145, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -127,14 +127,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 40 } + { type = COMBAT_DEATHDAMAGE, percent = 40 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/lycanthropes/werehyaena.lua b/data-otservbr-global/monster/lycanthropes/werehyaena.lua index ef8aa65613c..62a890f771f 100644 --- a/data-otservbr-global/monster/lycanthropes/werehyaena.lua +++ b/data-otservbr-global/monster/lycanthropes/werehyaena.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 1, lookFeet = 1, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1963 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Darashia Wyrm Hills only during night, Hyaena Lairs." + Locations = "Darashia Wyrm Hills only during night, Hyaena Lairs.", } monster.health = 2700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -90,14 +90,14 @@ monster.loot = { { name = "green crystal fragment", chance = 4580 }, { name = "ratana", chance = 4280 }, { name = "werehyaena talisman", chance = 750 }, - { name = "werehyaena trophy", chance = 190 } + { name = "werehyaena trophy", chance = 190 }, } monster.attacks = { { name = "melee", type = COMBAT_PHYSICALDAMAGE, interval = 2 * 1000, minDamage = 0, maxDamage = -300 }, { name = "combat", type = COMBAT_EARTHDAMAGE, interval = 2 * 1000, chance = 17, minDamage = -175, maxDamage = -255, radius = 3, effect = CONST_ME_HITBYPOISON }, { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2 * 1000, chance = 15, minDamage = -330, maxDamage = -370, target = true, range = 5, radius = 1, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_MORTAREA }, - { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2 * 1000, chance = 13, minDamage = -225, maxDamage = -275, length = 3, spread = 0, effect = CONST_ME_MORTAREA } + { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2 * 1000, chance = 13, minDamage = -225, maxDamage = -275, length = 3, spread = 0, effect = CONST_ME_MORTAREA }, } monster.defenses = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = true } + { type = "bleed", condition = true }, } mType:register(monster) diff --git a/data-otservbr-global/monster/lycanthropes/werehyaena_shaman.lua b/data-otservbr-global/monster/lycanthropes/werehyaena_shaman.lua index 52cda9efa54..184a4c56e05 100644 --- a/data-otservbr-global/monster/lycanthropes/werehyaena_shaman.lua +++ b/data-otservbr-global/monster/lycanthropes/werehyaena_shaman.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 95, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1964 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "This monster you can find in Hyaena Lairs." + Locations = "This monster you can find in Hyaena Lairs.", } monster.health = 2500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,17 +59,17 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 0, - chance = 0 + chance = 0, } monster.loot = { @@ -88,7 +88,7 @@ monster.loot = { { name = "protection amulet", chance = 2660 }, { name = "werehyaena talisman", chance = 650 }, { name = "moonlight crystals", chance = 610 }, - { name = "werehyaena trophy", chance = 140 } + { name = "werehyaena trophy", chance = 140 }, } monster.attacks = { @@ -96,13 +96,13 @@ monster.attacks = { { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2 * 1000, chance = 10, minDamage = -280, maxDamage = -325, radius = 3, effect = CONST_ME_HITBYPOISON }, { name = "combat", type = COMBAT_EARTHDAMAGE, interval = 2 * 1000, chance = 17, minDamage = -280, maxDamage = -315, range = 5, radius = 4, target = true, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_GREEN_RINGS }, { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2 * 1000, chance = 15, minDamage = -370, maxDamage = -430, range = 5, radius = 1, target = true, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA }, - { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2 * 1000, chance = 13, minDamage = -280, maxDamage = -325, length = 3, spread = 0, effect = CONST_ME_MORTAREA } + { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2 * 1000, chance = 13, minDamage = -280, maxDamage = -325, length = 3, spread = 0, effect = CONST_ME_MORTAREA }, } monster.defenses = { { name = "speed", interval = 2 * 1000, chance = 15, speed = 200, duration = 5 * 1000, effect = CONST_ME_MAGIC_BLUE }, defense = 0, - armor = 38 + armor = 38, } monster.elements = { @@ -115,14 +115,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -20 }, { type = COMBAT_HOLYDAMAGE, percent = 5 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = true } + { type = "bleed", condition = true }, } mType:register(monster) diff --git a/data-otservbr-global/monster/lycanthropes/werelion.lua b/data-otservbr-global/monster/lycanthropes/werelion.lua index 07380a27cde..8226bc8b4e7 100644 --- a/data-otservbr-global/monster/lycanthropes/werelion.lua +++ b/data-otservbr-global/monster/lycanthropes/werelion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 10, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 1965 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Lion Sanctum." + Locations = "Lion Sanctum.", } monster.health = 2800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.flags = { @@ -90,21 +90,21 @@ monster.loot = { { name = "rainbow quartz", chance = 1500 }, { name = "noble axe", chance = 500 }, { name = "white silk flower", chance = 500 }, - { name = "lion figurine", chance = 100 } + { name = "lion figurine", chance = 100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "werelion wave", interval = 2000, chance = 20, minDamage = -150, maxDamage = -250, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -410, range = 3, effect = CONST_ME_HOLYAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -170, maxDamage = -350, range = 3, shootEffect = CONST_ANI_HOLY, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -170, maxDamage = -350, range = 3, shootEffect = CONST_ANI_HOLY, target = true }, } monster.defenses = { defense = 40, armor = 38, mitigation = 0.91, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/lycanthropes/werelioness.lua b/data-otservbr-global/monster/lycanthropes/werelioness.lua index 5a446a58209..302ecc81a61 100644 --- a/data-otservbr-global/monster/lycanthropes/werelioness.lua +++ b/data-otservbr-global/monster/lycanthropes/werelioness.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1966 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Lion Sanctum." + Locations = "Lion Sanctum.", } monster.health = 3000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.flags = { @@ -89,21 +89,21 @@ monster.loot = { { name = "magma legs", chance = 500 }, { name = "crown helmet", chance = 500 }, { name = "white silk flower", chance = 200 }, - { name = "lion figurine", chance = 100 } + { name = "lion figurine", chance = 100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -410, range = 3, effect = CONST_ME_HOLYAREA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -170, maxDamage = -350, range = 3, shootEffect = CONST_ANI_HOLY, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, length = 4, spread = 1, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, length = 4, spread = 1, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 40, armor = 38, mitigation = 0.91, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/lycanthropes/werewolf.lua b/data-otservbr-global/monster/lycanthropes/werewolf.lua index 12b304f9d09..83f691ff82c 100644 --- a/data-otservbr-global/monster/lycanthropes/werewolf.lua +++ b/data-otservbr-global/monster/lycanthropes/werewolf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 510 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Vengoth Castle, Vengoth Werewolf Cave, Grimvale, were-beasts cave south-west of Edron." + Locations = "Vengoth Castle, Vengoth Werewolf Cave, Grimvale, were-beasts cave south-west of Edron.", } monster.health = 1955 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -70,8 +70,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "war wolf", chance = 40, interval = 2000, count = 2 } - } + { name = "war wolf", chance = 40, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -100,7 +100,7 @@ monster.loot = { { name = "ultimate health potion", chance = 2400 }, { id = 8895, chance = 210 }, -- rusted armor { id = 22052, chance = 15000 }, -- werewolf fangs - { name = "werewolf fur", chance = 10650 } + { name = "werewolf fur", chance = 10650 }, } monster.attacks = { @@ -109,7 +109,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -200, length = 4, spread = 2, effect = CONST_ME_SOUND_RED, target = false }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, radius = 3, effect = CONST_ME_SOUND_WHITE, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, radius = 1, effect = CONST_ME_SOUND_GREEN, target = false }, - { name = "werewolf skill reducer", interval = 2000, chance = 15, range = 1, target = false } + { name = "werewolf skill reducer", interval = 2000, chance = 15, range = 1, target = false }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.defenses = { armor = 36, mitigation = 0.83, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 120, maxDamage = 225, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 400, range = 7, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 400, range = 7, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 5000 }, } monster.elements = { @@ -137,7 +137,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/animated_feather.lua b/data-otservbr-global/monster/magicals/animated_feather.lua index b601d19c12e..8d7f7e7b3dc 100644 --- a/data-otservbr-global/monster/magicals/animated_feather.lua +++ b/data-otservbr-global/monster/magicals/animated_feather.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1671 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "The Secret Library (ice section)." + Locations = "The Secret Library (ice section).", } monster.health = 13000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { name = "glowing rune", chance = 500, maxCount = 10 }, { id = 3051, chance = 8700 }, -- energy ring { name = "quill", chance = 250 }, - { name = "small diamond", chance = 500, maxCount = 5 } + { name = "small diamond", chance = 500, maxCount = 5 }, } monster.attacks = { @@ -95,7 +95,7 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -200, range = 7, shootEffect = CONST_ANI_ICE, target = false }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -780, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -275, length = 3, spread = 2, effect = CONST_ME_ICEATTACK, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -230, maxDamage = -680, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -230, maxDamage = -680, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/arachnophobica.lua b/data-otservbr-global/monster/magicals/arachnophobica.lua index b924d9444da..ef50a63eb30 100644 --- a/data-otservbr-global/monster/magicals/arachnophobica.lua +++ b/data-otservbr-global/monster/magicals/arachnophobica.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1729 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Buried Cathedral, Haunted Cellar, Court of Summer, Court of Winter, Dream Labyrinth." + Locations = "Buried Cathedral, Haunted Cellar, Court of Summer, Court of Winter, Dream Labyrinth.", } monster.health = 5000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -106,7 +106,7 @@ monster.loot = { { id = 23543, chance = 10590 }, -- collar of green plasma { name = "strange symbol", chance = 2640 }, { name = "stone skin amulet", chance = 2600 }, - { name = "necklace of the deep", chance = 1800 } + { name = "necklace of the deep", chance = 1800 }, } monster.attacks = { @@ -114,14 +114,14 @@ monster.attacks = { { name = "arachnophobicawavedice", interval = 2000, chance = 20, minDamage = -250, maxDamage = -350, target = false }, { name = "arachnophobicawaveenergy", interval = 2000, chance = 20, minDamage = -250, maxDamage = -350, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -350, radius = 4, effect = CONST_ME_BLOCKHIT, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -300, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -300, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, } monster.defenses = { defense = 0, armor = 70, mitigation = 1.94, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -141,7 +141,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/armadile.lua b/data-otservbr-global/monster/magicals/armadile.lua index 3f23a2def75..beca89510f4 100644 --- a/data-otservbr-global/monster/magicals/armadile.lua +++ b/data-otservbr-global/monster/magicals/armadile.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 880 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Warzone 1." + Locations = "Warzone 1.", } monster.health = 3800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -97,7 +97,7 @@ monster.loot = { { name = "green crystal fragment", chance = 5690, maxCount = 2 }, { name = "crystalline spikes", chance = 14540 }, { name = "drill bolt", chance = 7692, maxCount = 5 }, - { name = "envenomed arrow", chance = 10230, maxCount = 10 } + { name = "envenomed arrow", chance = 10230, maxCount = 10 }, } monster.attacks = { @@ -105,14 +105,14 @@ monster.attacks = { { name = "drunk", interval = 2000, chance = 15, radius = 4, effect = CONST_ME_FIREAREA, target = true, duration = 5000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -430, maxDamage = -550, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -200, maxDamage = -400, radius = 4, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -200, maxDamage = -400, radius = 4, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 25, armor = 66, mitigation = 1.96, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_RED } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_RED }, } monster.elements = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/bashmu.lua b/data-otservbr-global/monster/magicals/bashmu.lua index 349e299fecd..31be5b2a61d 100644 --- a/data-otservbr-global/monster/magicals/bashmu.lua +++ b/data-otservbr-global/monster/magicals/bashmu.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 42, lookFeet = 79, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2100 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Salt Caves." + Locations = "Salt Caves.", } monster.health = 8200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,7 +92,7 @@ monster.loot = { { id = 23544, chance = 660 }, -- collar of red plasma { name = "haunted blade", chance = 590 }, { name = "magma amulet", chance = 520 }, - { id = 23542, chance = 440 } -- collar of blue plasma + { id = 23542, chance = 440 }, -- collar of blue plasma } monster.attacks = { @@ -107,7 +107,7 @@ monster.defenses = { armor = 72, mitigation = 2.16, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 340, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 340, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/blue_djinn.lua b/data-otservbr-global/monster/magicals/blue_djinn.lua index 3846356bd55..627002e5469 100644 --- a/data-otservbr-global/monster/magicals/blue_djinn.lua +++ b/data-otservbr-global/monster/magicals/blue_djinn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 80 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Kha'zeel, Magician Quarter, Forgotten Tomb." + Locations = "Kha'zeel, Magician Quarter, Forgotten Tomb.", } monster.health = 330 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_EFREET, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,7 +91,7 @@ monster.loot = { { name = "blue piece of cloth", chance = 1920 }, { name = "royal spear", chance = 4500, maxCount = 2 }, { name = "mana potion", chance = 860 }, - { name = "dirty turban", chance = 1890 } + { name = "dirty turban", chance = 1890 }, } monster.attacks = { @@ -101,7 +101,7 @@ monster.attacks = { { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 5000 }, { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "rabbit" }, { name = "djinn electrify", interval = 2000, chance = 15, range = 5, target = false }, - { name = "djinn cancel invisibility", interval = 2000, chance = 10, target = false } + { name = "djinn cancel invisibility", interval = 2000, chance = 10, target = false }, } monster.defenses = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/bog_raider.lua b/data-otservbr-global/monster/magicals/bog_raider.lua index a7989a107af..e45f4f5c417 100644 --- a/data-otservbr-global/monster/magicals/bog_raider.lua +++ b/data-otservbr-global/monster/magicals/bog_raider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 460 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Underneath Malada and Talahu, Edron Bog Raider Cave in Stonehome, \z - Edron Earth Elemental Cave, Alchemist Quarter, Vengoth Castle, Robson Isle. Oramond Hydra/Bog Raider Cave." + Edron Earth Elemental Cave, Alchemist Quarter, Vengoth Castle, Robson Isle. Oramond Hydra/Bog Raider Cave.", } monster.health = 1300 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { name = "belted cape", chance = 580 }, { name = "paladin armor", chance = 140 }, { name = "springsprout rod", chance = 1020 }, - { name = "boggy dreads", chance = 9870 } + { name = "boggy dreads", chance = 9870 }, } monster.attacks = { @@ -95,14 +95,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -140, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -175, radius = 3, effect = CONST_ME_BUBBLES, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -96, maxDamage = -110, range = 7, shootEffect = CONST_ANI_SMALLEARTH, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_SMALLPLANTS, target = true, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_SMALLPLANTS, target = true, duration = 15000 }, } monster.defenses = { defense = 0, armor = 20, mitigation = 0.78, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 65, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 65, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/bonelord.lua b/data-otservbr-global/monster/magicals/bonelord.lua index fa69e9e4169..d39fc0e9f5b 100644 --- a/data-otservbr-global/monster/magicals/bonelord.lua +++ b/data-otservbr-global/monster/magicals/bonelord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 17 @@ -28,7 +28,7 @@ monster.Bestiary = { Maze of Lost Souls, way to Mintwallin, before Kazordoon city entrance, abandoned building east of Venore, \z Green Claw Swamp, north of the Venore Amazon Camp, Below Point of No Return in Outlaw Camp, Vandura Bonelord Cave, \z Triangle Tower, Hidden cave north of Port Hope, Deeper Banuta, Dark Cathedral, Shadow Tomb, Ancient Ruins Tomb, \z - Tarpit Tomb, Mountain Tomb, Peninsula Tomb, Oasis Tomb and beneath Fenrock." + Tarpit Tomb, Mountain Tomb, Peninsula Tomb, Oasis Tomb and beneath Fenrock.", } monster.health = 260 @@ -40,7 +40,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -78,8 +78,8 @@ monster.light = { monster.summon = { maxSummons = 6, summons = { - { name = "Skeleton", chance = 20, interval = 2000, count = 6 } - } + { name = "Skeleton", chance = 20, interval = 2000, count = 6 }, + }, } monster.voices = { @@ -103,7 +103,7 @@ monster.loot = { { name = "bonelord shield", chance = 110 }, { name = "bonelord eye", chance = 1000 }, { name = "mana potion", chance = 300 }, - { name = "small flask of eyedrops", chance = 5060 } + { name = "small flask of eyedrops", chance = 5060 }, } monster.attacks = { @@ -114,7 +114,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -5, maxDamage = -45, range = 7, shootEffect = CONST_ANI_POISON, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -5, maxDamage = -50, range = 7, shootEffect = CONST_ANI_DEATH, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -45, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = -5, maxDamage = -35, range = 7, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = -5, maxDamage = -35, range = 7, target = false }, } monster.defenses = { @@ -140,7 +140,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/brain_squid.lua b/data-otservbr-global/monster/magicals/brain_squid.lua index fa8e99f6263..443c01fe1a2 100644 --- a/data-otservbr-global/monster/magicals/brain_squid.lua +++ b/data-otservbr-global/monster/magicals/brain_squid.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 77, lookFeet = 57, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1653 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Secret Library (energy section)." + Locations = "Secret Library (energy section).", } monster.health = 18000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -101,13 +101,13 @@ monster.loot = { { id = 23543, chance = 560 }, -- collar of green plasma { id = 23533, chance = 560 }, -- ring of red plasma { id = 23529, chance = 560 }, -- ring of blue plasma - { id = 23531, chance = 560 } -- ring of green plasma + { id = 23531, chance = 560 }, -- ring of green plasma } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -470, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -505, radius = 3, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 2000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -505, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/braindeath.lua b/data-otservbr-global/monster/magicals/braindeath.lua index 61c7549b2db..62187667f0c 100644 --- a/data-otservbr-global/monster/magicals/braindeath.lua +++ b/data-otservbr-global/monster/magicals/braindeath.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 321 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Helheim, Demon Forge (The Arcanum), beneath Fenrock, Vandura Bonelord Cave, \z - Alchemist Quarter and Cemetery Quarter." + Alchemist Quarter and Cemetery Quarter.", } monster.health = 1225 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -74,8 +74,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Vampire", chance = 10, interval = 2000, count = 2 } - } + { name = "Vampire", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -99,7 +99,7 @@ monster.loot = { { id = 3059, chance = 930 }, -- spellbook { name = "spiked squelcher", chance = 180 }, { name = "bonelord shield", chance = 100 }, - { name = "bonelord helmet", chance = 100 } + { name = "bonelord helmet", chance = 100 }, } monster.attacks = { @@ -109,7 +109,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -85, maxDamage = -170, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -65, maxDamage = -125, range = 7, shootEffect = CONST_ANI_POISON, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -75, maxDamage = -85, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -155, range = 7, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -155, range = 7, target = false }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.defenses = { armor = 12, mitigation = 0.67, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 260, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 260, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -137,7 +137,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/burning_book.lua b/data-otservbr-global/monster/magicals/burning_book.lua index 7293423b2af..ce7ceac08f7 100644 --- a/data-otservbr-global/monster/magicals/burning_book.lua +++ b/data-otservbr-global/monster/magicals/burning_book.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 78, lookFeet = 112, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1663 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Secret Library (fire section)." + Locations = "Secret Library (fire section).", } monster.health = 18000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { name = "magma monocle", chance = 1500 }, { id = 6299, chance = 1200 }, -- death ring { id = 3049, chance = 1800 }, -- stealth ring - { name = "shadow sceptre", chance = 8990 } + { name = "shadow sceptre", chance = 8990 }, } monster.attacks = { @@ -95,7 +95,7 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -780, range = 7, shootEffect = CONST_ANI_FLAMMINGARROW, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 1500, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -900, radius = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -850, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -775, radius = 3, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -775, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/choking_fear.lua b/data-otservbr-global/monster/magicals/choking_fear.lua index c952fc95cdc..4cfa9bb0b37 100644 --- a/data-otservbr-global/monster/magicals/choking_fear.lua +++ b/data-otservbr-global/monster/magicals/choking_fear.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1015 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "All over the surface of Upper Roshamuul and Nightmare Isles." + Locations = "All over the surface of Upper Roshamuul and Nightmare Isles.", } monster.health = 5800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -101,7 +101,7 @@ monster.loot = { { name = "blue crystal splinter", chance = 10000, maxCount = 3 }, { name = "cluster of solace", chance = 4620 }, { name = "dead weight", chance = 14180 }, - { name = "hemp rope", chance = 14180 } + { name = "hemp rope", chance = 14180 }, } monster.attacks = { @@ -112,14 +112,14 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 20, speedChange = -800, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true, duration = 15000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -130, maxDamage = -300, radius = 4, effect = CONST_ME_SOUND_RED, target = false }, { name = "choking fear drown", interval = 2000, chance = 20, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -500, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -500, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { defense = 35, armor = 65, mitigation = 1.94, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -139,7 +139,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/crypt_warden.lua b/data-otservbr-global/monster/magicals/crypt_warden.lua index d61a995a9bd..1b5fd2a9adb 100644 --- a/data-otservbr-global/monster/magicals/crypt_warden.lua +++ b/data-otservbr-global/monster/magicals/crypt_warden.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1805 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Kilmaresh Catacombs." + Locations = "Kilmaresh Catacombs.", } monster.health = 8300 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_FAFNAR, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { name = "small amethyst", chance = 8680 }, { name = "gold ingot", chance = 4660 }, { name = "green gem", chance = 1290 }, - { name = "elven amulet", chance = 800 } + { name = "elven amulet", chance = 800 }, } monster.attacks = { @@ -95,7 +95,7 @@ monster.attacks = { { name = "warden x", interval = 2000, chance = 15, minDamage = -250, maxDamage = -430, target = false }, { name = "warden ring", interval = 2000, chance = 8, minDamage = -250, maxDamage = -380, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -480, radius = 2, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -450, length = 5, spread = 3, effect = CONST_ME_HOLYAREA, target = false } + { name = "combat", interval = 2000, chance = 13, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -450, length = 5, spread = 3, effect = CONST_ME_HOLYAREA, target = false }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/crystalcrusher.lua b/data-otservbr-global/monster/magicals/crystalcrusher.lua index 46169af2917..c0698ab34b5 100644 --- a/data-otservbr-global/monster/magicals/crystalcrusher.lua +++ b/data-otservbr-global/monster/magicals/crystalcrusher.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 869 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Crystal Grounds, Mushroom Farms, Middle Spike." + Locations = "Crystal Grounds, Mushroom Farms, Middle Spike.", } monster.health = 570 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,12 +83,12 @@ monster.loot = { { name = "green crystal splinter", chance = 4920 }, { name = "brown crystal splinter", chance = 5250 }, { name = "blue crystal splinter", chance = 5000 }, - { name = "crystalline spikes", chance = 3690 } + { name = "crystalline spikes", chance = 3690 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -167 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -110, maxDamage = -260, radius = 3, effect = CONST_ME_GREEN_RINGS, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -110, maxDamage = -260, radius = 3, effect = CONST_ME_GREEN_RINGS, target = true }, } monster.defenses = { @@ -96,7 +96,7 @@ monster.defenses = { armor = 48, mitigation = 1.29, { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 5, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 129, maxDamage = 175, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 129, maxDamage = 175, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/cursed_book.lua b/data-otservbr-global/monster/magicals/cursed_book.lua index c557d490b41..3066f09a9d6 100644 --- a/data-otservbr-global/monster/magicals/cursed_book.lua +++ b/data-otservbr-global/monster/magicals/cursed_book.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 93, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1655 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Secret Library (earth section)." + Locations = "Secret Library (earth section).", } monster.health = 20000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -89,14 +89,14 @@ monster.loot = { { name = "stone skin amulet", chance = 350 }, { name = "springsprout rod", chance = 350 }, { name = "sacred tree amulet", chance = 350 }, - { name = "swamplair armor", chance = 250 } + { name = "swamplair armor", chance = 250 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -680, range = 7, shootEffect = CONST_ANI_EARTHARROW, target = false }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -575, length = 5, spread = 3, effect = CONST_ME_POISONAREA, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -230, maxDamage = -880, range = 7, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -230, maxDamage = -880, range = 7, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/dragonling.lua b/data-otservbr-global/monster/magicals/dragonling.lua index 9d79fb16b2e..dd778df9316 100644 --- a/data-otservbr-global/monster/magicals/dragonling.lua +++ b/data-otservbr-global/monster/magicals/dragonling.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 894 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 1, Locations = "Fury Dungeon and Goroma volcano (surface floor, inner volcano) only during the \z - Fire from the Earth Mini World Change." + Fire from the Earth Mini World Change.", } monster.health = 2600 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,7 +86,7 @@ monster.loot = { { name = "gold coin", chance = 37500, maxCount = 27 }, { name = "strong health potion", chance = 24480, maxCount = 2 }, { name = "strong mana potion", chance = 16900, maxCount = 2 }, - { name = "blazing bone", chance = 12410 } + { name = "blazing bone", chance = 12410 }, } monster.attacks = { @@ -94,14 +94,14 @@ monster.attacks = { { name = "dragonling wave", interval = 2000, chance = 10, minDamage = -120, maxDamage = -250, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -115, maxDamage = -180, radius = 3, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -95, maxDamage = -150, radius = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_STUN, target = true, duration = 16000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_STUN, target = true, duration = 16000 }, } monster.defenses = { defense = 25, armor = 58, mitigation = 1.46, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/efreet.lua b/data-otservbr-global/monster/magicals/efreet.lua index e75c38e8f08..b0955162290 100644 --- a/data-otservbr-global/monster/magicals/efreet.lua +++ b/data-otservbr-global/monster/magicals/efreet.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 103 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Mal'ouquah, Deeper Banuta, Goromas Cult Cave (in the classroom), Magician Quarter." + Locations = "Mal'ouquah, Deeper Banuta, Goromas Cult Cave (in the classroom), Magician Quarter.", } monster.health = 550 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_MARID, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "green djinn", chance = 10, interval = 2000, count = 2 } - } + { name = "green djinn", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -103,7 +103,7 @@ monster.loot = { { name = "strong mana potion", chance = 3500 }, { name = "magma monocle", chance = 360 }, { name = "jewelled belt", chance = 8540 }, - { name = "noble turban", chance = 1130 } + { name = "noble turban", chance = 1130 }, } monster.attacks = { @@ -114,14 +114,14 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 15, speedChange = -650, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 6000 }, { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "rat" }, - { name = "djinn electrify", interval = 2000, chance = 15, range = 5, target = false } + { name = "djinn electrify", interval = 2000, chance = 15, range = 5, target = false }, } monster.defenses = { defense = 20, armor = 24, mitigation = 0.91, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -141,7 +141,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/elder_bonelord.lua b/data-otservbr-global/monster/magicals/elder_bonelord.lua index 45d548738a9..f8d5059033d 100644 --- a/data-otservbr-global/monster/magicals/elder_bonelord.lua +++ b/data-otservbr-global/monster/magicals/elder_bonelord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 108 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Hellgate, near the Hellgate Library, Deeper Banuta, behind piano in Cult Cave to the \z northeast of Liberty Bay, Vandura Bonelord Cave, Goroma, Helheim, \z - underground of Fenrock (on the way to Beregar), Vengoth." + underground of Fenrock (on the way to Beregar), Vengoth.", } monster.health = 500 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -76,8 +76,8 @@ monster.summon = { maxSummons = 6, summons = { { name = "Gazer", chance = 10, interval = 2000, count = 6 }, - { name = "Crypt Shambler", chance = 15, interval = 2000, count = 6 } - } + { name = "Crypt Shambler", chance = 15, interval = 2000, count = 6 }, + }, } monster.voices = { @@ -112,7 +112,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -20, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_LIFEDRAIN, minDamage = -45, maxDamage = -85, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -40, range = 7, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, } monster.defenses = { @@ -138,7 +138,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/energetic_book.lua b/data-otservbr-global/monster/magicals/energetic_book.lua index 5f70b061aeb..1412e998bd2 100644 --- a/data-otservbr-global/monster/magicals/energetic_book.lua +++ b/data-otservbr-global/monster/magicals/energetic_book.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1665 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Secret Library (energy section)." + Locations = "Secret Library (energy section).", } monster.health = 18500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -89,14 +89,14 @@ monster.loot = { { name = "spellweaver's robe", chance = 350 }, { name = "wand of defiance", chance = 350 }, { name = "haunted blade", chance = 550 }, - { name = "lightning legs", chance = 350 } + { name = "lightning legs", chance = 350 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -680, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -505, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 1500, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_STUN, target = false } + { name = "combat", interval = 1500, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_STUN, target = false }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/energuardian_of_tales.lua b/data-otservbr-global/monster/magicals/energuardian_of_tales.lua index 2bdd90b42d0..13d2df2e0d9 100644 --- a/data-otservbr-global/monster/magicals/energuardian_of_tales.lua +++ b/data-otservbr-global/monster/magicals/energuardian_of_tales.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 82, lookFeet = 93, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 1666 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "The Secret Library (energy section)." + Locations = "The Secret Library (energy section).", } monster.health = 14000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -83,12 +83,12 @@ monster.loot = { { name = "spellbook of warding", chance = 350 }, { name = "ultimate health potion", chance = 10000, maxCount = 5 }, { name = "ultimate mana potion", chance = 10000, maxCount = 5 }, - { name = "wand of starstorm", chance = 300 } + { name = "wand of starstorm", chance = 300 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -10, maxDamage = -550 }, - { name = "combat", interval = 1000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -555, radius = 3, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 1000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -555, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/enfeebled_silencer.lua b/data-otservbr-global/monster/magicals/enfeebled_silencer.lua index 5943867162f..95bd1948831 100644 --- a/data-otservbr-global/monster/magicals/enfeebled_silencer.lua +++ b/data-otservbr-global/monster/magicals/enfeebled_silencer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1443 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Feyrist." + Locations = "Feyrist.", } monster.health = 1100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -92,13 +92,13 @@ monster.loot = { { id = 812, chance = 960 }, -- terra legs { id = 813, chance = 480 }, -- terra boots { id = 20200, chance = 4000 }, -- silencer claws - { name = "fairy wings", chance = 12000 } + { name = "fairy wings", chance = 12000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 80, attack = 70, condition = { type = CONDITION_POISON, totalDamage = 200, interval = 4000 } }, { name = "silencer skill reducer", interval = 2000, chance = 10, range = 3, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -90, radius = 4, shootEffect = CONST_ANI_ONYXARROW, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -90, radius = 4, shootEffect = CONST_ANI_ONYXARROW, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.defenses = { armor = 44, mitigation = 1.43, { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 225, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 225, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/fahim_the_wise.lua b/data-otservbr-global/monster/magicals/fahim_the_wise.lua index fd4cdda8b28..839bfdb8231 100644 --- a/data-otservbr-global/monster/magicals/fahim_the_wise.lua +++ b/data-otservbr-global/monster/magicals/fahim_the_wise.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -57,8 +57,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "blue djinn", chance = 10, interval = 2000, count = 3 } - } + { name = "blue djinn", chance = 10, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -83,7 +83,7 @@ monster.loot = { { name = "blue gem", chance = 2380 }, { name = "small oil lamp", chance = 580 }, { id = 2948, chance = 480 }, -- wooden flute - { name = "heavy machete", chance = 380 } + { name = "heavy machete", chance = 380 }, } monster.attacks = { @@ -94,14 +94,14 @@ monster.attacks = { { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 6000 }, { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "rabbit" }, { name = "djinn electrify", interval = 2000, chance = 15, range = 5, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -30, maxDamage = -90, radius = 3, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -30, maxDamage = -90, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { defense = 20, armor = 20, mitigation = 1.29, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/feral_sphinx.lua b/data-otservbr-global/monster/magicals/feral_sphinx.lua index 8a9c273105f..bbcafcf1d9c 100644 --- a/data-otservbr-global/monster/magicals/feral_sphinx.lua +++ b/data-otservbr-global/monster/magicals/feral_sphinx.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 57, lookFeet = 0, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.raceId = 1807 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Kilmaresh, south of Issavi." + Locations = "Kilmaresh, south of Issavi.", } monster.health = 9800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,7 +84,7 @@ monster.loot = { { name = "magma boots", chance = 2120 }, { name = "magma amulet", chance = 7160 }, { name = "wand of inferno", chance = 7690 }, - { name = "dragon necklace", chance = 800 } + { name = "dragon necklace", chance = 800 }, } monster.attacks = { @@ -92,14 +92,14 @@ monster.attacks = { { name = "fire wave", interval = 2000, chance = 15, minDamage = -350, maxDamage = -500, length = 1, spread = 0, target = true }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -500, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -550, range = 1, shootEffect = CONST_ANI_FIRE, target = false }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -580, length = 6, spread = 3, effect = CONST_ME_HOLYAREA, target = false } + { name = "combat", interval = 2000, chance = 8, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -580, length = 6, spread = 3, effect = CONST_ME_HOLYAREA, target = false }, } monster.defenses = { defense = 90, armor = 90, mitigation = 2.69, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/feversleep.lua b/data-otservbr-global/monster/magicals/feversleep.lua index dce181a77ff..c99daf92382 100644 --- a/data-otservbr-global/monster/magicals/feversleep.lua +++ b/data-otservbr-global/monster/magicals/feversleep.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1021 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Roshamuul Mines, Roshamuul Cistern." + Locations = "Roshamuul Mines, Roshamuul Cistern.", } monster.health = 5900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,7 +88,7 @@ monster.loot = { { name = "blue crystal splinter", chance = 13000 }, { name = "cyan crystal fragment", chance = 18000 }, { name = "trapped bad dream monster", chance = 17000 }, - { name = "bowl of terror sweat", chance = 14000 } + { name = "bowl of terror sweat", chance = 14000 }, } monster.attacks = { @@ -98,7 +98,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -70, maxDamage = -100, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, { name = "feversleep skill reducer", interval = 2000, chance = 10, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -250, maxDamage = -300, length = 6, spread = 3, effect = CONST_ME_YELLOWENERGY, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.defenses = { armor = 73, mitigation = 1.10, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_HITAREA } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_HITAREA }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/flying_book.lua b/data-otservbr-global/monster/magicals/flying_book.lua index f6b55f03479..29e15686d73 100644 --- a/data-otservbr-global/monster/magicals/flying_book.lua +++ b/data-otservbr-global/monster/magicals/flying_book.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1654 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Secret Library (fire and energy sections)." + Locations = "Secret Library (fire and energy sections).", } monster.health = 500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -72,12 +72,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -180, range = 7, shootEffect = CONST_ANI_ICE, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -180, range = 7, shootEffect = CONST_ANI_ICE, target = false }, } monster.defenses = { @@ -103,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/forest_fury.lua b/data-otservbr-global/monster/magicals/forest_fury.lua index 55a1a89b031..fc5a688e39f 100644 --- a/data-otservbr-global/monster/magicals/forest_fury.lua +++ b/data-otservbr-global/monster/magicals/forest_fury.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 980 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Forest Fury Camp and in the Forest Fury version of the Forsaken Mine." + Locations = "Forest Fury Camp and in the Forest Fury version of the Forsaken Mine.", } monster.health = 480 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -87,13 +87,13 @@ monster.loot = { { name = "elvish bow", chance = 90 }, { name = "small topaz", chance = 470 }, { name = "elven hoof", chance = 7030 }, - { name = "venison", chance = 13210 } + { name = "venison", chance = 13210 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -125 }, { name = "combat", interval = 1500, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, radius = 4, shootEffect = CONST_ANI_HUNTINGSPEAR, effect = CONST_ME_MAGIC_GREEN, target = true }, - { name = "forest fury skill reducer", interval = 2000, chance = 20, range = 5, target = false } + { name = "forest fury skill reducer", interval = 2000, chance = 20, range = 5, target = false }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/frazzlemaw.lua b/data-otservbr-global/monster/magicals/frazzlemaw.lua index dc170df6429..50927628608 100644 --- a/data-otservbr-global/monster/magicals/frazzlemaw.lua +++ b/data-otservbr-global/monster/magicals/frazzlemaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1022 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Lower Roshamuul, Guzzlemaw Valley, the entrance to Upper Roshamuul." + Locations = "Lower Roshamuul, Guzzlemaw Valley, the entrance to Upper Roshamuul.", } monster.health = 4100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -108,7 +108,7 @@ monster.loot = { { id = 16279, chance = 10000 }, -- crystal rubbish { name = "cluster of solace", chance = 4450 }, { name = "frazzle tongue", chance = 18760 }, - { name = "frazzle skin", chance = 16000 } + { name = "frazzle skin", chance = 16000 }, } monster.attacks = { @@ -118,14 +118,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 30, armor = 74, mitigation = 2.31, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -145,7 +145,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/gargoyle.lua b/data-otservbr-global/monster/magicals/gargoyle.lua index ae29e029a00..f941d2f33e8 100644 --- a/data-otservbr-global/monster/magicals/gargoyle.lua +++ b/data-otservbr-global/monster/magicals/gargoyle.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 95 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Meriana Gargoyle Cave, Ankrahmun Tombs, Mal'ouquah, Goroma, Deeper Banuta, \z - Formorgar Mines, Vengoth, Farmine Mines, Upper Spike and Medusa Tower." + Formorgar Mines, Vengoth, Farmine Mines, Upper Spike and Medusa Tower.", } monster.health = 250 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,18 +91,18 @@ monster.loot = { { name = "potato", chance = 9220, maxCount = 2 }, { name = "stone wing", chance = 11730 }, { name = "shiny stone", chance = 190 }, - { name = "piece of marble rock", chance = 630 } + { name = "piece of marble rock", chance = 630 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -65 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -65 }, } monster.defenses = { defense = 25, armor = 26, mitigation = 0.78, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 5, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 5, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/gazer.lua b/data-otservbr-global/monster/magicals/gazer.lua index 3a8c0683990..60e9b4445a1 100644 --- a/data-otservbr-global/monster/magicals/gazer.lua +++ b/data-otservbr-global/monster/magicals/gazer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 109 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Hellgate bonelord cave, Vandura Bonelord Cave, also anywhere Elder Bonelords exist, as summons." + Locations = "Hellgate bonelord cave, Vandura Bonelord Cave, also anywhere Elder Bonelords exist, as summons.", } monster.health = 120 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -77,13 +77,13 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 99350, maxCount = 16 }, - { name = "small flask of eyedrops", chance = 3200 } + { name = "small flask of eyedrops", chance = 3200 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -25, maxDamage = -35, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -10, maxDamage = -35, range = 7, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -10, maxDamage = -35, range = 7, target = false }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/girtablilu_warrior.lua b/data-otservbr-global/monster/magicals/girtablilu_warrior.lua index 732bb749d6d..8dac11a26ac 100644 --- a/data-otservbr-global/monster/magicals/girtablilu_warrior.lua +++ b/data-otservbr-global/monster/magicals/girtablilu_warrior.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 113, lookFeet = 114, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 2099 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Ruins of Nuur." + Locations = "Ruins of Nuur.", } monster.health = 8500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -103,21 +103,21 @@ monster.loot = { { name = "blue robe", chance = 1060 }, { name = "focus cape", chance = 1060 }, { name = "fur armor", chance = 820 }, - { name = "glacier robe", chance = 650 } + { name = "glacier robe", chance = 650 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -450 }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -650, radius = 4, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -450, range = 5, shootEffect = CONST_ANI_POISONARROW, target = true }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -400, length = 3, spread = 2, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -400, length = 3, spread = 2, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { defense = 76, armor = 76, mitigation = 2.22, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -137,7 +137,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/green_djinn.lua b/data-otservbr-global/monster/magicals/green_djinn.lua index 62c58deb962..3f7f6092068 100644 --- a/data-otservbr-global/monster/magicals/green_djinn.lua +++ b/data-otservbr-global/monster/magicals/green_djinn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 51 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Mal'ouquah, Oasis Tomb, under the Ankrahmun Library Tomb, \z - Serpentine Tower last floor behind the Magic Walls, Deeper Banuta, Goroma underground, Magician Quarter." + Serpentine Tower last floor behind the Magic Walls, Deeper Banuta, Goroma underground, Magician Quarter.", } monster.health = 330 @@ -39,7 +39,7 @@ monster.enemyFactions = { FACTION_MARID, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -77,7 +77,7 @@ monster.voices = { { text = "I grant you a deathwish!", yell = false }, { text = "Muahahahahaha", yell = false }, { text = "I wish you a merry trip to hell!", yell = false }, - { text = "Good wishes are for fairytales", yell = false } + { text = "Good wishes are for fairytales", yell = false }, } monster.loot = { @@ -91,7 +91,7 @@ monster.loot = { { name = "green piece of cloth", chance = 2000 }, { name = "royal spear", chance = 4870, maxCount = 2 }, { name = "mana potion", chance = 490 }, - { name = "dirty turban", chance = 2210 } + { name = "dirty turban", chance = 2210 }, } monster.attacks = { @@ -101,12 +101,12 @@ monster.attacks = { { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 5000 }, { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "rat" }, { name = "djinn electrify", interval = 2000, chance = 15, range = 5, target = false }, - { name = "djinn cancel invisibility", interval = 2000, chance = 10, target = false } + { name = "djinn cancel invisibility", interval = 2000, chance = 10, target = false }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -119,14 +119,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = -13 }, - { type = COMBAT_DEATHDAMAGE, percent = 20 } + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/gryphon.lua b/data-otservbr-global/monster/magicals/gryphon.lua index 8efe4edf0f8..39e919e600f 100644 --- a/data-otservbr-global/monster/magicals/gryphon.lua +++ b/data-otservbr-global/monster/magicals/gryphon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1819 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Kilmaresh Mountains" + Locations = "Kilmaresh Mountains", } monster.health = 3200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -72,13 +72,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 350 }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -450, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -300, length = 3, spread = 0, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -300, length = 3, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { @@ -104,7 +103,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/guardian_of_tales.lua b/data-otservbr-global/monster/magicals/guardian_of_tales.lua index 19ec24062bc..e34153ea79e 100644 --- a/data-otservbr-global/monster/magicals/guardian_of_tales.lua +++ b/data-otservbr-global/monster/magicals/guardian_of_tales.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 79, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 1659 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Secret Library (fire section)." + Locations = "Secret Library (fire section).", } monster.health = 15000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -86,14 +86,14 @@ monster.loot = { { name = "magma coat", chance = 350 }, { name = "magma legs", chance = 250 }, { name = "piece of hellfire armor", chance = 500, maxCount = 5 }, - { id = 12600, chance = 10000, maxCount = 5 } -- coal + { id = 12600, chance = 10000, maxCount = 5 }, -- coal } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -550 }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -605, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -375, maxDamage = -500, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -775, radius = 3, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -775, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/guzzlemaw.lua b/data-otservbr-global/monster/magicals/guzzlemaw.lua index bc22c97b699..5f5aad15c41 100644 --- a/data-otservbr-global/monster/magicals/guzzlemaw.lua +++ b/data-otservbr-global/monster/magicals/guzzlemaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1013 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 4, Occurrence = 0, Locations = "Guzzlemaw Valley, and a single spawn in a tower in Upper Roshamuul \z - (south of the Depot and west of the entrance to Roshamuul Prison)." + (south of the Depot and west of the entrance to Roshamuul Prison).", } monster.health = 6400 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -104,7 +104,7 @@ monster.loot = { { id = 16279, chance = 12000 }, -- crystal rubbish { name = "cluster of solace", chance = 8920 }, { name = "frazzle tongue", chance = 15000 }, - { name = "frazzle skin", chance = 14000 } + { name = "frazzle skin", chance = 14000 }, } monster.attacks = { @@ -114,14 +114,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -900, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -800, radius = 6, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 50, armor = 74, mitigation = 2.31, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -141,7 +141,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/icecold_book.lua b/data-otservbr-global/monster/magicals/icecold_book.lua index 094becdcd28..789cc58b3c2 100644 --- a/data-otservbr-global/monster/magicals/icecold_book.lua +++ b/data-otservbr-global/monster/magicals/icecold_book.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 79, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1664 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Secret Library (ice section)." + Locations = "Secret Library (ice section).", } monster.health = 21000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -93,7 +93,7 @@ monster.loot = { { name = "sapphire hammer", chance = 300 }, { id = 7441, chance = 100000 }, -- ice cube { name = "glacial rod", chance = 150 }, - { name = "crystalline armor", chance = 250 } + { name = "crystalline armor", chance = 250 }, } monster.attacks = { @@ -101,7 +101,7 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -700, maxDamage = -850, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -380, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -350, maxDamage = -980, length = 5, spread = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -230, maxDamage = -880, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -230, maxDamage = -880, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false }, } monster.defenses = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/juvenile_bashmu.lua b/data-otservbr-global/monster/magicals/juvenile_bashmu.lua index ac244028b37..fe7bb499bb0 100644 --- a/data-otservbr-global/monster/magicals/juvenile_bashmu.lua +++ b/data-otservbr-global/monster/magicals/juvenile_bashmu.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 3, lookFeet = 79, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2101 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Salt Caves" + Locations = "Salt Caves", } monster.health = 7500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.flags = { @@ -55,12 +55,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 1, - color = 0 + color = 0, } monster.voices = { @@ -94,7 +94,7 @@ monster.loot = { { name = "pair of iron fists", chance = 1010 }, { name = "skull staff", chance = 960 }, { name = "crystal mace", chance = 800 }, - { name = "chaos mace", chance = 530 } + { name = "chaos mace", chance = 530 }, } monster.attacks = { @@ -107,7 +107,7 @@ monster.attacks = { monster.defenses = { defense = 75, armor = 75, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -120,14 +120,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = -20 }, - { type = COMBAT_DEATHDAMAGE, percent = 5 } + { type = COMBAT_DEATHDAMAGE, percent = 5 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/lamassu.lua b/data-otservbr-global/monster/magicals/lamassu.lua index 0c9c421c83c..b59aa14c364 100644 --- a/data-otservbr-global/monster/magicals/lamassu.lua +++ b/data-otservbr-global/monster/magicals/lamassu.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 76, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1806 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Kilmaresh." + Locations = "Kilmaresh.", } monster.health = 8700 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_FAFNAR, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,13 +90,13 @@ monster.loot = { { name = "terra hood", chance = 5900 }, { name = "sacred tree amulet", chance = 2300 }, { name = "elven amulet", chance = 2000 }, - { name = "violet gem", chance = 1700 } + { name = "violet gem", chance = 1700 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -485, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -405, range = 5, radius = 3, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_SMALLPLANTS, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -405, range = 5, radius = 3, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_SMALLPLANTS, target = true }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/lumbering_carnivor.lua b/data-otservbr-global/monster/magicals/lumbering_carnivor.lua index f3afeb11477..b6878c11e06 100644 --- a/data-otservbr-global/monster/magicals/lumbering_carnivor.lua +++ b/data-otservbr-global/monster/magicals/lumbering_carnivor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 67, lookFeet = 85, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1721 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Carnivora's Rocks." + Locations = "Carnivora's Rocks.", } monster.health = 2600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,19 +90,19 @@ monster.loot = { { name = "violet gem", chance = 4000 }, { name = "green gem", chance = 4800 }, { name = "blue gem", chance = 4000 }, - { name = "focus cape", chance = 3000 } + { name = "focus cape", chance = 3000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -500 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -150, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -150, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { defense = 20, armor = 65, mitigation = 1.82, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/manticore.lua b/data-otservbr-global/monster/magicals/manticore.lua index d9b41e3f624..97eba9ff118 100644 --- a/data-otservbr-global/monster/magicals/manticore.lua +++ b/data-otservbr-global/monster/magicals/manticore.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 113, lookFeet = 20, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1816 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Kilmaresh." + Locations = "Kilmaresh.", } monster.health = 6700 @@ -33,10 +33,9 @@ monster.corpse = 31390 monster.speed = 150 monster.manaCost = 0 - monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,14 +85,14 @@ monster.loot = { { name = "magma coat", chance = 2970 }, { name = "wand of everblazing", chance = 1120 }, { name = "wand of dragonbreath", chance = 740 }, - { name = "wand of draconia", chance = 370 } + { name = "wand of draconia", chance = 370 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -450, length = 8, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 4000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -400, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_GREEN_RINGS, target = true }, - { name = "combat", interval = 2000, chance = 22, type = COMBAT_FIREDAMAGE, minDamage = -450, maxDamage = -550, range = 4, shootEffect = CONST_ANI_BURSTARROW, target = true } + { name = "combat", interval = 2000, chance = 22, type = COMBAT_FIREDAMAGE, minDamage = -450, maxDamage = -550, range = 4, shootEffect = CONST_ANI_BURSTARROW, target = true }, } monster.defenses = { @@ -119,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/marid.lua b/data-otservbr-global/monster/magicals/marid.lua index f5e0598396e..fa14fce413e 100644 --- a/data-otservbr-global/monster/magicals/marid.lua +++ b/data-otservbr-global/monster/magicals/marid.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 104 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Kha'zeel, Magician Quarter, Djinn battle island through the Haunted Tomb." + Locations = "Kha'zeel, Magician Quarter, Djinn battle island through the Haunted Tomb.", } monster.health = 550 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_EFREET, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "blue djinn", chance = 10, interval = 2000, count = 2 } - } + { name = "blue djinn", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -104,7 +104,7 @@ monster.loot = { { name = "seeds", chance = 2400 }, { name = "magma monocle", chance = 320 }, { name = "jewelled belt", chance = 7880 }, - { name = "noble turban", chance = 530 } + { name = "noble turban", chance = 530 }, } monster.attacks = { @@ -115,14 +115,14 @@ monster.attacks = { { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 6000 }, { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "rabbit" }, { name = "djinn electrify", interval = 2000, chance = 15, range = 5, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -30, maxDamage = -90, radius = 3, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -30, maxDamage = -90, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { defense = 20, armor = 24, mitigation = 0.91, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -142,7 +142,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/medusa.lua b/data-otservbr-global/monster/magicals/medusa.lua index 34ea3f6d2bc..a828ace46eb 100644 --- a/data-otservbr-global/monster/magicals/medusa.lua +++ b/data-otservbr-global/monster/magicals/medusa.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 570 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Vandura Mountain (single spawn), Talahu (Medusa Cave), Deeper Banuta, Medusa Tower." + Locations = "Vandura Mountain (single spawn), Talahu (Medusa Cave), Deeper Banuta, Medusa Tower.", } monster.health = 4500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -93,7 +93,7 @@ monster.loot = { { name = "ultimate health potion", chance = 9290, maxCount = 2 }, { id = 8896, chance = 500 }, -- slightly rusted armor { name = "sacred tree amulet", chance = 850 }, - { name = "strand of medusa hair", chance = 9900 } + { name = "strand of medusa hair", chance = 9900 }, } monster.attacks = { @@ -101,14 +101,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -21, maxDamage = -350, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_CARNIPHILA, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, { name = "speed", interval = 2000, chance = 25, radius = 7, effect = CONST_ME_POFF, target = true }, - { name = "outfit", interval = 2000, chance = 1, range = 7, target = true, duration = 3000, outfitMonster = "clay guardian" } + { name = "outfit", interval = 2000, chance = 1, range = 7, target = true, duration = 3000, outfitMonster = "clay guardian" }, } monster.defenses = { defense = 30, armor = 45, mitigation = 1.74, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/menacing_carnivor.lua b/data-otservbr-global/monster/magicals/menacing_carnivor.lua index 7451b7e0495..91a1772c42a 100644 --- a/data-otservbr-global/monster/magicals/menacing_carnivor.lua +++ b/data-otservbr-global/monster/magicals/menacing_carnivor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 83, lookFeet = 91, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 1723 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Carnivora's Rocks." + Locations = "Carnivora's Rocks.", } monster.health = 3500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -97,25 +97,25 @@ monster.loot = { { name = "onyx chip", chance = 9800 }, { name = "opal", chance = 2000 }, { name = "tiger eye", chance = 3000 }, - { name = "wand of decay", chance = 8700 } + { name = "wand of decay", chance = 8700 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -300, maxDamage = -450 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -180, length = 4, spread = 3, effect = CONST_ME_SMOKE, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, length = 4, spread = 3, effect = CONST_ME_POISONAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -330, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -330, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { defense = 0, armor = 68, mitigation = 1.88, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.reflects = { - { type = COMBAT_PHYSICALDAMAGE, percent = 100 } + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, } monster.elements = { @@ -135,7 +135,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/merikh_the_slaughterer.lua b/data-otservbr-global/monster/magicals/merikh_the_slaughterer.lua index 4936cf4d7ee..376754a0068 100644 --- a/data-otservbr-global/monster/magicals/merikh_the_slaughterer.lua +++ b/data-otservbr-global/monster/magicals/merikh_the_slaughterer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -57,8 +57,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "green djinn", chance = 10, interval = 2000, count = 1 } - } + { name = "green djinn", chance = 10, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -82,11 +82,11 @@ monster.loot = { { name = "royal spear", chance = 55550, maxCount = 3 }, { name = "mystic turban", chance = 36100 }, { name = "green gem", chance = 2800 }, - { name = "pear", chance = 100, maxCount = 8 } + { name = "pear", chance = 100, maxCount = 8 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -304 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -304 }, --fireball --heavy magic missile --sudden death @@ -98,7 +98,7 @@ monster.defenses = { defense = 0, armor = 0, mitigation = 1.29, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/midnight_panther.lua b/data-otservbr-global/monster/magicals/midnight_panther.lua index 52c30edb6ef..bc7b1b84cc1 100644 --- a/data-otservbr-global/monster/magicals/midnight_panther.lua +++ b/data-otservbr-global/monster/magicals/midnight_panther.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 698 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Tiquanda." + Locations = "Tiquanda.", } monster.health = 1200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -81,12 +81,12 @@ monster.loot = { { id = 3052, chance = 12500 }, -- life ring { name = "meat", chance = 25000, maxCount = 4 }, { name = "panther head", chance = 12500 }, - { name = "panther paw", chance = 100000 } + { name = "panther paw", chance = 100000 }, } monster.attacks = { { name = "melee", interval = 1500, chance = 100, minDamage = 0, maxDamage = -90 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -75, maxDamage = -215, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -75, maxDamage = -215, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { @@ -95,7 +95,7 @@ monster.defenses = { mitigation = 0.99, { name = "speed", interval = 2000, chance = 15, speedChange = 370, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 125, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/nightmare.lua b/data-otservbr-global/monster/magicals/nightmare.lua index 2d7a47049bb..b5c93d2b87b 100644 --- a/data-otservbr-global/monster/magicals/nightmare.lua +++ b/data-otservbr-global/monster/magicals/nightmare.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 299 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Pits of Inferno, Formorgar Mines, Cemetery Quarter, Edron \z - (In multiple places during The Inquisition Quest), Alchemist Quarter, Vengoth Castle, Deeper Banuta, Krailos Ruins, Grounds of Deceit." + (In multiple places during The Inquisition Quest), Alchemist Quarter, Vengoth Castle, Deeper Banuta, Krailos Ruins, Grounds of Deceit.", } monster.health = 2700 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -99,13 +99,13 @@ monster.loot = { { name = "skeleton decoration", chance = 337 }, { name = "flask of demonic blood", chance = 19666, maxCount = 2 }, { name = "essence of a bad dream", chance = 15240 }, - { name = "scythe leg", chance = 9090 } + { name = "scythe leg", chance = 9090 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -170, range = 7, radius = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -350, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -350, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.defenses = { armor = 25, mitigation = 0.70, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 60, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/nightmare_scion.lua b/data-otservbr-global/monster/magicals/nightmare_scion.lua index d8f45fa4d57..1212f11b31e 100644 --- a/data-otservbr-global/monster/magicals/nightmare_scion.lua +++ b/data-otservbr-global/monster/magicals/nightmare_scion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 518 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Cemetery Quarter, Alchemist Quarter and in the Arena and Zoo Quarter (unreachable), \z - Vengoth Castle, Formorgar Mines, Lower Spike, Robson Isle (single respawn), Krailos Ruins." + Vengoth Castle, Formorgar Mines, Lower Spike, Robson Isle (single respawn), Krailos Ruins.", } monster.health = 1400 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,20 +92,20 @@ monster.loot = { { name = "focus cape", chance = 340 }, { name = "crystal of focus", chance = 100 }, { name = "essence of a bad dream", chance = 7692 }, - { name = "scythe leg", chance = 4761 } + { name = "scythe leg", chance = 4761 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -115, maxDamage = -180, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -130, range = 7, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -130, range = 7, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, } monster.defenses = { defense = 20, armor = 25, mitigation = 0.70, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 60, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 60, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/nightstalker.lua b/data-otservbr-global/monster/magicals/nightstalker.lua index d2a06f5542d..cff81085ae5 100644 --- a/data-otservbr-global/monster/magicals/nightstalker.lua +++ b/data-otservbr-global/monster/magicals/nightstalker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 520 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Cemetery Quarter, Vengoth Castle, Vandura Mountain, Robson Isle." + Locations = "Cemetery Quarter, Vengoth Castle, Vandura Mountain, Robson Isle.", } monster.health = 700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -93,7 +93,7 @@ monster.loot = { { name = "chaos mace", chance = 121 }, { name = "strong mana potion", chance = 1612 }, { name = "spirit cloak", chance = 520 }, - { name = "crystal of balance", chance = 127 } + { name = "crystal of balance", chance = 127 }, } monster.attacks = { @@ -113,7 +113,7 @@ monster.defenses = { { name = "outfit", interval = 5000, chance = 10, target = false, duration = 4000, outfitMonster = "the count" }, { name = "outfit", interval = 5000, chance = 10, target = false, duration = 4000, outfitMonster = "grim reaper" }, { name = "outfit", interval = 5000, chance = 10, target = false, duration = 4000, outfitMonster = "tarantula" }, - { name = "outfit", interval = 5000, chance = 1, target = false, duration = 4000, outfitMonster = "ferumbras" } + { name = "outfit", interval = 5000, chance = 1, target = false, duration = 4000, outfitMonster = "ferumbras" }, } monster.elements = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/phantasm.lua b/data-otservbr-global/monster/magicals/phantasm.lua index 740c048559a..9dc266f8bb3 100644 --- a/data-otservbr-global/monster/magicals/phantasm.lua +++ b/data-otservbr-global/monster/magicals/phantasm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 292 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Pits of Inferno, The Inquisition Quest, Deeper Banuta." + Locations = "Pits of Inferno, The Inquisition Quest, Deeper Banuta.", } monster.health = 3950 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -70,8 +70,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "Phantasm Summon", chance = 20, interval = 2000, count = 4 } - } + { name = "Phantasm Summon", chance = 20, interval = 2000, count = 4 }, + }, } monster.voices = { @@ -102,7 +102,7 @@ monster.loot = { { name = "shadow sceptre", chance = 550 }, { name = "great mana potion", chance = 32750, maxCount = 2 }, { name = "ultimate health potion", chance = 14680 }, - { name = "small topaz", chance = 12810, maxCount = 3 } + { name = "small topaz", chance = 12810, maxCount = 3 }, } monster.attacks = { @@ -110,7 +110,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -610, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -5, maxDamage = -80, radius = 3, effect = CONST_ME_YELLOW_RINGS, target = false }, { name = "phantasm drown", interval = 2000, chance = 15, target = false }, - { name = "drunk", interval = 2000, chance = 15, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "drunk", interval = 2000, chance = 15, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.defenses = { mitigation = 1.10, { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 228, maxDamage = 449, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 10, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, - { name = "invisible", interval = 2000, chance = 25, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 25, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -139,7 +139,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/phantasm_summon.lua b/data-otservbr-global/monster/magicals/phantasm_summon.lua index 6ce7b76fcb5..152680243a9 100644 --- a/data-otservbr-global/monster/magicals/phantasm_summon.lua +++ b/data-otservbr-global/monster/magicals/phantasm_summon.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3950 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,18 +62,17 @@ monster.voices = { { text = "Weeheeheeheehee!", yell = false }, { text = "Its nothing but a dream.", yell = false }, { text = "Dream a little dream with me!", yell = false }, - { text = "Give in.", yell = false } + { text = "Give in.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -80, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -5, maxDamage = -80, radius = 3, effect = CONST_ME_YELLOW_RINGS, target = false }, { name = "phantasm drown", interval = 2000, chance = 10, target = false }, - { name = "drunk", interval = 2000, chance = 5, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "drunk", interval = 2000, chance = 5, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.defenses = { @@ -81,7 +80,7 @@ monster.defenses = { armor = 0, { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 40, maxDamage = 65, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 10, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, - { name = "invisible", interval = 2000, chance = 25, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 25, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -94,14 +93,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/rage_squid.lua b/data-otservbr-global/monster/magicals/rage_squid.lua index 8729d465725..8fcba91d567 100644 --- a/data-otservbr-global/monster/magicals/rage_squid.lua +++ b/data-otservbr-global/monster/magicals/rage_squid.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 79, lookFeet = 57, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1668 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Secret Library (fire section)." + Locations = "Secret Library (fire section).", } monster.health = 17000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -100,7 +100,7 @@ monster.loot = { { name = "magic plate armor", chance = 150 }, { name = "platinum amulet", chance = 350 }, { name = "wand of everblazing", chance = 300 }, - { name = "fire axe", chance = 500 } + { name = "fire axe", chance = 500 }, } monster.attacks = { @@ -109,7 +109,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -380, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -175, maxDamage = -200, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -475, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -475, radius = 2, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -475, radius = 2, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { @@ -135,7 +135,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/retching_horror.lua b/data-otservbr-global/monster/magicals/retching_horror.lua index 10a6a330010..7646ddfa8a3 100644 --- a/data-otservbr-global/monster/magicals/retching_horror.lua +++ b/data-otservbr-global/monster/magicals/retching_horror.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1018 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "All over the surface of Upper Roshamuul and Nightmare Isles." + Locations = "All over the surface of Upper Roshamuul and Nightmare Isles.", } monster.health = 5300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -75,7 +75,7 @@ monster.voices = { chance = 10, { text = "Wait for us, little maggot...", yell = false }, { text = "We will devour you...", yell = false }, - { text = "My little beetles, go forth, eat, feast!", yell = false } + { text = "My little beetles, go forth, eat, feast!", yell = false }, } monster.loot = { @@ -94,7 +94,7 @@ monster.loot = { { name = "wand of starstorm", chance = 960 }, { id = 20029, chance = 3700 }, -- broken dream { name = "goosebump leather", chance = 16400 }, - { name = "pool of chitinous glue", chance = 14000 } + { name = "pool of chitinous glue", chance = 14000 }, } monster.attacks = { @@ -103,12 +103,12 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 4, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_STUN, target = true, duration = 15000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -110, radius = 4, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, radius = 1, shootEffect = CONST_ANI_SNIPERARROW, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, } monster.elements = { @@ -121,14 +121,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 15 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 20 } + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/rorc.lua b/data-otservbr-global/monster/magicals/rorc.lua index a197ad1c956..8738996cffd 100644 --- a/data-otservbr-global/monster/magicals/rorc.lua +++ b/data-otservbr-global/monster/magicals/rorc.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 978 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "South-west of Ulderek's Rock and in the Rorc version of the Forsaken Mine." + Locations = "South-west of Ulderek's Rock and in the Rorc version of the Forsaken Mine.", } monster.health = 260 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,12 +59,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -72,7 +72,7 @@ monster.voices = { chance = 10, { text = "Kroaaah!!", yell = false }, { text = "Butak bana zamar!", yell = false }, - { text = "Krrrooow truaaak kiiiii!", yell = false } + { text = "Krrrooow truaaak kiiiii!", yell = false }, } monster.loot = { @@ -83,18 +83,18 @@ monster.loot = { { name = "plate shield", chance = 6700 }, { name = "rorc feather", chance = 12520 }, { name = "rorc egg", chance = 790 }, - { name = "hatched rorc egg", chance = 12670 } + { name = "hatched rorc egg", chance = 12670 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, } monster.defenses = { defense = 25, armor = 25, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 40, maxDamage = 55, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } monster.elements = { @@ -107,14 +107,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/shiversleep.lua b/data-otservbr-global/monster/magicals/shiversleep.lua index 1d3f5c602a2..dbfb4942830 100644 --- a/data-otservbr-global/monster/magicals/shiversleep.lua +++ b/data-otservbr-global/monster/magicals/shiversleep.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4600 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,18 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 1800, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -685, length = 7, spread = 3, effect = CONST_ME_STONES, target = false }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -590, radius = 6, effect = CONST_ME_BIGPLANTS, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -590, radius = 6, effect = CONST_ME_BIGPLANTS, target = false }, } monster.defenses = { defense = 55, - armor = 55 + armor = 55, } monster.elements = { @@ -86,14 +85,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/shock_head.lua b/data-otservbr-global/monster/magicals/shock_head.lua index 04d8bb327a1..8b621dd6f4f 100644 --- a/data-otservbr-global/monster/magicals/shock_head.lua +++ b/data-otservbr-global/monster/magicals/shock_head.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1004 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Sparsely in eastern Lower Roshamuu and southern Guzzlemaw Valley." + Locations = "Sparsely in eastern Lower Roshamuu and southern Guzzlemaw Valley.", } monster.health = 4200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,25 +62,25 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "", yell = false }, - { text = "Thun... Thun... THUNDER!", yell = false } + { text = "Thun... Thun... THUNDER!", yell = false }, } monster.loot = { { name = "small sapphire", chance = 5000 }, { id = 3031, chance = 92000, maxCount = 200 }, -- gold coin - { name = "royal helmet", chance = 270 } + { name = "royal helmet", chance = 270 }, } monster.attacks = { @@ -89,13 +89,13 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 15, speedChange = -800, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false, duration = 7500 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -350, radius = 4, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_STONES, target = true }, { name = "shock head skill reducer 1", interval = 2000, chance = 5, range = 5, target = false }, - { name = "shock head skill reducer 2", interval = 2000, chance = 5, target = false } + { name = "shock head skill reducer 2", interval = 2000, chance = 5, target = false }, } monster.defenses = { defense = 30, armor = 30, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 350, effect = CONST_ME_INSECTS, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 350, effect = CONST_ME_INSECTS, target = false }, } monster.elements = { @@ -108,14 +108,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 25 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 20 } + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/sight_of_surrender.lua b/data-otservbr-global/monster/magicals/sight_of_surrender.lua index f1c1622c360..2db33a6e802 100644 --- a/data-otservbr-global/monster/magicals/sight_of_surrender.lua +++ b/data-otservbr-global/monster/magicals/sight_of_surrender.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1012 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 4, Occurrence = 0, Locations = "Dark Grounds, Guzzlemaw Valley (if less than 100 Blowing Horns tasks \z - have been done the day before) and the Silencer Plateau (when Silencer Resonating Chambers are used there)." + have been done the day before) and the Silencer Plateau (when Silencer Resonating Chambers are used there).", } monster.health = 28000 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -105,13 +105,13 @@ monster.loot = { { name = "cluster of solace", chance = 11800 }, { name = "sight of surrender's eye", chance = 100000 }, { name = "broken visor", chance = 100000 }, - { id = 20208, chance = 460 } -- string of mending + { id = 20208, chance = 460 }, -- string of mending } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1100 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_YELLOWENERGY, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 1, shootEffect = CONST_ANI_LARGEROCK, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 1, shootEffect = CONST_ANI_LARGEROCK, target = true }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.defenses = { armor = 92, mitigation = 2.31, { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 550, maxDamage = 1100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 520, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 520, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -139,7 +139,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/silencer.lua b/data-otservbr-global/monster/magicals/silencer.lua index fe925e3c252..e71ec572cef 100644 --- a/data-otservbr-global/monster/magicals/silencer.lua +++ b/data-otservbr-global/monster/magicals/silencer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1014 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "All over the Roshamuul surface and Nightmare Isles." + Locations = "All over the Roshamuul surface and Nightmare Isles.", } monster.health = 5400 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -95,13 +95,13 @@ monster.loot = { { name = "terra boots", chance = 480 }, { name = "cluster of solace", chance = 4560 }, { name = "silencer claws", chance = 17000 }, - { name = "silencer resonating chamber", chance = 8410 } + { name = "silencer resonating chamber", chance = 8410 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -315, condition = { type = CONDITION_POISON, totalDamage = 600, interval = 4000 } }, { name = "silencer skill reducer", interval = 2000, chance = 10, range = 3, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -150, radius = 4, shootEffect = CONST_ANI_ONYXARROW, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -150, radius = 4, shootEffect = CONST_ANI_ONYXARROW, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.defenses = { armor = 71, mitigation = 1.82, { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 220, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 220, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/sphinx.lua b/data-otservbr-global/monster/magicals/sphinx.lua index 1a1aa510884..f6d42943ee7 100644 --- a/data-otservbr-global/monster/magicals/sphinx.lua +++ b/data-otservbr-global/monster/magicals/sphinx.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 3, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1808 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Nykri Delta, Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Kilmaresh Catacombs." + Locations = "Nykri Delta, Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Kilmaresh Catacombs.", } monster.health = 8500 @@ -38,7 +38,7 @@ monster.enemyFactions = { FACTION_FAFNAR, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -86,19 +86,19 @@ monster.loot = { { name = "wand of starstorm", chance = 2900 }, { name = "wand of defiance", chance = 1800 }, { name = "magma monocle", chance = 1400 }, - { name = "magma legs", chance = 1300 } + { name = "magma legs", chance = 1300 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -500, length = 6, spread = 3, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HOLYDAMAGE, minDamage = -100, maxDamage = -350, range = 5, radius = 3, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_HOLYAREA, target = true }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, radius = 3, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 2000, chance = 18, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { defense = 82, - armor = 82 + armor = 82, } monster.elements = { @@ -111,14 +111,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -15 }, { type = COMBAT_HOLYDAMAGE, percent = 15 }, - { type = COMBAT_DEATHDAMAGE, percent = -20 } + { type = COMBAT_DEATHDAMAGE, percent = -20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/spiky_carnivor.lua b/data-otservbr-global/monster/magicals/spiky_carnivor.lua index 7585f4a65fd..e39750e556a 100644 --- a/data-otservbr-global/monster/magicals/spiky_carnivor.lua +++ b/data-otservbr-global/monster/magicals/spiky_carnivor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 23, lookFeet = 86, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1722 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Carnivora's Rocks." + Locations = "Carnivora's Rocks.", } monster.health = 2800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,23 +93,23 @@ monster.loot = { { name = "shockwave amulet", chance = 2550 }, { name = "terra mantle", chance = 4050 }, { name = "buckle", chance = 250 }, - { name = "doublet", chance = 250 } + { name = "doublet", chance = 250 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -230, maxDamage = -380, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -230, maxDamage = -380, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { defense = 20, armor = 71, mitigation = 1.94, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.reflects = { - { type = COMBAT_PHYSICALDAMAGE, percent = 50 } + { type = COMBAT_PHYSICALDAMAGE, percent = 50 }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/squid_warden.lua b/data-otservbr-global/monster/magicals/squid_warden.lua index de56a2252d4..39280d5fe8f 100644 --- a/data-otservbr-global/monster/magicals/squid_warden.lua +++ b/data-otservbr-global/monster/magicals/squid_warden.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 3, lookFeet = 57, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1669 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Secret Library (ice section)." + Locations = "Secret Library (ice section).", } monster.health = 16500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { name = "crystal sword", chance = 300 }, { name = "glacier robe", chance = 150 }, { name = "glacier kilt", chance = 150 }, - { name = "slime heart", chance = 10002, maxCount = 4 } + { name = "slime heart", chance = 10002, maxCount = 4 }, } monster.attacks = { @@ -95,7 +95,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -200, range = 7, shootEffect = CONST_ANI_ICE, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -680, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -375, length = 3, spread = 2, effect = CONST_ME_ICEATTACK, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -230, maxDamage = -480, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -230, maxDamage = -480, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/terrorsleep.lua b/data-otservbr-global/monster/magicals/terrorsleep.lua index 59e868d3a26..f4bca2b0395 100644 --- a/data-otservbr-global/monster/magicals/terrorsleep.lua +++ b/data-otservbr-global/monster/magicals/terrorsleep.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1016 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Roshamuul Mines, Roshamuul Cistern." + Locations = "Roshamuul Mines, Roshamuul Cistern.", } monster.health = 7200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -75,7 +75,7 @@ monster.voices = { chance = 10, { text = "Aktat Roshok! Marruk!", yell = false }, { text = "I will eat you in your sleep.", yell = false }, - { text = "I am the darkness around you...", yell = false } + { text = "I am the darkness around you...", yell = false }, } monster.loot = { @@ -97,7 +97,7 @@ monster.loot = { { name = "cyan crystal fragment", chance = 17000 }, { id = 20029, chance = 1130 }, -- broken dream { name = "trapped bad dream monster", chance = 13000 }, - { name = "bowl of terror sweat", chance = 18000 } + { name = "bowl of terror sweat", chance = 18000 }, } monster.attacks = { @@ -107,7 +107,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -300, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, { name = "feversleep skill reducer", interval = 2000, chance = 10, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -350, maxDamage = -500, length = 6, spread = 3, effect = CONST_ME_YELLOWENERGY, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -450, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -450, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.defenses = { armor = 50, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 350, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_HITAREA }, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -128,14 +128,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 55 } + { type = COMBAT_DEATHDAMAGE, percent = 55 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/thanatursus.lua b/data-otservbr-global/monster/magicals/thanatursus.lua index 894ca5a1d48..cda3e1ed7e7 100644 --- a/data-otservbr-global/monster/magicals/thanatursus.lua +++ b/data-otservbr-global/monster/magicals/thanatursus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1728 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Haunted Temple, Court of Winter, Dream Labyrinth." + Locations = "Haunted Temple, Court of Winter, Dream Labyrinth.", } monster.health = 7200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,19 +62,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Uuuuuuuuuaaaaaarg!!!", yell = false }, - { text = "Nobody will ever escape from this place, muwahaha!!!", yell = false } + { text = "Nobody will ever escape from this place, muwahaha!!!", yell = false }, } monster.loot = { @@ -97,20 +97,20 @@ monster.loot = { { name = "wand of cosmic energy", chance = 400 }, { name = "wand of defiance", chance = 400 }, { name = "warrior's axe", chance = 400 }, - { name = "warrior's shield", chance = 400 } + { name = "warrior's shield", chance = 400 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -450 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -400, radius = 3, effect = CONST_ME_HOLYAREA, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -280, maxDamage = -450, length = 4, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -400, radius = 6, effect = CONST_ME_BLOCKHIT, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -400, radius = 6, effect = CONST_ME_BLOCKHIT, target = true }, } monster.defenses = { defense = 25, armor = 78, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_HEALING, minDamage = 150, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_HEALING, minDamage = 150, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -123,14 +123,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 20 }, - { type = COMBAT_DEATHDAMAGE, percent = -20 } + { type = COMBAT_DEATHDAMAGE, percent = -20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/venerable_girtablilu.lua b/data-otservbr-global/monster/magicals/venerable_girtablilu.lua index 45ddcff2cc3..558aaffee4a 100644 --- a/data-otservbr-global/monster/magicals/venerable_girtablilu.lua +++ b/data-otservbr-global/monster/magicals/venerable_girtablilu.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 114, lookFeet = 2, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2098 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Ruins of Nuur" + Locations = "Ruins of Nuur", } monster.health = 8500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -97,7 +97,7 @@ monster.loot = { { name = "wood cape", chance = 1340 }, { name = "necrotic rod", chance = 1040 }, { name = "springsprout rod", chance = 1040 }, - { name = "wand of decay", chance = 1040 } + { name = "wand of decay", chance = 1040 }, } monster.attacks = { @@ -112,7 +112,7 @@ monster.defenses = { defense = 80, armor = 80, mitigation = 2.16, - { name = "speed", interval = 1000, chance = 10, speedChange = 160, effect = CONST_ME_POFF, target = false, duration = 4000 } + { name = "speed", interval = 1000, chance = 10, speedChange = 160, effect = CONST_ME_POFF, target = false, duration = 4000 }, } monster.elements = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/magicals/weakened_frazzlemaw.lua b/data-otservbr-global/monster/magicals/weakened_frazzlemaw.lua index 59e5c8f9f0f..d44126f9518 100644 --- a/data-otservbr-global/monster/magicals/weakened_frazzlemaw.lua +++ b/data-otservbr-global/monster/magicals/weakened_frazzlemaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1442 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Feyrist." + Locations = "Feyrist.", } monster.health = 1200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -97,7 +97,7 @@ monster.loot = { { id = 20062, chance = 1200 }, -- cluster of solace { id = 20198, chance = 12000 }, -- frazzle tongue { id = 20199, chance = 10500 }, -- frazzle skin - { name = "fairy wings", chance = 15000 } + { name = "fairy wings", chance = 15000 }, } monster.attacks = { @@ -107,14 +107,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -50, radius = 4, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -50, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 30, armor = 45, mitigation = 1.37, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 80, maxDamage = 225, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 80, maxDamage = 225, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -134,7 +134,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/badger.lua b/data-otservbr-global/monster/mammals/badger.lua index a663918c783..4f133961093 100644 --- a/data-otservbr-global/monster/mammals/badger.lua +++ b/data-otservbr-global/monster/mammals/badger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 105 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Hrodmir, southern Tiquanda, unannounced raid in Ab'Dendriel and Edron." + Locations = "Hrodmir, southern Tiquanda, unannounced raid in Ab'Dendriel and Edron.", } monster.health = 23 @@ -35,7 +35,7 @@ monster.manaCost = 200 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,11 +75,11 @@ monster.voices = { monster.loot = { { id = 10299, chance = 10230 }, -- badger fur { name = "beetroot", chance = 40710 }, - { name = "acorn", chance = 5130 } + { name = "acorn", chance = 5130 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -12 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -12 }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/bat.lua b/data-otservbr-global/monster/mammals/bat.lua index 115c2dfbcdf..c44e214c437 100644 --- a/data-otservbr-global/monster/mammals/bat.lua +++ b/data-otservbr-global/monster/mammals/bat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 122 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 1, Occurrence = 0, Locations = "Dark Cathedral, Tiquanda, Drefia, Mount Sternum, Folda, Ghostlands, Kazordoon, \z - Femor Hills, Thais Bat Dungeon, Thais Bandit Cave and in many other caves." + Femor Hills, Thais Bat Dungeon, Thais Bandit Cave and in many other caves.", } monster.health = 30 @@ -36,7 +36,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,11 +75,11 @@ monster.voices = { } monster.loot = { - { name = "bat wing", chance = 1220 } + { name = "bat wing", chance = 1220 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/bear.lua b/data-otservbr-global/monster/mammals/bear.lua index 3a70609bc9e..578b7b162f9 100644 --- a/data-otservbr-global/monster/mammals/bear.lua +++ b/data-otservbr-global/monster/mammals/bear.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 16 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Several spawns near Kazordoon, Femor Hills, north of Thais, near the White Flower Temple, \z Rookgaard Bear Cave, Bear Room Quest in Rookgaard, Rookgaard Bear Mountain, South of Villa Scapula, \z Ferngrims Gate, North of Carlin, Fields of Glory, Edron Troll Cave, south of Venore, Desert Dungeon, \z - first floor of the Orc Fort mountain and west of Outlaw Camp." + first floor of the Orc Fort mountain and west of Outlaw Camp.", } monster.health = 80 @@ -38,7 +38,7 @@ monster.manaCost = 300 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -81,11 +81,11 @@ monster.loot = { { name = "meat", chance = 39750, maxCount = 4 }, { name = "ham", chance = 20000, maxCount = 3 }, { name = "bear paw", chance = 2000 }, - { name = "honeycomb", chance = 460 } + { name = "honeycomb", chance = 460 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, } monster.defenses = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/beast_gore_horn.lua b/data-otservbr-global/monster/mammals/beast_gore_horn.lua index 90ef54edbbf..c77c16564fb 100644 --- a/data-otservbr-global/monster/mammals/beast_gore_horn.lua +++ b/data-otservbr-global/monster/mammals/beast_gore_horn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 20620 @@ -23,7 +23,7 @@ monster.maxSummons = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,7 +63,7 @@ monster.voices = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 300, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = true }, } monster.defenses = { @@ -81,14 +81,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = -20 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/beast_gorerilla.lua b/data-otservbr-global/monster/mammals/beast_gorerilla.lua index 3602e038ee5..31fbaf99814 100644 --- a/data-otservbr-global/monster/mammals/beast_gorerilla.lua +++ b/data-otservbr-global/monster/mammals/beast_gorerilla.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 16850 @@ -23,7 +23,7 @@ monster.maxSummons = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -82,14 +82,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = -20 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/beast_sabretooth.lua b/data-otservbr-global/monster/mammals/beast_sabretooth.lua index e5613d2acfe..19602511bf8 100644 --- a/data-otservbr-global/monster/mammals/beast_sabretooth.lua +++ b/data-otservbr-global/monster/mammals/beast_sabretooth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 17300 @@ -21,10 +21,9 @@ monster.speed = 182 monster.manaCost = 0 monster.maxSummons = 0 - monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -48,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -82,14 +81,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = -20 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/black_sheep.lua b/data-otservbr-global/monster/mammals/black_sheep.lua index 40aa8dfd4b4..2df358e95e6 100644 --- a/data-otservbr-global/monster/mammals/black_sheep.lua +++ b/data-otservbr-global/monster/mammals/black_sheep.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 13 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Femor Hills, cultist cave in Liberty Bay, Drefia." + Locations = "Femor Hills, cultist cave in Liberty Bay, Drefia.", } monster.health = 20 @@ -35,7 +35,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -75,7 +75,7 @@ monster.voices = { monster.loot = { { name = "meat", chance = 70860, maxCount = 5 }, - { name = "black wool", chance = 1000 } + { name = "black wool", chance = 1000 }, } monster.defenses = { @@ -101,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/boar.lua b/data-otservbr-global/monster/mammals/boar.lua index 81f1589369d..9c738577ea5 100644 --- a/data-otservbr-global/monster/mammals/boar.lua +++ b/data-otservbr-global/monster/mammals/boar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 693 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Forest around Outlaw Camp." + Locations = "Forest around Outlaw Camp.", } monster.health = 198 @@ -35,7 +35,7 @@ monster.manaCost = 465 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 25000, maxCount = 20 }, - { name = "haunch of boar", chance = 20000, maxCount = 2 } + { name = "haunch of boar", chance = 20000, maxCount = 2 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/brown_horse.lua b/data-otservbr-global/monster/mammals/brown_horse.lua index 127965d1c61..d23d138a2a5 100644 --- a/data-otservbr-global/monster/mammals/brown_horse.lua +++ b/data-otservbr-global/monster/mammals/brown_horse.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 752 @@ -24,7 +24,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 1, - Locations = "South-east, east and north-east of Thais depending on the Horse Station World Change." + Locations = "South-east, east and north-east of Thais depending on the Horse Station World Change.", } monster.health = 75 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -60,12 +60,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -73,15 +73,14 @@ monster.voices = { chance = 10, { text = "Weeeeheeeeeee", yell = false }, { text = "*snort*", yell = false }, - { text = "*Weeeeheeeeaaa*", yell = false } + { text = "*Weeeeheeeeaaa*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -94,14 +93,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/cat.lua b/data-otservbr-global/monster/mammals/cat.lua index 624ff0736d9..7efd52f82b1 100644 --- a/data-otservbr-global/monster/mammals/cat.lua +++ b/data-otservbr-global/monster/mammals/cat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 387 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 0, Occurrence = 0, Locations = "Carlin, Rookgaard, Factory Quarter, Yalahar, \z - The Witches' Cliff (only accessible during a quest), probably more areas." + The Witches' Cliff (only accessible during a quest), probably more areas.", } monster.health = 20 @@ -36,7 +36,7 @@ monster.manaCost = 220 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,11 +76,10 @@ monster.voices = { { text = "Meow meow!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 }, } monster.defenses = { @@ -106,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/cave_rat.lua b/data-otservbr-global/monster/mammals/cave_rat.lua index 5660a259c00..c27e816c441 100644 --- a/data-otservbr-global/monster/mammals/cave_rat.lua +++ b/data-otservbr-global/monster/mammals/cave_rat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 56 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Almost everywhere in tibia, they seem to have a nest-like place in Greenshore, \z a semi-large spawn at the entrance to the Port Hope troll cave and in cave near Ankrahmun ship. \z - Also appears in Rat Plague in Thais and Rat Plague in Rookgaard." + Also appears in Rat Plague in Thais and Rat Plague in Rookgaard.", } monster.health = 30 @@ -37,7 +37,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -80,11 +80,11 @@ monster.loot = { { name = "gold coin", chance = 85000, maxCount = 2 }, { name = "cookie", chance = 750 }, { id = 3607, chance = 30000 }, -- cheese - { name = "worm", chance = 9700, maxCount = 2 } + { name = "worm", chance = 9700, maxCount = 2 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, } monster.defenses = { @@ -110,7 +110,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/clomp.lua b/data-otservbr-global/monster/mammals/clomp.lua index 40f7e586745..6cefe1373ba 100644 --- a/data-otservbr-global/monster/mammals/clomp.lua +++ b/data-otservbr-global/monster/mammals/clomp.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1174 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Krailos Steppe." + Locations = "Krailos Steppe.", } monster.health = 900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,18 +84,18 @@ monster.loot = { { id = 5925, chance = 1200, maxCount = 2 }, -- hardened bone { id = 10307, chance = 900 }, -- thick fur { id = 3443, chance = 400 }, -- tusk shield - { id = 7432, chance = 200 } -- furry club + { id = 7432, chance = 200 }, -- furry club } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 40, maxDamage = -289, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 40, maxDamage = -289, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, } monster.defenses = { defense = 20, armor = 45, mitigation = 1.88, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/crystal_wolf.lua b/data-otservbr-global/monster/mammals/crystal_wolf.lua index 1ffb9fe900f..d2562481294 100644 --- a/data-otservbr-global/monster/mammals/crystal_wolf.lua +++ b/data-otservbr-global/monster/mammals/crystal_wolf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 740 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Shadowthorn" + Locations = "Shadowthorn", } monster.health = 750 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -80,21 +80,21 @@ monster.loot = { { name = "meat", chance = 52000, maxCount = 4 }, { name = "wolf paw", chance = 3700 }, { name = "shiver arrow", chance = 11000, maxCount = 10 }, - { name = "crystalline armor", chance = 3700 } + { name = "crystalline armor", chance = 3700 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, { name = "crystal wolf wave", interval = 2000, chance = 15, minDamage = -60, maxDamage = -130, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -80, maxDamage = -150, range = 6, radius = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_GIANTICE, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -25, maxDamage = -80, range = 7, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -25, maxDamage = -80, range = 7, target = false }, } monster.defenses = { defense = 20, armor = 19, mitigation = 0.67, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 15, maxDamage = 55, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 15, maxDamage = 55, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/deer.lua b/data-otservbr-global/monster/mammals/deer.lua index ba8cb3cde1c..660bfebee4a 100644 --- a/data-otservbr-global/monster/mammals/deer.lua +++ b/data-otservbr-global/monster/mammals/deer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 31 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 1, Occurrence = 0, Locations = "Darama (Devourer, Kha'labal), in most grassy areas of Tibia, also found in \z - Rookgaard and on Tutorial Island. There are also 2 unreachable Deer found near Fiehonja's protection zone." + Rookgaard and on Tutorial Island. There are also 2 unreachable Deer found near Fiehonja's protection zone.", } monster.health = 25 @@ -36,7 +36,7 @@ monster.manaCost = 260 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { monster.loot = { { name = "meat", chance = 80000, maxCount = 4 }, { name = "ham", chance = 50000, maxCount = 2 }, - { id = 10297, chance = 870 } -- antlers + { id = 10297, chance = 870 }, -- antlers } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1 }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/desperate_white_deer.lua b/data-otservbr-global/monster/mammals/desperate_white_deer.lua index 042c99f29ba..0599764a680 100644 --- a/data-otservbr-global/monster/mammals/desperate_white_deer.lua +++ b/data-otservbr-global/monster/mammals/desperate_white_deer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 55 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -66,17 +66,16 @@ monster.voices = { monster.loot = { { name = "ham", chance = 20000, maxCount = 3 }, { name = "white deer antlers", chance = 20000 }, - { name = "white deer skin", chance = 20000 } + { name = "white deer skin", chance = 20000 }, } -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 15, armor = 1, mitigation = 0.05, - { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } monster.elements = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/dog.lua b/data-otservbr-global/monster/mammals/dog.lua index 79dbccd83d4..9bf5d64f179 100644 --- a/data-otservbr-global/monster/mammals/dog.lua +++ b/data-otservbr-global/monster/mammals/dog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 32 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Isle of the Kings, North of the Thais temple, Lubos house, west of Carlin (with sheep), \z Edron north of castle and one south towards Ivory Towers, Liberty Bay (Silverhand Manor), \z - Mintwallin central park and on the way to the old Mintwallin area, Factory Quarter (Yalahar)." + Mintwallin central park and on the way to the old Mintwallin area, Factory Quarter (Yalahar).", } monster.health = 20 @@ -37,7 +37,7 @@ monster.manaCost = 220 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,26 +61,25 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Wuff wuff", yell = false } + { text = "Wuff wuff", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -93,14 +92,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/donkey.lua b/data-otservbr-global/monster/mammals/donkey.lua index 55b0b70bb99..4a2c52dfff0 100644 --- a/data-otservbr-global/monster/mammals/donkey.lua +++ b/data-otservbr-global/monster/mammals/donkey.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 45 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -46,31 +46,31 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Grunt!", yell = false } + { text = "Grunt!", yell = false }, } monster.loot = { - { name = "meat", chance = 20000, maxCount = 2 } + { name = "meat", chance = 20000, maxCount = 2 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, } monster.defenses = { defense = 2, - armor = 2 + armor = 2, } monster.elements = { @@ -83,14 +83,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/doom_deer.lua b/data-otservbr-global/monster/mammals/doom_deer.lua index f0874cecfea..02dfda0bcd8 100644 --- a/data-otservbr-global/monster/mammals/doom_deer.lua +++ b/data-otservbr-global/monster/mammals/doom_deer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 559 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Isle of Evil." + Locations = "Isle of Evil.", } monster.health = 405 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -74,19 +74,19 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 50000, maxCount = 100 } + { name = "gold coin", chance = 50000, maxCount = 100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, - { name = "combat", interval = 4000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -35, maxDamage = -55, length = 5, spread = 3, effect = CONST_ME_BIGCLOUDS, target = false } + { name = "combat", interval = 4000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -35, maxDamage = -55, length = 5, spread = 3, effect = CONST_ME_BIGCLOUDS, target = false }, } monster.defenses = { defense = 35, armor = 19, mitigation = 0.70, - { name = "speed", interval = 3000, chance = 30, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 8000 } + { name = "speed", interval = 3000, chance = 30, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 8000 }, } monster.elements = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/dromedary.lua b/data-otservbr-global/monster/mammals/dromedary.lua index 1bc361a2dee..467b6114793 100644 --- a/data-otservbr-global/monster/mammals/dromedary.lua +++ b/data-otservbr-global/monster/mammals/dromedary.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 733 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Ankrahmun near the way to Darashia, Ankrahmun near sea, around Darashia, Issavi." + Locations = "Ankrahmun near the way to Darashia, Ankrahmun near sea, around Darashia, Issavi.", } monster.health = 45 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -75,12 +75,12 @@ monster.voices = { } monster.loot = { - { name = "meat", chance = 36000, maxCount = 2 } + { name = "meat", chance = 36000, maxCount = 2 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 }, - { name = "drunk", interval = 4000, chance = 5, range = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_STUN, target = true, duration = 6000 } + { name = "drunk", interval = 4000, chance = 5, range = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_STUN, target = true, duration = 6000 }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/elephant.lua b/data-otservbr-global/monster/mammals/elephant.lua index c0bbc14134d..ea499d129b5 100644 --- a/data-otservbr-global/monster/mammals/elephant.lua +++ b/data-otservbr-global/monster/mammals/elephant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 211 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "East of Port Hope close to Grizzly Adams, deep in the jungle, \z - Arena and Zoo Quarter, Mammoth Shearing Factory." + Arena and Zoo Quarter, Mammoth Shearing Factory.", } monster.health = 320 @@ -36,7 +36,7 @@ monster.manaCost = 500 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -81,11 +81,11 @@ monster.loot = { { name = "meat", chance = 39000, maxCount = 4 }, { name = "ham", chance = 30000, maxCount = 3 }, { name = "tusk", chance = 1000, maxCount = 2 }, - { name = "tusk shield", chance = 140 } + { name = "tusk shield", chance = 140 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, } monster.defenses = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/enraged_squirrel.lua b/data-otservbr-global/monster/mammals/enraged_squirrel.lua index 501430b2db7..dc041b608dd 100644 --- a/data-otservbr-global/monster/mammals/enraged_squirrel.lua +++ b/data-otservbr-global/monster/mammals/enraged_squirrel.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 35 @@ -22,7 +22,7 @@ monster.manaCost = 220 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,11 +61,11 @@ monster.voices = { } monster.loot = { - { id = 836, chance = 2680 } -- walnut + { id = 836, chance = 2680 }, -- walnut } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 10 } + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 10 }, } monster.defenses = { @@ -91,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/enraged_white_deer.lua b/data-otservbr-global/monster/mammals/enraged_white_deer.lua index 7ccd87e9e7a..c0463050905 100644 --- a/data-otservbr-global/monster/mammals/enraged_white_deer.lua +++ b/data-otservbr-global/monster/mammals/enraged_white_deer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 255 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -46,16 +46,16 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "WhiteDeerScoutsDeath" + "WhiteDeerScoutsDeath", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -64,23 +64,23 @@ monster.voices = { { text = "*wheeze*", yell = false }, { text = "ROOOAAARR!!", yell = false }, { text = "*sniff*", yell = false }, - { text = "*bell*", yell = false } + { text = "*bell*", yell = false }, } monster.loot = { { name = "ham", chance = 19850, maxCount = 3 }, { name = "white deer antlers", chance = 19520 }, - { name = "white deer skin", chance = 20280 } + { name = "white deer skin", chance = 20280 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, } monster.defenses = { defense = 15, armor = 15, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 40, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 40, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -93,14 +93,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/evil_sheep.lua b/data-otservbr-global/monster/mammals/evil_sheep.lua index 42e257fa071..566e3ad6dc4 100644 --- a/data-otservbr-global/monster/mammals/evil_sheep.lua +++ b/data-otservbr-global/monster/mammals/evil_sheep.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 555 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Isle of Evil." + Locations = "Isle of Evil.", } monster.health = 350 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -74,12 +74,12 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 50000, maxCount = 50 } + { name = "gold coin", chance = 50000, maxCount = 50 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, - { name = "combat", interval = 4000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = true } + { name = "combat", interval = 4000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = true }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/evil_sheep_lord.lua b/data-otservbr-global/monster/mammals/evil_sheep_lord.lua index 8d7b0cca3d2..2564647875d 100644 --- a/data-otservbr-global/monster/mammals/evil_sheep_lord.lua +++ b/data-otservbr-global/monster/mammals/evil_sheep_lord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 556 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Isle of Evil." + Locations = "Isle of Evil.", } monster.health = 400 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -70,8 +70,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Evil Sheep", chance = 30, interval = 2000, count = X } - } + { name = "Evil Sheep", chance = 30, interval = 2000, count = X }, + }, } monster.voices = { @@ -83,12 +83,12 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 75000, maxCount = 60 } + { name = "gold coin", chance = 75000, maxCount = 60 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -118 }, - { name = "outfit", interval = 3000, chance = 20, range = 7, effect = CONST_ME_MAGIC_BLUE, target = true, duration = 4000, outfitMonster = "Sheep" } + { name = "outfit", interval = 3000, chance = 20, range = 7, effect = CONST_ME_MAGIC_BLUE, target = true, duration = 4000, outfitMonster = "Sheep" }, } monster.defenses = { @@ -96,7 +96,7 @@ monster.defenses = { armor = 24, mitigation = 0.91, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "outfit", interval = 1500, chance = 50, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000, outfitMonster = "Werewolf" } + { name = "outfit", interval = 1500, chance = 50, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000, outfitMonster = "Werewolf" }, } monster.elements = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/exotic_bat.lua b/data-otservbr-global/monster/mammals/exotic_bat.lua index 2e3d68c7ed7..162e70f9d58 100644 --- a/data-otservbr-global/monster/mammals/exotic_bat.lua +++ b/data-otservbr-global/monster/mammals/exotic_bat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2051 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Exotic cave Spider cave." + Locations = "Exotic cave Spider cave.", } monster.health = 1500 @@ -35,7 +35,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,17 +59,17 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, - chance = 0 + chance = 0, } monster.loot = { @@ -79,18 +79,18 @@ monster.loot = { { name = "dark mushroom", chance = 15000, maxCount = 6 }, { name = "green mushroom", chance = 10300, maxCount = 5 }, { name = "garlic necklace", chance = 5000 }, - { name = "bat wing", chance = 5000, maxCount = 2 } + { name = "bat wing", chance = 5000, maxCount = 2 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -80, maxDamage = -150, length = 5, spread = 2, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -60, maxDamage = -150, range = 7, radius = 3, effect = CONST_ME_YELLOW_RINGS, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -60, maxDamage = -150, range = 7, radius = 3, effect = CONST_ME_YELLOW_RINGS, target = true }, } monster.defenses = { defense = 40, - armor = 40 + armor = 40, } monster.elements = { @@ -103,14 +103,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 5 }, { type = COMBAT_HOLYDAMAGE, percent = 5 }, - { type = COMBAT_DEATHDAMAGE, percent = 5 } + { type = COMBAT_DEATHDAMAGE, percent = 5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/fox.lua b/data-otservbr-global/monster/mammals/fox.lua index e6b85350caa..dd048de2131 100644 --- a/data-otservbr-global/monster/mammals/fox.lua +++ b/data-otservbr-global/monster/mammals/fox.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1548 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "South-west of Edron, possibly other places." + Locations = "South-west of Edron, possibly other places.", } monster.health = 22 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,33 +62,33 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Yip! Yip!", yell = false }, - { text = "Grrrrrrr", yell = false } + { text = "Grrrrrrr", yell = false }, } monster.loot = { { id = 3577, chance = 49320 }, -- meat - { name = "fox paw", chance = 1350 } + { name = "fox paw", chance = 1350 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, } monster.defenses = { defense = 20, - armor = 20 + armor = 20, } monster.elements = { @@ -101,14 +101,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 30 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/ghost_wolf.lua b/data-otservbr-global/monster/mammals/ghost_wolf.lua index 4f3ab2e1268..de54cb9f453 100644 --- a/data-otservbr-global/monster/mammals/ghost_wolf.lua +++ b/data-otservbr-global/monster/mammals/ghost_wolf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1148 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 2, - Locations = "Poacher Caves/Gloomy." + Locations = "Poacher Caves/Gloomy.", } monster.health = 160 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -73,11 +73,11 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 65000, maxCount = 20 } + { name = "gold coin", chance = 65000, maxCount = 20 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, } monster.defenses = { @@ -103,7 +103,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/ghoulish_hyaena.lua b/data-otservbr-global/monster/mammals/ghoulish_hyaena.lua index 1e0bbebfa34..fd64f9fd4e2 100644 --- a/data-otservbr-global/monster/mammals/ghoulish_hyaena.lua +++ b/data-otservbr-global/monster/mammals/ghoulish_hyaena.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 704 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Horestis Tomb." + Locations = "Horestis Tomb.", } monster.health = 400 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -79,19 +79,19 @@ monster.loot = { { name = "gold coin", chance = 89000, maxCount = 40 }, { name = "meat", chance = 51060, maxCount = 3 }, { name = "worm", chance = 65000, maxCount = 7 }, - { name = "health potion", chance = 19840 } + { name = "health potion", chance = 19840 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -112, condition = { type = CONDITION_POISON, totalDamage = 10, interval = 4000 } }, -- poison - { name = "ghoulish hyaena wave", interval = 2000, chance = 15, target = false } + { name = "ghoulish hyaena wave", interval = 2000, chance = 15, target = false }, } monster.defenses = { defense = 20, armor = 21, mitigation = 0.80, - { name = "speed", interval = 2000, chance = 15, speedChange = 3000, target = false, duration = 2000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 3000, target = false, duration = 2000 }, } monster.elements = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/giant_beaver.lua b/data-otservbr-global/monster/mammals/giant_beaver.lua index 315a6c59eb9..d8b8d5e12d0 100644 --- a/data-otservbr-global/monster/mammals/giant_beaver.lua +++ b/data-otservbr-global/monster/mammals/giant_beaver.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 5290 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -82,7 +82,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = true } + { type = "bleed", condition = true }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/gloom_wolf.lua b/data-otservbr-global/monster/mammals/gloom_wolf.lua index 87196a4a326..89be04eed61 100644 --- a/data-otservbr-global/monster/mammals/gloom_wolf.lua +++ b/data-otservbr-global/monster/mammals/gloom_wolf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1139 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 1, - Locations = "Tainted Caves, Poacher Caves/Gloomy." + Locations = "Tainted Caves, Poacher Caves/Gloomy.", } monster.health = 200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -78,11 +78,11 @@ monster.loot = { { name = "gold coin", chance = 65000, maxCount = 48 }, { name = "meat", chance = 55000, maxCount = 2 }, { name = "wolf paw", chance = 980 }, - { id = 22007, chance = 8000 } --gloom wolf fur + { id = 22007, chance = 8000 }, --gloom wolf fur } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -92 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -92 }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/gnarlhound.lua b/data-otservbr-global/monster/mammals/gnarlhound.lua index 952e467402d..6042324a9c9 100644 --- a/data-otservbr-global/monster/mammals/gnarlhound.lua +++ b/data-otservbr-global/monster/mammals/gnarlhound.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 630 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Zao Steppe, Raging Mage Tower, Gnarlhound Caves. \z - Four inaccessible ones can be seen in Telas's basement." + Four inaccessible ones can be seen in Telas's basement.", } monster.health = 198 @@ -36,7 +36,7 @@ monster.manaCost = 465 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -79,11 +79,11 @@ monster.loot = { { name = "gold coin", chance = 48000, maxCount = 30 }, { name = "meat", chance = 39075, maxCount = 3 }, { name = "worm", chance = 33300, maxCount = 3 }, - { name = "shaggy tail", chance = 25550 } + { name = "shaggy tail", chance = 25550 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/gore_horn.lua b/data-otservbr-global/monster/mammals/gore_horn.lua index 3b0f681005d..bfe77ca9ecf 100644 --- a/data-otservbr-global/monster/mammals/gore_horn.lua +++ b/data-otservbr-global/monster/mammals/gore_horn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2266 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Sparkling Pools" + Locations = "Sparkling Pools", } monster.health = 20620 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/gorerilla.lua b/data-otservbr-global/monster/mammals/gorerilla.lua index 12bfbab75fd..b3ce0f064c1 100644 --- a/data-otservbr-global/monster/mammals/gorerilla.lua +++ b/data-otservbr-global/monster/mammals/gorerilla.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2277 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Sparkling Pools" + Locations = "Sparkling Pools", } monster.health = 16850 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/grey_horse.lua b/data-otservbr-global/monster/mammals/grey_horse.lua index 776b808db14..f299ce3608a 100644 --- a/data-otservbr-global/monster/mammals/grey_horse.lua +++ b/data-otservbr-global/monster/mammals/grey_horse.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 751 @@ -25,7 +25,7 @@ monster.Bestiary = { Stars = 1, Occurrence = 2, Locations = "South-east, east and north-east of Thais depending on the Horse Station World Change; \z - one in the Gardens of Night (here, unreachable); one near Roswitha in Rathleton." + one in the Gardens of Night (here, unreachable); one near Roswitha in Rathleton.", } monster.health = 75 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -74,15 +74,14 @@ monster.voices = { chance = 10, { text = "Weeeeheeeeeee", yell = false }, { text = "*snort*", yell = false }, - { text = "*Weeeeheeeeaaa*", yell = false } + { text = "*Weeeeheeeeaaa*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -95,14 +94,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/horse.lua b/data-otservbr-global/monster/mammals/horse.lua index 8c68bd3ec7b..e15dc79cd21 100644 --- a/data-otservbr-global/monster/mammals/horse.lua +++ b/data-otservbr-global/monster/mammals/horse.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 750 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 1, Occurrence = 1, Locations = "South-east, east and north-east of Thais depending on the Horse Station World Change; \z - one near Roswitha in Rathleton." + one near Roswitha in Rathleton.", } monster.health = 75 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -60,12 +60,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -73,15 +73,14 @@ monster.voices = { chance = 10, { text = "Weeeeheeeeeee", yell = false }, { text = "*snort*", yell = false }, - { text = "*Weeeeheeeeaaa*", yell = false } + { text = "*Weeeeheeeeaaa*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -94,14 +93,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/hot_dog.lua b/data-otservbr-global/monster/mammals/hot_dog.lua index 2e9557118f1..9dce6cad2de 100644 --- a/data-otservbr-global/monster/mammals/hot_dog.lua +++ b/data-otservbr-global/monster/mammals/hot_dog.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 557 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Isle of Evil." + Locations = "Isle of Evil.", } monster.health = 505 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,13 +76,13 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 50000, maxCount = 75 } + { name = "gold coin", chance = 50000, maxCount = 75 }, } monster.attacks = { { name = "melee", interval = 1200, chance = 100, minDamage = 0, maxDamage = -55 }, { name = "hot dog wave", interval = 2000, chance = 30, minDamage = -30, maxDamage = -60, target = false }, - { name = "combat", interval = 1000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -50, range = 7, effect = CONST_ME_FIREATTACK, target = true } + { name = "combat", interval = 1000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -50, range = 7, effect = CONST_ME_FIREATTACK, target = true }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/husky.lua b/data-otservbr-global/monster/mammals/husky.lua index 03dc015a101..314d948e454 100644 --- a/data-otservbr-global/monster/mammals/husky.lua +++ b/data-otservbr-global/monster/mammals/husky.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 325 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 1, Stars = 0, Occurence = 1, - Locations = "Svargrond and Nibelor." + Locations = "Svargrond and Nibelor.", } monster.health = 140 @@ -33,10 +33,9 @@ monster.corpse = 7316 monster.speed = 132 monster.manaCost = 420 - monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,8 +75,7 @@ monster.voices = { { text = "Ruff, ruff!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, @@ -102,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/hyaena.lua b/data-otservbr-global/monster/mammals/hyaena.lua index e2a3cdfbc47..d720ec0168b 100644 --- a/data-otservbr-global/monster/mammals/hyaena.lua +++ b/data-otservbr-global/monster/mammals/hyaena.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 94 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Desert areas like those around Ankrahmun and Darashia." + Locations = "Desert areas like those around Ankrahmun and Darashia.", } monster.health = 60 @@ -35,7 +35,7 @@ monster.manaCost = 275 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { monster.loot = { { name = "meat", chance = 30860, maxCount = 2 }, - { name = "worm", chance = 50130, maxCount = 3 } + { name = "worm", chance = 50130, maxCount = 3 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/killer_rabbit.lua b/data-otservbr-global/monster/mammals/killer_rabbit.lua index 99e065761c8..c9e014d745d 100644 --- a/data-otservbr-global/monster/mammals/killer_rabbit.lua +++ b/data-otservbr-global/monster/mammals/killer_rabbit.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 560 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 1, - Locations = "Isle of Evil." + Locations = "Isle of Evil.", } monster.health = 205 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -70,8 +70,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "killer rabbit", chance = 30, interval = 2000, count = 2 } - } + { name = "killer rabbit", chance = 30, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -81,12 +81,12 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 50000, maxCount = 90 } + { name = "gold coin", chance = 50000, maxCount = 90 }, } monster.attacks = { { name = "melee", interval = 1200, chance = 100, minDamage = 0, maxDamage = -100 }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 1, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 1, target = false }, } monster.defenses = { @@ -94,7 +94,7 @@ monster.defenses = { armor = 17, mitigation = 0.51, { name = "speed", interval = 1000, chance = 40, speedChange = 380, effect = CONST_ME_ENERGYHIT, target = false, duration = 8000 }, - { name = "invisible", interval = 2000, chance = 30, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 30, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/kongra.lua b/data-otservbr-global/monster/mammals/kongra.lua index 376d6e505b5..ccdc6b85c3e 100644 --- a/data-otservbr-global/monster/mammals/kongra.lua +++ b/data-otservbr-global/monster/mammals/kongra.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 116 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "In Banuta, northeast of Port Hope, Arena and Zoo Quarter." + Locations = "In Banuta, northeast of Port Hope, Arena and Zoo Quarter.", } monster.health = 340 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -84,18 +84,18 @@ monster.loot = { { name = "banana", chance = 30000, maxCount = 12 }, { name = "ape fur", chance = 980 }, { name = "health potion", chance = 570 }, - { name = "kongra's shoulderpad", chance = 4900 } + { name = "kongra's shoulderpad", chance = 4900 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, } monster.defenses = { defense = 20, armor = 18, mitigation = 0.36, - { name = "speed", interval = 2000, chance = 15, speedChange = 260, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 260, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } monster.elements = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/lion.lua b/data-otservbr-global/monster/mammals/lion.lua index a33899c3058..be36b7e5f8e 100644 --- a/data-otservbr-global/monster/mammals/lion.lua +++ b/data-otservbr-global/monster/mammals/lion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 41 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Jakundaf Desert, Darama, Arena Quarter, Venore Amazon Camp." + Locations = "Jakundaf Desert, Darama, Arena Quarter, Venore Amazon Camp.", } monster.health = 80 @@ -35,7 +35,7 @@ monster.manaCost = 320 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,33 +59,33 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Groarrr!", yell = false } + { text = "Groarrr!", yell = false }, } monster.loot = { { name = "meat", chance = 45000, maxCount = 4 }, { name = "ham", chance = 18430, maxCount = 2 }, - { name = "lion's mane", chance = 1400 } + { name = "lion's mane", chance = 1400 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -98,14 +98,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -15 }, { type = COMBAT_HOLYDAMAGE, percent = 20 }, - { type = COMBAT_DEATHDAMAGE, percent = -8 } + { type = COMBAT_DEATHDAMAGE, percent = -8 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/mammoth.lua b/data-otservbr-global/monster/mammals/mammoth.lua index 0ef321316d8..7a4864fef02 100644 --- a/data-otservbr-global/monster/mammals/mammoth.lua +++ b/data-otservbr-global/monster/mammals/mammoth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 260 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Formorgar Glacier, Tyrsung, around the Barbarian Settlements, Mammoth Shearing Factory, Chyllfroest." + Locations = "Formorgar Glacier, Tyrsung, around the Barbarian Settlements, Mammoth Shearing Factory, Chyllfroest.", } monster.health = 320 @@ -35,7 +35,7 @@ monster.manaCost = 500 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,11 +83,11 @@ monster.loot = { { name = "mammoth whopper", chance = 2800 }, { name = "furry club", chance = 500 }, { name = "thick fur", chance = 7280 }, - { name = "mammoth tusk", chance = 7500, maxCount = 2 } + { name = "mammoth tusk", chance = 7500, maxCount = 2 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/merlkin.lua b/data-otservbr-global/monster/mammals/merlkin.lua index 5b7018b2951..db493f11a11 100644 --- a/data-otservbr-global/monster/mammals/merlkin.lua +++ b/data-otservbr-global/monster/mammals/merlkin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 117 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Banuta, north-east of Port Hope." + Locations = "Banuta, north-east of Port Hope.", } monster.health = 235 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -85,21 +85,21 @@ monster.loot = { { name = "banana staff", chance = 100 }, { name = "ape fur", chance = 1000 }, { name = "mana potion", chance = 660 }, - { name = "banana sash", chance = 1800 } + { name = "banana sash", chance = 1800 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -90, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -15, maxDamage = -45, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "poisonfield", interval = 2000, chance = 15, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true } + { name = "poisonfield", interval = 2000, chance = 15, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { defense = 15, armor = 16, mitigation = 1.04, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 30, maxDamage = 40, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 30, maxDamage = 40, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/modified_gnarlhound.lua b/data-otservbr-global/monster/mammals/modified_gnarlhound.lua index 55ccb10f6c1..f5d53e42f03 100644 --- a/data-otservbr-global/monster/mammals/modified_gnarlhound.lua +++ b/data-otservbr-global/monster/mammals/modified_gnarlhound.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 877 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 1, Stars = 0, Occurrence = 1, - Locations = "South of Stonehome, deep under Telas's house." + Locations = "South of Stonehome, deep under Telas's house.", } monster.health = 1500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -73,8 +73,7 @@ monster.voices = { { text = "Gnarllll!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/mole.lua b/data-otservbr-global/monster/mammals/mole.lua index bcf6065108e..ee0ae0f622c 100644 --- a/data-otservbr-global/monster/mammals/mole.lua +++ b/data-otservbr-global/monster/mammals/mole.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1570 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Warzone 4 and Warzone 6." + Locations = "Warzone 4 and Warzone 6.", } monster.health = 200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 10000, maxCount = 78 } -- gold coin + { id = 3031, chance = 10000, maxCount = 78 }, -- gold coin } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/mushroom_sniffer.lua b/data-otservbr-global/monster/mammals/mushroom_sniffer.lua index 1105042a790..16a41fa9f8e 100644 --- a/data-otservbr-global/monster/mammals/mushroom_sniffer.lua +++ b/data-otservbr-global/monster/mammals/mushroom_sniffer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 870 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 1, Stars = 0, Occurrence = 0, - Locations = "Truffels Garden." + Locations = "Truffels Garden.", } monster.health = 250 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,8 +75,7 @@ monster.voices = { { text = "Oink oink", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/mutated_bat.lua b/data-otservbr-global/monster/mammals/mutated_bat.lua index 02301e1d73d..211ca62d2ad 100644 --- a/data-otservbr-global/monster/mammals/mutated_bat.lua +++ b/data-otservbr-global/monster/mammals/mutated_bat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 509 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Cemetery Quarter (around 10 underground on the west side along with banshees, \z and 4 bats on the church roof), Alchemist Quarter (4 found on top of roofs), \z Arena and Zoo Quarter (2 under the arena with other mutated creatures), \z - Razzachai, Northern Zao Plantations, Souleater Mountains, Middle Spike, Vengoth and Vengoth Castle." + Razzachai, Northern Zao Plantations, Souleater Mountains, Middle Spike, Vengoth and Vengoth Castle.", } monster.health = 900 @@ -38,7 +38,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { id = 8894, chance = 12530 }, -- heavily rusted armor { id = 8895, chance = 12530, maxCount = 2 }, -- rusted armor { name = "batwing hat", chance = 80 }, - { name = "mutated bat ear", chance = 4900 } + { name = "mutated bat ear", chance = 4900 }, } monster.attacks = { @@ -99,14 +99,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -30, maxDamage = -90, radius = 6, effect = CONST_ME_SOUND_WHITE, target = false }, { name = "mutated bat curse", interval = 2000, chance = 10, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -190, maxDamage = -240, length = 4, spread = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -190, maxDamage = -240, length = 4, spread = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 20, armor = 19, mitigation = 1.74, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/mutated_rat.lua b/data-otservbr-global/monster/mammals/mutated_rat.lua index 68a4a012de8..0a09b5275e5 100644 --- a/data-otservbr-global/monster/mammals/mutated_rat.lua +++ b/data-otservbr-global/monster/mammals/mutated_rat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 502 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Alchemist Quarter, Arena and Zoo Quarter (Inside the arena with other mutated creatures), \z Razzachai, Vampire Castle on Vengoth, Robson's Isle, Mushroom Gardens, Souleater Mountains, \z - Northern Zao Plantations, Middle Spike." + Northern Zao Plantations, Middle Spike.", } monster.health = 550 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,7 +88,7 @@ monster.loot = { { name = "stone herb", chance = 4920 }, { name = "health potion", chance = 560 }, { name = "spellbook of enlightenment", chance = 300 }, - { name = "mutated rat tail", chance = 3800 } + { name = "mutated rat tail", chance = 3800 }, } monster.attacks = { @@ -99,14 +99,14 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -30, maxDamage = -70, range = 7, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, range = 7, radius = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, range = 7, radius = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 15, armor = 32, mitigation = 0.99, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/mutated_tiger.lua b/data-otservbr-global/monster/mammals/mutated_tiger.lua index 382ec960785..f74c3299c75 100644 --- a/data-otservbr-global/monster/mammals/mutated_tiger.lua +++ b/data-otservbr-global/monster/mammals/mutated_tiger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 516 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Alchemist Quarter, Arena and Zoo Quarter (Inside with other mutated creatures), \z - Muggy Plains, Souleater Mountains and Northern Zao Plantations." + Muggy Plains, Souleater Mountains and Northern Zao Plantations.", } monster.health = 1100 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,12 +86,12 @@ monster.loot = { { name = "strong health potion", chance = 6000 }, { name = "silky tapestry", chance = 730 }, { name = "striped fur", chance = 20130 }, - { name = "sabretooth", chance = 10600 } + { name = "sabretooth", chance = 10600 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { @@ -99,7 +99,7 @@ monster.defenses = { armor = 25, mitigation = 0.99, { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/nighthunter.lua b/data-otservbr-global/monster/mammals/nighthunter.lua index 8a5e721c39f..434efa99993 100644 --- a/data-otservbr-global/monster/mammals/nighthunter.lua +++ b/data-otservbr-global/monster/mammals/nighthunter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2270 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Monster Graveyard" + Locations = "Monster Graveyard", } monster.health = 19200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/noble_lion.lua b/data-otservbr-global/monster/mammals/noble_lion.lua index 489577d4d23..333987ef579 100644 --- a/data-otservbr-global/monster/mammals/noble_lion.lua +++ b/data-otservbr-global/monster/mammals/noble_lion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1118 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Lion's Rock temple." + Locations = "Lion's Rock temple.", } monster.health = 1000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -80,18 +80,18 @@ monster.loot = { { id = 3031, chance = 100000, maxCount = 68 }, -- gold coin { id = 3577, chance = 25000 }, -- meat { id = 3582, chance = 25000 }, -- ham - { id = 9691, chance = 20000 } -- lion's mane + { id = 9691, chance = 20000 }, -- lion's mane } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 40 } + { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 40 }, } monster.defenses = { defense = 26, armor = 27, mitigation = 1.02, - { name = "speed", interval = 2000, chance = 15, speedChange = 250, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 250, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/panda.lua b/data-otservbr-global/monster/mammals/panda.lua index c69a7da0b42..0d9cb89901d 100644 --- a/data-otservbr-global/monster/mammals/panda.lua +++ b/data-otservbr-global/monster/mammals/panda.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 123 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "South of Port Hope around Trapwood, as well as a lone specimen in the Arena Quarter." + Locations = "South of Port Hope around Trapwood, as well as a lone specimen in the Arena Quarter.", } monster.health = 80 @@ -35,7 +35,7 @@ monster.manaCost = 300 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -77,11 +77,11 @@ monster.voices = { monster.loot = { { name = "meat", chance = 70500, maxCount = 4 }, { name = "ham", chance = 39000, maxCount = 2 }, - { name = "bamboo stick", chance = 10000 } + { name = "bamboo stick", chance = 10000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, } monster.defenses = { @@ -107,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/parder.lua b/data-otservbr-global/monster/mammals/parder.lua index 3d10aef05de..b6387445bff 100644 --- a/data-otservbr-global/monster/mammals/parder.lua +++ b/data-otservbr-global/monster/mammals/parder.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2256 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "In almost all grass areas in Tibia, also found in Rookgaard and Dawnport." + Locations = "In almost all grass areas in Tibia, also found in Rookgaard and Dawnport.", } monster.health = 1200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/pig.lua b/data-otservbr-global/monster/mammals/pig.lua index fe6eda74790..dcfc04cbfe4 100644 --- a/data-otservbr-global/monster/mammals/pig.lua +++ b/data-otservbr-global/monster/mammals/pig.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 60 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Rookgaard, Orc Fort, under Femor Hills with Goblins, some farms like Donald McRonaldThe McRonalds Farm, Liberty Bay slums and Nargor, Foreigner Quarter in Yalahar, Isle of the Kings, cells in The Pits of Inferno QuestTafariels throneroom in Pits of Inferno, Gardens of Night Mapper Coords129.18126.125104texthere, unreachable." + Locations = "Rookgaard, Orc Fort, under Femor Hills with Goblins, some farms like Donald McRonaldThe McRonalds Farm, Liberty Bay slums and Nargor, Foreigner Quarter in Yalahar, Isle of the Kings, cells in The Pits of Inferno QuestTafariels throneroom in Pits of Inferno, Gardens of Night Mapper Coords129.18126.125104texthere, unreachable.", } monster.health = 25 @@ -35,7 +35,7 @@ monster.manaCost = 255 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,7 +76,7 @@ monster.voices = { monster.loot = { { name = "meat", chance = 64000, maxCount = 4 }, - { name = "pig foot", chance = 950 } + { name = "pig foot", chance = 950 }, } monster.defenses = { @@ -102,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/polar_bear.lua b/data-otservbr-global/monster/mammals/polar_bear.lua index 44acc48b611..4669fd86cd8 100644 --- a/data-otservbr-global/monster/mammals/polar_bear.lua +++ b/data-otservbr-global/monster/mammals/polar_bear.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 42 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Ice Islands." + Locations = "Ice Islands.", } monster.health = 85 @@ -35,7 +35,7 @@ monster.manaCost = 315 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { monster.loot = { { name = "meat", chance = 50500, maxCount = 4 }, { name = "ham", chance = 50320, maxCount = 2 }, - { name = "polar bear paw", chance = 980 } + { name = "polar bear paw", chance = 980 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/poodle.lua b/data-otservbr-global/monster/mammals/poodle.lua index 61fcbb88657..b11babe6a2a 100644 --- a/data-otservbr-global/monster/mammals/poodle.lua +++ b/data-otservbr-global/monster/mammals/poodle.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20 @@ -22,7 +22,7 @@ monster.manaCost = 220 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -46,26 +46,25 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Wuff wuff", yell = false } + { text = "Wuff wuff", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 2, - armor = 1 + armor = 1, } monster.elements = { @@ -78,14 +77,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/rabbit.lua b/data-otservbr-global/monster/mammals/rabbit.lua index 1ce726ac48a..a124f0e060d 100644 --- a/data-otservbr-global/monster/mammals/rabbit.lua +++ b/data-otservbr-global/monster/mammals/rabbit.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 74 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "In most grass areas of Tibia, for example on Tutorial Island." + Locations = "In most grass areas of Tibia, for example on Tutorial Island.", } monster.health = 15 @@ -35,7 +35,7 @@ monster.manaCost = 220 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -74,7 +74,7 @@ monster.voices = { monster.loot = { { name = "meat", chance = 85620, maxCount = 2 }, - { id = 3595, chance = 10000, maxCount = 2 } -- carrot + { id = 3595, chance = 10000, maxCount = 2 }, -- carrot } monster.defenses = { @@ -100,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/rat.lua b/data-otservbr-global/monster/mammals/rat.lua index b60fc43dcf1..17747658eea 100644 --- a/data-otservbr-global/monster/mammals/rat.lua +++ b/data-otservbr-global/monster/mammals/rat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 21 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Rookgaard and Mainland, in most sewers and caves near towns. They can be found almost everywhere in Tibia." + Locations = "Rookgaard and Mainland, in most sewers and caves near towns. They can be found almost everywhere in Tibia.", } monster.health = 20 @@ -35,7 +35,7 @@ monster.manaCost = 200 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,11 +75,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 100000, maxCount = 4 }, - { id = 3607, chance = 39410 } -- cheese + { id = 3607, chance = 39410 }, -- cheese } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/roaring_lion.lua b/data-otservbr-global/monster/mammals/roaring_lion.lua index 53bcf1c9f7f..926d3996c3c 100644 --- a/data-otservbr-global/monster/mammals/roaring_lion.lua +++ b/data-otservbr-global/monster/mammals/roaring_lion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 981 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Lion's Rock a few floors down." + Locations = "Lion's Rock a few floors down.", } monster.health = 1000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,19 +59,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = true, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Groarrrr! Rwarrrr!", yell = false }, - { text = "Growl!", yell = false } + { text = "Growl!", yell = false }, } monster.loot = { @@ -86,16 +86,16 @@ monster.loot = { { id = 3029, chance = 5555 }, -- small sapphire { id = 3077, chance = 1612 }, -- ankh { id = 3048, chance = 1204 }, -- might ring - { id = 3385, chance = 1010 } -- crown helmet + { id = 3385, chance = 1010 }, -- crown helmet } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 40 } + { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 40 }, } monster.defenses = { defense = 28, - armor = 28 + armor = 28, } monster.elements = { @@ -108,14 +108,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 50 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/sabretooth.lua b/data-otservbr-global/monster/mammals/sabretooth.lua index 46e56e20795..a1398dc2d74 100644 --- a/data-otservbr-global/monster/mammals/sabretooth.lua +++ b/data-otservbr-global/monster/mammals/sabretooth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2267 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Sparkling Pools" + Locations = "Sparkling Pools", } monster.health = 17300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +90,6 @@ monster.attacks = { { name = "sabretooth wave", interval = 5000, chance = 35, minDamage = -600, maxDamage = -1000 }, { name = "combat", interval = 3500, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -800, maxDamage = -1500, range = 1, effect = CONST_ME_BIG_SCRATCH, target = true }, { name = "combat", interval = 2700, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -900, maxDamage = -1350, range = 1, target = true }, - } monster.defenses = { @@ -116,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/sheep.lua b/data-otservbr-global/monster/mammals/sheep.lua index dcc55252513..98b7b126bf5 100644 --- a/data-otservbr-global/monster/mammals/sheep.lua +++ b/data-otservbr-global/monster/mammals/sheep.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 14 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "In Rookgaard Sheep field, Greenshore and other farms like the one in Thais, east of Carlin. They can also be found wandering the fields of Edron, and some can be found along with a Black Sheep with the Hunter in Femor Hills." + Locations = "In Rookgaard Sheep field, Greenshore and other farms like the one in Thais, east of Carlin. They can also be found wandering the fields of Edron, and some can be found along with a Black Sheep with the Hunter in Femor Hills.", } monster.health = 20 @@ -35,7 +35,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,11 +75,11 @@ monster.voices = { monster.loot = { { name = "meat", chance = 70000, maxCount = 4 }, - { name = "wool", chance = 1000 } + { name = "wool", chance = 1000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1 }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/sibang.lua b/data-otservbr-global/monster/mammals/sibang.lua index 3b9c46cc33c..5977affac01 100644 --- a/data-otservbr-global/monster/mammals/sibang.lua +++ b/data-otservbr-global/monster/mammals/sibang.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 118 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "In Banuta, north-east of Port Hope." + Locations = "In Banuta, north-east of Port Hope.", } monster.health = 225 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,19 +83,19 @@ monster.loot = { { name = "coconut", chance = 1960, maxCount = 3 }, { name = "melon", chance = 1000 }, { name = "ape fur", chance = 1000 }, - { name = "banana sash", chance = 5000 } + { name = "banana sash", chance = 5000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -55, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -55, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, } monster.defenses = { defense = 15, armor = 15, mitigation = 0.83, - { name = "speed", interval = 2000, chance = 15, speedChange = 380, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 380, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/silver_rabbit.lua b/data-otservbr-global/monster/mammals/silver_rabbit.lua index f552e81c6d2..7f0819d1cc1 100644 --- a/data-otservbr-global/monster/mammals/silver_rabbit.lua +++ b/data-otservbr-global/monster/mammals/silver_rabbit.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 327 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "A lot of places on the Ice Islands and one on Rookgaard (unreachable)." + Locations = "A lot of places on the Ice Islands and one on Rookgaard (unreachable).", } monster.health = 15 @@ -35,7 +35,7 @@ monster.manaCost = 220 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,7 +75,7 @@ monster.voices = { monster.loot = { { name = "meat", chance = 86170, maxCount = 2 }, { id = 3595, chance = 11150 }, -- carrot - { name = "silky fur", chance = 28670 } + { name = "silky fur", chance = 28670 }, } monster.defenses = { @@ -101,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/skunk.lua b/data-otservbr-global/monster/mammals/skunk.lua index ee123568b53..e9fda997934 100644 --- a/data-otservbr-global/monster/mammals/skunk.lua +++ b/data-otservbr-global/monster/mammals/skunk.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 106 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 1, Occurrence = 0, Locations = "Unannounced raid in Edron outside the depot, Tiquanda, Shattered Isles, \z - Liberty Bay, south gate of Thais." + Liberty Bay, south gate of Thais.", } monster.health = 20 @@ -36,7 +36,7 @@ monster.manaCost = 200 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,12 +75,12 @@ monster.voices = { monster.loot = { { name = "bulb of garlic", chance = 4910 }, - { name = "skunk tail", chance = 920 } + { name = "skunk tail", chance = 920 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -1, maxDamage = -3, range = 1, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -1, maxDamage = -3, range = 1, target = true }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/squirrel.lua b/data-otservbr-global/monster/mammals/squirrel.lua index ca58404e3ac..0986c3c439e 100644 --- a/data-otservbr-global/monster/mammals/squirrel.lua +++ b/data-otservbr-global/monster/mammals/squirrel.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 384 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "North of Carlin, Northwest of Thais, East of Kazordoon, Yalahar, Dawnport, Edron Hunters Camp, Plains of Havoc and other Tibian woods." + Locations = "North of Carlin, Northwest of Thais, East of Kazordoon, Yalahar, Dawnport, Edron Hunters Camp, Plains of Havoc and other Tibian woods.", } monster.health = 20 @@ -35,7 +35,7 @@ monster.manaCost = 220 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,7 +76,7 @@ monster.voices = { monster.loot = { { name = "walnut", chance = 1140 }, { name = "peanut", chance = 980 }, - { name = "acorn", chance = 50410 } + { name = "acorn", chance = 50410 }, } monster.defenses = { defense = 5, @@ -101,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/starving_wolf.lua b/data-otservbr-global/monster/mammals/starving_wolf.lua index c1947f6970d..3f5730ab3d4 100644 --- a/data-otservbr-global/monster/mammals/starving_wolf.lua +++ b/data-otservbr-global/monster/mammals/starving_wolf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 723 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 2, - Locations = "East, west and south-west of the Femor Hills." + Locations = "East, west and south-west of the Femor Hills.", } monster.health = 85 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -78,18 +78,18 @@ monster.voices = { monster.loot = { { name = "dirty fur", chance = 64730 }, { name = "meat", chance = 5300, maxCount = 2 }, - { name = "wolf paw", chance = 1430 } + { name = "wolf paw", chance = 1430 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, } monster.defenses = { defense = 10, armor = 2, mitigation = 0.33, - { name = "effect", interval = 2000, chance = 10, radius = 1, effect = CONST_ME_YELLOW_RINGS, target = false } + { name = "effect", interval = 2000, chance = 10, radius = 1, effect = CONST_ME_YELLOW_RINGS, target = false }, } monster.elements = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/stone_rhino.lua b/data-otservbr-global/monster/mammals/stone_rhino.lua index 530399f8859..cbd4bd4abe9 100644 --- a/data-otservbr-global/monster/mammals/stone_rhino.lua +++ b/data-otservbr-global/monster/mammals/stone_rhino.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1395 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Astral Shaper Ruins in two small rooms on the second floor, and to the east." + Locations = "Astral Shaper Ruins in two small rooms on the second floor, and to the east.", } monster.health = 3000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -80,18 +80,18 @@ monster.loot = { { id = 5925, chance = 50320 }, -- hardened bone { id = 24388, chance = 50320 }, -- rhino hide { id = 24389, chance = 50320 }, -- rhino horn - { id = 22186, chance = 50320 } -- raw meat + { id = 22186, chance = 50320 }, -- raw meat } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -280 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -280 }, } monster.defenses = { defense = 10, armor = 72, mitigation = 1.88, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 0, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 0, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/terrified_elephant.lua b/data-otservbr-global/monster/mammals/terrified_elephant.lua index 3f41f2e956b..7750ddd09d0 100644 --- a/data-otservbr-global/monster/mammals/terrified_elephant.lua +++ b/data-otservbr-global/monster/mammals/terrified_elephant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 771 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "East of Port Hope, close to the Deeper Banuta shortcut, Mapper Coords128.84127.16872texthere." + Locations = "East of Port Hope, close to the Deeper Banuta shortcut, Mapper Coords128.84127.16872texthere.", } monster.health = 320 @@ -35,7 +35,7 @@ monster.manaCost = 500 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -79,18 +79,18 @@ monster.loot = { { name = "meat", chance = 40000, maxCount = 4 }, { name = "ham", chance = 27000, maxCount = 9 }, { name = "tusk", chance = 8510, maxCount = 2 }, - { name = "tusk shield", chance = 80 } + { name = "tusk shield", chance = 80 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, } monster.defenses = { defense = 0, armor = 20, mitigation = 0.41, - { name = "speed", interval = 2000, chance = 15, speedChange = 800, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 800, target = false, duration = 5000 }, } monster.elements = { @@ -110,7 +110,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/thieving_squirrel.lua b/data-otservbr-global/monster/mammals/thieving_squirrel.lua index 323f1d6532a..73fc8bf2df9 100644 --- a/data-otservbr-global/monster/mammals/thieving_squirrel.lua +++ b/data-otservbr-global/monster/mammals/thieving_squirrel.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 55 @@ -22,7 +22,7 @@ monster.manaCost = 220 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,17 +62,16 @@ monster.voices = { monster.loot = { { id = 9843, chance = 100000 }, -- flask with beaver bait - { id = 841, chance = 4550 } -- peanut + { id = 841, chance = 4550 }, -- peanut } -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 5, armor = 5, mitigation = 0.10, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/thornfire_wolf.lua b/data-otservbr-global/monster/mammals/thornfire_wolf.lua index 957e9a996a2..39c8dc0118e 100644 --- a/data-otservbr-global/monster/mammals/thornfire_wolf.lua +++ b/data-otservbr-global/monster/mammals/thornfire_wolf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 739 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Shadowthorn." + Locations = "Shadowthorn.", } monster.health = 600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -80,21 +80,21 @@ monster.loot = { { name = "meat", chance = 34000 }, { name = "wolf paw", chance = 7900 }, { name = "flaming arrow", chance = 15000, maxCount = 8 }, - { name = "fiery heart", chance = 7900 } + { name = "fiery heart", chance = 7900 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -68 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -35, maxDamage = -70, range = 1, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -30, maxDamage = -70, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 2, target = true } + { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 2, target = true }, } monster.defenses = { defense = 15, armor = 18, mitigation = 0.64, - { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 220, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 220, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/tiger.lua b/data-otservbr-global/monster/mammals/tiger.lua index 8b143917b45..6e6a263ff7d 100644 --- a/data-otservbr-global/monster/mammals/tiger.lua +++ b/data-otservbr-global/monster/mammals/tiger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 125 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Tiquanda, Meriana, Arena and Zoo Quarter. Three unreachable ones are found in the Rookgaard Academy, \z - below Ankrahmun (during the Nomads Land Quest), and on Charles's ship." + below Ankrahmun (during the Nomads Land Quest), and on Charles's ship.", } monster.health = 75 @@ -36,7 +36,7 @@ monster.manaCost = 420 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,18 +76,18 @@ monster.voices = { monster.loot = { { name = "meat", chance = 35190, maxCount = 4 }, - { name = "striped fur", chance = 10830 } + { name = "striped fur", chance = 10830 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, } monster.defenses = { defense = 15, armor = 5, mitigation = 0.38, - { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -107,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/vampire_pig.lua b/data-otservbr-global/monster/mammals/vampire_pig.lua index 3dc69b5e8a6..aaaaafb1cdf 100644 --- a/data-otservbr-global/monster/mammals/vampire_pig.lua +++ b/data-otservbr-global/monster/mammals/vampire_pig.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 558 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Isle of Evil on the surface." + Locations = "Isle of Evil on the surface.", } monster.health = 305 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,20 +75,20 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 90000, maxCount = 40 } + { name = "gold coin", chance = 90000, maxCount = 40 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -25, radius = 4, effect = CONST_ME_BATS, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -35, maxDamage = -55, range = 3, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -35, maxDamage = -55, range = 3, target = true }, } monster.defenses = { defense = 35, armor = 20, mitigation = 0.62, - { name = "outfit", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 1500, outfitMonster = "mutated bat" } + { name = "outfit", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 1500, outfitMonster = "mutated bat" }, } monster.elements = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/vulcongra.lua b/data-otservbr-global/monster/mammals/vulcongra.lua index e56cc76d603..04218b3e464 100644 --- a/data-otservbr-global/monster/mammals/vulcongra.lua +++ b/data-otservbr-global/monster/mammals/vulcongra.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 898 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Hot Spot (in Gnomebase Alpha) and Lower Spike." + Locations = "Hot Spot (in Gnomebase Alpha) and Lower Spike.", } monster.health = 1600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,14 +95,14 @@ monster.loot = { { name = "brown crystal splinter", chance = 4850 }, { name = "red crystal fragment", chance = 2280 }, { name = "magma clump", chance = 12440 }, - { name = "blazing bone", chance = 8030 } + { name = "blazing bone", chance = 8030 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -235 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -195, maxDamage = -340, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -200, range = 7, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "vulcongra soulfire", interval = 3000, chance = 100, target = false } + { name = "vulcongra soulfire", interval = 3000, chance = 100, target = false }, } monster.defenses = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/war_wolf.lua b/data-otservbr-global/monster/mammals/war_wolf.lua index 230dc6de98a..4128c475dc8 100644 --- a/data-otservbr-global/monster/mammals/war_wolf.lua +++ b/data-otservbr-global/monster/mammals/war_wolf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 3 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Orc Fort, the Orc Peninsula, Magician Tower and northwest tower or south underground of Thais, Zao steppe encaged, Vengoth." + Locations = "Orc Fort, the Orc Peninsula, Magician Tower and northwest tower or south underground of Thais, Zao steppe encaged, Vengoth.", } monster.health = 140 @@ -35,7 +35,7 @@ monster.manaCost = 420 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -77,11 +77,11 @@ monster.voices = { monster.loot = { { name = "ham", chance = 35000, maxCount = 2 }, { name = "wolf paw", chance = 710 }, - { name = "warwolf fur", chance = 5230 } + { name = "warwolf fur", chance = 5230 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, } monster.defenses = { @@ -107,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = true }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/water_buffalo.lua b/data-otservbr-global/monster/mammals/water_buffalo.lua index e6465b579bf..2591c179605 100644 --- a/data-otservbr-global/monster/mammals/water_buffalo.lua +++ b/data-otservbr-global/monster/mammals/water_buffalo.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 872 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 3, Locations = "It raids every four hours, starting at server save, in groups of one to three at \z - various places around Venore swamp, especially near the southern production site." + various places around Venore swamp, especially near the southern production site.", } monster.health = 390 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -80,11 +80,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 100000, maxCount = 20 }, { name = "meat", chance = 33600, maxCount = 4 }, - { name = "ham", chance = 39200, maxCount = 3 } + { name = "ham", chance = 39200, maxCount = 3 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, } monster.defenses = { @@ -110,7 +110,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/white_deer.lua b/data-otservbr-global/monster/mammals/white_deer.lua index a056bfb5b5a..303955ac7e0 100644 --- a/data-otservbr-global/monster/mammals/white_deer.lua +++ b/data-otservbr-global/monster/mammals/white_deer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 720 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 2, - Locations = "Around AbDendriel, Carlin east from Lothar, Femor Hills and Ferngrims Gate, usually in pairs. They will appear when they're not overhunted." + Locations = "Around AbDendriel, Carlin east from Lothar, Femor Hills and Ferngrims Gate, usually in pairs. They will appear when they're not overhunted.", } monster.health = 195 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,8 +76,7 @@ monster.voices = { { text = "*wheeze*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, @@ -102,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/white_lion.lua b/data-otservbr-global/monster/mammals/white_lion.lua index 362f12c9b52..9f47df6e6b9 100644 --- a/data-otservbr-global/monster/mammals/white_lion.lua +++ b/data-otservbr-global/monster/mammals/white_lion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1967 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Lion Sanctum." + Locations = "Lion Sanctum.", } monster.health = 2700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 15 + chance = 15, } monster.flags = { @@ -80,21 +80,21 @@ monster.loot = { { name = "leather boots", chance = 5000 }, { name = "twin hooks", chance = 5000 }, { name = "war hammer", chance = 1500 }, - { name = "combat knife", chance = 1500 } + { name = "combat knife", chance = 1500 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 0, minDamage = 0, maxDamage = -300 }, { name = "combat", interval = 2000, chance = 0, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -400, range = 1, effect = CONST_ME_HOLYAREA, target = false }, { name = "combat", interval = 2000, chance = 0, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -350, range = 1, radius = 2, effect = CONST_ME_HOLYAREA, target = false }, - { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -350, range = 1, radius = 2, effect = CONST_ME_EXPLOSIONAREA, target = false } + { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -350, range = 1, radius = 2, effect = CONST_ME_EXPLOSIONAREA, target = false }, } monster.defenses = { defense = 40, armor = 38, mitigation = 0.91, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/wild_dog.lua b/data-otservbr-global/monster/mammals/wild_dog.lua index 0eccf1cbe8c..2aae5f1a488 100644 --- a/data-otservbr-global/monster/mammals/wild_dog.lua +++ b/data-otservbr-global/monster/mammals/wild_dog.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 40, lookFeet = 50, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 20 monster.maxHealth = 20 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,11 +60,10 @@ monster.voices = { { text = "Wuff wuff", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 }, } monster.defenses = { @@ -90,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/wild_horse.lua b/data-otservbr-global/monster/mammals/wild_horse.lua index 815a4f4721c..39a411f66b1 100644 --- a/data-otservbr-global/monster/mammals/wild_horse.lua +++ b/data-otservbr-global/monster/mammals/wild_horse.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 730 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 10, Stars = 1, Occurrence = 3, - Locations = "Near the Thais Troll Cave entrance during the Horse Station World Change." + Locations = "Near the Thais Troll Cave entrance during the Horse Station World Change.", } monster.health = 75 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -59,12 +59,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -72,15 +72,14 @@ monster.voices = { chance = 10, { text = "Weeeeheeeeeee", yell = false }, { text = "*snort*", yell = false }, - { text = "*Weeeeheeeeaaa*", yell = false } + { text = "*Weeeeheeeeaaa*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -93,14 +92,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/winter_wolf.lua b/data-otservbr-global/monster/mammals/winter_wolf.lua index 0e0f1ef390d..b0a9d12f8a0 100644 --- a/data-otservbr-global/monster/mammals/winter_wolf.lua +++ b/data-otservbr-global/monster/mammals/winter_wolf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 52 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Ice Islands." + Locations = "Ice Islands.", } monster.health = 30 @@ -35,7 +35,7 @@ monster.manaCost = 260 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,11 +75,11 @@ monster.voices = { monster.loot = { { name = "meat", chance = 30000, maxCount = 2 }, - { name = "winter wolf fur", chance = 10000 } + { name = "winter wolf fur", chance = 10000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/wolf.lua b/data-otservbr-global/monster/mammals/wolf.lua index 7b69d1276d9..2b1a13734e9 100644 --- a/data-otservbr-global/monster/mammals/wolf.lua +++ b/data-otservbr-global/monster/mammals/wolf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 27 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "In almost all grass areas in Tibia, also found in Rookgaard and Dawnport." + Locations = "In almost all grass areas in Tibia, also found in Rookgaard and Dawnport.", } monster.health = 25 @@ -35,7 +35,7 @@ monster.manaCost = 255 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { monster.loot = { { name = "meat", chance = 55000, maxCount = 2 }, - { name = "wolf paw", chance = 980 } + { name = "wolf paw", chance = 980 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/mammals/yeti.lua b/data-otservbr-global/monster/mammals/yeti.lua index 8e9a040b6f4..33447765d34 100644 --- a/data-otservbr-global/monster/mammals/yeti.lua +++ b/data-otservbr-global/monster/mammals/yeti.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 110 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Folda, Chyllfroest, Isle of Merriment." + Locations = "Folda, Chyllfroest, Isle of Merriment.", } monster.health = 950 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,19 +60,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Yooodelaaahooohooo", yell = false }, - { text = "Yooodelaaaheehee", yell = false } + { text = "Yooodelaaaheehee", yell = false }, } monster.loot = { @@ -81,18 +81,18 @@ monster.loot = { { name = "gold coin", chance = 100000, maxCount = 40 }, { name = "bunnyslippers", chance = 1333 }, { name = "meat", chance = 33333, maxCount = 4 }, - { name = "ham", chance = 10000, maxCount = 5 } + { name = "ham", chance = 10000, maxCount = 5 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 33, - armor = 28 + armor = 28, } monster.elements = { @@ -105,14 +105,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/nostalgia/old_bear.lua b/data-otservbr-global/monster/nostalgia/old_bear.lua index 133fb0cc4c7..e78a9cbf00d 100644 --- a/data-otservbr-global/monster/nostalgia/old_bear.lua +++ b/data-otservbr-global/monster/nostalgia/old_bear.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 80 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -47,33 +47,33 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Grrrr", yell = false }, - { text = "Groar", yell = false } + { text = "Groar", yell = false }, } monster.loot = { { name = "meat", chance = 39750, maxCount = 5 }, - { name = "ham", chance = 20000, maxCount = 2 } + { name = "ham", chance = 20000, maxCount = 2 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -86,14 +86,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/nostalgia/old_bonelord.lua b/data-otservbr-global/monster/nostalgia/old_bonelord.lua index d679bdc9dde..90d99dee2ce 100644 --- a/data-otservbr-global/monster/nostalgia/old_bonelord.lua +++ b/data-otservbr-global/monster/nostalgia/old_bonelord.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 260 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,19 +47,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 6, summons = { - { name = "Skeleton", chance = 20, interval = 2000, count = 6 } - } + { name = "Skeleton", chance = 20, interval = 2000, count = 6 }, + }, } monster.voices = { @@ -68,7 +68,7 @@ monster.voices = { { text = "Olho por Olho!", yell = false }, { text = "Estou olhando para voce!", yell = false }, { text = "Deixe-me dar uma olhada em voce!", yell = false }, - { text = "Voce tem o olhar!", yell = false } + { text = "Voce tem o olhar!", yell = false }, } monster.loot = { @@ -78,7 +78,7 @@ monster.loot = { { name = "morning star", chance = 6950 }, { name = "longsword", chance = 8980 }, { name = "steel shield", chance = 4001 }, - { name = "bonelord eye", chance = 940 } + { name = "bonelord eye", chance = 940 }, } monster.attacks = { @@ -89,12 +89,12 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -5, maxDamage = -45, range = 7, shootEffect = CONST_ANI_POISON, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -5, maxDamage = -50, range = 7, shootEffect = CONST_ANI_DEATH, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -45, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = -5, maxDamage = -35, range = 7, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = -5, maxDamage = -35, range = 7, target = false }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -107,14 +107,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/nostalgia/old_bug.lua b/data-otservbr-global/monster/nostalgia/old_bug.lua index b3eb4a05723..096a64f5c6c 100644 --- a/data-otservbr-global/monster/nostalgia/old_bug.lua +++ b/data-otservbr-global/monster/nostalgia/old_bug.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 29 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,16 +62,16 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 51170, maxCount = 6 }, - { name = "cherry", chance = 2590, maxCount = 2 } + { name = "cherry", chance = 2590, maxCount = 2 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -23 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -23 }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -84,14 +84,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/nostalgia/old_giant_spider.lua b/data-otservbr-global/monster/nostalgia/old_giant_spider.lua index 0e74f78e51b..ebac5e23c18 100644 --- a/data-otservbr-global/monster/nostalgia/old_giant_spider.lua +++ b/data-otservbr-global/monster/nostalgia/old_giant_spider.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1300 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -69,19 +69,19 @@ monster.loot = { { id = 236, chance = 3571 }, -- strong health potion { id = 3371, chance = 850 }, -- knight legs { id = 3055, chance = 280 }, -- platinum amulet - { id = 3370, chance = 500 } -- knight armor + { id = 3370, chance = 500 }, -- knight armor } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, { name = "poisonfield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -70, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -70, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { defense = 25, armor = 25, - { name = "speed", interval = 2000, chance = 15, speedChange = 390, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 390, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -94,14 +94,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/nostalgia/old_pig.lua b/data-otservbr-global/monster/nostalgia/old_pig.lua index 82aedcf5582..5cca68ad2a1 100644 --- a/data-otservbr-global/monster/nostalgia/old_pig.lua +++ b/data-otservbr-global/monster/nostalgia/old_pig.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 25 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -47,29 +47,29 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Oink oink", yell = false }, - { text = "Oink", yell = false } + { text = "Oink", yell = false }, } monster.loot = { { name = "meat", chance = 64000, maxCount = 4 }, - { name = "pig foot", chance = 950 } + { name = "pig foot", chance = 950 }, } monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -82,14 +82,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/nostalgia/old_spider.lua b/data-otservbr-global/monster/nostalgia/old_spider.lua index 14213db6547..1183da9ef1a 100644 --- a/data-otservbr-global/monster/nostalgia/old_spider.lua +++ b/data-otservbr-global/monster/nostalgia/old_spider.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,16 +62,16 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 65150, maxCount = 5 }, - { name = "spider fangs", chance = 960 } + { name = "spider fangs", chance = 960 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -9 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -9 }, } monster.defenses = { defense = 2, - armor = 2 + armor = 2, } monster.elements = { @@ -84,14 +84,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/nostalgia/old_wasp.lua b/data-otservbr-global/monster/nostalgia/old_wasp.lua index 9d3bf1badc0..bae075bcb2a 100644 --- a/data-otservbr-global/monster/nostalgia/old_wasp.lua +++ b/data-otservbr-global/monster/nostalgia/old_wasp.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 35 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,31 +47,31 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Bssssss", yell = false } + { text = "Bssssss", yell = false }, } monster.loot = { - { name = "honeycomb", chance = 3000 } + { name = "honeycomb", chance = 3000 }, } monster.attacks = { - { name = "melee", interval = 1500, chance = 100, minDamage = 0, maxDamage = -20, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } } + { name = "melee", interval = 1500, chance = 100, minDamage = 0, maxDamage = -20, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -84,14 +84,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/nostalgia/old_wolf.lua b/data-otservbr-global/monster/nostalgia/old_wolf.lua index 1cf4fe952e5..595d1bef28c 100644 --- a/data-otservbr-global/monster/nostalgia/old_wolf.lua +++ b/data-otservbr-global/monster/nostalgia/old_wolf.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 25 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -47,32 +47,32 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Yoooohhuuuu!", yell = false }, - { text = "Grrrrrrr", yell = false } + { text = "Grrrrrrr", yell = false }, } monster.loot = { - { name = "meat", chance = 55000, maxCount = 4 } + { name = "meat", chance = 55000, maxCount = 4 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -85,14 +85,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, { type = COMBAT_HOLYDAMAGE, percent = 5 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/bane_bringer.lua b/data-otservbr-global/monster/plants/bane_bringer.lua index 3150bd74f41..4910ebd894d 100644 --- a/data-otservbr-global/monster/plants/bane_bringer.lua +++ b/data-otservbr-global/monster/plants/bane_bringer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 679 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Green Claw Swamp underground, near the big witches' cauldron." + Locations = "Green Claw Swamp underground, near the big witches' cauldron.", } monster.health = 2500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -79,11 +79,11 @@ monster.voices = { monster.loot = { { id = 3135, chance = 15220, maxCount = 96 }, -- wooden trash - { name = "dry piece of wood", chance = 100000 } + { name = "dry piece of wood", chance = 100000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/branchy_crawler.lua b/data-otservbr-global/monster/plants/branchy_crawler.lua index 9edee9004e8..d319fcde5e5 100644 --- a/data-otservbr-global/monster/plants/branchy_crawler.lua +++ b/data-otservbr-global/monster/plants/branchy_crawler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1931 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Rotten Wasteland." + Locations = "Rotten Wasteland.", } monster.health = 27000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -103,7 +103,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 22, type = COMBAT_EARTHDAMAGE, minDamage = -1000, maxDamage = -1280, radius = 4, effect = CONST_ME_SMALLPLANTS, target = true }, { name = "combat", interval = 2000, chance = 22, type = COMBAT_HOLYDAMAGE, minDamage = -1100, maxDamage = -1250, radius = 4, effect = CONST_ME_HOLYDAMAGE, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HOLYDAMAGE, minDamage = -1100, maxDamage = -1400, range = 7, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_HOLYAREA, target = true }, - { name = "root", interval = 2000, chance = 1, target = true } + { name = "root", interval = 2000, chance = 1, target = true }, } monster.defenses = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/carniphila.lua b/data-otservbr-global/monster/plants/carniphila.lua index 5468fc6ade0..4251cde140a 100644 --- a/data-otservbr-global/monster/plants/carniphila.lua +++ b/data-otservbr-global/monster/plants/carniphila.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 120 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Deep inside the Tiquanda Jungle including Tiquanda Laboratory and a small cave, \z - Forbidden Lands, Deeper Banuta, Arena and Zoo quarter in Yalahar." + Forbidden Lands, Deeper Banuta, Arena and Zoo quarter in Yalahar.", } monster.health = 255 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -82,14 +82,14 @@ monster.loot = { { name = "shadow herb", chance = 880 }, { name = "seeds", chance = 490 }, { name = "carniphila seeds", chance = 4166 }, - { name = "carrot on a stick", chance = 170 } + { name = "carrot on a stick", chance = 170 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 100, interval = 4000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -95, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -800, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false, duration = 30000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -130, radius = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -130, radius = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/cloak_of_terror.lua b/data-otservbr-global/monster/plants/cloak_of_terror.lua index cb25b902189..fd9dbf2a971 100644 --- a/data-otservbr-global/monster/plants/cloak_of_terror.lua +++ b/data-otservbr-global/monster/plants/cloak_of_terror.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1928 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Furious Crater." + Locations = "Furious Crater.", } monster.health = 28000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -101,7 +101,7 @@ monster.attacks = { { name = "combat", interval = 4000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -1100, maxDamage = -1350, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 3000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -1150, maxDamage = -1300, range = 7, radius = 4, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -1000, maxDamage = -1300, range = 7, shootEffect = CONST_ANI_SPECTRALBOLT, effect = CONST_ME_HOLYDAMAGE, target = true }, - { name = "combat", interval = 2000, chance = 24, type = COMBAT_HOLYDAMAGE, minDamage = -800, maxDamage = -1200, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_YELLOW_ENERGY_SPARK, target = true } + { name = "combat", interval = 2000, chance = 24, type = COMBAT_HOLYDAMAGE, minDamage = -800, maxDamage = -1200, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_YELLOW_ENERGY_SPARK, target = true }, } monster.defenses = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/glooth_anemone.lua b/data-otservbr-global/monster/plants/glooth_anemone.lua index 1b86e9e5fee..221cd859f10 100644 --- a/data-otservbr-global/monster/plants/glooth_anemone.lua +++ b/data-otservbr-global/monster/plants/glooth_anemone.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1042 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Rathleton Sewers, Underground Glooth Factory, Jaccus Maxxen's Dungeon." + Locations = "Rathleton Sewers, Underground Glooth Factory, Jaccus Maxxen's Dungeon.", } monster.health = 2400 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 3 + chance = 3, } monster.strategiesTarget = { @@ -94,14 +94,14 @@ monster.loot = { { id = 21179, chance = 120 }, -- glooth blade { id = 21178, chance = 370 }, -- glooth club { id = 21180, chance = 240 }, -- glooth axe - { id = 21158, chance = 370 } -- glooth spear + { id = 21158, chance = 370 }, -- glooth spear } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 50 }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -200, range = 7, radius = 4, shootEffect = CONST_ANI_GLOOTHSPEAR, effect = CONST_ME_HITBYPOISON, target = true }, { name = "combat", interval = 2000, chance = 7, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -100, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, radius = 5, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.defenses = { armor = 42, mitigation = 1.02, { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "glooth anemone summon", interval = 2000, chance = 14, target = false } + { name = "glooth anemone summon", interval = 2000, chance = 14, target = false }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/haunted_treeling.lua b/data-otservbr-global/monster/plants/haunted_treeling.lua index 2368a1fb2ba..15bf394b1b0 100644 --- a/data-otservbr-global/monster/plants/haunted_treeling.lua +++ b/data-otservbr-global/monster/plants/haunted_treeling.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 511 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Vengoth surface, Vengoth Castle (Boreth's tower), Northern Zao Plantations, Tiquanda Laboratory, \z - Dryad Gardens." + Dryad Gardens.", } monster.health = 450 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { name = "strong health potion", chance = 1040 }, { id = 3097, chance = 660 }, -- dwarven ring { name = "small emerald", chance = 620 }, - { name = "bullseye potion", chance = 100 } + { name = "bullseye potion", chance = 100 }, } monster.attacks = { @@ -99,7 +99,7 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 5, spread = 3, effect = CONST_ME_SMALLPLANTS, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, radius = 1, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_CARNIPHILA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -55, maxDamage = -100, radius = 4, effect = CONST_ME_HITBYPOISON, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, radius = 1, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, radius = 1, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/hideous_fungus.lua b/data-otservbr-global/monster/plants/hideous_fungus.lua index f4419aca405..a4938bcf765 100644 --- a/data-otservbr-global/monster/plants/hideous_fungus.lua +++ b/data-otservbr-global/monster/plants/hideous_fungus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 891 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Warzone 1, Rathleton Sewers, unreachable location in Tiquanda Laboratory." + Locations = "Warzone 1, Rathleton Sewers, unreachable location in Tiquanda Laboratory.", } monster.health = 4600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "humorless fungus", chance = 10, interval = 2000, count = 2 } - } + { name = "humorless fungus", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -103,7 +103,7 @@ monster.loot = { { name = "muck rod", chance = 590 }, { name = "hideous chunk", chance = 14285 }, { name = "envenomed arrow", chance = 14500, maxCount = 15 }, - { name = "mycological bow", chance = 60 } + { name = "mycological bow", chance = 60 }, } monster.attacks = { @@ -113,7 +113,7 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 10, speedChange = -600, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 60000 }, { name = "drunk", interval = 2000, chance = 10, range = 7, radius = 5, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_STUN, target = true, duration = 4000 }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -400, maxDamage = -640, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -400, maxDamage = -640, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.defenses = { armor = 60, mitigation = 1.74, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 275, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -141,7 +141,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/humongous_fungus.lua b/data-otservbr-global/monster/plants/humongous_fungus.lua index 94abb29a262..e80d2c162e6 100644 --- a/data-otservbr-global/monster/plants/humongous_fungus.lua +++ b/data-otservbr-global/monster/plants/humongous_fungus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 881 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Warzone 1, Rathleton Sewers, unreachable location in Tiquanda Laboratory." + Locations = "Warzone 1, Rathleton Sewers, unreachable location in Tiquanda Laboratory.", } monster.health = 3400 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -98,7 +98,7 @@ monster.loot = { { name = "terra mantle", chance = 870 }, { name = "muck rod", chance = 640 }, { name = "mushroom backpack", chance = 20 }, - { name = "mycological bow", chance = 140 } + { name = "mycological bow", chance = 140 }, } monster.attacks = { @@ -109,7 +109,7 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -500, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -130, maxDamage = -260, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -400, maxDamage = -640, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -400, maxDamage = -640, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.defenses = { armor = 70, mitigation = 2.02, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 225, maxDamage = 380, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -137,7 +137,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/leaf_golem.lua b/data-otservbr-global/monster/plants/leaf_golem.lua index 48f265c0a91..4308ffd7d09 100644 --- a/data-otservbr-global/monster/plants/leaf_golem.lua +++ b/data-otservbr-global/monster/plants/leaf_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 979 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Leaf dungeon in Hellgate, Lair of the Treeling Witch, Forest Fury Camp and in the \z - Forest Fury version of the Forsaken Mine." + Forest Fury version of the Forsaken Mine.", } monster.health = 90 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,13 +84,13 @@ monster.loot = { { name = "dowser", chance = 12190 }, { name = "swampling club", chance = 5130 }, { name = "white mushroom", chance = 4920, maxCount = 3 }, - { name = "small emerald", chance = 950 } + { name = "small emerald", chance = 950 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -15, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = true }, - { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 3, effect = CONST_ME_SMALLPLANTS, target = false, duration = 9000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 3, effect = CONST_ME_SMALLPLANTS, target = false, duration = 9000 }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/omnivora.lua b/data-otservbr-global/monster/plants/omnivora.lua index 25de659345d..7bd18d7d981 100644 --- a/data-otservbr-global/monster/plants/omnivora.lua +++ b/data-otservbr-global/monster/plants/omnivora.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1141 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Tiquanda Medusa Tower." + Locations = "Tiquanda Medusa Tower.", } monster.health = 1200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,21 +89,21 @@ monster.loot = { { id = 813, chance = 560 }, -- terra boots { id = 3069, chance = 430 }, -- necrotic rod { id = 8072, chance = 320 }, -- spellbook of enlightenment - { id = 12311, chance = 100 } -- carrot on a stick + { id = 12311, chance = 100 }, -- carrot on a stick } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "speed", interval = 4000, chance = 20, speedChange = -350, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 12000 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -80, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -100, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -100, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 35, armor = 38, mitigation = 0.99, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/spit_nettle.lua b/data-otservbr-global/monster/plants/spit_nettle.lua index c2343b90a07..3ca58c2e377 100644 --- a/data-otservbr-global/monster/plants/spit_nettle.lua +++ b/data-otservbr-global/monster/plants/spit_nettle.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 221 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Tiquanda, Trapwood, the outskirts of Chor and Forbidden Lands, Alchemist Quarter in Yalahar, \z - Tiquanda Laboratory." + Tiquanda Laboratory.", } monster.health = 150 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -78,20 +78,20 @@ monster.loot = { { name = "shadow herb", chance = 11080 }, { name = "nettle spit", chance = 9620 }, { name = "sling herb", chance = 5680, maxCount = 2 }, - { name = "nettle blossom", chance = 970 } + { name = "nettle blossom", chance = 970 }, } monster.attacks = { { name = "combat", interval = 1000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -15, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = true }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -40, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = true } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -40, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { defense = 0, armor = 12, mitigation = 0.86, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 8, maxDamage = 16, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 8, maxDamage = 16, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/stalking_stalk.lua b/data-otservbr-global/monster/plants/stalking_stalk.lua index 989c78afb0c..3565dcc26d1 100644 --- a/data-otservbr-global/monster/plants/stalking_stalk.lua +++ b/data-otservbr-global/monster/plants/stalking_stalk.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2272 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Monster Graveyard" + Locations = "Monster Graveyard", } monster.health = 17100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/swampling.lua b/data-otservbr-global/monster/plants/swampling.lua index e595b60d8c4..b2d243dfa62 100644 --- a/data-otservbr-global/monster/plants/swampling.lua +++ b/data-otservbr-global/monster/plants/swampling.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 919 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Venore swamp area, Venore Salamander Cave, Tiquanda Laboratory." + Locations = "Venore swamp area, Venore Salamander Cave, Tiquanda Laboratory.", } monster.health = 80 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -82,13 +82,13 @@ monster.loot = { { name = "white mushroom", chance = 10220, maxCount = 5 }, { name = "swampling club", chance = 7410 }, { name = "swampling moss", chance = 19900 }, - { name = "piece of swampling wood", chance = 14870 } + { name = "piece of swampling wood", chance = 14870 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -2, maxDamage = -15, range = 7, shootEffect = CONST_ANI_POISON, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -300, length = 3, spread = 2, effect = CONST_ME_WATERSPLASH, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -300, length = 3, spread = 2, effect = CONST_ME_WATERSPLASH, target = false, duration = 5000 }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/plants/wilting_leaf_golem.lua b/data-otservbr-global/monster/plants/wilting_leaf_golem.lua index e59a2625b75..c9c4fd36e88 100644 --- a/data-otservbr-global/monster/plants/wilting_leaf_golem.lua +++ b/data-otservbr-global/monster/plants/wilting_leaf_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 982 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Forest Fury Camp, Lair of the Treeling Witch and in the Forest Fury version of the Forsaken Mine." + Locations = "Forest Fury Camp, Lair of the Treeling Witch and in the Forest Fury version of the Forsaken Mine.", } monster.health = 380 @@ -35,7 +35,7 @@ monster.manaCost = 390 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,19 +62,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "*crackle*", yell = false }, - { text = "*swwwwishhhh*", yell = false } + { text = "*swwwwishhhh*", yell = false }, } monster.loot = { @@ -83,7 +83,7 @@ monster.loot = { { name = "dowser", chance = 11880 }, { name = "small emerald", chance = 1050 }, { name = "white mushroom", chance = 5040, maxCount = 3 }, - { name = "swampling club", chance = 4890 } + { name = "swampling club", chance = 4890 }, } monster.attacks = { @@ -91,12 +91,12 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 7, radius = 1, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONHIT, target = true }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -150, maxDamage = -200, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 3, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 3, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, } monster.defenses = { defense = 0, - armor = 20 + armor = 20, } monster.elements = { @@ -109,14 +109,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/a_pirates_tail_quest/ratmiral_blackwhiskers.lua b/data-otservbr-global/monster/quests/a_pirates_tail_quest/ratmiral_blackwhiskers.lua index 5138c08f393..9e856e372a1 100644 --- a/data-otservbr-global/monster/quests/a_pirates_tail_quest/ratmiral_blackwhiskers.lua +++ b/data-otservbr-global/monster/quests/a_pirates_tail_quest/ratmiral_blackwhiskers.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 220000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 2006, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_60.APiratesTail.RatmiralTimer + storageCooldown = Storage.Quest.U12_60.APiratesTail.RatmiralTimer, } monster.strategiesTarget = { @@ -52,19 +52,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 4, summons = { { name = "elite pirat", chance = 30, interval = 1000 }, - } + }, } monster.voices = { @@ -103,14 +103,14 @@ monster.loot = { { id = 35521, chance = 890 }, -- jungle rod { id = 35522, chance = 890 }, -- jungle wand { id = 35519, chance = 890 }, -- makeshift boots - { id = 35520, chance = 890 } -- make-do boots + { id = 35520, chance = 890 }, -- make-do boots } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -270, maxDamage = -500 }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -600, range = 7, shootEffect = CONST_ANI_WHIRLWINDCLUB, target = true }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -600, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1000, length = 4, spread = 0, effect = CONST_ME_SOUND_PURPLE, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1000, length = 4, spread = 0, effect = CONST_ME_SOUND_PURPLE, target = false }, } monster.defenses = { @@ -128,14 +128,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onAppear = function(monster, creature) diff --git a/data-otservbr-global/monster/quests/a_pirates_tail_quest/tentuglys_head.lua b/data-otservbr-global/monster/quests/a_pirates_tail_quest/tentuglys_head.lua index 390de0c1a5b..72ee264ae71 100644 --- a/data-otservbr-global/monster/quests/a_pirates_tail_quest/tentuglys_head.lua +++ b/data-otservbr-global/monster/quests/a_pirates_tail_quest/tentuglys_head.lua @@ -21,12 +21,12 @@ monster.speed = 0 monster.manaCost = 0 monster.events = { - "TentuglysHeadDeath" + "TentuglysHeadDeath", } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,14 +86,14 @@ monster.loot = { { id = 35611, chance = 2110 }, -- tentacle of tentugly { id = 35578, chance = 1410 }, -- tiara { id = 35610, chance = 700 }, -- tentugly's eye - { id = 35612, chance = 700 } -- tentugly's jaws + { id = 35612, chance = 700 }, -- tentugly's jaws } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", type = COMBAT_ENERGYDAMAGE, interval = 2000, chance = 40, minDamage = -100, maxDamage = -400, range = 5, radius = 4, target = true, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_GHOSTLY_BITE }, { name = "energy waveT", interval = 2000, chance = 30, minDamage = 0, maxDamage = -250 }, - { name = "combat", type = COMBAT_ENERGYDAMAGE, interval = 2000, chance = 50, minDamage = -100, maxDamage = -300, radius = 5, effect = CONST_ME_LOSEENERGY } + { name = "combat", type = COMBAT_ENERGYDAMAGE, interval = 2000, chance = 50, minDamage = -100, maxDamage = -300, radius = 5, effect = CONST_ME_LOSEENERGY }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onAppear = function(monster, creature) diff --git a/data-otservbr-global/monster/quests/adventures_of_galthen/megasylvan_yselda.lua b/data-otservbr-global/monster/quests/adventures_of_galthen/megasylvan_yselda.lua index 633805f8135..40afe906a82 100644 --- a/data-otservbr-global/monster/quests/adventures_of_galthen/megasylvan_yselda.lua +++ b/data-otservbr-global/monster/quests/adventures_of_galthen/megasylvan_yselda.lua @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -57,8 +57,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "Carnisylvan Sapling", chance = 70, interval = 2000, count = 1 } - } + { name = "Carnisylvan Sapling", chance = 70, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -92,7 +92,7 @@ monster.loot = { { id = 36808, chance = 1430 }, -- old royal diary { id = 812, chance = 1430 }, -- terra legs { id = 811, chance = 1430 }, -- terra mantle - { id = 32623, chance = 1200, count = 1 } -- giant topaz + { id = 32623, chance = 1200, count = 1 }, -- giant topaz } monster.attacks = { @@ -100,7 +100,7 @@ monster.attacks = { { name = "earth beamMY", interval = 2000, chance = 50, minDamage = -400, maxDamage = -900, target = false }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -800, range = 5, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -800, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "mana leechMY", interval = 2000, chance = 50, minDamage = -100, maxDamage = -400, target = false } + { name = "mana leechMY", interval = 2000, chance = 50, minDamage = -100, maxDamage = -400, target = false }, } monster.defenses = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onAppear = function(monster, creature) diff --git a/data-otservbr-global/monster/quests/ancient_feud/katex_blood_tongue.lua b/data-otservbr-global/monster/quests/ancient_feud/katex_blood_tongue.lua index 422de978ec1..ac8553759b6 100644 --- a/data-otservbr-global/monster/quests/ancient_feud/katex_blood_tongue.lua +++ b/data-otservbr-global/monster/quests/ancient_feud/katex_blood_tongue.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 113, lookFeet = 113, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6300 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.bosstiary = { bossRaceId = 1981, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U10_80.Grimvale.KatexTimer + storageCooldown = Storage.Quest.U10_80.Grimvale.KatexTimer, } monster.strategiesTarget = { @@ -52,24 +52,24 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 1, summons = { - { name = "werehyaena", chance = 50, interval = 5000, count = 1 } - } + { name = "werehyaena", chance = 50, interval = 5000, count = 1 }, + }, } monster.voices = { interval = 0, - chance = 0 + chance = 0, } monster.loot = { @@ -99,20 +99,20 @@ monster.loot = { { id = 7382, chance = 560 }, -- demonrage sword { id = 3360, chance = 560 }, -- golden armor { id = 33778, chance = 360 }, -- raw watermelon tourmaline - { id = 282, chance = 140 } -- giant shimmering pearl (brown) + { id = 282, chance = 140 }, -- giant shimmering pearl (brown) } monster.attacks = { { name = "melee", type = COMBAT_PHYSICALDAMAGE, interval = 2000, maxDamage = -300 }, { name = "combat", type = COMBAT_EARTHDAMAGE, interval = 2000, chance = 30, minDamage = -350, maxDamage = -500, range = 5, radius = 3, length = 3, spread = 3, target = true, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_POFF }, { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2000, chance = 40, minDamage = -300, maxDamage = -400, radius = 5, target = false, effect = CONST_ME_MORTAREA }, - { name = "katex deathT", interval = 2000, chance = 30, minDamage = -250, maxDamage = -350, target = false } + { name = "katex deathT", interval = 2000, chance = 30, minDamage = -250, maxDamage = -350, target = false }, } monster.defenses = { { name = "speed", interval = 2000, chance = 15, speed = 200, duration = 5000, effect = CONST_ME_MAGIC_BLUE }, defense = 0, - armor = 38 + armor = 38, } monster.elements = { @@ -125,14 +125,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = true } + { type = "bleed", condition = true }, } mType.onAppear = function(monster, creature) diff --git a/data-otservbr-global/monster/quests/ancient_feud/srezz_yellow_eyes.lua b/data-otservbr-global/monster/quests/ancient_feud/srezz_yellow_eyes.lua index c19b3115ceb..38c3b17c7b9 100644 --- a/data-otservbr-global/monster/quests/ancient_feud/srezz_yellow_eyes.lua +++ b/data-otservbr-global/monster/quests/ancient_feud/srezz_yellow_eyes.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { id = 7382, chance = 560 }, -- demonrage sword { id = 3040, chance = 560 }, -- gold nugget { id = 34258, chance = 360 }, -- red silk flower - { id = 33778, chance = 360 } -- raw watermelon tourmaline + { id = 33778, chance = 360 }, -- raw watermelon tourmaline } monster.attacks = { @@ -98,7 +98,7 @@ monster.attacks = { { name = "combat", type = COMBAT_EARTHDAMAGE, interval = 2000, chance = 20, minDamage = -400, maxDamage = -500, range = 5, radius = 3, spread = 3, target = true, shootEffect = CONST_ANI_POISON, effect = CONST_ME_YELLOW_RINGS }, { name = "lleech waveT", interval = 2000, chance = 30, minDamage = -200, maxDamage = -300 }, { name = "combat", type = COMBAT_LIFEDRAIN, interval = 2000, chance = 30, minDamage = -200, maxDamage = -300, length = 5, spread = 3, effect = CONST_ME_DRAWBLOOD }, - { name = "combat", type = COMBAT_LIFEDRAIN, interval = 2000, chance = 70, minDamage = -200, maxDamage = -350, radius = 4, target = false, effect = CONST_ME_DRAWBLOOD } + { name = "combat", type = COMBAT_LIFEDRAIN, interval = 2000, chance = 70, minDamage = -200, maxDamage = -350, radius = 4, target = false, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.defenses = { armor = 35, -- mitigation = ???, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 340, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 340, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onAppear = function(monster, creature) diff --git a/data-otservbr-global/monster/quests/ancient_feud/utua_stone_sting.lua b/data-otservbr-global/monster/quests/ancient_feud/utua_stone_sting.lua index 52844d02f15..4305d5b4a0f 100644 --- a/data-otservbr-global/monster/quests/ancient_feud/utua_stone_sting.lua +++ b/data-otservbr-global/monster/quests/ancient_feud/utua_stone_sting.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,21 +95,21 @@ monster.loot = { { id = 10438, chance = 540 }, -- spellweaver's robe { id = 3420, chance = 360 }, -- demon shield { id = 824, chance = 360 }, -- glacier robe - { id = 33778, chance = 360 } -- raw watermelon tourmaline + { id = 33778, chance = 360 }, -- raw watermelon tourmaline } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, condition = { type = CONDITION_POISON, totalDamage = 1000, interval = 4000 } }, { name = "combat", type = COMBAT_EARTHDAMAGE, interval = 2000, chance = 30, minDamage = -200, maxDamage = -300, target = true, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA }, { name = "combat", type = COMBAT_EARTHDAMAGE, interval = 2000, chance = 25, minDamage = -300, maxDamage = -450, radius = 3, length = 3, spread = 3, target = true, shootEffect = CONST_ANI_POISONARROW, effect = CONST_ME_POISONAREA }, - { name = "combat", type = COMBAT_LIFEDRAIN, interval = 4000, chance = 40, minDamage = 0, maxDamage = -400, length = 4, spread = 3, effect = CONST_ME_DRAWBLOOD } + { name = "combat", type = COMBAT_LIFEDRAIN, interval = 4000, chance = 40, minDamage = 0, maxDamage = -400, length = 4, spread = 3, effect = CONST_ME_DRAWBLOOD }, } monster.defenses = { defense = 0, armor = 42, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 60, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 60, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onAppear = function(monster, creature) diff --git a/data-otservbr-global/monster/quests/ancient_feud/yirkas_blue_scales.lua b/data-otservbr-global/monster/quests/ancient_feud/yirkas_blue_scales.lua index e094ce108c2..f1f92583456 100644 --- a/data-otservbr-global/monster/quests/ancient_feud/yirkas_blue_scales.lua +++ b/data-otservbr-global/monster/quests/ancient_feud/yirkas_blue_scales.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,7 +92,7 @@ monster.loot = { { id = 8074, chance = 550 }, -- spellbook of mind control { id = 21168, chance = 550 }, -- alloy legs { id = 33778, chance = 360 }, -- raw watermelon tourmaline - { id = 34258, chance = 360 } -- red silk flower + { id = 34258, chance = 360 }, -- red silk flower } monster.attacks = { @@ -100,14 +100,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -500, length = 3, spread = 1, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -350, range = 3, radius = 3, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -500, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = true }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -300, radius = 4, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -300, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { defense = 78, armor = 78, -- mitigation = ???, - { name = "speed", interval = 2000, chance = 5, speedChange = 350, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 5, speedChange = 350, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onAppear = function(monster, creature) diff --git a/data-otservbr-global/monster/quests/ancient_tombs/ashmunrah.lua b/data-otservbr-global/monster/quests/ancient_tombs/ashmunrah.lua index 72bc2f4cfc4..3d49ec35462 100644 --- a/data-otservbr-global/monster/quests/ancient_tombs/ashmunrah.lua +++ b/data-otservbr-global/monster/quests/ancient_tombs/ashmunrah.lua @@ -10,12 +10,12 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { bossRaceId = 91, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.health = 5000 @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -64,8 +64,8 @@ monster.summon = { maxSummons = 4, summons = { { name = "Ancient Scarab", chance = 100, interval = 1000, count = 2 }, - { name = "Green Djinn", chance = 100, interval = 1000, count = 2 } - } + { name = "Green Djinn", chance = 100, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -87,7 +87,7 @@ monster.loot = { { name = "gold coin", chance = 50000, maxCount = 60 }, { name = "might ring", chance = 1000 }, { name = "crown armor", chance = 80000 }, - { name = "great mana potion", chance = 1500 } + { name = "great mana potion", chance = 1500 }, } monster.attacks = { @@ -96,7 +96,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -500, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 3000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -120, maxDamage = -750, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_MORTAREA, target = false }, { name = "speed", interval = 3000, chance = 25, speedChange = -650, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 50000 }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_YELLOW_RINGS, target = false } + { name = "combat", interval = 2000, chance = 18, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_YELLOW_RINGS, target = false }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "invisible", interval = 1000, chance = 7, effect = CONST_ME_MAGIC_BLUE }, - { name = "outfit", interval = 1000, chance = 3, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "ancient scarab" } + { name = "outfit", interval = 1000, chance = 3, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "ancient scarab" }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ancient_tombs/dipthrah.lua b/data-otservbr-global/monster/quests/ancient_tombs/dipthrah.lua index a0720b7e3e9..c6e27e003ee 100644 --- a/data-otservbr-global/monster/quests/ancient_tombs/dipthrah.lua +++ b/data-otservbr-global/monster/quests/ancient_tombs/dipthrah.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4200 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 87, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -52,19 +52,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 4, summons = { - { name = "Priestess", chance = 15, interval = 2000, count = 4 } - } + { name = "Priestess", chance = 15, interval = 2000, count = 4 }, + }, } monster.voices = { @@ -73,7 +73,7 @@ monster.voices = { { text = "You can't escape death forever", yell = false }, { text = "Come closer to learn the final lesson", yell = false }, { text = "Undeath will shatter my shackles.", yell = false }, - { text = "You don't need this magic anymore.", yell = false } + { text = "You don't need this magic anymore.", yell = false }, } monster.loot = { @@ -87,7 +87,7 @@ monster.loot = { { name = "ornamented ankh", chance = 100000 }, { name = "skull staff", chance = 500 }, { name = "pharaoh sword", chance = 300 }, - { name = "great mana potion", chance = 7000 } + { name = "great mana potion", chance = 7000 }, } monster.attacks = { @@ -96,13 +96,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -500, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, { name = "speed", interval = 1000, chance = 15, speedChange = -650, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 50000 }, { name = "drunk", interval = 1000, chance = 12, radius = 7, effect = CONST_ME_LOSEENERGY, target = false }, - { name = "melee", interval = 3000, chance = 34, minDamage = -50, maxDamage = -600 } + { name = "melee", interval = 3000, chance = 34, minDamage = -50, maxDamage = -600 }, } monster.defenses = { defense = 25, armor = 25, - { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 100, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 100, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -115,14 +115,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 30 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ancient_tombs/horestis.lua b/data-otservbr-global/monster/quests/ancient_tombs/horestis.lua index bf7a265684f..10a677505e8 100644 --- a/data-otservbr-global/monster/quests/ancient_tombs/horestis.lua +++ b/data-otservbr-global/monster/quests/ancient_tombs/horestis.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 713, - bossRace = RARITY_NEMESIS + bossRace = RARITY_NEMESIS, } monster.strategiesTarget = { @@ -54,25 +54,25 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 2, summons = { - { name = "Sandstone Scorpion", chance = 12, interval = 1000, count = 2 } - } + { name = "Sandstone Scorpion", chance = 12, interval = 1000, count = 2 }, + }, } monster.voices = { interval = 5000, chance = 10, - { text = "I might be dead but I'm not gone!", yell = false } + { text = "I might be dead but I'm not gone!", yell = false }, } monster.loot = { @@ -88,7 +88,7 @@ monster.loot = { { id = 3334, chance = 5000 }, -- pharaoh sword { id = 10290, chance = 2500 }, -- mini mummy { id = 8897, chance = 2500 }, -- heavily rusted legs - { id = 3335, chance = 2500 } -- twin axe + { id = 3335, chance = 2500 }, -- twin axe } monster.attacks = { @@ -98,13 +98,13 @@ monster.attacks = { { name = "drunk", interval = 3000, chance = 11, radius = 6, effect = CONST_ME_POISONAREA, target = false, duration = 25000 }, { name = "speed", interval = 1000, chance = 25, speedChange = -350, length = 7, spread = 3, effect = CONST_ME_POISONAREA, target = false, duration = 30000 }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = -35, maxDamage = -35, radius = 5, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = -35, maxDamage = -35, radius = 5, target = false }, } monster.defenses = { defense = 30, armor = 25, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -117,14 +117,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ancient_tombs/mahrdis.lua b/data-otservbr-global/monster/quests/ancient_tombs/mahrdis.lua index 867e737d0cb..0d031e5f324 100644 --- a/data-otservbr-global/monster/quests/ancient_tombs/mahrdis.lua +++ b/data-otservbr-global/monster/quests/ancient_tombs/mahrdis.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3900 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 86, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -53,19 +53,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 4, summons = { - { name = "Fire Elemental", chance = 30, interval = 2000, count = 4 } - } + { name = "Fire Elemental", chance = 30, interval = 2000, count = 4 }, + }, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { { text = "The eternal flame demands its due!", yell = false }, { text = "This is why I'm hot.", yell = false }, { text = "May my flames engulf you!", yell = false }, - { text = "Burnnnnnnnnn!", yell = false } + { text = "Burnnnnnnnnn!", yell = false }, } monster.loot = { @@ -90,7 +90,7 @@ monster.loot = { { name = "burning heart", chance = 100000 }, { name = "fire axe", chance = 750 }, { name = "phoenix shield", chance = 300 }, - { name = "great health potion", chance = 1500 } + { name = "great health potion", chance = 1500 }, } monster.attacks = { @@ -101,13 +101,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -800, radius = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "firefield", interval = 1000, chance = 12, radius = 4, effect = CONST_ME_BLOCKHIT, target = false }, -- fire - { name = "condition", type = CONDITION_FIRE, interval = 2000, chance = 13, minDamage = -50, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false } + { name = "condition", type = CONDITION_FIRE, interval = 2000, chance = 13, minDamage = -50, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, } monster.defenses = { defense = 30, armor = 20, - { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 20, maxDamage = 800, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 20, maxDamage = 800, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -120,14 +120,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -25 }, { type = COMBAT_HOLYDAMAGE, percent = -22 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ancient_tombs/morguthis.lua b/data-otservbr-global/monster/quests/ancient_tombs/morguthis.lua index f38d99dba19..9f620a90d90 100644 --- a/data-otservbr-global/monster/quests/ancient_tombs/morguthis.lua +++ b/data-otservbr-global/monster/quests/ancient_tombs/morguthis.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4800 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 84, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -53,19 +53,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 3, summons = { - { name = "Hero", chance = 100, interval = 2000, count = 3 } - } + { name = "Hero", chance = 100, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { { text = "Come and fight me, cowards!", yell = false }, { text = "I am the supreme warrior!", yell = false }, { text = "Let me hear the music of battle.", yell = false }, - { text = "Another one to bite the dust!", yell = false } + { text = "Another one to bite the dust!", yell = false }, } monster.loot = { @@ -90,7 +90,7 @@ monster.loot = { { name = "ravager's axe", chance = 300 }, { name = "steel boots", chance = 500 }, { name = "assassin star", chance = 500, maxCount = 3 }, - { name = "great health potion", chance = 1500 } + { name = "great health potion", chance = 1500 }, } monster.attacks = { @@ -98,7 +98,7 @@ monster.attacks = { { name = "combat", interval = 3000, chance = 7, type = COMBAT_LIFEDRAIN, minDamage = -55, maxDamage = -550, range = 1, target = false }, { name = "speed", interval = 1000, chance = 25, speedChange = -650, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 50000 }, { name = "combat", interval = 1000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -40, maxDamage = -400, radius = 3, effect = CONST_ME_HITAREA, target = false }, - { name = "combat", interval = 3000, chance = 7, type = COMBAT_PHYSICALDAMAGE, minDamage = -50, maxDamage = -500, radius = 3, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 3000, chance = 7, type = COMBAT_PHYSICALDAMAGE, minDamage = -50, maxDamage = -500, radius = 3, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.defenses = { armor = 35, { name = "combat", interval = 1000, chance = 13, type = COMBAT_HEALING, minDamage = 200, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 1000, chance = 7, speedChange = 1201, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -119,14 +119,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 62 }, { type = COMBAT_HOLYDAMAGE, percent = -22 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ancient_tombs/omruc.lua b/data-otservbr-global/monster/quests/ancient_tombs/omruc.lua index 4ea6d5aabf4..fa1d43f31fb 100644 --- a/data-otservbr-global/monster/quests/ancient_tombs/omruc.lua +++ b/data-otservbr-global/monster/quests/ancient_tombs/omruc.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4300 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 90, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -53,19 +53,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 4, summons = { - { name = "Stalker", chance = 100, interval = 2000, count = 4 } - } + { name = "Stalker", chance = 100, interval = 2000, count = 4 }, + }, } monster.voices = { @@ -75,7 +75,7 @@ monster.voices = { { text = "Chhhhou are marked ashhh my prey.", yell = false }, { text = "Catchhhh me if chhhou can.", yell = false }, { text = "Die!", yell = false }, - { text = "Psssst, I am over chhhere.", yell = false } + { text = "Psssst, I am over chhhere.", yell = false }, } monster.loot = { @@ -91,7 +91,7 @@ monster.loot = { { id = 3449, chance = 10000, maxCount = 15 }, -- burst arrow { name = "power bolt", chance = 10000, maxCount = 3 }, { name = "onyx arrow", chance = 10000, maxCount = 2 }, - { name = "great health potion", chance = 7000 } + { name = "great health potion", chance = 7000 }, } monster.attacks = { @@ -100,14 +100,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -500, shootEffect = CONST_ANI_POISONARROW, target = false }, { name = "combat", interval = 1000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -120, maxDamage = -450, range = 3, shootEffect = CONST_ANI_BURSTARROW, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "melee", interval = 3000, chance = 20, minDamage = -150, maxDamage = -500 }, - { name = "speed", interval = 1000, chance = 25, speedChange = -900, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 50000 } + { name = "speed", interval = 1000, chance = 25, speedChange = -900, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 50000 }, } monster.defenses = { defense = 35, armor = 20, { name = "combat", interval = 1000, chance = 17, type = COMBAT_HEALING, minDamage = 100, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 14, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 14, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -120,14 +120,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ancient_tombs/rahemos.lua b/data-otservbr-global/monster/quests/ancient_tombs/rahemos.lua index 7c396c09b14..c97509104b1 100644 --- a/data-otservbr-global/monster/quests/ancient_tombs/rahemos.lua +++ b/data-otservbr-global/monster/quests/ancient_tombs/rahemos.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3700 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 88, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -53,19 +53,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 1, summons = { - { name = "Demon", chance = 12, interval = 1000, count = 1 } - } + { name = "Demon", chance = 12, interval = 1000, count = 1 }, + }, } monster.voices = { @@ -76,7 +76,7 @@ monster.voices = { { text = "Nothing hidden in my wrappings.", yell = false }, { text = "It's not a trick, it's Rahemos.", yell = false }, { text = "Meet my friend from hell!", yell = false }, - { text = "I will make you believe in magic.", yell = false } + { text = "I will make you believe in magic.", yell = false }, } monster.loot = { @@ -91,7 +91,7 @@ monster.loot = { { name = "ancient rune", chance = 100000 }, { name = "twin axe", chance = 200 }, { name = "magician hat", chance = 300 }, - { name = "great mana potion", chance = 7000 } + { name = "great mana potion", chance = 7000 }, } monster.attacks = { @@ -101,14 +101,14 @@ monster.attacks = { { name = "combat", interval = 3000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -60, maxDamage = -600, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "speed", interval = 1000, chance = 12, speedChange = -650, radius = 6, effect = CONST_ME_POISONAREA, target = false, duration = 60000 }, { name = "drunk", interval = 1000, chance = 8, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "outfit", interval = 1000, chance = 15, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 12000, outfitMonster = "pig" } + { name = "outfit", interval = 1000, chance = 15, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 12000, outfitMonster = "pig" }, } monster.defenses = { defense = 35, armor = 30, { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "outfit", interval = 1000, chance = 5, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "demon" } + { name = "outfit", interval = 1000, chance = 5, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "demon" }, } monster.elements = { @@ -121,14 +121,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = -25 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ancient_tombs/shredderthrower.lua b/data-otservbr-global/monster/quests/ancient_tombs/shredderthrower.lua index f0323192960..72372030b54 100644 --- a/data-otservbr-global/monster/quests/ancient_tombs/shredderthrower.lua +++ b/data-otservbr-global/monster/quests/ancient_tombs/shredderthrower.lua @@ -4,10 +4,9 @@ local monster = {} monster.description = "a shredderthrower" monster.experience = 18 monster.outfit = { - lookTypeEx = 2190 + lookTypeEx = 2190, } - monster.health = 100 monster.maxHealth = 100 monster.race = "undead" @@ -17,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -54,11 +53,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -110, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false } + { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -110, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, } monster.defenses = { @@ -84,7 +82,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ancient_tombs/thalas.lua b/data-otservbr-global/monster/quests/ancient_tombs/thalas.lua index 75e225bded2..d6ad2f68864 100644 --- a/data-otservbr-global/monster/quests/ancient_tombs/thalas.lua +++ b/data-otservbr-global/monster/quests/ancient_tombs/thalas.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4100 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 89, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -53,25 +53,25 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 8, summons = { - { name = "Slime", chance = 100, interval = 2000, count = 8 } - } + { name = "Slime", chance = 100, interval = 2000, count = 8 }, + }, } monster.voices = { interval = 5000, chance = 10, - { text = "You will become a feast for my maggots!", yell = false } + { text = "You will become a feast for my maggots!", yell = false }, } monster.loot = { @@ -85,7 +85,7 @@ monster.loot = { { name = "serpent sword", chance = 500 }, { name = "poison dagger", chance = 7000 }, { name = "djinn blade", chance = 200 }, - { name = "great health potion", chance = 1500 } + { name = "great health potion", chance = 1500 }, } monster.attacks = { @@ -95,13 +95,13 @@ monster.attacks = { { name = "speed", interval = 1000, chance = 6, speedChange = -800, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, -- poison { name = "condition", type = CONDITION_POISON, interval = 1000, chance = 15, minDamage = -34, maxDamage = -35, radius = 5, effect = CONST_ME_POISONAREA, target = false }, - { name = "combat", interval = 3000, chance = 17, type = COMBAT_EARTHDAMAGE, minDamage = -55, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 3000, chance = 17, type = COMBAT_EARTHDAMAGE, minDamage = -55, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 30, armor = 20, - { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 150, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 150, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -114,14 +114,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ancient_tombs/vashresamun.lua b/data-otservbr-global/monster/quests/ancient_tombs/vashresamun.lua index 2401c653f41..c421c620f5f 100644 --- a/data-otservbr-global/monster/quests/ancient_tombs/vashresamun.lua +++ b/data-otservbr-global/monster/quests/ancient_tombs/vashresamun.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 85, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -53,19 +53,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 2, summons = { - { name = "Banshee", chance = 20, interval = 2000, count = 2 } - } + { name = "Banshee", chance = 20, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -75,7 +75,7 @@ monster.voices = { { text = "Are you enjoying my music?", yell = false }, { text = "If music is the food of death, drop dead.", yell = false }, { text = "Chakka Chakka!", yell = false }, - { text = "Heheheheee!", yell = false } + { text = "Heheheheee!", yell = false }, } monster.loot = { @@ -89,19 +89,19 @@ monster.loot = { { name = "gold coin", chance = 50000, maxCount = 65 }, { name = "blue note", chance = 100000 }, { name = "crystal mace", chance = 500 }, - { name = "blue robe", chance = 2500 } + { name = "blue robe", chance = 2500 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200, condition = { type = CONDITION_POISON, totalDamage = 65, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -750, radius = 5, effect = CONST_ME_SOUND_PURPLE, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -750, radius = 5, effect = CONST_ME_SOUND_PURPLE, target = false }, } monster.defenses = { defense = 35, armor = 20, { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 60, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 12, speedChange = 350, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 30000 } + { name = "speed", interval = 1000, chance = 12, speedChange = 350, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 30000 }, } monster.elements = { @@ -114,14 +114,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/annihilator/angry_demon.lua b/data-otservbr-global/monster/quests/annihilator/angry_demon.lua index 456f86fc292..84200b6232b 100644 --- a/data-otservbr-global/monster/quests/annihilator/angry_demon.lua +++ b/data-otservbr-global/monster/quests/annihilator/angry_demon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 60000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -57,8 +57,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "massive fire elemental", chance = 25, interval = 2000, count = 1 } - } + { name = "massive fire elemental", chance = 25, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -104,7 +104,7 @@ monster.loot = { { id = 7393, chance = 90 }, -- demon trophy { name = "great mana potion", chance = 22220, maxCount = 3 }, { name = "ultimate health potion", chance = 19540, maxCount = 3 }, - { name = "great spirit potion", chance = 18510, maxCount = 3 } + { name = "great spirit potion", chance = 18510, maxCount = 3 }, } monster.attacks = { @@ -121,7 +121,7 @@ monster.attacks = { { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -800, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -1050, maxDamage = -1500, range = 1, shootEffect = CONST_ANI_ENERGY, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } monster.defenses = { @@ -129,7 +129,7 @@ monster.defenses = { armor = 40, mitigation = 1.74, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 900, maxDamage = 1250, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -149,7 +149,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/bigfoots_burden/bosses/abyssador.lua b/data-otservbr-global/monster/quests/bigfoots_burden/bosses/abyssador.lua index 15ec28d66d7..c1609ca23e6 100644 --- a/data-otservbr-global/monster/quests/bigfoots_burden/bosses/abyssador.lua +++ b/data-otservbr-global/monster/quests/bigfoots_burden/bosses/abyssador.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,7 +83,7 @@ monster.loot = { { id = 16160, chance = 6666 }, -- crystalline sword { id = 16164, chance = 6263 }, -- mycological bow { id = 16155, chance = 2754 }, -- decorative ribbon - { id = 16162, chance = 2754 } -- mycological mace + { id = 16162, chance = 2754 }, -- mycological mace } monster.attacks = { @@ -91,7 +91,7 @@ monster.attacks = { -- energy damage { name = "condition", type = CONDITION_ENERGY, interval = 1000, chance = 10, minDamage = -800, maxDamage = -800, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_SMALLPLANTS, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -1600, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "abyssador poison wave", interval = 1000, chance = 20, minDamage = -1000, maxDamage = -1800, target = false } + { name = "abyssador poison wave", interval = 1000, chance = 20, minDamage = -1000, maxDamage = -1800, target = false }, } monster.defenses = { @@ -100,7 +100,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 1000, chance = 1, type = COMBAT_HEALING, minDamage = 0, maxDamage = 300000, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 5000, chance = 30, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 25, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 25, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/bigfoots_burden/bosses/deathstrike.lua b/data-otservbr-global/monster/quests/bigfoots_burden/bosses/deathstrike.lua index b37b947ec95..0233fa748a9 100644 --- a/data-otservbr-global/monster/quests/bigfoots_burden/bosses/deathstrike.lua +++ b/data-otservbr-global/monster/quests/bigfoots_burden/bosses/deathstrike.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -80,21 +80,21 @@ monster.loot = { { id = 16136, chance = 100000 }, -- deathstrike's snippet { id = 16163, chance = 12380 }, -- crystal crossbow { id = 16161, chance = 7430 }, -- crystalline axe - { id = 16164, chance = 11430 } -- mycological bow + { id = 16164, chance = 11430 }, -- mycological bow } monster.attacks = { { name = "melee", interval = 1300, chance = 100, skill = 80, attack = 120 }, { name = "speed", interval = 2000, chance = 20, speedChange = -400, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, target = false, duration = 2500 }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_FIREDAMAGE, minDamage = -820, maxDamage = -950, range = 7, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -800, range = 3, effect = CONST_ME_PURPLEENERGY, target = true } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -800, range = 3, effect = CONST_ME_PURPLEENERGY, target = true }, } monster.defenses = { defense = 35, armor = 25, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 5500, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 5500, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/bigfoots_burden/bosses/gnomevil.lua b/data-otservbr-global/monster/quests/bigfoots_burden/bosses/gnomevil.lua index 5799ba715f1..35eeaf2a9c2 100644 --- a/data-otservbr-global/monster/quests/bigfoots_burden/bosses/gnomevil.lua +++ b/data-otservbr-global/monster/quests/bigfoots_burden/bosses/gnomevil.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -80,7 +80,7 @@ monster.loot = { { id = 16164, chance = 8400 }, -- mycological bow { id = 16162, chance = 7120 }, -- mycological mace { id = 16160, chance = 14100 }, -- crystalline sword - { id = 16155, chance = 3710 } -- decorative ribbon + { id = 16155, chance = 3710 }, -- decorative ribbon } monster.attacks = { @@ -88,14 +88,14 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 20, speedChange = -400, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, target = false, duration = 2500 }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_FIREDAMAGE, minDamage = -820, maxDamage = -950, range = 7, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_MANADRAIN, minDamage = -230, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -800, range = 3, effect = CONST_ME_PURPLEENERGY, target = true } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -800, range = 3, effect = CONST_ME_PURPLEENERGY, target = true }, } monster.defenses = { defense = 35, armor = 25, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 4000, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 4000, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/bigfoots_burden/humorless_fungus.lua b/data-otservbr-global/monster/quests/bigfoots_burden/humorless_fungus.lua index 48224060d8f..19ab3230231 100644 --- a/data-otservbr-global/monster/quests/bigfoots_burden/humorless_fungus.lua +++ b/data-otservbr-global/monster/quests/bigfoots_burden/humorless_fungus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -64,8 +64,7 @@ monster.voices = { { text = "Chatter", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -475 }, @@ -73,7 +72,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -525, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_ICEAREA, target = true }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -400, maxDamage = -640, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "drunk", interval = 2000, chance = 10, range = 7, radius = 4, effect = CONST_ME_STUN, target = true, duration = 4000 } + { name = "drunk", interval = 2000, chance = 10, range = 7, radius = 4, effect = CONST_ME_STUN, target = true, duration = 4000 }, } monster.defenses = { @@ -81,7 +80,7 @@ monster.defenses = { armor = 0, -- mitigation = ???, { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 0, maxDamage = 230, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/bigfoots_burden/minion_of_versperoth.lua b/data-otservbr-global/monster/quests/bigfoots_burden/minion_of_versperoth.lua index 06ac8abcede..380939429e9 100644 --- a/data-otservbr-global/monster/quests/bigfoots_burden/minion_of_versperoth.lua +++ b/data-otservbr-global/monster/quests/bigfoots_burden/minion_of_versperoth.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 9000 monster.maxHealth = 9000 monster.race = "fire" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -62,8 +61,7 @@ monster.voices = { { text = "Grrrrunt", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -390 }, @@ -72,7 +70,7 @@ monster.attacks = { { name = "lava golem soulfire", interval = 2000, chance = 15, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -220, maxDamage = -350, radius = 4, effect = CONST_ME_FIREAREA, target = true }, { name = "speed", interval = 2000, chance = 10, speedChange = -300, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 10000 }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -280, maxDamage = -350, radius = 3, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -280, maxDamage = -350, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { @@ -98,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/bigfoots_burden/strange_slime.lua b/data-otservbr-global/monster/quests/bigfoots_burden/strange_slime.lua index defb7e0f04a..5d0f9905736 100644 --- a/data-otservbr-global/monster/quests/bigfoots_burden/strange_slime.lua +++ b/data-otservbr-global/monster/quests/bigfoots_burden/strange_slime.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 15 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 0, @@ -88,7 +87,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/bigfoots_burden/versperoth.lua b/data-otservbr-global/monster/quests/bigfoots_burden/versperoth.lua index 2591211b3a0..d8e260236fd 100644 --- a/data-otservbr-global/monster/quests/bigfoots_burden/versperoth.lua +++ b/data-otservbr-global/monster/quests/bigfoots_burden/versperoth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 100000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -65,13 +65,12 @@ monster.voices = { { text = "Waaaah!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 1200, chance = 100, skill = 120, attack = 115 }, { name = "combat", interval = 1000, chance = 40, type = COMBAT_FIREDAMAGE, minDamage = -700, maxDamage = -1615, range = 5, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, - { name = "melee", interval = 1000, chance = 25, minDamage = -750, maxDamage = -950 } + { name = "melee", interval = 1000, chance = 25, minDamage = -750, maxDamage = -950 }, } monster.defenses = { @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/animated_clomp.lua b/data-otservbr-global/monster/quests/cults_of_tibia/animated_clomp.lua index 697e611f7f5..d8b8478384a 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/animated_clomp.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/animated_clomp.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 900 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -68,18 +68,18 @@ monster.loot = { { id = 5925, chance = 1200, maxCount = 2 }, -- hardened bone { id = 10307, chance = 900 }, -- thick fur { id = 3443, chance = 400 }, -- tusk shield - { id = 7432, chance = 200 } -- furry club + { id = 7432, chance = 200 }, -- furry club } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 40, maxDamage = -289, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 40, maxDamage = -289, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, } monster.defenses = { defense = 20, armor = 20, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -99,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/animated_cyclops.lua b/data-otservbr-global/monster/quests/cults_of_tibia/animated_cyclops.lua index d0ee66b18c2..cc640c8d0b7 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/animated_cyclops.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/animated_cyclops.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 260 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -75,11 +75,11 @@ monster.loot = { { id = 7398, chance = 80 }, -- cyclops trophy { name = "health potion", chance = 210 }, { name = "cyclops toe", chance = 4930 }, - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -105 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -105 }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/animated_guzzlemaw.lua b/data-otservbr-global/monster/quests/cults_of_tibia/animated_guzzlemaw.lua index 13707a34e56..66088ce9f07 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/animated_guzzlemaw.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/animated_guzzlemaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6400 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { id = 16279, chance = 12000 }, -- crystal rubbish { name = "cluster of solace", chance = 4920 }, { name = "frazzle tongue", chance = 15000 }, - { name = "frazzle skin", chance = 14000 } + { name = "frazzle skin", chance = 14000 }, } monster.attacks = { @@ -100,14 +100,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -900, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -800, radius = 6, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 50, armor = 50, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/animated_moohtant.lua b/data-otservbr-global/monster/quests/cults_of_tibia/animated_moohtant.lua index 87c45b767c6..6823e0afed9 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/animated_moohtant.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/animated_moohtant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 3 + chance = 3, } monster.strategiesTarget = { @@ -80,7 +80,7 @@ monster.loot = { { id = 7452, chance = 430 }, -- spiked squelcher { id = 7427, chance = 280 }, -- chaos mace { id = 9058, chance = 280 }, -- gold ingot - { id = 7401, chance = 280 } -- minotaur trophy + { id = 7401, chance = 280 }, -- minotaur trophy } monster.attacks = { @@ -88,14 +88,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 13, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -230, length = 3, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 19, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -225, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -235, range = 7, radius = 4, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -235, range = 7, radius = 4, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { defense = 45, armor = 40, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/animated_mummy.lua b/data-otservbr-global/monster/quests/cults_of_tibia/animated_mummy.lua index 793c3d7077e..780d3ce31ba 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/animated_mummy.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/animated_mummy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 240 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -76,13 +76,13 @@ monster.loot = { { name = "yellow piece of cloth", chance = 900 }, { name = "gauze bandage", chance = 10000 }, { name = "mini mummy", chance = 10 }, - { name = "flask of embalming fluid", chance = 11690 } + { name = "flask of embalming fluid", chance = 11690 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -85, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -40, range = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -226, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 10000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -226, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 10000 }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/animated_ogre_brute.lua b/data-otservbr-global/monster/quests/cults_of_tibia/animated_ogre_brute.lua index 90e61d72eaa..f91e51a5793 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/animated_ogre_brute.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/animated_ogre_brute.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -81,20 +81,20 @@ monster.loot = { { id = 22171, chance = 800 }, -- ogre klubba { id = 3465, chance = 500 }, -- pot { id = 8906, chance = 200 }, -- heavily rusted helmet - { id = 22192, chance = 300 } -- shamanic mask + { id = 22192, chance = 300 }, -- shamanic mask } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false }, - { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_TELEPORT, target = false } + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_TELEPORT, target = false }, } monster.defenses = { defense = 20, armor = 20, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/animated_ogre_savage.lua b/data-otservbr-global/monster/quests/cults_of_tibia/animated_ogre_savage.lua index d5d1f69bdde..1c7ae39724a 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/animated_ogre_savage.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/animated_ogre_savage.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1400 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -78,19 +78,19 @@ monster.loot = { { id = 22191, chance = 1200 }, -- skull fetish { id = 236, chance = 2200, maxCount = 3 }, -- strong health potion { id = 3279, chance = 600 }, -- war hammer - { id = 22192, chance = 300 } -- shamanic mask + { id = 22192, chance = 300 }, -- shamanic mask } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { defense = 20, armor = 20, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -110,7 +110,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/animated_ogre_shaman.lua b/data-otservbr-global/monster/quests/cults_of_tibia/animated_ogre_shaman.lua index 5198cefd4bc..5b233a01aa3 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/animated_ogre_shaman.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/animated_ogre_shaman.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -61,8 +61,8 @@ monster.summon = { maxSummons = 2, summons = { { name = "Dworc Fleshhunter", chance = 30, interval = 1000, count = 1 }, - { name = "Terror Bird", chance = 30, interval = 1000, count = 1 } - } + { name = "Terror Bird", chance = 30, interval = 1000, count = 1 }, + }, } monster.voices = { @@ -91,21 +91,21 @@ monster.loot = { { id = 22183, chance = 300 }, -- ogre scepta { id = 22192, chance = 300 }, -- shamanic mask { id = 3002, chance = 100 }, -- voodoo doll - { id = 2965, chance = 100, maxCount = 2 } -- didgeridoo + { id = 2965, chance = 100, maxCount = 2 }, -- didgeridoo } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false }, { name = "outfit", interval = 2000, chance = 8, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "chicken" }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -15, maxDamage = -120, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -15, maxDamage = -120, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, } monster.defenses = { defense = 20, armor = 20, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/animated_rhino.lua b/data-otservbr-global/monster/quests/cults_of_tibia/animated_rhino.lua index 3731773f3d1..b55c48f5fc9 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/animated_rhino.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/animated_rhino.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3000 @@ -22,7 +22,7 @@ monster.manaCost = 290 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,36 +49,36 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Snarl!", yell = false }, - { text = "SNIFF!", yell = false } + { text = "SNIFF!", yell = false }, } monster.loot = { { id = 5925, chance = 50320 }, -- hardened bone { id = 24388, chance = 50320 }, -- rhino hide { id = 24389, chance = 50320 }, -- rhino horn - { id = 22186, chance = 50320 } -- raw meat + { id = 22186, chance = 50320 }, -- raw meat } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 10 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = 500, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = 500, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, } monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -91,14 +91,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 1 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/animated_rotworm.lua b/data-otservbr-global/monster/quests/cults_of_tibia/animated_rotworm.lua index c7d3df38514..69c415083e9 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/animated_rotworm.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/animated_rotworm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 65 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -69,11 +69,11 @@ monster.loot = { { name = "meat", chance = 20000 }, { name = "ham", chance = 20120 }, { name = "worm", chance = 3000, maxCount = 3 }, - { name = "lump of dirt", chance = 10000 } + { name = "lump of dirt", chance = 10000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, } monster.defenses = { @@ -99,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/animated_skunk.lua b/data-otservbr-global/monster/quests/cults_of_tibia/animated_skunk.lua index 342307bac2d..36ca4db9074 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/animated_skunk.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/animated_skunk.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -64,12 +64,12 @@ monster.voices = { monster.loot = { { name = "bulb of garlic", chance = 4910 }, - { name = "skunk tail", chance = 920 } + { name = "skunk tail", chance = 920 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -1, maxDamage = -3, range = 1, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -1, maxDamage = -3, range = 1, target = true }, } monster.defenses = { @@ -95,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/animated_stone_golem.lua b/data-otservbr-global/monster/quests/cults_of_tibia/animated_stone_golem.lua index fe14cbbf0a4..7f4e42cf28e 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/animated_stone_golem.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/animated_stone_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 270 @@ -22,7 +22,7 @@ monster.manaCost = 590 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -74,16 +74,16 @@ monster.loot = { { name = "shiny stone", chance = 760 }, { name = "sulphurous stone", chance = 10370 }, { name = "piece of marble rock", chance = 380 }, - { id = 12600, chance = 550 } -- coal + { id = 12600, chance = 550 }, -- coal } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, } monster.defenses = { defense = 20, - armor = 20 + armor = 20, } monster.elements = { @@ -96,14 +96,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 20 } + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/barkless_devotee.lua b/data-otservbr-global/monster/quests/cults_of_tibia/barkless_devotee.lua index b7c4c5e078c..bec46e90553 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/barkless_devotee.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/barkless_devotee.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1486 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Barkless Cult Trial Zone (below Ab'Dendriel)." + Locations = "Barkless Cult Trial Zone (below Ab'Dendriel).", } monster.health = 2800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -75,20 +75,20 @@ monster.voices = { chance = 10, { text = "Prepare yourself!", yell = false }, { text = "You are not loved by this world!", yell = false }, - { text = "Pain and suffering!", yell = false } + { text = "Pain and suffering!", yell = false }, } monster.loot = { { id = 3031, chance = 48000, maxCount = 199 }, -- gold coin { id = 25743, chance = 1540 }, -- bed of nails { id = 25742, chance = 4050 }, -- fig leaf - { id = 25744, chance = 970 } -- torn shirt + { id = 25744, chance = 970 }, -- torn shirt } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -420, range = 7, radius = 4, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_GREEN_RINGS, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -150, radius = 6, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -150, radius = 6, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/barkless_fanatic.lua b/data-otservbr-global/monster/quests/cults_of_tibia/barkless_fanatic.lua index a5ec56eb93e..ab9511f3eee 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/barkless_fanatic.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/barkless_fanatic.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1488 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Barkless Cult Trial Zone (below Ab'Dendriel)." + Locations = "Barkless Cult Trial Zone (below Ab'Dendriel).", } monster.health = 3200 @@ -35,7 +35,7 @@ monster.manaCost = 390 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -75,25 +75,25 @@ monster.voices = { chance = 10, { text = "DO NOT LEAVE THIS WORLD AS A WIMP!", yell = false }, { text = "PAIN PURIFIES! PAIN PURIFIES!", yell = false }, - { text = "PROVE YOUR WORTH, BLEED!", yell = false } + { text = "PROVE YOUR WORTH, BLEED!", yell = false }, } monster.loot = { { id = 3031, chance = 100000, maxCount = 199 }, -- gold coin { id = 25743, chance = 2310 }, -- bed of nails { id = 25742, chance = 12690 }, -- fig leaf - { id = 24961, chance = 6920 } -- tiger eye + { id = 24961, chance = 6920 }, -- tiger eye } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -230 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -220, maxDamage = -450, range = 7, radius = 4, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_GREEN_RINGS, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -150, radius = 6, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -150, radius = 6, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { defense = 35, - armor = 35 + armor = 35, } monster.elements = { @@ -106,14 +106,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 1 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 1 } + { type = COMBAT_DEATHDAMAGE, percent = 1 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/dorokoll_the_mystic.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/dorokoll_the_mystic.lua index bcf7f74d09a..018dc2c092e 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/dorokoll_the_mystic.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/dorokoll_the_mystic.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 58, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,12 +62,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -500, radius = 8, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -500, radius = 8, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/dorokoll_the_mystic_stop.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/dorokoll_the_mystic_stop.lua index c4a74c34f0a..c829ceabfea 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/dorokoll_the_mystic_stop.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/dorokoll_the_mystic_stop.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 58, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 15000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,17 +63,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -500, radius = 8, effect = CONST_ME_LOSEENERGY, target = false } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -500, radius = 8, effect = CONST_ME_LOSEENERGY, target = false }, } monster.defenses = { defense = 50, - armor = 35 + armor = 35, } monster.elements = { @@ -86,14 +85,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding.lua index 4fff2c652f4..bc6aa5b1741 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 38, lookFeet = 0, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,18 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, } monster.defenses = { defense = 50, armor = 35, -- mitigation = ???, - { name = "cults of tibia armor buff", interval = 2000, chance = 40, radius = 8, target = false } + { name = "cults of tibia armor buff", interval = 2000, chance = 40, radius = 8, target = false }, } monster.elements = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding_stop.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding_stop.lua index ac325f99ea3..d740224c443 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding_stop.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding_stop.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 38, lookFeet = 0, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 15000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,17 +63,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, } monster.defenses = { defense = 50, armor = 35, - { name = "cults of tibia armor buff", interval = 2000, chance = 40, radius = 9, target = false } + { name = "cults of tibia armor buff", interval = 2000, chance = 40, radius = 9, target = false }, } monster.elements = { @@ -86,14 +85,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eshtaba_the_conjurer.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eshtaba_the_conjurer.lua index 20a4f1e6699..175b0df635e 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eshtaba_the_conjurer.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eshtaba_the_conjurer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 68, lookFeet = 68, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -64,8 +64,8 @@ monster.summon = { { name = "Dread Minion", chance = 30, interval = 2000, count = 1 }, { name = "Dread Minion", chance = 20, interval = 2000, count = 1 }, { name = "Dread Minion", chance = 30, interval = 2000, count = 1 }, - { name = "Dread Minion", chance = 20, interval = 2000, count = 1 } - } + { name = "Dread Minion", chance = 20, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -73,11 +73,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, } monster.defenses = { @@ -103,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eshtaba_the_conjurer_stop.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eshtaba_the_conjurer_stop.lua index 6f8a701c7b3..d5cb525473d 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eshtaba_the_conjurer_stop.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/eshtaba_the_conjurer_stop.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 68, lookFeet = 68, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 15000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { @@ -65,8 +65,8 @@ monster.summon = { { name = "Dread Minion", chance = 30, interval = 2000, count = 1 }, { name = "Dread Minion", chance = 20, interval = 2000, count = 1 }, { name = "Dread Minion", chance = 30, interval = 2000, count = 1 }, - { name = "Dread Minion", chance = 20, interval = 2000, count = 1 } - } + { name = "Dread Minion", chance = 20, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -74,16 +74,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, } monster.defenses = { defense = 50, - armor = 35 + armor = 35, } monster.elements = { @@ -96,14 +95,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/essence_of_malice.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/essence_of_malice.lua index 4b882acdc58..d415abf85bd 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/essence_of_malice.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/essence_of_malice.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { name = "energy bar", chance = 16872, maxCount = 3 }, { id = 23529, chance = 8762 }, -- ring of blue plasma { name = "ultimate health potion", chance = 27652, maxCount = 10 }, - { name = "blade of corruption", chance = 3775 } + { name = "blade of corruption", chance = 3775 }, } monster.attacks = { @@ -98,7 +98,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -230, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -110, maxDamage = -180, radius = 4, effect = CONST_ME_MORTAREA, target = false }, - { name = "speed", interval = 2000, chance = 20, speedChange = -800, range = 7, effect = CONST_ME_SMALLCLOUDS, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -800, range = 7, effect = CONST_ME_SMALLCLOUDS, target = true, duration = 30000 }, } monster.defenses = { @@ -124,11 +124,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -136,13 +135,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/last_planegazer.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/last_planegazer.lua index f271a79e8fe..d79835c34a5 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/last_planegazer.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/last_planegazer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 50000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -74,11 +74,11 @@ monster.loot = { { id = 11472, chance = 2000, maxCount = 2 }, -- minotaur horn { id = 5878, chance = 980 }, -- minotaur leather { id = 3457, chance = 310 }, -- shovel - { id = 3056, chance = 120 } -- bronze amulet + { id = 3056, chance = 120 }, -- bronze amulet } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, } monster.defenses = { @@ -104,7 +104,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/leiden.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/leiden.lua index aef2d159176..56a81f53881 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/leiden.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/leiden.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -53,7 +53,7 @@ monster.flags = { } monster.events = { - "LeidenHeal" + "LeidenHeal", } monster.light = { @@ -65,8 +65,8 @@ monster.summon = { maxSummons = 2, summons = { { name = "Barkless Fanatic", chance = 20, interval = 2000, count = 1 }, - { name = "Barkless Fanatic", chance = 30, interval = 2000, count = 1 } - } + { name = "Barkless Fanatic", chance = 30, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -75,11 +75,10 @@ monster.voices = { { text = "Bring me the pain! Make me suffer!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, } monster.defenses = { @@ -98,7 +97,7 @@ monster.reflects = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.elements = { @@ -118,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/malkhar_deathbringer.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/malkhar_deathbringer.lua index 7ff6c945f59..14013f130ec 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/malkhar_deathbringer.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/malkhar_deathbringer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 41, lookFeet = 57, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,12 +62,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, range = 8, radius = 8, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, range = 8, radius = 8, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/malkhar_deathbringer_stop.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/malkhar_deathbringer_stop.lua index 66fe9dda7a9..56052b16527 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/malkhar_deathbringer_stop.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/malkhar_deathbringer_stop.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 41, lookFeet = 57, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 15000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,17 +63,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, range = 6, radius = 8, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, range = 6, radius = 8, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { defense = 50, - armor = 35 + armor = 35, } monster.elements = { @@ -86,14 +85,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/mezlon_the_defiler.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/mezlon_the_defiler.lua index 756d24dc037..425ae3cc725 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/mezlon_the_defiler.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/mezlon_the_defiler.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 1, lookFeet = 60, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 30000 monster.maxHealth = 30000 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -63,18 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, } monster.defenses = { defense = 50, armor = 35, -- mitigation = ???, - { name = "heal monster 9x9", interval = 2000, chance = 40, effect = CONST_ME_MAGIC_RED, target = false } + { name = "heal monster 9x9", interval = 2000, chance = 40, effect = CONST_ME_MAGIC_RED, target = false }, } monster.elements = { @@ -94,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/mezlon_the_defiler_stop.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/mezlon_the_defiler_stop.lua index d160590adee..39579e86cd9 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/mezlon_the_defiler_stop.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/mezlon_the_defiler_stop.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 1, lookFeet = 60, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 15000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,17 +63,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, } monster.defenses = { defense = 50, armor = 35, - { name = "heal monster 9x9", interval = 2000, chance = 40, effect = CONST_ME_MAGIC_RED, target = false } + { name = "heal monster 9x9", interval = 2000, chance = 40, effect = CONST_ME_MAGIC_RED, target = false }, } monster.elements = { @@ -86,14 +85,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/containment_crystal.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/containment_crystal.lua index 9e1fc820a8d..050c5aba6fe 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/containment_crystal.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/containment_crystal.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a containment crystal" monster.experience = 0 monster.outfit = { - lookTypeEx = 7805 + lookTypeEx = 7805, } monster.health = 20000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -56,11 +56,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 2000, chance = 40, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -220, radius = 3, effect = CONST_ME_PURPLEENERGY, target = false } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -220, radius = 3, effect = CONST_ME_PURPLEENERGY, target = false }, } monster.defenses = { @@ -86,7 +85,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/destroyed_pillar.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/destroyed_pillar.lua index 8fcc00ddb20..51e6bcaa1d2 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/destroyed_pillar.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/destroyed_pillar.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a destroyed pillar" monster.experience = 0 monster.outfit = { - lookTypeEx = 7811 + lookTypeEx = 7811, } monster.health = 20000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -56,8 +56,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 35, @@ -82,7 +81,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_death.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_death.lua index 6a2032dc90f..9ef05c56c67 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_death.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_death.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a pillar of death" monster.experience = 0 monster.outfit = { - lookTypeEx = 11427 + lookTypeEx = 11427, } monster.health = 20000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -56,8 +56,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 50, @@ -82,7 +81,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_draining.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_draining.lua index 3675d80a28f..ec8fb38d78e 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_draining.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_draining.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a pillar of draining" monster.experience = 0 monster.outfit = { - lookTypeEx = 11427 + lookTypeEx = 11427, } monster.health = 20000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -56,9 +56,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} - +monster.loot = {} monster.defenses = { defense = 50, @@ -83,7 +81,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_healing.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_healing.lua index 3ae577ec7d2..fff5544ece4 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_healing.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_healing.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a pillar of healing" monster.experience = 0 monster.outfit = { - lookTypeEx = 11427 + lookTypeEx = 11427, } monster.health = 7300 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -56,9 +56,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} - +monster.loot = {} monster.defenses = { defense = 50, @@ -83,7 +81,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_protection.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_protection.lua index d38449ec843..d8d103b22f3 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_protection.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_protection.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a pillar of protection" monster.experience = 0 monster.outfit = { - lookTypeEx = 11427 + lookTypeEx = 11427, } monster.health = 20000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -56,8 +56,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 50, @@ -82,7 +81,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_summoning.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_summoning.lua index e3dccb2eb4f..a6e02db4fbc 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_summoning.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/pillars/pillar_of_summoning.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a pillar of summoning" monster.experience = 0 monster.outfit = { - lookTypeEx = 11427 + lookTypeEx = 11427, } monster.health = 20000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -56,8 +56,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 50, @@ -82,7 +81,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/ravenous_hunger.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/ravenous_hunger.lua index f5860aad11d..3fe9619d79e 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/ravenous_hunger.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/ravenous_hunger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -59,7 +59,7 @@ monster.flags = { } monster.events = { - "LeidenHeal" + "LeidenHeal", } monster.light = { @@ -73,14 +73,14 @@ monster.summon = { { name = "Mutated Bat", chance = 100, interval = 2000, count = 1 }, { name = "Mutated Bat", chance = 100, interval = 2000, count = 1 }, { name = "Mutated Bat", chance = 100, interval = 2000, count = 1 }, - { name = "Mutated Bat", chance = 100, interval = 2000, count = 1 } - } + { name = "Mutated Bat", chance = 100, interval = 2000, count = 1 }, + }, } monster.voices = { interval = 5000, chance = 10, - { text = "SU-*burp* SUFFEEER!", yell = false } + { text = "SU-*burp* SUFFEEER!", yell = false }, } monster.loot = { @@ -113,11 +113,11 @@ monster.loot = { { name = "mysterious remains", chance = 100000 }, { name = "cobra crown", chance = 400 }, { name = "silver token", chance = 2500 }, - { name = "elven mail", chance = 3000 } + { name = "elven mail", chance = 3000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -900 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -900 }, } monster.defenses = { @@ -143,11 +143,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -155,13 +154,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/dark_soul.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/dark_soul.lua index 92bd268916b..9c22d63b2f5 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/dark_soul.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/dark_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,11 +62,9 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 15, @@ -74,7 +72,7 @@ monster.defenses = { -- mitigation = ???, { name = "speed", interval = 2000, chance = 8, speedChange = 240, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 20000 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -94,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/dread_minion.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/dread_minion.lua index e8c6fe2a50f..5f831e815e7 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/dread_minion.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/dread_minion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 20000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,20 +62,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 30, attack = 50 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -400, range = 6, radius = 4, effect = CONST_ME_LOSEENERGY, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -220, range = 6, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -220, range = 6, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true }, } monster.defenses = { defense = 25, armor = 25, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/enraged_sand_brood.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/enraged_sand_brood.lua index f08746bf64f..1bb8e7fe6dd 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/enraged_sand_brood.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/enraged_sand_brood.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2600 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,11 +62,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } }, } monster.defenses = { @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/freed_soul.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/freed_soul.lua index 0c4568cb33e..340fce23b4e 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/freed_soul.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/freed_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 50000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 100 + chance = 100, } monster.strategiesTarget = { @@ -66,11 +66,10 @@ monster.voices = { { text = "Now the despoiler will pay!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "freed soul spell", interval = 2000, chance = 100, target = false } + { name = "freed soul spell", interval = 2000, chance = 100, target = false }, } monster.defenses = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/liquor_spirit.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/liquor_spirit.lua index bc2871a6bb4..c5d603cc688 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/liquor_spirit.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/liquor_spirit.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 7000 @@ -21,12 +21,12 @@ monster.speed = 125 monster.manaCost = 0 monster.events = { - "Evaporate" + "Evaporate", } monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -57,11 +57,11 @@ monster.flags = { } monster.events = { - "Evaporate" + "Evaporate", } monster.events = { - "Evaporate" + "Evaporate", } monster.light = { @@ -74,11 +74,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, } monster.defenses = { @@ -104,7 +103,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/sand_brood.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/sand_brood.lua index 48519c49cbf..1c69af86744 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/sand_brood.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/sand_brood.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2100 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,11 +62,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } }, } monster.defenses = { @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/sand_vortex.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/sand_vortex.lua index 39d19cb4b24..9d361da23f4 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/sand_vortex.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/sand_vortex.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a sand vortex" monster.experience = 0 monster.outfit = { - lookTypeEx = 23482 + lookTypeEx = 23482, } monster.health = 20000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -43,12 +43,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = true, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -56,19 +56,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, radius = 4, effect = CONST_ME_POFF, target = false }, { name = "speed", interval = 2000, chance = 20, speedChange = -650, radius = 4, effect = CONST_ME_POFF, target = false, duration = 5000 }, - { name = "drunk", interval = 2000, chance = 10, range = 1, target = true, duration = 5000 } + { name = "drunk", interval = 2000, chance = 10, range = 1, target = true, duration = 5000 }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, } monster.reflects = { @@ -81,7 +80,7 @@ monster.reflects = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.elements = { @@ -94,14 +93,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/security_golem.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/security_golem.lua index 6a07bba4842..479825ffe83 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/security_golem.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/security_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,13 +62,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -440, length = 6, spread = 4, effect = CONST_ME_PURPLEENERGY, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -320, length = 7, spread = 8, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -320, length = 7, spread = 8, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/soul_reaper.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/soul_reaper.lua index b23eaaa21fc..266aa257c3c 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/soul_reaper.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/soul_reaper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,14 +62,13 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, range = 6, shootEffect = CONST_ANI_FLASHARROW, effect = CONST_ME_STUN, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -350, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "breach brood reducer", interval = 2000, chance = 20, target = false } + { name = "breach brood reducer", interval = 2000, chance = 20, target = false }, } monster.defenses = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/sphere_of_wrath.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/sphere_of_wrath.lua index 59698fb18b7..ed2feaab69d 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/sphere_of_wrath.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/sphere_of_wrath.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,12 +62,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, radius = 4, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/stolen_soul.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/stolen_soul.lua index 6c71412eb2c..c3f437ea37f 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/stolen_soul.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/stolen_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 100 + chance = 100, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 50, @@ -88,7 +87,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/vermin_swarm.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/vermin_swarm.lua index 5a539eca1db..cfb29fb7bb1 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/vermin_swarm.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/vermin_swarm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,17 +62,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250, condition = { type = CONDITION_POISON, totalDamage = 16, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -400, range = 4, radius = 5, effect = CONST_ME_SMALLCLOUDS, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -400, range = 4, radius = 5, effect = CONST_ME_SMALLCLOUDS, target = true }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, } monster.elements = { @@ -85,14 +84,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/voidshard.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/voidshard.lua index fa74c07a550..520c32b5613 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/voidshard.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/summons/voidshard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,15 +62,14 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -168, maxDamage = -400, range = 6, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true }, { name = "energy strike", interval = 2000, chance = 30, minDamage = -50, maxDamage = -180, range = 1, target = false }, -- energy damage - { name = "condition", type = CONDITION_ENERGY, interval = 1000, chance = 15, radius = 3, effect = CONST_ME_YELLOWENERGY, target = false } + { name = "condition", type = CONDITION_ENERGY, interval = 1000, chance = 15, radius = 3, effect = CONST_ME_YELLOWENERGY, target = false }, } monster.defenses = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_armored_voidborn.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_armored_voidborn.lua index ba14723695a..738581d2a33 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_armored_voidborn.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_armored_voidborn.lua @@ -10,16 +10,15 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { bossRaceId = 1406, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.CultsOfTibia.Orcs.BossTimer + storageCooldown = Storage.CultsOfTibia.Orcs.BossTimer, } - monster.health = 60000 monster.maxHealth = 60000 monster.race = "blood" @@ -29,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -70,13 +69,12 @@ monster.voices = { { text = "CHHRRR!", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -400, length = 7, spread = 5, effect = CONST_ME_SMALLCLOUDS, target = false }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -440, radius = 5, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -440, radius = 5, target = false }, } monster.defenses = { @@ -95,7 +93,7 @@ monster.reflects = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.elements = { @@ -115,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_corruptor_of_souls.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_corruptor_of_souls.lua index 274cc97dc6c..dfcc46ab6d7 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_corruptor_of_souls.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_corruptor_of_souls.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 5, lookFeet = 5, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 290000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -500 }, @@ -71,7 +70,7 @@ monster.attacks = { { name = "remorseless wave", interval = 2000, chance = 25, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 7, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 3, effect = CONST_ME_STUN, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_false_god.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_false_god.lua index 1b55cc21a05..edc51c5afbd 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_false_god.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_false_god.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 30 + chance = 30, } monster.strategiesTarget = { @@ -101,13 +101,13 @@ monster.loot = { { name = "ornate mace", chance = 7890 }, { name = "velvet mantle", chance = 1890 }, { name = "iron ore", chance = 14542 }, - { name = "giant sword", chance = 16892 } + { name = "giant sword", chance = 16892 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -500, range = 4, radius = 4, effect = CONST_ME_STONES, target = true }, - { name = "speed", interval = 2000, chance = 20, speedChange = -650, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -650, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.defenses = { @@ -133,11 +133,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -145,13 +144,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_remorseless_corruptor.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_remorseless_corruptor.lua index 1c3602ce6ff..ed10d546780 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_remorseless_corruptor.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_remorseless_corruptor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 3, lookFeet = 85, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 290000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -500 }, @@ -71,7 +70,7 @@ monster.attacks = { { name = "remorseless wave", interval = 2000, chance = 25, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 7, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 3, effect = CONST_ME_STUN, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sandking.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sandking.lua index 8ff26a5f67e..82794035583 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sandking.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sandking.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 30 + chance = 30, } monster.strategiesTarget = { @@ -106,13 +106,13 @@ monster.loot = { { id = 7642, chance = 4800 }, -- great spirit potion { id = 16161, chance = 7030 }, -- crystalline axe { id = 3341, chance = 200 }, -- arcane staff - { name = "heart of the mountain", chance = 400 } + { name = "heart of the mountain", chance = 400 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -500, range = 4, radius = 4, effect = CONST_ME_STONES, target = true }, - { name = "speed", interval = 2000, chance = 20, speedChange = -650, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -650, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.defenses = { @@ -138,11 +138,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -150,13 +149,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sandking_fake.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sandking_fake.lua index 230a544ea0c..7e70310cd20 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sandking_fake.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sandking_fake.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 50000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 30 + chance = 30, } monster.strategiesTarget = { @@ -50,32 +50,31 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "CREEEAK!", yell = false } + { text = "CREEEAK!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -500, range = 4, radius = 4, effect = CONST_ME_STONES, target = true }, - { name = "speed", interval = 2000, chance = 20, speedChange = -650, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -650, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, } monster.elements = { @@ -88,14 +87,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sinister_hermit_clean.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sinister_hermit_clean.lua index 26bf3d05102..2051cbc1c8a 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sinister_hermit_clean.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sinister_hermit_clean.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 79, lookFeet = 9, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -49,19 +49,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 4, summons = { - { name = "Vermin Swarm", chance = 100, interval = 20000, count = 4 } - } + { name = "Vermin Swarm", chance = 100, interval = 20000, count = 4 }, + }, } monster.voices = { @@ -69,19 +69,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -488, length = 7, spread = 8, effect = CONST_ME_SMALLPLANTS, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -488, length = 7, spread = 8, effect = CONST_ME_SMALLPLANTS, target = false }, } monster.defenses = { defense = 50, armor = 35, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 800, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "shock head skill reducer 2", interval = 2000, chance = 30, radius = 8, effect = CONST_ME_MAGIC_RED, target = false } + { name = "shock head skill reducer 2", interval = 2000, chance = 30, radius = 8, effect = CONST_ME_MAGIC_RED, target = false }, } monster.elements = { @@ -94,14 +93,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sinister_hermit_dirty.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sinister_hermit_dirty.lua index 86180ae4182..18babee3ba8 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sinister_hermit_dirty.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_sinister_hermit_dirty.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 79, lookFeet = 9, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -50,19 +50,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 4, summons = { - { name = "Vermin Swarm", chance = 100, interval = 20000, count = 4 } - } + { name = "Vermin Swarm", chance = 100, interval = 20000, count = 4 }, + }, } monster.voices = { @@ -70,19 +70,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -488, length = 7, spread = 8, effect = CONST_ME_SMALLPLANTS, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -488, length = 7, spread = 8, effect = CONST_ME_SMALLPLANTS, target = false }, } monster.defenses = { defense = 50, armor = 35, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 800, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "shock head skill reducer 2", interval = 2000, chance = 30, radius = 8, effect = CONST_ME_MAGIC_RED, target = false } + { name = "shock head skill reducer 2", interval = 2000, chance = 30, radius = 8, effect = CONST_ME_MAGIC_RED, target = false }, } monster.elements = { @@ -95,14 +94,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = true } + { type = "bleed", condition = true }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_souldespoiler.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_souldespoiler.lua index a6a8d1a5dab..abcf4d8fc27 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_souldespoiler.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_souldespoiler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 77, lookFeet = 81, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 6000, - chance = 30 + chance = 30, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 5, summons = { - { name = "Freed Soul", chance = 5, interval = 5000, count = 5 } - } + { name = "Freed Soul", chance = 5, interval = 5000, count = 5 }, + }, } monster.voices = { @@ -114,21 +114,21 @@ monster.loot = { { name = "spellbook of lost souls", chance = 7890 }, { name = "shield of corruption", chance = 150 }, { name = "plasma pearls", chance = 100000 }, - { name = "spiked squelcher", chance = 16892, maxCount = 2 } + { name = "spiked squelcher", chance = 16892, maxCount = 2 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -783 }, { name = "combat", interval = 2000, chance = 60, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -181, range = 7, radius = 3, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -538, length = 7, spread = 2, effect = CONST_ME_PURPLEENERGY, target = false }, - { name = "combat", interval = 3000, chance = 30, type = COMBAT_DROWNDAMAGE, minDamage = -125, maxDamage = -640, length = 9, spread = 3, effect = CONST_ME_LOSEENERGY, target = false } + { name = "combat", interval = 3000, chance = 30, type = COMBAT_DROWNDAMAGE, minDamage = -125, maxDamage = -640, length = 9, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, } monster.defenses = { defense = 40, armor = 40, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 100, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 7000, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 100, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 7000, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -148,11 +148,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -160,13 +159,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_source_of_corruption.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_source_of_corruption.lua index 1a22d5294d3..c4ba3312b23 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_source_of_corruption.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_source_of_corruption.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -68,12 +68,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1500 }, - { name = "source of corruption wave", interval = 2000, chance = 15, target = false } + { name = "source of corruption wave", interval = 2000, chance = 15, target = false }, } monster.defenses = { @@ -92,7 +91,7 @@ monster.reflects = { { type = COMBAT_DROWNDAMAGE, percent = 15 }, { type = COMBAT_ICEDAMAGE, percent = 15 }, { type = COMBAT_HOLYDAMAGE, percent = 15 }, - { type = COMBAT_DEATHDAMAGE, percent = 15 } + { type = COMBAT_DEATHDAMAGE, percent = 15 }, } monster.elements = { @@ -112,11 +111,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -124,13 +122,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_unarmored_voidborn.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_unarmored_voidborn.lua index 7d073d9ecc2..40c70d77fb7 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_unarmored_voidborn.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/the_unarmored_voidborn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -97,13 +97,13 @@ monster.loot = { { name = "piece of royal steel", chance = 15890 }, { name = "shadow sceptre", chance = 7890 }, { id = 23533, chance = 14542 }, -- ring of red plasma - { name = "terra hood", chance = 16892 } + { name = "terra hood", chance = 16892 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -400, length = 7, spread = 5, effect = CONST_ME_SMALLCLOUDS, target = false }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -440, radius = 5, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -440, radius = 5, target = false }, } monster.defenses = { @@ -129,11 +129,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -141,13 +140,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/wine_cask.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/wine_cask.lua index 52223bd91d1..1d0ad0c3955 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/wine_cask.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/wine_cask.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a wine cask" monster.experience = 0 monster.outfit = { - lookTypeEx = 2521 + lookTypeEx = 2521, } monster.health = 30000 @@ -15,12 +15,12 @@ monster.speed = 0 monster.manaCost = 0 monster.events = { - "Splash" + "Splash", } monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -51,11 +51,11 @@ monster.flags = { } monster.events = { - "Splash" + "Splash", } monster.events = { - "Splash" + "Splash", } monster.light = { @@ -68,8 +68,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 35, @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/zarcorix_of_yalahar.lua b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/zarcorix_of_yalahar.lua index 8be0500de26..29fad9c95e3 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/bosses/zarcorix_of_yalahar.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/bosses/zarcorix_of_yalahar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 99999999 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,16 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, } monster.defenses = { defense = 0, - armor = 0 + armor = 0, } monster.reflects = { @@ -84,7 +83,7 @@ monster.reflects = { { type = COMBAT_DROWNDAMAGE, percent = 300 }, { type = COMBAT_ICEDAMAGE, percent = 300 }, { type = COMBAT_HOLYDAMAGE, percent = 300 }, - { type = COMBAT_DEATHDAMAGE, percent = 300 } + { type = COMBAT_DEATHDAMAGE, percent = 300 }, } monster.elements = { @@ -97,14 +96,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/containment_machine.lua b/data-otservbr-global/monster/quests/cults_of_tibia/containment_machine.lua index 8ff3830ad72..5acc105e549 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/containment_machine.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/containment_machine.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a containment machine" monster.experience = 0 monster.outfit = { - lookTypeEx = 8988 + lookTypeEx = 8988, } monster.health = 6500 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -53,8 +53,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 50, @@ -79,7 +78,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/cult_believer.lua b/data-otservbr-global/monster/quests/cults_of_tibia/cult_believer.lua index 587dc823c42..71a717df8f3 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/cult_believer.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/cult_believer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 39, lookFeet = 38, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1512 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Forbidden Temple (Carlin)." + Locations = "Forbidden Temple (Carlin).", } monster.health = 975 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -93,18 +93,18 @@ monster.loot = { { id = 3269, chance = 830 }, -- halberd { id = 3415, chance = 330 }, -- guardian shield { id = 3371, chance = 230 }, -- knight legs - { id = 3369, chance = 200 } -- warrior helmet + { id = 3369, chance = 200 }, -- warrior helmet } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -250 } + { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -250 }, } monster.defenses = { defense = 50, armor = 30, mitigation = 1.18, - { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/cult_enforcer.lua b/data-otservbr-global/monster/quests/cults_of_tibia/cult_enforcer.lua index db70b7b5921..27b33840d4c 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/cult_enforcer.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/cult_enforcer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 57, lookFeet = 76, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1513 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Forbidden Temple (Carlin)." + Locations = "Forbidden Temple (Carlin).", } monster.health = 1150 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -93,18 +93,18 @@ monster.loot = { { id = 3269, chance = 830 }, -- halberd { id = 3415, chance = 330 }, -- guardian shield { id = 3371, chance = 230 }, -- knight legs - { id = 3369, chance = 200 } -- warrior helmet + { id = 3369, chance = 200 }, -- warrior helmet } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -360 } + { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -360 }, } monster.defenses = { defense = 50, armor = 30, mitigation = 1.24, - { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/cult_scholar.lua b/data-otservbr-global/monster/quests/cults_of_tibia/cult_scholar.lua index a1a84b2da0a..e4d9b02ada5 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/cult_scholar.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/cult_scholar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 3, lookFeet = 20, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1514 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Forbidden Temple (Carlin)." + Locations = "Forbidden Temple (Carlin).", } monster.health = 1650 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -93,18 +93,18 @@ monster.loot = { { id = 3269, chance = 830 }, -- halberd { id = 3415, chance = 330 }, -- guardian shield { id = 3371, chance = 230 }, -- knight legs - { id = 3369, chance = 200 } -- warrior helmet + { id = 3369, chance = 200 }, -- warrior helmet } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -580 } + { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -580 }, } monster.defenses = { defense = 50, armor = 30, mitigation = 1.18, - { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 20, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 20, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/goldhanded_cultist.lua b/data-otservbr-global/monster/quests/cults_of_tibia/goldhanded_cultist.lua index e95356a8ecb..285d72caac0 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/goldhanded_cultist.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/goldhanded_cultist.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 62, lookFeet = 94, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.raceId = 1481 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Museum of Tibian Arts." + Locations = "Museum of Tibian Arts.", } monster.health = 3000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,21 +86,21 @@ monster.loot = { { name = "gold ingot", chance = 2860 }, { name = "opal", chance = 11430 }, { name = "yellow gem", chance = 5710 }, - { id = 2863, chance = 1430 } -- golden bag + { id = 2863, chance = 1430 }, -- golden bag } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, { name = "combat", interval = 3000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -150, radius = 5, target = false }, { name = "combat", interval = 3000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -200, effect = CONST_ME_LOSEENERGY, target = true }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -250, range = 5, radius = 2, target = true } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -250, range = 5, radius = 2, target = true }, } monster.defenses = { defense = 20, armor = 30, mitigation = 0.78, - { name = "speed", interval = 2000, chance = 30, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 2000, chance = 30, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/minotaur_idol.lua b/data-otservbr-global/monster/quests/cults_of_tibia/minotaur_idol.lua index 83186c85e3f..b1648b785cb 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/minotaur_idol.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/minotaur_idol.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -59,19 +59,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, range = 4, radius = 4, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, range = 4, radius = 4, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { defense = 30, armor = 30, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/misguided_bully.lua b/data-otservbr-global/monster/quests/cults_of_tibia/misguided_bully.lua index 89d270cd6e2..8f653d2f2dd 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/misguided_bully.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/misguided_bully.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 41, lookFeet = 76, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1412 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Misguided Camp accessible via Outlaw Camp's portal." + Locations = "Misguided Camp accessible via Outlaw Camp's portal.", } monster.health = 2000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -82,19 +82,19 @@ monster.loot = { { id = 3031, chance = 100000, maxCount = 153 }, -- gold coin { id = 25296, chance = 5610 }, -- rubbish amulet { id = 9058, chance = 4930 }, -- gold ingot - { id = 3041, chance = 4630 } -- blue gem + { id = 3041, chance = 4630 }, -- blue gem } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -320 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -230, range = 7, shootEffect = CONST_ANI_SPEAR, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -230, range = 7, shootEffect = CONST_ANI_SPEAR, target = true }, } monster.defenses = { defense = 35, armor = 30, mitigation = 1.32, - { name = "heal monster", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "heal monster", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/misguided_shadow.lua b/data-otservbr-global/monster/quests/cults_of_tibia/misguided_shadow.lua index 14f5a0bc5c5..5886f068e97 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/misguided_shadow.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/misguided_shadow.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -65,19 +65,19 @@ monster.voices = { monster.loot = { { id = 236, chance = 15000 }, -- strong health potion - { id = 3039, chance = 6000 } -- red gem + { id = 3039, chance = 6000 }, -- red gem } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -180, maxDamage = -220, range = 6, length = 6, spread = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -180, maxDamage = -220, range = 6, length = 6, spread = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { defense = 35, armor = 35, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -97,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/misguided_thief.lua b/data-otservbr-global/monster/quests/cults_of_tibia/misguided_thief.lua index a1025e8297f..68ed4699b15 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/misguided_thief.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/misguided_thief.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 60, lookFeet = 116, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1413 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Misguided Camp accessible via Outlaw Camp's portal." + Locations = "Misguided Camp accessible via Outlaw Camp's portal.", } monster.health = 1800 @@ -35,7 +35,7 @@ monster.manaCost = 390 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -75,7 +75,7 @@ monster.voices = { chance = 10, { text = "I spotted you!", yell = false }, { text = "Let me show you your destiny!", yell = false }, - { text = "There is no escape now, friend.", yell = false } + { text = "There is no escape now, friend.", yell = false }, } monster.loot = { @@ -87,18 +87,18 @@ monster.loot = { { id = 3577, chance = 47160 }, -- meat { id = 3037, chance = 6250 }, -- yellow gem { id = 25296, chance = 6250 }, -- rubbish amulet - { id = 16124, chance = 570 } -- blue crystal splinter + { id = 16124, chance = 570 }, -- blue crystal splinter } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -225 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -150, range = 7, shootEffect = CONST_ANI_FIRE, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -150, range = 7, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { defense = 35, armor = 35, - { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -111,14 +111,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -1 }, { type = COMBAT_HOLYDAMAGE, percent = 1 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_fanatic.lua b/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_fanatic.lua index 4e5850e56a7..7daf25588eb 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_fanatic.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_fanatic.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1506 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Edron Orc Cave." + Locations = "Edron Orc Cave.", } monster.health = 1300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,12 +90,12 @@ monster.loot = { { name = "skull belt", chance = 13940 }, { name = "small ruby", chance = 10990, maxCount = 3 }, { name = "brown mushroom", chance = 15820, maxCount = 4 }, - { name = "cultish robe", chance = 10460 } + { name = "cultish robe", chance = 10460 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -330, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -330, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_inquisitor.lua b/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_inquisitor.lua index 6af25944268..a8f6901610d 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_inquisitor.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_inquisitor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1505 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Edron Orc Cave." + Locations = "Edron Orc Cave.", } monster.health = 1500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,18 +91,18 @@ monster.loot = { { name = "ham", chance = 8960 }, { name = "orc tooth", chance = 5410 }, { name = "orcish gear", chance = 15460 }, - { name = "orc leather", chance = 7730 } + { name = "orc leather", chance = 7730 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, } monster.defenses = { defense = 40, armor = 40, mitigation = 1.46, - { name = "speed", interval = 2000, chance = 30, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 2000, chance = 30, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_minion.lua b/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_minion.lua index 96ea805fb44..5af27fdd29e 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_minion.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_minion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1507 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Edron Orc Cave." + Locations = "Edron Orc Cave.", } monster.health = 1000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,12 +84,12 @@ monster.loot = { { name = "cultish robe", chance = 19360 }, { name = "red mushroom", chance = 6250, maxCount = 3 }, { name = "berserk potion", chance = 860, maxCount = 2 }, - { name = "meat", chance = 4780 } + { name = "meat", chance = 4780 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -230 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -120, maxDamage = -170, range = 7, shootEffect = CONST_ANI_SPEAR, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -120, maxDamage = -170, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_priest.lua b/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_priest.lua index dfccb161583..1846a45926f 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_priest.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/orc_cult_priest.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1504 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Edron Orc Cave." + Locations = "Edron Orc Cave.", } monster.health = 1300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,7 +88,7 @@ monster.loot = { { name = "mysterious fetish", chance = 8910 }, { name = "shamanic hood", chance = 14360 }, { name = "broken shamanic staff", chance = 5940 }, - { name = "heavy old tome", chance = 99 } + { name = "heavy old tome", chance = 99 }, } monster.attacks = { @@ -97,14 +97,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 5, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -250, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, { name = "outfit", interval = 4000, chance = 15, target = true, duration = 30000, outfitMonster = "orc warlord" }, { name = "outfit", interval = 4000, chance = 10, target = true, duration = 30000, outfitMonster = "orc shaman" }, - { name = "outfit", interval = 4000, chance = 20, target = true, duration = 30000, outfitMonster = "orc" } + { name = "outfit", interval = 4000, chance = 20, target = true, duration = 30000, outfitMonster = "orc" }, } monster.defenses = { defense = 27, armor = 27, mitigation = 1.18, - { name = "heal monster", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "heal monster", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/cults_of_tibia/orc_cultist.lua b/data-otservbr-global/monster/quests/cults_of_tibia/orc_cultist.lua index 9d90eae0220..a2539486a9b 100644 --- a/data-otservbr-global/monster/quests/cults_of_tibia/orc_cultist.lua +++ b/data-otservbr-global/monster/quests/cults_of_tibia/orc_cultist.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1503 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Edron Orc Cave." + Locations = "Edron Orc Cave.", } monster.health = 1350 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -84,11 +84,11 @@ monster.loot = { { name = "ham", chance = 7020, maxCount = 3 }, { name = "orc tusk", chance = 8260, maxCount = 2 }, { name = "green piece of cloth", chance = 4960 }, - { name = "brown crystal splinter", chance = 4960 } + { name = "brown crystal splinter", chance = 4960 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/aggressive_lava.lua b/data-otservbr-global/monster/quests/dangerous_depth/aggressive_lava.lua index 0607d3561e4..f663aae3b0a 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/aggressive_lava.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/aggressive_lava.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,17 +62,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, - { name = "aggressivelavawave", interval = 2000, chance = 30, minDamage = 0, maxDamage = -650, target = false } + { name = "aggressivelavawave", interval = 2000, chance = 30, minDamage = 0, maxDamage = -650, target = false }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, -- mitigation = ???, } @@ -93,11 +92,11 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } monster.heals = { - { type = COMBAT_FIREDAMAGE, percent = 100 } + { type = COMBAT_FIREDAMAGE, percent = 100 }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/aggressive_matter.lua b/data-otservbr-global/monster/quests/dangerous_depth/aggressive_matter.lua index fe8283790d9..2ac350a7e0d 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/aggressive_matter.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/aggressive_matter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 58, attack = 50, condition = { type = CONDITION_POISON, totalDamage = 280, interval = 4000 } }, @@ -71,7 +70,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -230, length = 6, spread = 3, effect = CONST_ME_POISONAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -200, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, - { name = "rot elemental paralyze", interval = 2000, chance = 11, target = false } + { name = "rot elemental paralyze", interval = 2000, chance = 11, target = false }, } monster.defenses = { @@ -79,7 +78,7 @@ monster.defenses = { armor = 10, -- mitigation = ???, { name = "combat", interval = 2000, chance = 7, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 9, speedChange = 470, effect = CONST_ME_SMOKE, target = false, duration = 7000 } + { name = "speed", interval = 2000, chance = 9, speedChange = 470, effect = CONST_ME_SMOKE, target = false, duration = 7000 }, } monster.elements = { @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/bosses/ancient_spawn_of_morgathla.lua b/data-otservbr-global/monster/quests/dangerous_depth/bosses/ancient_spawn_of_morgathla.lua index facf825633f..5d505317891 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/bosses/ancient_spawn_of_morgathla.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/bosses/ancient_spawn_of_morgathla.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 4 + chance = 4, } monster.strategiesTarget = { @@ -85,13 +85,13 @@ monster.loot = { { id = 21176, chance = 1420 }, -- execowtioner axe { id = 3318, chance = 770 }, -- knight axe { id = 7413, chance = 390 }, -- titan axe - { id = 7401, chance = 520 } -- minotaur trophy + { id = 7401, chance = 520 }, -- minotaur trophy } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 80 }, { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -135, maxDamage = -280, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -200, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -200, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_baron_from_below.lua b/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_baron_from_below.lua index 56c584eed94..12c461e44a3 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_baron_from_below.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_baron_from_below.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 350000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1518, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -65,7 +65,7 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "Krrrk!", yell = false } + { text = "Krrrk!", yell = false }, } monster.loot = { @@ -115,7 +115,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -1000, length = 8, spread = 5, effect = CONST_ME_YELLOW_RINGS, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -1000, length = 8, spread = 9, effect = CONST_ME_POFF, target = false }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -1000, radius = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -1000, radius = 5, effect = CONST_ME_SMALLPLANTS, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -1000, radius = 5, effect = CONST_ME_SMALLPLANTS, target = false }, } monster.defenses = { @@ -141,11 +141,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -153,13 +152,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_count_of_the_core.lua b/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_count_of_the_core.lua index c56a340fb4d..3a9b1726e29 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_count_of_the_core.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_count_of_the_core.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 350000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1519, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -119,7 +119,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -1500, range = 3, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -1500, range = 3, length = 9, spread = 4, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1500, radius = 8, effect = CONST_ME_HITAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -1500, radius = 8, effect = CONST_ME_BLACKSMOKE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -1500, radius = 8, effect = CONST_ME_BLACKSMOKE, target = false }, } monster.defenses = { @@ -145,11 +145,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -157,13 +156,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_duke_of_the_depths.lua b/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_duke_of_the_depths.lua index 5fa0a86f45f..eb960a171e0 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_duke_of_the_depths.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_duke_of_the_depths.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 350000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 50 + chance = 50, } monster.bosstiary = { bossRaceId = 1520, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -114,7 +114,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -1000, range = 3, length = 6, spread = 8, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -1000, range = 3, length = 9, spread = 4, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -135, maxDamage = -1000, radius = 2, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1000, radius = 8, effect = CONST_ME_HITAREA, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1000, radius = 8, effect = CONST_ME_HITAREA, target = false }, } monster.defenses = { @@ -140,15 +140,14 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } monster.heals = { { type = COMBAT_FIREDAMAGE, percent = 100 }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -156,13 +155,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_duke_of_the_depths_immortal.lua b/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_duke_of_the_depths_immortal.lua index fb58eab4c60..0b397516f8e 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_duke_of_the_depths_immortal.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_duke_of_the_depths_immortal.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 350000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -49,19 +49,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Chhhhhhh!", yell = false }, - { text = "SzzzzSzzz! SzzzzSzzz!", yell = false } + { text = "SzzzzSzzz! SzzzzSzzz!", yell = false }, } monster.loot = { @@ -82,7 +82,7 @@ monster.loot = { { id = 21176, chance = 1420 }, -- execowtioner axe { id = 3318, chance = 770 }, -- knight axe { id = 7413, chance = 390 }, -- titan axe - { id = 7401, chance = 520 } -- minotaur trophy + { id = 7401, chance = 520 }, -- minotaur trophy } monster.attacks = { @@ -90,12 +90,12 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -1500, range = 3, length = 6, spread = 8, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -1500, range = 3, length = 9, spread = 4, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -135, maxDamage = -1500, radius = 2, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1500, radius = 8, effect = CONST_ME_HITAREA, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1500, radius = 8, effect = CONST_ME_HITAREA, target = false }, } monster.defenses = { defense = 40, - armor = 40 + armor = 40, } monster.elements = { @@ -108,18 +108,18 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } monster.heals = { - { type = COMBAT_FIREDAMAGE, percent = 100 } + { type = COMBAT_FIREDAMAGE, percent = 100 }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_hungry_baron_from_below.lua b/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_hungry_baron_from_below.lua index f8e5705adb3..dce3d45459e 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_hungry_baron_from_below.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/bosses/the_hungry_baron_from_below.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 350000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,11 +60,10 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "Krrrk!", yell = false } + { text = "Krrrk!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, @@ -72,7 +71,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -1000, length = 8, spread = 5, effect = CONST_ME_YELLOW_RINGS, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -1000, length = 8, spread = 9, effect = CONST_ME_POFF, target = false }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -1000, radius = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -1000, radius = 5, effect = CONST_ME_SMALLPLANTS, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -1000, radius = 5, effect = CONST_ME_SMALLPLANTS, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.heals = { @@ -102,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/captured_dwarf.lua b/data-otservbr-global/monster/quests/dangerous_depth/captured_dwarf.lua index 4cf59ac5a7d..6043758ec4e 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/captured_dwarf.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/captured_dwarf.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 100 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,13 +62,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} - +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, -- mitigation = ???, } @@ -89,7 +87,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/ember_beast.lua b/data-otservbr-global/monster/quests/dangerous_depth/ember_beast.lua index 7ad48a49c9a..6ceaf0cc620 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/ember_beast.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/ember_beast.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,18 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "emberbeastarea", interval = 1000, chance = 20, minDamage = -200, maxDamage = -450, target = false }, - { name = "emberbeasthur", interval = 2000, chance = 10, minDamage = -200, maxDamage = -450, target = false } + { name = "emberbeasthur", interval = 2000, chance = 10, minDamage = -200, maxDamage = -450, target = false }, } monster.defenses = { defense = 5, - armor = 10 + armor = 10, -- mitigation = ???, } @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/fiery_blood.lua b/data-otservbr-global/monster/quests/dangerous_depth/fiery_blood.lua index a5415c4dfad..35db4f820e8 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/fiery_blood.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/fiery_blood.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 25000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,18 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, { name = "aggressivelavawave", interval = 2000, chance = 30, minDamage = 0, maxDamage = -500, target = false }, - { name = "firefield", interval = 2000, chance = 25, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true } + { name = "firefield", interval = 2000, chance = 25, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, -- mitigation = ???, } @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/fiery_heart.lua b/data-otservbr-global/monster/quests/dangerous_depth/fiery_heart.lua index 863b66096b9..4ba75a79916 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/fiery_heart.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/fiery_heart.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a fiery heart" monster.experience = 0 monster.outfit = { - lookTypeEx = 391 + lookTypeEx = 391, } monster.health = 7500 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 1 + chance = 1, } monster.strategiesTarget = { @@ -56,16 +56,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "aggressivelavawave", interval = 2000, chance = 30, minDamage = 0, maxDamage = -550, target = false } + { name = "aggressivelavawave", interval = 2000, chance = 30, minDamage = 0, maxDamage = -550, target = false }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, -- mitigation = ???, } @@ -86,11 +85,11 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } monster.heals = { - { type = COMBAT_FIREDAMAGE, percent = 100 } + { type = COMBAT_FIREDAMAGE, percent = 100 }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/gnome_pack_crawler.lua b/data-otservbr-global/monster/quests/dangerous_depth/gnome_pack_crawler.lua index 97f885a4573..3b61f741f5c 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/gnome_pack_crawler.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/gnome_pack_crawler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,13 +63,12 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 100000, maxCount = 199 } -- gold coin + { id = 3031, chance = 100000, maxCount = 199 }, -- gold coin } - monster.defenses = { defense = 45, - armor = 45 + armor = 45, -- mitigation = ???, } @@ -90,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/lava_lurker_attendant.lua b/data-otservbr-global/monster/quests/dangerous_depth/lava_lurker_attendant.lua index c75eb8122f7..14913e49561 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/lava_lurker_attendant.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/lava_lurker_attendant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = true, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -59,17 +59,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = 90, maxDamage = -175, radius = 4, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = 90, maxDamage = -175, radius = 4, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 33, - armor = 28 + armor = 28, } monster.elements = { @@ -82,14 +81,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -1 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/lost_gnome.lua b/data-otservbr-global/monster/quests/dangerous_depth/lost_gnome.lua index 30907799c7c..4d31f8848d2 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/lost_gnome.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/lost_gnome.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 15, lookFeet = 7, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -66,13 +66,12 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 10000, maxCount = 2 }, - { name = "heavy old tome", chance = 10000, maxCount = 2 } + { name = "heavy old tome", chance = 10000, maxCount = 2 }, } - monster.defenses = { defense = 33, - armor = 45 + armor = 45, -- mitigation = ???, } @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/makeshift_home.lua b/data-otservbr-global/monster/quests/dangerous_depth/makeshift_home.lua index a24e27c59ee..fc70f937f66 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/makeshift_home.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/makeshift_home.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a makeshift home" monster.experience = 1800 monster.outfit = { - lookTypeEx = 27366 + lookTypeEx = 27366, } monster.health = 6900 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -56,17 +56,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -120, maxDamage = -200 }, - { name = "combat", interval = 2000, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = -70, maxDamage = -230, range = 3, shootEffect = CONST_ANI_ARROW, target = true } + { name = "combat", interval = 2000, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = -70, maxDamage = -230, range = 3, shootEffect = CONST_ANI_ARROW, target = true }, } monster.defenses = { defense = 5, - armor = 10 + armor = 10, -- mitigation = ???, } @@ -87,7 +86,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/organic_matter.lua b/data-otservbr-global/monster/quests/dangerous_depth/organic_matter.lua index da0ad6d21f6..a7d5ec477be 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/organic_matter.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/organic_matter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,13 +62,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} - +monster.loot = {} monster.defenses = { defense = 55, - armor = 55 + armor = 55, -- mitigation = ???, } @@ -89,7 +87,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dangerous_depth/snail_slime.lua b/data-otservbr-global/monster/quests/dangerous_depth/snail_slime.lua index ceae7d771f0..e5e4942e6d4 100644 --- a/data-otservbr-global/monster/quests/dangerous_depth/snail_slime.lua +++ b/data-otservbr-global/monster/quests/dangerous_depth/snail_slime.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,16 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600 }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, -- mitigation = ???, } @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dark_trails/canopic_jar.lua b/data-otservbr-global/monster/quests/dark_trails/canopic_jar.lua index c77648be1a4..189e5f29070 100644 --- a/data-otservbr-global/monster/quests/dark_trails/canopic_jar.lua +++ b/data-otservbr-global/monster/quests/dark_trails/canopic_jar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -62,11 +62,9 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 35, @@ -92,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dark_trails/death_priest_shargon.lua b/data-otservbr-global/monster/quests/dark_trails/death_priest_shargon.lua index 7016d9937e3..13fd2f07c51 100644 --- a/data-otservbr-global/monster/quests/dark_trails/death_priest_shargon.lua +++ b/data-otservbr-global/monster/quests/dark_trails/death_priest_shargon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -58,7 +58,7 @@ monster.flags = { } monster.events = { - "ShargonKill" + "ShargonKill", } monster.light = { @@ -71,8 +71,8 @@ monster.summon = { summons = { { name = "Lesser Death Minion", chance = 30, interval = 2000, count = 2 }, { name = "Superior Death Minion", chance = 30, interval = 2000, count = 2 }, - { name = "Greater Death Minion", chance = 30, interval = 2000, count = 2 } - } + { name = "Greater Death Minion", chance = 30, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -88,20 +88,20 @@ monster.loot = { { id = 238, chance = 10000, maxCount = 4 }, -- great mana potion { id = 9058, chance = 25000 }, -- gold ingot { id = 9056, chance = 9090 }, -- black skull - { id = 8531, chance = 9090 } -- blood goblet + { id = 8531, chance = 9090 }, -- blood goblet } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 200, attack = 150 }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -660, range = 7, radius = 6, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_HOLYDAMAGE, minDamage = -350, maxDamage = -1000, length = 6, spread = 2, effect = CONST_ME_PURPLEENERGY, target = false } + { name = "combat", interval = 2000, chance = 18, type = COMBAT_HOLYDAMAGE, minDamage = -350, maxDamage = -1000, length = 6, spread = 2, effect = CONST_ME_PURPLEENERGY, target = false }, } monster.defenses = { defense = 120, armor = 120, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 699, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 699, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dark_trails/depowered_minotaur.lua b/data-otservbr-global/monster/quests/dark_trails/depowered_minotaur.lua index 848e232e359..27e0e37b0dd 100644 --- a/data-otservbr-global/monster/quests/dark_trails/depowered_minotaur.lua +++ b/data-otservbr-global/monster/quests/dark_trails/depowered_minotaur.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -66,7 +66,7 @@ monster.loot = { { id = 3035, chance = 100000, maxCount = 4 }, -- platinum coin { id = 236, chance = 25000 }, -- strong health potion { id = 5878, chance = 25000 }, -- minotaur leather - { id = 3029, chance = 25000 } -- small sapphire + { id = 3029, chance = 25000 }, -- small sapphire } monster.attacks = { @@ -97,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dark_trails/greater_canopic_jar.lua b/data-otservbr-global/monster/quests/dark_trails/greater_canopic_jar.lua index 95f1c2cafdf..d23d44bd8d0 100644 --- a/data-otservbr-global/monster/quests/dark_trails/greater_canopic_jar.lua +++ b/data-otservbr-global/monster/quests/dark_trails/greater_canopic_jar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 7000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -35,8 +35,8 @@ monster.strategiesTarget = { monster.summon = { maxSummons = 1, summons = { - { name = "Elder Mummy", chance = 20, interval = 2000, count = 1 } - } + { name = "Elder Mummy", chance = 20, interval = 2000, count = 1 }, + }, } monster.flags = { summonable = false, @@ -68,17 +68,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 35, armor = 35, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 1500, radius = 7, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 1500, radius = 7, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -98,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dark_trails/greater_death_minion.lua b/data-otservbr-global/monster/quests/dark_trails/greater_death_minion.lua index ad0f1b969ea..0d942d93797 100644 --- a/data-otservbr-global/monster/quests/dark_trails/greater_death_minion.lua +++ b/data-otservbr-global/monster/quests/dark_trails/greater_death_minion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -450 }, @@ -71,7 +70,7 @@ monster.attacks = { monster.defenses = { defense = 15, - armor = 15 + armor = 15, -- mitigation = ???, } @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dark_trails/lesser_death_minion.lua b/data-otservbr-global/monster/quests/dark_trails/lesser_death_minion.lua index 91cd9225cd6..fb948b2c096 100644 --- a/data-otservbr-global/monster/quests/dark_trails/lesser_death_minion.lua +++ b/data-otservbr-global/monster/quests/dark_trails/lesser_death_minion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 550 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -300 }, @@ -71,7 +70,7 @@ monster.attacks = { monster.defenses = { defense = 34, - armor = 35 + armor = 35, -- mitigation = ???, } @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dark_trails/superior_death_minion.lua b/data-otservbr-global/monster/quests/dark_trails/superior_death_minion.lua index 70f547e5bbb..84c9ec3895c 100644 --- a/data-otservbr-global/monster/quests/dark_trails/superior_death_minion.lua +++ b/data-otservbr-global/monster/quests/dark_trails/superior_death_minion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -600 }, @@ -71,7 +70,7 @@ monster.attacks = { monster.defenses = { defense = 30, - armor = 30 + armor = 30, -- mitigation = ???, } @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dark_trails/the_ravager.lua b/data-otservbr-global/monster/quests/dark_trails/the_ravager.lua index 56c99c369d6..1c10ace0db9 100644 --- a/data-otservbr-global/monster/quests/dark_trails/the_ravager.lua +++ b/data-otservbr-global/monster/quests/dark_trails/the_ravager.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -54,11 +54,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "TheRavagerDeath" + "TheRavagerDeath", } monster.light = { @@ -71,8 +71,8 @@ monster.summon = { summons = { { name = "Elder Mummy", chance = 9, interval = 2000, count = 4 }, { name = "Canopic Jar", chance = 9, interval = 2000, count = 4 }, - { name = "Greater Canopic Jar", chance = 9, interval = 2000, count = 8 } - } + { name = "Greater Canopic Jar", chance = 9, interval = 2000, count = 8 }, + }, } monster.voices = { @@ -86,21 +86,21 @@ monster.loot = { { id = 239, chance = 5000, maxCount = 5 }, -- great health potion { id = 3035, chance = 37500, maxCount = 5 }, -- platinum coin { id = 3042, chance = 15000, maxCount = 5 }, -- scarab coin - { id = 3328, chance = 5000 } -- daramian waraxe + { id = 3328, chance = 5000 }, -- daramian waraxe } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 82, attack = 70, condition = { type = CONDITION_POISON, totalDamage = 320, interval = 4000 } }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -750, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -880, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -500, length = 7, spread = 3, effect = CONST_ME_SMOKE, target = false } + { name = "combat", interval = 2000, chance = 18, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -500, length = 7, spread = 3, effect = CONST_ME_SMOKE, target = false }, } monster.defenses = { defense = 30, armor = 25, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/dark_trails/tremor_worm.lua b/data-otservbr-global/monster/quests/dark_trails/tremor_worm.lua index da06ebaac17..30a29ecc75f 100644 --- a/data-otservbr-global/monster/quests/dark_trails/tremor_worm.lua +++ b/data-otservbr-global/monster/quests/dark_trails/tremor_worm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 125000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -65,7 +65,7 @@ monster.voices = { monster.loot = { { id = 3035, chance = 33000, maxCount = 5 }, -- platinum coin { id = 239, chance = 10000 }, -- great health potion - { id = 238, chance = 10000 } -- great mana potion + { id = 238, chance = 10000 }, -- great mana potion } monster.attacks = { @@ -74,7 +74,7 @@ monster.attacks = { monster.defenses = { defense = 100, - armor = 100 + armor = 100, -- mitigation = ???, } @@ -95,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/feaster_of_souls/irgix_the_flimsy.lua b/data-otservbr-global/monster/quests/feaster_of_souls/irgix_the_flimsy.lua index 629f1723cbd..1165392c255 100644 --- a/data-otservbr-global/monster/quests/feaster_of_souls/irgix_the_flimsy.lua +++ b/data-otservbr-global/monster/quests/feaster_of_souls/irgix_the_flimsy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 24000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { @@ -52,12 +52,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -78,7 +78,7 @@ monster.loot = { { name = "wand of starstorm", chance = 1000 }, { name = "wand of cosmic energy", chance = 1000 }, { name = "death toll", chance = 1000 }, - { name = "pair of nightmare boots", chance = 230 } + { name = "pair of nightmare boots", chance = 230 }, } monster.attacks = { @@ -86,12 +86,12 @@ monster.attacks = { { name = "combat", interval = 1500, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -500, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, { name = "combat", interval = 1500, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1500, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 1500, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 1500, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { defense = 40, - armor = 82 + armor = 82, } monster.elements = { @@ -104,18 +104,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 50 }, { type = COMBAT_HOLYDAMAGE, percent = 50 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -123,13 +122,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/feaster_of_souls/the_dread_maiden.lua b/data-otservbr-global/monster/quests/feaster_of_souls/the_dread_maiden.lua index 91ba9f03946..5867331bda1 100644 --- a/data-otservbr-global/monster/quests/feaster_of_souls/the_dread_maiden.lua +++ b/data-otservbr-global/monster/quests/feaster_of_souls/the_dread_maiden.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -66,7 +66,7 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "You will be mine for eternity!", yell = false } + { text = "You will be mine for eternity!", yell = false }, } monster.loot = { @@ -92,14 +92,14 @@ monster.loot = { { id = 32591, chance = 4000 }, -- soulforged lantern { id = 32619, chance = 730 }, -- pair of nightmare boots { id = 32631, chance = 730 }, -- ghost claw - { id = 32630, chance = 730 } -- spooky hood + { id = 32630, chance = 730 }, -- spooky hood } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -600, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -750, radius = 4, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, { name = "combat", interval = 4000, chance = 50, type = COMBAT_DEATHDAMAGE, minDamage = -600, maxDamage = -1500, length = 7, effect = CONST_ME_POFF, target = false }, - { name = "dread rcircle", interval = 2000, chance = 40, minDamage = -400, maxDamage = -1000 } + { name = "dread rcircle", interval = 2000, chance = 40, minDamage = -400, maxDamage = -1000 }, } monster.defenses = { @@ -107,7 +107,7 @@ monster.defenses = { armor = 170, -- mitigation = ???, { name = "speed", interval = 10000, chance = 40, speedChange = 510, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 20000 }, - { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 2500, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 2500, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -127,11 +127,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -139,13 +138,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/feaster_of_souls/the_fear_feaster.lua b/data-otservbr-global/monster/quests/feaster_of_souls/the_fear_feaster.lua index 27762aee819..d565971b988 100644 --- a/data-otservbr-global/monster/quests/feaster_of_souls/the_fear_feaster.lua +++ b/data-otservbr-global/monster/quests/feaster_of_souls/the_fear_feaster.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.bosstiary = { @@ -91,7 +91,7 @@ monster.loot = { { name = "ghost claw", chance = 1960 }, { name = "bloody tears", chance = 1500 }, { name = "ghost chestplate", chance = 150 }, - { name = "spooky hood", chance = 150 } + { name = "spooky hood", chance = 150 }, } monster.attacks = { @@ -102,7 +102,7 @@ monster.attacks = { { name = "strength", interval = 1000, chance = 60, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -900, length = 5, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -600, maxDamage = -1200, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "speed", interval = 3000, chance = 40, speedChange = -700, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 } + { name = "speed", interval = 3000, chance = 40, speedChange = -700, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 }, } monster.defenses = { @@ -110,7 +110,7 @@ monster.defenses = { armor = 160, -- mitigation = ???, { name = "speed", interval = 10000, chance = 40, speedChange = 510, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 20000 }, - { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 2500, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 2500, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -130,11 +130,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -142,13 +141,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/feaster_of_souls/the_pale_worm.lua b/data-otservbr-global/monster/quests/feaster_of_souls/the_pale_worm.lua index 5fa4511c3f2..0f31a81a9fa 100644 --- a/data-otservbr-global/monster/quests/feaster_of_souls/the_pale_worm.lua +++ b/data-otservbr-global/monster/quests/feaster_of_souls/the_pale_worm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 420000 @@ -21,18 +21,18 @@ monster.speed = 125 monster.manaCost = 0 monster.events = { - "paleWormDeath" + "paleWormDeath", } monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.bosstiary = { bossRaceId = 1881, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_30.FeasterOfSouls.PaleWormTimer + storageCooldown = Storage.Quest.U12_30.FeasterOfSouls.PaleWormTimer, } monster.strategiesTarget = { @@ -100,7 +100,7 @@ monster.loot = { { name = "phantasmal axe", chance = 150 }, { name = "ghost backpack", chance = 150 }, { id = 32621, chance = 400 }, -- Ring of souls - { name = "soulful legs", chance = 150 } + { name = "soulful legs", chance = 150 }, } monster.attacks = { @@ -111,7 +111,7 @@ monster.attacks = { { name = "strength", interval = 1000, chance = 60, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -900, length = 5, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -600, maxDamage = -1200, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "speed", interval = 3000, chance = 40, speedChange = -700, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 } + { name = "speed", interval = 3000, chance = 40, speedChange = -700, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.defenses = { armor = 150, -- mitigation = ???, { name = "speed", interval = 10000, chance = 40, speedChange = 510, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 20000 }, - { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 2500, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 2500, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -139,11 +139,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -151,13 +150,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/feaster_of_souls/the_unwelcome.lua b/data-otservbr-global/monster/quests/feaster_of_souls/the_unwelcome.lua index 2f79f6ae63b..d5562e91e59 100644 --- a/data-otservbr-global/monster/quests/feaster_of_souls/the_unwelcome.lua +++ b/data-otservbr-global/monster/quests/feaster_of_souls/the_unwelcome.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.bosstiary = { bossRaceId = 1868, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_30.FeasterOfSouls.UnwelcomeTimer + storageCooldown = Storage.Quest.U12_30.FeasterOfSouls.UnwelcomeTimer, } monster.strategiesTarget = { @@ -93,7 +93,7 @@ monster.loot = { { name = "ghost chestplate", chance = 150 }, { name = "spooky hood", chance = 150 }, { name = "fabulous legs", chance = 150 }, - { name = "soulful legs", chance = 150 } + { name = "soulful legs", chance = 150 }, } monster.attacks = { @@ -104,7 +104,7 @@ monster.attacks = { { name = "strength", interval = 1000, chance = 60, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -900, length = 5, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -600, maxDamage = -1200, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "speed", interval = 3000, chance = 40, speedChange = -700, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 } + { name = "speed", interval = 3000, chance = 40, speedChange = -700, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 }, } monster.defenses = { @@ -112,7 +112,7 @@ monster.defenses = { armor = 10, -- mitigation = ???, { name = "speed", interval = 10000, chance = 40, speedChange = 510, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 20000 }, - { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 2500, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 5000, chance = 60, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 2500, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -132,11 +132,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -144,13 +143,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/feaster_of_souls/unaz_the_mean.lua b/data-otservbr-global/monster/quests/feaster_of_souls/unaz_the_mean.lua index 513d4b02278..a624dbf4d49 100644 --- a/data-otservbr-global/monster/quests/feaster_of_souls/unaz_the_mean.lua +++ b/data-otservbr-global/monster/quests/feaster_of_souls/unaz_the_mean.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 28000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { @@ -77,7 +77,7 @@ monster.loot = { { name = "warrior's axe", chance = 400 }, { name = "death toll", chance = 150 }, { name = "silver hand mirror", chance = 150 }, - { id = 3039, chance = 150, maxCount = 2 } -- red gem + { id = 3039, chance = 150, maxCount = 2 }, -- red gem } monster.attacks = { @@ -85,12 +85,12 @@ monster.attacks = { { name = "combat", interval = 1500, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -500, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, { name = "combat", interval = 1500, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1500, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 1500, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 1500, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { defense = 40, - armor = 82 + armor = 82, -- mitigation = ???, } @@ -111,11 +111,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -123,13 +122,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/feaster_of_souls/vok_the_freakish.lua b/data-otservbr-global/monster/quests/feaster_of_souls/vok_the_freakish.lua index 85b88699705..09845b6e7d7 100644 --- a/data-otservbr-global/monster/quests/feaster_of_souls/vok_the_freakish.lua +++ b/data-otservbr-global/monster/quests/feaster_of_souls/vok_the_freakish.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 32000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 1892, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_30.FeasterOfSouls.VokTimer + storageCooldown = Storage.Quest.U12_30.FeasterOfSouls.VokTimer, } monster.strategiesTarget = { @@ -75,7 +75,7 @@ monster.loot = { { name = "ornate crossbow", chance = 10000 }, { name = "silver hand mirror", chance = 150 }, { name = "death toll", chance = 150 }, - { name = "pair of nightmare boots", chance = 150 } + { name = "pair of nightmare boots", chance = 150 }, } monster.attacks = { @@ -83,12 +83,12 @@ monster.attacks = { { name = "combat", interval = 1500, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -500, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, { name = "combat", interval = 1500, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1500, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 1500, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_GREEN_RINGS, target = true } + { name = "combat", interval = 1500, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_GREEN_RINGS, target = true }, } monster.defenses = { defense = 40, - armor = 82 + armor = 82, -- mitigation = ???, } @@ -109,11 +109,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -121,13 +120,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ascending_ferumbras.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ascending_ferumbras.lua index 5eaa3ba3a09..c0bf1acc2c6 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ascending_ferumbras.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ascending_ferumbras.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 150000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -63,18 +63,17 @@ monster.voices = { { text = "Witness my rise to godhood you fools!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 200 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -425, maxDamage = -810, radius = 9, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "combat", interval = 2000, chance = 21, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -650, radius = 9, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 21, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -650, radius = 9, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { defense = 5, - armor = 10 + armor = 10, -- mitigation = ???, } @@ -88,14 +87,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/death_dragon.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/death_dragon.lua index 758efa1aee1..9d96b8a2845 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/death_dragon.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/death_dragon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8350 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "DeathDragon" + "DeathDragon", } monster.light = { @@ -90,7 +90,7 @@ monster.loot = { { id = 3041, chance = 1170 }, -- blue gem { id = 3392, chance = 920 }, -- royal helmet { id = 6299, chance = 1950 }, -- death ring - { id = 2903, chance = 5040 } -- golden mug + { id = 2903, chance = 5040 }, -- golden mug } monster.attacks = { @@ -100,14 +100,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 11, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -615, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "undead dragon curse", interval = 2000, chance = 9, target = false }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, } monster.defenses = { defense = 63, armor = 45, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_RED, target = false }, } monster.elements = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/destabilized_ferumbras.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/destabilized_ferumbras.lua index 328caa59219..83b60ad84fb 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/destabilized_ferumbras.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/destabilized_ferumbras.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 62000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "FerumbrasMortalShell" + "FerumbrasMortalShell", } monster.light = { @@ -64,8 +64,8 @@ monster.light = { monster.summon = { maxSummons = 6, summons = { - { name = "Demon", chance = 11, interval = 2000, count = 6 } - } + { name = "Demon", chance = 11, interval = 2000, count = 6 }, + }, } monster.voices = { @@ -73,8 +73,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 200 }, @@ -84,7 +83,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 16, type = COMBAT_MANADRAIN, minDamage = -225, maxDamage = -410, radius = 6, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -450, radius = 6, effect = CONST_ME_POFF, target = false }, { name = "ferumbras soulfire", interval = 2000, chance = 20, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -590, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -590, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { @@ -93,7 +92,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 23, type = COMBAT_HEALING, minDamage = 600, maxDamage = 2490, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "combat", interval = 2000, chance = 3, type = COMBAT_HEALING, minDamage = 20000, maxDamage = 35000, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "speed", interval = 2000, chance = 14, speedChange = 700, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000 } + { name = "speed", interval = 2000, chance = 14, speedChange = 700, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000 }, } monster.elements = { @@ -113,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/enraged_soul.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/enraged_soul.lua index 2776f264238..00e3057a367 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/enraged_soul.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/enraged_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 150 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -71,12 +71,12 @@ monster.loot = { { id = 5909, chance = 1940 }, -- white piece of cloth { id = 9690, chance = 1870 }, -- ghostly tissue { id = 3432, chance = 860 }, -- ancient shield - { id = 3049, chance = 180 } -- stealth ring + { id = 3049, chance = 180 }, -- stealth ring } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 30, attack = 40 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -25, maxDamage = -45, range = 1, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -25, maxDamage = -45, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { @@ -102,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ferumbras_mortal_shell.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ferumbras_mortal_shell.lua index 99b32ae2704..8fb6ed42c03 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ferumbras_mortal_shell.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ferumbras_mortal_shell.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 1204, bossRace = RARITY_NEMESIS, - storageCooldown = Storage.FerumbrasAscension.FerumbrasTimer + storageCooldown = Storage.FerumbrasAscension.FerumbrasTimer, } monster.strategiesTarget = { @@ -66,8 +66,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Demon", chance = 100, interval = 1000, count = 3 } - } + { name = "Demon", chance = 100, interval = 1000, count = 3 }, + }, } monster.voices = { @@ -137,7 +137,7 @@ monster.loot = { { id = 9058, chance = 800 }, -- gold ingot { id = 7405, chance = 800 }, -- havoc blade { id = 7411, chance = 400 }, -- ornamented axe - { id = 22737, chance = 3500 } -- folded rift carpet + { id = 22737, chance = 3500 }, -- folded rift carpet } monster.attacks = { @@ -150,7 +150,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 21, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -650, radius = 9, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -450, radius = 6, effect = CONST_ME_POFF, target = false }, { name = "ferumbras soulfire", interval = 2000, chance = 20, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -590, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -590, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { @@ -160,7 +160,7 @@ monster.defenses = { { name = "combat", interval = 2000, chance = 23, type = COMBAT_HEALING, minDamage = 600, maxDamage = 2490, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "combat", interval = 2000, chance = 3, type = COMBAT_HEALING, minDamage = 20000, maxDamage = 35000, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "speed", interval = 2000, chance = 14, speedChange = 700, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000 }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -180,11 +180,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -192,13 +191,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ferumbras_soul_splinter.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ferumbras_soul_splinter.lua index 35606cc5c74..8c95fb9cb89 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ferumbras_soul_splinter.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ferumbras_soul_splinter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 90000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "FerumbrasSoulSplinter" + "FerumbrasSoulSplinter", } monster.light = { @@ -64,8 +64,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Demon", chance = 11, interval = 2000, count = 3 } - } + { name = "Demon", chance = 11, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -73,8 +73,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 200 }, @@ -84,7 +83,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 16, type = COMBAT_MANADRAIN, minDamage = -225, maxDamage = -410, radius = 6, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -450, radius = 6, effect = CONST_ME_POFF, target = false }, { name = "ferumbras soulfire", interval = 2000, chance = 20, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -590, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -590, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { @@ -93,7 +92,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 23, type = COMBAT_HEALING, minDamage = 600, maxDamage = 2490, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "combat", interval = 2000, chance = 3, type = COMBAT_HEALING, minDamage = 20000, maxDamage = 35000, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "speed", interval = 2000, chance = 14, speedChange = 700, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000 } + { name = "speed", interval = 2000, chance = 14, speedChange = 700, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000 }, } monster.elements = { @@ -113,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/mazoran.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/mazoran.lua index 96286ee7834..7d521af7396 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/mazoran.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/mazoran.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 78, lookFeet = 94, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -97,7 +97,7 @@ monster.loot = { { id = 7642, chance = 46100, maxCount = 5 }, -- great spirit potion { id = 7643, chance = 23000, maxCount = 5 }, -- ultimate health potion { id = 9057, chance = 10000, maxCount = 8 }, -- small topaz - { id = 9058, chance = 3000 } -- gold ingot + { id = 9058, chance = 3000 }, -- gold ingot } monster.attacks = { @@ -106,7 +106,7 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 25, speedChange = -600, radius = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -700, radius = 5, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -800, length = 10, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 2090, maxDamage = 4500, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 35, speedChange = 700, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 6000 }, - { name = "mazoran fire", interval = 30000, chance = 45, target = false } + { name = "mazoran fire", interval = 30000, chance = 45, target = false }, } monster.elements = { @@ -135,11 +135,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -147,13 +146,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/plagirath.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/plagirath.lua index 78d994717c6..ae467cefc49 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/plagirath.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/plagirath.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 60, lookFeet = 79, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -95,7 +95,7 @@ monster.loot = { { id = 814, chance = 5000 }, -- terra amulet { id = 7643, chance = 23000, maxCount = 15 }, -- ultimate health potion { id = 8073, chance = 4000 }, -- spellbook of warding - { id = 9057, chance = 10000, maxCount = 8 } -- small topaz + { id = 9057, chance = 10000, maxCount = 8 }, -- small topaz } monster.attacks = { @@ -105,7 +105,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -1000, maxDamage = -1200, length = 10, spread = 3, effect = CONST_ME_POFF, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -1500, maxDamage = -1900, length = 10, spread = 3, effect = CONST_ME_POFF, target = false }, { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 7, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 20000 }, - { name = "plagirath bog", interval = 20000, chance = 25, target = false } + { name = "plagirath bog", interval = 20000, chance = 25, target = false }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.defenses = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 3000, maxDamage = 4000, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 30, speedChange = 440, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, { name = "plagirath summon", interval = 2000, chance = 15, target = false }, - { name = "plagirath heal", interval = 2000, chance = 17, target = false } + { name = "plagirath heal", interval = 2000, chance = 17, target = false }, } monster.elements = { @@ -135,11 +135,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -147,13 +146,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ragiaz.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ragiaz.lua index 4c672814891..640e3873a12 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ragiaz.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/ragiaz.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 0, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -100,7 +100,7 @@ monster.loot = { { id = 282, chance = 3000, maxCount = 5 }, -- giant shimmering pearl (brown) { id = 7642, chance = 3100, maxCount = 5 }, -- great spirit potion { id = 7643, chance = 3000, maxCount = 5 }, -- ultimate health potion - { id = 9057, chance = 3000, maxCount = 8 } -- small topaz + { id = 9057, chance = 3000, maxCount = 8 }, -- small topaz } monster.attacks = { @@ -109,7 +109,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -900, range = 4, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_POFF, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -1000, maxDamage = -1200, length = 10, spread = 3, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -1500, maxDamage = -1900, length = 10, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 7, effect = CONST_ME_POFF, target = false, duration = 20000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 7, effect = CONST_ME_POFF, target = false, duration = 20000 }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 2000, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 20, speedChange = 600, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 4000 }, - { name = "ragiaz transform", interval = 2000, chance = 8, target = false } + { name = "ragiaz transform", interval = 2000, chance = 8, target = false }, } monster.elements = { @@ -138,11 +138,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -150,13 +149,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/razzagorn.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/razzagorn.lua index dd8af695734..fe8aa7b4f14 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/razzagorn.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/razzagorn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 13, lookFeet = 126, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -66,8 +66,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Eruption of Destruction", chance = 15, interval = 2000, count = 2 } - } + { name = "Eruption of Destruction", chance = 15, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -75,7 +75,7 @@ monster.voices = { chance = 10, { text = "YOUR FUTILE ATTACKS ONLY FEED MY RAGE!", yell = false }, { text = "YOU-ARE-WEAK!!", yell = false }, - { text = "DEEESTRUCTIOOON!!", yell = false } + { text = "DEEESTRUCTIOOON!!", yell = false }, } monster.loot = { @@ -112,7 +112,7 @@ monster.loot = { { id = 7642, chance = 46100, maxCount = 10 }, -- great spirit potion { id = 3422, chance = 100, unique = true }, -- great shield { id = 7643, chance = 23000, maxCount = 5 }, -- ultimate health potion - { id = 9057, chance = 10000, maxCount = 8 } -- small topaz + { id = 9057, chance = 10000, maxCount = 8 }, -- small topaz } monster.attacks = { @@ -123,7 +123,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -700, radius = 5, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -1500, maxDamage = -1800, length = 12, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -800, length = 10, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -800, length = 10, spread = 3, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -800, length = 10, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { @@ -132,7 +132,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 3000, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 8, speedChange = 480, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, - { name = "razzagorn summon", interval = 2000, chance = 3, target = false } + { name = "razzagorn summon", interval = 2000, chance = 3, target = false }, } monster.elements = { @@ -152,11 +152,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -164,13 +163,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/redeemed_soul.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/redeemed_soul.lua index da305118f52..64dab1af9c7 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/redeemed_soul.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/redeemed_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1138 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Tainted Caves in the Green Claw Swamp (under the right conditions)." + Locations = "Tainted Caves in the Green Claw Swamp (under the right conditions).", } monster.health = 250 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -77,11 +77,9 @@ monster.voices = { { text = "Free ... finally.", yell = false }, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 15, @@ -89,7 +87,7 @@ monster.defenses = { mitigation = 0.64, { name = "speed", interval = 2000, chance = 8, speedChange = 240, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 20000 }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -109,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/shulgrax.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/shulgrax.lua index 2a4b8a87f91..45f70607936 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/shulgrax.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/shulgrax.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 2, lookFeet = 87, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 40000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 1191, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.FerumbrasAscension.ShulgraxTimer + storageCooldown = Storage.FerumbrasAscension.ShulgraxTimer, } monster.strategiesTarget = { @@ -55,12 +55,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -68,7 +68,7 @@ monster.voices = { chance = 10, { text = "DAMMMMNNNNAAATIONN!", yell = false }, { text = "I WILL FEAST ON YOUR SOUL!", yell = true }, - { text = "YOU ARE ALL DAMNED!", yell = true } + { text = "YOU ARE ALL DAMNED!", yell = true }, } monster.loot = { @@ -110,7 +110,7 @@ monster.loot = { { id = 822, chance = 1000 }, -- lightning legs { id = 7642, chance = 46100, maxCount = 10 }, -- great spirit potion { id = 7643, chance = 23000, maxCount = 5 }, -- ultimate health potion - { id = 9057, chance = 10000, maxCount = 5 } -- small topaz + { id = 9057, chance = 10000, maxCount = 5 }, -- small topaz } monster.attacks = { @@ -119,7 +119,7 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 25, speedChange = -600, radius = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -700, radius = 5, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -800, length = 10, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, } monster.defenses = { @@ -127,7 +127,7 @@ monster.defenses = { armor = 55, { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 400, maxDamage = 6000, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "shulgrax summon", interval = 5000, chance = 5, target = false }, - { name = "speed", interval = 4000, chance = 80, speedChange = 440, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 4000, chance = 80, speedChange = 440, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -140,18 +140,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -159,13 +158,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/sin_devourer.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/sin_devourer.lua index 175c9edfe1a..ab06acd5ca9 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/sin_devourer.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/sin_devourer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2700 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 10, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -73,7 +73,7 @@ monster.loot = { { id = 7427, chance = 120 }, -- chaos mace { id = 9028, chance = 130 }, -- crystal of balance { id = 3007, chance = 1030 }, -- crystal ring - { id = 8042, chance = 520 } -- spirit cloak + { id = 8042, chance = 520 }, -- spirit cloak } monster.attacks = { @@ -81,7 +81,7 @@ monster.attacks = { { name = "nightstalker paralyze", interval = 2000, chance = 19, range = 7, target = false }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -200, range = 1, effect = CONST_ME_HOLYAREA, target = true }, { name = "speed", interval = 2000, chance = 40, speedChange = -600, range = 6, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_ICEAREA, target = true, duration = 20000 }, - { name = "silencer skill reducer", interval = 2000, chance = 30, range = 4, effect = CONST_ME_POFF, target = false } + { name = "silencer skill reducer", interval = 2000, chance = 30, range = 4, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -89,7 +89,7 @@ monster.defenses = { armor = 30, -- mitigation = ???, { name = "combat", interval = 2000, chance = 13, type = COMBAT_HEALING, minDamage = 60, maxDamage = 130, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_YELLOW_RINGS } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_YELLOW_RINGS }, } monster.elements = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/tarbaz.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/tarbaz.lua index 60d55ae602f..5f9c67cad75 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/tarbaz.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/tarbaz.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 3, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 290000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 1188, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.FerumbrasAscension.TarbazTimer + storageCooldown = Storage.FerumbrasAscension.TarbazTimer, } monster.strategiesTarget = { @@ -66,7 +66,7 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "You are a failure.", yell = false } + { text = "You are a failure.", yell = false }, } monster.loot = { @@ -100,7 +100,7 @@ monster.loot = { { id = 22727, chance = 800 }, -- rift lance { id = 3038, chance = 1000 }, -- green gem { id = 8082, chance = 4000 }, -- underworld rod - { id = 22757, chance = 500, unique = true } -- shroud of despair + { id = 22757, chance = 500, unique = true }, -- shroud of despair } monster.attacks = { @@ -109,7 +109,7 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 25, speedChange = -600, radius = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -700, radius = 5, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -800, length = 10, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.defenses = { armor = 100, -- mitigation = ???, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 900, maxDamage = 3500, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "speed", interval = 3000, chance = 30, speedChange = 460, effect = CONST_ME_MAGIC_RED, target = false, duration = 7000 } + { name = "speed", interval = 3000, chance = 30, speedChange = 460, effect = CONST_ME_MAGIC_RED, target = false, duration = 7000 }, } monster.elements = { @@ -137,11 +137,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -149,13 +148,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/the_lord_of_the_lice.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/the_lord_of_the_lice.lua index 8ec8a99647b..1a9d2504c4d 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/the_lord_of_the_lice.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/the_lord_of_the_lice.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -81,7 +81,7 @@ monster.loot = { { id = 239, chance = 94830, maxCount = 10 }, -- great health potion { id = 3098, chance = 100000 }, -- ring of healing { id = 3326, chance = 25860 }, -- epee - { id = 811, chance = 86200 } -- terra mantle + { id = 811, chance = 86200 }, -- terra mantle } monster.attacks = { @@ -92,14 +92,14 @@ monster.attacks = { -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -80, maxDamage = -80, radius = 3, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -420, range = 7, radius = 7, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "mutated rat paralyze", interval = 2000, chance = 20, range = 7, target = false } + { name = "mutated rat paralyze", interval = 2000, chance = 20, range = 7, target = false }, } monster.defenses = { defense = 30, armor = 30, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 250, maxDamage = 550, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 250, maxDamage = 550, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/the_shatterer.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/the_shatterer.lua index c3b77c1f123..76a70e53189 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/the_shatterer.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/the_shatterer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 21, lookFeet = 20, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 220000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 1165, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -54,18 +54,18 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "STOMP! SHAKE! SHATTERER!!", yell = false } + { text = "STOMP! SHAKE! SHATTERER!!", yell = false }, } monster.loot = { @@ -74,7 +74,7 @@ monster.loot = { { id = 7643, chance = 46100, maxCount = 10 }, -- ultimate health potion { id = 3030, chance = 12000, maxCount = 12 }, -- small ruby { id = 3035, chance = 8000, maxCount = 10 }, -- platinum coin - { id = 3031, chance = 30000, maxCount = 200 } -- gold coin + { id = 3031, chance = 30000, maxCount = 200 }, -- gold coin } monster.attacks = { @@ -82,14 +82,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -1000, range = 7, target = false }, { name = "combat", interval = 3000, chance = 44, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -2000, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -400, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false, duration = 15000 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -800, range = 7, radius = 7, effect = CONST_ME_BIGPLANTS, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -800, range = 7, radius = 7, effect = CONST_ME_BIGPLANTS, target = false }, } monster.defenses = { defense = 65, armor = 55, { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 400, maxDamage = 6000, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 4000, chance = 80, speedChange = 440, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 4000, chance = 80, speedChange = 440, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -102,14 +102,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/zamulosh.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/zamulosh.lua index 2aa2dad776e..a3a2338c11a 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/zamulosh.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/zamulosh.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 73, lookFeet = 55, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 1181, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.FerumbrasAscension.ZamuloshTimer + storageCooldown = Storage.FerumbrasAscension.ZamuloshTimer, } monster.strategiesTarget = { @@ -66,8 +66,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "Zamulosh2", chance = 100, interval = 1000, count = 1 } - } + { name = "Zamulosh2", chance = 100, interval = 1000, count = 1 }, + }, } monster.voices = { @@ -100,7 +100,7 @@ monster.loot = { { id = 8050, chance = 770 }, -- crystalline armor { id = 22726, chance = 670 }, -- rift shield { id = 22762, chance = 500, unique = true }, -- maimer - { id = 22555, chance = 500, unique = true } -- stone wall + { id = 22555, chance = 500, unique = true }, -- stone wall } monster.attacks = { @@ -108,7 +108,7 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -800, length = 12, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -2600, maxDamage = -3300, length = 12, spread = 3, effect = CONST_ME_TELEPORT, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -900, maxDamage = -1500, length = 6, spread = 2, effect = CONST_ME_FIREAREA, target = false }, - { name = "speed", interval = 2000, chance = 35, speedChange = -600, radius = 8, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 35, speedChange = -600, radius = 8, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 220, maxDamage = 535, effect = CONST_ME_YELLOW_RINGS, target = false }, { name = "zamulosh invisible", interval = 2000, chance = 25 }, - { name = "zamulosh tp", interval = 2000, chance = 15, target = false } + { name = "zamulosh tp", interval = 2000, chance = 15, target = false }, } monster.elements = { @@ -137,11 +137,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -149,13 +148,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/zamulosh2.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/zamulosh2.lua index 0341cf461b7..e3f7a2cfceb 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/zamulosh2.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/zamulosh2.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 73, lookFeet = 55, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -50,18 +50,18 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "I AM ZAMULOSH!", yell = false } + { text = "I AM ZAMULOSH!", yell = false }, } monster.attacks = { @@ -69,13 +69,13 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -800, length = 12, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -2600, maxDamage = -3300, length = 12, spread = 3, effect = CONST_ME_TELEPORT, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -900, maxDamage = -1500, length = 6, spread = 2, effect = CONST_ME_FIREAREA, target = false }, - { name = "speed", interval = 2000, chance = 35, speedChange = -600, radius = 8, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 35, speedChange = -600, radius = 8, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, } monster.defenses = { defense = 30, armor = 30, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 220, maxDamage = 535, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 220, maxDamage = 535, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -88,14 +88,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 15 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 15 } + { type = COMBAT_DEATHDAMAGE, percent = 15 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/zamulosh3.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/zamulosh3.lua index 65b00b343c7..3d8b71189eb 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/zamulosh3.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/bosses/zamulosh3.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 73, lookFeet = 55, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -50,32 +50,32 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "ZamuloshClone" + "ZamuloshClone", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "I AM ZAMULOSH!", yell = false } + { text = "I AM ZAMULOSH!", yell = false }, } monster.attacks = { { name = "melee", interval = 3000, chance = 100, minDamage = -200, maxDamage = -300 }, - { name = "speed", interval = 1000, chance = 10, speedChange = -700, radius = 8, effect = CONST_ME_MAGIC_RED, target = false, duration = 8000 } + { name = "speed", interval = 1000, chance = 10, speedChange = -700, radius = 8, effect = CONST_ME_MAGIC_RED, target = false, duration = 8000 }, } monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -88,14 +88,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 15 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 15 } + { type = COMBAT_DEATHDAMAGE, percent = 15 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/damned_soul.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/damned_soul.lua index 8d7a5f4892a..10ed2c91eb6 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/damned_soul.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/damned_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 4 + chance = 4, } monster.strategiesTarget = { @@ -62,15 +62,14 @@ monster.voices = { chance = 10, { text = "Forgive Meeeee!", yell = false }, { text = "Mouuuurn meeee!", yell = false }, - { text = "Help meee!", yell = false } + { text = "Help meee!", yell = false }, } -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 35, - armor = 25 + armor = 25, -- mitigation = ???, } @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/desperate_soul.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/desperate_soul.lua index 04b7934a6fe..0782c4d2479 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/desperate_soul.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/desperate_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 69, lookFeet = 66, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 15 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -62,17 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 7, armor = 6, mitigation = 0.00, - { name = "speed", interval = 2000, chance = 25, speedChange = 1200, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 } + { name = "speed", interval = 2000, chance = 25, speedChange = 1200, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } monster.elements = { @@ -92,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/disgusting_ooze.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/disgusting_ooze.lua index 420a4de1ac5..cd72c70e9fb 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/disgusting_ooze.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/disgusting_ooze.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3650 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "DisgustingOozeDeath" + "DisgustingOozeDeath", } monster.light = { @@ -81,7 +81,7 @@ monster.loot = { { id = 3039, chance = 1590 }, -- red gem { id = 3037, chance = 1380 }, -- yellow gem { id = 3038, chance = 640 }, -- green gem - { id = 3041, chance = 320 } -- blue gem + { id = 3041, chance = 320 }, -- blue gem } monster.attacks = { @@ -94,14 +94,14 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -300, maxDamage = -500, radius = 8, effect = CONST_ME_HITBYPOISON, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -400, maxDamage = -725, length = 8, spread = 3, effect = CONST_ME_SMALLPLANTS, target = false }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -170, radius = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -170, radius = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 15, armor = 15, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 450, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 450, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/ferumbras_essence.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/ferumbras_essence.lua index 969b9c223fc..c6ebbfd4321 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/ferumbras_essence.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/ferumbras_essence.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 115 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 9 + chance = 9, } monster.strategiesTarget = { @@ -62,12 +62,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -130, maxDamage = -270, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -110, maxDamage = -270, radius = 9, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -110, maxDamage = -270, radius = 9, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.defenses = { @@ -75,7 +74,7 @@ monster.defenses = { armor = 10, -- mitigation = ???, { name = "speed", interval = 2000, chance = 8, speedChange = 240, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 20000 }, - { name = "combat", interval = 2000, chance = 11, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 11, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_deer.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_deer.lua index 0759b4dfee7..ee007764d13 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_deer.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_deer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 25 @@ -22,7 +22,7 @@ monster.manaCost = 260 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -65,16 +65,16 @@ monster.voices = { monster.loot = { { id = 10297, chance = 850 }, -- antlers { id = 3577, chance = 79550, maxCount = 4 }, -- meat - { id = 3582, chance = 51330, maxCount = 2 } -- ham + { id = 3582, chance = 51330, maxCount = 2 }, -- ham } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 2 } + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 2 }, } monster.defenses = { defense = 2, - armor = 2 + armor = 2, } monster.elements = { @@ -87,14 +87,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_frazzlemaw.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_frazzlemaw.lua index bdebefcaf73..769b0695956 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_frazzlemaw.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_frazzlemaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4100 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,7 +62,7 @@ monster.voices = { chance = 10, { text = "Mwaaaahnducate youuuuuu *gurgle*, mwaaah!", yell = false }, { text = "Mmmwahmwahmwahah, mwaaah!", yell = false }, - { text = "MMMWAHMWAHMWAHMWAAAAH!", yell = true } + { text = "MMMWAHMWAHMWAHMWAAAAH!", yell = true }, } monster.loot = { @@ -95,7 +95,7 @@ monster.loot = { { id = 16126, chance = 5230 }, -- red crystal fragment { id = 20131, chance = 9640 }, -- remains of a crude dream { id = 20199, chance = 15990 }, -- frazzle skin - { id = 3125, chance = 9430 } -- remains of a fish + { id = 3125, chance = 9430 }, -- remains of a fish } monster.attacks = { @@ -104,13 +104,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 13, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = true }, -- bleed { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 16, minDamage = -400, maxDamage = -600, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, - { name = "frazzlemaw paralyze", interval = 2000, chance = 15, target = false } + { name = "frazzlemaw paralyze", interval = 2000, chance = 15, target = false }, } monster.defenses = { defense = 30, armor = 30, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 13, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -123,14 +123,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 15 } + { type = COMBAT_DEATHDAMAGE, percent = 15 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_polar_bear.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_polar_bear.lua index 3487989abd5..f1521e92019 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_polar_bear.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_polar_bear.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 85 @@ -22,7 +22,7 @@ monster.manaCost = 315 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,34 +49,34 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Grrrrrr", yell = false }, - { text = "GROARRR!", yell = true } + { text = "GROARRR!", yell = true }, } monster.loot = { { id = 9650, chance = 930 }, -- polar bear paw { id = 3582, chance = 50760, maxCount = 2 }, -- ham - { id = 3577, chance = 51080, maxCount = 4 } -- meat + { id = 3577, chance = 51080, maxCount = 4 }, -- meat } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 30 } + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 30 }, } monster.defenses = { defense = 10, - armor = 7 + armor = 7, } monster.elements = { @@ -89,14 +89,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_rotworm.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_rotworm.lua index 476943e686a..20232e6252b 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_rotworm.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_rotworm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 65 @@ -22,7 +22,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -69,16 +69,16 @@ monster.loot = { { id = 9692, chance = 9990 }, -- lump of dirt { id = 3582, chance = 20130 }, -- ham { id = 3264, chance = 3110 }, -- sword - { id = 3286, chance = 4540 } -- mace + { id = 3286, chance = 4540 }, -- mace } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 30, attack = 20 } + { name = "melee", interval = 2000, chance = 100, skill = 30, attack = 20 }, } monster.defenses = { defense = 11, - armor = 8 + armor = 8, } monster.elements = { @@ -91,14 +91,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_scorpion.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_scorpion.lua index d56b96af0d0..55f27128f9b 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_scorpion.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_scorpion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 45 @@ -22,7 +22,7 @@ monster.manaCost = 310 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,16 +63,16 @@ monster.voices = { } monster.loot = { - { id = 9651, chance = 4970 } -- scorpion tail + { id = 9651, chance = 4970 }, -- scorpion tail } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 30, attack = 25, condition = { type = CONDITION_POISON, totalDamage = 350, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, skill = 30, attack = 25, condition = { type = CONDITION_POISON, totalDamage = 350, interval = 4000 } }, } monster.defenses = { defense = 5, - armor = 14 + armor = 14, } monster.elements = { @@ -85,14 +85,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_snake.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_snake.lua index 7261215fd7b..e6e5c87c489 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_snake.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_snake.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 15 @@ -22,7 +22,7 @@ monster.manaCost = 205 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,30 +49,29 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "Zzzzzzt", yell = false } + { text = "Zzzzzzt", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 8, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 8, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, } monster.defenses = { defense = 1, - armor = 0 + armor = 0, } monster.elements = { @@ -85,14 +84,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_souleater.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_souleater.lua index f370bdeba2c..cb170ee4017 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_souleater.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_souleater.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1100 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -64,7 +64,7 @@ monster.voices = { { text = "I will devour your soul.", yell = false }, { text = "Souuuls!", yell = false }, { text = "I will feed on you.", yell = false }, - { text = "Aaaahh", yell = false } + { text = "Aaaahh", yell = false }, } monster.loot = { @@ -78,7 +78,7 @@ monster.loot = { { id = 3073, chance = 910 }, -- wand of cosmic energy { id = 3069, chance = 980 }, -- necrotic rod { id = 6299, chance = 330 }, -- death ring - { id = 5884, chance = 140 } -- spirit container + { id = 5884, chance = 140 }, -- spirit container } monster.attacks = { @@ -86,14 +86,14 @@ monster.attacks = { { name = "souleater drown", interval = 2000, chance = 9, target = false }, { name = "combat", interval = 2000, chance = 8, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -100, radius = 1, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -10, maxDamage = -60, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "souleater wave", interval = 2000, chance = 12, minDamage = -100, maxDamage = -210, target = false } + { name = "souleater wave", interval = 2000, chance = 12, minDamage = -100, maxDamage = -210, target = false }, } monster.defenses = { defense = 20, armor = 25, { name = "invisible", interval = 2000, chance = 12, effect = CONST_ME_POFF }, - { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 130, maxDamage = 205, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 130, maxDamage = 205, effect = CONST_ME_MAGIC_RED, target = false }, } monster.elements = { @@ -106,14 +106,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_yielothax.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_yielothax.lua index 2b0cc85a28e..7e3b599fb98 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_yielothax.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/lovely/lovely_yielothax.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,7 +62,7 @@ monster.voices = { chance = 10, { text = "IIEEH!! Iiih iih ih iiih!!!", yell = true }, { text = "Iiiieeeh iiiieh iiieeh!", yell = true }, - { text = "Bsssmm bssmm bsssmmm", yell = true } + { text = "Bsssmm bssmm bsssmmm", yell = true }, } monster.loot = { @@ -81,7 +81,7 @@ monster.loot = { { id = 3326, chance = 520 }, -- epee { id = 9304, chance = 570 }, -- shockwave amulet { id = 816, chance = 830 }, -- lightning pendant - { id = 822, chance = 480 } -- lightning legs + { id = 822, chance = 480 }, -- lightning legs } monster.attacks = { @@ -91,13 +91,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -75, maxDamage = -120, radius = 3, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_HITBYPOISON, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -215, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 13, minDamage = -50, maxDamage = -50, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = true } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 13, minDamage = -50, maxDamage = -50, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = true }, } monster.defenses = { defense = 45, armor = 30, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -110,14 +110,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/rage_of_mazoran.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/rage_of_mazoran.lua index 9a383255cef..07c16797f4e 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/rage_of_mazoran.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/rage_of_mazoran.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,20 +62,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 120, attack = 80 }, { name = "firefield", interval = 2000, chance = 11, range = 7, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_FIREDAMAGE, minDamage = -390, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -65, maxDamage = -330, range = 7, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "hellfire fighter soulfire", interval = 2000, chance = 10, target = false } + { name = "hellfire fighter soulfire", interval = 2000, chance = 10, target = false }, } monster.defenses = { defense = 25, - armor = 25 + armor = 25, -- mitigation = ???, } @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/summons/enthralled_demon.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/summons/enthralled_demon.lua index c88a25ebeff..e170b7f0b0d 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/summons/enthralled_demon.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/summons/enthralled_demon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 130 }, @@ -73,7 +72,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 7, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -300, range = 1, radius = 1, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "firefield", interval = 2000, chance = 14, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, { name = "demon paralyze", interval = 2000, chance = 10, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -480, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -480, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, } monster.defenses = { @@ -81,7 +80,7 @@ monster.defenses = { armor = 40, -- mitigation = ???, { name = "combat", interval = 2000, chance = 14, type = COMBAT_HEALING, minDamage = 150, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = 388, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 388, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } monster.elements = { @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/summons/rift_fragment.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/summons/rift_fragment.lua index 0f8e4042b2d..c959db8a5c2 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/summons/rift_fragment.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/summons/rift_fragment.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a rift fragment" monster.experience = 0 monster.outfit = { - lookTypeEx = 2122 + lookTypeEx = 2122, } monster.health = 7200 @@ -16,7 +16,7 @@ monster.manaCost = 50 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -56,18 +56,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 13 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_DROWNDAMAGE, minDamage = -260, maxDamage = -320, radius = 6, effect = CONST_ME_BUBBLES, target = false }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_DROWNDAMAGE, minDamage = -160, maxDamage = -320, range = 6, effect = CONST_ME_BUBBLES, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_DROWNDAMAGE, minDamage = -160, maxDamage = -320, range = 6, effect = CONST_ME_BUBBLES, target = false }, } monster.defenses = { defense = 65, - armor = 40 + armor = 40, -- mitigation = ???, } @@ -88,7 +87,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/summons/rift_invader.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/summons/rift_invader.lua index 691bac93eb2..b8469206a42 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/summons/rift_invader.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/summons/rift_invader.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6250 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "RiftInvaderDeath" + "RiftInvaderDeath", } monster.light = { @@ -66,15 +66,14 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 130 }, { name = "combat", interval = 2000, chance = 33, type = COMBAT_ENERGYDAMAGE, minDamage = -450, maxDamage = -550, range = 7, radius = 5, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 7, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -300, range = 1, radius = 2, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -300, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -300, maxDamage = -480, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -300, maxDamage = -480, target = true }, } monster.defenses = { @@ -82,7 +81,7 @@ monster.defenses = { armor = 35, -- mitigation = ???, { name = "combat", interval = 2000, chance = 14, type = COMBAT_HEALING, minDamage = 150, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = 388, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 388, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } monster.elements = { @@ -102,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/bone_capsule.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/bone_capsule.lua index 9239dee1a24..c915f186258 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/bone_capsule.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/bone_capsule.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 70000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "BoneCapsule" + "BoneCapsule", } monster.light = { @@ -66,9 +66,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} - +monster.loot = {} monster.defenses = { defense = 55, @@ -93,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/despair.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/despair.lua index 74b20252849..259cbe45a5d 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/despair.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/despair.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a despair" monster.experience = 0 monster.outfit = { - lookTypeEx = 20052 + lookTypeEx = 20052, } monster.health = 10000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -56,11 +56,9 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 44, @@ -85,7 +83,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/electric_sparks.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/electric_sparks.lua index 957b66a073b..45f03328979 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/electric_sparks.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/electric_sparks.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "Electric Sparks" monster.experience = 320 monster.outfit = { - lookTypeEx = 470 + lookTypeEx = 470, } monster.health = 2000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -43,12 +43,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -56,16 +56,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 2000, chance = 50, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -250, range = 1, shootEffect = CONST_ANI_ENERGY, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -250, range = 1, shootEffect = CONST_ANI_ENERGY, target = false }, } monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -78,14 +77,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/eruption_of_destruction.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/eruption_of_destruction.lua index c3f492c9a77..632b879418c 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/eruption_of_destruction.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/eruption_of_destruction.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "an eruption of destruction" monster.experience = 0 monster.outfit = { - lookTypeEx = 391 + lookTypeEx = 391, } monster.health = 8500 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -56,18 +56,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "speed", interval = 2000, chance = 25, speedChange = -600, radius = 7, effect = CONST_ME_LOSEENERGY, target = false, duration = 15000 }, - { name = "eruption of destruction explosion", interval = 10000, chance = 100, minDamage = -1800, maxDamage = -2200, target = false } - + { name = "eruption of destruction explosion", interval = 10000, chance = 100, minDamage = -1800, maxDamage = -2200, target = false }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, -- mitigation = ???, } @@ -88,7 +86,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/guilt.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/guilt.lua index b237db68b05..ade68e26b90 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/guilt.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/guilt.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -62,16 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -500, range = 7, shootEffect = CONST_ANI_ENERGY, target = true } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -500, range = 7, shootEffect = CONST_ANI_ENERGY, target = true }, } monster.defenses = { defense = 199, - armor = 199 + armor = 199, -- mitigation = ???, } @@ -85,14 +84,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/void.lua b/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/void.lua index c9e7ef3b0d7..a2aec3c3db4 100644 --- a/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/void.lua +++ b/data-otservbr-global/monster/quests/ferumbras_ascendant/traps/void.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "void" monster.experience = 320 monster.outfit = { - lookTypeEx = 470 + lookTypeEx = 470, } monster.health = 2000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -43,19 +43,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 10, summons = { - { name = "Enthralled Demon", chance = 25, interval = 2000, count = 10 } - } + { name = "Enthralled Demon", chance = 25, interval = 2000, count = 10 }, + }, } monster.voices = { @@ -63,12 +63,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -81,14 +80,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/animated_sword.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/animated_sword.lua index 01b142df970..60c60ee20e8 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/animated_sword.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/animated_sword.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "an animated sword" monster.experience = 0 monster.outfit = { - lookTypeEx = 24227 + lookTypeEx = 24227, } monster.health = 2000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -56,19 +56,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 50 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -160, radius = 6, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "berserk", interval = 2000, chance = 15, minDamage = -40, maxDamage = -160, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -40, maxDamage = -100, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -40, maxDamage = -100, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, -- mitigation = ???, } @@ -89,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/baby_dragon.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/baby_dragon.lua index fdc262ff770..ca7c5152362 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/baby_dragon.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/baby_dragon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 380 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 45, attack = 0 }, @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = true } + { type = "bleed", condition = true }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/dragonking_zyrtarch.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/dragonking_zyrtarch.lua index 407e13b1142..d49b82f845b 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/dragonking_zyrtarch.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/dragonking_zyrtarch.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 150000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -400 }, @@ -73,12 +72,12 @@ monster.attacks = { -- fire { name = "condition", type = CONDITION_FIRE, interval = 2000, chance = 15, minDamage = -1100, maxDamage = -1100, radius = 5, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -710, maxDamage = -895, length = 9, spread = 4, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -710, maxDamage = -895, length = 9, spread = 3, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -710, maxDamage = -895, length = 9, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { defense = 64, - armor = 52 + armor = 52, -- mitigation = ???, } @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/lady_tenebris.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/lady_tenebris.lua index 1f0a29dbe29..9bee32198a1 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/lady_tenebris.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/lady_tenebris.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 38, lookFeet = 94, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -59,7 +59,7 @@ monster.flags = { } monster.events = { - "HealthForgotten" + "HealthForgotten", } monster.light = { @@ -110,7 +110,7 @@ monster.loot = { { id = 20088, chance = 200 }, -- crude umbral spellbook { id = 24957, chance = 500, unique = true }, -- part of a rune { id = 3021, chance = 200 }, -- sapphire amulet - { id = 20089, chance = 200 } -- umbral spellbook + { id = 20089, chance = 200 }, -- umbral spellbook } monster.attacks = { @@ -118,7 +118,7 @@ monster.attacks = { { name = "combat", interval = 6000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -1200, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -600, radius = 4, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, { name = "tenebris summon", interval = 2000, chance = 14, target = false }, - { name = "tenebris ultimate", interval = 15000, chance = 30, target = false } + { name = "tenebris ultimate", interval = 15000, chance = 30, target = false }, } monster.defenses = { @@ -126,7 +126,7 @@ monster.defenses = { armor = 55, -- mitigation = ???, { name = "combat", interval = 3000, chance = 25, type = COMBAT_HEALING, minDamage = 600, maxDamage = 2700, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -146,11 +146,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -158,13 +157,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/lloyd.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/lloyd.lua index e207dfb6a7a..1c1337760c6 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/lloyd.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/lloyd.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -59,7 +59,7 @@ monster.flags = { } monster.events = { - "LloydPrepareDeath" + "LloydPrepareDeath", } monster.light = { @@ -116,14 +116,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -330, maxDamage = -660, length = 6, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "lloyd wave", interval = 2000, chance = 12, minDamage = -430, maxDamage = -560, target = false }, { name = "lloyd wave2", interval = 2000, chance = 12, minDamage = -230, maxDamage = -460, target = false }, - { name = "lloyd wave3", interval = 2000, chance = 12, minDamage = -430, maxDamage = -660, target = false } + { name = "lloyd wave3", interval = 2000, chance = 12, minDamage = -430, maxDamage = -660, target = false }, } monster.defenses = { defense = 55, armor = 55, mitigation = 2.35, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 180, maxDamage = 250, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 180, maxDamage = 250, target = false }, } monster.elements = { @@ -143,11 +143,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -155,13 +154,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/melting_frozen_horror.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/melting_frozen_horror.lua index bc50a8bd953..173ec3a2ee9 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/melting_frozen_horror.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/melting_frozen_horror.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 70000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.bosstiary = { bossRaceId = 1336, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.ForgottenKnowledge.HorrorTimer + storageCooldown = Storage.ForgottenKnowledge.HorrorTimer, } monster.strategiesTarget = { @@ -59,7 +59,7 @@ monster.flags = { } monster.events = { - "MeltingDeath" + "MeltingDeath", } monster.light = { @@ -104,14 +104,14 @@ monster.attacks = { { name = "hirintror freeze", interval = 2000, chance = 15, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -750, maxDamage = -1050, range = 7, radius = 3, shootEffect = CONST_ANI_ICE, effect = CONST_ME_BLOCKHIT, target = true }, { name = "ice golem paralyze", interval = 2000, chance = 11, target = false }, - { name = "hirintror skill reducer", interval = 2000, chance = 10, target = false } + { name = "hirintror skill reducer", interval = 2000, chance = 10, target = false }, } monster.defenses = { defense = 60, armor = 60, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, radius = 7, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, } monster.elements = { @@ -128,18 +128,17 @@ monster.elements = { } monster.heals = { - { type = COMBAT_ICEDAMAGE, percent = 100 } + { type = COMBAT_ICEDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -147,13 +146,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/mounted_thorn_knight.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/mounted_thorn_knight.lua index 7398cd50638..05e436339b9 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/mounted_thorn_knight.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/mounted_thorn_knight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 6, lookFeet = 119, lookAddons = 3, - lookMount = 626 + lookMount = 626, } monster.health = 100000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -54,7 +54,7 @@ monster.flags = { monster.events = { "ThornKnightDeath", - "HealthForgotten" + "HealthForgotten", } monster.light = { @@ -68,15 +68,14 @@ monster.voices = { { text = "I'm the hunter and you are my prey!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -600, maxDamage = -1000 }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -700, length = 4, spread = 3, effect = CONST_ME_POFF, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_MANADRAIN, minDamage = -1400, maxDamage = -1700, length = 9, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -700, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -250, radius = 10, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -250, radius = 10, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { @@ -85,7 +84,7 @@ monster.defenses = { -- mitigation = ???, { name = "thorn summon", interval = 2000, chance = 20, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 1550, maxDamage = 2550, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 12, speedChange = 620, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 } + { name = "speed", interval = 1000, chance = 12, speedChange = 620, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } monster.elements = { @@ -102,14 +101,14 @@ monster.elements = { } monster.heals = { - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/solid_frozen_horror.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/solid_frozen_horror.lua index d13b11a43ad..2f03a064b82 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/solid_frozen_horror.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/solid_frozen_horror.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 70000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -63,8 +63,7 @@ monster.voices = { { text = "Chrrrrrk! Chrrrk!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -677 }, @@ -72,14 +71,14 @@ monster.attacks = { { name = "hirintror freeze", interval = 2000, chance = 15, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -0, maxDamage = -268, range = 7, radius = 3, shootEffect = CONST_ANI_ICE, effect = CONST_ME_BLOCKHIT, target = true }, { name = "ice golem paralyze", interval = 2000, chance = 11, target = false }, - { name = "hirintror skill reducer", interval = 2000, chance = 10, target = false } + { name = "hirintror skill reducer", interval = 2000, chance = 10, target = false }, } monster.defenses = { defense = 60, armor = 60, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, radius = 7, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, } monster.elements = { @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/soul_of_dragonking_zyrtarch.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/soul_of_dragonking_zyrtarch.lua index 0aa5bb76345..620b62209bb 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/soul_of_dragonking_zyrtarch.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/soul_of_dragonking_zyrtarch.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -103,7 +103,7 @@ monster.loot = { { id = 8074, chance = 500 }, -- spellbook of mind control { id = 11692, chance = 300, unique = true }, -- snake god's sceptre { id = 3035, chance = 90000, maxCount = 6 }, -- platinum coin - { id = 3030, chance = 3000, maxCount = 5 } -- small ruby + { id = 3030, chance = 3000, maxCount = 5 }, -- small ruby } monster.attacks = { @@ -114,14 +114,14 @@ monster.attacks = { { name = "charged energy elemental electrify", interval = 2000, chance = 15, minDamage = -1100, maxDamage = -1100, radius = 5, effect = CONST_ME_YELLOWENERGY, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -710, maxDamage = -895, length = 9, spread = 4, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -710, maxDamage = -895, length = 9, spread = 4, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -710, maxDamage = -895, length = 9, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -710, maxDamage = -895, length = 9, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 64, armor = 52, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 450, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 450, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -141,11 +141,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -153,13 +152,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_blazing_time_guardian.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_blazing_time_guardian.lua index b826c1864a6..736c3233d4e 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_blazing_time_guardian.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_blazing_time_guardian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 150000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 8, summons = { - { name = "time waster", chance = 3, interval = 2000, count = 8 } - } + { name = "time waster", chance = 3, interval = 2000, count = 8 }, + }, } monster.voices = { @@ -82,7 +82,7 @@ monster.loot = { { id = 7440, chance = 2000 }, -- mastermind potion { id = 3098, chance = 2000 }, -- ring of healing { id = 3324, chance = 1000 }, -- skull staff - { id = 22721, chance = 100000 } -- gold token + { id = 22721, chance = 100000 }, -- gold token } monster.attacks = { @@ -93,14 +93,14 @@ monster.attacks = { -- energy damage { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, length = 9, spread = 3, effect = CONST_ME_BLOCKHIT, target = false } + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, length = 9, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { defense = 70, armor = 70, -- mitigation = ???, - { name = "time guardian lost time", interval = 2000, chance = 10, target = false } + { name = "time guardian lost time", interval = 2000, chance = 10, target = false }, } monster.elements = { @@ -117,18 +117,17 @@ monster.elements = { } monster.heals = { - { type = COMBAT_FIREDAMAGE, percent = 100 } + { type = COMBAT_FIREDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -136,13 +135,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_enraged_thorn_knight.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_enraged_thorn_knight.lua index f4c58e6e4ce..024272fdd77 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_enraged_thorn_knight.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_enraged_thorn_knight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 121, lookFeet = 121, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,7 +59,7 @@ monster.flags = { } monster.events = { - "HealthForgotten" + "HealthForgotten", } monster.light = { @@ -109,7 +109,7 @@ monster.loot = { { id = 20203, chance = 1000 }, -- trapped bad dream monster { id = 24954, chance = 500, unique = true }, -- part of a rune { id = 22721, chance = 100000 }, -- gold token - { id = 22516, chance = 100000 } -- silver token + { id = 22516, chance = 100000 }, -- silver token } monster.attacks = { @@ -117,7 +117,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -700, length = 4, spread = 3, effect = CONST_ME_POFF, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_MANADRAIN, minDamage = -1400, maxDamage = -1700, length = 9, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -700, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -250, radius = 10, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -250, radius = 10, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { @@ -125,7 +125,7 @@ monster.defenses = { armor = 60, -- mitigation = ???, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 1550, maxDamage = 2550, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 12, speedChange = 620, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 } + { name = "speed", interval = 1000, chance = 12, speedChange = 620, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } monster.elements = { @@ -145,15 +145,14 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } monster.heals = { - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -161,13 +160,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_freezing_time_guardian.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_freezing_time_guardian.lua index ac0c7ef5b17..e43d501838b 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_freezing_time_guardian.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_freezing_time_guardian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 150000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -83,7 +83,7 @@ monster.loot = { { id = 3439, chance = 100 }, -- phoenix shield { id = 7417, chance = 100 }, -- runed sword { id = 22721, chance = 100000 }, -- gold token - { id = 22516, chance = 100000 } -- silver token + { id = 22516, chance = 100000 }, -- silver token } monster.attacks = { @@ -94,14 +94,14 @@ monster.attacks = { -- energy damage { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, length = 9, spread = 3, effect = CONST_ME_BLOCKHIT, target = false } + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, length = 9, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { defense = 70, armor = 70, -- mitigation = ???, - { name = "time guardian lost time", interval = 2000, chance = 10, target = false } + { name = "time guardian lost time", interval = 2000, chance = 10, target = false }, } monster.elements = { @@ -118,18 +118,17 @@ monster.elements = { } monster.heals = { - { type = COMBAT_ICEDAMAGE, percent = 100 } + { type = COMBAT_ICEDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -137,13 +136,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_last_lore_keeper.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_last_lore_keeper.lua index b20a26f7be9..c000d59ed7f 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_last_lore_keeper.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_last_lore_keeper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 750000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 1304, bossRace = RARITY_NEMESIS, - storageCooldown = Storage.ForgottenKnowledge.LastLoreTimer + storageCooldown = Storage.ForgottenKnowledge.LastLoreTimer, } monster.strategiesTarget = { @@ -55,19 +55,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 6, summons = { - { name = "sword of vengeance", chance = 50, interval = 2000, count = 6 } - } + { name = "sword of vengeance", chance = 50, interval = 2000, count = 6 }, + }, } monster.voices = { @@ -122,7 +122,7 @@ monster.loot = { { id = 24972, chance = 800 }, -- key to knowledge { id = 20080, chance = 400 }, -- umbral hammer { id = 24954, chance = 400 }, -- part of a rune - { id = 23375, chance = 3000, maxCount = 5 } -- supreme health potion + { id = 23375, chance = 3000, maxCount = 5 }, -- supreme health potion } monster.attacks = { @@ -132,13 +132,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -640, maxDamage = -800, radius = 5, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -420, maxDamage = -954, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -640, maxDamage = -800, radius = 5, effect = CONST_ME_STONES, target = true }, - { name = "medusa paralyze", interval = 2000, chance = 20, target = false } + { name = "medusa paralyze", interval = 2000, chance = 20, target = false }, } monster.defenses = { defense = 50, armor = 50, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 1500, maxDamage = 3000, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 1500, maxDamage = 3000, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -151,18 +151,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 20 }, - { type = COMBAT_DEATHDAMAGE, percent = 20 } + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -170,13 +169,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_shielded_thorn_knight.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_shielded_thorn_knight.lua index 663f649261a..15adaa5ef7f 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_shielded_thorn_knight.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_shielded_thorn_knight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 121, lookFeet = 121, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 70000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -54,7 +54,7 @@ monster.flags = { monster.events = { "ThornKnightDeath", - "HealthForgotten" + "HealthForgotten", } monster.light = { @@ -69,15 +69,14 @@ monster.voices = { { text = "You will fall before our might!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -600, maxDamage = -1000 }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -700, length = 4, spread = 3, effect = CONST_ME_POFF, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_MANADRAIN, minDamage = -1400, maxDamage = -1700, length = 9, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -700, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -250, radius = 10, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -250, radius = 10, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { @@ -85,7 +84,7 @@ monster.defenses = { armor = 60, -- mitigation = ???, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 1550, maxDamage = 2550, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 12, speedChange = 620, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 } + { name = "speed", interval = 1000, chance = 12, speedChange = 620, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } monster.elements = { @@ -102,14 +101,14 @@ monster.elements = { } monster.heals = { - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_time_guardian.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_time_guardian.lua index 9ce10f0e04f..7b744c6bf48 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_time_guardian.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/the_time_guardian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 150000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.bosstiary = { bossRaceId = 1290, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.ForgottenKnowledge.TimeGuardianTimer + storageCooldown = Storage.ForgottenKnowledge.TimeGuardianTimer, } monster.strategiesTarget = { @@ -105,7 +105,7 @@ monster.loot = { { id = 3439, chance = 100 }, -- phoenix shield { id = 7417, chance = 100 }, -- runed sword { id = 22721, chance = 100000 }, -- gold token - { id = 22516, chance = 100000 } -- silver token + { id = 22516, chance = 100000 }, -- silver token } monster.attacks = { @@ -116,7 +116,7 @@ monster.attacks = { -- energy damage { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, length = 9, spread = 3, effect = CONST_ME_BLOCKHIT, target = false } + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, length = 9, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { @@ -124,7 +124,7 @@ monster.defenses = { armor = 70, -- mitigation = ???, { name = "time guardian", interval = 2000, chance = 10, target = false }, - { name = "time guardiann", interval = 2000, chance = 10, target = false } + { name = "time guardiann", interval = 2000, chance = 10, target = false }, } monster.elements = { @@ -144,11 +144,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -156,13 +155,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/thorn_steed.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/thorn_steed.lua index 736dc4128b0..2525fe0e910 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/thorn_steed.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bosses/thorn_steed.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,16 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 100, attack = 250 } + { name = "melee", interval = 2000, chance = 100, skill = 100, attack = 250 }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, -- mitigation = ???, } @@ -89,14 +88,14 @@ monster.elements = { } monster.heals = { - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/bound_astral_power.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/bound_astral_power.lua index 86e5eb84fdc..f012b1c1185 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/bound_astral_power.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/bound_astral_power.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 70000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,18 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 100, attack = 50 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -500, length = 6, spread = 2, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -450, radius = 5, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -450, radius = 5, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = true }, } monster.defenses = { defense = 50, - armor = 50 + armor = 50, -- mitigation = ???, } @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/corrupted_soul.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/corrupted_soul.lua index 544469e4160..07774075859 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/corrupted_soul.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/corrupted_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1100 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -50,7 +50,7 @@ monster.flags = { } monster.events = { - "CorruptedSoul" + "CorruptedSoul", } monster.light = { @@ -63,15 +63,14 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 60 }, { name = "souleater drown", interval = 2000, chance = 9, target = false }, { name = "combat", interval = 2000, chance = 8, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -100, radius = 1, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -10, maxDamage = -60, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "souleater wave", interval = 2000, chance = 12, minDamage = -100, maxDamage = -210, target = false } + { name = "souleater wave", interval = 2000, chance = 12, minDamage = -100, maxDamage = -210, target = false }, } monster.defenses = { @@ -79,7 +78,7 @@ monster.defenses = { armor = 25, mitigation = 0.51, { name = "invisible", interval = 2000, chance = 12, effect = CONST_ME_POFF }, - { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 130, maxDamage = 205, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 130, maxDamage = 205, effect = CONST_ME_MAGIC_RED, target = false }, } monster.elements = { @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_a.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_a.lua index c4c040920b4..c85eda464fe 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_a.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_a.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a cosmic energy prism A" monster.experience = 840 monster.outfit = { - lookTypeEx = 2187 + lookTypeEx = 2187, } monster.health = 1000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -44,7 +44,7 @@ monster.flags = { } monster.events = { - "EnergyPrism" + "EnergyPrism", } monster.light = { @@ -58,8 +58,7 @@ monster.voices = { { text = "*Zap!*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -71 }, @@ -89,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_a_invu.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_a_invu.lua index 1302325a0f5..846d6eab7ab 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_a_invu.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_a_invu.lua @@ -5,7 +5,7 @@ monster.name = "Cosmic Energy Prism A" monster.description = "cosmic energy prism A" monster.experience = 840 monster.outfit = { - lookTypeEx = 2187 + lookTypeEx = 2187, } monster.health = 1000 @@ -17,7 +17,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -41,26 +41,25 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "*Zap!*", yell = false } + { text = "*Zap!*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 50, - armor = 50 + armor = 50, } monster.elements = { @@ -73,14 +72,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 50 }, { type = COMBAT_HOLYDAMAGE, percent = 50 }, - { type = COMBAT_DEATHDAMAGE, percent = 50 } + { type = COMBAT_DEATHDAMAGE, percent = 50 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_b.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_b.lua index 50bcf4bd14e..eb90930545e 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_b.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_b.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a cosmic energy prism B" monster.experience = 840 monster.outfit = { - lookTypeEx = 2187 + lookTypeEx = 2187, } monster.health = 1000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -44,7 +44,7 @@ monster.flags = { } monster.events = { - "EnergyPrism" + "EnergyPrism", } monster.light = { @@ -58,8 +58,7 @@ monster.voices = { { text = "*Zap!*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -71 }, @@ -89,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_b_invu.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_b_invu.lua index f20ad2f6f97..1bae34b1e3e 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_b_invu.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_b_invu.lua @@ -5,7 +5,7 @@ monster.name = "Cosmic Energy Prism B" monster.description = "cosmic energy prism B" monster.experience = 840 monster.outfit = { - lookTypeEx = 2187 + lookTypeEx = 2187, } monster.health = 1000 @@ -17,7 +17,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -41,26 +41,25 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "*Zap!*", yell = false } + { text = "*Zap!*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 50, - armor = 50 + armor = 50, } monster.elements = { @@ -73,14 +72,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 50 }, { type = COMBAT_HOLYDAMAGE, percent = 50 }, - { type = COMBAT_DEATHDAMAGE, percent = 50 } + { type = COMBAT_DEATHDAMAGE, percent = 50 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_c.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_c.lua index 6a88b00dd99..b8de11033d7 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_c.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_c.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a cosmic energy prism C" monster.experience = 840 monster.outfit = { - lookTypeEx = 2187 + lookTypeEx = 2187, } monster.health = 1000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -44,7 +44,7 @@ monster.flags = { } monster.events = { - "EnergyPrism" + "EnergyPrism", } monster.light = { @@ -58,8 +58,7 @@ monster.voices = { { text = "*Zap!*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -71 }, @@ -89,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_c_invu.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_c_invu.lua index 43425d38281..4fa75e5f2d6 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_c_invu.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_c_invu.lua @@ -5,7 +5,7 @@ monster.name = "Cosmic Energy Prism C" monster.description = "cosmic energy prism C" monster.experience = 840 monster.outfit = { - lookTypeEx = 2187 + lookTypeEx = 2187, } monster.health = 1000 @@ -17,7 +17,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -41,26 +41,25 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "*Zap!*", yell = false } + { text = "*Zap!*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 50, - armor = 50 + armor = 50, } monster.elements = { @@ -73,14 +72,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 50 }, { type = COMBAT_HOLYDAMAGE, percent = 50 }, - { type = COMBAT_DEATHDAMAGE, percent = 50 } + { type = COMBAT_DEATHDAMAGE, percent = 50 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_d.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_d.lua index d5845f8c79d..876f47ddcff 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_d.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_d.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a cosmic energy prism D" monster.experience = 840 monster.outfit = { - lookTypeEx = 2187 + lookTypeEx = 2187, } monster.health = 1000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -44,7 +44,7 @@ monster.flags = { } monster.events = { - "EnergyPrism" + "EnergyPrism", } monster.light = { @@ -53,7 +53,7 @@ monster.light = { } monster.events = { - "EnergyPrism" + "EnergyPrism", } monster.voices = { @@ -62,8 +62,7 @@ monster.voices = { { text = "*Zap!*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -71 }, @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_d_invu.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_d_invu.lua index 82744c56eb5..f88dc8bc43a 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_d_invu.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/cosmic_energy_prism_d_invu.lua @@ -5,7 +5,7 @@ monster.name = "Cosmic Energy Prism D" monster.description = "cosmic energy prism D" monster.experience = 840 monster.outfit = { - lookTypeEx = 2187 + lookTypeEx = 2187, } monster.health = 1000 @@ -17,7 +17,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -41,26 +41,25 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "*Zap!*", yell = false } + { text = "*Zap!*", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 50, - armor = 50 + armor = 50, } monster.elements = { @@ -73,14 +72,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 50 }, { type = COMBAT_HOLYDAMAGE, percent = 50 }, - { type = COMBAT_DEATHDAMAGE, percent = 50 } + { type = COMBAT_DEATHDAMAGE, percent = 50 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/dragon_egg.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/dragon_egg.lua index 6a09e8c9ef3..ae92b32650b 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/dragon_egg.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/dragon_egg.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a dragon egg" monster.experience = 0 monster.outfit = { - lookTypeEx = 25077 + lookTypeEx = 25077, } monster.health = 5000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -45,7 +45,7 @@ monster.flags = { monster.events = { "DragonEggPrepareDeath", - "DragonEggHealthChange" + "DragonEggHealthChange", } monster.light = { @@ -58,11 +58,9 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 5, @@ -71,7 +69,7 @@ monster.defenses = { } monster.heals = { - { type = COMBAT_FIREDAMAGE, percent = 100 } + { type = COMBAT_FIREDAMAGE, percent = 100 }, } monster.elements = { @@ -91,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/dragon_servant.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/dragon_servant.lua index ff0ebd00ed8..55e1f00a273 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/dragon_servant.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/dragon_servant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1900 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 20, minDamage = -100, maxDamage = -200 }, @@ -76,7 +75,7 @@ monster.defenses = { defense = 48, armor = 32, mitigation = 1.29, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 55, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 55, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/frozen_man.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/frozen_man.lua index 4a7b2ff1afd..a6adf6f8b10 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/frozen_man.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/frozen_man.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a frozen man" monster.experience = 0 monster.outfit = { - lookTypeEx = 7311 + lookTypeEx = 7311, } monster.health = 100 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -58,11 +58,9 @@ monster.voices = { { text = "Slooow the Hooorrorrrr!", yell = false }, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 1, @@ -80,14 +78,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/frozen_minion.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/frozen_minion.lua index 855dbaf2ae8..fb5782ba8cc 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/frozen_minion.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/frozen_minion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,8 +59,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -196 }, @@ -73,7 +72,7 @@ monster.defenses = { defense = 9, armor = 7, mitigation = 0.30, - { name = "frozen minion heal", interval = 2000, chance = 15, target = false } + { name = "frozen minion heal", interval = 2000, chance = 15, target = false }, } monster.elements = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/icicle.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/icicle.lua index ac207525c84..4f154635a47 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/icicle.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/icicle.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,8 +59,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -219 }, @@ -71,7 +70,7 @@ monster.defenses = { defense = 199, armor = 199, mitigation = 0.50, - { name = "icicle heal", interval = 2000, chance = 25, target = false } + { name = "icicle heal", interval = 2000, chance = 25, target = false }, } monster.elements = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/lost_time.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/lost_time.lua index 3687629677d..4aa60efa814 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/lost_time.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/lost_time.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "lost time" monster.experience = 0 monster.outfit = { - lookTypeEx = 24963 + lookTypeEx = 24963, } monster.health = 2000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -56,12 +56,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 25 }, - { name = "white shade paralyze", interval = 2000, chance = 18, target = false } + { name = "white shade paralyze", interval = 2000, chance = 18, target = false }, } monster.defenses = { @@ -87,7 +86,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/possessed_tree.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/possessed_tree.lua index cfcfd5ff006..c8e0fb70d21 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/possessed_tree.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/possessed_tree.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -53,7 +53,7 @@ monster.flags = { } monster.events = { - "PossessedTree" + "PossessedTree", } monster.light = { @@ -66,8 +66,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -162 }, @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/shadow_fiend.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/shadow_fiend.lua index a54c6e0e245..28855f25f5f 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/shadow_fiend.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/shadow_fiend.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 10, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -320, condition = { type = CONDITION_POISON, totalDamage = 80, interval = 4000 } }, @@ -75,7 +74,7 @@ monster.defenses = { defense = 35, armor = 30, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_HEALING, minDamage = 150, maxDamage = 185, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 13, type = COMBAT_HEALING, minDamage = 150, maxDamage = 185, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/shadow_tentacle.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/shadow_tentacle.lua index 6d8ec8c9bc7..28b4c15be47 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/shadow_tentacle.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/shadow_tentacle.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 22500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,21 +62,20 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 88, attack = 100 }, { name = "blightwalker curse", interval = 2000, chance = 10, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -65, maxDamage = -135, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "drunk", interval = 2000, chance = 20, radius = 7, effect = CONST_ME_HITBYPOISON, target = false, duration = 35000 }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -165, maxDamage = -535, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -165, maxDamage = -535, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 15, armor = 15, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 225, maxDamage = 850, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 225, maxDamage = 850, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -89,14 +88,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 50 }, { type = COMBAT_HOLYDAMAGE, percent = -30 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/soulcatcher.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/soulcatcher.lua index 707690aa7a6..da8eea99365 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/soulcatcher.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/soulcatcher.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a soulcatcher" monster.experience = 320 monster.outfit = { - lookTypeEx = 11053 + lookTypeEx = 11053, } monster.health = 50000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -44,7 +44,7 @@ monster.flags = { } monster.events = { - "SoulcatcherSummon" + "SoulcatcherSummon", } monster.light = { @@ -57,11 +57,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -400, radius = 3, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -400, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -69,7 +68,7 @@ monster.defenses = { armor = 50, mitigation = 0.51, { name = "soulcatcher summon", interval = 2000, chance = 10, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 100, maxDamage = 145, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 100, maxDamage = 145, effect = CONST_ME_HITBYFIRE, target = false }, } monster.elements = { @@ -89,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/sword_of_vengeance.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/sword_of_vengeance.lua index 8d5d6cedd28..4bcd71b8769 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/sword_of_vengeance.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/sword_of_vengeance.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a sword of vengeance" monster.experience = 0 monster.outfit = { - lookTypeEx = 24227 + lookTypeEx = 24227, } monster.health = 2000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -56,21 +56,20 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -242 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -160, radius = 6, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "berserk", interval = 2000, chance = 15, minDamage = -40, maxDamage = -160, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -40, maxDamage = -100, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -40, maxDamage = -100, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { defense = 30, armor = 30, mitigation = 0.70, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 225, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 225, effect = CONST_ME_HITBYFIRE, target = false }, } monster.elements = { @@ -90,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/the_distorted_astral_source.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/the_distorted_astral_source.lua index 2d13844083a..bf4cd796088 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/the_distorted_astral_source.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/the_distorted_astral_source.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "The Distorted Astral Source" monster.experience = 3000 monster.outfit = { - lookTypeEx = 24229 + lookTypeEx = 24229, } monster.health = 10000000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,7 +47,7 @@ monster.flags = { } monster.events = { - "DistortedSource" + "DistortedSource", } monster.light = { @@ -60,22 +60,21 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -330 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, range = 7, radius = 6, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_PURPLEENERGY, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, range = 7, radius = 6, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -400, length = 5, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -400, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -400, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.defenses = { defense = 55, armor = 55, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 1300, target = false } + { name = "combat", interval = 2000, chance = 17, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 1300, target = false }, } monster.elements = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/thorn_minion.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/thorn_minion.lua index e5d2112fab1..84c22d0cea8 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/thorn_minion.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/thorn_minion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,22 +62,21 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -264 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -195, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -800, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false, duration = 30000 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -280, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -400, length = 4, spread = 3, effect = CONST_ME_CARNIPHILA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -400, length = 4, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, } monster.defenses = { defense = 20, armor = 20, mitigation = 0.99, - { name = "speed", interval = 2000, chance = 30, speedChange = 250, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 4000 } + { name = "speed", interval = 2000, chance = 30, speedChange = 250, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 4000 }, } monster.elements = { @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/time_keeper.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/time_keeper.lua index 43d320ee871..d1a8eccee15 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/time_keeper.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/time_keeper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -62,13 +62,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -113 }, { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -4, maxDamage = -6, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_YALAHARIGHOST, target = false }, - { name = "white shade paralyze", interval = 2000, chance = 18, target = false } + { name = "white shade paralyze", interval = 2000, chance = 18, target = false }, } monster.defenses = { @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/time_waster.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/time_waster.lua index 0a999d3689c..69fd786aa9f 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/time_waster.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/time_waster.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a time waster" monster.experience = 0 monster.outfit = { - lookTypeEx = 23729 + lookTypeEx = 23729, } monster.health = 1000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -56,18 +56,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 100, attack = 100 }, { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -40, maxDamage = -60, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_YALAHARIGHOST, target = false }, - { name = "white shade paralyze", interval = 2000, chance = 18, target = false } + { name = "white shade paralyze", interval = 2000, chance = 18, target = false }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, -- mitigation = ???, } @@ -88,7 +87,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_blightwalker.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_blightwalker.lua index 9d19bbb4a5a..20a4f41591d 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_blightwalker.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_blightwalker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8900 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,8 +59,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -490 }, @@ -68,7 +67,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -65, maxDamage = -135, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "drunk", interval = 2000, chance = 10, radius = 3, effect = CONST_ME_HITBYPOISON, target = false, duration = 5000 }, { name = "blightwalker curse", interval = 2000, chance = 15, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -300, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -300, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 30000 }, } monster.defenses = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_defiler.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_defiler.lua index 227795f47ef..1073f5121b1 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_defiler.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_defiler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3650 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,8 +59,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240, condition = { type = CONDITION_POISON, totalDamage = 150, interval = 4000 } }, @@ -70,14 +69,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -170, radius = 3, effect = CONST_ME_POISONAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -500, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_SMALLPLANTS, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 15000 }, } monster.defenses = { defense = 20, armor = 60, mitigation = 1.32, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 280, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 280, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_demon.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_demon.lua index 3b1b5a30d4b..e9c8e24197d 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_demon.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_demon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,8 +59,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -520 }, @@ -69,7 +68,7 @@ monster.attacks = { { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -490, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -300, range = 1, shootEffect = CONST_ANI_ENERGY, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } monster.defenses = { @@ -77,7 +76,7 @@ monster.defenses = { armor = 44, mitigation = 1.74, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 180, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -97,14 +96,14 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_demon_outcast.lua b/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_demon_outcast.lua index b3b3afb854d..3bd48a8d070 100644 --- a/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_demon_outcast.lua +++ b/data-otservbr-global/monster/quests/forgotten_knowledge/unbound_demon_outcast.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6900 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -57,8 +57,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "energy elemental", chance = 10, interval = 2000, count = 2 } - } + { name = "energy elemental", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -66,8 +66,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, @@ -75,14 +74,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_YELLOWENERGY, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, effect = CONST_ME_ENERGYHIT, target = true }, { name = "demon outcast skill reducer", interval = 2000, chance = 10, range = 5, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.defenses = { defense = 40, armor = 49, mitigation = 1.60, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -102,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/black_cobra.lua b/data-otservbr-global/monster/quests/grave_danger/black_cobra.lua index a03d7396f14..9ec2b945272 100644 --- a/data-otservbr-global/monster/quests/grave_danger/black_cobra.lua +++ b/data-otservbr-global/monster/quests/grave_danger/black_cobra.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,18 +59,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150, condition = { type = CONDITION_POISON, totalDamage = 200, interval = 4000 } }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -20, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -20, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { defense = 74, - armor = 74 + armor = 74, -- mitigation = ???, } @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/bosses/count_vlarkorth.lua b/data-otservbr-global/monster/quests/grave_danger/bosses/count_vlarkorth.lua index 13cf725f781..e24de657fd3 100644 --- a/data-otservbr-global/monster/quests/grave_danger/bosses/count_vlarkorth.lua +++ b/data-otservbr-global/monster/quests/grave_danger/bosses/count_vlarkorth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 83, lookFeet = 20, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 75000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1753, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_20.GraveDanger.Bosses.CountVlarkorthTimer + storageCooldown = Storage.Quest.U12_20.GraveDanger.Bosses.CountVlarkorthTimer, } monster.strategiesTarget = { @@ -63,8 +63,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "Soulless Minion", chance = 70, interval = 5500, count = 4 } - } + { name = "Soulless Minion", chance = 70, interval = 5500, count = 4 }, + }, } monster.voices = { @@ -109,14 +109,14 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -800, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 2300, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -250, maxDamage = -350, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -1, maxDamage = -250, length = 7, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, - { name = "combat", interval = 2500, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -1500, length = 7, spread = 0, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2500, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -1500, length = 7, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { defense = 25, armor = 78, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_HEALING, minDamage = 150, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_HEALING, minDamage = 150, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -136,11 +136,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -148,13 +147,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/bosses/duke_krule.lua b/data-otservbr-global/monster/quests/grave_danger/bosses/duke_krule.lua index d26e6e5e1cf..7a3feadae95 100644 --- a/data-otservbr-global/monster/quests/grave_danger/bosses/duke_krule.lua +++ b/data-otservbr-global/monster/quests/grave_danger/bosses/duke_krule.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 79, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 75000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1758, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_20.GraveDanger.Bosses.DukeKruleTimer + storageCooldown = Storage.Quest.U12_20.GraveDanger.Bosses.DukeKruleTimer, } monster.strategiesTarget = { @@ -68,8 +68,8 @@ monster.voices = { monster.summon = { maxSummons = 4, summons = { - { name = "Soul Scourge", chance = 20, interval = 2000, count = 4 } - } + { name = "Soul Scourge", chance = 20, interval = 2000, count = 4 }, + }, } monster.loot = { @@ -102,14 +102,14 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -900 }, { name = "combat", interval = 3500, chance = 37, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1200, length = 7, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 2500, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -1000, length = 7, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, - { name = "combat", interval = 4200, chance = 40, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -500, radius = 9, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 4200, chance = 40, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -500, radius = 9, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { defense = 25, armor = 78, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_HEALING, minDamage = 150, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_HEALING, minDamage = 150, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,11 +129,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -141,13 +140,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/bosses/earl_osam.lua b/data-otservbr-global/monster/quests/grave_danger/bosses/earl_osam.lua index 3498125a71d..4f30a8a3d7c 100644 --- a/data-otservbr-global/monster/quests/grave_danger/bosses/earl_osam.lua +++ b/data-otservbr-global/monster/quests/grave_danger/bosses/earl_osam.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 79, lookFeet = 95, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 75000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1757, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_20.GraveDanger.Bosses.EarlOsamTimer + storageCooldown = Storage.Quest.U12_20.GraveDanger.Bosses.EarlOsamTimer, } monster.strategiesTarget = { @@ -63,8 +63,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "Frozen Soul", chance = 50, interval = 2000, count = 4 } - } + { name = "Frozen Soul", chance = 50, interval = 2000, count = 4 }, + }, } monster.voices = { @@ -98,7 +98,7 @@ monster.loot = { { name = "token of love", chance = 1200 }, { name = "rotten heart", chance = 1700 }, { name = "terra helmet", chance = 730 }, - { name = "final judgement", chance = 440 } + { name = "final judgement", chance = 440 }, } monster.attacks = { @@ -112,7 +112,7 @@ monster.defenses = { defense = 25, armor = 78, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_HEALING, minDamage = 350, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_HEALING, minDamage = 350, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -132,11 +132,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -144,13 +143,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/bosses/king_zelos.lua b/data-otservbr-global/monster/quests/grave_danger/bosses/king_zelos.lua index 9817ca058d5..a81b85883b2 100644 --- a/data-otservbr-global/monster/quests/grave_danger/bosses/king_zelos.lua +++ b/data-otservbr-global/monster/quests/grave_danger/bosses/king_zelos.lua @@ -10,11 +10,11 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.events = { - "zelosDeath" + "zelosDeath", } monster.health = 480000 @@ -31,7 +31,7 @@ monster.bosstiary = { monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.flags = { @@ -50,7 +50,7 @@ monster.flags = { healthHidden = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.loot = { @@ -87,7 +87,7 @@ monster.attacks = { { name = "combat", type = COMBAT_FIREDAMAGE, interval = 2000, chance = 15, length = 8, spread = 0, minDamage = -1200, maxDamage = -3200, effect = CONST_ME_HITBYFIRE }, { name = "combat", type = COMBAT_LIFEDRAIN, interval = 2000, chance = 10, length = 8, spread = 3, minDamage = -600, maxDamage = -1600, effect = CONST_ME_SMALLCLOUDS }, { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2000, chance = 30, radius = 6, minDamage = -1200, maxDamage = -1500, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2000, chance = 20, length = 8, minDamage = -1700, maxDamage = -2000, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2000, chance = 20, length = 8, minDamage = -1700, maxDamage = -2000, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { @@ -122,8 +122,7 @@ monster.voices = { { text = "My lich-knights will conquer this world for me!", yell = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -131,13 +130,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/bosses/lord_azaram.lua b/data-otservbr-global/monster/quests/grave_danger/bosses/lord_azaram.lua index 3e4f00e2bc7..dad7408925d 100644 --- a/data-otservbr-global/monster/quests/grave_danger/bosses/lord_azaram.lua +++ b/data-otservbr-global/monster/quests/grave_danger/bosses/lord_azaram.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 81, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 75000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1756, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_20.GraveDanger.Bosses.LordAzaramTimer + storageCooldown = Storage.Quest.U12_20.GraveDanger.Bosses.LordAzaramTimer, } monster.strategiesTarget = { @@ -63,8 +63,8 @@ monster.light = { monster.summon = { maxSummons = 5, summons = { - { name = "Condensed Sins", chance = 50, interval = 2000, count = 5 } - } + { name = "Condensed Sins", chance = 50, interval = 2000, count = 5 }, + }, } monster.voices = { @@ -132,11 +132,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -144,13 +143,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/bosses/scarlett_etzel.lua b/data-otservbr-global/monster/quests/grave_danger/bosses/scarlett_etzel.lua index 09fa6be385b..85f2ae70661 100644 --- a/data-otservbr-global/monster/quests/grave_danger/bosses/scarlett_etzel.lua +++ b/data-otservbr-global/monster/quests/grave_danger/bosses/scarlett_etzel.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -106,7 +106,7 @@ monster.loot = { { name = "cobra rod", chance = 650 }, { name = "cobra sword", chance = 650 }, { name = "cobra wand", chance = 650 }, - { name = "cobra amulet", chance = 350 } + { name = "cobra amulet", chance = 350 }, } monster.attacks = { @@ -114,7 +114,6 @@ monster.attacks = { { name = "sudden death rune", interval = 2000, chance = 16, minDamage = -400, maxDamage = -600, target = true }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_HOLYDAMAGE, minDamage = -450, maxDamage = -640, length = 7, effect = CONST_ME_HOLYAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -480, maxDamage = -800, radius = 5, effect = CONST_ME_EXPLOSIONHIT, target = false }, - } monster.defenses = { @@ -140,11 +139,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -152,13 +150,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/bosses/sir_baeloc.lua b/data-otservbr-global/monster/quests/grave_danger/bosses/sir_baeloc.lua index ec73e40905b..fdafc56a40a 100644 --- a/data-otservbr-global/monster/quests/grave_danger/bosses/sir_baeloc.lua +++ b/data-otservbr-global/monster/quests/grave_danger/bosses/sir_baeloc.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 3, lookFeet = 93, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 75000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1755, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_20.GraveDanger.Bosses.BaelocNictrosTimer + storageCooldown = Storage.Quest.U12_20.GraveDanger.Bosses.BaelocNictrosTimer, } monster.strategiesTarget = { @@ -63,8 +63,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Retainer of Baeloc", chance = 20, interval = 2000, count = 3 } - } + { name = "Retainer of Baeloc", chance = 20, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -110,7 +110,7 @@ monster.defenses = { defense = 25, armor = 78, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_HEALING, minDamage = 350, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_HEALING, minDamage = 350, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -130,11 +130,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -142,13 +141,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/bosses/sir_nictros.lua b/data-otservbr-global/monster/quests/grave_danger/bosses/sir_nictros.lua index bcad2e4aacd..0301152597b 100644 --- a/data-otservbr-global/monster/quests/grave_danger/bosses/sir_nictros.lua +++ b/data-otservbr-global/monster/quests/grave_danger/bosses/sir_nictros.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 75000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1754, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_20.GraveDanger.Bosses.BaelocNictrosTimer + storageCooldown = Storage.Quest.U12_20.GraveDanger.Bosses.BaelocNictrosTimer, } monster.strategiesTarget = { @@ -52,7 +52,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { @@ -61,7 +61,7 @@ monster.events = { monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -72,8 +72,8 @@ monster.voices = { monster.summon = { maxSummons = 3, summons = { - { name = "Squire of Nictros", chance = 20, interval = 2000, count = 3 } - } + { name = "Squire of Nictros", chance = 20, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -81,8 +81,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -- melee: 852, 505 --death ring: 510,464, 487, 632, 210 @@ -101,7 +100,7 @@ monster.defenses = { defense = 25, armor = 78, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_HEALING, minDamage = 350, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_HEALING, minDamage = 350, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -121,11 +120,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -133,13 +131,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/cart_packed_with_gold.lua b/data-otservbr-global/monster/quests/grave_danger/cart_packed_with_gold.lua index ce011a19001..d0c08c21775 100644 --- a/data-otservbr-global/monster/quests/grave_danger/cart_packed_with_gold.lua +++ b/data-otservbr-global/monster/quests/grave_danger/cart_packed_with_gold.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,13 +60,12 @@ monster.voices = { } monster.loot = { - { name = "Small Diamond", chance = 100000 } + { name = "Small Diamond", chance = 100000 }, } - monster.defenses = { defense = 25, - armor = 25 + armor = 25, -- mitigation = ???, } @@ -87,7 +86,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/condensed_sins.lua b/data-otservbr-global/monster/quests/grave_danger/condensed_sins.lua index 9f6b99da06b..29af5eed79d 100644 --- a/data-otservbr-global/monster/quests/grave_danger/condensed_sins.lua +++ b/data-otservbr-global/monster/quests/grave_danger/condensed_sins.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -59,18 +59,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, { name = "combat", interval = 3500, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -600, range = 3, radius = 4, effect = CONST_ME_POFF, target = false }, - { name = "death blob curse", interval = 2000, chance = 5, range = 5, target = false } + { name = "death blob curse", interval = 2000, chance = 5, range = 5, target = false }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -83,14 +82,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/dark_druid.lua b/data-otservbr-global/monster/quests/grave_danger/dark_druid.lua index b5e57d7415f..0d3004706ed 100644 --- a/data-otservbr-global/monster/quests/grave_danger/dark_druid.lua +++ b/data-otservbr-global/monster/quests/grave_danger/dark_druid.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 95, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 1800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,17 +59,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, target = false }, } monster.defenses = { defense = 40, - armor = 40 + armor = 40, -- mitigation = ???, } @@ -90,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/dark_knight.lua b/data-otservbr-global/monster/quests/grave_danger/dark_knight.lua index 431453b11fd..2115f46947b 100644 --- a/data-otservbr-global/monster/quests/grave_danger/dark_knight.lua +++ b/data-otservbr-global/monster/quests/grave_danger/dark_knight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 95, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 1800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,17 +59,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, target = false }, } monster.defenses = { defense = 40, - armor = 40 + armor = 40, -- mitigation = ???, } @@ -90,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/dark_paladin.lua b/data-otservbr-global/monster/quests/grave_danger/dark_paladin.lua index f2558a53a0a..f53a9fec76a 100644 --- a/data-otservbr-global/monster/quests/grave_danger/dark_paladin.lua +++ b/data-otservbr-global/monster/quests/grave_danger/dark_paladin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 95, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 1800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,17 +59,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, target = false }, } monster.defenses = { defense = 40, - armor = 40 + armor = 40, -- mitigation = ???, } @@ -90,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/dark_sorcerer.lua b/data-otservbr-global/monster/quests/grave_danger/dark_sorcerer.lua index aeb95a09218..f3f7fb478b9 100644 --- a/data-otservbr-global/monster/quests/grave_danger/dark_sorcerer.lua +++ b/data-otservbr-global/monster/quests/grave_danger/dark_sorcerer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 95, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 1800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,17 +59,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, target = false }, } monster.defenses = { defense = 40, - armor = 40 + armor = 40, -- mitigation = ???, } @@ -90,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/fetter.lua b/data-otservbr-global/monster/quests/grave_danger/fetter.lua index aee58b4425f..9eb8ca308ac 100644 --- a/data-otservbr-global/monster/quests/grave_danger/fetter.lua +++ b/data-otservbr-global/monster/quests/grave_danger/fetter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 13500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -59,22 +59,21 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -308, condition = { type = CONDITION_POISON, totalDamage = 300, interval = 4000 } }, { name = "drunk", interval = 2000, chance = 15, radius = 4, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 6000 }, { name = "spectre drown", interval = 2000, chance = 15, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -600, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -850, range = 7, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -850, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 35, armor = 35, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -87,14 +86,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 1 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/frozen_soul.lua b/data-otservbr-global/monster/quests/grave_danger/frozen_soul.lua index cdd1c45dc0a..7c8c548d9e0 100644 --- a/data-otservbr-global/monster/quests/grave_danger/frozen_soul.lua +++ b/data-otservbr-global/monster/quests/grave_danger/frozen_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,8 +59,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "combat", interval = 2000, chance = 40, type = COMBAT_ICEDAMAGE, minDamage = -325, maxDamage = -450, range = 5, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = true }, @@ -69,7 +68,7 @@ monster.attacks = { monster.defenses = { defense = 10, - armor = 10 + armor = 10, -- mitigation = ???, } @@ -83,14 +82,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/retainer_of_baeloc.lua b/data-otservbr-global/monster/quests/grave_danger/retainer_of_baeloc.lua index c1b96ca8d2c..05559208990 100644 --- a/data-otservbr-global/monster/quests/grave_danger/retainer_of_baeloc.lua +++ b/data-otservbr-global/monster/quests/grave_danger/retainer_of_baeloc.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 580 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,17 +59,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -180, maxDamage = -235, range = 1, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -180, maxDamage = -235, range = 1, target = true }, } monster.defenses = { defense = 25, - armor = 25 + armor = 25, -- mitigation = ???, } @@ -90,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/risen_soldier.lua b/data-otservbr-global/monster/quests/grave_danger/risen_soldier.lua index a2e1aa380b3..fb5b83ca5cc 100644 --- a/data-otservbr-global/monster/quests/grave_danger/risen_soldier.lua +++ b/data-otservbr-global/monster/quests/grave_danger/risen_soldier.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,19 +59,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -435, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -435, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = false }, } monster.defenses = { defense = 45, armor = 45, -- mitigation = ???, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/shard_of_magnor.lua b/data-otservbr-global/monster/quests/grave_danger/shard_of_magnor.lua index 11402e18bc0..fb284fb52d1 100644 --- a/data-otservbr-global/monster/quests/grave_danger/shard_of_magnor.lua +++ b/data-otservbr-global/monster/quests/grave_danger/shard_of_magnor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 114, lookFeet = 76, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 20000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,21 +59,20 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -600 }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_MANADRAIN, minDamage = -400, maxDamage = -1000, length = 7, spread = 3, effect = CONST_ME_STONES, target = false }, { name = "combat", interval = 2000, chance = 70, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -1000, length = 7, spread = 3, effect = CONST_ME_POISONAREA, target = false }, - { name = "combat", interval = 2000, chance = 0, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -650, radius = 3, effect = CONST_ME_GREEN_ENERGY_SPARK, target = true } + { name = "combat", interval = 2000, chance = 0, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -650, radius = 3, effect = CONST_ME_GREEN_ENERGY_SPARK, target = true }, } monster.defenses = { defense = 25, armor = 78, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_HEALING, minDamage = 150, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_HEALING, minDamage = 150, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/soul_scourge.lua b/data-otservbr-global/monster/quests/grave_danger/soul_scourge.lua index 14bce653750..e2cff3e976d 100644 --- a/data-otservbr-global/monster/quests/grave_danger/soul_scourge.lua +++ b/data-otservbr-global/monster/quests/grave_danger/soul_scourge.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,12 +59,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -700 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -750, range = 5, shootEffect = CONST_ANI_SUDDENDEATH, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -750, range = 5, shootEffect = CONST_ANI_SUDDENDEATH, target = true }, } monster.defenses = { @@ -90,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/soulless_minion.lua b/data-otservbr-global/monster/quests/grave_danger/soulless_minion.lua index b8c459eec8a..9cfba972a4d 100644 --- a/data-otservbr-global/monster/quests/grave_danger/soulless_minion.lua +++ b/data-otservbr-global/monster/quests/grave_danger/soulless_minion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,8 +59,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/squire_of_nictros.lua b/data-otservbr-global/monster/quests/grave_danger/squire_of_nictros.lua index 64730465049..efd6f50f58a 100644 --- a/data-otservbr-global/monster/quests/grave_danger/squire_of_nictros.lua +++ b/data-otservbr-global/monster/quests/grave_danger/squire_of_nictros.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,19 +59,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -190, maxDamage = -335, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -190, maxDamage = -335, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = true }, } monster.defenses = { defense = 45, armor = 45, -- mitigation = ???, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/grave_danger/vampiric_blood.lua b/data-otservbr-global/monster/quests/grave_danger/vampiric_blood.lua index 34ee0e62f45..72c91a71ce4 100644 --- a/data-otservbr-global/monster/quests/grave_danger/vampiric_blood.lua +++ b/data-otservbr-global/monster/quests/grave_danger/vampiric_blood.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,18 +59,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, range = 7, length = 3, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { defense = 33, - armor = 45 + armor = 45, -- mitigation = ???, } @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/aftershock.lua b/data-otservbr-global/monster/quests/heart_of_destruction/aftershock.lua index e71ffe8b480..2a23f77dc87 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/aftershock.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/aftershock.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 57, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 105000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 3000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -53,7 +53,7 @@ monster.flags = { } monster.events = { "ShocksDeath", - "AftershockTransform" + "AftershockTransform", } monster.light = { @@ -66,8 +66,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -800 }, @@ -77,14 +76,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -400, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -600, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "aftershock wave", interval = 2000, chance = 15, minDamage = -100, maxDamage = -900, target = false }, - { name = "anomaly break", interval = 2000, chance = 40, target = false } + { name = "anomaly break", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 100, armor = 100, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 300, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 300, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -104,11 +103,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -116,13 +114,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/anomaly.lua b/data-otservbr-global/monster/quests/heart_of_destruction/anomaly.lua index 2e0e1c92647..4d41d6d46e9 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/anomaly.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/anomaly.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 79, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -33,7 +33,7 @@ monster.events = { monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -65,12 +65,12 @@ monster.flags = { monster.events = { "AnomalyTransform", - "HeartBossDeath" + "HeartBossDeath", } monster.events = { "AnomalyTransform", - "HeartBossDeath" + "HeartBossDeath", } monster.light = { @@ -117,7 +117,7 @@ monster.loot = { { id = 23474, chance = 1600, unique = true }, -- tiara of power { id = 23477, chance = 1600, unique = true }, -- void boots { id = 6553, chance = 1600, unique = true }, -- ruthless axe - { id = 282, chance = 1600, maxCount = 3 } -- giant shimmering pearl (brown) + { id = 282, chance = 1600, maxCount = 3 }, -- giant shimmering pearl (brown) } monster.attacks = { @@ -126,14 +126,14 @@ monster.attacks = { { name = "anomaly wave", interval = 2000, chance = 25, minDamage = -500, maxDamage = -900, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -1000, length = 9, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -600, length = 9, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "anomaly break", interval = 2000, chance = 40, target = false } + { name = "anomaly break", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 100, armor = 100, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 150, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 150, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -146,18 +146,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = -20 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -165,13 +164,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/charged_anomaly.lua b/data-otservbr-global/monster/quests/heart_of_destruction/charged_anomaly.lua index 5f4c805bb39..7b36447eb3a 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/charged_anomaly.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/charged_anomaly.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 5, lookFeet = 80, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 18000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -52,7 +52,7 @@ monster.flags = { canWalkOnPoison = true, } monster.events = { - "ChargedAnomalyDeath" + "ChargedAnomalyDeath", } monster.light = { @@ -65,8 +65,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -900, maxDamage = -2100 }, @@ -74,14 +73,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -700, length = 7, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -800, length = 7, spread = 3, effect = CONST_ME_YELLOWENERGY, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, - { name = "charge vortex", interval = 9000, chance = 100, target = false } + { name = "charge vortex", interval = 9000, chance = 100, target = false }, } monster.defenses = { defense = 100, armor = 100, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, radius = 8, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, radius = 8, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -101,11 +100,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -113,13 +111,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/charged_disruption.lua b/data-otservbr-global/monster/quests/heart_of_destruction/charged_disruption.lua index 943129d3535..a3bcb2b524a 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/charged_disruption.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/charged_disruption.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a charged disruption" monster.experience = 400 monster.outfit = { - lookTypeEx = 1949 + lookTypeEx = 1949, } monster.health = 128000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -43,12 +43,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { "ChargedDisruptionTransform", - "HeartMinionDeath" + "HeartMinionDeath", } monster.light = { @@ -61,19 +61,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -636 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -500, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -500, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, } monster.defenses = { defense = 100, armor = 100, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 311, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 311, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/charger.lua b/data-otservbr-global/monster/quests/heart_of_destruction/charger.lua index ecd852aa670..76a3e8d2dd6 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/charger.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/charger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1600 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "ChargerSpawn" + "ChargerSpawn", } monster.light = { @@ -66,20 +66,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -300 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -450, range = 4, radius = 2, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -350, range = 5, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, -- energy damage - { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 15, minDamage = -400, maxDamage = -800, radius = 5, effect = CONST_ME_BLOCKHIT, target = false } + { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 15, minDamage = -400, maxDamage = -800, radius = 5, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { defense = 50, - armor = 50 + armor = 50, -- mitigation = ???, } @@ -100,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/charging_outburst.lua b/data-otservbr-global/monster/quests/heart_of_destruction/charging_outburst.lua index 6ecf67c6dcb..f003c75459a 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/charging_outburst.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/charging_outburst.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 82, lookFeet = 0, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 12000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -53,7 +53,7 @@ monster.flags = { } monster.events = { - "ChargingOutDeath" + "ChargingOutDeath", } monster.light = { @@ -66,8 +66,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -300, maxDamage = -1800 }, @@ -75,12 +74,12 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -900, radius = 8, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, - { name = "outburst explode", interval = 10000, chance = 100, minDamage = -1500, maxDamage = -2000, target = false } + { name = "outburst explode", interval = 10000, chance = 100, minDamage = -1500, maxDamage = -2000, target = false }, } monster.defenses = { defense = 100, - armor = 100 + armor = 100, -- mitigation = ???, } @@ -101,11 +100,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -113,13 +111,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/crackler.lua b/data-otservbr-global/monster/quests/heart_of_destruction/crackler.lua index 80d828bd3cb..08224a693b1 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/crackler.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/crackler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 15000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -53,7 +53,7 @@ monster.flags = { } monster.events = { - "CracklerTransform" + "CracklerTransform", } monster.light = { @@ -66,22 +66,21 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -300 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -300, range = 4, radius = 2, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -300, range = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_YELLOWENERGY, target = true }, -- energy damage - { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 15, minDamage = -400, maxDamage = -800, radius = 5, effect = CONST_ME_BLOCKHIT, target = false } + { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 15, minDamage = -400, maxDamage = -800, radius = 5, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { defense = 50, armor = 50, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_HEALING, minDamage = 100, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_HEALING, minDamage = 100, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/damage_resonance.lua b/data-otservbr-global/monster/quests/heart_of_destruction/damage_resonance.lua index 2afdac045bf..91c5f73e03a 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/damage_resonance.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/damage_resonance.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "Damage Resonance" monster.experience = 560 monster.outfit = { - lookTypeEx = 22761 + lookTypeEx = 22761, } monster.health = 11000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 40 + chance = 40, } monster.strategiesTarget = { @@ -43,11 +43,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = true, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "HeartMinionDeath" + "HeartMinionDeath", } monster.light = { @@ -60,20 +60,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 4, shootEffect = CONST_ANI_INFERNALBOLT, target = true }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, radius = 4, effect = CONST_ME_ENERGYAREA, target = true } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, radius = 4, effect = CONST_ME_ENERGYAREA, target = true }, } monster.defenses = { defense = 100, armor = 100, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/depolarized_crackler.lua b/data-otservbr-global/monster/quests/heart_of_destruction/depolarized_crackler.lua index c6e95abcd60..2387233e8b7 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/depolarized_crackler.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/depolarized_crackler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 15000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { "DepolarizedTransform", - "DepolarizedDeath" + "DepolarizedDeath", } monster.light = { @@ -67,19 +67,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -500, radius = 6, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_LOSEENERGY, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -700, length = 10, spread = 3, effect = CONST_ME_TELEPORT, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -350, radius = 8, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -350, radius = 8, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 80, - armor = 80 + armor = 80, -- mitigation = ???, } @@ -100,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/disruption.lua b/data-otservbr-global/monster/quests/heart_of_destruction/disruption.lua index 0d1c82ce83c..347fb9eaded 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/disruption.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/disruption.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a disruption" monster.experience = 398 monster.outfit = { - lookTypeEx = 22761 + lookTypeEx = 22761, } monster.health = 12000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -43,12 +43,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { "DisruptionTransform", - "HeartMinionDeath" + "HeartMinionDeath", } monster.light = { @@ -61,17 +61,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -262 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -300, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -300, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, } monster.defenses = { defense = 100, - armor = 100 + armor = 100, -- mitigation = ???, } @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/eradicator.lua b/data-otservbr-global/monster/quests/heart_of_destruction/eradicator.lua index e4f7d1470ab..c12f68ec282 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/eradicator.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/eradicator.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 114, lookFeet = 79, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -60,7 +60,7 @@ monster.flags = { monster.events = { "HeartBossDeath", - "EradicatorTransform" + "EradicatorTransform", } monster.light = { @@ -109,12 +109,12 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -900, radius = 8, effect = CONST_ME_BLOCKHIT, target = false }, { name = "big energy wave", interval = 2000, chance = 20, minDamage = -700, maxDamage = -1000, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -600, radius = 4, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "anomaly break", interval = 2000, chance = 40, target = false } + { name = "anomaly break", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 100, - armor = 100 + armor = 100, -- mitigation = ???, } @@ -135,11 +135,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -147,13 +146,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/eradicator2.lua b/data-otservbr-global/monster/quests/heart_of_destruction/eradicator2.lua index 5e40e5ed72f..ed8e9279e68 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/eradicator2.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/eradicator2.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 78, lookFeet = 94, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 290000 @@ -23,12 +23,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.bosstiary = { bossRaceId = 1225, - bossRace = RARITY_ARCHFOE + bossRace = RARITY_ARCHFOE, } monster.strategiesTarget = { @@ -55,17 +55,17 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { "HeartBossDeath", - "EradicatorTransform" + "EradicatorTransform", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -98,7 +98,7 @@ monster.loot = { { id = 23531, chance = 3500 }, -- ring of green plasma { id = 23533, chance = 3500 }, -- ring of red plasma { id = 3554, chance = 5000, unique = true }, -- steel boots - { id = 8075, chance = 3000, unique = true } -- spellbook of lost souls + { id = 8075, chance = 3000, unique = true }, -- spellbook of lost souls } monster.attacks = { @@ -107,13 +107,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -900, radius = 8, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -600, radius = 4, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_HOLYDAMAGE, target = true }, { name = "big lifedrain wave", interval = 2000, chance = 20, minDamage = -700, maxDamage = -1000, target = false }, - { name = "anomaly break", interval = 2000, chance = 40, target = false } + { name = "anomaly break", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 60, armor = 60, - { name = "combat", interval = 2000, chance = 100, type = COMBAT_HEALING, minDamage = 500, maxDamage = 1200, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 100, type = COMBAT_HEALING, minDamage = 500, maxDamage = 1200, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -126,18 +126,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 15 }, { type = COMBAT_HOLYDAMAGE, percent = 15 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -145,13 +144,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/foreshock.lua b/data-otservbr-global/monster/quests/heart_of_destruction/foreshock.lua index 02a150d1064..65283626c77 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/foreshock.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/foreshock.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 105000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 3000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { "ShocksDeath", - "ForeshockTransform" + "ForeshockTransform", } monster.light = { @@ -67,8 +67,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -400, maxDamage = -1000 }, @@ -77,14 +76,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -600, length = 10, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HOLYDAMAGE, minDamage = -350, maxDamage = -800, radius = 4, effect = CONST_ME_HOLYDAMAGE, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -300, length = 2, spread = 0, effect = CONST_ME_HITAREA, target = false }, - { name = "anomaly break", interval = 2000, chance = 40, target = false } + { name = "anomaly break", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 100, armor = 100, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 300, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 300, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -104,11 +103,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -116,13 +114,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/frenzy.lua b/data-otservbr-global/monster/quests/heart_of_destruction/frenzy.lua index faa9c4ce96b..f43a9486630 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/frenzy.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/frenzy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8210 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -53,7 +53,7 @@ monster.flags = { } monster.events = { - "HeartMinionDeath" + "HeartMinionDeath", } monster.light = { @@ -66,21 +66,20 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1047 }, { name = "big energy purple wave2", interval = 2000, chance = 100, minDamage = 0, maxDamage = -730, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -464, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, radius = 7, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, radius = 7, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 100, armor = 100, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 438, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 438, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -100,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/greed.lua b/data-otservbr-global/monster/quests/heart_of_destruction/greed.lua index 054ee9a1966..5dce33bf083 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/greed.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/greed.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -62,20 +62,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -940 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -600, radius = 6, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_LOSEENERGY, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -700, length = 9, spread = 3, effect = CONST_ME_TELEPORT, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, radius = 7, effect = CONST_ME_POFF, target = false }, - { name = "anomaly break", interval = 2000, chance = 40, target = false } + { name = "anomaly break", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 50, - armor = 50 + armor = 50, -- mitigation = ???, } @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/outburst.lua b/data-otservbr-global/monster/quests/heart_of_destruction/outburst.lua index e0142c5480c..1509c1c52fa 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/outburst.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/outburst.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 3, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -55,12 +55,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { "HeartBossDeath", - "OutburstCharge" + "OutburstCharge", } monster.light = { @@ -90,7 +90,7 @@ monster.loot = { { id = 23533, chance = 5000 }, -- ring of red plasma { id = 23474, chance = 2000, unique = true }, -- tiara of power { id = 23477, chance = 2000, unique = true }, -- void boots - { id = 16160, chance = 2000, unique = true } -- crystalline sword + { id = 16160, chance = 2000, unique = true }, -- crystalline sword } monster.attacks = { @@ -100,12 +100,12 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -800, maxDamage = -1300, length = 8, spread = 3, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -900, length = 8, spread = 3, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "big skill reducer", interval = 2000, chance = 25, target = false }, - { name = "anomaly break", interval = 2000, chance = 40, target = false } + { name = "anomaly break", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 100, - armor = 100 + armor = 100, -- mitigation = ???, } @@ -126,11 +126,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -138,13 +137,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/overcharge.lua b/data-otservbr-global/monster/quests/heart_of_destruction/overcharge.lua index 7b6a09fbbd7..dc29e89451b 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/overcharge.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/overcharge.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "OverchargeDeath" + "OverchargeDeath", } monster.light = { @@ -66,19 +66,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -500, radius = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_LOSEENERGY, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -400, radius = 7, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -670, length = 9, spread = 3, effect = CONST_ME_TELEPORT, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -670, length = 9, spread = 3, effect = CONST_ME_TELEPORT, target = false }, } monster.defenses = { defense = 80, - armor = 80 + armor = 80, -- mitigation = ???, } @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/overcharged_disruption.lua b/data-otservbr-global/monster/quests/heart_of_destruction/overcharged_disruption.lua index 226bb6fc977..27cf76fd114 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/overcharged_disruption.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/overcharged_disruption.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "an overcharged disruption" monster.experience = 400 monster.outfit = { - lookTypeEx = 1959 + lookTypeEx = 1959, } monster.health = 128000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -43,11 +43,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "HeartMinionDeath" + "HeartMinionDeath", } monster.light = { @@ -60,18 +60,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -741 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -600, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, radius = 7, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, radius = 7, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 100, - armor = 100 + armor = 100, -- mitigation = ???, } @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/realityquake.lua b/data-otservbr-global/monster/quests/heart_of_destruction/realityquake.lua index 1088e84fa33..c42bf69f20b 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/realityquake.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/realityquake.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "Realityquake" monster.experience = 20000 monster.outfit = { - lookTypeEx = 1949 + lookTypeEx = 1949, } monster.bosstiary = { @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 3000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "HeartBossDeath" + "HeartBossDeath", } monster.light = { @@ -87,7 +87,7 @@ monster.loot = { { id = 282, chance = 4000 }, -- giant shimmering pearl (brown) { id = 3073, chance = 8000 }, -- wand of cosmic energy { id = 23531, chance = 6000 }, -- ring of green plasma - { id = 23533, chance = 6000 } -- ring of red plasma + { id = 23533, chance = 6000 }, -- ring of red plasma } monster.attacks = { @@ -98,14 +98,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 25, type = COMBAT_HOLYDAMAGE, minDamage = -240, maxDamage = -600, radius = 5, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYDAMAGE, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -450, length = 4, spread = 2, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -240, maxDamage = -600, radius = 5, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "anomaly break", interval = 2000, chance = 40, target = false } + { name = "anomaly break", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 100, armor = 100, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, radius = 8, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, radius = 8, effect = CONST_ME_POFF, target = false }, } monster.elements = { @@ -125,11 +125,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -137,13 +136,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/rupture.lua b/data-otservbr-global/monster/quests/heart_of_destruction/rupture.lua index 1553b178a1f..ea0a6d69815 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/rupture.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/rupture.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 3, lookFeet = 85, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -55,13 +55,13 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { "RuptureResonance", "RuptureHeal", - "HeartBossDeath" + "HeartBossDeath", } monster.light = { @@ -93,7 +93,7 @@ monster.loot = { { id = 23531, chance = 4000 }, -- ring of green plasma { id = 23533, chance = 4000 }, -- ring of red plasma { id = 23474, chance = 2000, unique = true }, -- tiara of power - { id = 23477, chance = 2000, unique = true } -- void boots + { id = 23477, chance = 2000, unique = true }, -- void boots } monster.attacks = { @@ -102,14 +102,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, { name = "rupture wave", interval = 2000, chance = 20, minDamage = -700, maxDamage = -1100, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -600, length = 9, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "anomaly break", interval = 2000, chance = 40, target = false } + { name = "anomaly break", interval = 2000, chance = 40, target = false }, } monster.defenses = { defense = 100, armor = 100, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,11 +129,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -141,13 +140,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/spark_of_destruction.lua b/data-otservbr-global/monster/quests/heart_of_destruction/spark_of_destruction.lua index c78f347e7aa..ec610fe70ff 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/spark_of_destruction.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/spark_of_destruction.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3900 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 3000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -62,20 +62,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -436 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -180, maxDamage = -400, range = 5, radius = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_PURPLEENERGY, target = true }, { name = "reality reaver wave", interval = 2000, chance = 20, minDamage = -100, maxDamage = -400, target = false }, -- energy damage - { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -400, maxDamage = -800, radius = 5, effect = CONST_ME_STUN, target = false } + { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -400, maxDamage = -800, radius = 5, effect = CONST_ME_STUN, target = false }, } monster.defenses = { defense = 65, - armor = 65 + armor = 65, -- mitigation = ???, } @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/the_destruction.lua b/data-otservbr-global/monster/quests/heart_of_destruction/the_destruction.lua index be1dc70f2c1..9695be76048 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/the_destruction.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/the_destruction.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 77, lookFeet = 19, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 250000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "HeartMinionDeath" + "HeartMinionDeath", } monster.light = { @@ -66,8 +66,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1393 }, @@ -78,14 +77,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -900, length = 10, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -900, length = 10, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, - { name = "destruction summon", interval = 2000, chance = 20, target = false } + { name = "destruction summon", interval = 2000, chance = 20, target = false }, } monster.defenses = { defense = 100, armor = 100, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 546, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 546, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -105,7 +104,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/the_hunger.lua b/data-otservbr-global/monster/quests/heart_of_destruction/the_hunger.lua index eaec20e0422..2a8db03fc42 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/the_hunger.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/the_hunger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 250000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -53,7 +53,7 @@ monster.flags = { } monster.events = { - "HeartMinionDeath" + "HeartMinionDeath", } monster.light = { @@ -66,8 +66,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -962 }, @@ -76,14 +75,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1100, length = 10, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -400, length = 10, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, - { name = "hunger summon", interval = 2000, chance = 20, target = false } + { name = "hunger summon", interval = 2000, chance = 20, target = false }, } monster.defenses = { defense = 100, armor = 100, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 191, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 191, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -103,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/the_rage.lua b/data-otservbr-global/monster/quests/heart_of_destruction/the_rage.lua index 54d4508697b..f648df139f4 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/the_rage.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/the_rage.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 250000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "HeartMinionDeath" + "HeartMinionDeath", } monster.light = { @@ -66,8 +66,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -740 }, @@ -78,12 +77,12 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, radius = 8, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -600, length = 10, spread = 3, effect = CONST_ME_YELLOW_RINGS, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, - { name = "rage summon", interval = 2000, chance = 20, target = false } + { name = "rage summon", interval = 2000, chance = 20, target = false }, } monster.defenses = { defense = 100, - armor = 100 + armor = 100, -- mitigation = ???, } @@ -104,7 +103,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/unstable_spark.lua b/data-otservbr-global/monster/quests/heart_of_destruction/unstable_spark.lua index 74f9f36f3fe..bbfb1938a3c 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/unstable_spark.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/unstable_spark.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "SparkDeath" + "SparkDeath", } monster.light = { @@ -66,14 +66,13 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -500, radius = 6, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_LOSEENERGY, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -700, length = 10, spread = 3, effect = CONST_ME_TELEPORT, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -350, radius = 8, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -350, radius = 8, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/heart_of_destruction/world_devourer.lua b/data-otservbr-global/monster/quests/heart_of_destruction/world_devourer.lua index c100849391e..4908eab2d47 100644 --- a/data-otservbr-global/monster/quests/heart_of_destruction/world_devourer.lua +++ b/data-otservbr-global/monster/quests/heart_of_destruction/world_devourer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 84, lookFeet = 94, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -55,11 +55,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "HeartBossDeath" + "HeartBossDeath", } monster.light = { @@ -96,7 +96,7 @@ monster.loot = { { id = 23474, chance = 6000, unique = true }, -- tiara of power { id = 23477, chance = 6000, unique = true }, -- void boots { id = 23686, chance = 4000, unique = true }, -- devourer core - { id = 23684, chance = 2000, unique = true } -- crackling egg + { id = 23684, chance = 2000, unique = true }, -- crackling egg } monster.attacks = { @@ -107,12 +107,12 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -1200, length = 10, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, radius = 8, effect = CONST_ME_MAGIC_RED, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, - { name = "devourer summon", interval = 2000, chance = 25, target = false } + { name = "devourer summon", interval = 2000, chance = 25, target = false }, } monster.defenses = { defense = 150, - armor = 150 + armor = 150, -- mitigation = ???, } @@ -133,11 +133,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -145,13 +144,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/deep_terror.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/deep_terror.lua index 3522e558471..d5715452efa 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/deep_terror.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/deep_terror.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -68,21 +68,21 @@ monster.voices = { } monster.loot = { - { id = 21899, chance = 10000, unique = true } -- glooth glider tubes and wires + { id = 21899, chance = 10000, unique = true }, -- glooth glider tubes and wires } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 130, attack = 100 }, { name = "combat", interval = 2000, chance = 32, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -400, radius = 8, effect = CONST_ME_CARNIPHILA, target = false }, { name = "combat", interval = 2000, chance = 19, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -700, range = 7, radius = 3, shootEffect = CONST_ANI_POISON, effect = CONST_ME_CARNIPHILA, target = true }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -1000, length = 7, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -1000, length = 7, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { defense = 35, armor = 22, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 11, type = COMBAT_HEALING, minDamage = 500, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 11, type = COMBAT_HEALING, minDamage = 500, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -102,11 +102,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -114,13 +113,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/empowered_glooth_horror.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/empowered_glooth_horror.lua index 4ac55126584..8f3e9d0e482 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/empowered_glooth_horror.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/empowered_glooth_horror.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 25000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "GloothHorror" + "GloothHorror", } monster.light = { @@ -67,7 +67,7 @@ monster.voices = { } monster.loot = { - { id = 21905, chance = 10000 } -- glooth glider hinge + { id = 21905, chance = 10000 }, -- glooth glider hinge } monster.attacks = { @@ -75,14 +75,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -600, range = 1, shootEffect = CONST_ANI_POISON, target = true }, { name = "drunk", interval = 2000, chance = 8, radius = 8, effect = CONST_ME_HITBYPOISON, target = false, duration = 15000 }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 12, minDamage = -600, maxDamage = -900, radius = 8, effect = CONST_ME_HITBYPOISON, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 12, minDamage = -600, maxDamage = -900, radius = 8, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { defense = 25, armor = 15, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 500, maxDamage = 700, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 500, maxDamage = 700, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -102,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/energy_pulse.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/energy_pulse.lua index 9d2ee4ee968..30059945584 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/energy_pulse.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/energy_pulse.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,16 +59,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "energy pulse explosion", interval = 1000, chance = 100, minDamage = -5000, maxDamage = -6000, target = false } + { name = "energy pulse explosion", interval = 1000, chance = 100, minDamage = -5000, maxDamage = -6000, target = false }, } monster.defenses = { defense = 5, - armor = 10 + armor = 10, -- mitigation = ???, } @@ -89,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/feeble_glooth_horror.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/feeble_glooth_horror.lua index 6c2964c619e..36e22c43d7d 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/feeble_glooth_horror.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/feeble_glooth_horror.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,16 +49,16 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "GloothHorror" + "GloothHorror", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -66,17 +66,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 110, attack = 50 } + { name = "melee", interval = 2000, chance = 100, skill = 110, attack = 50 }, } monster.defenses = { defense = 25, armor = 15, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 500, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 500, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -89,14 +88,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 15 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/glooth-generator.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/glooth-generator.lua index 844d3c4928c..5366a5f752e 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/glooth-generator.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/glooth-generator.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a glooth-generator" monster.experience = 0 monster.outfit = { - lookTypeEx = 20710 + lookTypeEx = 20710, } monster.health = 12000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -56,18 +56,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 2000, chance = 18, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -600, radius = 2, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 2000, chance = 18, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -600, radius = 2, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { defense = 50, armor = 50, -- mitigation = ???, - { name = "glooth-generator summon", interval = 1000, chance = 100, target = false } + { name = "glooth-generator summon", interval = 1000, chance = 100, target = false }, } monster.elements = { @@ -87,7 +86,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_horror.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_horror.lua index 3373fdcb5d0..eec6132974e 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_horror.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_horror.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 15000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,16 +49,16 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "GloothHorror" + "GloothHorror", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -66,19 +66,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 110, attack = 100 }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -700, length = 8, spread = 3, target = false }, - { name = "drunk", interval = 2000, chance = 8, radius = 8, effect = CONST_ME_HITBYPOISON, target = false, duration = 15000 } + { name = "drunk", interval = 2000, chance = 8, radius = 8, effect = CONST_ME_HITBYPOISON, target = false, duration = 15000 }, } monster.defenses = { defense = 25, armor = 15, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 700, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 700, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -91,14 +90,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 15 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_masher.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_masher.lua index ac3505ba978..6a0af6e2172 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_masher.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_masher.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2700 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,15 +59,14 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 50 }, { name = "melee", interval = 2000, chance = 2, skill = 86, attack = 100 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -125, maxDamage = -245, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, { name = "war golem skill reducer", interval = 2000, chance = 16, target = false }, - { name = "war golem electrify", interval = 2000, chance = 9, range = 7, target = false } + { name = "war golem electrify", interval = 2000, chance = 9, range = 7, target = false }, } monster.defenses = { @@ -75,7 +74,7 @@ monster.defenses = { armor = 40, -- mitigation = ???, { name = "speed", interval = 2000, chance = 13, speedChange = 404, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_slasher.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_slasher.lua index bed1cc7224d..5c92792ffc2 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_slasher.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_slasher.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2700 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,15 +59,14 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 50 }, { name = "melee", interval = 2000, chance = 2, skill = 86, attack = 100 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -125, maxDamage = -245, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, { name = "war golem skill reducer", interval = 2000, chance = 16, target = false }, - { name = "war golem electrify", interval = 2000, chance = 9, range = 7, target = false } + { name = "war golem electrify", interval = 2000, chance = 9, range = 7, target = false }, } monster.defenses = { @@ -75,7 +74,7 @@ monster.defenses = { armor = 40, -- mitigation = ???, { name = "speed", interval = 2000, chance = 13, speedChange = 404, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_trasher.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_trasher.lua index 40d09543c8e..37fbc40619d 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_trasher.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/glooth_trasher.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2700 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,15 +59,14 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 50 }, { name = "melee", interval = 2000, chance = 2, skill = 86, attack = 100 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -125, maxDamage = -245, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, { name = "war golem skill reducer", interval = 2000, chance = 16, target = false }, - { name = "war golem electrify", interval = 2000, chance = 9, range = 7, target = false } + { name = "war golem electrify", interval = 2000, chance = 9, range = 7, target = false }, } monster.defenses = { @@ -75,7 +74,7 @@ monster.defenses = { armor = 40, -- mitigation = ???, { name = "speed", interval = 2000, chance = 13, speedChange = 404, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/professor_maxxen.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/professor_maxxen.lua index 6c2d77ce48a..8bb03ae7631 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/professor_maxxen.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/professor_maxxen.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 90000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.bosstiary = { bossRaceId = 1093, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -54,12 +54,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { @@ -68,8 +68,8 @@ monster.summon = { { name = "walker", chance = 10, interval = 2000, count = 2 }, { name = "glooth trasher", chance = 10, interval = 2000, count = 2 }, { name = "glooth smasher", chance = 10, interval = 2000, count = 2 }, - { name = "glooth slasher", chance = 10, interval = 2000, count = 2 } - } + { name = "glooth slasher", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -79,7 +79,7 @@ monster.voices = { monster.loot = { { id = 21901, chance = 1000, unique = true }, -- glooth glider casing - { id = 21292, chance = 1000 } -- feedbag + { id = 21292, chance = 1000 }, -- feedbag } monster.attacks = { @@ -90,7 +90,7 @@ monster.attacks = { { name = "war golem skill reducer", interval = 2000, chance = 22, target = false }, { name = "war golem electrify", interval = 2000, chance = 16, range = 2, target = false }, { name = "glooth fairy skill reducer", interval = 2000, chance = 20, target = false }, - { name = "glooth fairy paralyze", interval = 2000, chance = 9, target = false } + { name = "glooth fairy paralyze", interval = 2000, chance = 9, target = false }, } monster.defenses = { @@ -100,7 +100,7 @@ monster.defenses = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "generator", interval = 30000, chance = 50, target = false }, { name = "maxxenteleport", interval = 2000, chance = 5, target = false }, - { name = "glooth fairy healing", interval = 1000, chance = 100, target = false } + { name = "glooth fairy healing", interval = 1000, chance = 100, target = false }, } monster.elements = { @@ -113,18 +113,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -132,13 +131,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/strong_glooth_horror.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/strong_glooth_horror.lua index 6f605195ca5..60634dc99bb 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/strong_glooth_horror.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/strong_glooth_horror.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "GloothHorror" + "GloothHorror", } monster.light = { @@ -66,22 +66,21 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 150, attack = 100 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -500, range = 1, shootEffect = CONST_ANI_POISON, target = true }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 12, minDamage = -500, maxDamage = -800, radius = 8, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "drunk", interval = 2000, chance = 8, radius = 8, effect = CONST_ME_HITBYPOISON, target = false, duration = 15000 } + { name = "drunk", interval = 2000, chance = 8, radius = 8, effect = CONST_ME_HITBYPOISON, target = false, duration = 15000 }, } monster.defenses = { defense = 25, armor = 15, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 500, maxDamage = 700, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 500, maxDamage = 700, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/tentacle_of_the_deep_terror.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/tentacle_of_the_deep_terror.lua index 1ef4fd59d1b..a9c2be59b52 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/tentacle_of_the_deep_terror.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/tentacle_of_the_deep_terror.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 25500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "TentacleDeep" + "TentacleDeep", } monster.light = { @@ -66,21 +66,20 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 88, attack = 100 }, { name = "blightwalker curse", interval = 2000, chance = 10, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -65, maxDamage = -135, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "drunk", interval = 2000, chance = 20, radius = 7, effect = CONST_ME_HITBYPOISON, target = false, duration = 35000 } + { name = "drunk", interval = 2000, chance = 20, radius = 7, effect = CONST_ME_HITBYPOISON, target = false, duration = 35000 }, } monster.defenses = { defense = 15, armor = 15, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 225, maxDamage = 850, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 225, maxDamage = 850, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -100,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hero_of_rathleton/weakened_glooth_horror.lua b/data-otservbr-global/monster/quests/hero_of_rathleton/weakened_glooth_horror.lua index 5379da1a860..b3df6a5785d 100644 --- a/data-otservbr-global/monster/quests/hero_of_rathleton/weakened_glooth_horror.lua +++ b/data-otservbr-global/monster/quests/hero_of_rathleton/weakened_glooth_horror.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,11 +49,11 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "GloothHorror" + "GloothHorror", } monster.light = { @@ -66,20 +66,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 100 }, { name = "combat", interval = 2000, chance = 17, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 11, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -400, range = 1, shootEffect = CONST_ANI_POISON, target = true } + { name = "combat", interval = 2000, chance = 11, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -400, range = 1, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { defense = 25, armor = 15, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 500, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 500, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/hidden_threats/cave_spider.lua b/data-otservbr-global/monster/quests/hidden_threats/cave_spider.lua index b2616a19acc..837e1c0a685 100644 --- a/data-otservbr-global/monster/quests/hidden_threats/cave_spider.lua +++ b/data-otservbr-global/monster/quests/hidden_threats/cave_spider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -57,8 +57,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Poison Spider", chance = 10, interval = 2000, count = 2 } - } + { name = "Poison Spider", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -71,20 +71,20 @@ monster.loot = { { name = "strong health potion", chance = 50000 }, { name = "small diamond", chance = 50000, maxCount = 3 }, { name = "black pearl", chance = 16670 }, - { name = "spider silk", chance = 16670 } + { name = "spider silk", chance = 16670 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, { name = "poisonfield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -70, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -70, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { defense = 0, armor = 30, mitigation = 1.04, - { name = "speed", interval = 2000, chance = 15, speedChange = 390, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 390, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -104,7 +104,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/in_service_of_yalahar/azerus.lua b/data-otservbr-global/monster/quests/in_service_of_yalahar/azerus.lua index 15086a147eb..cd5ad5ae043 100644 --- a/data-otservbr-global/monster/quests/in_service_of_yalahar/azerus.lua +++ b/data-otservbr-global/monster/quests/in_service_of_yalahar/azerus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 26000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -63,8 +63,8 @@ monster.summon = { { name = "Rift Worm", interval = 30, chance = 3000, count = 8 }, { name = "Rift Brood", interval = 30, chance = 3000, count = 8 }, { name = "Rift Scythe", interval = 30, chance = 3000, count = 8 }, - { name = "War Golem", interval = 30, chance = 3000, count = 5 } - } + { name = "War Golem", interval = 30, chance = 3000, count = 5 }, + }, } monster.voices = { @@ -87,21 +87,20 @@ monster.voices = { { text = "Don't you understand? Gods, Yalarahi, Humans we are all doing HIS bidding all the time!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -900 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -3800, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_BIGCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -524, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, } monster.defenses = { defense = 65, armor = 40, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 11, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 11, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -121,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/in_service_of_yalahar/azerus2.lua b/data-otservbr-global/monster/quests/in_service_of_yalahar/azerus2.lua index 8d331ff5999..ef0b7d49807 100644 --- a/data-otservbr-global/monster/quests/in_service_of_yalahar/azerus2.lua +++ b/data-otservbr-global/monster/quests/in_service_of_yalahar/azerus2.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 26000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { @@ -64,8 +64,8 @@ monster.summon = { { name = "Rift Worm", chance = 30, interval = 3000, count = 8 }, { name = "Rift Brood", chance = 30, interval = 3000, count = 8 }, { name = "Rift Scythe", chance = 30, interval = 3000, count = 8 }, - { name = "War Golem", chance = 30, interval = 3000, count = 5 } - } + { name = "War Golem", chance = 30, interval = 3000, count = 5 }, + }, } monster.voices = { @@ -80,23 +80,22 @@ monster.voices = { { text = "We will open the rift for a new time to come!", yell = false }, { text = "The end of times has come!", yell = false }, { text = "The great machinator will make his entrance soon!", yell = false }, - { text = "You might scratch my shields but they will never break!", yell = false } + { text = "You might scratch my shields but they will never break!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -900 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -3800, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_BIGCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -524, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, } monster.defenses = { defense = 65, armor = 40, - { name = "combat", interval = 2000, chance = 11, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 11, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -109,14 +108,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/in_service_of_yalahar/inky.lua b/data-otservbr-global/monster/quests/in_service_of_yalahar/inky.lua index 475a6b1d1d5..7326ed59abc 100644 --- a/data-otservbr-global/monster/quests/in_service_of_yalahar/inky.lua +++ b/data-otservbr-global/monster/quests/in_service_of_yalahar/inky.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 750 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -67,7 +67,7 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 12000, maxCount = 13 } -- gold coin + { id = 3031, chance = 12000, maxCount = 13 }, -- gold coin } monster.attacks = { @@ -75,7 +75,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -87, radius = 3, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 2000, chance = 19, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -80, radius = 3, shootEffect = CONST_ANI_POISON, target = false }, { name = "combat", interval = 2000, chance = 7, type = COMBAT_ICEDAMAGE, minDamage = -56, maxDamage = -87, radius = 4, effect = CONST_ME_ICEAREA, target = false }, - { name = "quara constrictor electrify", interval = 2000, chance = 10, range = 1, target = false } + { name = "quara constrictor electrify", interval = 2000, chance = 10, range = 1, target = false }, } monster.defenses = { @@ -101,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_brood.lua b/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_brood.lua index 6b5e4efd412..4d72370aa30 100644 --- a/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_brood.lua +++ b/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_brood.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2950 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 20000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -62,19 +62,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -255 }, - { name = "combat", interval = 1000, chance = 90, type = COMBAT_MANADRAIN, minDamage = -0, maxDamage = -179, range = 3, radius = 2, effect = CONST_ME_PURPLEENERGY, target = true } + { name = "combat", interval = 1000, chance = 90, type = COMBAT_MANADRAIN, minDamage = -0, maxDamage = -179, range = 3, radius = 2, effect = CONST_ME_PURPLEENERGY, target = true }, } monster.defenses = { defense = 30, armor = 30, mitigation = 0.51, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 70, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 70, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_lord.lua b/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_lord.lua index 1c8328e6bad..f49fa38af71 100644 --- a/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_lord.lua +++ b/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_lord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 9, lookFeet = 85, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -57,14 +57,12 @@ monster.light = { color = 0, } - monster.voices = { interval = 5000, chance = 10, } -monster.loot = { -} +monster.loot = {} --monster.attacks = { --} @@ -92,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_phantom.lua b/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_phantom.lua index 750fd3cbb1b..3fd5039cc06 100644 --- a/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_phantom.lua +++ b/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_phantom.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 150 @@ -20,10 +20,9 @@ monster.corpse = 5993 monster.speed = 80 monster.manaCost = 0 - monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -55,14 +54,12 @@ monster.light = { color = 0, } - monster.voices = { interval = 5000, chance = 10, } -monster.loot = { -} +monster.loot = {} --monster.attacks = { --} @@ -90,7 +87,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_scythe.lua b/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_scythe.lua index 3e38e14dec6..25246da0ef3 100644 --- a/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_scythe.lua +++ b/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_scythe.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3600 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,22 +62,21 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -979 }, { name = "combat", interval = 2000, chance = 60, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -600, length = 7, spread = 3, target = false }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -395, radius = 4, target = false }, - { name = "combat", interval = 3000, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false } + { name = "combat", interval = 3000, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, } monster.defenses = { defense = 30, armor = 30, mitigation = 0.64, - { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 100, maxDamage = 195, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 100, maxDamage = 195, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_worm.lua b/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_worm.lua index 7e61eda7d2a..c87c72ce372 100644 --- a/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_worm.lua +++ b/data-otservbr-global/monster/quests/in_service_of_yalahar/rift_worm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -59,18 +59,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -500, maxDamage = -1000, range = 7, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -500, maxDamage = -1000, range = 7, target = false }, } monster.defenses = { defense = 25, armor = 25, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_GROUNDSHAKER } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_GROUNDSHAKER }, } monster.elements = { @@ -83,14 +82,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, { type = COMBAT_HOLYDAMAGE, percent = -5 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/in_service_of_yalahar/sharptooth.lua b/data-otservbr-global/monster/quests/in_service_of_yalahar/sharptooth.lua index a9136440c06..d707fc89581 100644 --- a/data-otservbr-global/monster/quests/in_service_of_yalahar/sharptooth.lua +++ b/data-otservbr-global/monster/quests/in_service_of_yalahar/sharptooth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3100 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -67,11 +67,11 @@ monster.voices = { } monster.loot = { - { id = 3111, chance = 50000 } -- fishbone + { id = 3111, chance = 50000 }, -- fishbone } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, } monster.defenses = { @@ -79,7 +79,7 @@ monster.defenses = { armor = 20, mitigation = 1.46, { name = "speed", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_HEALING, minDamage = 200, maxDamage = 240, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_HEALING, minDamage = 200, maxDamage = 240, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -99,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/in_service_of_yalahar/tormented_ghost.lua b/data-otservbr-global/monster/quests/in_service_of_yalahar/tormented_ghost.lua index dee7585d592..9b6138ceb00 100644 --- a/data-otservbr-global/monster/quests/in_service_of_yalahar/tormented_ghost.lua +++ b/data-otservbr-global/monster/quests/in_service_of_yalahar/tormented_ghost.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 210 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -61,12 +61,11 @@ monster.voices = { { text = "Grrglll", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -280 }, - { name = "combat", interval = 3000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -55, maxDamage = -105, range = 1, target = false } + { name = "combat", interval = 3000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -55, maxDamage = -105, range = 1, target = false }, } monster.defenses = { @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/in_service_of_yalahar/yalahari.lua b/data-otservbr-global/monster/quests/in_service_of_yalahar/yalahari.lua index 0fd441b6522..6ea54125ec5 100644 --- a/data-otservbr-global/monster/quests/in_service_of_yalahar/yalahari.lua +++ b/data-otservbr-global/monster/quests/in_service_of_yalahar/yalahari.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 150 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -66,8 +66,7 @@ monster.voices = { { text = "One day Yalahar will return to its former glory.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 0, @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/isle_of_evil/boogey.lua b/data-otservbr-global/monster/quests/isle_of_evil/boogey.lua index c17504aaf01..56fa3d79415 100644 --- a/data-otservbr-global/monster/quests/isle_of_evil/boogey.lua +++ b/data-otservbr-global/monster/quests/isle_of_evil/boogey.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Demon Skeleton", chance = 40, interval = 4000, count = 2 } - } + { name = "Demon Skeleton", chance = 40, interval = 4000, count = 2 }, + }, } monster.voices = { @@ -83,21 +83,21 @@ monster.loot = { { id = 9379, chance = 1000 }, -- heavy metal t-shirt { id = 9385, chance = 1000 }, -- club of the fury { id = 9384, chance = 1000 }, -- scythe of the reaper - { id = 9378, chance = 1000 } -- musician's bow + { id = 9378, chance = 1000 }, -- musician's bow } monster.attacks = { { name = "melee", interval = 1200, chance = 100, minDamage = 0, maxDamage = -120 }, { name = "combat", interval = 1500, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -30, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 1500, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -12, maxDamage = -20, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 1500, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -20, maxDamage = -30, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 1500, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -20, maxDamage = -30, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 30, armor = 30, mitigation = 0.40, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 80, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 80, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/isle_of_evil/dirtbeard.lua b/data-otservbr-global/monster/quests/isle_of_evil/dirtbeard.lua index 946fb57c75f..50f7c0cdf6c 100644 --- a/data-otservbr-global/monster/quests/isle_of_evil/dirtbeard.lua +++ b/data-otservbr-global/monster/quests/isle_of_evil/dirtbeard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Pirate Marauder", chance = 30, interval = 4000, count = 2 } - } + { name = "Pirate Marauder", chance = 30, interval = 4000, count = 2 }, + }, } monster.voices = { @@ -83,14 +83,14 @@ monster.loot = { { id = 9375, chance = 1000 }, -- pointed rabbitslayer { id = 9382, chance = 1000 }, -- helmet of nature { id = 9374, chance = 1000 }, -- odd hat - { id = 9401, chance = 2000 } -- shield nevermourn + { id = 9401, chance = 2000 }, -- shield nevermourn } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -125 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, { name = "melee", interval = 2000, chance = 30, minDamage = 0, maxDamage = 0 }, - { name = "pirate corsair skill reducer", interval = 2000, chance = 5, target = false } + { name = "pirate corsair skill reducer", interval = 2000, chance = 5, target = false }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/isle_of_evil/doctor_perhaps.lua b/data-otservbr-global/monster/quests/isle_of_evil/doctor_perhaps.lua index 2ca22efc44b..3c7cf14aec7 100644 --- a/data-otservbr-global/monster/quests/isle_of_evil/doctor_perhaps.lua +++ b/data-otservbr-global/monster/quests/isle_of_evil/doctor_perhaps.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 93, lookFeet = 114, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Zombie", chance = 10, interval = 2000, count = 2 } - } + { name = "Zombie", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -84,21 +84,21 @@ monster.loot = { { id = 9399, chance = 1000 }, -- mighty helm of green sparks { id = 9372, chance = 1000 }, -- meat shield { id = 9373, chance = 1000 }, -- glutton's mace - { id = 9383, chance = 1000 } -- trousers of the ancients + { id = 9383, chance = 1000 }, -- trousers of the ancients } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -43 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -17, maxDamage = -55, range = 5, radius = 3, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_LOSEENERGY, target = true }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -20, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -20, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { defense = 15, armor = 15, mitigation = 0.30, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/isle_of_evil/evil_mastermind.lua b/data-otservbr-global/monster/quests/isle_of_evil/evil_mastermind.lua index e251b9c1723..067fbe84265 100644 --- a/data-otservbr-global/monster/quests/isle_of_evil/evil_mastermind.lua +++ b/data-otservbr-global/monster/quests/isle_of_evil/evil_mastermind.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "vampire", chance = 40, interval = 2000, count = 3 } - } + { name = "vampire", chance = 40, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -81,7 +81,7 @@ monster.voices = { monster.loot = { { id = 9391, chance = 10000 }, -- fan club membership card { id = 3031, chance = 100000, maxCount = 95 }, -- gold coin - { id = 3035, chance = 93000, maxCount = 3 } -- platinum coin + { id = 3035, chance = 93000, maxCount = 3 }, -- platinum coin } monster.attacks = { @@ -91,14 +91,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -36, maxDamage = -57, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -70, maxDamage = -73, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_MANADRAIN, minDamage = -59, maxDamage = -75, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, } monster.defenses = { defense = 30, armor = 30, mitigation = 0.40, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 50, maxDamage = 110, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 50, maxDamage = 110, effect = CONST_ME_ENERGYHIT, target = false }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/isle_of_evil/mephiles.lua b/data-otservbr-global/monster/quests/isle_of_evil/mephiles.lua index b0eda04d754..1b514fd9305 100644 --- a/data-otservbr-global/monster/quests/isle_of_evil/mephiles.lua +++ b/data-otservbr-global/monster/quests/isle_of_evil/mephiles.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -78,12 +78,12 @@ monster.loot = { { id = 9376, chance = 1000 }, -- stale bread of ancientness { id = 9387, chance = 1000 }, -- poet's fencing quill { id = 9400, chance = 1000 }, -- rain coat - { id = 3537, chance = 1000 } -- white knight + { id = 3537, chance = 1000 }, -- white knight } monster.attacks = { { name = "melee", interval = 1200, chance = 100, minDamage = 0, maxDamage = -35 }, - { name = "combat", interval = 1500, chance = 70, type = COMBAT_FIREDAMAGE, minDamage = -15, maxDamage = -45, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true } + { name = "combat", interval = 1500, chance = 70, type = COMBAT_FIREDAMAGE, minDamage = -15, maxDamage = -45, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { @@ -91,7 +91,7 @@ monster.defenses = { armor = 30, mitigation = 0.40, { name = "speed", interval = 1000, chance = 40, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 40000 }, - { name = "invisible", interval = 4000, chance = 50, effect = CONST_ME_MAGIC_RED } + { name = "invisible", interval = 4000, chance = 50, effect = CONST_ME_MAGIC_RED }, } monster.elements = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/isle_of_evil/monstor.lua b/data-otservbr-global/monster/quests/isle_of_evil/monstor.lua index 392aee486d5..17c3fe1602c 100644 --- a/data-otservbr-global/monster/quests/isle_of_evil/monstor.lua +++ b/data-otservbr-global/monster/quests/isle_of_evil/monstor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Acid Blob", chance = 40, interval = 4000, count = 3 } - } + { name = "Acid Blob", chance = 40, interval = 4000, count = 3 }, + }, } monster.voices = { @@ -81,19 +81,19 @@ monster.loot = { { id = 9381, chance = 1000 }, -- helmet of ultimate terror { id = 9386, chance = 1000 }, -- farmer's avenger { id = 9380, chance = 1000 }, -- shield of care - { id = 9396, chance = 1000 } -- incredible mumpiz slayer + { id = 9396, chance = 1000 }, -- incredible mumpiz slayer } monster.attacks = { { name = "melee", interval = 1200, chance = 100, minDamage = 0, maxDamage = -167 }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -66, maxDamage = -85, length = 6, spread = 3, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -66, maxDamage = -85, length = 6, spread = 3, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.defenses = { defense = 15, armor = 15, mitigation = 0.50, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 90, maxDamage = 200, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 90, maxDamage = 200, effect = CONST_ME_HITBYFIRE, target = false }, } monster.elements = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/bretzecutioner.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/bretzecutioner.lua index 11c5af1311c..c7e21008b2a 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/bretzecutioner.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/bretzecutioner.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5600 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -87,19 +87,19 @@ monster.loot = { { id = 3008, chance = 24000 }, -- crystal necklace { id = 3421, chance = 16000 }, -- dark shield { id = 6299, chance = 100000 }, -- death ring - { id = 5741, chance = 4000 } -- skull helmet + { id = 5741, chance = 4000 }, -- skull helmet } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -514 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { defense = 30, armor = 30, mitigation = 2.04, - { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/bruise_payne.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/bruise_payne.lua index 3db8874f80b..b86b5a75873 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/bruise_payne.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/bruise_payne.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1600 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -72,7 +72,7 @@ monster.loot = { { id = 3429, chance = 92000 }, -- black shield { id = 3027, chance = 85000, maxCount = 5 }, -- black pearl { id = 7386, chance = 25000 }, -- mercenary sword - { id = 9103, chance = 16000 } -- batwing hat + { id = 9103, chance = 16000 }, -- batwing hat } monster.attacks = { @@ -81,14 +81,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -130, maxDamage = -237, radius = 6, effect = CONST_ME_SOUND_WHITE, target = false }, { name = "mutated bat curse", interval = 2000, chance = 10, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -12, maxDamage = -12, length = 4, spread = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -12, maxDamage = -12, length = 4, spread = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 20, armor = 20, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/deathbine.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/deathbine.lua index 150ef7677ee..7b9c674aa14 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/deathbine.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/deathbine.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 525 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -73,14 +73,14 @@ monster.loot = { { id = 813, chance = 50000 }, -- terra boots { id = 8084, chance = 50000 }, -- springsprout rod { id = 5014, chance = 5555 }, -- mandrake - { id = 12320, chance = 2854 } -- sweet smelling bait + { id = 12320, chance = 2854 }, -- sweet smelling bait } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 30, attack = 100, condition = { type = CONDITION_POISON, totalDamage = 5, interval = 4000 } }, { name = "combat", interval = 1000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -90, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = false }, { name = "speed", interval = 1000, chance = 34, speedChange = -850, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = false, duration = 30000 }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -130, radius = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -130, radius = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/demodras.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/demodras.lua index 653e0b27668..e15a4fc6104 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/demodras.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/demodras.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Dragon", chance = 17, interval = 1000, count = 2 } - } + { name = "Dragon", chance = 17, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -87,21 +87,21 @@ monster.loot = { { id = 5948, chance = 13700 }, -- red dragon leather { id = 2842, chance = 10250 }, -- book (gemmed) { id = 2903, chance = 6000 }, -- golden mug - { id = 3280, chance = 1700 } -- fire sword + { id = 3280, chance = 1700 }, -- fire sword } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -160, maxDamage = -600 }, { name = "combat", interval = 3000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -350, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "firefield", interval = 1000, chance = 10, range = 7, radius = 6, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 4000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 4000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 25, armor = 45, mitigation = 1.99, - { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 400, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 400, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/esmeralda.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/esmeralda.lua index c3450d6eee8..f0c4684bdd6 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/esmeralda.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/esmeralda.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -74,7 +74,7 @@ monster.loot = { { id = 3269, chance = 31050 }, -- halberd { id = 3326, chance = 26000 }, -- epee { id = 811, chance = 8200 }, -- terra mantle - { id = 3735, chance = 6500 } -- stone herb + { id = 3735, chance = 6500 }, -- stone herb } monster.attacks = { @@ -84,14 +84,14 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 22, minDamage = -5, maxDamage = -5, length = 6, spread = 3, effect = CONST_ME_SMALLPLANTS, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -4, maxDamage = -4, radius = 3, effect = CONST_ME_POISONAREA, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -110, radius = 3, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -110, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 15, armor = 15, mitigation = 1.19, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 30, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 30, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/ethershreck.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/ethershreck.lua index 9ceb31eefbd..2ba51add200 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/ethershreck.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/ethershreck.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 9500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -86,7 +86,7 @@ monster.loot = { { id = 10385, chance = 13000 }, -- zaoan helmet { id = 10389, chance = 10000 }, -- sai { id = 10388, chance = 8700 }, -- drakinata - { id = 12801, chance = 2170 } -- golden can of oil + { id = 12801, chance = 2170 }, -- golden can of oil } monster.attacks = { @@ -96,14 +96,14 @@ monster.attacks = { -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -920, maxDamage = -1260, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -350, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -180, radius = 4, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -180, radius = 4, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 35, armor = 45, mitigation = 1.74, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 70, maxDamage = 300, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 70, maxDamage = 300, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/fazzrah.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/fazzrah.lua index 4d5d5888d60..f46f50489e4 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/fazzrah.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/fazzrah.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2955 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -75,19 +75,19 @@ monster.loot = { { id = 3032, chance = 71000, maxCount = 5 }, -- small emerald { id = 10289, chance = 25000 }, -- red lantern { id = 10387, chance = 6250 }, -- zaoan legs - { id = 10384, chance = 3130 } -- zaoan armor + { id = 10384, chance = 3130 }, -- zaoan armor } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -320 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -220, maxDamage = -270, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -220, maxDamage = -270, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { defense = 35, armor = 35, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 168, maxDamage = 296, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 168, maxDamage = 296, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -107,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/flameborn.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/flameborn.lua index 0630a66acbc..177ed5a8ffd 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/flameborn.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/flameborn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -80,13 +80,13 @@ monster.loot = { { id = 9034, chance = 1610 }, -- dracoyle statue { id = 7421, chance = 3230 }, -- onyx flail { id = 12311, chance = 4840 }, -- carrot on a stick - { id = 3419, chance = 29030 } -- crown shield + { id = 3419, chance = 29030 }, -- crown shield } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, { name = "fireball rune", interval = 2000, chance = 20, minDamage = -150, maxDamage = -175, target = false }, - { name = "hellspawn soulfire", interval = 2000, chance = 10, range = 5, target = false } + { name = "hellspawn soulfire", interval = 2000, chance = 10, range = 5, target = false }, } monster.defenses = { @@ -94,7 +94,7 @@ monster.defenses = { armor = 40, mitigation = 1.52, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 120, maxDamage = 230, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 270, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 270, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/fleshcrawler.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/fleshcrawler.lua index 80fd65e9885..7187a58a581 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/fleshcrawler.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/fleshcrawler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1450 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Larva", chance = 10, interval = 2000, count = 3 } - } + { name = "Larva", chance = 10, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -82,7 +82,7 @@ monster.loot = { { id = 8084, chance = 75560 }, -- springsprout rod { id = 3440, chance = 43890 }, -- scarab shield { id = 7426, chance = 30560 }, -- amber staff - { id = 11468, chance = 14440 } -- ornamented brooch + { id = 11468, chance = 14440 }, -- ornamented brooch } monster.attacks = { @@ -90,7 +90,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -150, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -700, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false, duration = 25000 }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = 0, maxDamage = -520, radius = 5, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = 0, maxDamage = -520, radius = 5, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/gorgo.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/gorgo.lua index 4316574cb4f..ba0e3f46f7f 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/gorgo.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/gorgo.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -73,7 +73,7 @@ monster.loot = { { id = 814, chance = 46470 }, -- terra amulet { id = 811, chance = 46470 }, -- terra mantle { id = 812, chance = 33300 }, -- terra legs - { id = 7413, chance = 33300 } -- titan axe + { id = 7413, chance = 33300 }, -- titan axe } monster.attacks = { @@ -81,14 +81,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -21, maxDamage = -350, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_CARNIPHILA, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, { name = "speed", interval = 2000, chance = 25, radius = 7, effect = CONST_ME_POFF, target = true }, - { name = "outfit", interval = 2000, chance = 1, range = 7, target = true, duration = 3000, outfitMonster = "clay guardian" } + { name = "outfit", interval = 2000, chance = 1, range = 7, target = true, duration = 3000, outfitMonster = "clay guardian" }, } monster.defenses = { defense = 30, armor = 30, mitigation = 1.94, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/hemming.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/hemming.lua index 581c6a0aab1..f701729c292 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/hemming.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/hemming.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "War Wolf", chance = 100, interval = 2000, count = 2 } - } + { name = "War Wolf", chance = 100, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -86,7 +86,7 @@ monster.loot = { { id = 10389, chance = 15000 }, -- sai { id = 7419, chance = 9800 }, -- dreaded cleaver { id = 3053, chance = 6000 }, -- time ring - { id = 7428, chance = 2000 } -- bonebreaker + { id = 7428, chance = 2000 }, -- bonebreaker } monster.attacks = { @@ -94,7 +94,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -180, maxDamage = -265, radius = 3, effect = CONST_ME_SOUND_RED, target = false }, { name = "outfit", interval = 2000, chance = 5, effect = CONST_ME_SOUND_BLUE, target = false, duration = 2000, outfitMonster = "Werewolf" }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, radius = 3, effect = CONST_ME_SOUND_WHITE, target = false }, - { name = "werewolf skill reducer", interval = 2000, chance = 15, range = 1, target = false } + { name = "werewolf skill reducer", interval = 2000, chance = 15, range = 1, target = false }, } monster.defenses = { @@ -102,7 +102,7 @@ monster.defenses = { armor = 40, mitigation = 1.03, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 200, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, range = 7, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, range = 7, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 5000 }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/hide.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/hide.lua index 18af9759787..e081f4073d0 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/hide.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/hide.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -68,19 +68,19 @@ monster.loot = { { id = 5879, chance = 50000 }, -- spider silk { id = 830, chance = 50000 }, -- terra hood { id = 3371, chance = 50000 }, -- knight legs - { id = 3053, chance = 33333 } -- time ring + { id = 3053, chance = 33333 }, -- time ring } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -140 }, - { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 40, condition = { type = CONDITION_POISON, totalDamage = 80, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 40, condition = { type = CONDITION_POISON, totalDamage = 80, interval = 4000 } }, } monster.defenses = { defense = 40, armor = 25, mitigation = 0.71, - { name = "speed", interval = 2000, chance = 10, speedChange = 340, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 340, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -100,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/kerberos.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/kerberos.lua index c5cc34d0db8..3f8d0cb14c3 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/kerberos.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/kerberos.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 11000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -77,7 +77,7 @@ monster.loot = { { id = 817, chance = 96880 }, -- magma amulet { id = 238, chance = 96880, maxCount = 3 }, -- great mana potion { id = 7453, chance = 3130 }, -- executioner - { id = 3360, chance = 31250 } -- golden armor + { id = 3360, chance = 31250 }, -- golden armor } monster.attacks = { @@ -86,7 +86,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -498, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -662, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -976, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -549, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -549, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { @@ -112,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/leviathan.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/leviathan.lua index 8e6154d9147..8467e9f5bc7 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/leviathan.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/leviathan.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -74,21 +74,21 @@ monster.loot = { { id = 3029, chance = 50000, maxCount = 5 }, -- small sapphire { id = 237, chance = 50000 }, -- strong mana potion { id = 9604, chance = 14000 }, -- moon backpack - { id = 8059, chance = 1500 } -- frozen plate + { id = 8059, chance = 1500 }, -- frozen plate } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, { name = "combat", interval = 1000, chance = 8, type = COMBAT_EARTHDAMAGE, minDamage = -130, maxDamage = -460, length = 9, spread = 3, effect = CONST_ME_BIGPLANTS, target = false }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -365, maxDamage = -491, length = 9, spread = 3, effect = CONST_ME_ICEAREA, target = false }, - { name = "combat", interval = 1000, chance = 11, type = COMBAT_DROWNDAMAGE, minDamage = -15, maxDamage = -20, radius = 4, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 1000, chance = 11, type = COMBAT_DROWNDAMAGE, minDamage = -15, maxDamage = -20, radius = 4, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { defense = 30, armor = 20, mitigation = 1.24, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 100, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 100, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/paiz_the_pauperizer.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/paiz_the_pauperizer.lua index 657eb1410f6..283c9fa43fd 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/paiz_the_pauperizer.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/paiz_the_pauperizer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,7 +89,7 @@ monster.loot = { { id = 3041, chance = 8700 }, -- blue gem { id = 11651, chance = 8700 }, -- elite draken mail { id = 3032, chance = 8700, maxCount = 8 }, -- small emerald - { id = 12307, chance = 4350 } -- harness + { id = 12307, chance = 4350 }, -- harness } monster.attacks = { @@ -99,14 +99,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -280, maxDamage = -450, range = 4, radius = 4, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_POFF, target = true }, { name = "soulfire rune", interval = 2000, chance = 10, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 11, minDamage = -20, maxDamage = -20, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 11, minDamage = -20, maxDamage = -20, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { defense = 35, armor = 35, mitigation = 2.00, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 230, maxDamage = 330, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 230, maxDamage = 330, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/ribstride.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/ribstride.lua index 6017eac5816..4c4fb1d3362 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/ribstride.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/ribstride.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -71,7 +71,7 @@ monster.loot = { { id = 3732, chance = 60000, maxCount = 4 }, -- green mushroom { id = 10244, chance = 29000 }, -- bonebeast trophy { id = 5741, chance = 8700 }, -- skull helmet - { id = 12304, chance = 2000 } -- maxilla maximus + { id = 12304, chance = 2000 }, -- maxilla maximus } monster.attacks = { @@ -82,13 +82,13 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -50, maxDamage = -60, radius = 3, effect = CONST_ME_POISONAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -70, maxDamage = -80, length = 6, spread = 3, effect = CONST_ME_POISONAREA, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -300, target = true, duration = 13000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -300, target = true, duration = 13000 }, } monster.defenses = { defense = 35, armor = 35, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 30, maxDamage = 50, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 30, maxDamage = 50, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -101,14 +101,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = -20 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/shardhead.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/shardhead.lua index 9ed38450d19..51f9878070c 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/shardhead.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/shardhead.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -67,13 +67,13 @@ monster.loot = { { id = 7290, chance = 40000 }, -- shard { id = 236, chance = 100000 }, -- strong health potion { id = 9661, chance = 40000 }, -- frosty heart - { id = 7441, chance = 80000 } -- ice cube + { id = 7441, chance = 80000 }, -- ice cube } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -271 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -90, range = 7, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, - { name = "speed", interval = 2000, chance = 12, speedChange = -360, length = 8, spread = 3, effect = CONST_ME_ICEAREA, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 12, speedChange = -360, length = 8, spread = 3, effect = CONST_ME_ICEAREA, target = false, duration = 5000 }, } monster.defenses = { @@ -99,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/stonecracker.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/stonecracker.lua index 37cc928b13d..92e7b7bc9cb 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/stonecracker.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/stonecracker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -72,12 +72,12 @@ monster.loot = { { id = 3383, chance = 7650 }, -- dark armor { id = 3304, chance = 14800 }, -- crowbar { id = 3033, chance = 7650, maxCount = 2 }, -- small amethyst - { id = 3275, chance = 7650 } -- double axe + { id = 3275, chance = 7650 }, -- double axe } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -564 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -280, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -280, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { @@ -85,7 +85,7 @@ monster.defenses = { armor = 40, mitigation = 1.94, { name = "speed", interval = 2000, chance = 10, speedChange = 360, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 500, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 500, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/sulphur_scuttler.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/sulphur_scuttler.lua index c01a0b45446..af7d7e0c7a2 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/sulphur_scuttler.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/sulphur_scuttler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1300 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -74,7 +74,7 @@ monster.loot = { { id = 3032, chance = 65000, maxCount = 4 }, -- small emerald { id = 5904, chance = 81670 }, -- magic sulphur { id = 3049, chance = 46670 }, -- stealth ring - { id = 3055, chance = 20000 } -- platinum amulet + { id = 3055, chance = 20000 }, -- platinum amulet } monster.attacks = { @@ -82,12 +82,12 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false, duration = 10000 }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -394, radius = 6, effect = CONST_ME_SMALLPLANTS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -200, length = 6, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -120, length = 8, spread = 3, effect = CONST_ME_YELLOW_RINGS, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -120, length = 8, spread = 3, effect = CONST_ME_YELLOW_RINGS, target = false }, } monster.defenses = { defense = 25, - armor = 25 + armor = 25, -- mitigation = 1.38, } @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/the_bloodtusk.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/the_bloodtusk.lua index 3e7c60e1492..964648d72b1 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/the_bloodtusk.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/the_bloodtusk.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 600 monster.maxHealth = 600 monster.race = "blood" @@ -21,10 +20,9 @@ monster.corpse = 6074 monster.speed = 95 monster.manaCost = 0 - monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -72,11 +70,11 @@ monster.loot = { { id = 5911, chance = 60000 }, -- red piece of cloth { id = 3443, chance = 55000 }, -- tusk shield { id = 3044, chance = 41000, maxCount = 4 }, -- tusk - { id = 7463, chance = 18000 } -- mammoth fur cape + { id = 7463, chance = 18000 }, -- mammoth fur cape } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 }, } monster.defenses = { @@ -102,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/the_bloodweb.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/the_bloodweb.lua index fbaf0668d11..e1eb65599af 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/the_bloodweb.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/the_bloodweb.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1750 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 20000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -74,21 +74,21 @@ monster.loot = { { id = 3370, chance = 7692 }, -- knight armor { id = 3371, chance = 5555 }, -- knight legs { id = 7290, chance = 3703 }, -- shard - { id = 3053, chance = 3703 } -- time ring + { id = 3053, chance = 3703 }, -- time ring } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -280 }, { name = "melee", interval = 2000, chance = 100, skill = 40, attack = 100, condition = { type = CONDITION_POISON, totalDamage = 8, interval = 4000 } }, { name = "speed", interval = 2000, chance = 20, speedChange = -850, range = 7, radius = 7, effect = CONST_ME_POFF, target = false, duration = 8000 }, - { name = "combat", interval = 1000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -150, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true } + { name = "combat", interval = 1000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -150, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, } monster.defenses = { defense = 20, armor = 25, mitigation = 1.80, - { name = "speed", interval = 3000, chance = 40, speedChange = 380, effect = CONST_ME_MAGIC_RED, target = false, duration = 80000 } + { name = "speed", interval = 3000, chance = 40, speedChange = 380, effect = CONST_ME_MAGIC_RED, target = false, duration = 80000 }, } monster.elements = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/the_many.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/the_many.lua index 89d25309a93..230021189ce 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/the_many.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/the_many.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -72,7 +72,7 @@ monster.loot = { { id = 3436, chance = 53000 }, -- medusa shield { id = 9606, chance = 37000 }, -- egg of the many { id = 3392, chance = 20000 }, -- royal helmet - { id = 3370, chance = 10000 } -- knight armor + { id = 3370, chance = 10000 }, -- knight armor } monster.attacks = { @@ -80,14 +80,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -65, maxDamage = -320, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, { name = "speed", interval = 2000, chance = 25, speedChange = -300, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true, duration = 15000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -70, maxDamage = -155, range = 7, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -70, maxDamage = -155, range = 7, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = false }, } monster.defenses = { defense = 35, armor = 35, mitigation = 1.48, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 260, maxDamage = 407, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 260, maxDamage = 407, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -107,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/the_noxious_spawn.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/the_noxious_spawn.lua index e297fe753a0..a8b5a2eb129 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/the_noxious_spawn.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/the_noxious_spawn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 9500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,18 +49,18 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "I bring you deathhhh, mortalssss", yell = false } + { text = "I bring you deathhhh, mortalssss", yell = false }, } monster.loot = { @@ -79,7 +79,7 @@ monster.loot = { { id = 3052, chance = 13000 }, -- life ring { id = 8074, chance = 13000 }, -- spellbook of mind control { id = 3392, chance = 4000 }, -- royal helmet - { id = 8052, chance = 2000 } -- swamplair armor + { id = 8052, chance = 2000 }, -- swamplair armor } monster.attacks = { @@ -88,13 +88,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 7, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_SOUND_RED, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -300, range = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, - { name = "outfit", interval = 2000, chance = 11, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitItem = 3976 } + { name = "outfit", interval = 2000, chance = 11, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitItem = 3976 }, } monster.defenses = { defense = 25, armor = 18, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 900, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 900, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -107,14 +107,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/the_old_widow.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/the_old_widow.lua index 6da936fb453..9c65aa18a73 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/the_old_widow.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/the_old_widow.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,8 +59,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "giant spider", chance = 13, interval = 1000, count = 2 } - } + { name = "giant spider", chance = 13, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -83,14 +83,14 @@ monster.loot = { { id = 3055, chance = 25000 }, -- platinum amulet { id = 5886, chance = 25000 }, -- spool of yarn { id = 7416, chance = 3225 }, -- bloody edge - { id = 7419, chance = 1639 } -- dreaded cleaver + { id = 7419, chance = 1639 }, -- dreaded cleaver } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, { name = "speed", interval = 1000, chance = 20, speedChange = -850, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false, duration = 25000 }, - { name = "poisonfield", interval = 1000, chance = 10, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, target = true } + { name = "poisonfield", interval = 1000, chance = 10, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { @@ -98,7 +98,7 @@ monster.defenses = { armor = 45, -- mitigation = 1.54, { name = "combat", interval = 1000, chance = 17, type = COMBAT_HEALING, minDamage = 225, maxDamage = 275, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 8, speedChange = 345, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 1000, chance = 8, speedChange = 345, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/the_snapper.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/the_snapper.lua index cd624353743..ba25069933e 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/the_snapper.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/the_snapper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -69,11 +69,11 @@ monster.loot = { { id = 3557, chance = 44000 }, -- plate legs { id = 3357, chance = 39800 }, -- plate armor { id = 3556, chance = 6000 }, -- crocodile boots - { id = 3370, chance = 400 } -- knight armor + { id = 3370, chance = 400 }, -- knight armor } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, } monster.defenses = { @@ -99,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/thul.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/thul.lua index 306835f8b31..28c80234296 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/thul.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/thul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2950 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Massive Water Elemental", chance = 10, interval = 2000, count = 2 } - } + { name = "Massive Water Elemental", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -79,7 +79,7 @@ monster.loot = { { id = 3033, chance = 38000, maxCount = 4 }, -- small amethyst { id = 7383, chance = 35000 }, -- relic sword { id = 3391, chance = 16000 }, -- crusader helmet - { id = 3381, chance = 10000 } -- crown armor + { id = 3381, chance = 10000 }, -- crown armor } monster.attacks = { @@ -87,14 +87,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 7, type = COMBAT_ICEDAMAGE, minDamage = -108, maxDamage = -137, radius = 4, effect = CONST_ME_ICEAREA, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -170, radius = 3, effect = CONST_ME_HITAREA, target = false }, { name = "poisonfield", interval = 2000, chance = 19, radius = 3, shootEffect = CONST_ANI_POISON, target = false }, - { name = "speed", interval = 2000, chance = 18, speedChange = -360, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 18, speedChange = -360, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = false, duration = 5000 }, } monster.defenses = { defense = 25, armor = 25, mitigation = 1.46, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 25, maxDamage = 75, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 25, maxDamage = 75, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/tiquandas_revenge.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/tiquandas_revenge.lua index b402421d40c..dda48568392 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/tiquandas_revenge.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/tiquandas_revenge.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -68,21 +68,21 @@ monster.loot = { { id = 3028, chance = 100 }, -- small diamond { id = 647, chance = 100000, maxCount = 3 }, -- seeds { id = 12311, chance = 12750 }, -- carrot on a stick - { id = 5014, chance = 100000 } -- mandrake + { id = 5014, chance = 100000 }, -- mandrake } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 40, condition = { type = CONDITION_POISON, totalDamage = 95, interval = 4000 } }, { name = "combat", interval = 1000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -200, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = false }, { name = "speed", interval = 1000, chance = 34, speedChange = -850, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = false, duration = 30000 }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -130, radius = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -130, radius = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 31, armor = 30, mitigation = 1.58, - { name = "ultimate healing", interval = 1200, chance = 35, minDamage = 600, maxDamage = 800, target = false } + { name = "ultimate healing", interval = 1200, chance = 35, minDamage = 600, maxDamage = 800, target = false }, } monster.elements = { @@ -102,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/tormentor.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/tormentor.lua index 13f6fc5371c..4bd34f251c6 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/tormentor.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/tormentor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4100 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -79,13 +79,13 @@ monster.loot = { { id = 6525, chance = 28000 }, -- skeleton decoration { id = 3342, chance = 14000 }, -- war axe { id = 7418, chance = 10000 }, -- nightmare blade - { id = 3079, chance = 8000 } -- boots of haste + { id = 3079, chance = 8000 }, -- boots of haste } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -340 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -130, maxDamage = -170, range = 7, radius = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -400, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -400, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, } monster.defenses = { @@ -93,7 +93,7 @@ monster.defenses = { armor = 25, mitigation = 1.23, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 60, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/tromphonyte.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/tromphonyte.lua index cdf64bb565a..09195e46921 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/tromphonyte.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/tromphonyte.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -71,21 +71,21 @@ monster.loot = { { id = 12313, chance = 100000, maxCount = 2 }, -- stampor talons { id = 236, chance = 100000, maxCount = 2 }, -- strong health potion { id = 237, chance = 100000, maxCount = 2 }, -- strong mana potion - { id = 7452, chance = 50000 } -- spiked squelcher + { id = 7452, chance = 50000 }, -- spiked squelcher } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -215 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -170, maxDamage = -300, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -130, shootEffect = CONST_ANI_SMALLSTONE, target = true }, - { name = "stampor skill reducer", interval = 2000, chance = 10, range = 5, target = false } + { name = "stampor skill reducer", interval = 2000, chance = 10, range = 5, target = false }, } monster.defenses = { defense = 0, armor = 0, mitigation = 1.11, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/killing_in_the_name_of/zanakeph.lua b/data-otservbr-global/monster/quests/killing_in_the_name_of/zanakeph.lua index 416394c138b..35354843ab4 100644 --- a/data-otservbr-global/monster/quests/killing_in_the_name_of/zanakeph.lua +++ b/data-otservbr-global/monster/quests/killing_in_the_name_of/zanakeph.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 13000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 6 + chance = 6, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { id = 12304, chance = 6780 }, -- maxilla maximus { id = 5741, chance = 5000 }, -- skull helmet { id = 8057, chance = 3390 }, -- divine plate - { id = 3392, chance = 1690 } -- royal helmet + { id = 3392, chance = 1690 }, -- royal helmet } monster.attacks = { @@ -99,14 +99,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -690, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "undead dragon curse", interval = 2000, chance = 10, target = false } + { name = "undead dragon curse", interval = 2000, chance = 10, target = false }, } monster.defenses = { defense = 40, armor = 40, mitigation = 1.94, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/a_shielded_astral_glyph.lua b/data-otservbr-global/monster/quests/kilmaresh/a_shielded_astral_glyph.lua index d1b9ffb2368..ecb674017ea 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/a_shielded_astral_glyph.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/a_shielded_astral_glyph.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a shielded astral glyph" monster.experience = 0 monster.outfit = { - lookTypeEx = 24226 + lookTypeEx = 24226, } monster.health = 50000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -56,19 +56,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -780 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -0, maxDamage = -776, radius = 3, effect = CONST_ME_BLOCKHIT, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -400, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -400, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.defenses = { defense = 199, armor = 199, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 118, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 118, effect = CONST_ME_MAGIC_BLUE, target = false }, -- mitigation = ???, } @@ -89,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/amenef_the_burning.lua b/data-otservbr-global/monster/quests/kilmaresh/amenef_the_burning.lua index 5e0f3f97572..5a0e337bb3d 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/amenef_the_burning.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/amenef_the_burning.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 113, lookFeet = 113, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,7 +94,7 @@ monster.loot = { { name = "noble axe", chance = 127 }, { name = "sacred tree amulet", chance = 127 }, { name = "golden mask", chance = 63 }, - { name = "mercenary sword", chance = 63 } + { name = "mercenary sword", chance = 63 }, } monster.attacks = { @@ -102,7 +102,7 @@ monster.attacks = { { name = "firering", interval = 2000, chance = 10, minDamage = -300, maxDamage = -600, target = false }, { name = "firex", interval = 2000, chance = 15, minDamage = -450, maxDamage = -750, target = false }, { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -600, radius = 2, effect = CONST_ME_FIREATTACK, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -750, length = 3, spread = 0, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -750, length = 3, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/an_astral_glyph.lua b/data-otservbr-global/monster/quests/kilmaresh/an_astral_glyph.lua index c985a446ef8..5b76352b45d 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/an_astral_glyph.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/an_astral_glyph.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "an astral glyph" monster.experience = 0 monster.outfit = { - lookTypeEx = 24225 + lookTypeEx = 24225, } monster.health = 300000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -47,7 +47,7 @@ monster.flags = { } monster.events = { - "AstralGlyphDeath" + "AstralGlyphDeath", } monster.light = { @@ -60,19 +60,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -780 }, { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 100 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -800, radius = 3, effect = CONST_ME_BLOCKHIT, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -800, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -800, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.defenses = { defense = 50, - armor = 50 + armor = 50, -- mitigation = ???, } @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/bragrumol.lua b/data-otservbr-global/monster/quests/kilmaresh/bragrumol.lua index fa371e08f3a..b653df68c89 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/bragrumol.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/bragrumol.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 38000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1828, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -54,12 +54,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -77,7 +77,7 @@ monster.loot = { { name = "winged boots", chance = 110 }, { id = 30403, chance = 250 }, -- enchanted theurgic amulet { name = "magma coat", chance = 48000 }, - { name = "stone skin amulet", chance = 54000 } + { name = "stone skin amulet", chance = 54000 }, } monster.attacks = { @@ -85,12 +85,12 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 18, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -600, range = 5, shootEffect = CONST_ANI_SUDDENDEATH, target = false }, { name = "combat", interval = 2000, chance = 22, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -600, range = 5, radius = 4, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -600, range = 5, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -600, range = 5, length = 5, spread = 3, effect = CONST_ME_WHITE_ENERGY_SPARK, target = true } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -600, range = 5, length = 5, spread = 3, effect = CONST_ME_WHITE_ENERGY_SPARK, target = true }, } monster.defenses = { defense = 84, - armor = 84 + armor = 84, } monster.elements = { @@ -103,18 +103,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 50 } + { type = COMBAT_DEATHDAMAGE, percent = 50 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -122,13 +121,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/earworm.lua b/data-otservbr-global/monster/quests/kilmaresh/earworm.lua index 0c498a49065..a8fba2bf8a4 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/earworm.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/earworm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -70,13 +70,13 @@ monster.loot = { { name = "violet memory shard", chance = 32000 }, { name = "terra amulet", chance = 26000 }, { name = "terra hood", chance = 16500 }, - { name = "sacred tree amulet", chance = 12300 } + { name = "sacred tree amulet", chance = 12300 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240, condition = { type = CONDITION_POISON, totalDamage = 25, interval = 4000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -320, maxDamage = -450, range = 5, shootEffect = CONST_ANI_POISON, effect = CONST_ME_SOUND_GREEN, target = true }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -280, maxDamage = -350, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -280, maxDamage = -350, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { @@ -102,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/mozradek.lua b/data-otservbr-global/monster/quests/kilmaresh/mozradek.lua index 58e680845da..093b8d7ceeb 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/mozradek.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/mozradek.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -71,19 +71,19 @@ monster.loot = { { id = 3039, chance = 60000 }, -- red gem { id = 31369, chance = 9000 }, -- gryphon mask { name = "sea horse figurine", chance = 6000 }, - { id = 31557, chance = 3500 } -- blister ring + { id = 31557, chance = 3500 }, -- blister ring } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -550, radius = 4, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 16, type = COMBAT_DEATHDAMAGE, minDamage = -450, maxDamage = -666, range = 7, radius = 3, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_FIREDAMAGE, minDamage = -450, maxDamage = 600, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_EXPLOSIONHIT, target = true } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_FIREDAMAGE, minDamage = -450, maxDamage = 600, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_EXPLOSIONHIT, target = true }, } monster.defenses = { defense = 84, - armor = 84 + armor = 84, -- mitigation = ???, } @@ -104,11 +104,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -116,13 +115,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/neferi_the_spy.lua b/data-otservbr-global/monster/quests/kilmaresh/neferi_the_spy.lua index 107adaded24..a2430394824 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/neferi_the_spy.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/neferi_the_spy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 1, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 28000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 2105, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Kilmaresh.NeferiTheSpyTimer + storageCooldown = Storage.Kilmaresh.NeferiTheSpyTimer, } monster.strategiesTarget = { @@ -52,12 +52,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -113,14 +113,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 20 } + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/sister_hetai.lua b/data-otservbr-global/monster/quests/kilmaresh/sister_hetai.lua index fad17dc87ce..2b98e991d08 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/sister_hetai.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/sister_hetai.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 78, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 25000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 2104, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Kilmaresh.SisterHetaiTimer + storageCooldown = Storage.Kilmaresh.SisterHetaiTimer, } monster.strategiesTarget = { @@ -52,12 +52,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -97,7 +97,7 @@ monster.loot = { { name = "yellow gem", chance = 156 }, { name = "lightning legs", chance = 104 }, { name = "sea horse figurine", chance = 104 }, - { name = "tagralt-inlaid scabbard", chance = 52 } + { name = "tagralt-inlaid scabbard", chance = 52 }, } monster.attacks = { @@ -122,14 +122,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -25 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/sun-marked_goanna.lua b/data-otservbr-global/monster/quests/kilmaresh/sun-marked_goanna.lua index 088de3276cb..f46be10d661 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/sun-marked_goanna.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/sun-marked_goanna.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 7800 monster.maxHealth = 7800 monster.race = "blood" @@ -21,10 +20,9 @@ monster.corpse = 31405 monster.speed = 95 monster.manaCost = 0 - monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -66,21 +64,21 @@ monster.loot = { { name = "platinum coin", chance = 100000, maxCount = 3 }, { name = "envenomed arrow", chance = 50000, maxCount = 29 }, { name = "poison dagger", chance = 50000 }, - { name = "scared frog", chance = 50000 } + { name = "scared frog", chance = 50000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350, condition = { type = CONDITION_POISON, totalDamage = 19, interval = 4000 } }, { name = "wave t", interval = 2000, chance = 10, minDamage = -250, maxDamage = -380, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -450, maxDamage = -550, range = 3, radius = 1, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -210, maxDamage = -300, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -210, maxDamage = -300, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { defense = 84, armor = 84, mitigation = 2.60, - { name = "speed", interval = 2000, chance = 5, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 5, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -100,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/urmahlullu_the_immaculate.lua b/data-otservbr-global/monster/quests/kilmaresh/urmahlullu_the_immaculate.lua index 5246e8d9c08..93b74a514b4 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/urmahlullu_the_immaculate.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/urmahlullu_the_immaculate.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 512000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1811, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Kilmaresh.UrmahlulluTimer + storageCooldown = Storage.Kilmaresh.UrmahlulluTimer, } monster.strategiesTarget = { @@ -59,7 +59,7 @@ monster.flags = { } monster.events = { - "UrmahlulluChanges" + "UrmahlulluChanges", } monster.light = { level = 0, @@ -73,20 +73,19 @@ monster.voices = { { text = "I am the beast with two faces!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -1300 }, { name = "combat", interval = 3000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -800, radius = 4, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -550, maxDamage = -800, radius = 3, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -550, maxDamage = -800, radius = 3, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "urmahlulluring", interval = 2000, chance = 18, minDamage = -450, maxDamage = -600, target = false } + { name = "urmahlulluring", interval = 2000, chance = 18, minDamage = -450, maxDamage = -600, target = false }, } monster.defenses = { defense = 84, - armor = 84 + armor = 84, -- mitigation = ???, } @@ -107,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/urmahlullu_the_tamed.lua b/data-otservbr-global/monster/quests/kilmaresh/urmahlullu_the_tamed.lua index 1cbe5c1ff52..d1db7e30d34 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/urmahlullu_the_tamed.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/urmahlullu_the_tamed.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 38, lookFeet = 86, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1811, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Kilmaresh.UrmahlulluTimer + storageCooldown = Storage.Kilmaresh.UrmahlulluTimer, } monster.strategiesTarget = { @@ -59,7 +59,7 @@ monster.flags = { } monster.events = { - "UrmahlulluChanges" + "UrmahlulluChanges", } monster.light = { @@ -73,20 +73,19 @@ monster.voices = { { text = "Not worth to be here!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -1300 }, { name = "combat", interval = 3000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -800, radius = 4, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -550, maxDamage = -800, radius = 3, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -550, maxDamage = -800, radius = 3, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "urmahlulluring", interval = 2000, chance = 18, minDamage = -450, maxDamage = -600, target = false } + { name = "urmahlulluring", interval = 2000, chance = 18, minDamage = -450, maxDamage = -600, target = false }, } monster.defenses = { defense = 84, - armor = 84 + armor = 84, -- mitigation = ???, } @@ -107,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/urmahlullu_the_weakened.lua b/data-otservbr-global/monster/quests/kilmaresh/urmahlullu_the_weakened.lua index 1bff648d03e..ce8d1e67c5d 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/urmahlullu_the_weakened.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/urmahlullu_the_weakened.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -112,19 +112,19 @@ monster.loot = { { name = "rainbow necklace", chance = 1160 }, { id = 30403, chance = 160 }, -- enchanted theurgic amulet { name = "sun medal", chance = 160 }, - { name = "sunray emblem", chance = 160 } + { name = "sunray emblem", chance = 160 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -50, maxDamage = -1100 }, { name = "combat", interval = 3000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -800, radius = 4, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -550, maxDamage = -800, radius = 3, effect = CONST_ME_FIREAREA, target = false }, - { name = "urmahlulluring", interval = 2000, chance = 18, minDamage = -450, maxDamage = -600, target = false } + { name = "urmahlulluring", interval = 2000, chance = 18, minDamage = -450, maxDamage = -600, target = false }, } monster.defenses = { defense = 84, - armor = 84 + armor = 84, -- mitigation = ???, } @@ -145,11 +145,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -157,13 +156,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/wildness_of_urmahlullu.lua b/data-otservbr-global/monster/quests/kilmaresh/wildness_of_urmahlullu.lua index e8fb73972d4..b57a1313c07 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/wildness_of_urmahlullu.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/wildness_of_urmahlullu.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 38, lookFeet = 86, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 400000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1811, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Kilmaresh.UrmahlulluTimer + storageCooldown = Storage.Kilmaresh.UrmahlulluTimer, } monster.strategiesTarget = { @@ -59,7 +59,7 @@ monster.flags = { } monster.events = { - "UrmahlulluChanges" + "UrmahlulluChanges", } monster.light = { @@ -72,20 +72,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -1300 }, { name = "combat", interval = 3000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -800, radius = 4, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -550, maxDamage = -800, radius = 3, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -550, maxDamage = -800, radius = 3, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "urmahlulluring", interval = 2000, chance = 18, minDamage = -450, maxDamage = -600, target = false } + { name = "urmahlulluring", interval = 2000, chance = 18, minDamage = -450, maxDamage = -600, target = false }, } monster.defenses = { defense = 84, - armor = 84 + armor = 84, -- mitigation = ???, } @@ -106,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/wisdom_of_urmahlullu.lua b/data-otservbr-global/monster/quests/kilmaresh/wisdom_of_urmahlullu.lua index c933b722ca6..3197d889d34 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/wisdom_of_urmahlullu.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/wisdom_of_urmahlullu.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 38, lookFeet = 86, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 200000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1811, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Kilmaresh.UrmahlulluTimer + storageCooldown = Storage.Kilmaresh.UrmahlulluTimer, } monster.strategiesTarget = { @@ -59,7 +59,7 @@ monster.flags = { } monster.events = { - "UrmahlulluChanges" + "UrmahlulluChanges", } monster.light = { @@ -73,20 +73,19 @@ monster.voices = { { text = "How can you be that dumb?", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -1300 }, { name = "combat", interval = 3000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -800, radius = 4, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -550, maxDamage = -800, radius = 3, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -550, maxDamage = -800, radius = 3, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "urmahlulluring", interval = 2000, chance = 18, minDamage = -450, maxDamage = -600, target = false } + { name = "urmahlulluring", interval = 2000, chance = 18, minDamage = -450, maxDamage = -600, target = false }, } monster.defenses = { defense = 84, - armor = 84 + armor = 84, -- mitigation = ???, } @@ -107,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/kilmaresh/xogixath.lua b/data-otservbr-global/monster/quests/kilmaresh/xogixath.lua index bb93e81c73e..886b7632944 100644 --- a/data-otservbr-global/monster/quests/kilmaresh/xogixath.lua +++ b/data-otservbr-global/monster/quests/kilmaresh/xogixath.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 75, lookFeet = 79, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 28000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1827, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -54,12 +54,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -77,7 +77,7 @@ monster.loot = { { name = "stone skin amulet", chance = 54000 }, { id = 31369, chance = 6500 }, -- gryphon mask { name = "fire axe", chance = 34000 }, - { id = 31557, chance = 520 } -- blister ring + { id = 31557, chance = 520 }, -- blister ring } monster.attacks = { @@ -85,12 +85,12 @@ monster.attacks = { { name = "sudden death rune", interval = 2000, chance = 16, minDamage = -450, maxDamage = -550, range = 5, target = true }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -480, range = 5, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -550, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -420, maxDamage = -600, length = 5, spread = 3, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -420, maxDamage = -600, length = 5, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { defense = 86, - armor = 86 + armor = 86, } monster.elements = { @@ -103,18 +103,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 50 } + { type = COMBAT_DEATHDAMAGE, percent = 50 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -122,13 +121,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/liquid_black/jaul.lua b/data-otservbr-global/monster/quests/liquid_black/jaul.lua index 5f5d5ef98cb..c9fa8b2c7fe 100644 --- a/data-otservbr-global/monster/quests/liquid_black/jaul.lua +++ b/data-otservbr-global/monster/quests/liquid_black/jaul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -77,7 +77,7 @@ monster.loot = { { name = "ornate chestplate", chance = 650, unique = true }, { name = "ornate legs", chance = 740 }, { name = "ornate mace", chance = 1500 }, - { name = "ornate shield", chance = 1400 } + { name = "ornate shield", chance = 1400 }, } monster.attacks = { @@ -89,14 +89,14 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 5, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 1000, chance = 5, type = COMBAT_ICEDAMAGE, minDamage = -1000, maxDamage = -2000, length = 8, spread = 3, effect = CONST_ME_ICEAREA, target = false }, { name = "combat", interval = 4000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -500, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_WATERSPLASH, target = false }, - { name = "speed", interval = 1900, chance = 14, speedChange = -700, range = 7, radius = 1, target = true, duration = 15000 } + { name = "speed", interval = 1900, chance = 14, speedChange = -700, range = 7, radius = 1, target = true, duration = 15000 }, } monster.defenses = { defense = 40, armor = 40, -- mitigation = ???, - { name = "combat", interval = 5000, chance = 7, type = COMBAT_HEALING, minDamage = 12000, maxDamage = 19000, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 5000, chance = 7, type = COMBAT_HEALING, minDamage = 12000, maxDamage = 19000, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -116,11 +116,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -128,13 +127,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/liquid_black/obujos.lua b/data-otservbr-global/monster/quests/liquid_black/obujos.lua index 3ec32b3707f..b8c84b54c61 100644 --- a/data-otservbr-global/monster/quests/liquid_black/obujos.lua +++ b/data-otservbr-global/monster/quests/liquid_black/obujos.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -72,7 +72,7 @@ monster.voices = { monster.loot = { { name = "deepling axe", chance = 1300 }, { name = "depth scutum", chance = 1185 }, - { name = "ornate legs", chance = 700, unique = true } + { name = "ornate legs", chance = 700, unique = true }, } monster.attacks = { @@ -81,14 +81,14 @@ monster.attacks = { { name = "combat", interval = 3500, chance = 20, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -600, range = 7, radius = 6, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_BIGCLOUDS, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -800, range = 7, radius = 1, shootEffect = CONST_ANI_POISONARROW, effect = CONST_ME_GREEN_RINGS, target = true }, { name = "combat", interval = 1200, chance = 7, type = COMBAT_ICEDAMAGE, minDamage = -600, maxDamage = -1300, length = 8, spread = 3, effect = CONST_ME_GIANTICE, target = false }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1600, length = 8, spread = 3, effect = CONST_ME_ICETORNADO, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1600, length = 8, spread = 3, effect = CONST_ME_ICETORNADO, target = false }, } monster.defenses = { defense = 40, armor = 40, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 800, maxDamage = 2200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 800, maxDamage = 2200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -108,11 +108,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -120,13 +119,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/liquid_black/tanjis.lua b/data-otservbr-global/monster/quests/liquid_black/tanjis.lua index fb8999db84c..4313a4a74ab 100644 --- a/data-otservbr-global/monster/quests/liquid_black/tanjis.lua +++ b/data-otservbr-global/monster/quests/liquid_black/tanjis.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -71,7 +71,7 @@ monster.voices = { monster.loot = { { name = "depth ocrea", chance = 1200 }, { name = "ornate mace", chance = 1100, unique = true }, - { name = "ornate shield", chance = 1100 } + { name = "ornate shield", chance = 1100 }, } monster.attacks = { @@ -84,14 +84,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -400, range = 7, radius = 1, shootEffect = CONST_ANI_LARGEROCK, target = true }, { name = "combat", interval = 1200, chance = 7, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, - { name = "speed", interval = 2150, chance = 16, speedChange = -600, range = 7, radius = 1, target = true, duration = 15000 } + { name = "speed", interval = 2150, chance = 16, speedChange = -600, range = 7, radius = 1, target = true, duration = 15000 }, } monster.defenses = { defense = 40, armor = 40, -- mitigation = ???, - { name = "combat", interval = 3000, chance = 40, type = COMBAT_HEALING, minDamage = 800, maxDamage = 1100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 3000, chance = 40, type = COMBAT_HEALING, minDamage = 800, maxDamage = 1100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -111,11 +111,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -123,13 +122,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/marapur/timira_the_many-headed.lua b/data-otservbr-global/monster/quests/marapur/timira_the_many-headed.lua index e6836f1bea6..98d92eb4c00 100644 --- a/data-otservbr-global/monster/quests/marapur/timira_the_many-headed.lua +++ b/data-otservbr-global/monster/quests/marapur/timira_the_many-headed.lua @@ -24,7 +24,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.flags = { @@ -85,7 +85,7 @@ monster.loot = { { name = "naga club", chance = 200 }, { name = "naga wand", chance = 200 }, { name = "naga rod", chance = 200 }, - { name = "naga crossbow", chance = 200 } + { name = "naga crossbow", chance = 200 }, } monster.attacks = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onAppear = function(monster, creature) diff --git a/data-otservbr-global/monster/quests/mysterious_ornate_chest/an_observer_eye.lua b/data-otservbr-global/monster/quests/mysterious_ornate_chest/an_observer_eye.lua index d743682fe12..f96e59d1c9a 100644 --- a/data-otservbr-global/monster/quests/mysterious_ornate_chest/an_observer_eye.lua +++ b/data-otservbr-global/monster/quests/mysterious_ornate_chest/an_observer_eye.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -60,16 +60,16 @@ monster.voices = { } monster.loot = { - { name = "lightsphere", chance = 99990 } + { name = "lightsphere", chance = 99990 }, } monster.attacks = { - { name = "combat", interval = 2000, chance = 4, type = COMBAT_ENERGYDAMAGE, minDamage = -3000, maxDamage = -5000, range = 3, shootEffect = CONST_ANI_ENERGY, target = false } + { name = "combat", interval = 2000, chance = 4, type = COMBAT_ENERGYDAMAGE, minDamage = -3000, maxDamage = -5000, range = 3, shootEffect = CONST_ANI_ENERGY, target = false }, } monster.defenses = { defense = 55, - armor = 55 + armor = 55, -- mitigation = ???, } @@ -90,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/mysterious_ornate_chest/an_observer_eye_(imune).lua b/data-otservbr-global/monster/quests/mysterious_ornate_chest/an_observer_eye_(imune).lua index 9f7989b2768..33ba2005c9b 100644 --- a/data-otservbr-global/monster/quests/mysterious_ornate_chest/an_observer_eye_(imune).lua +++ b/data-otservbr-global/monster/quests/mysterious_ornate_chest/an_observer_eye_(imune).lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,16 +63,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 1000, chance = 100, type = COMBAT_ENERGYDAMAGE, minDamage = -3000, maxDamage = -5000, range = 30, shootEffect = CONST_ANI_ENERGY, target = false } + { name = "combat", interval = 1000, chance = 100, type = COMBAT_ENERGYDAMAGE, minDamage = -3000, maxDamage = -5000, range = 30, shootEffect = CONST_ANI_ENERGY, target = false }, } monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -85,14 +84,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/mysterious_ornate_chest/reflection_of_mawhawk.lua b/data-otservbr-global/monster/quests/mysterious_ornate_chest/reflection_of_mawhawk.lua index c76e6b4a229..a2806343a65 100644 --- a/data-otservbr-global/monster/quests/mysterious_ornate_chest/reflection_of_mawhawk.lua +++ b/data-otservbr-global/monster/quests/mysterious_ornate_chest/reflection_of_mawhawk.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 45000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 4 + chance = 4, } monster.strategiesTarget = { @@ -80,7 +80,7 @@ monster.loot = { { id = 21176, chance = 1420 }, -- execowtioner axe { id = 3318, chance = 770 }, -- knight axe { id = 7413, chance = 390 }, -- titan axe - { id = 7401, chance = 520 } -- minotaur trophy + { id = 7401, chance = 520 }, -- minotaur trophy } monster.attacks = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/mysterious_ornate_chest/reflection_of_obujos.lua b/data-otservbr-global/monster/quests/mysterious_ornate_chest/reflection_of_obujos.lua index 07fae33bb2f..84125accfa2 100644 --- a/data-otservbr-global/monster/quests/mysterious_ornate_chest/reflection_of_obujos.lua +++ b/data-otservbr-global/monster/quests/mysterious_ornate_chest/reflection_of_obujos.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 35000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 4 + chance = 4, } monster.strategiesTarget = { @@ -65,7 +65,7 @@ monster.voices = { monster.loot = { { id = 13998, chance = 100000 }, -- depth scutum { id = 13991, chance = 1285 }, -- deepling axe - { id = 13999, chance = 1285, unique = true } -- ornate legs + { id = 13999, chance = 1285, unique = true }, -- ornate legs } monster.attacks = { @@ -74,14 +74,14 @@ monster.attacks = { { name = "combat", interval = 3500, chance = 20, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -600, range = 7, radius = 6, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_BIGCLOUDS, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -800, range = 7, radius = 1, shootEffect = CONST_ANI_POISONARROW, effect = CONST_ME_GREEN_RINGS, target = true }, { name = "combat", interval = 1200, chance = 7, type = COMBAT_ICEDAMAGE, minDamage = -600, maxDamage = -1300, length = 8, spread = 3, effect = CONST_ME_GIANTICE, target = false }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1600, length = 8, spread = 3, effect = CONST_ME_ICETORNADO, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1600, length = 8, spread = 3, effect = CONST_ME_ICETORNADO, target = false }, } monster.defenses = { defense = 40, armor = 40, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 2100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 2100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -101,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/mysterious_ornate_chest/ugly_monster.lua b/data-otservbr-global/monster/quests/mysterious_ornate_chest/ugly_monster.lua index 089e7586429..b4ee8a48203 100644 --- a/data-otservbr-global/monster/quests/mysterious_ornate_chest/ugly_monster.lua +++ b/data-otservbr-global/monster/quests/mysterious_ornate_chest/ugly_monster.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.events = { "UglyMonsterDeath", - "UglyMonsterDrop" + "UglyMonsterDrop", } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -72,20 +72,20 @@ monster.loot = { { name = "cobra sword", chance = 300 }, { name = "cobra wand", chance = 300 }, { name = "cobra rod", chance = 300 }, - { name = "cobra club", chance = 300 } + { name = "cobra club", chance = 300 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 }, { name = "outfit", interval = 2000, chance = 10, range = 5, shootEffect = CONST_ANI_EARTH, target = false, duration = 10000, outfitMonster = "Ugly Monster" }, - { name = "drunk", interval = 2000, chance = 10, range = 5, shootEffect = CONST_ANI_EARTH, target = false, duration = 5000 } + { name = "drunk", interval = 2000, chance = 10, range = 5, shootEffect = CONST_ANI_EARTH, target = false, duration = 5000 }, } monster.defenses = { defense = 48, armor = 0, -- mitigation = ???, - { name = "invisible", interval = 2000, chance = 8, effect = CONST_ME_HITAREA } + { name = "invisible", interval = 2000, chance = 8, effect = CONST_ME_HITAREA }, } monster.elements = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/pits_of_inferno/countess_sorrow.lua b/data-otservbr-global/monster/quests/pits_of_inferno/countess_sorrow.lua index bab7c116720..523eb7d1df4 100644 --- a/data-otservbr-global/monster/quests/pits_of_inferno/countess_sorrow.lua +++ b/data-otservbr-global/monster/quests/pits_of_inferno/countess_sorrow.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -66,8 +66,8 @@ monster.summon = { maxSummons = 3, summons = { { name = "Phantasm", chance = 7, interval = 2000, count = 3 }, - { name = "Phantasm Summon", chance = 7, interval = 2000, count = 3 } - } + { name = "Phantasm Summon", chance = 7, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -91,7 +91,7 @@ monster.loot = { { id = 3557, chance = 8820 }, -- plate legs { id = 3084, chance = 23530 }, -- protection amulet { id = 3049, chance = 5880 }, -- stealth ring - { id = 3123, chance = 47060 } -- worn leather boots + { id = 3123, chance = 47060 }, -- worn leather boots } monster.attacks = { @@ -99,7 +99,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -420, maxDamage = -980, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = true }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_MANADRAIN, minDamage = -45, maxDamage = -90, radius = 3, effect = CONST_ME_YELLOW_RINGS, target = false }, { name = "phantasm drown", interval = 2000, chance = 20, target = false }, - { name = "drunk", interval = 2000, chance = 15, range = 7, radius = 6, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 } + { name = "drunk", interval = 2000, chance = 15, range = 7, radius = 6, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 26, type = COMBAT_HEALING, minDamage = 415, maxDamage = 625, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_POFF }, - { name = "speed", interval = 2000, chance = 11, speedChange = 736, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 2000, chance = 11, speedChange = 736, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/pits_of_inferno/demon_goblin.lua b/data-otservbr-global/monster/quests/pits_of_inferno/demon_goblin.lua index 7f7c4a993dd..cc675497434 100644 --- a/data-otservbr-global/monster/quests/pits_of_inferno/demon_goblin.lua +++ b/data-otservbr-global/monster/quests/pits_of_inferno/demon_goblin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 50 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -71,17 +71,17 @@ monster.loot = { { name = "leather armor", chance = 2510 }, { name = "small axe", chance = 9700 }, { id = 3578, chance = 12750 }, -- fish - { name = "goblin ear", chance = 910 } + { name = "goblin ear", chance = 910 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -25, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -25, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -94,14 +94,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 1 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/pits_of_inferno/dracola.lua b/data-otservbr-global/monster/quests/pits_of_inferno/dracola.lua index eefd96e9b4a..44a5b38720d 100644 --- a/data-otservbr-global/monster/quests/pits_of_inferno/dracola.lua +++ b/data-otservbr-global/monster/quests/pits_of_inferno/dracola.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -85,7 +85,7 @@ monster.loot = { { id = 3031, chance = 29000, maxCount = 100 }, -- gold coin { id = 3035, chance = 20000, maxCount = 8 }, -- platinum coin { id = 6499, chance = 6000, maxCount = 4 }, -- demonic essence - { id = 6546, chance = 100000 } -- dracola's eye + { id = 6546, chance = 100000 }, -- dracola's eye } monster.attacks = { @@ -97,14 +97,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -870, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 3000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -750, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 1000, chance = 23, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -175, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -200, range = 7, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -200, range = 7, target = false }, } monster.defenses = { defense = 39, armor = 40, -- mitigation = ???, - { name = "combat", interval = 4000, chance = 10, type = COMBAT_HEALING, minDamage = 500, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 10, type = COMBAT_HEALING, minDamage = 500, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/pits_of_inferno/flamethrower.lua b/data-otservbr-global/monster/quests/pits_of_inferno/flamethrower.lua index 27b14cef2b3..a9132ea304c 100644 --- a/data-otservbr-global/monster/quests/pits_of_inferno/flamethrower.lua +++ b/data-otservbr-global/monster/quests/pits_of_inferno/flamethrower.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a flamethrower" monster.experience = 18 monster.outfit = { - lookTypeEx = 2190 + lookTypeEx = 2190, } monster.health = 100 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -53,11 +53,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 2000, chance = 100, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_FIRE, target = false } + { name = "combat", interval = 2000, chance = 100, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, } monster.defenses = { @@ -83,7 +82,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/pits_of_inferno/massacre.lua b/data-otservbr-global/monster/quests/pits_of_inferno/massacre.lua index 771d8da03bd..b473a5bd192 100644 --- a/data-otservbr-global/monster/quests/pits_of_inferno/massacre.lua +++ b/data-otservbr-global/monster/quests/pits_of_inferno/massacre.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -86,12 +86,12 @@ monster.loot = { { id = 3340, chance = 1000 }, -- heavy mace { id = 7403, chance = 900 }, -- berserker { id = 3360, chance = 3500 }, -- golden armor - { id = 6104, chance = 1200 } -- jewel case + { id = 6104, chance = 1200 }, -- jewel case } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 160, attack = 200 }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1100, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1100, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = false }, } monster.defenses = { @@ -99,7 +99,7 @@ monster.defenses = { armor = 45, -- mitigation = ???, { name = "speed", interval = 2000, chance = 8, speedChange = 790, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 600, maxDamage = 1090, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 600, maxDamage = 1090, effect = CONST_ME_HITBYFIRE, target = false }, } monster.elements = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/pits_of_inferno/mr._punish.lua b/data-otservbr-global/monster/quests/pits_of_inferno/mr._punish.lua index 01f19a2f5dd..987cca36bf6 100644 --- a/data-otservbr-global/monster/quests/pits_of_inferno/mr._punish.lua +++ b/data-otservbr-global/monster/quests/pits_of_inferno/mr._punish.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -71,16 +71,16 @@ monster.voices = { } monster.loot = { - { id = 6537, chance = 100000 } -- mr. punish's handcuffs + { id = 6537, chance = 100000 }, -- mr. punish's handcuffs } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = -660, maxDamage = -1280 } + { name = "melee", interval = 2000, chance = 100, minDamage = -660, maxDamage = -1280 }, } monster.defenses = { defense = 72, - armor = 64 + armor = 64, -- mitigation = ???, } @@ -101,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/pits_of_inferno/the_handmaiden.lua b/data-otservbr-global/monster/quests/pits_of_inferno/the_handmaiden.lua index 83b3c5d1141..3bd8b98b90a 100644 --- a/data-otservbr-global/monster/quests/pits_of_inferno/the_handmaiden.lua +++ b/data-otservbr-global/monster/quests/pits_of_inferno/the_handmaiden.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -68,13 +68,13 @@ monster.voices = { } monster.loot = { - { id = 6539, chance = 35000 } -- handmaiden's protector + { id = 6539, chance = 35000 }, -- handmaiden's protector } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -800 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -150, maxDamage = -800, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "drunk", interval = 1000, chance = 12, range = 1, target = true } + { name = "drunk", interval = 1000, chance = 12, range = 1, target = true }, } monster.defenses = { @@ -84,7 +84,7 @@ monster.defenses = { { name = "speed", interval = 3000, chance = 12, speedChange = 380, effect = CONST_ME_MAGIC_RED, target = false, duration = 8000 }, { name = "invisible", interval = 4000, chance = 50, effect = CONST_ME_MAGIC_RED }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 100, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 35, speedChange = 370, effect = CONST_ME_MAGIC_RED, target = false, duration = 30000 } + { name = "speed", interval = 1000, chance = 35, speedChange = 370, effect = CONST_ME_MAGIC_RED, target = false, duration = 30000 }, } monster.elements = { @@ -104,7 +104,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/pits_of_inferno/the_imperor.lua b/data-otservbr-global/monster/quests/pits_of_inferno/the_imperor.lua index 6e9babe5a84..779af1a670d 100644 --- a/data-otservbr-global/monster/quests/pits_of_inferno/the_imperor.lua +++ b/data-otservbr-global/monster/quests/pits_of_inferno/the_imperor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -85,14 +85,14 @@ monster.loot = { { id = 3415, chance = 15400 }, -- guardian shield { id = 826, chance = 15380 }, -- magma coat { id = 3033, chance = 30770, maxCount = 4 }, -- small amethyst - { id = 3030, chance = 7690, maxCount = 4 } -- small ruby + { id = 3030, chance = 7690, maxCount = 4 }, -- small ruby } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 100, condition = { type = CONDITION_POISON, totalDamage = 280, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -350, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2500, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -460, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, - { name = "diabolic imp skill reducer", interval = 2000, chance = 10, range = 7, target = false } + { name = "diabolic imp skill reducer", interval = 2000, chance = 10, range = 7, target = false }, } monster.defenses = { @@ -102,7 +102,7 @@ monster.defenses = { { name = "combat", interval = 2000, chance = 35, type = COMBAT_HEALING, minDamage = 275, maxDamage = 840, effect = CONST_ME_MAGIC_RED, target = false }, { name = "the imperor summon", interval = 2000, chance = 21, target = false }, { name = "speed", interval = 2000, chance = 12, speedChange = 1496, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, - { name = "invisible", interval = 2000, chance = 11, effect = CONST_ME_TELEPORT } + { name = "invisible", interval = 2000, chance = 11, effect = CONST_ME_TELEPORT }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/pits_of_inferno/the_plasmother.lua b/data-otservbr-global/monster/quests/pits_of_inferno/the_plasmother.lua index f06becfb031..b530d1e96c1 100644 --- a/data-otservbr-global/monster/quests/pits_of_inferno/the_plasmother.lua +++ b/data-otservbr-global/monster/quests/pits_of_inferno/the_plasmother.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5500, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Defiler", chance = 20, interval = 4000, count = 2 } - } + { name = "Defiler", chance = 20, interval = 4000, count = 2 }, + }, } monster.voices = { @@ -84,21 +84,21 @@ monster.loot = { { id = 3027, chance = 5000, maxCount = 3 }, -- black pearl { id = 3029, chance = 5000, maxCount = 3 }, -- small sapphire { id = 5944, chance = 35000 }, -- soul orb - { id = 6535, chance = 100000 } -- plasmother's remains + { id = 6535, chance = 100000 }, -- plasmother's remains } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 30, attack = 50 }, { name = "speed", interval = 1000, chance = 8, speedChange = -800, radius = 6, effect = CONST_ME_POISONAREA, target = false, duration = 10000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -350, radius = 4, effect = CONST_ME_POISONAREA, target = false }, - { name = "combat", interval = 3000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -530, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = true } + { name = "combat", interval = 3000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -530, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = true }, } monster.defenses = { defense = 30, armor = 30, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 75, type = COMBAT_HEALING, minDamage = 505, maxDamage = 605, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 75, type = COMBAT_HEALING, minDamage = 505, maxDamage = 605, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/primal_ordeal_quest/lava_creature.lua b/data-otservbr-global/monster/quests/primal_ordeal_quest/lava_creature.lua index 806d026c512..0bbd2efcc09 100644 --- a/data-otservbr-global/monster/quests/primal_ordeal_quest/lava_creature.lua +++ b/data-otservbr-global/monster/quests/primal_ordeal_quest/lava_creature.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 9000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -75,7 +75,7 @@ monster.defenses = { armor = 0, mitigation = 2.0, { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -95,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/primal_ordeal_quest/magma_bubble.lua b/data-otservbr-global/monster/quests/primal_ordeal_quest/magma_bubble.lua index 7dfa720ef63..f5b0d4468d3 100644 --- a/data-otservbr-global/monster/quests/primal_ordeal_quest/magma_bubble.lua +++ b/data-otservbr-global/monster/quests/primal_ordeal_quest/magma_bubble.lua @@ -10,11 +10,11 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.events = { - "MagmaBubbleDeath" + "MagmaBubbleDeath", } monster.bosstiary = { @@ -32,7 +32,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -110,7 +110,7 @@ monster.defenses = { armor = 0, mitigation = 2.0, { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -130,11 +130,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -142,13 +141,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/primal_ordeal_quest/magma_crystal.lua b/data-otservbr-global/monster/quests/primal_ordeal_quest/magma_crystal.lua index 9c097e6bcde..f8e88d3baf5 100644 --- a/data-otservbr-global/monster/quests/primal_ordeal_quest/magma_crystal.lua +++ b/data-otservbr-global/monster/quests/primal_ordeal_quest/magma_crystal.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a magma crystal" monster.experience = 0 monster.outfit = { - lookTypeEx = 21572 + lookTypeEx = 21572, } monster.health = 40000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -53,11 +53,9 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 0, @@ -83,7 +81,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/primal_ordeal_quest/plunder_patriarch.lua b/data-otservbr-global/monster/quests/primal_ordeal_quest/plunder_patriarch.lua index bc45550b74d..25d7c224f09 100644 --- a/data-otservbr-global/monster/quests/primal_ordeal_quest/plunder_patriarch.lua +++ b/data-otservbr-global/monster/quests/primal_ordeal_quest/plunder_patriarch.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -96,7 +96,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 200, chance = 20, minDamage = 0, maxDamage = -950 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -600, maxDamage = -1000, target = true }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -700, length = 5, spread = 2, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -700, length = 5, spread = 2, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { @@ -104,7 +104,7 @@ monster.defenses = { armor = 0, -- mitigation = ???, { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -124,11 +124,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -136,13 +135,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/primal_ordeal_quest/the_end_of_days.lua b/data-otservbr-global/monster/quests/primal_ordeal_quest/the_end_of_days.lua index e2eee8c6ab1..c81c27b95a9 100644 --- a/data-otservbr-global/monster/quests/primal_ordeal_quest/the_end_of_days.lua +++ b/data-otservbr-global/monster/quests/primal_ordeal_quest/the_end_of_days.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 90000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2500, - chance = 40 + chance = 40, } monster.strategiesTarget = { @@ -75,7 +75,7 @@ monster.defenses = { armor = 0, mitigation = 2.0, { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -95,11 +95,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -107,13 +106,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/primal_ordeal_quest/the_primal_menace.lua b/data-otservbr-global/monster/quests/primal_ordeal_quest/the_primal_menace.lua index 197da5601e3..c6a7eb46164 100644 --- a/data-otservbr-global/monster/quests/primal_ordeal_quest/the_primal_menace.lua +++ b/data-otservbr-global/monster/quests/primal_ordeal_quest/the_primal_menace.lua @@ -37,7 +37,7 @@ local thePrimalMenaceConfig = { "Beast Sabretooth", "Stalking Stalk", "Sulphider", - } + }, }, PodConfig = { @@ -61,11 +61,11 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.events = { - "ThePrimalMenaceDeath" + "ThePrimalMenaceDeath", } monster.health = 400000 @@ -77,7 +77,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.flags = { @@ -102,7 +102,7 @@ monster.flags = { monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -139,7 +139,7 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 50 }, { type = COMBAT_HOLYDAMAGE, percent = 40 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { @@ -147,7 +147,7 @@ monster.immunities = { { type = "outfit", condition = false }, { type = "invisible", condition = true }, { type = "drunk", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } local function initialize(monster) @@ -176,7 +176,9 @@ end local function getHazardPoints(monster) local hazard = Hazard.getByName("hazard.gnomprona-gardens") - if not hazard then return 0 end + if not hazard then + return 0 + end local _, hazardPoints = hazard:getHazardPlayerAndPoints(monster:getDamageMap()) return hazardPoints @@ -288,7 +290,7 @@ local function spawnMonster(monsterId, spawnPosition) end local primalBeastEntry = { MonsterId = primalMonster:getId(), - Created = os.time() + Created = os.time(), } local monsterMaxHealth = primalMonster:getMaxHealth() primalMonster:setHealth(monsterMaxHealth * thePrimalMenaceConfig.MonsterConfig.HpRateOnSpawn) diff --git a/data-otservbr-global/monster/quests/primal_ordeal_quest/unchained_fire.lua b/data-otservbr-global/monster/quests/primal_ordeal_quest/unchained_fire.lua index f5319b42299..d8bac03a429 100644 --- a/data-otservbr-global/monster/quests/primal_ordeal_quest/unchained_fire.lua +++ b/data-otservbr-global/monster/quests/primal_ordeal_quest/unchained_fire.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/roshamuul/bad_dream.lua b/data-otservbr-global/monster/quests/roshamuul/bad_dream.lua index 9bf0f68c972..ea870bb0ad4 100644 --- a/data-otservbr-global/monster/quests/roshamuul/bad_dream.lua +++ b/data-otservbr-global/monster/quests/roshamuul/bad_dream.lua @@ -4,10 +4,9 @@ local monster = {} monster.description = "a bad dream" monster.experience = 0 monster.outfit = { - lookTypeEx = 20110 + lookTypeEx = 20110, } - monster.health = 7200 monster.maxHealth = 7200 monster.race = "blood" @@ -15,10 +14,9 @@ monster.corpse = 20163 monster.speed = 0 monster.manaCost = 0 - monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -58,8 +56,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, @@ -84,7 +81,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/roshamuul/flame_of_omrafir.lua b/data-otservbr-global/monster/quests/roshamuul/flame_of_omrafir.lua index ccab4837f48..3204cc40655 100644 --- a/data-otservbr-global/monster/quests/roshamuul/flame_of_omrafir.lua +++ b/data-otservbr-global/monster/quests/roshamuul/flame_of_omrafir.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,19 +59,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 1000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -65, maxDamage = -205, radius = 5, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -110, maxDamage = -150, range = 7, radius = 5, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "firefield", interval = 1000, chance = 15, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true } + { name = "firefield", interval = 1000, chance = 15, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { defense = 20, - armor = 20 + armor = 20, -- mitigation = ???, } @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/roshamuul/gaz'haragoth.lua b/data-otservbr-global/monster/quests/roshamuul/gaz'haragoth.lua index 2e2f0b32fbf..0e6d5695d33 100644 --- a/data-otservbr-global/monster/quests/roshamuul/gaz'haragoth.lua +++ b/data-otservbr-global/monster/quests/roshamuul/gaz'haragoth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 350000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 10000, - chance = 20 + chance = 20, } monster.bosstiary = { bossRaceId = 1003, - bossRace = RARITY_NEMESIS + bossRace = RARITY_NEMESIS, } monster.strategiesTarget = { @@ -54,20 +54,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "GazHaragothHeal" + "GazHaragothHeal", } monster.light = { level = 0, - color = 0 + color = 0, } -monster.summon = { -} +monster.summon = {} monster.voices = { interval = 5000, @@ -75,7 +74,7 @@ monster.voices = { { text = "NO ONE WILL ESCAPE ME!", yell = true }, { text = "I'LL KEEP THE ORDER UP!", yell = true }, { text = "I've beaten tougher demons then you even know!", yell = true }, - { text = "You puny humans will be my snacks!", yell = true } + { text = "You puny humans will be my snacks!", yell = true }, } monster.loot = { @@ -135,7 +134,7 @@ monster.loot = { { id = 10344, chance = 6000 }, -- twin sun charm { id = 10343, chance = 6000 }, -- spiritual charm { id = 10342, chance = 6000 }, -- unity charm - { id = 10341, chance = 6000 } -- phoenix charm + { id = 10341, chance = 6000 }, -- phoenix charm } monster.attacks = { @@ -150,14 +149,14 @@ monster.attacks = { { name = "gaz'haragoth iceball", interval = 2000, chance = 24, minDamage = -1000, maxDamage = -1000, target = false }, { name = "gaz'haragoth death", interval = 4000, chance = 6, target = false }, { name = "gaz'haragoth paralyze", interval = 2000, chance = 12, target = false }, - { name = "gaz'haragoth summon", interval = 1000, chance = 100, target = false } + { name = "gaz'haragoth summon", interval = 1000, chance = 100, target = false }, } monster.defenses = { defense = 65, armor = 55, { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 2500, maxDamage = 3500, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 4000, chance = 80, speedChange = 700, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 4000, chance = 80, speedChange = 700, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -170,18 +169,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 50 }, { type = COMBAT_HOLYDAMAGE, percent = 50 }, - { type = COMBAT_DEATHDAMAGE, percent = 50 } + { type = COMBAT_DEATHDAMAGE, percent = 50 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -189,13 +187,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/roshamuul/horadron.lua b/data-otservbr-global/monster/quests/roshamuul/horadron.lua index a94e2c5ee30..17f6a3652bb 100644 --- a/data-otservbr-global/monster/quests/roshamuul/horadron.lua +++ b/data-otservbr-global/monster/quests/roshamuul/horadron.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 110, lookFeet = 77, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Defiler", chance = 12, interval = 2000, count = 2 } - } + { name = "Defiler", chance = 12, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -103,7 +103,7 @@ monster.loot = { { id = 3032, chance = 10260, maxCount = 25 }, -- small emerald { id = 3029, chance = 28210, maxCount = 25 }, -- small sapphire { id = 9057, chance = 15380, maxCount = 25 }, -- small topaz - { id = 3030, chance = 20510, maxCount = 25 } -- small ruby + { id = 3030, chance = 20510, maxCount = 25 }, -- small ruby } monster.attacks = { @@ -113,14 +113,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -235, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, effect = CONST_ME_POISONAREA, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 25, minDamage = -300, maxDamage = -450, radius = 3, effect = CONST_ME_HITBYPOISON, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 25, minDamage = -300, maxDamage = -450, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { defense = 65, armor = 72, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_HEALING, minDamage = 400, maxDamage = 700, target = false } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_HEALING, minDamage = 400, maxDamage = 700, target = false }, } monster.elements = { @@ -140,7 +140,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/roshamuul/minion_of_gaz'haragoth.lua b/data-otservbr-global/monster/quests/roshamuul/minion_of_gaz'haragoth.lua index a89da32b21c..62af9bd7122 100644 --- a/data-otservbr-global/monster/quests/roshamuul/minion_of_gaz'haragoth.lua +++ b/data-otservbr-global/monster/quests/roshamuul/minion_of_gaz'haragoth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,16 +49,16 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "MinionGazDeath" + "MinionGazDeath", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -66,18 +66,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 1800, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -685, length = 7, spread = 3, effect = CONST_ME_STONES, target = false }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -590, radius = 6, effect = CONST_ME_BIGPLANTS, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -590, radius = 6, effect = CONST_ME_BIGPLANTS, target = false }, } monster.defenses = { defense = 55, - armor = 55 + armor = 55, } monster.elements = { @@ -90,14 +89,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 30 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/roshamuul/nightmare_of_gaz'haragoth.lua b/data-otservbr-global/monster/quests/roshamuul/nightmare_of_gaz'haragoth.lua index 8443a8fd7d9..104294a69cb 100644 --- a/data-otservbr-global/monster/quests/roshamuul/nightmare_of_gaz'haragoth.lua +++ b/data-otservbr-global/monster/quests/roshamuul/nightmare_of_gaz'haragoth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,18 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 1800, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -685, length = 7, spread = 3, effect = CONST_ME_STONES, target = false }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -590, radius = 6, effect = CONST_ME_BIGPLANTS, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -590, radius = 6, effect = CONST_ME_BIGPLANTS, target = false }, } monster.defenses = { defense = 55, - armor = 55 + armor = 55, } monster.elements = { @@ -86,14 +85,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/roshamuul/omrafir.lua b/data-otservbr-global/monster/quests/roshamuul/omrafir.lua index 74a50d8a03c..e3f09b27dd0 100644 --- a/data-otservbr-global/monster/quests/roshamuul/omrafir.lua +++ b/data-otservbr-global/monster/quests/roshamuul/omrafir.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 79, lookFeet = 79, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -105,7 +105,7 @@ monster.loot = { { id = 3554, chance = 6250 }, -- steel boots { id = 7643, chance = 31250, maxCount = 8 }, -- ultimate health potion { id = 20264, chance = 81250, maxCount = 3 }, -- unrealized dream - { id = 16120, chance = 18750, maxCount = 5 } -- violet crystal shard + { id = 16120, chance = 18750, maxCount = 5 }, -- violet crystal shard } monster.attacks = { @@ -116,7 +116,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -400, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 19, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -300, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_HITBYFIRE, target = true }, - { name = "firefield", interval = 2000, chance = 12, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true } + { name = "firefield", interval = 2000, chance = 12, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, } monster.defenses = { @@ -125,7 +125,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 22, type = COMBAT_HEALING, minDamage = 440, maxDamage = 800, target = false }, { name = "omrafir summon", interval = 2000, chance = 50, target = false }, - { name = "omrafir healing 2", interval = 2000, chance = 20, target = false } + { name = "omrafir healing 2", interval = 2000, chance = 20, target = false }, } monster.elements = { @@ -145,11 +145,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -157,13 +156,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/roshamuul/prince_drazzak.lua b/data-otservbr-global/monster/quests/roshamuul/prince_drazzak.lua index 80e0f4d294c..f969d02e6aa 100644 --- a/data-otservbr-global/monster/quests/roshamuul/prince_drazzak.lua +++ b/data-otservbr-global/monster/quests/roshamuul/prince_drazzak.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 55, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 330000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -91,19 +91,19 @@ monster.loot = { { id = 7418, chance = 1000 }, -- nightmare blade { id = 820, chance = 1000 }, -- lightning boots { id = 281, chance = 5000 }, -- giant shimmering pearl (green) - { id = 282, chance = 5000 } -- giant shimmering pearl (brown) + { id = 282, chance = 5000 }, -- giant shimmering pearl (brown) } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 190, attack = 100 }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_DEATHDAMAGE, minDamage = -1000, maxDamage = -3000, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 18, type = COMBAT_DEATHDAMAGE, minDamage = -1000, maxDamage = -3000, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 65, armor = 55, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 1500, maxDamage = 3000, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 1500, maxDamage = 3000, effect = CONST_ME_MAGIC_RED, target = false }, } monster.elements = { @@ -123,11 +123,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -135,13 +134,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/roshamuul/terofar.lua b/data-otservbr-global/monster/quests/roshamuul/terofar.lua index cf22f82b627..0f26e7697f2 100644 --- a/data-otservbr-global/monster/quests/roshamuul/terofar.lua +++ b/data-otservbr-global/monster/quests/roshamuul/terofar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 77, lookFeet = 79, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 40000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -99,13 +99,13 @@ monster.loot = { { id = 3392, chance = 910 }, -- royal helmet { id = 813, chance = 2910 }, -- terra boots { id = 3079, chance = 1910 }, -- boots of haste - { id = 5741, chance = 1910 } -- skull helmet + { id = 5741, chance = 1910 }, -- skull helmet } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 180, attack = 100 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -750, range = 7, radius = 1, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true } + { name = "combat", interval = 2000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -750, range = 7, radius = 1, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.defenses = { armor = 55, -- mitigation = ???, { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 300, maxDamage = 500, radius = 8, target = false }, - { name = "speed", interval = 2000, chance = 18, speedChange = 784, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 7000 } + { name = "speed", interval = 2000, chance = 18, speedChange = 784, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 7000 }, } monster.elements = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/aspect_of_power.lua b/data-otservbr-global/monster/quests/soul_war/aspect_of_power.lua index 8026f782784..dfc6049e3f1 100644 --- a/data-otservbr-global/monster/quests/soul_war/aspect_of_power.lua +++ b/data-otservbr-global/monster/quests/soul_war/aspect_of_power.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 25000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -67,7 +67,7 @@ monster.attacks = { { name = "outfit", interval = 1000, chance = 5, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "goshnar's hatred" }, { name = "outfit", interval = 1000, chance = 5, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "goshnar's greed" }, { name = "outfit", interval = 1000, chance = 5, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "goshnar's malice" }, - { name = "outfit", interval = 1000, chance = 5, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "goshnar's spite" } + { name = "outfit", interval = 1000, chance = 5, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "goshnar's spite" }, } monster.defenses = { @@ -93,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/dreadful_harvester.lua b/data-otservbr-global/monster/quests/soul_war/dreadful_harvester.lua index 18b447b7d6d..6a6108cf535 100644 --- a/data-otservbr-global/monster/quests/soul_war/dreadful_harvester.lua +++ b/data-otservbr-global/monster/quests/soul_war/dreadful_harvester.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 25500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -69,7 +69,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -165, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 3, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, target = false }, } monster.defenses = { @@ -77,7 +77,7 @@ monster.defenses = { armor = 35, -- mitigation = ???, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 130, maxDamage = 205, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -97,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/goshnars_cruelty.lua b/data-otservbr-global/monster/quests/soul_war/goshnars_cruelty.lua index 8d9659db586..b890e0ecc9a 100644 --- a/data-otservbr-global/monster/quests/soul_war/goshnars_cruelty.lua +++ b/data-otservbr-global/monster/quests/soul_war/goshnars_cruelty.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1902, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_40.SoulWar.GoshnarCrueltyTimer + storageCooldown = Storage.Quest.U12_40.SoulWar.GoshnarCrueltyTimer, } monster.strategiesTarget = { @@ -56,7 +56,7 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { @@ -68,8 +68,8 @@ monster.summon = { maxSummons = 4, summons = { { name = "dreadful harvester", chance = 40, interval = 1000, count = 2 }, - { name = "mean maw", chance = 30, interval = 1000, count = 2 } - } + { name = "mean maw", chance = 30, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -100,7 +100,7 @@ monster.loot = { { name = "figurine of cruelty", chance = 400 }, { name = "spectral saddle", chance = 400 }, { name = "spectral horse tack", chance = 400 }, - { name = "bag you desire", chance = 100 } + { name = "bag you desire", chance = 100 }, } monster.attacks = { @@ -108,7 +108,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -1400, maxDamage = -1800, length = 8, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "singlecloudchain", interval = 6000, chance = 40, minDamage = -1700, maxDamage = -2500, range = 6, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -1000, maxDamage = -2500, range = 7, radius = 4, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_DRAWBLOOD, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -1500, maxDamage = -3000, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -1500, maxDamage = -3000, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { @@ -136,11 +136,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -148,13 +147,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/goshnars_greed.lua b/data-otservbr-global/monster/quests/soul_war/goshnars_greed.lua index 02450c1b54e..b7ecd2eb170 100644 --- a/data-otservbr-global/monster/quests/soul_war/goshnars_greed.lua +++ b/data-otservbr-global/monster/quests/soul_war/goshnars_greed.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1905, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_40.SoulWar.GoshnarGreedTimer + storageCooldown = Storage.Quest.U12_40.SoulWar.GoshnarGreedTimer, } monster.strategiesTarget = { @@ -56,7 +56,7 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { @@ -68,8 +68,8 @@ monster.summon = { maxSummons = 4, summons = { { name = "dreadful harvester", chance = 10, interval = 1000, count = 2 }, - { name = "hateful soul", chance = 10, interval = 1000, count = 2 } - } + { name = "hateful soul", chance = 10, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -98,7 +98,7 @@ monster.loot = { { name = "greed's arm", chance = 25000, maxCount = 1 }, { name = "figurine of greed", chance = 400 }, { name = "the skull of a beast", chance = 400 }, - { name = "bag you desire", chance = 100 } + { name = "bag you desire", chance = 100 }, } monster.attacks = { @@ -133,11 +133,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -145,13 +144,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/goshnars_hatred.lua b/data-otservbr-global/monster/quests/soul_war/goshnars_hatred.lua index 61165d873f7..6853c59685b 100644 --- a/data-otservbr-global/monster/quests/soul_war/goshnars_hatred.lua +++ b/data-otservbr-global/monster/quests/soul_war/goshnars_hatred.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1904, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_40.SoulWar.GoshnarHatredTimer + storageCooldown = Storage.Quest.U12_40.SoulWar.GoshnarHatredTimer, } monster.strategiesTarget = { @@ -56,7 +56,7 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { @@ -68,8 +68,8 @@ monster.summon = { maxSummons = 4, summons = { { name = "dreadful harvester", chance = 10, interval = 1000, count = 2 }, - { name = "hateful soul", chance = 10, interval = 1000, count = 2 } - } + { name = "hateful soul", chance = 10, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -100,14 +100,14 @@ monster.loot = { { name = "spectral horseshoe", chance = 400 }, { name = "spectral horse tack", chance = 400 }, { name = "bracelet of strengthening", chance = 400 }, - { name = "bag you desire", chance = 100 } + { name = "bag you desire", chance = 100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5000 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -1350, maxDamage = -1700, range = 7, radius = 5, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_GROUNDSHAKER, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -1400, maxDamage = -2200, length = 8, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "singlecloudchain", interval = 6000, chance = 40, minDamage = -1700, maxDamage = -2500, range = 6, effect = CONST_ME_ENERGYHIT, target = true } + { name = "singlecloudchain", interval = 6000, chance = 40, minDamage = -1700, maxDamage = -2500, range = 6, effect = CONST_ME_ENERGYHIT, target = true }, } monster.defenses = { @@ -135,11 +135,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -147,13 +146,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/goshnars_malice.lua b/data-otservbr-global/monster/quests/soul_war/goshnars_malice.lua index 3e1cf6259e8..9bd8d57973e 100644 --- a/data-otservbr-global/monster/quests/soul_war/goshnars_malice.lua +++ b/data-otservbr-global/monster/quests/soul_war/goshnars_malice.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1901, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_40.SoulWar.GoshnarMaliceTimer + storageCooldown = Storage.Quest.U12_40.SoulWar.GoshnarMaliceTimer, } monster.strategiesTarget = { @@ -56,7 +56,7 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { @@ -68,8 +68,8 @@ monster.summon = { maxSummons = 4, summons = { { name = "dreadful harvester", chance = 40, interval = 1000, count = 2 }, - { name = "malicious soul", chance = 30, interval = 1000, count = 2 } - } + { name = "malicious soul", chance = 30, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -107,7 +107,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5000 }, { name = "combat", interval = 2000, chance = 22, type = COMBAT_ICEDAMAGE, minDamage = -2450, maxDamage = -4400, length = 10, spread = 4, effect = CONST_ME_ICEAREA, target = false }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_ICEDAMAGE, minDamage = -2350, maxDamage = -3000, range = 7, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = true } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_ICEDAMAGE, minDamage = -2350, maxDamage = -3000, range = 7, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = true }, } monster.defenses = { @@ -135,11 +135,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -147,13 +146,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/goshnars_megalomania.lua b/data-otservbr-global/monster/quests/soul_war/goshnars_megalomania.lua index f72031cfcb2..2b43bc348d8 100644 --- a/data-otservbr-global/monster/quests/soul_war/goshnars_megalomania.lua +++ b/data-otservbr-global/monster/quests/soul_war/goshnars_megalomania.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 500000 @@ -21,13 +21,13 @@ monster.speed = 165 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1969, bossRace = RARITY_NEMESIS, - storageCooldown = Storage.Quest.U12_40.SoulWar.GoshnarMegalomaniaTimer + storageCooldown = Storage.Quest.U12_40.SoulWar.GoshnarMegalomaniaTimer, } monster.strategiesTarget = { @@ -55,7 +55,7 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { @@ -67,8 +67,8 @@ monster.summon = { maxSummons = 4, summons = { { name = "dreadful harvester", chance = 40, interval = 1000, count = 2 }, - { name = "aspect of power", chance = 50, interval = 1000, count = 2 } - } + { name = "aspect of power", chance = 50, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -102,7 +102,7 @@ monster.loot = { { name = "figurine of megalomania", chance = 400 }, { name = "megalomania's skull", chance = 400 }, { name = "megalomania's essence", chance = 400 }, - { name = "bag you desire", chance = 100 } + { name = "bag you desire", chance = 100 }, } monster.attacks = { @@ -138,11 +138,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -150,13 +149,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/goshnars_spite.lua b/data-otservbr-global/monster/quests/soul_war/goshnars_spite.lua index 3abedcf87c1..ba8ef48521a 100644 --- a/data-otservbr-global/monster/quests/soul_war/goshnars_spite.lua +++ b/data-otservbr-global/monster/quests/soul_war/goshnars_spite.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1903, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_40.SoulWar.GoshnarSpiteTimer + storageCooldown = Storage.Quest.U12_40.SoulWar.GoshnarSpiteTimer, } monster.strategiesTarget = { @@ -56,7 +56,7 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { @@ -68,8 +68,8 @@ monster.summon = { maxSummons = 4, summons = { { name = "dreadful harvester", chance = 40, interval = 1000, count = 2 }, - { name = "spiteful spitter", chance = 30, interval = 1000, count = 2 } - } + { name = "spiteful spitter", chance = 30, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -98,7 +98,7 @@ monster.loot = { { name = "the skull of a beast", chance = 400 }, { name = "figurine of spite", chance = 400 }, { name = "spite's spirit", chance = 400 }, - { name = "bag you desire", chance = 100 } + { name = "bag you desire", chance = 100 }, } monster.attacks = { @@ -107,7 +107,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -1400, maxDamage = -2200, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, { name = "singlecloudchain", interval = 6000, chance = 40, minDamage = -1700, maxDamage = -1900, range = 6, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -1200, maxDamage = -3500, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -1400, maxDamage = -2200, length = 8, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -1400, maxDamage = -2200, length = 8, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { @@ -135,11 +135,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -147,13 +146,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/hateful_soul.lua b/data-otservbr-global/monster/quests/soul_war/hateful_soul.lua index b9cce24657e..08ea90eece7 100644 --- a/data-otservbr-global/monster/quests/soul_war/hateful_soul.lua +++ b/data-otservbr-global/monster/quests/soul_war/hateful_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 25000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -800 }, { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -950, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -850, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1550, radius = 3, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 40, - armor = 82 + armor = 82, -- mitigation = ???, } @@ -89,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/malicious_soul.lua b/data-otservbr-global/monster/quests/soul_war/malicious_soul.lua index 09f104bc494..c540bb4b0e3 100644 --- a/data-otservbr-global/monster/quests/soul_war/malicious_soul.lua +++ b/data-otservbr-global/monster/quests/soul_war/malicious_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 25000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 40, - armor = 79 + armor = 79, -- mitigation = ???, } @@ -89,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/mean_maw.lua b/data-otservbr-global/monster/quests/soul_war/mean_maw.lua index 08408438bd9..198d971e212 100644 --- a/data-otservbr-global/monster/quests/soul_war/mean_maw.lua +++ b/data-otservbr-global/monster/quests/soul_war/mean_maw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 24000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,7 +61,7 @@ monster.voices = { interval = 5000, chance = 10, { text = "Bling.", yell = false }, - { text = "Clank.", yell = false } + { text = "Clank.", yell = false }, } monster.attacks = { @@ -69,15 +69,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -550, maxDamage = -1100, length = 5, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -1000, radius = 7, effect = CONST_ME_BIGCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -550, maxDamage = -1000, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_ICEATTACK, target = true }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ICEDAMAGE, minDamage = -300, maxDamage = -700, range = 7, radius = 5, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = true } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ICEDAMAGE, minDamage = -300, maxDamage = -700, range = 7, radius = 5, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = true }, -- Fear -- Chain: const_me-> CONST_ME_ICEATTACK, combat_t->COMBAT_ICEDAMAGE - } monster.defenses = { defense = 80, - armor = 100 + armor = 100, -- mitigation = ???, } @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/mirror_image.lua b/data-otservbr-global/monster/quests/soul_war/mirror_image.lua index 32cecfcddad..8813ba2e93f 100644 --- a/data-otservbr-global/monster/quests/soul_war/mirror_image.lua +++ b/data-otservbr-global/monster/quests/soul_war/mirror_image.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 76, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 35000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -66,8 +66,7 @@ monster.voices = { { text = "What a lovely reflection.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -700 }, @@ -100,11 +99,11 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } monster.events = { - "MirrorImageTransform" + "MirrorImageTransform", } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/soul_war/spiteful_spitter.lua b/data-otservbr-global/monster/quests/soul_war/spiteful_spitter.lua index ed197e1006d..8b8cec55ccf 100644 --- a/data-otservbr-global/monster/quests/soul_war/spiteful_spitter.lua +++ b/data-otservbr-global/monster/quests/soul_war/spiteful_spitter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 28000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,7 +62,7 @@ monster.voices = { chance = 10, { text = "Power up!", yell = false }, { text = "Shocked to meet you.", yell = false }, - { text = "You should be more positive!", yell = false } + { text = "You should be more positive!", yell = false }, } monster.attacks = { @@ -70,12 +70,12 @@ monster.attacks = { { name = "combat", interval = 4000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -800, maxDamage = -1300, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 3000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -750, radius = 4, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -600, maxDamage = -1000, range = 7, shootEffect = CONST_ANI_SPECTRALBOLT, effect = CONST_ME_HOLYDAMAGE, target = true }, - { name = "combat", interval = 2000, chance = 24, type = COMBAT_HOLYDAMAGE, minDamage = -600, maxDamage = -1000, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_GROUNDSHAKER, target = true } + { name = "combat", interval = 2000, chance = 24, type = COMBAT_HOLYDAMAGE, minDamage = -600, maxDamage = -1000, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_GROUNDSHAKER, target = true }, } monster.defenses = { defense = 90, - armor = 107 + armor = 107, -- mitigation = ???, } @@ -96,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/achad.lua b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/achad.lua index cc511e218cd..e82756d614b 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/achad.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/achad.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 38, lookFeet = 59, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 185 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -64,11 +64,10 @@ monster.voices = { { text = "I have travelled far to fight here.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, } monster.defenses = { @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/axeitus_headbanger.lua b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/axeitus_headbanger.lua index ed7c228bd6a..e5d7ae5d2d7 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/axeitus_headbanger.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/axeitus_headbanger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 365 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,20 +62,19 @@ monster.voices = { chance = 10, { text = "Hicks!", yell = false }, { text = "Stand still! Both of you! hicks", yell = false }, - { text = "This victory will earn me a casket of beer.", yell = false } + { text = "This victory will earn me a casket of beer.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, - { name = "combat", interval = 1000, chance = 80, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 5, radius = 1, shootEffect = CONST_ANI_SMALLSTONE, target = true } + { name = "combat", interval = 1000, chance = 80, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 5, radius = 1, shootEffect = CONST_ANI_SMALLSTONE, target = true }, } monster.defenses = { defense = 0, - armor = 18 + armor = 18, } monster.elements = { @@ -88,14 +87,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/bloodpaw.lua b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/bloodpaw.lua index 9022de621c6..21bb214612a 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/bloodpaw.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/bloodpaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 100 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,11 +62,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, } monster.defenses = { @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/bovinus.lua b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/bovinus.lua index 1cd5f77134a..30450860496 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/bovinus.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/bovinus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 150 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,11 +62,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, } monster.defenses = { @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/colerian_the_barbarian.lua b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/colerian_the_barbarian.lua index e36d4730df7..934f1f800ea 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/colerian_the_barbarian.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/colerian_the_barbarian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 40, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 265 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -65,12 +65,11 @@ monster.voices = { { text = "Yeehaawh", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, - { name = "combat", interval = 1000, chance = 80, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 5, radius = 1, shootEffect = CONST_ANI_PIERCINGBOLT, target = true } + { name = "combat", interval = 1000, chance = 80, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 5, radius = 1, shootEffect = CONST_ANI_PIERCINGBOLT, target = true }, } monster.defenses = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/cursed_gladiator.lua b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/cursed_gladiator.lua index e46d7b6f9c1..1f57b391ac8 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/cursed_gladiator.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/cursed_gladiator.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 435 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -65,17 +65,16 @@ monster.voices = { { text = "Freee meeee!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, - { name = "combat", interval = 4000, chance = 50, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = 50, range = 5, radius = 1, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 4000, chance = 50, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = 50, range = 5, radius = 1, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { defense = 25, - armor = 25 + armor = 25, -- mitigation = ???, } @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/frostfur.lua b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/frostfur.lua index b9bddfefe2c..608e0aca756 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/frostfur.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/frostfur.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 65 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -63,11 +63,10 @@ monster.voices = { { text = "Grrr", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, } monster.defenses = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/orcus_the_cruel.lua b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/orcus_the_cruel.lua index a35be8d0ef8..6c0a6831c1b 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/orcus_the_cruel.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/orcus_the_cruel.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 480 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -64,17 +64,16 @@ monster.voices = { { text = "I'll kill you slow and painful.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -180 }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 5, radius = 1, shootEffect = CONST_ANI_THROWINGKNIFE, target = true } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 5, radius = 1, shootEffect = CONST_ANI_THROWINGKNIFE, target = true }, } monster.defenses = { defense = 40, - armor = 39 + armor = 39, -- mitigation = ???, } @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/rocky.lua b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/rocky.lua index f3ea7d600ef..3f45a593d00 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/rocky.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/rocky.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 390 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -66,18 +66,17 @@ monster.voices = { { text = "You'll be history soon enough.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, } monster.defenses = { defense = 30, armor = 30, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 15, maxDamage = 35, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 15, maxDamage = 35, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/the_hairy_one.lua b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/the_hairy_one.lua index d3ce1ead470..945eba8cf82 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/the_hairy_one.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/greenhorn/the_hairy_one.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 325 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -64,11 +64,10 @@ monster.voices = { { text = "Ungh! Ungh!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, } monster.defenses = { @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/avalanche.lua b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/avalanche.lua index 982a2b9e3e5..3c69b90b67f 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/avalanche.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/avalanche.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 550 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -65,19 +65,18 @@ monster.voices = { { text = "You're not cool.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -180 }, { name = "combat", interval = 1000, chance = 100, type = COMBAT_DROWNDAMAGE, minDamage = -10, maxDamage = -50, length = 5, spread = 6, effect = CONST_ME_ENERGYAREA, target = false }, { name = "speed", interval = 4000, chance = 100, speedChange = -400, radius = 3, effect = CONST_ME_POFF, target = false, duration = 10000 }, - { name = "combat", interval = 6000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 5, radius = 1, shootEffect = CONST_ANI_LARGEROCK, target = true } + { name = "combat", interval = 6000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 5, radius = 1, shootEffect = CONST_ANI_LARGEROCK, target = true }, } monster.defenses = { defense = 27, - armor = 26 + armor = 26, -- mitigation = ???, } @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/drasilla.lua b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/drasilla.lua index 6820c632c5d..3d3cfd9fd3a 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/drasilla.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/drasilla.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1260 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -66,20 +66,19 @@ monster.voices = { { text = "YOU CAN'T KEEP ME HERE FOREVER", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 }, { name = "combat", interval = 6000, chance = 60, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -180, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 3000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -115, range = 10, radius = 5, effect = CONST_ME_FIREAREA, target = true } + { name = "combat", interval = 3000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -115, range = 10, radius = 5, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { defense = 33, armor = 32, -- mitigation = ???, - { name = "combat", interval = 6000, chance = 65, type = COMBAT_HEALING, minDamage = 20, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 6000, chance = 65, type = COMBAT_HEALING, minDamage = 20, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/grimgor_guteater.lua b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/grimgor_guteater.lua index cce326aeac6..b414d60a677 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/grimgor_guteater.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/grimgor_guteater.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1155 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -63,17 +63,16 @@ monster.voices = { { text = "Don't run, You're burning off precious fat.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -230 }, - { name = "combat", interval = 4000, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = -55, maxDamage = -130, shootEffect = CONST_ANI_THROWINGSTAR, target = false } + { name = "combat", interval = 4000, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = -55, maxDamage = -130, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, } monster.defenses = { defense = 45, - armor = 45 + armor = 45, -- mitigation = ???, } @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/kreebosh_the_exile.lua b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/kreebosh_the_exile.lua index 75bbb82969b..29fa3b64684 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/kreebosh_the_exile.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/kreebosh_the_exile.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 705 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,29 +49,28 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 2, summons = { - { name = "Green Djinn", chance = 20, interval = 5000, count = 2 } - } + { name = "Green Djinn", chance = 20, interval = 5000, count = 2 }, + }, } monster.voices = { interval = 5000, chance = 10, - { text = "I bet you wish you weren't here.", yell = false } + { text = "I bet you wish you weren't here.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, @@ -80,12 +79,12 @@ monster.attacks = { { name = "combat", interval = 6000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -20, maxDamage = -100, range = 5, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, { name = "combat", interval = 5000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -40, maxDamage = -200, range = 5, radius = 1, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_FIREAREA, target = true }, { name = "drunk", interval = 1000, chance = 20, range = 5, radius = 1, target = true, duration = 30000 }, - { name = "outfit", interval = 2000, chance = 50, range = 5, radius = 1, effect = CONST_ME_MAGIC_GREEN, target = true, duration = 60000, outfitMonster = "Rat" } + { name = "outfit", interval = 2000, chance = 50, range = 5, radius = 1, effect = CONST_ME_MAGIC_GREEN, target = true, duration = 60000, outfitMonster = "Rat" }, } monster.defenses = { defense = 40, - armor = 30 + armor = 30, } monster.elements = { @@ -98,14 +97,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = -1 } + { type = COMBAT_DEATHDAMAGE, percent = -1 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/slim.lua b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/slim.lua index d1027befa96..aea0e6498d0 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/slim.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/slim.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1025 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -65,18 +65,17 @@ monster.voices = { { text = "Cccchhhhhhhhh!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "poisonfield", interval = 1000, chance = 50, shootEffect = CONST_ANI_POISON, target = false }, - { name = "combat", interval = 3049, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -10, maxDamage = -50, effect = CONST_ME_HITAREA, target = false } + { name = "combat", interval = 3049, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -10, maxDamage = -50, effect = CONST_ME_HITAREA, target = false }, } monster.defenses = { defense = 38, - armor = 36 + armor = 36, -- mitigation = ???, } @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/spirit_of_earth.lua b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/spirit_of_earth.lua index bc21e7b86f7..cbcd44c5ae4 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/spirit_of_earth.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/spirit_of_earth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -65,16 +65,15 @@ monster.voices = { { text = "When the dust settles there will only be one.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -180 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -180 }, } monster.defenses = { defense = 0, - armor = 0 + armor = 0, -- mitigation = ???, } @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/spirit_of_fire.lua b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/spirit_of_fire.lua index 177e6e3f714..bc2d0069b36 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/spirit_of_fire.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/spirit_of_fire.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2210 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -64,18 +64,17 @@ monster.voices = { { text = "I will turn you into ashes.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "firefield", interval = 1000, chance = 15, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 1000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -650, maxDamage = -315, range = 7, shootEffect = CONST_ANI_FIRE, target = false } + { name = "combat", interval = 1000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -650, maxDamage = -315, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, } monster.defenses = { defense = 0, - armor = 0 + armor = 0, -- mitigation = ???, } @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/spirit_of_water.lua b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/spirit_of_water.lua index 8da5d721941..efba68d259e 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/spirit_of_water.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/spirit_of_water.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1400 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -63,18 +63,17 @@ monster.voices = { { text = "Blubb", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "poisonfield", interval = 1000, chance = 50, shootEffect = CONST_ANI_POISON, target = false }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -1, maxDamage = -120, effect = CONST_ME_LOSEENERGY, target = false } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -1, maxDamage = -120, effect = CONST_ME_LOSEENERGY, target = false }, } monster.defenses = { defense = 0, - armor = 0 + armor = 0, -- mitigation = ???, } @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/the_dark_dancer.lua b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/the_dark_dancer.lua index 0765a884986..a7aae93790a 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/the_dark_dancer.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/the_dark_dancer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 805 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Ghoul", chance = 20, interval = 2000, count = 2 } - } + { name = "Ghoul", chance = 20, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -71,15 +71,14 @@ monster.voices = { { text = "Let us dance the dance of death.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45, condition = { type = CONDITION_POISON, totalDamage = 220, interval = 4000 } }, { name = "combat", interval = 3000, chance = 70, type = COMBAT_PHYSICALDAMAGE, minDamage = -60, maxDamage = -95, range = 5, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, { name = "combat", interval = 6000, chance = 90, type = COMBAT_PHYSICALDAMAGE, minDamage = -60, maxDamage = -95, range = 5, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, { name = "speed", interval = 3500, chance = 35, speedChange = -400, range = 5, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 10000 }, - { name = "combat", interval = 4000, chance = 30, type = COMBAT_MANADRAIN, minDamage = -2, maxDamage = -110, range = 5, radius = 1, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 4000, chance = 30, type = COMBAT_MANADRAIN, minDamage = -2, maxDamage = -110, range = 5, radius = 1, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { @@ -87,7 +86,7 @@ monster.defenses = { armor = 11, -- mitigation = ???, { name = "combat", interval = 2000, chance = 45, type = COMBAT_HEALING, minDamage = 75, maxDamage = 135, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 3000, chance = 50, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 3000, chance = 50, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -107,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/the_hag.lua b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/the_hag.lua index f678101f71d..d2d7824e176 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/scrapper/the_hag.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/scrapper/the_hag.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 59, lookFeet = 2, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 935 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,8 +61,8 @@ monster.summon = { maxSummons = 2, summons = { { name = "Ghost", chance = 26, interval = 2000, count = 1 }, - { name = "Crypt Shambler", chance = 26, interval = 2000, count = 1 } - } + { name = "Crypt Shambler", chance = 26, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -74,13 +74,12 @@ monster.voices = { { text = "I'll teach you respect for the old!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "drunk", interval = 3000, chance = 35, range = 5, radius = 1, target = true, duration = 15000 }, - { name = "speed", interval = 4000, chance = 55, speedChange = -400, range = 5, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 12000 } + { name = "speed", interval = 4000, chance = 55, speedChange = -400, range = 5, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 12000 }, } monster.defenses = { @@ -88,7 +87,7 @@ monster.defenses = { armor = 24, -- mitigation = ???, { name = "combat", interval = 2000, chance = 35, type = COMBAT_HEALING, minDamage = 95, maxDamage = 155, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 3000, chance = 50, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 3000, chance = 50, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -108,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/warlord/darakan_the_executioner.lua b/data-otservbr-global/monster/quests/svargrond_arena/warlord/darakan_the_executioner.lua index 810c9fb27a5..fdc7f6daa21 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/warlord/darakan_the_executioner.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/warlord/darakan_the_executioner.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 95, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3480 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -63,21 +63,20 @@ monster.voices = { { text = "FIGHT LIKE A BARBARIAN!", yell = true }, { text = "VICTORY IS MINE!", yell = true }, { text = "I AM your father!", yell = false }, - { text = "To be the man you have to beat the man!", yell = false } + { text = "To be the man you have to beat the man!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -210 }, - { name = "combat", interval = 1000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = -72, maxDamage = -130, shootEffect = CONST_ANI_SPEAR, target = false } + { name = "combat", interval = 1000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = -72, maxDamage = -130, shootEffect = CONST_ANI_SPEAR, target = false }, } monster.defenses = { defense = 31, armor = 30, - { name = "combat", interval = 6000, chance = 65, type = COMBAT_HEALING, minDamage = 20, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 6000, chance = 65, type = COMBAT_HEALING, minDamage = 20, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -90,14 +89,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 1 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/warlord/deathbringer.lua b/data-otservbr-global/monster/quests/svargrond_arena/warlord/deathbringer.lua index 7380740e263..b6fa6be8396 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/warlord/deathbringer.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/warlord/deathbringer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8440 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -66,8 +66,7 @@ monster.voices = { { text = "I will eat your soul!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -465 }, @@ -75,12 +74,12 @@ monster.attacks = { { name = "combat", interval = 3000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -450, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -450, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -100, radius = 6, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 3000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -150, range = 7, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 3000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -150, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, -- mitigation = ???, } @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/warlord/fallen_mooh'tah_master_ghar.lua b/data-otservbr-global/monster/quests/svargrond_arena/warlord/fallen_mooh'tah_master_ghar.lua index 12dfbf25631..676dda2eab9 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/warlord/fallen_mooh'tah_master_ghar.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/warlord/fallen_mooh'tah_master_ghar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 7990 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,12 +49,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -62,11 +62,10 @@ monster.voices = { chance = 10, { text = "I will finish you!", yell = false }, { text = "You are no match for a master of the Mooh'Tha!", yell = false }, - { text = "I might be fallen but you will fall before me!", yell = false } + { text = "I might be fallen but you will fall before me!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -525, condition = { type = CONDITION_POISON, totalDamage = 18, interval = 4000 } }, @@ -75,12 +74,12 @@ monster.attacks = { { name = "combat", interval = 4000, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -80, maxDamage = -270, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 4500, chance = 40, minDamage = -10, maxDamage = -200, range = 10, shootEffect = CONST_ANI_POISON, target = false }, - { name = "combat", interval = 5000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 5000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 33, - armor = 30 + armor = 30, } monster.elements = { @@ -93,14 +92,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/warlord/gnorre_chyllson.lua b/data-otservbr-global/monster/quests/svargrond_arena/warlord/gnorre_chyllson.lua index e28535a344b..78de7936e4f 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/warlord/gnorre_chyllson.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/warlord/gnorre_chyllson.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 10, lookFeet = 85, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 7150 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -65,18 +65,17 @@ monster.voices = { { text = "Feel the wrath of father chyll!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -455 }, { name = "melee", interval = 3000, chance = 50, minDamage = -500, maxDamage = -800 }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -170, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -170, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = false }, } monster.defenses = { defense = 52, - armor = 51 + armor = 51, -- mitigation = ???, } @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/warlord/norgle_glacierbeard.lua b/data-otservbr-global/monster/quests/svargrond_arena/warlord/norgle_glacierbeard.lua index d5fe353a0ce..9f924e72230 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/warlord/norgle_glacierbeard.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/warlord/norgle_glacierbeard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4280 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -67,16 +67,15 @@ monster.voices = { { text = "Revenge is sweetest when served cold.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -225 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -225 }, } monster.defenses = { defense = 27, - armor = 25 + armor = 25, -- mitigation = ???, } @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/warlord/svoren_the_mad.lua b/data-otservbr-global/monster/quests/svargrond_arena/warlord/svoren_the_mad.lua index fe6e59cfb99..cae6e947087 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/warlord/svoren_the_mad.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/warlord/svoren_the_mad.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 43, lookFeet = 5, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6310 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -68,17 +68,16 @@ monster.voices = { { text = "Ah madness I embrace you!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -525 }, - { name = "speed", interval = 3500, chance = 35, speedChange = -250, range = 1, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 40 } + { name = "speed", interval = 3500, chance = 35, speedChange = -250, range = 1, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 40 }, } monster.defenses = { defense = 27, - armor = 25 + armor = 25, -- mitigation = ???, } @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/warlord/the_masked_marauder.lua b/data-otservbr-global/monster/quests/svargrond_arena/warlord/the_masked_marauder.lua index 2e8732bf9a8..f976ae17ceb 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/warlord/the_masked_marauder.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/warlord/the_masked_marauder.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 7320 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -66,19 +66,18 @@ monster.voices = { { text = "Stop! I give up!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -640 }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -38, maxDamage = -150, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -38, maxDamage = -150, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { defense = 35, armor = 25, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 50, type = COMBAT_HEALING, minDamage = 75, maxDamage = 125, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 50, type = COMBAT_HEALING, minDamage = 75, maxDamage = 125, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/warlord/the_obliverator.lua b/data-otservbr-global/monster/quests/svargrond_arena/warlord/the_obliverator.lua index a6a17dfdcba..ad6f8fa8db0 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/warlord/the_obliverator.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/warlord/the_obliverator.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 9020 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "fire elemental", chance = 50, interval = 2000, count = 3 } - } + { name = "fire elemental", chance = 50, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -71,20 +71,19 @@ monster.voices = { { text = "I am the test that you won't pass!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -700 }, { name = "combat", interval = 1000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -250, range = 5, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 3000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 3000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { defense = 45, armor = 40, -- mitigation = ???, - { name = "combat", interval = 4000, chance = 5, type = COMBAT_HEALING, minDamage = 50, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 5, type = COMBAT_HEALING, minDamage = 50, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -104,7 +103,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/warlord/the_pit_lord.lua b/data-otservbr-global/monster/quests/svargrond_arena/warlord/the_pit_lord.lua index 8da7b56bc11..1b39e9efb64 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/warlord/the_pit_lord.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/warlord/the_pit_lord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5270 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -65,12 +65,11 @@ monster.voices = { { text = "I'll crush you beneath my feet!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -380 }, - { name = "combat", interval = 7500, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -250, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 7500, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -250, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { @@ -78,7 +77,7 @@ monster.defenses = { armor = 46, -- mitigation = ???, { name = "speed", interval = 5000, chance = 100, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 2500 }, - { name = "combat", interval = 6000, chance = 65, type = COMBAT_HEALING, minDamage = 20, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 6000, chance = 65, type = COMBAT_HEALING, minDamage = 20, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/svargrond_arena/warlord/webster.lua b/data-otservbr-global/monster/quests/svargrond_arena/warlord/webster.lua index e92dc2a823b..e81161f3066 100644 --- a/data-otservbr-global/monster/quests/svargrond_arena/warlord/webster.lua +++ b/data-otservbr-global/monster/quests/svargrond_arena/warlord/webster.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2950 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -66,20 +66,19 @@ monster.voices = { { text = "I'll get you!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, { name = "speed", interval = 3500, chance = 65, speedChange = -500, range = 1, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 40 }, - { name = "combat", interval = 3000, chance = 75, type = COMBAT_ENERGYDAMAGE, minDamage = -13, maxDamage = -80, range = 7, shootEffect = CONST_ANI_ENERGY, target = false } + { name = "combat", interval = 3000, chance = 75, type = COMBAT_ENERGYDAMAGE, minDamage = -13, maxDamage = -80, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, } monster.defenses = { defense = 34, armor = 29, -- mitigation = ???, - { name = "speed", interval = 5000, chance = 100, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 2500 } + { name = "speed", interval = 5000, chance = 100, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 2500 }, } monster.elements = { @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_curse_spreads/black_vixen.lua b/data-otservbr-global/monster/quests/the_curse_spreads/black_vixen.lua index 3a358c70035..27d333a29a4 100644 --- a/data-otservbr-global/monster/quests/the_curse_spreads/black_vixen.lua +++ b/data-otservbr-global/monster/quests/the_curse_spreads/black_vixen.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { @@ -55,26 +55,26 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 2, summons = { - { name = "werefox", chance = 20, interval = 2000, count = 2 } - } + { name = "werefox", chance = 20, interval = 2000, count = 2 }, + }, } monster.voices = { interval = 5000, chance = 10, { text = "You are not clever enough to defeat me!", yell = false }, - { text = "The slyness of foxes will deceive the unwary!", yell = false } + { text = "The slyness of foxes will deceive the unwary!", yell = false }, } monster.loot = { @@ -101,7 +101,7 @@ monster.loot = { { id = 27706, chance = 250 }, -- werefox trophy { name = "foxtail", chance = 100 }, { name = "wolf backpack", chance = 100 }, - { name = "silver token", chance = 100 } + { name = "silver token", chance = 100 }, } monster.attacks = { @@ -109,14 +109,14 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 100, maxDamage = 720, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, { name = "combat", interval = 1000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "outfit", interval = 1000, chance = 1, radius = 1, target = true, duration = 2000, outfitMonster = "werewolf" } + { name = "outfit", interval = 1000, chance = 1, radius = 1, target = true, duration = 2000, outfitMonster = "werewolf" }, } monster.defenses = { defense = 45, armor = 40, { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 345, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -129,18 +129,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -40 }, { type = COMBAT_HOLYDAMAGE, percent = 50 }, - { type = COMBAT_DEATHDAMAGE, percent = 50 } + { type = COMBAT_DEATHDAMAGE, percent = 50 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -148,13 +147,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_curse_spreads/bloodback.lua b/data-otservbr-global/monster/quests/the_curse_spreads/bloodback.lua index b1e409c1493..fc8cede580a 100644 --- a/data-otservbr-global/monster/quests/the_curse_spreads/bloodback.lua +++ b/data-otservbr-global/monster/quests/the_curse_spreads/bloodback.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { @@ -66,8 +66,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Wereboar", chance = 20, interval = 2000, count = 2 } - } + { name = "Wereboar", chance = 20, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -95,21 +95,21 @@ monster.loot = { { name = "fur boots", chance = 400 }, { id = 22102, chance = 250 }, -- wereboar trophy { name = "silver token", chance = 250 }, - { name = "wolf backpack", chance = 100 } + { name = "wolf backpack", chance = 100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -290 }, { name = "combat", interval = 1000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -420, range = 7, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, - { name = "combat", interval = 1000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -200, length = 5, spread = 3, target = false } + { name = "combat", interval = 1000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -200, length = 5, spread = 3, target = false }, } monster.defenses = { defense = 45, armor = 40, -- mitigation = ???, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 345, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 345, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,11 +129,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -141,13 +140,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_curse_spreads/darkfang.lua b/data-otservbr-global/monster/quests/the_curse_spreads/darkfang.lua index d19b641bc85..9e71fcccdd4 100644 --- a/data-otservbr-global/monster/quests/the_curse_spreads/darkfang.lua +++ b/data-otservbr-global/monster/quests/the_curse_spreads/darkfang.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { @@ -66,8 +66,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Gloom Wolf", chance = 20, interval = 2000, count = 2 } - } + { name = "Gloom Wolf", chance = 20, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -97,7 +97,7 @@ monster.loot = { { name = "sai", chance = 250 }, { id = 7394, chance = 13600000 }, -- wolf trophy { name = "silver token", chance = 250 }, - { name = "wolf backpack", chance = 100 } + { name = "wolf backpack", chance = 100 }, } monster.attacks = { @@ -105,14 +105,14 @@ monster.attacks = { { name = "werewolf skill reducer", interval = 2000, chance = 15, range = 1, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, radius = 8, effect = CONST_ME_SOUND_RED, target = false }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = 200, maxDamage = 340, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, } monster.defenses = { defense = 45, armor = 40, -- mitigation = ???, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 345, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 345, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -132,11 +132,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -144,13 +143,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_curse_spreads/feroxa.lua b/data-otservbr-global/monster/quests/the_curse_spreads/feroxa.lua index ff9bb658c13..6e3c56f2c87 100644 --- a/data-otservbr-global/monster/quests/the_curse_spreads/feroxa.lua +++ b/data-otservbr-global/monster/quests/the_curse_spreads/feroxa.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 77, lookFeet = 57, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 100000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 2 + chance = 2, } monster.bosstiary = { bossRaceId = 1149, - bossRace = RARITY_NEMESIS + bossRace = RARITY_NEMESIS, } monster.strategiesTarget = { @@ -54,16 +54,16 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "FeroxaTransform" + "FeroxaTransform", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -71,21 +71,20 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -1400, maxDamage = -1800 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1250, radius = 6, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, radius = 5, effect = CONST_ME_ICETORNADO, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -700, maxDamage = -1250, range = 6, shootEffect = CONST_ANI_ARROW, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -700, maxDamage = -1250, range = 6, shootEffect = CONST_ANI_ARROW, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { defense = 55, armor = 50, { name = "speed", interval = 2000, chance = 12, speedChange = 1250, effect = CONST_ME_THUNDER, target = false, duration = 10000 }, - { name = "feroxa summon", interval = 2000, chance = 20, target = false } + { name = "feroxa summon", interval = 2000, chance = 20, target = false }, } monster.elements = { @@ -98,14 +97,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 30 }, { type = COMBAT_HOLYDAMAGE, percent = 30 }, - { type = COMBAT_DEATHDAMAGE, percent = 30 } + { type = COMBAT_DEATHDAMAGE, percent = 30 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_curse_spreads/feroxa2.lua b/data-otservbr-global/monster/quests/the_curse_spreads/feroxa2.lua index 3a3c1d242b5..a40b803565d 100644 --- a/data-otservbr-global/monster/quests/the_curse_spreads/feroxa2.lua +++ b/data-otservbr-global/monster/quests/the_curse_spreads/feroxa2.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 50000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 2 + chance = 2, } monster.strategiesTarget = { @@ -50,16 +50,16 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "FeroxaTransform" + "FeroxaTransform", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -67,14 +67,13 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -1400, maxDamage = -1800 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1050, radius = 6, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, length = 9, spread = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -700, radius = 7, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -700, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { @@ -82,7 +81,7 @@ monster.defenses = { armor = 50, { name = "speed", interval = 2000, chance = 12, speedChange = 1250, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 }, { name = "outfit", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 5000, outfitMonster = "werewolf" }, - { name = "feroxa summon", interval = 2000, chance = 20, target = false } + { name = "feroxa summon", interval = 2000, chance = 20, target = false }, } monster.elements = { @@ -95,14 +94,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_curse_spreads/feroxa3.lua b/data-otservbr-global/monster/quests/the_curse_spreads/feroxa3.lua index d5c198a1634..f702b93764a 100644 --- a/data-otservbr-global/monster/quests/the_curse_spreads/feroxa3.lua +++ b/data-otservbr-global/monster/quests/the_curse_spreads/feroxa3.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 77, lookFeet = 57, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 130000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 2 + chance = 2, } monster.strategiesTarget = { @@ -50,16 +50,16 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "feroxaDeath" + "feroxaDeath", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -67,21 +67,20 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -1400, maxDamage = -1800 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1250, radius = 6, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, length = 9, spread = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1250, range = 6, shootEffect = CONST_ANI_ARROW, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1250, range = 6, shootEffect = CONST_ANI_ARROW, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { defense = 55, armor = 50, { name = "speed", interval = 2000, chance = 12, speedChange = 1250, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 }, - { name = "feroxa summon", interval = 2000, chance = 20, target = false } + { name = "feroxa summon", interval = 2000, chance = 20, target = false }, } monster.elements = { @@ -94,14 +93,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 30 }, { type = COMBAT_HOLYDAMAGE, percent = 30 }, - { type = COMBAT_DEATHDAMAGE, percent = 30 } + { type = COMBAT_DEATHDAMAGE, percent = 30 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_curse_spreads/feroxa4.lua b/data-otservbr-global/monster/quests/the_curse_spreads/feroxa4.lua index 4aece4cb3d1..3f2ac989154 100644 --- a/data-otservbr-global/monster/quests/the_curse_spreads/feroxa4.lua +++ b/data-otservbr-global/monster/quests/the_curse_spreads/feroxa4.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 130000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 2 + chance = 2, } monster.strategiesTarget = { @@ -50,16 +50,16 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "feroxaDeath" + "feroxaDeath", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -67,21 +67,20 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -1400, maxDamage = -1800 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1250, radius = 6, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, length = 9, spread = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1250, range = 6, shootEffect = CONST_ANI_ARROW, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1250, range = 6, shootEffect = CONST_ANI_ARROW, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { defense = 55, armor = 50, { name = "speed", interval = 2000, chance = 12, speedChange = 1250, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 }, - { name = "feroxa summon", interval = 2000, chance = 20, target = false } + { name = "feroxa summon", interval = 2000, chance = 20, target = false }, } monster.elements = { @@ -94,14 +93,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 30 }, { type = COMBAT_HOLYDAMAGE, percent = 30 }, - { type = COMBAT_DEATHDAMAGE, percent = 30 } + { type = COMBAT_DEATHDAMAGE, percent = 30 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_curse_spreads/feroxa5.lua b/data-otservbr-global/monster/quests/the_curse_spreads/feroxa5.lua index b2c89d40149..a469ad757b7 100644 --- a/data-otservbr-global/monster/quests/the_curse_spreads/feroxa5.lua +++ b/data-otservbr-global/monster/quests/the_curse_spreads/feroxa5.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 150000 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 2 + chance = 2, } monster.strategiesTarget = { @@ -50,12 +50,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -81,21 +81,21 @@ monster.loot = { { id = 7419, chance = 1500 }, -- dreaded cleaver { id = 22085, chance = 1500 }, -- fur armor { id = 22086, chance = 1500 }, -- badger boots - { id = 22104, chance = 12000 } -- trophy of feroxa + { id = 22104, chance = 12000 }, -- trophy of feroxa } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -1400, maxDamage = -1800 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1050, radius = 6, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, length = 9, spread = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -700, radius = 7, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -700, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { defense = 55, armor = 50, { name = "speed", interval = 2000, chance = 12, speedChange = 1250, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 }, - { name = "feroxa summon", interval = 2000, chance = 20, target = false } + { name = "feroxa summon", interval = 2000, chance = 20, target = false }, } monster.elements = { @@ -108,18 +108,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -127,13 +126,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_curse_spreads/shadowpelt.lua b/data-otservbr-global/monster/quests/the_curse_spreads/shadowpelt.lua index 3496df8afb0..5a118bc6a54 100644 --- a/data-otservbr-global/monster/quests/the_curse_spreads/shadowpelt.lua +++ b/data-otservbr-global/monster/quests/the_curse_spreads/shadowpelt.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 11 + chance = 11, } monster.bosstiary = { @@ -66,8 +66,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Werebear", chance = 20, interval = 2000, count = 2 } - } + { name = "Werebear", chance = 20, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -97,14 +97,14 @@ monster.loot = { { name = "relic sword", chance = 550 }, { name = "silver token", chance = 150 }, { id = 22103, chance = 150 }, -- werebear trophy - { name = "wolf backpack", chance = 100 } + { name = "wolf backpack", chance = 100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 50 }, { name = "combat", interval = 100, chance = 22, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -310, radius = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "outfit", interval = 1000, chance = 1, radius = 1, target = true, duration = 2000, outfitMonster = "Werebear" }, - { name = "combat", interval = 100, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_SOUND_WHITE, target = false } + { name = "combat", interval = 100, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_SOUND_WHITE, target = false }, } monster.defenses = { @@ -112,7 +112,7 @@ monster.defenses = { armor = 30, -- mitigation = ???, { name = "combat", interval = 2000, chance = 7, type = COMBAT_HEALING, minDamage = 120, maxDamage = 310, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = 520, effect = CONST_ME_POFF, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 520, effect = CONST_ME_POFF, target = false, duration = 5000 }, } monster.elements = { @@ -132,11 +132,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -144,13 +143,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_curse_spreads/sharpclaw.lua b/data-otservbr-global/monster/quests/the_curse_spreads/sharpclaw.lua index 876b364051c..96dbeaa2923 100644 --- a/data-otservbr-global/monster/quests/the_curse_spreads/sharpclaw.lua +++ b/data-otservbr-global/monster/quests/the_curse_spreads/sharpclaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3300 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { @@ -66,8 +66,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Werebadger", chance = 20, interval = 2000, count = 2 } - } + { name = "Werebadger", chance = 20, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -94,7 +94,7 @@ monster.loot = { { name = "badger boots", chance = 400 }, { name = "underworld rod", chance = 400 }, { name = "wand of voodoo", chance = 400 }, - { name = "wolf backpack", chance = 250 } + { name = "wolf backpack", chance = 250 }, } monster.attacks = { @@ -103,7 +103,7 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, { name = "combat", interval = 1000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "outfit", interval = 1000, chance = 1, radius = 1, target = true, duration = 2000, outfitMonster = "Werebadger" }, - { name = "ghastly dragon curse", interval = 2000, chance = 5, range = 1, target = false } + { name = "ghastly dragon curse", interval = 2000, chance = 5, range = 1, target = false }, } monster.defenses = { @@ -111,7 +111,7 @@ monster.defenses = { armor = 40, -- mitigation = ???, { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 345, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -131,11 +131,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -143,13 +142,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/bosses/alptramun.lua b/data-otservbr-global/monster/quests/the_dream_courts/bosses/alptramun.lua index b485d7cc8b7..a46b6610aff 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/bosses/alptramun.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/bosses/alptramun.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 320000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { @@ -117,7 +117,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -2000, range = 7, length = 6, spread = 3, shootEffect = CONST_ANI_POISON, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -700, range = 3, length = 6, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -500, range = 3, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, target = false } + { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, target = false }, } monster.defenses = { @@ -143,11 +143,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -155,13 +154,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/bosses/faceless_bane.lua b/data-otservbr-global/monster/quests/the_dream_courts/bosses/faceless_bane.lua index 2201fd74338..62166d1c777 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/bosses/faceless_bane.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/bosses/faceless_bane.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 97, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 35000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 1727, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.Quest.U12_00.TheDreamCourts.FacelessBaneTime + storageCooldown = Storage.Quest.U12_00.TheDreamCourts.FacelessBaneTime, } monster.strategiesTarget = { @@ -55,12 +55,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -114,12 +114,12 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 45, type = COMBAT_DEATHDAMAGE, minDamage = -335, maxDamage = -450, radius = 4, Effect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -330, maxDamage = -380, length = 7, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -410, range = 4, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -385, maxDamage = -535, range = 4, radius = 1, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -385, maxDamage = -535, range = 4, radius = 1, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = true }, } monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -132,22 +132,21 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 99 } + { type = COMBAT_DEATHDAMAGE, percent = 99 }, } monster.heals = { - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -155,13 +154,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/bosses/izcandar_the_banished.lua b/data-otservbr-global/monster/quests/the_dream_courts/bosses/izcandar_the_banished.lua index 597774ad748..26b2c837282 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/bosses/izcandar_the_banished.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/bosses/izcandar_the_banished.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 38, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -119,7 +119,7 @@ monster.attacks = { { name = "combat", interval = 4100, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -2000, length = 8, spread = 0, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 4700, chance = 17, type = COMBAT_ICEDAMAGE, minDamage = -500, maxDamage = -1500, length = 5, spread = 2, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 3100, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -500, maxDamage = -2000, length = 8, spread = 0, effect = CONST_ME_ICETORNADO, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } monster.defenses = { @@ -145,11 +145,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -157,13 +156,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/bosses/malofur_mangrinder.lua b/data-otservbr-global/monster/quests/the_dream_courts/bosses/malofur_mangrinder.lua index 1c67fb1892d..4e85ee19d95 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/bosses/malofur_mangrinder.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/bosses/malofur_mangrinder.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 320000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { @@ -117,7 +117,7 @@ monster.attacks = { monster.defenses = { defense = 60, - armor = 60 + armor = 60, -- mitigation = ???, } @@ -138,11 +138,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -150,13 +149,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/bosses/maxxenius.lua b/data-otservbr-global/monster/quests/the_dream_courts/bosses/maxxenius.lua index e07cfc84cf5..d5dd3890976 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/bosses/maxxenius.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/bosses/maxxenius.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 320000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { @@ -55,12 +55,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -116,12 +116,12 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -500, maxDamage = -1000 }, { name = "energy beam", interval = 2000, chance = 10, minDamage = -500, maxDamage = -1200, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "energy wave", interval = 2000, chance = 10, minDamage = -500, maxDamage = -1200, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false } + { name = "energy wave", interval = 2000, chance = 10, minDamage = -500, maxDamage = -1200, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { defense = 60, - armor = 60 + armor = 60, } monster.elements = { @@ -134,22 +134,21 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 15 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 20 } + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.heals = { - { type = COMBAT_ENERGYDAMAGE, percent = 500 } + { type = COMBAT_ENERGYDAMAGE, percent = 500 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -157,13 +156,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/bosses/plagueroot.lua b/data-otservbr-global/monster/quests/the_dream_courts/bosses/plagueroot.lua index 05914e0d1cb..3d436e2b83d 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/bosses/plagueroot.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/bosses/plagueroot.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 320000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { @@ -142,7 +142,7 @@ monster.attacks = { { name = "firefield", interval = 1000, chance = 4, radius = 8, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -650, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 1000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 1000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 1000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { @@ -151,7 +151,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 500, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 200, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 10, speedChange = 1800, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 } + { name = "speed", interval = 1000, chance = 10, speedChange = 1800, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } monster.elements = { @@ -171,11 +171,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -183,13 +182,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/bosses/the_nightmare_beast.lua b/data-otservbr-global/monster/quests/the_dream_courts/bosses/the_nightmare_beast.lua index 0324cfc1871..c8c3f8da275 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/bosses/the_nightmare_beast.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/bosses/the_nightmare_beast.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 850000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { @@ -147,11 +147,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -159,13 +158,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/generator.lua b/data-otservbr-global/monster/quests/the_dream_courts/generator.lua index 322ae47f4d7..afbed17adbc 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/generator.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/generator.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a generator" monster.experience = 3000 monster.outfit = { - lookTypeEx = 20710 + lookTypeEx = 20710, } monster.health = 8000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -43,12 +43,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -56,17 +56,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -206, maxDamage = -252, radius = 6, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -206, maxDamage = -252, radius = 6, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { defense = 30, armor = 30, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 133, maxDamage = 454, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 133, maxDamage = 454, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -79,14 +78,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 25 }, { type = COMBAT_HOLYDAMAGE, percent = 25 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/horrible_dream.lua b/data-otservbr-global/monster/quests/the_dream_courts/horrible_dream.lua index 3f305a827c2..ed6c3888dcc 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/horrible_dream.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/horrible_dream.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 320 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Death Blob", chance = 10, interval = 2000, count = 3 } - } + { name = "Death Blob", chance = 10, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -69,20 +69,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -35, maxDamage = -60, range = 3, radius = 4, effect = CONST_ME_POFF, target = false }, - { name = "death blob curse", interval = 2000, chance = 5, range = 5, target = false } + { name = "death blob curse", interval = 2000, chance = 5, range = 5, target = false }, } monster.defenses = { defense = 15, armor = 15, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 20, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 20, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -102,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/lucifuga_aranea.lua b/data-otservbr-global/monster/quests/the_dream_courts/lucifuga_aranea.lua index bc9e22c1896..717a1fe0814 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/lucifuga_aranea.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/lucifuga_aranea.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 12000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -68,21 +68,21 @@ monster.loot = { { name = "poison gland", chance = 54500 }, { name = "great mana potion", chance = 80000 }, { name = "plate armor", chance = 64000 }, - { name = "green gem", chance = 35000 } + { name = "green gem", chance = 35000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, { name = "speed", interval = 2000, chance = 15, speedChange = -800, range = 7, radius = 6, effect = CONST_ME_POFF, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = true }, - { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = true, duration = 10000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = true, duration = 10000 }, } monster.defenses = { defense = 40, armor = 40, -- mitigation = ???, - { name = "speed", interval = 2000, chance = 15, speedChange = 250, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 250, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -102,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/mind-wrecking_dream.lua b/data-otservbr-global/monster/quests/the_dream_courts/mind-wrecking_dream.lua index 88b88bbb22b..4554534149b 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/mind-wrecking_dream.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/mind-wrecking_dream.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3900 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -62,15 +62,14 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -320 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -165, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 3, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, target = false }, } monster.defenses = { @@ -78,7 +77,7 @@ monster.defenses = { armor = 35, -- mitigation = ???, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 130, maxDamage = 205, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/nightmare_tendril.lua b/data-otservbr-global/monster/quests/the_dream_courts/nightmare_tendril.lua index 8f6f0917b13..5629115972a 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/nightmare_tendril.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/nightmare_tendril.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2100 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,18 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, { name = "drunk", interval = 2000, chance = 8, shootEffect = CONST_ANI_EARTHARROW, effect = CONST_ME_STUN, target = true, duration = 5000 }, - { name = "speed", interval = 2000, chance = 7, speedChange = -120, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 } + { name = "speed", interval = 2000, chance = 7, speedChange = -120, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, -- mitigation = ???, } @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/nightmarish_dream.lua b/data-otservbr-global/monster/quests/the_dream_courts/nightmarish_dream.lua index 8d2eaad7e66..dfec10276cd 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/nightmarish_dream.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/nightmarish_dream.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,21 +62,20 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 3, interval = 4000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, radius = 4, effect = CONST_ME_SOUND_RED, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -55, maxDamage = -350, range = 1, radius = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, } monster.defenses = { defense = 25, armor = 25, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 120, maxDamage = 190, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 120, maxDamage = 190, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/plant_abomination.lua b/data-otservbr-global/monster/quests/the_dream_courts/plant_abomination.lua index c5249c78748..41517061f49 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/plant_abomination.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/plant_abomination.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3900 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, @@ -71,12 +70,12 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 5, spread = 3, effect = CONST_ME_SMALLPLANTS, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, radius = 1, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_CARNIPHILA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -55, maxDamage = -100, radius = 4, effect = CONST_ME_HITBYPOISON, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, radius = 1, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, radius = 1, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 20, - armor = 20 + armor = 20, -- mitigation = ???, } @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/plant_attendant.lua b/data-otservbr-global/monster/quests/the_dream_courts/plant_attendant.lua index e0a30260e99..daa1f0313c4 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/plant_attendant.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/plant_attendant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 90 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,18 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -15, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = true }, - { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 3, effect = CONST_ME_SMALLPLANTS, target = false, duration = 9000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 3, effect = CONST_ME_SMALLPLANTS, target = false, duration = 9000 }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, -- mitigation = ???, } @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/the_cold_of_winter.lua b/data-otservbr-global/monster/quests/the_dream_courts/the_cold_of_winter.lua index 5b769c6e79e..9e6d0edf37c 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/the_cold_of_winter.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/the_cold_of_winter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 40 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,16 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -2 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -2 }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, -- mitigation = ???, } @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/the_heat_of_summer.lua b/data-otservbr-global/monster/quests/the_dream_courts/the_heat_of_summer.lua index 42e2d7f423b..0404ce57cba 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/the_heat_of_summer.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/the_heat_of_summer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 280 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,18 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -45, maxDamage = -160, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "firefield", interval = 2000, chance = 25, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true } + { name = "firefield", interval = 2000, chance = 25, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, -- mitigation = ???, } @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/unpleasant_dream.lua b/data-otservbr-global/monster/quests/the_dream_courts/unpleasant_dream.lua index 8d42fc3a1c8..d5afbaf7c4c 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/unpleasant_dream.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/unpleasant_dream.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 50 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,17 +62,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10, condition = { type = CONDITION_POISON, totalDamage = 16, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -15, range = 1, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -15, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, -- mitigation = ???, } @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_dream_courts/whirling_blades.lua b/data-otservbr-global/monster/quests/the_dream_courts/whirling_blades.lua index 301e3a78f99..07744544895 100644 --- a/data-otservbr-global/monster/quests/the_dream_courts/whirling_blades.lua +++ b/data-otservbr-global/monster/quests/the_dream_courts/whirling_blades.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -62,17 +62,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, radius = 2, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, radius = 2, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { defense = 199, - armor = 199 + armor = 199, -- mitigation = ???, } @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/blazing_fire_elemental.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/blazing_fire_elemental.lua index 16caf8873e1..4800398a0c8 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/blazing_fire_elemental.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/blazing_fire_elemental.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 650 monster.maxHealth = 650 monster.race = "fire" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -65,19 +64,19 @@ monster.loot = { { name = "gold coin", chance = 10000, maxCount = 40 }, { name = "flaming arrow", chance = 5000, maxCount = 4 }, { name = "glimmering soil", chance = 2500 }, - { name = "fiery heart", chance = 5475 } + { name = "fiery heart", chance = 5475 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 1000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -65, maxDamage = -205, radius = 5, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -110, maxDamage = -150, range = 7, radius = 5, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "firefield", interval = 1000, chance = 15, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true } + { name = "firefield", interval = 1000, chance = 15, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { defense = 20, - armor = 20 + armor = 20, -- mitigation = ???, } @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/blistering_fire_elemental.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/blistering_fire_elemental.lua index cdafcdf8d0a..3991aa6ae98 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/blistering_fire_elemental.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/blistering_fire_elemental.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 1500 monster.maxHealth = 1500 monster.race = "fire" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -67,7 +66,7 @@ monster.loot = { { name = "gold coin", chance = 12500, maxCount = 65 }, { name = "gold coin", chance = 12500, maxCount = 60 }, { name = "glimmering soil", chance = 2500 }, - { name = "wand of draconia", chance = 1250 } + { name = "wand of draconia", chance = 1250 }, } monster.attacks = { @@ -75,12 +74,12 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 11, type = COMBAT_FIREDAMAGE, minDamage = -65, maxDamage = -510, length = 7, spread = 3, target = false }, -- fire { name = "condition", type = CONDITION_FIRE, interval = 1000, chance = 12, minDamage = -50, maxDamage = -200, radius = 6, effect = CONST_ME_FIREAREA, target = false }, - { name = "firefield", interval = 1000, chance = 15, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true } + { name = "firefield", interval = 1000, chance = 15, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { defense = 20, - armor = 20 + armor = 20, -- mitigation = ???, } @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/charged_energy_elemental.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/charged_energy_elemental.lua index 09ac47c474f..a346fe1afae 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/charged_energy_elemental.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/charged_energy_elemental.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 500 monster.maxHealth = 500 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 20000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -67,21 +66,21 @@ monster.loot = { { name = "gold coin", chance = 50000, maxCount = 100 }, { name = "gold coin", chance = 50000, maxCount = 22 }, { name = "flash arrow", chance = 6250, maxCount = 3 }, - { name = "energy soil", chance = 2063 } + { name = "energy soil", chance = 2063 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -168, maxDamage = -100, range = 6, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true }, -- energy damage - { name = "condition", type = CONDITION_ENERGY, interval = 1000, chance = 15, radius = 3, effect = CONST_ME_YELLOWENERGY, target = false } + { name = "condition", type = CONDITION_ENERGY, interval = 1000, chance = 15, radius = 3, effect = CONST_ME_YELLOWENERGY, target = false }, } monster.defenses = { defense = 25, armor = 25, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/earth_overlord.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/earth_overlord.lua index a5a5bee267e..c651694c21e 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/earth_overlord.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/earth_overlord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 20000, - chance = 30 + chance = 30, } monster.strategiesTarget = { @@ -70,19 +70,19 @@ monster.loot = { { name = "mother soil", chance = 100000 }, { name = "lump of earth", chance = 33333 }, { name = "shiny stone", chance = 8333 }, - { id = 12600, chance = 552 } -- coal + { id = 12600, chance = 552 }, -- coal } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -800, length = 7, spread = 3, effect = CONST_ME_STONES, target = false }, { name = "combat", interval = 1000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -490, radius = 6, effect = CONST_ME_BIGPLANTS, target = false }, - { name = "speed", interval = 2000, chance = 20, speedChange = -750, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -750, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, -- mitigation = ???, } @@ -103,7 +103,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/energy_overlord.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/energy_overlord.lua index 63cf02d752a..10846df7c35 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/energy_overlord.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/energy_overlord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 20000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -65,21 +65,21 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 100000, maxCount = 64 }, { name = "platinum coin", chance = 25000, maxCount = 2 }, - { name = "pure energy", chance = 100000 } + { name = "pure energy", chance = 100000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -800, length = 7, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 1000, chance = 11, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -200, range = 3, effect = CONST_ME_PURPLEENERGY, target = true }, - { name = "combat", interval = 1000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -200, radius = 5, effect = CONST_ME_BIGPLANTS, target = false } + { name = "combat", interval = 1000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -200, radius = 5, effect = CONST_ME_BIGPLANTS, target = false }, } monster.defenses = { defense = 40, armor = 40, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -99,7 +99,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/fire_overlord.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/fire_overlord.lua index b4e8be1cac8..c3b7d152a96 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/fire_overlord.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/fire_overlord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -67,19 +67,19 @@ monster.loot = { { name = "platinum coin", chance = 50000, maxCount = 3 }, { name = "magma coat", chance = 819 }, { name = "eternal flames", chance = 100000 }, - { name = "fiery heart", chance = 100000 } + { name = "fiery heart", chance = 100000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450, condition = { type = CONDITION_FIRE, totalDamage = 650, interval = 9000 } }, { name = "firefield", interval = 2000, chance = 15, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -900, length = 1, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, - { name = "combat", interval = 1000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 4, effect = CONST_ME_FIREAREA, target = true } + { name = "combat", interval = 1000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 4, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { defense = 25, - armor = 25 + armor = 25, -- mitigation = ???, } @@ -100,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/ice_overlord.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/ice_overlord.lua index 902b635bf1d..7da731c90ab 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/ice_overlord.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/ice_overlord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 4000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 20000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -65,20 +65,20 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 50000, maxCount = 38 }, { name = "platinum coin", chance = 50000, maxCount = 3 }, - { name = "flawless ice crystal", chance = 100000 } + { name = "flawless ice crystal", chance = 100000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "speed", interval = 2000, chance = 18, speedChange = -800, radius = 6, effect = CONST_ME_ICETORNADO, target = false, duration = 5000 }, - { name = "combat", interval = 1000, chance = 9, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -400, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = true } + { name = "combat", interval = 1000, chance = 9, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -400, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = true }, } monster.defenses = { defense = 30, armor = 30, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -98,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/jagged_earth_elemental.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/jagged_earth_elemental.lua index a379a37dee8..15cd6582e71 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/jagged_earth_elemental.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/jagged_earth_elemental.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 1500 monster.maxHealth = 1500 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 20000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -72,18 +71,18 @@ monster.loot = { { id = 3130, chance = 18000 }, -- twigs { name = "iron ore", chance = 800, maxCount = 2 }, { name = "seeds", chance = 1600 }, - { name = "natural soil", chance = 9000 } + { name = "natural soil", chance = 9000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -250, length = 6, spread = 3, effect = CONST_ME_STONES, target = false }, - { name = "combat", interval = 1000, chance = 11, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -200, range = 7, radius = 6, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POISONAREA, target = true } + { name = "combat", interval = 1000, chance = 11, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -200, range = 7, radius = 6, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POISONAREA, target = true }, } monster.defenses = { defense = 25, - armor = 25 + armor = 25, -- mitigation = ???, } @@ -104,7 +103,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/lord_of_the_elements.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/lord_of_the_elements.lua index 5eee4a7b9e4..eba6b1c9412 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/lord_of_the_elements.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/lord_of_the_elements.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -68,8 +68,8 @@ monster.summon = { { name = "Blistering Fire Elemental", chance = 50, interval = 4000, count = 1 }, { name = "Jagged Earth Elemental", chance = 50, interval = 4000, count = 1 }, { name = "Roaring Water Elemental", chance = 50, interval = 4000, count = 1 }, - { name = "Overcharged Energy Elemental", chance = 50, interval = 4000, count = 1 } - } + { name = "Overcharged Energy Elemental", chance = 50, interval = 4000, count = 1 }, + }, } monster.voices = { @@ -86,11 +86,11 @@ monster.loot = { { name = "small amethyst", chance = 11111, maxCount = 3 }, { name = "platinum coin", chance = 50000, maxCount = 9 }, { name = "earthborn titan armor", chance = 2063 }, - { name = "gold ingot", chance = 25000 } + { name = "gold ingot", chance = 25000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -690 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -690 }, } monster.defenses = { @@ -101,7 +101,7 @@ monster.defenses = { { name = "outfit", interval = 1500, chance = 40, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000, outfitMonster = "Energy Overlord" }, { name = "outfit", interval = 1500, chance = 40, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000, outfitMonster = "Fire Overlord" }, { name = "outfit", interval = 1500, chance = 40, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000, outfitMonster = "Earth Overlord" }, - { name = "outfit", interval = 1500, chance = 40, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000, outfitMonster = "Ice Overlord" } + { name = "outfit", interval = 1500, chance = 40, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000, outfitMonster = "Ice Overlord" }, } monster.elements = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/muddy_earth_elemental.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/muddy_earth_elemental.lua index eba0c4e7fdc..8970e739266 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/muddy_earth_elemental.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/muddy_earth_elemental.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 650 monster.maxHealth = 650 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 20000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -68,19 +67,19 @@ monster.loot = { { name = "gold coin", chance = 24500, maxCount = 80 }, { name = "gold coin", chance = 24500, maxCount = 47 }, { id = 3129, chance = 22000 }, -- some leaves - { name = "natural soil", chance = 3750 } + { name = "natural soil", chance = 3750 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -25, maxDamage = -155, range = 7, radius = 2, effect = CONST_ME_STONES, target = true }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 1000, chance = 10, minDamage = 0, maxDamage = -26, length = 6, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "condition", type = CONDITION_POISON, interval = 1000, chance = 10, minDamage = 0, maxDamage = -26, length = 6, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { defense = 30, - armor = 30 + armor = 30, -- mitigation = ???, } @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/overcharged_energy_elemental.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/overcharged_energy_elemental.lua index f004f04895b..84561f6070c 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/overcharged_energy_elemental.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/overcharged_energy_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 20000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -49,18 +49,18 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "BZZZZZZZZZZ", yell = false } + { text = "BZZZZZZZZZZ", yell = false }, } monster.loot = { @@ -69,20 +69,20 @@ monster.loot = { { name = "small amethyst", chance = 10000, maxCount = 2 }, { name = "berserk potion", chance = 2173 }, { name = "great health potion", chance = 10000 }, - { name = "energy soil", chance = 14285 } + { name = "energy soil", chance = 14285 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 11, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -250, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -300, range = 3, effect = CONST_ME_PURPLEENERGY, target = true }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, radius = 4, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, radius = 4, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 35, armor = 35, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -95,14 +95,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/roaring_water_elemental.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/roaring_water_elemental.lua index 40b45de2d0c..d913a7ab46b 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/roaring_water_elemental.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/roaring_water_elemental.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 1750 monster.maxHealth = 1750 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 20000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -70,19 +69,19 @@ monster.loot = { { name = "gold coin", chance = 27000, maxCount = 90 }, { name = "gold coin", chance = 27000, maxCount = 87 }, { name = "iced soil", chance = 9000 }, - { name = "northwind rod", chance = 750 } + { name = "northwind rod", chance = 750 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -225 }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -240, maxDamage = -320, radius = 2, shootEffect = CONST_ANI_ICE, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -240, maxDamage = -320, radius = 2, shootEffect = CONST_ANI_ICE, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { defense = 30, armor = 30, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -102,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_elemental_spheres/slick_water_elemental.lua b/data-otservbr-global/monster/quests/the_elemental_spheres/slick_water_elemental.lua index 1825f159c59..b18d11b0b7a 100644 --- a/data-otservbr-global/monster/quests/the_elemental_spheres/slick_water_elemental.lua +++ b/data-otservbr-global/monster/quests/the_elemental_spheres/slick_water_elemental.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 550 monster.maxHealth = 550 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 20000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -69,21 +68,21 @@ monster.loot = { { name = "gold coin", chance = 22500, maxCount = 70 }, { name = "gold coin", chance = 22500, maxCount = 60 }, { name = "shiver arrow", chance = 2575, maxCount = 3 }, - { name = "iced soil", chance = 6000 } + { name = "iced soil", chance = 6000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -175 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -130, range = 7, shootEffect = CONST_ANI_EARTH, target = true }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -220, range = 6, shootEffect = CONST_ANI_SNOWBALL, target = true }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -103, range = 4, shootEffect = CONST_ANI_SMALLICE, target = true } + { name = "combat", interval = 2000, chance = 18, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -103, range = 4, shootEffect = CONST_ANI_SMALLICE, target = true }, } monster.defenses = { defense = 30, armor = 30, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -103,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_explorer_society/blue_butterfly.lua b/data-otservbr-global/monster/quests/the_explorer_society/blue_butterfly.lua index de1e7394413..87ef3250d85 100644 --- a/data-otservbr-global/monster/quests/the_explorer_society/blue_butterfly.lua +++ b/data-otservbr-global/monster/quests/the_explorer_society/blue_butterfly.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -48,12 +48,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -61,12 +61,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -79,14 +78,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_explorer_society/pink_butterfly.lua b/data-otservbr-global/monster/quests/the_explorer_society/pink_butterfly.lua index 2cf76860407..7003fdd3878 100644 --- a/data-otservbr-global/monster/quests/the_explorer_society/pink_butterfly.lua +++ b/data-otservbr-global/monster/quests/the_explorer_society/pink_butterfly.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -60,12 +60,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -78,14 +77,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_explorer_society/purple_butterfly.lua b/data-otservbr-global/monster/quests/the_explorer_society/purple_butterfly.lua index e602bcf7afc..d2c42510683 100644 --- a/data-otservbr-global/monster/quests/the_explorer_society/purple_butterfly.lua +++ b/data-otservbr-global/monster/quests/the_explorer_society/purple_butterfly.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -48,12 +48,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -61,12 +61,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -79,14 +78,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_explorer_society/red_butterfly.lua b/data-otservbr-global/monster/quests/the_explorer_society/red_butterfly.lua index 87fd345bb37..fa97e4c8735 100644 --- a/data-otservbr-global/monster/quests/the_explorer_society/red_butterfly.lua +++ b/data-otservbr-global/monster/quests/the_explorer_society/red_butterfly.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 228 @@ -26,7 +26,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Banuta, Carlin Surroundings, Feyrist Meadows, Grimvale, Liberty Bay City, \z Liberty Bay Surroundings, Meriana, Plains of Havoc, Port Hope Surroundings, \z - Yalahar Arena Quarter, Yalahar Centre, Yalahar Magician Quarter." + Yalahar Arena Quarter, Yalahar Centre, Yalahar Magician Quarter.", } monster.health = 2 @@ -38,7 +38,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,12 +76,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -94,14 +93,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_explorer_society/yellow_butterfly.lua b/data-otservbr-global/monster/quests/the_explorer_society/yellow_butterfly.lua index ca6d44d0205..b5e88d7f102 100644 --- a/data-otservbr-global/monster/quests/the_explorer_society/yellow_butterfly.lua +++ b/data-otservbr-global/monster/quests/the_explorer_society/yellow_butterfly.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 227 @@ -26,7 +26,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Ab'Dendriel, Carlin Surroundings, Cormaya, Feyrist Meadows, Grimvale, Issavi, \z Kazordoon Surroundings, Liberty Bay City, Liberty Bay Surroundings, Meriana, Plains of Havoc, \z - Port Hope Surroundings, Yalahar Arena Quarter, Yalahar Centre, Yalahar Magician Quarter." + Port Hope Surroundings, Yalahar Arena Quarter, Yalahar Centre, Yalahar Magician Quarter.", } monster.health = 2 @@ -38,7 +38,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -63,12 +63,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -76,12 +76,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -94,14 +93,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/angry_plant.lua b/data-otservbr-global/monster/quests/the_first_dragon/angry_plant.lua index 8447dbabeb0..7ecc32947fb 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/angry_plant.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/angry_plant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -62,16 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 50, condition = { type = CONDITION_POISON, totalDamage = 95, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 50, condition = { type = CONDITION_POISON, totalDamage = 95, interval = 4000 } }, } monster.defenses = { defense = 20, - armor = 26 + armor = 26, -- mitigation = ???, } @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/bosses/fallen_challenger.lua b/data-otservbr-global/monster/quests/the_first_dragon/bosses/fallen_challenger.lua index 76065bdccb7..1e050fdfd65 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/bosses/fallen_challenger.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/bosses/fallen_challenger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 9000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -62,20 +62,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 120, attack = 130 }, { name = "combat", interval = 1000, chance = 13, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -600, radius = 1, target = true }, - { name = "combat", interval = 3000, chance = 34, type = COMBAT_DEATHDAMAGE, minDamage = -180, maxDamage = -500, range = 1, radius = 1, shootEffect = CONST_ANI_DEATH, target = true } + { name = "combat", interval = 3000, chance = 34, type = COMBAT_DEATHDAMAGE, minDamage = -180, maxDamage = -500, range = 1, radius = 1, shootEffect = CONST_ANI_DEATH, target = true }, } monster.defenses = { defense = 55, armor = 50, -- mitigation = ???, - { name = "combat", interval = 5000, chance = 25, type = COMBAT_HEALING, minDamage = 60, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 5000, chance = 25, type = COMBAT_HEALING, minDamage = 60, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/bosses/gelidrazah_the_frozen.lua b/data-otservbr-global/monster/quests/the_first_dragon/bosses/gelidrazah_the_frozen.lua index edab8a344aa..95280170ea2 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/bosses/gelidrazah_the_frozen.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/bosses/gelidrazah_the_frozen.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -84,7 +84,7 @@ monster.loot = { { id = 19363, chance = 500 }, -- runic ice shield { id = 7409, chance = 1500 }, -- northern star { id = 16118, chance = 1500 }, -- glacial rod - { id = 24939, chance = 100000 } -- scale of gelidrazah + { id = 24939, chance = 100000 }, -- scale of gelidrazah } monster.attacks = { @@ -93,14 +93,14 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 15, speedChange = -600, length = 9, spread = 3, effect = CONST_ME_ICEATTACK, target = false, duration = 10000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -310, maxDamage = -395, length = 9, spread = 3, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -210, maxDamage = -395, radius = 3, effect = CONST_ME_ICEAREA, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -280, length = 8, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -280, length = 8, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 64, armor = 52, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/bosses/kalyassa.lua b/data-otservbr-global/monster/quests/the_first_dragon/bosses/kalyassa.lua index 2ba6b9ad857..325943d41e7 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/bosses/kalyassa.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/bosses/kalyassa.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 95, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.bosstiary = { bossRaceId = 1389, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.FirstDragon.KalyassaTimer + storageCooldown = Storage.FirstDragon.KalyassaTimer, } monster.strategiesTarget = { @@ -55,19 +55,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 2, summons = { - { name = "Dragon Lord", chance = 20, interval = 2000, count = 2 } - } + { name = "Dragon Lord", chance = 20, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -89,7 +89,7 @@ monster.loot = { { id = 7365, chance = 26610, maxCount = 10 }, -- onyx arrow { id = 3280, chance = 25000 }, -- fire sword { id = 3051, chance = 25000 }, -- energy ring - { id = 5948, chance = 25000 } -- red dragon leather + { id = 5948, chance = 25000 }, -- red dragon leather } monster.attacks = { @@ -97,13 +97,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -110, maxDamage = -495, range = 7, radius = 5, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -310, maxDamage = -495, length = 9, spread = 4, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -710, maxDamage = -895, length = 9, spread = 3, effect = CONST_ME_FIREAREA, target = false }, - { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, target = true } + { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { defense = 70, armor = 45, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 400, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 400, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -116,14 +116,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/bosses/tazhadur.lua b/data-otservbr-global/monster/quests/the_first_dragon/bosses/tazhadur.lua index 6211212622c..630e29a8045 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/bosses/tazhadur.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/bosses/tazhadur.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 95, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -80,21 +80,21 @@ monster.loot = { { id = 5877, chance = 25000 }, -- green dragon leather { id = 24937, chance = 80000, maxCount = 2 }, -- dragon blood { id = 3275, chance = 25000 }, -- double axe - { id = 24940, chance = 100000 } -- tooth of tazhadur + { id = 24940, chance = 100000 }, -- tooth of tazhadur } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 112, attack = 85 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -110, maxDamage = -495, range = 7, radius = 5, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -310, maxDamage = -495, length = 9, spread = 4, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -710, maxDamage = -895, length = 9, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -710, maxDamage = -895, length = 9, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 64, armor = 52, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/bosses/zorvorax.lua b/data-otservbr-global/monster/quests/the_first_dragon/bosses/zorvorax.lua index 16bc889ae09..76129854014 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/bosses/zorvorax.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/bosses/zorvorax.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,13 +22,13 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.bosstiary = { bossRaceId = 1375, bossRace = RARITY_ARCHFOE, - storageCooldown = Storage.FirstDragon.ZorvoraxTimer + storageCooldown = Storage.FirstDragon.ZorvoraxTimer, } monster.strategiesTarget = { @@ -55,12 +55,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -82,7 +82,7 @@ monster.loot = { { id = 7430, chance = 25000 }, -- dragonbone staff { id = 8896, chance = 26670 }, -- slightly rusted armor { id = 6299, chance = 13330 }, -- death ring - { id = 10316, chance = 50000, maxCount = 2 } -- unholy bone + { id = 10316, chance = 50000, maxCount = 2 }, -- unholy bone } monster.attacks = { @@ -90,13 +90,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -650, range = 7, radius = 5, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_BLACKSMOKE, target = true }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_FIREDAMAGE, minDamage = -330, maxDamage = -805, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, { name = "undead dragon curse", interval = 2000, chance = 10, target = false }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -780, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -780, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, } monster.defenses = { defense = 64, armor = 52, - { name = "combat", interval = 2000, chance = 55, type = COMBAT_HEALING, minDamage = 450, maxDamage = 550, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 55, type = COMBAT_HEALING, minDamage = 450, maxDamage = 550, effect = CONST_ME_MAGIC_RED, target = false }, } monster.elements = { @@ -109,14 +109,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/dragon_essence.lua b/data-otservbr-global/monster/quests/the_first_dragon/dragon_essence.lua index c0dd56d79a8..629b187cf93 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/dragon_essence.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/dragon_essence.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -62,14 +62,13 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 80, attack = 110 }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_FIREDAMAGE, minDamage = -850, maxDamage = -1250, length = 8, spread = 3, effect = CONST_ME_ICEAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -450, maxDamage = -720, range = 7, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -750, maxDamage = -880, length = 8, spread = 3, effect = CONST_ME_HITBYFIRE, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -750, maxDamage = -880, length = 8, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { @@ -77,7 +76,7 @@ monster.defenses = { armor = 22, -- mitigation = ???, { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 8, speedChange = 262, effect = CONST_ME_MAGIC_RED, target = false, duration = 7000 } + { name = "speed", interval = 2000, chance = 8, speedChange = 262, effect = CONST_ME_MAGIC_RED, target = false, duration = 7000 }, } monster.elements = { @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/dragon_warden.lua b/data-otservbr-global/monster/quests/the_first_dragon/dragon_warden.lua index 6c694ac81e5..bcd06b161cb 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/dragon_warden.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/dragon_warden.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 8, lookFeet = 8, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.flags = { @@ -55,19 +55,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 80, attack = 80 }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -230, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -230, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 35, armor = 45, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 70, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 70, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -87,7 +86,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/dragon_wrath.lua b/data-otservbr-global/monster/quests/the_first_dragon/dragon_wrath.lua index 8c82b91dc9e..118c173b807 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/dragon_wrath.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/dragon_wrath.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 7800 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.flags = { @@ -42,12 +42,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -55,8 +55,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 80, attack = 100 }, @@ -66,13 +65,13 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -920, maxDamage = -1260, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "ghastly dragon paralyze", interval = 2000, chance = 9, range = 7, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -250, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -180, radius = 4, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -180, radius = 4, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 35, armor = 45, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 70, maxDamage = 300, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 70, maxDamage = 300, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -85,14 +84,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 50 }, { type = COMBAT_HOLYDAMAGE, percent = -15 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/haunted_dragon.lua b/data-otservbr-global/monster/quests/the_first_dragon/haunted_dragon.lua index b7d75fafb67..9f1f11a2cdf 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/haunted_dragon.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/haunted_dragon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1376 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 2, - Locations = "The First Dragons Lair, fourth floor." + Locations = "The First Dragons Lair, fourth floor.", } monster.health = 6500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,7 +93,7 @@ monster.loot = { { name = "skullcracker armor", chance = 290 }, { name = "gold ingot", chance = 570 }, { name = "unholy bone", chance = 33380 }, - { name = "spellweaver's robe", chance = 860 } + { name = "spellweaver's robe", chance = 860 }, } monster.attacks = { @@ -105,14 +105,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -690, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "undead dragon curse", interval = 2000, chance = 10, target = false } + { name = "undead dragon curse", interval = 2000, chance = 10, target = false }, } monster.defenses = { defense = 40, armor = 58, mitigation = 1.60, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/ice_dragon.lua b/data-otservbr-global/monster/quests/the_first_dragon/ice_dragon.lua index 6b41a6c7dc9..2a442a8d98e 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/ice_dragon.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/ice_dragon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1380 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "The First Dragon's Lair." + Locations = "The First Dragon's Lair.", } monster.health = 2500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -80,7 +80,7 @@ monster.loot = { { id = 3583, chance = 80020, maxCount = 2 }, -- dragon ham { id = 762, chance = 78200, maxCount = 10 }, -- shiver arrow { id = 238, chance = 40200, maxCount = 2 }, -- great mana potion - { id = 3029, chance = 52100, }, -- small sapphire + { id = 3029, chance = 52100 }, -- small sapphire { id = 24937, chance = 18680 }, -- dragon blood { id = 24938, chance = 11400 }, -- dragon tongue { id = 3051, chance = 49900 }, -- energy ring @@ -91,7 +91,7 @@ monster.loot = { { id = 815, chance = 540 }, -- glacier amulet { id = 3061, chance = 540 }, -- life crystal { id = 7290, chance = 1090 }, -- shard - { id = 3386, chance = 330 } -- dragon scale mail + { id = 3386, chance = 330 }, -- dragon scale mail } monster.attacks = { @@ -99,13 +99,13 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 18, minDamage = 0, maxDamage = -400, range = 7, radius = 4, effect = CONST_ME_ICETORNADO, target = true, duration = 20000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -120, range = 7, radius = 3, effect = CONST_ME_ICETORNADO, target = false }, { name = "speed", interval = 2000, chance = 12, minDamage = 0, maxDamage = -400, length = 7, spread = 3, effect = CONST_ME_ICEATTACK, target = false, duration = 20000 }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -380, length = 8, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -380, length = 8, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 35, armor = 22, - { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -118,14 +118,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/somewhat_beatable.lua b/data-otservbr-global/monster/quests/the_first_dragon/somewhat_beatable.lua index a602ecee611..8829b1415d9 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/somewhat_beatable.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/somewhat_beatable.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 3000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -49,16 +49,16 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "Somewhat Beatable Death" + "Somewhat Beatable Death", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -66,19 +66,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 40 }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -140, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 2000, chance = 11, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -170, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 11, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -170, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 38, armor = 25, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 13, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -91,14 +90,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/spirit_of_fertility.lua b/data-otservbr-global/monster/quests/the_first_dragon/spirit_of_fertility.lua index d9d82cc36a3..bcac9e311b8 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/spirit_of_fertility.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/spirit_of_fertility.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1250 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 3 + chance = 3, } monster.strategiesTarget = { @@ -62,19 +62,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 60, condition = { type = CONDITION_POISON, totalDamage = 300, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_DROWNDAMAGE, minDamage = -130, maxDamage = -250, radius = 5, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 2000, chance = 17, type = COMBAT_DROWNDAMAGE, minDamage = -130, maxDamage = -250, radius = 5, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { defense = 30, armor = 30, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 60, maxDamage = 75, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 60, maxDamage = 75, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_first_dragon/unbeatable_dragon.lua b/data-otservbr-global/monster/quests/the_first_dragon/unbeatable_dragon.lua index 21926d39e41..5925b7f1973 100644 --- a/data-otservbr-global/monster/quests/the_first_dragon/unbeatable_dragon.lua +++ b/data-otservbr-global/monster/quests/the_first_dragon/unbeatable_dragon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1900 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -62,20 +62,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 82 }, { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -200, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -230, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -230, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 48, armor = 32, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 55, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 55, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/a_carved_stone_tile.lua b/data-otservbr-global/monster/quests/the_inquisition/a_carved_stone_tile.lua index 2a556db2f61..dd0a7c14191 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/a_carved_stone_tile.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/a_carved_stone_tile.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a carved stone tile" monster.experience = 0 monster.outfit = { - lookTypeEx = 516 + lookTypeEx = 516, } monster.health = 100 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 16 + chance = 16, } monster.strategiesTarget = { @@ -40,19 +40,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 5, summons = { - { name = "Dreadbeast", chance = 25, interval = 2000, count = 5 } - } + { name = "Dreadbeast", chance = 25, interval = 2000, count = 5 }, + }, } monster.voices = { @@ -60,12 +60,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -78,14 +77,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/annihilon.lua b/data-otservbr-global/monster/quests/the_inquisition/annihilon.lua index bbb3bb7dc7f..e35249ea832 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/annihilon.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/annihilon.lua @@ -10,12 +10,12 @@ monster.outfit = { lookLegs = 77, lookFeet = 77, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { bossRaceId = 418, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.health = 46500 @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -109,7 +109,7 @@ monster.loot = { { name = "obsidian truncheon", chance = 1234 }, { id = 8894, chance = 1234 }, -- heavily rusted armor { id = 8896, chance = 50000 }, -- slightly rusted armor - { name = "gold ingot", chance = 20000 } + { name = "gold ingot", chance = 20000 }, } monster.attacks = { @@ -117,7 +117,7 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 11, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -700, radius = 4, effect = CONST_ME_ICEAREA, target = false }, { name = "combat", interval = 3000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = -50, maxDamage = -255, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -600, radius = 6, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -600, radius = 6, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { @@ -125,7 +125,7 @@ monster.defenses = { armor = 60, -- mitigation = ???, { name = "combat", interval = 1000, chance = 14, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "speed", interval = 1000, chance = 4, speedChange = 500, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000 } + { name = "speed", interval = 1000, chance = 4, speedChange = 500, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000 }, } monster.elements = { @@ -145,7 +145,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/dreadbeast.lua b/data-otservbr-global/monster/quests/the_inquisition/dreadbeast.lua index c1a7859f233..8a864d9e20b 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/dreadbeast.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/dreadbeast.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 40, lookFeet = 50, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 800 monster.maxHealth = 800 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 800 monster.changeTarget = { interval = 60000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -70,21 +69,21 @@ monster.loot = { { name = "bone shield", chance = 1520 }, { name = "health potion", chance = 870 }, { name = "green mushroom", chance = 650 }, - { name = "hardened bone", chance = 650 } + { name = "hardened bone", chance = 650 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "dreadbeast skill reducer", interval = 3000, chance = 15, range = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_YELLOWENERGY, target = true }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -70, maxDamage = -90, range = 1, shootEffect = CONST_ANI_ICE, effect = CONST_ME_LOSEENERGY, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -250, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_PURPLEENERGY, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -250, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_PURPLEENERGY, target = true }, } monster.defenses = { defense = 36, armor = 34, -- mitigation = ???, - { name = "combat", interval = 5000, chance = 20, type = COMBAT_HEALING, minDamage = 35, maxDamage = 65, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 5000, chance = 20, type = COMBAT_HEALING, minDamage = 35, maxDamage = 65, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -104,7 +103,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/eye_of_the_seven.lua b/data-otservbr-global/monster/quests/the_inquisition/eye_of_the_seven.lua index 6813857a6d8..4a409d1a8ee 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/eye_of_the_seven.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/eye_of_the_seven.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 120 monster.maxHealth = 120 monster.race = "venom" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,16 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 2000, chance = 100, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, range = 7, shootEffect = CONST_ANI_ENERGY, target = false } + { name = "combat", interval = 2000, chance = 100, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, } monster.defenses = { defense = 1, - armor = 1 + armor = 1, -- mitigation = ???, } @@ -93,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/golgordan.lua b/data-otservbr-global/monster/quests/the_inquisition/golgordan.lua index f193d3c3fa7..7da1ca0e093 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/golgordan.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/golgordan.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 52, lookFeet = 91, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 7000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -98,7 +98,7 @@ monster.loot = { { id = 3033, chance = 15000, maxCount = 12 }, -- small amethyst { id = 3066, chance = 5000 }, -- snakebite rod { id = 3049, chance = 5000 }, -- stealth ring - { id = 3081, chance = 5000 } -- stone skin amulet + { id = 3081, chance = 5000 }, -- stone skin amulet } monster.attacks = { @@ -109,12 +109,12 @@ monster.attacks = { { name = "combat", interval = 3000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -600, range = 4, radius = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 1000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -50, maxDamage = -60, radius = 6, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 1000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -50, maxDamage = -60, radius = 6, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { defense = 54, - armor = 48 + armor = 48, -- mitigation = ???, } @@ -135,7 +135,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/hellgorak.lua b/data-otservbr-global/monster/quests/the_inquisition/hellgorak.lua index 86e658a3130..2fcb10ece1f 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/hellgorak.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/hellgorak.lua @@ -10,15 +10,14 @@ monster.outfit = { lookLegs = 3, lookFeet = 80, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { bossRaceId = 403, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } - monster.health = 25850 monster.maxHealth = 25850 monster.race = "blood" @@ -28,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -118,7 +117,7 @@ monster.loot = { { id = 8051, chance = 450 }, -- voltage armor { id = 8090, chance = 300 }, -- spellbook of dark mysteries { id = 3019, chance = 150 }, -- demonbone amulet - { id = 3303, chance = 100 } -- great axe + { id = 3303, chance = 100 }, -- great axe } monster.attacks = { @@ -126,14 +125,14 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 11, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -819, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_MANADRAIN, minDamage = -90, maxDamage = -500, radius = 5, effect = CONST_ME_STUN, target = false }, { name = "combat", interval = 1000, chance = 11, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -520, radius = 5, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -150, radius = 7, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -150, radius = 7, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 65, armor = 70, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 11, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 1000, chance = 11, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -153,7 +152,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/latrivan.lua b/data-otservbr-global/monster/quests/the_inquisition/latrivan.lua index 75381ca2dc8..9854d2060b4 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/latrivan.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/latrivan.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 118, lookFeet = 91, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 25000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 417, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -54,12 +54,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -68,7 +68,7 @@ monster.voices = { { text = "I might reward you for killing my brother ~ with a swift death!", yell = true }, { text = "Colateral damage is so fun!", yell = false }, { text = "Golgordan you fool!", yell = false }, - { text = "We are the brothers of fear!", yell = false } + { text = "We are the brothers of fear!", yell = false }, } monster.loot = { @@ -100,7 +100,7 @@ monster.loot = { { id = 3033, chance = 15000, maxCount = 12 }, -- small amethyst { id = 3066, chance = 5000 }, -- snakebite rod { id = 3049, chance = 5000 }, -- stealth ring - { id = 3081, chance = 5000 } -- stone skin amulet + { id = 3081, chance = 5000 }, -- stone skin amulet } monster.attacks = { @@ -108,12 +108,12 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -850, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -250, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -600, range = 4, radius = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -200, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -200, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 45, - armor = 35 + armor = 35, } monster.elements = { @@ -126,14 +126,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -1 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/madareth.lua b/data-otservbr-global/monster/quests/the_inquisition/madareth.lua index 71038bd9de1..344609d71bf 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/madareth.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/madareth.lua @@ -10,12 +10,12 @@ monster.outfit = { lookLegs = 80, lookFeet = 79, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { bossRaceId = 414, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.health = 75000 @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -113,7 +113,7 @@ monster.loot = { { id = 3097, chance = 4700 }, -- dwarven ring { id = 3284, chance = 4700 }, -- ice rapier { id = 7386, chance = 4700 }, -- mercenary sword - { id = 3091, chance = 4700 } -- sword ring + { id = 3091, chance = 4700 }, -- sword ring } monster.attacks = { @@ -121,14 +121,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -180, maxDamage = -660, radius = 4, effect = CONST_ME_PURPLEENERGY, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -600, maxDamage = -850, length = 5, spread = 2, effect = CONST_ME_BLACKSMOKE, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -200, radius = 4, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -250, radius = 5, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -250, radius = 5, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { defense = 46, armor = 48, -- mitigation = ???, - { name = "combat", interval = 3000, chance = 14, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 3000, chance = 14, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -148,7 +148,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/the_count.lua b/data-otservbr-global/monster/quests/the_inquisition/the_count.lua index 17bbcb0e2a4..61433ce02b8 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/the_count.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/the_count.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1250 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "Banshee", chance = 50, interval = 4000, count = 1 } - } + { name = "Banshee", chance = 50, interval = 4000, count = 1 }, + }, } monster.voices = { @@ -72,12 +72,12 @@ monster.voices = { monster.loot = { { id = 3031, chance = 40000, maxCount = 98 }, -- gold coin { id = 7924, chance = 100000 }, -- ring of the count - { id = 3279, chance = 2300 } -- war hammer + { id = 3279, chance = 2300 }, -- war hammer } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -80, maxDamage = -135 }, - { name = "combat", interval = 1000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -300, radius = 4, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 1000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -300, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -85,7 +85,7 @@ monster.defenses = { armor = 30, -- mitigation = ???, { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 100, maxDamage = 195, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 3000, chance = 30, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 3000, chance = 30, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/the_weakened_count.lua b/data-otservbr-global/monster/quests/the_inquisition/the_weakened_count.lua index df335c36474..e3a2685163f 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/the_weakened_count.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/the_weakened_count.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 740 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,12 +65,12 @@ monster.voices = { monster.loot = { { id = 3031, chance = 40000, maxCount = 98 }, -- gold coin - { id = 7924, chance = 100000 } -- ring of the count + { id = 7924, chance = 100000 }, -- ring of the count } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -50, maxDamage = -75 }, - { name = "combat", interval = 1000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -100, radius = 4, effect = CONST_ME_SMALLCLOUDS, target = false } + { name = "combat", interval = 1000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -100, radius = 4, effect = CONST_ME_SMALLCLOUDS, target = false }, } monster.defenses = { @@ -78,7 +78,7 @@ monster.defenses = { armor = 30, -- mitigation = ???, { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 105, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 3000, chance = 30, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 3000, chance = 30, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -98,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/ungreez.lua b/data-otservbr-global/monster/quests/the_inquisition/ungreez.lua index 579fa49aad8..be3f10a6e37 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/ungreez.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/ungreez.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -68,7 +68,7 @@ monster.loot = { { id = 3031, chance = 21000, maxCount = 90 }, -- gold coin { id = 3731, chance = 10000, maxCount = 6 }, -- fire mushroom { id = 238, chance = 20000 }, -- great mana potion - { id = 239, chance = 20000 } -- great health potion + { id = 239, chance = 20000 }, -- great health potion } monster.attacks = { @@ -76,14 +76,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 13, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -110, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = false }, { name = "combat", interval = 1000, chance = 14, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -380, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -380, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, } monster.defenses = { defense = 55, armor = 55, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -103,7 +103,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/ushuriel.lua b/data-otservbr-global/monster/quests/the_inquisition/ushuriel.lua index 1cf52175d66..25b14bd6298 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/ushuriel.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/ushuriel.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 80, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 31500 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 415, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -54,12 +54,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -68,7 +68,7 @@ monster.voices = { { text = "You can't run or hide forever!", yell = false }, { text = "I'm the executioner of the Seven!", yell = false }, { text = "The final punishment awaits you!", yell = false }, - { text = "The judgement is guilty! The sentence is death!", yell = false } + { text = "The judgement is guilty! The sentence is death!", yell = false }, } monster.loot = { @@ -106,7 +106,7 @@ monster.loot = { { name = "great spirit potion", chance = 20000 }, { name = "ultimate health potion", chance = 20000 }, { id = 8894, chance = 20000 }, -- heavily rusted armor - { name = "gold ingot", chance = 16666 } + { name = "gold ingot", chance = 16666 }, } monster.attacks = { @@ -117,14 +117,14 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 8, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -430, radius = 6, effect = CONST_ME_ICETORNADO, target = false }, { name = "drunk", interval = 3000, chance = 11, radius = 6, effect = CONST_ME_SOUND_PURPLE, target = false }, -- energy damage - { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 15, minDamage = -250, maxDamage = -250, radius = 4, effect = CONST_ME_ENERGYHIT, target = false } + { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 15, minDamage = -250, maxDamage = -250, radius = 4, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { defense = 45, armor = 50, { name = "combat", interval = 1000, chance = 12, type = COMBAT_HEALING, minDamage = 400, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "speed", interval = 1000, chance = 4, speedChange = 400, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000 } + { name = "speed", interval = 1000, chance = 4, speedChange = 400, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 7000 }, } monster.elements = { @@ -137,14 +137,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 30 }, { type = COMBAT_HOLYDAMAGE, percent = 25 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_inquisition/zugurosh.lua b/data-otservbr-global/monster/quests/the_inquisition/zugurosh.lua index ae1eae647ad..796346d7a31 100644 --- a/data-otservbr-global/monster/quests/the_inquisition/zugurosh.lua +++ b/data-otservbr-global/monster/quests/the_inquisition/zugurosh.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 91, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -97,7 +97,7 @@ monster.loot = { { id = 3079, chance = 8700 }, -- boots of haste { id = 3057, chance = 6000 }, -- amulet of loss { id = 3554, chance = 4500 }, -- steel boots - { id = 3555, chance = 1500 } -- golden boots + { id = 3555, chance = 1500 }, -- golden boots } monster.attacks = { @@ -107,7 +107,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -100, radius = 4, effect = CONST_ME_SMALLCLOUDS, target = false }, -- fire { name = "condition", type = CONDITION_FIRE, interval = 3000, chance = 20, minDamage = -10, maxDamage = -10, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "combat", interval = 1000, chance = 13, type = COMBAT_MANADRAIN, minDamage = -60, maxDamage = -200, radius = 5, effect = CONST_ME_WATERSPLASH, target = false } + { name = "combat", interval = 1000, chance = 13, type = COMBAT_MANADRAIN, minDamage = -60, maxDamage = -200, radius = 5, effect = CONST_ME_WATERSPLASH, target = false }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 400, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "invisible", interval = 1000, chance = 5, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 1000, chance = 5, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -136,7 +136,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/baron_brute.lua b/data-otservbr-global/monster/quests/the_new_frontier/baron_brute.lua index b2a439a2ac4..57d0c411f7a 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/baron_brute.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/baron_brute.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5025 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,16 +63,15 @@ monster.voices = { { text = "Mash'n!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -474 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -474 }, } monster.defenses = { defense = 35, - armor = 22 + armor = 22, -- mitigation = ???, } @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/coldheart.lua b/data-otservbr-global/monster/quests/the_new_frontier/coldheart.lua index ab0ea79dcd6..d53f2b53945 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/coldheart.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/coldheart.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 7000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 9 + chance = 9, } monster.strategiesTarget = { @@ -62,17 +62,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 100, attack = 40 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -710, length = 8, spread = 3, effect = CONST_ME_ICEAREA, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -710, length = 8, spread = 3, effect = CONST_ME_ICEAREA, target = false }, } monster.defenses = { defense = 26, - armor = 25 + armor = 25, -- mitigation = ???, } @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/doomhowl.lua b/data-otservbr-global/monster/quests/the_new_frontier/doomhowl.lua index 61e313b3dbf..ee20fda8469 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/doomhowl.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/doomhowl.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,20 +62,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -645, radius = 3, target = false }, - { name = "combat", interval = 4000, chance = 20, type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_SOUND_GREEN, target = false } + { name = "combat", interval = 4000, chance = 20, type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_SOUND_GREEN, target = false }, } monster.defenses = { defense = 55, armor = 50, -- mitigation = ???, - { name = "speed", interval = 2000, chance = 10, speedChange = 390, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 2000, chance = 10, speedChange = 390, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/dreadwing.lua b/data-otservbr-global/monster/quests/the_new_frontier/dreadwing.lua index 554db57fd45..f1d07b28430 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/dreadwing.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/dreadwing.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,8 +63,7 @@ monster.voices = { { text = "More blood! More!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240, condition = { type = CONDITION_POISON, totalDamage = 6, interval = 4000 } }, @@ -72,14 +71,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -130, maxDamage = -237, radius = 6, effect = CONST_ME_SOUND_WHITE, target = false }, { name = "mutated bat curse", interval = 2000, chance = 10, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -12, maxDamage = -12, length = 4, spread = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -12, maxDamage = -12, length = 4, spread = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 30, armor = 30, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/fatality.lua b/data-otservbr-global/monster/quests/the_new_frontier/fatality.lua index 50a8a21b603..aa7afc27c3f 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/fatality.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/fatality.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,16 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 31, attack = 100 } + { name = "melee", interval = 2000, chance = 100, skill = 31, attack = 100 }, } monster.defenses = { defense = 19, - armor = 16 + armor = 16, -- mitigation = ???, } @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/haunter.lua b/data-otservbr-global/monster/quests/the_new_frontier/haunter.lua index 9d9b5faefc4..0f63b0fa5c4 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/haunter.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/haunter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 9 + chance = 9, } monster.strategiesTarget = { @@ -63,14 +63,13 @@ monster.voices = { { text = "Surrender and I'll end it quick.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 50 }, { name = "combat", interval = 2000, chance = 16, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -130, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 16, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 16, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, } monster.defenses = { @@ -78,7 +77,7 @@ monster.defenses = { armor = 25, -- mitigation = ???, { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 100, maxDamage = 155, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 16, speedChange = 360, effect = CONST_ME_MAGIC_RED, target = false, duration = 80000 } + { name = "speed", interval = 2000, chance = 16, speedChange = 360, effect = CONST_ME_MAGIC_RED, target = false, duration = 80000 }, } monster.elements = { @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/incineron.lua b/data-otservbr-global/monster/quests/the_new_frontier/incineron.lua index ca6654cdfc3..26fdfc021ab 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/incineron.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/incineron.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 7000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 9 + chance = 9, } monster.strategiesTarget = { @@ -62,17 +62,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "combat", interval = 2000, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -700, maxDamage = -1025, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -395, range = 7, radius = 7, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -395, range = 7, radius = 7, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 25, - armor = 25 + armor = 25, -- mitigation = ???, } @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/menace.lua b/data-otservbr-global/monster/quests/the_new_frontier/menace.lua index a9fca0a9605..1dcd1c8b4b7 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/menace.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/menace.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 6000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 9 + chance = 9, } monster.strategiesTarget = { @@ -62,16 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 33, attack = 100 } + { name = "melee", interval = 2000, chance = 100, skill = 33, attack = 100 }, } monster.defenses = { defense = 19, - armor = 16 + armor = 16, -- mitigation = ???, } @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/mooh'tah_master.lua b/data-otservbr-global/monster/quests/the_new_frontier/mooh'tah_master.lua index bb85b5fa95a..313663c5052 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/mooh'tah_master.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/mooh'tah_master.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 185 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -49,33 +49,32 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Kirll Karrrl!", yell = false }, - { text = "Kaplar!", yell = false } + { text = "Kaplar!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "energy beam", interval = 2000, chance = 10, minDamage = 0, maxDamage = -500, range = 1, target = false }, - { name = "berserk", interval = 2000, chance = 10, minDamage = 0, maxDamage = -100, range = 1, target = false } + { name = "berserk", interval = 2000, chance = 10, minDamage = 0, maxDamage = -100, range = 1, target = false }, } monster.defenses = { defense = 20, - armor = 20 + armor = 20, } monster.elements = { @@ -88,14 +87,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/rocko.lua b/data-otservbr-global/monster/quests/the_new_frontier/rocko.lua index 6c1124759fe..e97146a7a94 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/rocko.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/rocko.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 9 + chance = 9, } monster.strategiesTarget = { @@ -62,18 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 28, attack = 100 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -125, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -411, length = 8, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -411, length = 8, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { defense = 18, - armor = 10 + armor = 10, -- mitigation = ???, } @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/shard_of_corruption.lua b/data-otservbr-global/monster/quests/the_new_frontier/shard_of_corruption.lua index 8318639bc18..a818d413269 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/shard_of_corruption.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/shard_of_corruption.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 600 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,17 +62,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -115, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -115, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = true }, } monster.defenses = { defense = 20, - armor = 20 + armor = 20, -- mitigation = ???, } @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/the_axeorcist.lua b/data-otservbr-global/monster/quests/the_new_frontier/the_axeorcist.lua index 2b4db2f2689..c1fa7e81526 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/the_axeorcist.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/the_axeorcist.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 5100 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 9 + chance = 9, } monster.strategiesTarget = { @@ -49,34 +49,33 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "DEESTRUCTIOON!", yell = true }, - { text = "Blood! Carnage! Muhahaha!", yell = true } + { text = "Blood! Carnage! Muhahaha!", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -276 }, { name = "combat", interval = 3000, chance = 34, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -230, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { defense = 15, armor = 15, - { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -89,14 +88,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/the_dreadorian.lua b/data-otservbr-global/monster/quests/the_new_frontier/the_dreadorian.lua index f63381cb166..acd4a2b9e0d 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/the_dreadorian.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/the_dreadorian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 9000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -62,18 +62,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 64, attack = 100 } + { name = "melee", interval = 2000, chance = 100, skill = 64, attack = 100 }, } monster.defenses = { defense = 35, armor = 25, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/tirecz.lua b/data-otservbr-global/monster/quests/the_new_frontier/tirecz.lua index 0bc2e1e55ac..8bd994210c8 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/tirecz.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/tirecz.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 25000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -63,8 +63,7 @@ monster.voices = { { text = "Hissss!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 72, attack = 100 }, @@ -72,12 +71,12 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 25, type = COMBAT_FIREDAMAGE, minDamage = -120, maxDamage = -460, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -290, radius = 3, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 3000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -80, maxDamage = -345, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -370, radius = 7, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -370, radius = 7, target = false }, } monster.defenses = { defense = 19, - armor = 16 + armor = 16, -- mitigation = ???, } @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_new_frontier/tremorak.lua b/data-otservbr-global/monster/quests/the_new_frontier/tremorak.lua index e9d4cac53dc..d79f167b6d9 100644 --- a/data-otservbr-global/monster/quests/the_new_frontier/tremorak.lua +++ b/data-otservbr-global/monster/quests/the_new_frontier/tremorak.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -63,22 +63,21 @@ monster.voices = { { text = "*STOMP STOMP*", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 36, attack = 50 }, { name = "combat", interval = 2000, chance = 16, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -255, radius = 7, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 16, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -405, length = 8, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 16, range = 7, shootEffect = CONST_ANI_POISON, target = true } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 16, range = 7, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { defense = 30, armor = 30, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 75, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 75, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_order_of_lion/bosses/ancient_lion_archer.lua b/data-otservbr-global/monster/quests/the_order_of_lion/bosses/ancient_lion_archer.lua index ef2c5660ae0..5524e08ebf5 100644 --- a/data-otservbr-global/monster/quests/the_order_of_lion/bosses/ancient_lion_archer.lua +++ b/data-otservbr-global/monster/quests/the_order_of_lion/bosses/ancient_lion_archer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 57, lookFeet = 57, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 9000 @@ -25,7 +25,7 @@ monster.enemyFactions = { FACTION_LIONUSURPERS } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -66,7 +66,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, range = 7, shootEffect = CONST_ANI_BURSTARROW, target = true }, { name = "combat", interval = 6000, chance = 22, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -500, range = 7, radius = 4, effect = CONST_ME_HOLYAREA, target = true }, { name = "combat", interval = 4000, chance = 12, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -500, range = 7, effect = CONST_ME_HOLYDAMAGE, target = true }, - { name = "combat", interval = 4000, chance = 17, type = COMBAT_ICEDAMAGE, minDamage = -400, maxDamage = -500, radius = 3, effect = CONST_ME_ICEAREA, target = false } + { name = "combat", interval = 4000, chance = 17, type = COMBAT_ICEDAMAGE, minDamage = -400, maxDamage = -500, radius = 3, effect = CONST_ME_ICEAREA, target = false }, } monster.defenses = { @@ -92,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_order_of_lion/bosses/ancient_lion_knight.lua b/data-otservbr-global/monster/quests/the_order_of_lion/bosses/ancient_lion_knight.lua index 6cfdf957b72..9118397f72b 100644 --- a/data-otservbr-global/monster/quests/the_order_of_lion/bosses/ancient_lion_knight.lua +++ b/data-otservbr-global/monster/quests/the_order_of_lion/bosses/ancient_lion_knight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 76, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 9100 @@ -25,7 +25,7 @@ monster.enemyFactions = { FACTION_LION, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,7 +92,7 @@ monster.loot = { { name = "lion spellbook", chance = 35 }, { name = "lion wand", chance = 35 }, { name = "lion amulet", chance = 35 }, - { name = "lion rod", chance = 35 } + { name = "lion rod", chance = 35 }, } monster.attacks = { @@ -101,14 +101,14 @@ monster.attacks = { { name = "combat", interval = 2750, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -800, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2500, chance = 22, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -500, radius = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 3300, chance = 24, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -350, length = 4, spread = 0, effect = CONST_ME_ICEATTACK, target = false }, - { name = "combat", interval = 3000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -500, radius = 4, effect = CONST_ME_BIGCLOUDS, target = false } + { name = "combat", interval = 3000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -500, radius = 4, effect = CONST_ME_BIGCLOUDS, target = false }, } monster.defenses = { defense = 60, armor = 0, -- mitigation = ???, - { name = "speed", interval = 1000, chance = 10, speedChange = 160, effect = CONST_ME_POFF, target = false, duration = 4000 } + { name = "speed", interval = 1000, chance = 10, speedChange = 160, effect = CONST_ME_POFF, target = false, duration = 4000 }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onAppear = function(monster, creature) diff --git a/data-otservbr-global/monster/quests/the_order_of_lion/bosses/ancient_lion_warlock.lua b/data-otservbr-global/monster/quests/the_order_of_lion/bosses/ancient_lion_warlock.lua index 32009d3f7dc..b1c51189b70 100644 --- a/data-otservbr-global/monster/quests/the_order_of_lion/bosses/ancient_lion_warlock.lua +++ b/data-otservbr-global/monster/quests/the_order_of_lion/bosses/ancient_lion_warlock.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 96, lookFeet = 76, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 8500 @@ -25,7 +25,7 @@ monster.enemyFactions = { FACTION_LIONUSURPERS } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -66,7 +66,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 6000, chance = 22, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -500, range = 7, radius = 4, effect = CONST_ME_HOLYAREA, target = true }, { name = "combat", interval = 6000, chance = 12, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -500, range = 7, effect = CONST_ME_HOLYDAMAGE, target = true }, - { name = "combat", interval = 4000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -450, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true } -- avalanche + { name = "combat", interval = 4000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -450, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, -- avalanche } monster.defenses = { @@ -92,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_order_of_lion/bosses/drume.lua b/data-otservbr-global/monster/quests/the_order_of_lion/bosses/drume.lua index 94d89f2191d..9e948327bbb 100644 --- a/data-otservbr-global/monster/quests/the_order_of_lion/bosses/drume.lua +++ b/data-otservbr-global/monster/quests/the_order_of_lion/bosses/drume.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 57, lookFeet = 114, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -34,13 +34,13 @@ monster.summon = { summons = { { name = "preceptor lazare", chance = 10, interval = 8000, count = 1 }, { name = "grand commander soeren", chance = 10, interval = 8000, count = 1 }, - { name = "grand chaplain gaunder", chance = 10, interval = 8000, count = 1 } - } + { name = "grand chaplain gaunder", chance = 10, interval = 8000, count = 1 }, + }, } monster.changeTarget = { interval = 4000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -123,7 +123,7 @@ monster.loot = { { name = "lion spellbook", chance = 350 }, { name = "lion wand", chance = 300 }, { name = "lion amulet", chance = 300 }, - { name = "lion rod", chance = 300 } + { name = "lion rod", chance = 300 }, } monster.attacks = { @@ -132,14 +132,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -800, maxDamage = -1200, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 22, type = COMBAT_DEATHDAMAGE, minDamage = -800, maxDamage = -1000, radius = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 24, type = COMBAT_ICEDAMAGE, minDamage = -700, maxDamage = -900, length = 4, spread = 0, effect = CONST_ME_ICEATTACK, target = false }, - { name = "singlecloudchain", interval = 2000, chance = 34, minDamage = -600, maxDamage = -1100, range = 4, effect = CONST_ME_ENERGYHIT, target = true } + { name = "singlecloudchain", interval = 2000, chance = 34, minDamage = -600, maxDamage = -1100, range = 4, effect = CONST_ME_ENERGYHIT, target = true }, } monster.defenses = { defense = 60, armor = 82, -- mitigation = ???, - { name = "combat", interval = 4000, chance = 40, type = COMBAT_HEALING, minDamage = 300, maxDamage = 800, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 40, type = COMBAT_HEALING, minDamage = 300, maxDamage = 800, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -159,7 +159,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onAppear = function(monster, creature) diff --git a/data-otservbr-global/monster/quests/the_order_of_lion/bosses/kesar.lua b/data-otservbr-global/monster/quests/the_order_of_lion/bosses/kesar.lua index 1a4f9719101..064693747fa 100644 --- a/data-otservbr-global/monster/quests/the_order_of_lion/bosses/kesar.lua +++ b/data-otservbr-global/monster/quests/the_order_of_lion/bosses/kesar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 21, lookFeet = 21, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 35000 @@ -25,7 +25,7 @@ monster.enemyFactions = { FACTION_LIONUSURPERS } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -750, effect = CONST_ME_DRAWBLOOD }, @@ -72,7 +71,7 @@ monster.attacks = { { name = "singledeathchain", interval = 4000, chance = 15, minDamage = -250, maxDamage = -530, range = 5, effect = CONST_ME_MORTAREA, target = true }, { name = "singleicechain", interval = 4000, chance = 18, minDamage = -150, maxDamage = -450, range = 5, effect = CONST_ME_ICEATTACK, target = true }, { name = "combat", interval = 3300, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -350, length = 4, spread = 0, effect = CONST_ME_ICEATTACK, target = false }, - { name = "singlecloudchain", interval = 6000, chance = 17, minDamage = -200, maxDamage = -450, range = 4, effect = CONST_ME_ENERGYHIT, target = true } + { name = "singlecloudchain", interval = 6000, chance = 17, minDamage = -200, maxDamage = -450, range = 4, effect = CONST_ME_ENERGYHIT, target = true }, } monster.defenses = { @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_order_of_lion/lion_commander.lua b/data-otservbr-global/monster/quests/the_order_of_lion/lion_commander.lua index 6a83294da2e..9a5cd22c729 100644 --- a/data-otservbr-global/monster/quests/the_order_of_lion/lion_commander.lua +++ b/data-otservbr-global/monster/quests/the_order_of_lion/lion_commander.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 24, lookFeet = 78, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 8500 @@ -25,7 +25,7 @@ monster.enemyFactions = { FACTION_LIONUSURPERS } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,8 +62,8 @@ monster.summon = { summons = { { name = "lion archer", chance = 0, interval = 600000, count = 2 }, { name = "lion knight", chance = 0, interval = 600000, count = 2 }, - { name = "lion warlock", chance = 0, interval = 600000, count = 2 } - } + { name = "lion warlock", chance = 0, interval = 600000, count = 2 }, + }, } monster.voices = { @@ -71,8 +71,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550, effect = CONST_ME_DRAWBLOOD }, @@ -84,7 +83,7 @@ monster.attacks = { monster.defenses = { defense = 86, - armor = 86 + armor = 86, -- mitigation = ???, } @@ -105,11 +104,13 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onAppear = function(monster, creature) - if monster ~= creature then return true end + if monster ~= creature then + return true + end for i = 1, 5 do local sum = Game.createMonster(monster:getType():getSummonList()[math.random(1, #monster:getType():getSummonList())].name, monster:getPosition(), true) if sum then diff --git a/data-otservbr-global/monster/quests/the_order_of_lion/usurper_commander.lua b/data-otservbr-global/monster/quests/the_order_of_lion/usurper_commander.lua index 3c1e72f7d8d..ca4c5b36b62 100644 --- a/data-otservbr-global/monster/quests/the_order_of_lion/usurper_commander.lua +++ b/data-otservbr-global/monster/quests/the_order_of_lion/usurper_commander.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 40, lookFeet = 95, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 8500 @@ -25,7 +25,7 @@ monster.enemyFactions = { FACTION_LION, FACTION_PLAYER } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -33,7 +33,7 @@ monster.strategiesTarget = { } monster.events = { - "usurperCommanderDeath" + "usurperCommanderDeath", } monster.flags = { @@ -66,8 +66,8 @@ monster.summon = { summons = { { name = "hardened usurper archer", chance = 0, interval = 600000, count = 2 }, { name = "hardened usurper warlock", chance = 0, interval = 600000, count = 2 }, - { name = "hardened usurper knight", chance = 0, interval = 600000, count = 2 } - } + { name = "hardened usurper knight", chance = 0, interval = 600000, count = 2 }, + }, } monster.voices = { @@ -76,8 +76,7 @@ monster.voices = { { text = "FORMATION!", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500, effect = CONST_ME_DRAWBLOOD }, @@ -89,7 +88,7 @@ monster.attacks = { monster.defenses = { defense = 86, - armor = 86 + armor = 86, -- mitigation = ???, } @@ -110,11 +109,13 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onAppear = function(monster, creature) - if monster ~= creature then return true end + if monster ~= creature then + return true + end local sum for i = 1, 5 do sum = Game.createMonster(monster:getType():getSummonList()[math.random(1, #monster:getType():getSummonList())].name, monster:getPosition(), true) diff --git a/data-otservbr-global/monster/quests/the_percht_queens_island/baleful_bunny.lua b/data-otservbr-global/monster/quests/the_percht_queens_island/baleful_bunny.lua index 312f4eea7ac..d35db5b1c6c 100644 --- a/data-otservbr-global/monster/quests/the_percht_queens_island/baleful_bunny.lua +++ b/data-otservbr-global/monster/quests/the_percht_queens_island/baleful_bunny.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1742 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Percht Island" + Locations = "Percht Island", } monster.health = 500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -81,14 +81,14 @@ monster.loot = { { name = "lightning pendant", chance = 6820 }, { name = "strange talisman", chance = 5760 }, { name = "sacred tree amulet", chance = 2730 }, - { name = "yetislippers", chance = 450 } + { name = "yetislippers", chance = 450 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 1, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -150, radius = 4, effect = CONST_ME_POFF, target = true }, { name = "combat", interval = 2000, chance = 1, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -150, radius = 1, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 111, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -150, radius = 4, target = true } + { name = "combat", interval = 2000, chance = 111, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -150, radius = 4, target = true }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_percht_queens_island/bonny_bunny.lua b/data-otservbr-global/monster/quests/the_percht_queens_island/bonny_bunny.lua index 19a45b8e879..31f0973a229 100644 --- a/data-otservbr-global/monster/quests/the_percht_queens_island/bonny_bunny.lua +++ b/data-otservbr-global/monster/quests/the_percht_queens_island/bonny_bunny.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 19, lookFeet = 57, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,17 +59,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -150, length = 4, spread = 3, effect = CONST_ME_HEARTS, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -150, length = 4, spread = 3, effect = CONST_ME_HEARTS, target = false }, } monster.defenses = { defense = 40, - armor = 40 + armor = 40, -- mitigation = ???, } @@ -90,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_percht_queens_island/bright_percht_sleigh.lua b/data-otservbr-global/monster/quests/the_percht_queens_island/bright_percht_sleigh.lua index ebba1c03ad8..41dde35453b 100644 --- a/data-otservbr-global/monster/quests/the_percht_queens_island/bright_percht_sleigh.lua +++ b/data-otservbr-global/monster/quests/the_percht_queens_island/bright_percht_sleigh.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2300 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -59,12 +59,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 40, - armor = 79 + armor = 79, } monster.elements = { @@ -77,14 +76,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_percht_queens_island/cold_percht_sleigh.lua b/data-otservbr-global/monster/quests/the_percht_queens_island/cold_percht_sleigh.lua index 1ecc43e9821..e4af9f16313 100644 --- a/data-otservbr-global/monster/quests/the_percht_queens_island/cold_percht_sleigh.lua +++ b/data-otservbr-global/monster/quests/the_percht_queens_island/cold_percht_sleigh.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2300 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -59,12 +59,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 40, - armor = 79 + armor = 79, } monster.elements = { @@ -77,14 +76,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_percht_queens_island/dark_percht_sleigh.lua b/data-otservbr-global/monster/quests/the_percht_queens_island/dark_percht_sleigh.lua index 56a87bb23fb..b9ffe4f887b 100644 --- a/data-otservbr-global/monster/quests/the_percht_queens_island/dark_percht_sleigh.lua +++ b/data-otservbr-global/monster/quests/the_percht_queens_island/dark_percht_sleigh.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2300 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -59,12 +59,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 40, - armor = 79 + armor = 79, } monster.elements = { @@ -77,14 +76,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_percht_queens_island/percht.lua b/data-otservbr-global/monster/quests/the_percht_queens_island/percht.lua index 23c7cfabe05..0a13a064493 100644 --- a/data-otservbr-global/monster/quests/the_percht_queens_island/percht.lua +++ b/data-otservbr-global/monster/quests/the_percht_queens_island/percht.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 21, lookFeet = 20, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1740 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Percht Island" + Locations = "Percht Island", } monster.health = 620 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -83,7 +83,7 @@ monster.loot = { { name = "magma amulet", chance = 1320 }, { name = "magma coat", chance = 1320 }, { name = "magma monocle", chance = 950 }, - { name = "magma legs", chance = 510 } + { name = "magma legs", chance = 510 }, } monster.attacks = { @@ -92,7 +92,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 50, type = COMBAT_ICEDAMAGE, minDamage = -90, maxDamage = -250, length = 3, spread = 0, effect = CONST_ME_GIANTICE, target = false }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -250, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -250, length = 3, spread = 0, effect = CONST_ME_FIREATTACK, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -250, length = 3, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_percht_queens_island/percht_minion.lua b/data-otservbr-global/monster/quests/the_percht_queens_island/percht_minion.lua index 47118e0c8ab..250b4c29240 100644 --- a/data-otservbr-global/monster/quests/the_percht_queens_island/percht_minion.lua +++ b/data-otservbr-global/monster/quests/the_percht_queens_island/percht_minion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 55 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,16 +59,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, -- mitigation = ???, } @@ -89,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_percht_queens_island/schiach.lua b/data-otservbr-global/monster/quests/the_percht_queens_island/schiach.lua index 508ca6ba686..747e9604bb3 100644 --- a/data-otservbr-global/monster/quests/the_percht_queens_island/schiach.lua +++ b/data-otservbr-global/monster/quests/the_percht_queens_island/schiach.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 38, lookFeet = 57, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.raceId = 1741 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Percht Island" + Locations = "Percht Island", } monster.health = 600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -80,7 +80,7 @@ monster.loot = { { name = "percht horns", chance = 3960 }, { name = "bright bell", chance = 2920 }, { name = "glacier kilt", chance = 1180 }, - { name = "glacier robe", chance = 630 } + { name = "glacier robe", chance = 630 }, } monster.attacks = { @@ -89,7 +89,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 50, type = COMBAT_ICEDAMAGE, minDamage = -90, maxDamage = -250, length = 3, spread = 0, effect = CONST_ME_GIANTICE, target = false }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -250, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -250, length = 3, spread = 0, effect = CONST_ME_FIREATTACK, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -250, length = 3, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_percht_queens_island/the_percht_queen.lua b/data-otservbr-global/monster/quests/the_percht_queens_island/the_percht_queen.lua index 2f1e9dfe07f..774f2d2de37 100644 --- a/data-otservbr-global/monster/quests/the_percht_queens_island/the_percht_queen.lua +++ b/data-otservbr-global/monster/quests/the_percht_queens_island/the_percht_queen.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "The Percht Queen" monster.experience = 500 monster.outfit = { - lookTypeEx = 30340 -- (frozen) // lookTypeEx = 30341 (thawed) + lookTypeEx = 30340, -- (frozen) // lookTypeEx = 30341 (thawed) } monster.bosstiary = { @@ -21,7 +21,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -107,17 +107,17 @@ monster.loot = { { name = "abyss hammer", chance = 1480 }, { name = "golden bell", chance = 2548 }, { name = "golden cotton reel", chance = 1254 }, - { name = "lucky pig", chance = 2540 } + { name = "lucky pig", chance = 2540 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -200, range = 7, shootEffect = CONST_ANI_ICE, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -200, range = 7, shootEffect = CONST_ANI_ICE, target = false }, } monster.defenses = { defense = 40, - armor = 79 + armor = 79, -- mitigation = ???, } @@ -138,7 +138,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_percht_queens_island/warm_fire.lua b/data-otservbr-global/monster/quests/the_percht_queens_island/warm_fire.lua index 040436bbd5e..31ab6e14008 100644 --- a/data-otservbr-global/monster/quests/the_percht_queens_island/warm_fire.lua +++ b/data-otservbr-global/monster/quests/the_percht_queens_island/warm_fire.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,13 +59,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} - +monster.loot = {} monster.defenses = { defense = 15, - armor = 15 + armor = 15, -- mitigation = ???, } @@ -86,7 +84,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/biting_cold.lua b/data-otservbr-global/monster/quests/the_secret_library/biting_cold.lua index 539a30df9dc..188854deca0 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/biting_cold.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/biting_cold.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/bone_jaw.lua b/data-otservbr-global/monster/quests/the_secret_library/bone_jaw.lua index 446111f757a..9d4d97cd3e8 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/bone_jaw.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/bone_jaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -59,18 +59,17 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 33, - armor = 28 + armor = 28, } monster.elements = { @@ -83,14 +82,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/bosses/brokul.lua b/data-otservbr-global/monster/quests/the_secret_library/bosses/brokul.lua index ba82205ddba..727249e61d0 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/bosses/brokul.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/bosses/brokul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 1000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 5, summons = { - { name = "neutral deepling warrior", chance = 70, interval = 1000, count = 5 } - } + { name = "neutral deepling warrior", chance = 70, interval = 1000, count = 5 }, + }, } monster.voices = { @@ -85,7 +85,7 @@ monster.loot = { { id = 3039, chance = 2000 }, -- red gem { name = "deepling ceremonial dagger", chance = 200 }, { name = "deepling fork", chance = 200 }, - { name = "true book of death", chance = 70000 } + { name = "true book of death", chance = 70000 }, } monster.attacks = { @@ -94,7 +94,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -700, radius = 4, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -840, length = 8, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_HOLYAREA, target = false }, - { name = "combat", interval = 2000, chance = 29, type = COMBAT_ICEDAMAGE, minDamage = -300, maxDamage = -840, range = 7, radius = 4, effect = CONST_ME_FIREAREA, target = true } + { name = "combat", interval = 2000, chance = 29, type = COMBAT_ICEDAMAGE, minDamage = -300, maxDamage = -840, range = 7, radius = 4, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { @@ -102,7 +102,7 @@ monster.defenses = { armor = 86, -- mitigation = ???, { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "combat", interval = 3000, chance = 20, type = COMBAT_HEALING, minDamage = 500, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 3000, chance = 20, type = COMBAT_HEALING, minDamage = 500, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -122,11 +122,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -134,13 +133,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/bosses/ghulosh.lua b/data-otservbr-global/monster/quests/the_secret_library/bosses/ghulosh.lua index e0bfcc99df8..789d59fc8fd 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/bosses/ghulosh.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/bosses/ghulosh.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 18, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 4 + chance = 4, } monster.strategiesTarget = { @@ -96,7 +96,7 @@ monster.loot = { { id = 8906, chance = 1000 }, -- heavily rusted helmet { name = "epaulette", chance = 500 }, { name = "giant emerald", chance = 500 }, - { name = "unliving demonbone", chance = 500 } + { name = "unliving demonbone", chance = 500 }, } monster.attacks = { @@ -105,7 +105,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -210, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -210, maxDamage = -600, range = 7, radius = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 250 }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -1500, maxDamage = -2000, range = 7, radius = 3, target = false } + { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -1500, maxDamage = -2000, range = 7, radius = 3, target = false }, } monster.defenses = { @@ -131,11 +131,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -143,13 +142,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/bosses/gorzindel.lua b/data-otservbr-global/monster/quests/the_secret_library/bosses/gorzindel.lua index c19f8c3dc21..bd05efbfc7c 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/bosses/gorzindel.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/bosses/gorzindel.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 10, lookFeet = 0, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 4 + chance = 4, } monster.strategiesTarget = { @@ -102,7 +102,7 @@ monster.loot = { { name = "steel boots", chance = 1000 }, { name = "stone skin amulet", chance = 1000 }, { name = "wand of cosmic Energy", chance = 1000 }, - { name = "yellow gem", chance = 1000 } + { name = "yellow gem", chance = 1000 }, } monster.attacks = { @@ -111,7 +111,7 @@ monster.attacks = { { name = "melee", interval = 1000, chance = 15, minDamage = -800, maxDamage = -1300 }, { name = "melee", interval = 1000, chance = 15, minDamage = -800, maxDamage = -1000 }, { name = "melee", interval = 1000, chance = 15, minDamage = -200, maxDamage = -800 }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -600, radius = 9, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -600, radius = 9, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -137,11 +137,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -149,13 +148,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_canon_dominus.lua b/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_canon_dominus.lua index 8e37b20e1dd..324701dac3b 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_canon_dominus.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_canon_dominus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 96, lookFeet = 105, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -26,12 +26,12 @@ monster.speed = 105 monster.manaCost = 0 monster.events = { - "GrandCanonDominusDeath" + "GrandCanonDominusDeath", } monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -80,7 +80,7 @@ monster.loot = { { name = "violet gem", chance = 1850 }, { name = "falcon bow", chance = 180 }, { name = "falcon wand", chance = 180 }, - { name = "falcon plate", chance = 100 } + { name = "falcon plate", chance = 100 }, } monster.attacks = { @@ -88,7 +88,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -720, range = 7, shootEffect = CONST_ANI_ETHEREALSPEAR, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -100, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -700, range = 5, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -700, range = 5, radius = 3, effect = CONST_ME_SMALLCLOUDS, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -700, range = 5, radius = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, } monster.defenses = { @@ -96,7 +96,7 @@ monster.defenses = { armor = 82, -- mitigation = ???, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 10, speedChange = 220, effect = CONST_ME_POFF, target = false, duration = 5000 } + { name = "speed", interval = 1000, chance = 10, speedChange = 220, effect = CONST_ME_POFF, target = false, duration = 5000 }, } monster.elements = { @@ -116,11 +116,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -128,13 +127,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_chaplain_gaunder.lua b/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_chaplain_gaunder.lua index 756378f2c35..955b688d645 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_chaplain_gaunder.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_chaplain_gaunder.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 23, lookFeet = 105, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -26,12 +26,12 @@ monster.speed = 105 monster.manaCost = 0 monster.events = { - "GrandChaplainGaunderDeath" + "GrandChaplainGaunderDeath", } monster.changeTarget = { interval = 3000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,7 +59,7 @@ monster.flags = { } monster.events = { - "GrandChaplainGaunderDeath" + "GrandChaplainGaunderDeath", } monster.light = { @@ -91,7 +91,7 @@ monster.loot = { { name = "falcon longsword", chance = 200 }, { name = "falcon mace", chance = 210 }, { name = "falcon plate", chance = 100 }, - { name = "falcon shield", chance = 100 } + { name = "falcon shield", chance = 100 }, } monster.attacks = { @@ -99,7 +99,7 @@ monster.attacks = { { name = "combat", interval = 1500, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -380, maxDamage = -890, range = 4, radius = 4, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -290, maxDamage = -720, range = 7, shootEffect = CONST_ANI_ETHEREALSPEAR, target = false }, { name = "combat", interval = 1500, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -700, range = 5, radius = 3, effect = CONST_ME_SMALLCLOUDS, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -700, range = 5, radius = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, } monster.defenses = { @@ -107,7 +107,7 @@ monster.defenses = { armor = 82, -- mitigation = ???, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 10, speedChange = 220, effect = CONST_ME_POFF, target = false, duration = 5000 } + { name = "speed", interval = 1000, chance = 10, speedChange = 220, effect = CONST_ME_POFF, target = false, duration = 5000 }, } monster.elements = { @@ -127,11 +127,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -139,13 +138,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_commander_soeren.lua b/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_commander_soeren.lua index db404bdfd02..e38e21c1fc0 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_commander_soeren.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_commander_soeren.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 105, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -26,12 +26,12 @@ monster.speed = 105 monster.manaCost = 0 monster.events = { - "GrandCommanderSoerenDeath" + "GrandCommanderSoerenDeath", } monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,7 +59,7 @@ monster.flags = { } monster.events = { - "GrandCommanderSoerenDeath" + "GrandCommanderSoerenDeath", } monster.light = { @@ -86,20 +86,20 @@ monster.loot = { { name = "falcon crest", chance = 400, maxCount = 3 }, { name = "patch of fine cloth", chance = 2500 }, { name = "falcon coif", chance = 200 }, - { name = "falcon bow", chance = 200 } + { name = "falcon bow", chance = 200 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -700 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -720, range = 7, shootEffect = CONST_ANI_ROYALSPEAR, target = false }, - { name = "combat", interval = 1000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -500, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 1000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -500, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { defense = 50, armor = 82, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 650, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 650, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -119,11 +119,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -131,13 +130,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_master_oberon.lua b/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_master_oberon.lua index 0450a417ebf..4be6206d156 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_master_oberon.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_master_oberon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 21, lookFeet = 105, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -28,7 +28,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,14 +88,14 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1400 }, { name = "combat", interval = 3000, chance = 40, type = COMBAT_HOLYDAMAGE, minDamage = -800, maxDamage = -1200, length = 8, effect = CONST_ME_HOLYAREA, target = false }, { name = "combat", interval = 4250, chance = 35, type = COMBAT_EARTHDAMAGE, minDamage = -500, maxDamage = -1000, radius = 5, effect = CONST_ME_HITAREA, target = false }, - { name = "combat", interval = 5000, chance = 37, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -1000, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 5000, chance = 37, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -1000, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { defense = 60, armor = 82, -- mitigation = ???, - { name = "speed", interval = 1000, chance = 10, speedChange = 180, effect = CONST_ME_POFF, target = false, duration = 4000 } + { name = "speed", interval = 1000, chance = 10, speedChange = 180, effect = CONST_ME_POFF, target = false, duration = 4000 }, } monster.elements = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType.onThink = function(monster, interval) @@ -137,11 +137,9 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end mType.onSay = function(monster, creature, type, message) local exhaust = GrandMasterOberonConfig.Storage.Exhaust @@ -150,12 +148,12 @@ mType.onSay = function(monster, creature, type, message) monster:setStorageValue(exhaust, os.time() + 1) local asking_storage = monster:getStorageValue(GrandMasterOberonConfig.Storage.Asking) - local oberonMessagesTable = GrandMasterOberonResponses[asking_storage]; + local oberonMessagesTable = GrandMasterOberonResponses[asking_storage] if oberonMessagesTable then if message == oberonMessagesTable.msg:lower() or message == oberonMessagesTable.msg2:lower() then monster:say("GRRRAAANNGH!", TALKTYPE_MONSTER_SAY) - monster:unregisterEvent('OberonImmunity') + monster:unregisterEvent("OberonImmunity") else monster:say("HAHAHAHA!", TALKTYPE_MONSTER_SAY) end diff --git a/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_master_oberon_functions.lua b/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_master_oberon_functions.lua index 60362d88ff6..af9c6f0218a 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_master_oberon_functions.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/bosses/grand_master_oberon_functions.lua @@ -1,7 +1,7 @@ local oberonOthersMessages = { [1] = "Are you ever going to fight or do you prefer talking! Then let me show you the concept of mortality before it! Dare strike up a Minnesang and you will receive your last accolade!", [2] = "Even before they smell your breath? Too bad you barely exist at all! SEHWO ASIMO, TOLIDO ESD Excuse me but I still do not get the message! Then why are we fighting alone right now? How appropriate, you look like something worms already got the better of!", -}; +} GrandMasterOberonAsking = { [1] = { msg = "You appear like a worm among men!" }, @@ -35,9 +35,9 @@ GrandMasterOberonConfig = { }, Monster = { "Falcon Knight", - "Falcon Paladin" + "Falcon Paladin", }, - AmountLife = 3 + AmountLife = 3, } local function healOberon(monster) @@ -47,7 +47,7 @@ local function healOberon(monster) end function SendOberonAsking(monster) - monster:registerEvent('OberonImmunity') + monster:registerEvent("OberonImmunity") local random = math.random(#GrandMasterOberonAsking) monster:say(GrandMasterOberonAsking[random].msg, TALKTYPE_MONSTER_SAY) monster:setStorageValue(GrandMasterOberonConfig.Storage.Asking, random) diff --git a/data-otservbr-global/monster/quests/the_secret_library/bosses/preceptor_lazare.lua b/data-otservbr-global/monster/quests/the_secret_library/bosses/preceptor_lazare.lua index 0e33500b449..64dddc6adf2 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/bosses/preceptor_lazare.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/bosses/preceptor_lazare.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -26,12 +26,12 @@ monster.speed = 105 monster.manaCost = 0 monster.events = { - "PreceptorLazareDeath" + "PreceptorLazareDeath", } monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,21 +93,21 @@ monster.loot = { { name = "heavy mace", chance = 600 }, { name = "mastermind shield", chance = 500 }, { name = "falcon rod", chance = 200 }, - { name = "falcon greaves", chance = 110 } + { name = "falcon greaves", chance = 110 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -700 }, { name = "combat", interval = 3000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -1100, range = 7, shootEffect = CONST_ANI_POWERBOLT, target = true }, { name = "combat", interval = 2400, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -500, range = 7, shootEffect = CONST_ANI_ENERGYBALL, target = true }, - { name = "combat", interval = 2700, chance = 20, type = COMBAT_HOLYDAMAGE, minDamage = -500, maxDamage = -600, range = 7, radius = 4, effect = CONST_ME_HOLYDAMAGE, target = false } + { name = "combat", interval = 2700, chance = 20, type = COMBAT_HOLYDAMAGE, minDamage = -500, maxDamage = -600, range = 7, radius = 4, effect = CONST_ME_HOLYDAMAGE, target = false }, } monster.defenses = { defense = 60, armor = 86, -- mitigation = ???, - { name = "combat", interval = 1500, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 800, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1500, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 800, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -127,11 +127,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -139,13 +138,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/bosses/thawing_dragon_lord.lua b/data-otservbr-global/monster/quests/the_secret_library/bosses/thawing_dragon_lord.lua index 693b885c583..032b61dba4a 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/bosses/thawing_dragon_lord.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/bosses/thawing_dragon_lord.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -68,7 +68,7 @@ monster.loot = { { id = 9058, chance = 50000, maxCount = 4 }, -- gold ingot { id = 7741, chance = 5560 }, -- ice cube { id = 7377, chance = 5560 }, -- ice cream cone - { id = 14112, chance = 50 } -- bar of gold + { id = 14112, chance = 50 }, -- bar of gold } monster.attacks = { @@ -76,7 +76,7 @@ monster.attacks = { { name = "ice crystal bomb", interval = 2000, chance = 30, minDamage = -600, maxDamage = -700, target = true }, { name = "fire wave", interval = 2000, chance = 30, minDamage = -800, maxDamage = -1200, length = 1, spread = 0, target = true }, { name = "speed", interval = 1000, chance = 12, speedChange = -250, radius = 6, effect = CONST_ME_HITBYFIRE, target = false, duration = 60000 }, - { name = "firefield", interval = 1000, chance = 10, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true } + { name = "firefield", interval = 1000, chance = 10, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, } monster.defenses = { @@ -102,11 +102,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -114,13 +113,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/bosses/the_scourge_of_oblivion.lua b/data-otservbr-global/monster/quests/the_secret_library/bosses/the_scourge_of_oblivion.lua index 666008324b5..9529a00cedb 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/bosses/the_scourge_of_oblivion.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/bosses/the_scourge_of_oblivion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 4, lookFeet = 2, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 25 + chance = 25, } monster.strategiesTarget = { @@ -63,8 +63,8 @@ monster.summon = { maxSummons = 8, summons = { { name = "Charger", chance = 15, interval = 1000, count = 3 }, - { name = "Spark of Destruction", chance = 15, interval = 1000, count = 5 } - } + { name = "Spark of Destruction", chance = 15, interval = 1000, count = 5 }, + }, } monster.voices = { @@ -133,7 +133,7 @@ monster.attacks = { { name = "speed", interval = 1000, chance = 12, speedChange = -800, radius = 6, effect = CONST_ME_POISONAREA, target = false, duration = 60000 }, { name = "strength", interval = 1000, chance = 8, radius = 5, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -700, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -950, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -950, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -143,7 +143,7 @@ monster.defenses = { { name = "combat", interval = 6000, chance = 25, type = COMBAT_HEALING, minDamage = 2000, maxDamage = 5000, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 1000, chance = 8, speedChange = 1901, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, { name = "invisible", interval = 1000, chance = 4, effect = CONST_ME_MAGIC_BLUE }, - { name = "invisible", interval = 1000, chance = 17, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 1000, chance = 17, effect = CONST_ME_MAGIC_BLUE }, } monster.reflects = { @@ -156,7 +156,7 @@ monster.reflects = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.elements = { @@ -176,11 +176,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -188,13 +187,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/brother_chill.lua b/data-otservbr-global/monster/quests/the_secret_library/brother_chill.lua index 7ebfed4ac17..12400ddc549 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/brother_chill.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/brother_chill.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/brother_freeze.lua b/data-otservbr-global/monster/quests/the_secret_library/brother_freeze.lua index de7fc454205..c940834f45d 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/brother_freeze.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/brother_freeze.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/concentrated_death.lua b/data-otservbr-global/monster/quests/the_secret_library/concentrated_death.lua index 49c662e4176..35f46d2eaaf 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/concentrated_death.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/concentrated_death.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -62,13 +62,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/dark_knowledge.lua b/data-otservbr-global/monster/quests/the_secret_library/dark_knowledge.lua index 4cbcf8c9df4..2a063417f26 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/dark_knowledge.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/dark_knowledge.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 100, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -400, target = false } + { name = "combat", interval = 2000, chance = 100, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -400, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/dazed_leaf_golem.lua b/data-otservbr-global/monster/quests/the_secret_library/dazed_leaf_golem.lua index 00c9aab02bb..c42fe94b9a6 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/dazed_leaf_golem.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/dazed_leaf_golem.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -21,17 +21,17 @@ monster.speed = 175 monster.manaCost = 0 monster.events = { - "DazedLeafGolemDeath" + "DazedLeafGolemDeath", } monster.changeTarget = { interval = 0, - chance = 0 + chance = 0, } monster.bosstiary = { bossRaceId = 1578, - bossRace = RARITY_BANE + bossRace = RARITY_BANE, } monster.strategiesTarget = { @@ -72,13 +72,13 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 100000, maxCount = 442 } + { name = "gold coin", chance = 100000, maxCount = 442 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -104,7 +104,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/demon_blood.lua b/data-otservbr-global/monster/quests/the_secret_library/demon_blood.lua index 332205e8771..88b762e2c71 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/demon_blood.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/demon_blood.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/demon_slave.lua b/data-otservbr-global/monster/quests/the_secret_library/demon_slave.lua index 8b9b1c1157c..dc40725c264 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/demon_slave.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/demon_slave.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/force_field.lua b/data-otservbr-global/monster/quests/the_secret_library/force_field.lua index a0f7dd8c546..52f9972df44 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/force_field.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/force_field.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a force field" monster.experience = 0 monster.outfit = { - lookTypeEx = 2128 + lookTypeEx = 2128, } monster.health = 10000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -53,9 +53,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} - +monster.loot = {} monster.defenses = { defense = 33, @@ -73,7 +71,7 @@ monster.reflects = { { type = COMBAT_DROWNDAMAGE, percent = 20 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 20 }, - { type = COMBAT_DEATHDAMAGE, percent = 20 } + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.elements = { @@ -93,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/furious_scorpion.lua b/data-otservbr-global/monster/quests/the_secret_library/furious_scorpion.lua index 4673c3d4f20..5afc7f32c6f 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/furious_scorpion.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/furious_scorpion.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 15000 monster.maxHealth = 15000 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -61,13 +60,13 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 100000, maxCount = 100 } + { name = "gold coin", chance = 100000, maxCount = 100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/ghulosh'_deathgaze.lua b/data-otservbr-global/monster/quests/the_secret_library/ghulosh'_deathgaze.lua index 42f9106e1bf..43cae1f6f6b 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/ghulosh'_deathgaze.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/ghulosh'_deathgaze.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 57, lookFeet = 57, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -46,12 +46,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -59,8 +59,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, @@ -69,7 +68,7 @@ monster.attacks = { monster.defenses = { defense = 33, - armor = 28 + armor = 28, } monster.elements = { @@ -82,14 +81,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/imp_intruder.lua b/data-otservbr-global/monster/quests/the_secret_library/imp_intruder.lua index 96c8a624eff..15b824d749f 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/imp_intruder.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/imp_intruder.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/invading_demon.lua b/data-otservbr-global/monster/quests/the_secret_library/invading_demon.lua index b225924f778..b14dea67f69 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/invading_demon.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/invading_demon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/jailer.lua b/data-otservbr-global/monster/quests/the_secret_library/jailer.lua index 321dc0776d2..c3dc4a60450 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/jailer.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/jailer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -66,13 +66,13 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 100000, maxCount = 60 }, - { name = "gold coin", chance = 100000, maxCount = 40 } + { name = "gold coin", chance = 100000, maxCount = 40 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -98,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/knowledge_raider.lua b/data-otservbr-global/monster/quests/the_secret_library/knowledge_raider.lua index fc3a2190763..5ba9a7da8bf 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/knowledge_raider.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/knowledge_raider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "melee", interval = 2000, chance = 20, minDamage = -300, maxDamage = -490 }, - { name = "melee", interval = 2000, chance = 10, minDamage = -300, maxDamage = -490 } + { name = "melee", interval = 2000, chance = 10, minDamage = -300, maxDamage = -490 }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/librarian.lua b/data-otservbr-global/monster/quests/the_secret_library/librarian.lua index 1a1b724d81c..fe87ae2ff34 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/librarian.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/librarian.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 11000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/lokathmor.lua b/data-otservbr-global/monster/quests/the_secret_library/lokathmor.lua index c2fbc05a1b4..47484e5dc22 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/lokathmor.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/lokathmor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 79, lookFeet = 77, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 4 + chance = 4, } monster.strategiesTarget = { @@ -62,8 +62,8 @@ monster.light = { monster.summon = { maxSummons = 5, summons = { - { name = "demon blood", chance = 10, interval = 2000, count = 5 } - } + { name = "demon blood", chance = 10, interval = 2000, count = 5 }, + }, } monster.voices = { @@ -97,7 +97,7 @@ monster.loot = { { id = 8900, chance = 30000 }, -- heavily rusted shield { name = "wand of inferno", chance = 30000 }, { id = 28341, chance = 1000 }, -- tessellated wall - { name = "sturdy book", chance = 1000 } + { name = "sturdy book", chance = 1000 }, } monster.attacks = { @@ -107,7 +107,7 @@ monster.attacks = { -- poison { name = "condition", type = CONDITION_POISON, interval = 5000, chance = 18, minDamage = -1100, maxDamage = -2500, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 1000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -1000, maxDamage = -255, range = 7, radius = 6, effect = CONST_ME_LOSEENERGY, target = false }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -200, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -200, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { @@ -133,11 +133,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -145,13 +144,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/lokathmor_stuck.lua b/data-otservbr-global/monster/quests/the_secret_library/lokathmor_stuck.lua index bca54e73d7b..0c75efd919b 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/lokathmor_stuck.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/lokathmor_stuck.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 79, lookFeet = 97, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 4 + chance = 4, } monster.flags = { @@ -42,12 +42,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -55,8 +55,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 150, attack = 250 }, @@ -65,12 +64,12 @@ monster.attacks = { -- poison { name = "condition", type = CONDITION_POISON, interval = 5000, chance = 18, minDamage = -2000, maxDamage = -2500, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 1000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -1000, maxDamage = -255, range = 7, radius = 6, effect = CONST_ME_LOSEENERGY, target = false }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -170, maxDamage = -200, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -170, maxDamage = -200, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -83,14 +82,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/malicious_minion.lua b/data-otservbr-global/monster/quests/the_secret_library/malicious_minion.lua index 0bbb8fb7e1c..ad77095f69b 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/malicious_minion.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/malicious_minion.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 4000 monster.maxHealth = 4000 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -92,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/mazzinor.lua b/data-otservbr-global/monster/quests/the_secret_library/mazzinor.lua index 180d1aa44e9..bbf93c31425 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/mazzinor.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/mazzinor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 3, lookFeet = 15, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 4 + chance = 4, } monster.strategiesTarget = { @@ -86,7 +86,7 @@ monster.loot = { { name = "dreaded cleaver", chance = 30000 }, { name = "frozen lightning", chance = 30000 }, { name = "sinister book", chance = 1000 }, - { name = "wand of dimensions", chance = 10 } + { name = "wand of dimensions", chance = 10 }, } monster.attacks = { @@ -95,7 +95,7 @@ monster.attacks = { { name = "berserk", interval = 2000, chance = 20, minDamage = -90, maxDamage = -500, range = 7, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -135, maxDamage = -280, range = 7, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -210, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_HOLYAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -210, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_HOLYAREA, target = false }, } monster.defenses = { @@ -121,11 +121,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -133,13 +132,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/mean_minion.lua b/data-otservbr-global/monster/quests/the_secret_library/mean_minion.lua index e0bc84e0d37..711ba72ec50 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/mean_minion.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/mean_minion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/neutral_deepling_warrior.lua b/data-otservbr-global/monster/quests/the_secret_library/neutral_deepling_warrior.lua index 7ba55522019..43535115a97 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/neutral_deepling_warrior.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/neutral_deepling_warrior.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1600 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,19 +59,18 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -290, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -290, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, } monster.defenses = { defense = 25, armor = 25, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/oberons_bile.lua b/data-otservbr-global/monster/quests/the_secret_library/oberons_bile.lua index 3b844bbe260..67d49687748 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/oberons_bile.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/oberons_bile.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "Oberon's Bile" monster.experience = 20000 monster.outfit = { - lookTypeEx = 10980 + lookTypeEx = 10980, } monster.health = 10000 @@ -15,7 +15,7 @@ monster.speed = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -39,12 +39,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -52,17 +52,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 1400, chance = 100, minDamage = 150, maxDamage = 800 } + { name = "melee", interval = 1400, chance = 100, minDamage = 150, maxDamage = 800 }, } monster.defenses = { defense = 50, armor = 82, - { name = "combat", interval = 1400, chance = 20, type = COMBAT_HEALING, minDamage = 400, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1400, chance = 20, type = COMBAT_HEALING, minDamage = 400, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -75,14 +74,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/oberons_hate.lua b/data-otservbr-global/monster/quests/the_secret_library/oberons_hate.lua index 74112357b36..bcaf6138f77 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/oberons_hate.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/oberons_hate.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "Oberon's Hate" monster.experience = 20000 monster.outfit = { - lookTypeEx = 10980 + lookTypeEx = 10980, } monster.health = 10000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -40,12 +40,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -53,17 +53,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 1400, chance = 100, minDamage = 150, maxDamage = 800 } + { name = "melee", interval = 1400, chance = 100, minDamage = 150, maxDamage = 800 }, } monster.defenses = { defense = 50, armor = 82, - { name = "combat", interval = 1400, chance = 20, type = COMBAT_HEALING, minDamage = 400, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1400, chance = 20, type = COMBAT_HEALING, minDamage = 400, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -76,14 +75,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/oberons_ire.lua b/data-otservbr-global/monster/quests/the_secret_library/oberons_ire.lua index 951b1833abc..0c7e601cec4 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/oberons_ire.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/oberons_ire.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "Oberon's Ire" monster.experience = 20000 monster.outfit = { - lookTypeEx = 11211 + lookTypeEx = 11211, } monster.health = 10000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -40,12 +40,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -53,17 +53,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 1400, chance = 100, minDamage = 150, maxDamage = 800 } + { name = "melee", interval = 1400, chance = 100, minDamage = 150, maxDamage = 800 }, } monster.defenses = { defense = 50, armor = 82, - { name = "combat", interval = 1400, chance = 20, type = COMBAT_HEALING, minDamage = 400, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1400, chance = 20, type = COMBAT_HEALING, minDamage = 400, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -76,14 +75,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/oberons_spite.lua b/data-otservbr-global/monster/quests/the_secret_library/oberons_spite.lua index 8e548979ef7..8230a90f56c 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/oberons_spite.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/oberons_spite.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "Oberon's Spite" monster.experience = 20000 monster.outfit = { - lookTypeEx = 11212 + lookTypeEx = 11212, } monster.health = 10000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -40,12 +40,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -53,17 +53,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 1400, chance = 100, minDamage = 150, maxDamage = 800 } + { name = "melee", interval = 1400, chance = 100, minDamage = 150, maxDamage = 800 }, } monster.defenses = { defense = 50, armor = 82, - { name = "combat", interval = 1400, chance = 20, type = COMBAT_HEALING, minDamage = 400, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1400, chance = 20, type = COMBAT_HEALING, minDamage = 400, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -76,14 +75,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/ravenous_beyondling.lua b/data-otservbr-global/monster/quests/the_secret_library/ravenous_beyondling.lua index 98757d55bd2..56491de9962 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/ravenous_beyondling.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/ravenous_beyondling.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/rift_breacher.lua b/data-otservbr-global/monster/quests/the_secret_library/rift_breacher.lua index c3d09ed57a1..24cf9b26ff5 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/rift_breacher.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/rift_breacher.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 91, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/rift_minion.lua b/data-otservbr-global/monster/quests/the_secret_library/rift_minion.lua index c187a855d6a..ae1dbfbb604 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/rift_minion.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/rift_minion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/rift_spawn.lua b/data-otservbr-global/monster/quests/the_secret_library/rift_spawn.lua index 428527ef55b..69256a4a719 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/rift_spawn.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/rift_spawn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 9, lookFeet = 85, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/spawn_of_havoc.lua b/data-otservbr-global/monster/quests/the_secret_library/spawn_of_havoc.lua index 91e2efcb3d3..f53a3c675a0 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/spawn_of_havoc.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/spawn_of_havoc.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_armor.lua b/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_armor.lua index cff6ece9059..0191f7d3dec 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_armor.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_armor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_healing.lua b/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_healing.lua index 8a9dc35ca20..17491a7b4c3 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_healing.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_healing.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_lifesteal.lua b/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_lifesteal.lua index 87cee423177..3ff2ce5207a 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_lifesteal.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_lifesteal.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_spells.lua b/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_spells.lua index f939891e1de..1e319b2a5b3 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_spells.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_spells.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_summoning.lua b/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_summoning.lua index 74eb5962f55..c591e74ca97 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_summoning.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/stolen_knowledge_of_summoning.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/stolen_tome_of_portals.lua b/data-otservbr-global/monster/quests/the_secret_library/stolen_tome_of_portals.lua index 8b0139982a9..be93e4d9bfa 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/stolen_tome_of_portals.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/stolen_tome_of_portals.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a stolen tome of portals" monster.experience = 0 monster.outfit = { - lookTypeEx = 23985 + lookTypeEx = 23985, } monster.health = 10000 @@ -20,7 +20,7 @@ monster.events = { monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -48,7 +48,7 @@ monster.flags = { } monster.events = { - "gorzindelDeath" + "gorzindelDeath", } monster.light = { @@ -61,8 +61,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 33, @@ -87,7 +86,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/supercharged_mazzinor.lua b/data-otservbr-global/monster/quests/the_secret_library/supercharged_mazzinor.lua index 6ebee0f13ca..89be57fdda8 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/supercharged_mazzinor.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/supercharged_mazzinor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 300000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.flags = { @@ -55,11 +55,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, } monster.defenses = { @@ -85,7 +84,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/the_blazing_rose.lua b/data-otservbr-global/monster/quests/the_secret_library/the_blazing_rose.lua index fdd1ae6b088..1eca0b0b507 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/the_blazing_rose.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/the_blazing_rose.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 79, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -64,13 +64,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/the_book_of_secrets.lua b/data-otservbr-global/monster/quests/the_secret_library/the_book_of_secrets.lua index e4249ebd946..8872dfba1ea 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/the_book_of_secrets.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/the_book_of_secrets.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a The Book of Secrets" monster.experience = 0 monster.outfit = { - lookTypeEx = 22755 + lookTypeEx = 22755, } monster.health = 8000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -53,13 +53,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -85,7 +84,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/the_devourer_of_secrets.lua b/data-otservbr-global/monster/quests/the_secret_library/the_devourer_of_secrets.lua index 6a6385938a0..c49ef79f6ca 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/the_devourer_of_secrets.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/the_devourer_of_secrets.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/the_diamond_blossom.lua b/data-otservbr-global/monster/quests/the_secret_library/the_diamond_blossom.lua index ca3f17af690..be4d55a6d76 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/the_diamond_blossom.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/the_diamond_blossom.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 86, lookFeet = 79, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -64,13 +64,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/the_lily_of_night.lua b/data-otservbr-global/monster/quests/the_secret_library/the_lily_of_night.lua index cabd017f006..457aeaa6f93 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/the_lily_of_night.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/the_lily_of_night.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 90, lookFeet = 79, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -64,13 +64,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -96,7 +95,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/the_scion_of_havoc.lua b/data-otservbr-global/monster/quests/the_secret_library/the_scion_of_havoc.lua index dc75e63db6d..23267a626d6 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/the_scion_of_havoc.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/the_scion_of_havoc.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 79, lookFeet = 79, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/the_spellstealer.lua b/data-otservbr-global/monster/quests/the_secret_library/the_spellstealer.lua index 0d67c1327b0..810ab9ebd72 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/the_spellstealer.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/the_spellstealer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/war_servant.lua b/data-otservbr-global/monster/quests/the_secret_library/war_servant.lua index 71d3866d7d7..8bbf980fe62 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/war_servant.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/war_servant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/wild_knowledge.lua b/data-otservbr-global/monster/quests/the_secret_library/wild_knowledge.lua index 08dac3aecc6..0035349e042 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/wild_knowledge.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/wild_knowledge.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 2000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,12 +59,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, - { name = "combat", interval = 1000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -705, shootEffect = CONST_ANI_ENERGYBALL, target = false } + { name = "combat", interval = 1000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -705, shootEffect = CONST_ANI_ENERGYBALL, target = false }, } monster.defenses = { @@ -90,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/the_secret_library/yalahari_despoiler.lua b/data-otservbr-global/monster/quests/the_secret_library/yalahari_despoiler.lua index 99db13e682c..892e0d12ac1 100644 --- a/data-otservbr-global/monster/quests/the_secret_library/yalahari_despoiler.lua +++ b/data-otservbr-global/monster/quests/the_secret_library/yalahari_despoiler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 10000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,13 +59,12 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { @@ -91,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/wrath_of_the_emperor/fury_of_the_emperor.lua b/data-otservbr-global/monster/quests/wrath_of_the_emperor/fury_of_the_emperor.lua index 4071c6560c7..463d57908da 100644 --- a/data-otservbr-global/monster/quests/wrath_of_the_emperor/fury_of_the_emperor.lua +++ b/data-otservbr-global/monster/quests/wrath_of_the_emperor/fury_of_the_emperor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 51000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Draken Warmaster", chance = 10, interval = 2000, count = 2 } - } + { name = "Draken Warmaster", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -69,20 +69,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 85, attack = 145 }, { name = "combat", interval = 3000, chance = 17, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -450, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 3000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -700, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "speed", interval = 1000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, - { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -650, radius = 6, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -650, radius = 6, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 55, - armor = 65 + armor = 65, -- mitigation = ???, } @@ -103,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/wrath_of_the_emperor/lizard_abomination.lua b/data-otservbr-global/monster/quests/wrath_of_the_emperor/lizard_abomination.lua index 3b1f058838a..eab957f402d 100644 --- a/data-otservbr-global/monster/quests/wrath_of_the_emperor/lizard_abomination.lua +++ b/data-otservbr-global/monster/quests/wrath_of_the_emperor/lizard_abomination.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 95000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,21 +65,20 @@ monster.voices = { { text = "I WILL MAKE YOU ZHEE!", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -980, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "speed", interval = 2000, chance = 20, radius = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "speed", interval = 2000, chance = 20, radius = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 60, armor = 55, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -99,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/wrath_of_the_emperor/mutated_zalamon.lua b/data-otservbr-global/monster/quests/wrath_of_the_emperor/mutated_zalamon.lua index 9f9541941f7..ad7c98a1abe 100644 --- a/data-otservbr-global/monster/quests/wrath_of_the_emperor/mutated_zalamon.lua +++ b/data-otservbr-global/monster/quests/wrath_of_the_emperor/mutated_zalamon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 155000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,14 +62,13 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -815, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -300, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, - { name = "speed", interval = 4000, chance = 20, speedChange = -350, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 12000 } + { name = "speed", interval = 4000, chance = 20, speedChange = -350, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 12000 }, } monster.defenses = { @@ -81,7 +80,7 @@ monster.defenses = { { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_ENERGYHIT, target = false, duration = 10000, outfitMonster = "Lizard Abomination" }, { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_ENERGYHIT, target = false, duration = 10000, outfitMonster = "Serpent Spawn" }, { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_ENERGYHIT, target = false, duration = 10000, outfitMonster = "Draken Abomination" }, - { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_ENERGYHIT, target = false, duration = 10000, outfitMonster = "Mutated Zalamon" } + { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_ENERGYHIT, target = false, duration = 10000, outfitMonster = "Mutated Zalamon" }, } monster.elements = { @@ -101,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/wrath_of_the_emperor/scorn_of_the_emperor.lua b/data-otservbr-global/monster/quests/wrath_of_the_emperor/scorn_of_the_emperor.lua index d711de29086..bbb474fa652 100644 --- a/data-otservbr-global/monster/quests/wrath_of_the_emperor/scorn_of_the_emperor.lua +++ b/data-otservbr-global/monster/quests/wrath_of_the_emperor/scorn_of_the_emperor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 45000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Draken Warmaster", chance = 10, interval = 2000, count = 2 } - } + { name = "Draken Warmaster", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -69,20 +69,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 55, attack = 115 }, { name = "combat", interval = 3000, chance = 17, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 3000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "speed", interval = 1000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, - { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -450, radius = 6, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -450, radius = 6, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 35, - armor = 45 + armor = 45, -- mitigation = ???, } @@ -103,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/wrath_of_the_emperor/snake_god_essence.lua b/data-otservbr-global/monster/quests/wrath_of_the_emperor/snake_god_essence.lua index 937a5215b10..9d7e4f4fbaa 100644 --- a/data-otservbr-global/monster/quests/wrath_of_the_emperor/snake_god_essence.lua +++ b/data-otservbr-global/monster/quests/wrath_of_the_emperor/snake_god_essence.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 65000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -64,20 +64,19 @@ monster.voices = { { text = "ZHE TIME OF ZHE SNAKE HAZ COME!", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600 }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -270, radius = 6, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -270, radius = 6, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.defenses = { defense = 65, armor = 70, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -97,7 +96,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/wrath_of_the_emperor/snake_thing.lua b/data-otservbr-global/monster/quests/wrath_of_the_emperor/snake_thing.lua index 9f37a93db1c..272ef668f54 100644 --- a/data-otservbr-global/monster/quests/wrath_of_the_emperor/snake_thing.lua +++ b/data-otservbr-global/monster/quests/wrath_of_the_emperor/snake_thing.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 70000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -63,22 +63,21 @@ monster.voices = { { text = "POWER! I SEED MORE POWER!", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 35, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -2398, length = 8, spread = 3, effect = CONST_ME_SOUND_RED, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = -30, maxDamage = -60, radius = 6, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = -30, maxDamage = -60, radius = 6, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 30, armor = 45, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 450, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/wrath_of_the_emperor/spite_of_the_emperor.lua b/data-otservbr-global/monster/quests/wrath_of_the_emperor/spite_of_the_emperor.lua index 6bfb5acab1d..f0951ea2dbc 100644 --- a/data-otservbr-global/monster/quests/wrath_of_the_emperor/spite_of_the_emperor.lua +++ b/data-otservbr-global/monster/quests/wrath_of_the_emperor/spite_of_the_emperor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 48000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Draken Warmaster", chance = 10, interval = 2000, count = 2 } - } + { name = "Draken Warmaster", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -69,20 +69,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 55, attack = 115 }, { name = "combat", interval = 3000, chance = 17, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 3000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "speed", interval = 1000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, - { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -450, radius = 6, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -450, radius = 6, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 35, - armor = 45 + armor = 45, -- mitigation = ???, } @@ -103,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/wrath_of_the_emperor/the_keeper.lua b/data-otservbr-global/monster/quests/wrath_of_the_emperor/the_keeper.lua index 00954c0df6b..43d731d6bdd 100644 --- a/data-otservbr-global/monster/quests/wrath_of_the_emperor/the_keeper.lua +++ b/data-otservbr-global/monster/quests/wrath_of_the_emperor/the_keeper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 40000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,8 +62,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, @@ -71,14 +70,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -80, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_SOUND_RED, target = false }, { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000, outfitItem = 3976 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 35, armor = 35, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -98,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/quests/wrath_of_the_emperor/wrath_of_the_emperor.lua b/data-otservbr-global/monster/quests/wrath_of_the_emperor/wrath_of_the_emperor.lua index de481a7e2d4..70494aee5f9 100644 --- a/data-otservbr-global/monster/quests/wrath_of_the_emperor/wrath_of_the_emperor.lua +++ b/data-otservbr-global/monster/quests/wrath_of_the_emperor/wrath_of_the_emperor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 55000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Draken Warmaster", chance = 10, interval = 2000, count = 2 } - } + { name = "Draken Warmaster", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -73,20 +73,19 @@ monster.voices = { { text = "I WILL STOP YOU ONCE AND FOR ALL!", yell = true }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 55, attack = 115 }, { name = "combat", interval = 3000, chance = 17, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 3000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "speed", interval = 1000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, - { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -450, radius = 6, effect = CONST_ME_POFF, target = false } + { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -450, radius = 6, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 35, - armor = 45 + armor = 45, -- mitigation = ???, } @@ -107,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/arachir_the_ancient_one.lua b/data-otservbr-global/monster/raids/arachir_the_ancient_one.lua index 500f23c537c..cde8fb185fd 100644 --- a/data-otservbr-global/monster/raids/arachir_the_ancient_one.lua +++ b/data-otservbr-global/monster/raids/arachir_the_ancient_one.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -66,7 +66,7 @@ monster.summon = { maxSummons = 2, summons = { { name = "Lich", chance = 100, interval = 9000, count = 2 }, - } + }, } monster.voices = { @@ -86,13 +86,13 @@ monster.loot = { { id = 8192, chance = 100000 }, -- vampire lord token { id = 3035, chance = 50000, maxCount = 5 }, -- platinum coin { id = 3434, chance = 6300 }, -- vampire shield - { id = 3027, chance = 8980 } -- black pearl + { id = 3027, chance = 8980 }, -- black pearl } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 95 }, { name = "combat", interval = 9000, chance = 100, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -300, radius = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -120, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -120, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { @@ -101,7 +101,7 @@ monster.defenses = { mitigation = 1.04, { name = "combat", interval = 1000, chance = 12, type = COMBAT_HEALING, minDamage = 100, maxDamage = 235, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "invisible", interval = 3000, chance = 25, effect = CONST_ME_MAGIC_BLUE }, - { name = "outfit", interval = 4500, chance = 30, target = false, duration = 4000, outfitMonster = "bat" } + { name = "outfit", interval = 4500, chance = 30, target = false, duration = 4000, outfitMonster = "bat" }, } monster.elements = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/barbaria.lua b/data-otservbr-global/monster/raids/barbaria.lua index 4fcbbdb9bad..f150ee37a95 100644 --- a/data-otservbr-global/monster/raids/barbaria.lua +++ b/data-otservbr-global/monster/raids/barbaria.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 95, lookFeet = 121, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "War Wolf", chance = 40, interval = 2000, count = 1 } - } + { name = "War Wolf", chance = 40, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -84,20 +84,20 @@ monster.loot = { { id = 3347, chance = 12500 }, -- hunting spear { id = 7343, chance = 1000 }, -- fur bag { id = 2920, chance = 25000 }, -- torch - { id = 2824, chance = 15000 } -- book + { id = 2824, chance = 15000 }, -- book } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 20 }, { name = "combat", interval = 2000, chance = 34, type = COMBAT_PHYSICALDAMAGE, minDamage = -30, maxDamage = -80, range = 7, radius = 1, shootEffect = CONST_ANI_SNOWBALL, target = true }, - { name = "combat", interval = 3000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -35, maxDamage = -70, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 3000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -35, maxDamage = -70, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { defense = 10, armor = 10, mitigation = 0.70, - { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/battlemaster_zunzu.lua b/data-otservbr-global/monster/raids/battlemaster_zunzu.lua index a22c988cc3a..8fb6fea17bf 100644 --- a/data-otservbr-global/monster/raids/battlemaster_zunzu.lua +++ b/data-otservbr-global/monster/raids/battlemaster_zunzu.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -75,19 +75,19 @@ monster.loot = { { name = "zaoan shoes", chance = 3150 }, { name = "zaoan legs", chance = 2625 }, { name = "zaogun flag", chance = 11250 }, - { name = "zaogun shoulderplates", chance = 100000 } + { name = "zaogun shoulderplates", chance = 100000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -115, maxDamage = -350, range = 1, radius = 1, effect = CONST_ME_POISONAREA, target = true } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -115, maxDamage = -350, range = 1, radius = 1, effect = CONST_ME_POISONAREA, target = true }, } monster.defenses = { defense = 35, armor = 45, mitigation = 1.60, - { name = "combat", interval = 1000, chance = 18, type = COMBAT_HEALING, minDamage = 200, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 18, type = COMBAT_HEALING, minDamage = 200, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -107,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/brutus_bloodbeard.lua b/data-otservbr-global/monster/raids/brutus_bloodbeard.lua index 06fd1de93ba..2df59d21c44 100644 --- a/data-otservbr-global/monster/raids/brutus_bloodbeard.lua +++ b/data-otservbr-global/monster/raids/brutus_bloodbeard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1555 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -69,13 +69,13 @@ monster.loot = { { id = 3267, chance = 25000 }, -- dagger { id = 3370, chance = 25000 }, -- knight armor { id = 3577, chance = 25000 }, -- meat - { id = 3357, chance = 25000 } -- plate armor + { id = 3357, chance = 25000 }, -- plate armor } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -175 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -175, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, - { name = "drunk", interval = 2000, chance = 10, length = 3, spread = 2, effect = CONST_ME_POFF, target = false, duration = 5000 } + { name = "drunk", interval = 2000, chance = 10, length = 3, spread = 2, effect = CONST_ME_POFF, target = false, duration = 5000 }, } monster.defenses = { @@ -101,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/captain_jones.lua b/data-otservbr-global/monster/raids/captain_jones.lua index 689545ed8db..a110475ae43 100644 --- a/data-otservbr-global/monster/raids/captain_jones.lua +++ b/data-otservbr-global/monster/raids/captain_jones.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -75,21 +75,21 @@ monster.loot = { { id = 3382, chance = 5070 }, -- crown legs { id = 8043, chance = 3070 }, -- focus cape { id = 3566, chance = 1110 }, -- red robe - { id = 3271, chance = 1110 } -- spike sword + { id = 3271, chance = 1110 }, -- spike sword } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -95, condition = { type = CONDITION_POISON, totalDamage = 2, interval = 4000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -30, maxDamage = -80, radius = 1, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -130, maxDamage = -150, range = 1, radius = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "outfit", interval = 2000, chance = 5, range = 3, shootEffect = CONST_ANI_EXPLOSION, target = true, duration = 4000, outfitMonster = "Skeleton" } + { name = "outfit", interval = 2000, chance = 5, range = 3, shootEffect = CONST_ANI_EXPLOSION, target = true, duration = 4000, outfitMonster = "Skeleton" }, } monster.defenses = { defense = 0, armor = 0, mitigation = 0.99, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/chayenne.lua b/data-otservbr-global/monster/raids/chayenne.lua index 6d344dbac5b..0f8f64d9686 100644 --- a/data-otservbr-global/monster/raids/chayenne.lua +++ b/data-otservbr-global/monster/raids/chayenne.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 105, lookFeet = 99, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 100000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -66,13 +66,13 @@ monster.loot = { { id = 6571, chance = 100000, maxCount = 2 }, -- surprise bag { id = 281, chance = 100000 }, -- giant shimmering pearl (green) { id = 14681, chance = 100000 }, -- anniversary cake - { id = 14682, chance = 100000, unique = true } -- chayenne's magical key + { id = 14682, chance = 100000, unique = true }, -- chayenne's magical key } monster.attacks = { { name = "melee", interval = 3000, chance = 100, skill = 300, attack = 150 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -1500, range = 1, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -1250, range = 7, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -1250, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { @@ -82,7 +82,7 @@ monster.defenses = { { name = "combat", interval = 1000, chance = 1, type = COMBAT_HEALING, minDamage = 0, maxDamage = 10000, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 3500, chance = 30, type = COMBAT_HEALING, minDamage = 1000, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_ENERGYHIT, target = false, duration = 10000, outfitMonster = "Devovorga" }, - { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_ENERGYHIT, target = false, duration = 10000, outfitMonster = "Chayenne" } + { name = "outfit", interval = 2000, chance = 10, effect = CONST_ME_ENERGYHIT, target = false, duration = 10000, outfitMonster = "Chayenne" }, } monster.elements = { @@ -102,11 +102,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -114,13 +113,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/chizzoron_the_distorter.lua b/data-otservbr-global/monster/raids/chizzoron_the_distorter.lua index 5c0d0bab215..7fbc5d3cd71 100644 --- a/data-otservbr-global/monster/raids/chizzoron_the_distorter.lua +++ b/data-otservbr-global/monster/raids/chizzoron_the_distorter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Lizard Dragon Priest", chance = 10, interval = 2000, count = 2 } - } + { name = "Lizard Dragon Priest", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -86,7 +86,7 @@ monster.loot = { { id = 3038, chance = 16300 }, -- green gem { id = 3053, chance = 11025 }, -- time ring { id = 239, chance = 5750 }, -- great health potion - { id = 3386, chance = 5750 } -- dragon scale mail + { id = 3386, chance = 5750 }, -- dragon scale mail } monster.attacks = { @@ -94,7 +94,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -430, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -874, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -646, radius = 3, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -148, maxDamage = -250, range = 7, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -148, maxDamage = -250, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { @@ -120,11 +120,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -132,13 +131,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/control_tower.lua b/data-otservbr-global/monster/raids/control_tower.lua index 4f4f48b1f9d..29415033906 100644 --- a/data-otservbr-global/monster/raids/control_tower.lua +++ b/data-otservbr-global/monster/raids/control_tower.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a control tower" monster.experience = 3000 monster.outfit = { - lookTypeEx = 20894 + lookTypeEx = 20894, } monster.health = 7500 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,10 +59,9 @@ monster.voices = { monster.loot = { { id = 3035, chance = 100000, maxCount = 5 }, -- platinum coin { id = 238, chance = 14285 }, -- great mana potion - { id = 239, chance = 14285 } -- great health potion + { id = 239, chance = 14285 }, -- great health potion } - monster.defenses = { defense = 10, armor = 10, @@ -86,7 +85,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/deadeye_devious.lua b/data-otservbr-global/monster/raids/deadeye_devious.lua index e86302dd20c..17657a2b15d 100644 --- a/data-otservbr-global/monster/raids/deadeye_devious.lua +++ b/data-otservbr-global/monster/raids/deadeye_devious.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 33, lookFeet = 117, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.health = 1450 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -77,19 +77,19 @@ monster.loot = { { id = 3267, chance = 21000 }, -- dagger { id = 3028, chance = 14000 }, -- small diamond { id = 3275, chance = 7000 }, -- double axe - { id = 5926, chance = 7000 } -- pirate backpack + { id = 5926, chance = 7000 }, -- pirate backpack } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, - { name = "combat", interval = 4000, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -350, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 4000, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -350, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { defense = 50, armor = 35, mitigation = 1.20, - { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/draptor.lua b/data-otservbr-global/monster/raids/draptor.lua index 2e8b5c9312e..3f73c063dae 100644 --- a/data-otservbr-global/monster/raids/draptor.lua +++ b/data-otservbr-global/monster/raids/draptor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 695 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 3, Locations = "Zao, north east of Dragonblaze Peaks during raid. There are up to 10 draptors per raid, \z - while 6 of them may also appear in mission 8 of Wrath of the Emperor Quest." + while 6 of them may also appear in mission 8 of Wrath of the Emperor Quest.", } monster.health = 3000 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -85,14 +85,14 @@ monster.loot = { { name = "strong health potion", chance = 3150 }, { name = "strong mana potion", chance = 4150 }, { name = "dragon robe", chance = 950 }, - { name = "draptor scales", chance = 6650 } + { name = "draptor scales", chance = 6650 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "combat", interval = 3000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -130, maxDamage = -310, radius = 3, effect = CONST_ME_YELLOWENERGY, target = false }, { name = "combat", interval = 3000, chance = 35, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -300, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, - { name = "combat", interval = 2500, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2500, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { @@ -100,7 +100,7 @@ monster.defenses = { armor = 40, mitigation = 0.91, { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 57, maxDamage = 93, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 12, speedChange = 457, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 12, speedChange = 457, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/egg_the_welter.lua b/data-otservbr-global/monster/raids/egg_the_welter.lua index b3ae3227c62..f5783bf7ae6 100644 --- a/data-otservbr-global/monster/raids/egg_the_welter.lua +++ b/data-otservbr-global/monster/raids/egg_the_welter.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "Egg" monster.experience = 0 monster.outfit = { - lookTypeEx = 4839 + lookTypeEx = 4839, } monster.health = 800 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -40,20 +40,19 @@ monster.flags = { isBlockable = true, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.events = { - "TheWelterEgg" + "TheWelterEgg", } monster.light = { level = 0, - color = 0 + color = 0, } -monster.summon = { -} +monster.summon = {} monster.voices = { interval = 5000, @@ -62,7 +61,7 @@ monster.voices = { monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -75,14 +74,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/fernfang.lua b/data-otservbr-global/monster/raids/fernfang.lua index d222ebed02a..70e03ff04fb 100644 --- a/data-otservbr-global/monster/raids/fernfang.lua +++ b/data-otservbr-global/monster/raids/fernfang.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 400 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,8 +59,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "War Wolf", chance = 13, interval = 1000, count = 3 } - } + { name = "War Wolf", chance = 13, interval = 1000, count = 3 }, + }, } monster.voices = { @@ -91,13 +91,13 @@ monster.loot = { { id = 3563, chance = 7000 }, -- green tunic { id = 3061, chance = 7000 }, -- life crystal { id = 3738, chance = 7000 }, -- sling herb - { id = 3012, chance = 7000 } -- wolf tooth chain + { id = 3012, chance = 7000 }, -- wolf tooth chain } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, { name = "combat", interval = 1000, chance = 13, type = COMBAT_HOLYDAMAGE, minDamage = -65, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_HOLYDAMAGE, target = false }, - { name = "combat", interval = 1000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -20, maxDamage = -45, range = 7, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 1000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -20, maxDamage = -45, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 1000, chance = 7, speedChange = 280, effect = CONST_ME_MAGIC_RED, target = false, duration = 10000 }, - { name = "outfit", interval = 1000, chance = 5, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 14000, outfitMonster = "War Wolf" } + { name = "outfit", interval = 1000, chance = 5, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 14000, outfitMonster = "War Wolf" }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/ferumbras.lua b/data-otservbr-global/monster/raids/ferumbras.lua index 510369232d4..fa2f348d871 100644 --- a/data-otservbr-global/monster/raids/ferumbras.lua +++ b/data-otservbr-global/monster/raids/ferumbras.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "Demon", chance = 12, interval = 3000, count = 4 } - } + { name = "Demon", chance = 12, interval = 3000, count = 4 }, + }, } monster.voices = { @@ -123,7 +123,7 @@ monster.loot = { { id = 7422, chance = 8000 }, -- jade hammer { id = 3035, chance = 8000, maxCount = 58 }, -- platinum coin { id = 7423, chance = 8000 }, -- skullcrusher - { id = 5944, chance = 8000, maxCount = 9 } -- soul orb + { id = 5944, chance = 8000, maxCount = 9 }, -- soul orb } monster.attacks = { @@ -137,7 +137,7 @@ monster.attacks = { -- energy damage { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 18, minDamage = -300, maxDamage = -400, radius = 6, effect = CONST_ME_ENERGYHIT, target = false }, -- fire - { name = "condition", type = CONDITION_FIRE, interval = 3000, chance = 20, minDamage = -500, maxDamage = -600, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true } + { name = "condition", type = CONDITION_FIRE, interval = 3000, chance = 20, minDamage = -500, maxDamage = -600, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, } monster.defenses = { @@ -145,7 +145,7 @@ monster.defenses = { armor = 100, -- mitigation = ???, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 900, maxDamage = 1500, effect = CONST_ME_MAGIC_GREEN, target = false }, - { name = "invisible", interval = 4000, chance = 20, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 4000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -165,11 +165,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -177,13 +176,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/fleabringer.lua b/data-otservbr-global/monster/raids/fleabringer.lua index 7a330f39725..115db3774fe 100644 --- a/data-otservbr-global/monster/raids/fleabringer.lua +++ b/data-otservbr-global/monster/raids/fleabringer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -67,11 +67,11 @@ monster.voices = { monster.loot = { { name = "meat", chance = 25000, maxCount = 3 }, { name = "worm", chance = 75000, maxCount = 3 }, - { name = "shaggy tail", chance = 99990 } + { name = "shaggy tail", chance = 99990 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, } monster.defenses = { @@ -97,7 +97,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/foreman_kneebiter.lua b/data-otservbr-global/monster/raids/foreman_kneebiter.lua index 6ad59a07c7d..d61b5a4f883 100644 --- a/data-otservbr-global/monster/raids/foreman_kneebiter.lua +++ b/data-otservbr-global/monster/raids/foreman_kneebiter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 570 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.bosstiary = { bossRaceId = 424, - bossRace = RARITY_NEMESIS + bossRace = RARITY_NEMESIS, } monster.strategiesTarget = { @@ -54,33 +54,33 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "By Durin's beard!", yell = true } + { text = "By Durin's beard!", yell = true }, } monster.loot = { { id = 5880, chance = 2500, maxCount = 2 }, -- iron ore { id = 3031, chance = 90000, maxCount = 100 }, -- gold coin - { id = 3413, chance = 6666 } -- battle shield + { id = 3413, chance = 6666 }, -- battle shield } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = -60, maxDamage = -200 } + { name = "melee", interval = 2000, chance = 100, minDamage = -60, maxDamage = -200 }, } monster.defenses = { defense = 22, - armor = 15 + armor = 15, } monster.elements = { @@ -93,14 +93,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/frost_servant.lua b/data-otservbr-global/monster/raids/frost_servant.lua index dac7f86844e..31a21185b11 100644 --- a/data-otservbr-global/monster/raids/frost_servant.lua +++ b/data-otservbr-global/monster/raids/frost_servant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 385 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -62,18 +62,17 @@ monster.voices = { { text = "Gnarr.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 140, attack = 40 } + { name = "melee", interval = 2000, chance = 100, skill = 140, attack = 40 }, } monster.defenses = { defense = 25, armor = 25, mitigation = 0.70, - { name = "hirintror summon", interval = 2000, chance = 18, target = false } + { name = "hirintror summon", interval = 2000, chance = 18, target = false }, } monster.elements = { @@ -93,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/furyosa.lua b/data-otservbr-global/monster/raids/furyosa.lua index e7c206a4e0b..3d5ddc6df47 100644 --- a/data-otservbr-global/monster/raids/furyosa.lua +++ b/data-otservbr-global/monster/raids/furyosa.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 77, lookFeet = 3, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 25000 @@ -22,12 +22,12 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.bosstiary = { bossRaceId = 987, - bossRace = RARITY_NEMESIS + bossRace = RARITY_NEMESIS, } monster.strategiesTarget = { @@ -54,19 +54,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 4, summons = { - { name = "Fury", chance = 10, interval = 2000, count = 4 } - } + { name = "Fury", chance = 10, interval = 2000, count = 4 }, + }, } monster.voices = { @@ -77,7 +77,7 @@ monster.voices = { { text = "Die!", yell = false }, { text = "Dieeee!", yell = false }, { text = "Caaarnaaage!", yell = false }, - { text = "Ahhhhrrrr!", yell = false } + { text = "Ahhhhrrrr!", yell = false }, } monster.loot = { @@ -93,7 +93,7 @@ monster.loot = { { id = 3007, chance = 410 }, -- crystal ring { id = 6300, chance = 60 }, -- death ring { id = 3439, chance = 100 }, -- phoenix shield - { id = 19391, chance = 100 } -- furious frock + { id = 19391, chance = 100 }, -- furious frock } monster.attacks = { @@ -103,14 +103,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -800, length = 8, spread = 3, target = false }, { name = "combat", interval = 3000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = true }, - { name = "fury skill reducer", interval = 2000, chance = 5, target = false } + { name = "fury skill reducer", interval = 2000, chance = 5, target = false }, } monster.defenses = { defense = 20, armor = 20, { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, - { name = "combat", interval = 7000, chance = 20, type = COMBAT_HEALING, minDamage = 500, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 7000, chance = 20, type = COMBAT_HEALING, minDamage = 500, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -123,18 +123,17 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 40 }, { type = COMBAT_HOLYDAMAGE, percent = 40 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -142,13 +141,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/ghazbaran.lua b/data-otservbr-global/monster/raids/ghazbaran.lua index ea4974e5664..da656d181fc 100644 --- a/data-otservbr-global/monster/raids/ghazbaran.lua +++ b/data-otservbr-global/monster/raids/ghazbaran.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 78, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 10000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "Deathslicer", chance = 20, interval = 4000, count = 4 } - } + { name = "Deathslicer", chance = 20, interval = 4000, count = 4 }, + }, } monster.voices = { @@ -122,7 +122,7 @@ monster.loot = { { name = "spellbook of mind control", chance = 11111 }, { name = "spellbook of lost souls", chance = 16666 }, { name = "spellscroll of prophecies", chance = 25000 }, - { name = "spellbook of dark mysteries", chance = 20000 } + { name = "spellbook of dark mysteries", chance = 20000 }, } monster.attacks = { @@ -133,7 +133,7 @@ monster.attacks = { { name = "combat", interval = 3000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -480, range = 14, radius = 5, effect = CONST_ME_POFF, target = false }, { name = "combat", interval = 4000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -650, range = 7, radius = 13, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 4000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -600, radius = 14, effect = CONST_ME_LOSEENERGY, target = false }, - { name = "combat", interval = 3000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -750, range = 7, radius = 4, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 3000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -750, range = 7, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { @@ -141,7 +141,7 @@ monster.defenses = { armor = 55, -- mitigation = ???, { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 300, maxDamage = 800, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 4000, chance = 80, speedChange = 440, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 4000, chance = 80, speedChange = 440, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -161,11 +161,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -173,13 +172,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/giant_spider_wyda.lua b/data-otservbr-global/monster/raids/giant_spider_wyda.lua index 6fa420cdee0..21b6bd70c15 100644 --- a/data-otservbr-global/monster/raids/giant_spider_wyda.lua +++ b/data-otservbr-global/monster/raids/giant_spider_wyda.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 20 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -49,16 +49,16 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.events = { - "Wyda" + "Wyda", } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -68,16 +68,16 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 65150, maxCount = 5 }, - { name = "spider fangs", chance = 960 } + { name = "spider fangs", chance = 960 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -9 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -9 }, } monster.defenses = { defense = 2, - armor = 2 + armor = 2, } monster.elements = { @@ -90,14 +90,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/glooth_battery.lua b/data-otservbr-global/monster/raids/glooth_battery.lua index 10e210a5536..852a4b854ea 100644 --- a/data-otservbr-global/monster/raids/glooth_battery.lua +++ b/data-otservbr-global/monster/raids/glooth_battery.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a glooth battery" monster.experience = 3000 monster.outfit = { - lookTypeEx = 20710 + lookTypeEx = 20710, } monster.health = 8000 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -43,12 +43,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -60,17 +60,17 @@ monster.loot = { { id = 3035, chance = 33000, maxCount = 5 }, -- platinum coin { id = 239, chance = 10000 }, -- great health potion { id = 9064, chance = 1500 }, -- crystal pedestal - { id = 21169, chance = 1000 } -- metal spats + { id = 21169, chance = 1000 }, -- metal spats } monster.attacks = { - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -206, maxDamage = -252, radius = 6, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -206, maxDamage = -252, radius = 6, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { defense = 30, armor = 30, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 133, maxDamage = 454, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 133, maxDamage = 454, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -83,14 +83,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 25 }, { type = COMBAT_HOLYDAMAGE, percent = 25 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/glooth_bomb.lua b/data-otservbr-global/monster/raids/glooth_bomb.lua index ba06c1e16b9..b1973e7b8ec 100644 --- a/data-otservbr-global/monster/raids/glooth_bomb.lua +++ b/data-otservbr-global/monster/raids/glooth_bomb.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 250000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 3 + chance = 3, } monster.strategiesTarget = { @@ -76,7 +76,7 @@ monster.loot = { { id = 3028, chance = 16670, maxCount = 5 }, -- small diamond { id = 3030, chance = 50000 }, -- small ruby { id = 9057, chance = 16670, maxCount = 3 }, -- small topaz - { id = 3037, chance = 33330 } -- yellow gem + { id = 3037, chance = 33330 }, -- yellow gem } monster.attacks = { @@ -84,14 +84,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 13, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -230, length = 3, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 19, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -225, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -235, range = 7, radius = 4, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -235, range = 7, radius = 4, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = true }, } monster.defenses = { defense = 45, armor = 40, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -111,11 +111,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -123,13 +122,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/glooth_fairy.lua b/data-otservbr-global/monster/raids/glooth_fairy.lua index b8a0600380d..465861651ae 100644 --- a/data-otservbr-global/monster/raids/glooth_fairy.lua +++ b/data-otservbr-global/monster/raids/glooth_fairy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 80 + chance = 80, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { id = 3039, chance = 980 }, -- red gem { id = 21292, chance = 480 }, -- feedbag { id = 5880, chance = 980 }, -- iron ore - { id = 21144, chance = 280 } -- bowl of glooth soup + { id = 21144, chance = 280 }, -- bowl of glooth soup } monster.attacks = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/grand_mother_foulscale.lua b/data-otservbr-global/monster/raids/grand_mother_foulscale.lua index 25af6387347..a449d9da86e 100644 --- a/data-otservbr-global/monster/raids/grand_mother_foulscale.lua +++ b/data-otservbr-global/monster/raids/grand_mother_foulscale.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "dragon hatchlings", chance = 40, interval = 4000, count = 4 } - } + { name = "dragon hatchlings", chance = 40, interval = 4000, count = 4 }, + }, } monster.voices = { @@ -94,20 +94,20 @@ monster.loot = { { id = 3322, chance = 600 }, -- dragon hammer { id = 5877, chance = 100000 }, -- green dragon leather { id = 3416, chance = 500 }, -- dragon shield - { id = 7430, chance = 650 } -- dragonbone staff + { id = 7430, chance = 650 }, -- dragonbone staff } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -20, maxDamage = -170 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -45, maxDamage = -85, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -150, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 8, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -150, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { defense = 20, armor = 27, -- mitigation = ???, - { name = "combat", interval = 1000, chance = 17, type = COMBAT_HEALING, minDamage = 34, maxDamage = 66, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 17, type = COMBAT_HEALING, minDamage = 34, maxDamage = 66, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/grorlam.lua b/data-otservbr-global/monster/raids/grorlam.lua index 50034ba421a..0d81e4190bf 100644 --- a/data-otservbr-global/monster/raids/grorlam.lua +++ b/data-otservbr-global/monster/raids/grorlam.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 3 + chance = 3, } monster.strategiesTarget = { @@ -68,12 +68,12 @@ monster.loot = { { id = 3031, chance = 100000, maxCount = 20 }, -- gold coin { id = 3377, chance = 10000 }, -- scale armor { id = 1781, chance = 20000, maxCount = 5 }, -- small stone - { id = 3283, chance = 2500 } -- carlin sword + { id = 3283, chance = 2500 }, -- carlin sword } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 75, attack = 60 }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -200, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -200, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, } monster.defenses = { @@ -81,7 +81,7 @@ monster.defenses = { armor = 15, mitigation = 1.60, { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 6, speedChange = 270, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 1000, chance = 6, speedChange = 270, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -101,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/hirintror.lua b/data-otservbr-global/monster/raids/hirintror.lua index d6a8b9f3693..12a4d20d183 100644 --- a/data-otservbr-global/monster/raids/hirintror.lua +++ b/data-otservbr-global/monster/raids/hirintror.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { id = 237, chance = 20000, maxCount = 5 }, -- strong mana potion { id = 236, chance = 2000, maxCount = 5 }, -- strong health potion { id = 3028, chance = 2000, maxCount = 5 }, -- small diamond - { id = 3035, chance = 20000 } -- platinum coin + { id = 3035, chance = 20000 }, -- platinum coin } monster.attacks = { @@ -95,14 +95,14 @@ monster.attacks = { { name = "hirintror freeze", interval = 2000, chance = 15, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -75, maxDamage = -150, range = 7, radius = 3, shootEffect = CONST_ANI_ICE, effect = CONST_ME_BLOCKHIT, target = true }, { name = "ice golem paralyze", interval = 2000, chance = 11, target = false }, - { name = "hirintror skill reducer", interval = 2000, chance = 10, target = false } + { name = "hirintror skill reducer", interval = 2000, chance = 10, target = false }, } monster.defenses = { defense = 26, armor = 25, mitigation = 1.18, - { name = "hirintror summon", interval = 2000, chance = 18, target = false } + { name = "hirintror summon", interval = 2000, chance = 18, target = false }, } monster.elements = { @@ -122,11 +122,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -134,13 +133,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/lethal_lissy.lua b/data-otservbr-global/monster/raids/lethal_lissy.lua index 5e59270a248..246f9b0c632 100644 --- a/data-otservbr-global/monster/raids/lethal_lissy.lua +++ b/data-otservbr-global/monster/raids/lethal_lissy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 76, lookFeet = 115, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 1450 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,8 +60,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "Pirate Cutthroat", chance = 50, interval = 2000, count = 4 } - } + { name = "Pirate Cutthroat", chance = 50, interval = 2000, count = 4 }, + }, } monster.voices = { @@ -79,18 +79,18 @@ monster.loot = { { name = "plate armor", chance = 56250 }, { name = "knight armor", chance = 12500 }, { name = "very old piece of paper", chance = 25000 }, - { id = 6100, chance = 100000 } -- lethal lissy's shirt + { id = 6100, chance = 100000 }, -- lethal lissy's shirt } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, } monster.defenses = { defense = 50, armor = 35, mitigation = 1.20, - { name = "combat", interval = 6000, chance = 65, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 6000, chance = 65, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -110,7 +110,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/man_in_the_cave.lua b/data-otservbr-global/monster/raids/man_in_the_cave.lua index f765d8cde8a..ef50a957923 100644 --- a/data-otservbr-global/monster/raids/man_in_the_cave.lua +++ b/data-otservbr-global/monster/raids/man_in_the_cave.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 20, lookFeet = 76, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 5, summons = { - { name = "Monk", chance = 20, interval = 2000, count = 2 } - } + { name = "Monk", chance = 20, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -85,12 +85,12 @@ monster.loot = { { id = 5913, chance = 30000 }, -- brown piece of cloth { id = 3031, chance = 30000, maxCount = 39 }, -- gold coin { id = 7458, chance = 15000 }, -- fur cap - { id = 7290, chance = 8000 } -- shard + { id = 7290, chance = 8000 }, -- shard } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -62 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -95, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -95, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, } monster.defenses = { @@ -98,7 +98,7 @@ monster.defenses = { armor = 15, mitigation = 1.00, { name = "speed", interval = 2000, chance = 12, speedChange = 250, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 10, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 10, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/mawhawk.lua b/data-otservbr-global/monster/raids/mawhawk.lua index 91b046d91eb..9e879512cfa 100644 --- a/data-otservbr-global/monster/raids/mawhawk.lua +++ b/data-otservbr-global/monster/raids/mawhawk.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -86,13 +86,13 @@ monster.loot = { { id = 16120, chance = 10000, maxCount = 3 }, -- violet crystal shard { id = 16121, chance = 10000, maxCount = 3 }, -- green crystal shard { id = 16122, chance = 10000, maxCount = 5 }, -- green crystal splinter - { id = 16124, chance = 10000, maxCount = 5 } -- blue crystal splinter + { id = 16124, chance = 10000, maxCount = 5 }, -- blue crystal splinter } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 90 }, { name = "combat", interval = 1800, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -685, length = 7, spread = 3, effect = CONST_ME_STONES, target = false }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -590, radius = 6, effect = CONST_ME_BIGPLANTS, target = false } + { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -590, radius = 6, effect = CONST_ME_BIGPLANTS, target = false }, } monster.defenses = { @@ -118,11 +118,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -130,13 +129,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/morgaroth.lua b/data-otservbr-global/monster/raids/morgaroth.lua index 8a264312222..2e965cc99ec 100644 --- a/data-otservbr-global/monster/raids/morgaroth.lua +++ b/data-otservbr-global/monster/raids/morgaroth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 78, lookFeet = 79, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 10000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 6, summons = { - { name = "Demon", chance = 33, interval = 4000, count = 6 } - } + { name = "Demon", chance = 33, interval = 4000, count = 6 }, + }, } monster.voices = { @@ -132,7 +132,7 @@ monster.loot = { { name = "mastermind shield", chance = 4500 }, { name = "dragon robe", chance = 4500 }, { name = "molten plate", chance = 4500 }, - { name = "great shield", chance = 500 } + { name = "great shield", chance = 500 }, } monster.attacks = { @@ -146,7 +146,7 @@ monster.attacks = { { name = "combat", interval = 3000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -200, range = 7, radius = 3, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -400, range = 7, effect = CONST_ME_SOUND_RED, target = false, duration = 20000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -70, maxDamage = -320, radius = 3, effect = CONST_ME_HITAREA, target = true }, - { name = "dark torturer skill reducer", interval = 2000, chance = 5, target = false } + { name = "dark torturer skill reducer", interval = 2000, chance = 5, target = false }, } monster.defenses = { @@ -155,7 +155,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 800, maxDamage = 1100, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 9000, chance = 15, type = COMBAT_HEALING, minDamage = 3800, maxDamage = 4000, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 4000, chance = 80, speedChange = 470, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 } + { name = "speed", interval = 4000, chance = 80, speedChange = 470, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, } monster.elements = { @@ -175,11 +175,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -187,13 +186,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/necropharus.lua b/data-otservbr-global/monster/raids/necropharus.lua index 89594dfc3b6..0e429a57b71 100644 --- a/data-otservbr-global/monster/raids/necropharus.lua +++ b/data-otservbr-global/monster/raids/necropharus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 750 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -59,8 +59,8 @@ monster.summon = { summons = { { name = "Ghoul", chance = 20, interval = 1000, count = 2 }, { name = "Ghost", chance = 17, interval = 1000, count = 2 }, - { name = "Mummy", chance = 15, interval = 1000, count = 2 } - } + { name = "Mummy", chance = 15, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -85,7 +85,7 @@ monster.loot = { { id = 3441, chance = 9500 }, -- bone shield { id = 3079, chance = 4700 }, -- boots of haste { id = 3574, chance = 4700 }, -- mystic turban - { id = 237, chance = 4700 } -- strong mana potion + { id = 237, chance = 4700 }, -- strong mana potion } monster.attacks = { @@ -93,14 +93,14 @@ monster.attacks = { { name = "combat", interval = 3000, chance = 70, type = COMBAT_PHYSICALDAMAGE, minDamage = -60, maxDamage = -217, range = 5, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 1000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -120, range = 1, target = false }, { name = "combat", interval = 1000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -140, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "combat", interval = 1000, chance = 17, type = COMBAT_ENERGYDAMAGE, minDamage = -50, maxDamage = -140, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 1000, chance = 17, type = COMBAT_ENERGYDAMAGE, minDamage = -50, maxDamage = -140, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { defense = 25, armor = 25, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 0, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 0, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/ocyakao.lua b/data-otservbr-global/monster/raids/ocyakao.lua index 59a95f603ae..b2dfb1a4b3c 100644 --- a/data-otservbr-global/monster/raids/ocyakao.lua +++ b/data-otservbr-global/monster/raids/ocyakao.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 60 + chance = 60, } monster.strategiesTarget = { @@ -82,12 +82,12 @@ monster.loot = { { id = 7381, chance = 25050 }, -- mammoth whopper { id = 7441, chance = 62570 }, -- ice cube { id = 7159, chance = 12500 }, -- green perch - { id = 3580, chance = 12520 } -- northern pike + { id = 3580, chance = 12520 }, -- northern pike } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 25, attack = 50 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 70, maxDamage = -185, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLSTONE, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 70, maxDamage = -185, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLSTONE, target = true }, } monster.defenses = { @@ -113,11 +113,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -125,13 +124,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/orc_armor.lua b/data-otservbr-global/monster/raids/orc_armor.lua index 3bc02dee222..bc9d92b3ff6 100644 --- a/data-otservbr-global/monster/raids/orc_armor.lua +++ b/data-otservbr-global/monster/raids/orc_armor.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 950 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -61,7 +61,7 @@ monster.voices = { { text = "Ranat Ulderek!", yell = false }, { text = "Orc buta bana!", yell = false }, { text = "Ikem rambo zambo!", yell = false }, - { text = "Fetchi Maruk Buta", yell = false } + { text = "Fetchi Maruk Buta", yell = false }, } monster.loot = { @@ -87,18 +87,18 @@ monster.loot = { { id = 818, chance = 250 }, -- magma boots { id = 7395, chance = 80 }, -- orc trophy { id = 3049, chance = 80 }, -- stealth ring - { id = 3394, chance = 5000 } -- amazon armor + { id = 3394, chance = 5000 }, -- amazon armor } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, } monster.defenses = { defense = 35, armor = 35, - { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -111,14 +111,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/orc_helmet.lua b/data-otservbr-global/monster/raids/orc_helmet.lua index 79cae17c36d..7e84b432ef1 100644 --- a/data-otservbr-global/monster/raids/orc_helmet.lua +++ b/data-otservbr-global/monster/raids/orc_helmet.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 950 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -61,7 +61,7 @@ monster.voices = { { text = "Ranat Ulderek!", yell = false }, { text = "Orc buta bana!", yell = false }, { text = "Ikem rambo zambo!", yell = false }, - { text = "Fetchi Maruk Buta", yell = false } + { text = "Fetchi Maruk Buta", yell = false }, } monster.loot = { @@ -87,18 +87,18 @@ monster.loot = { { id = 818, chance = 250 }, -- magma boots { id = 7395, chance = 80 }, -- orc trophy { id = 3049, chance = 80 }, -- stealth ring - { id = 3393, chance = 5000 } -- amazon helmet + { id = 3393, chance = 5000 }, -- amazon helmet } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, } monster.defenses = { defense = 35, armor = 35, - { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -111,14 +111,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/orc_sambackpack.lua b/data-otservbr-global/monster/raids/orc_sambackpack.lua index 759c50f2d26..340363e9c55 100644 --- a/data-otservbr-global/monster/raids/orc_sambackpack.lua +++ b/data-otservbr-global/monster/raids/orc_sambackpack.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 70 @@ -23,7 +23,7 @@ monster.manaCost = 300 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -60,7 +60,7 @@ monster.voices = { chance = 10, { text = "Grak brrretz!", yell = false }, { text = "Grow truk grrrrr.", yell = false }, - { text = "Prek tars, dekklep zurk.", yell = false } + { text = "Prek tars, dekklep zurk.", yell = false }, } monster.loot = { @@ -74,16 +74,16 @@ monster.loot = { { name = "meat", chance = 10160 }, { name = "orc tooth", chance = 210 }, { name = "orc leather", chance = 590 }, - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -96,14 +96,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/orc_shield.lua b/data-otservbr-global/monster/raids/orc_shield.lua index 10dacd34986..f47362cff7f 100644 --- a/data-otservbr-global/monster/raids/orc_shield.lua +++ b/data-otservbr-global/monster/raids/orc_shield.lua @@ -11,7 +11,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 950 @@ -23,7 +23,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -47,12 +47,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -61,7 +61,7 @@ monster.voices = { { text = "Ranat Ulderek!", yell = false }, { text = "Orc buta bana!", yell = false }, { text = "Ikem rambo zambo!", yell = false }, - { text = "Fetchi Maruk Buta", yell = false } + { text = "Fetchi Maruk Buta", yell = false }, } monster.loot = { @@ -87,18 +87,18 @@ monster.loot = { { id = 818, chance = 250 }, -- magma boots { id = 7395, chance = 80 }, -- orc trophy { id = 3049, chance = 80 }, -- stealth ring - { id = 3437, chance = 5000 } -- amazon shield + { id = 3437, chance = 5000 }, -- amazon shield } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, } monster.defenses = { defense = 35, armor = 35, - { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -111,14 +111,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/orshabaal.lua b/data-otservbr-global/monster/raids/orshabaal.lua index 734d145c341..7d7ef6052df 100644 --- a/data-otservbr-global/monster/raids/orshabaal.lua +++ b/data-otservbr-global/monster/raids/orshabaal.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "demon", chance = 10, interval = 1000, count = 4 } - } + { name = "demon", chance = 10, interval = 1000, count = 4 }, + }, } monster.voices = { @@ -125,7 +125,7 @@ monster.loot = { { name = "great health potion", chance = 20000 }, { name = "great spirit potion", chance = 12500 }, { name = "ultimate health potion", chance = 33333 }, - { name = "gold ingot", chance = 6666 } + { name = "gold ingot", chance = 6666 }, } monster.attacks = { @@ -135,7 +135,7 @@ monster.attacks = { { name = "effect", interval = 1000, chance = 6, radius = 5, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -310, maxDamage = -600, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "firefield", interval = 1000, chance = 10, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -850, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -850, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { @@ -144,7 +144,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 1000, chance = 9, type = COMBAT_HEALING, minDamage = 1500, maxDamage = 2500, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 1000, chance = 17, type = COMBAT_HEALING, minDamage = 600, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 1000, chance = 5, speedChange = 1901, effect = CONST_ME_MAGIC_RED, target = false, duration = 7000 } + { name = "speed", interval = 1000, chance = 5, speedChange = 1901, effect = CONST_ME_MAGIC_RED, target = false, duration = 7000 }, } monster.elements = { @@ -164,11 +164,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -176,13 +175,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/ron_the_ripper.lua b/data-otservbr-global/monster/raids/ron_the_ripper.lua index 530bebf35c6..0c2e2c9d27e 100644 --- a/data-otservbr-global/monster/raids/ron_the_ripper.lua +++ b/data-otservbr-global/monster/raids/ron_the_ripper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 117, lookFeet = 59, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.health = 1500 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -73,19 +73,19 @@ monster.loot = { { id = 3370, chance = 18000 }, -- knight armor { id = 3577, chance = 18000 }, -- meat { id = 5926, chance = 18000 }, -- pirate backpack - { id = 3028, chance = 9000 } -- small diamond + { id = 3028, chance = 9000 }, -- small diamond } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, - { name = "combat", interval = 4000, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -160, shootEffect = CONST_ANI_THROWINGKNIFE, target = false } + { name = "combat", interval = 4000, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -160, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, } monster.defenses = { defense = 50, armor = 35, mitigation = 1.20, - { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/rottie_the_rotworm.lua b/data-otservbr-global/monster/raids/rottie_the_rotworm.lua index 6c8b517a3ef..59443bdf20e 100644 --- a/data-otservbr-global/monster/raids/rottie_the_rotworm.lua +++ b/data-otservbr-global/monster/raids/rottie_the_rotworm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 65 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -71,11 +71,11 @@ monster.loot = { { id = 3582, chance = 3160, maxCount = 2 }, -- ham { id = 3264, chance = 3335 }, -- sword { id = 3300, chance = 900 }, -- katana - { id = 3374, chance = 1250 } -- legion helmet + { id = 3374, chance = 1250 }, -- legion helmet } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 30, attack = 30 } + { name = "melee", interval = 2000, chance = 100, skill = 30, attack = 30 }, } monster.defenses = { @@ -101,7 +101,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/rotworm_queen.lua b/data-otservbr-global/monster/raids/rotworm_queen.lua index db0a737b263..a632c1345d2 100644 --- a/data-otservbr-global/monster/raids/rotworm_queen.lua +++ b/data-otservbr-global/monster/raids/rotworm_queen.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -70,11 +70,11 @@ monster.voices = { monster.loot = { { id = 3031, chance = 100000, maxCount = 47 }, -- gold coin { id = 8143, chance = 3333 }, -- gland - { id = 3492, chance = 20000, maxCount = 45 } -- worm + { id = 3492, chance = 20000, maxCount = 45 }, -- worm } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = -5, maxDamage = -80 } + { name = "melee", interval = 2000, chance = 100, minDamage = -5, maxDamage = -80 }, } monster.defenses = { @@ -100,7 +100,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/sir_valorcrest.lua b/data-otservbr-global/monster/raids/sir_valorcrest.lua index 2cde5489d23..43e3b74bbb5 100644 --- a/data-otservbr-global/monster/raids/sir_valorcrest.lua +++ b/data-otservbr-global/monster/raids/sir_valorcrest.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "Vampire", chance = 30, interval = 2000, count = 4 } - } + { name = "Vampire", chance = 30, interval = 2000, count = 4 }, + }, } monster.voices = { @@ -85,12 +85,12 @@ monster.loot = { { id = 8192, chance = 100000 }, -- vampire lord token { id = 3035, chance = 50000, maxCount = 5 }, -- platinum coin { id = 3031, chance = 100000, maxCount = 93 }, -- gold coin - { id = 3434, chance = 6300 } -- vampire shield + { id = 3434, chance = 6300 }, -- vampire shield } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 95 }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -190, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true } + { name = "combat", interval = 1000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -190, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { @@ -98,7 +98,7 @@ monster.defenses = { armor = 38, mitigation = 1.04, { name = "combat", interval = 1000, chance = 12, type = COMBAT_HEALING, minDamage = 100, maxDamage = 235, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 3000, chance = 25, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 3000, chance = 25, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/spawn_of_the_welter.lua b/data-otservbr-global/monster/raids/spawn_of_the_welter.lua index da6e21f4f04..44ea6d5e225 100644 --- a/data-otservbr-global/monster/raids/spawn_of_the_welter.lua +++ b/data-otservbr-global/monster/raids/spawn_of_the_welter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1850 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,12 +62,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -270 }, - { name = "poisonfield", interval = 2000, chance = 25, range = 7, radius = 3, shootEffect = CONST_ANI_POISON, target = true } + { name = "poisonfield", interval = 2000, chance = 25, range = 7, radius = 3, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { @@ -75,7 +74,7 @@ monster.defenses = { armor = 27, mitigation = 1.08, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 260, maxDamage = 407, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "spawn of the welter heal", interval = 2000, chance = 20, target = false } + { name = "spawn of the welter heal", interval = 2000, chance = 20, target = false }, } monster.elements = { @@ -95,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/spyrat_facing_east.lua b/data-otservbr-global/monster/raids/spyrat_facing_east.lua index 8e6003afb7b..ba1e56d1628 100644 --- a/data-otservbr-global/monster/raids/spyrat_facing_east.lua +++ b/data-otservbr-global/monster/raids/spyrat_facing_east.lua @@ -5,7 +5,7 @@ monster.name = "Spyrat" monster.description = "You see a spyrat" monster.experience = 3750 monster.outfit = { - lookTypeEx = 30375 + lookTypeEx = 30375, } monster.raceId = 2037 @@ -18,7 +18,7 @@ monster.Bestiary = { CharmsPoints = 0, Stars = 0, Occurrence = 0, - Locations = "Raids in Darashia, Krailos, Liberty Bay." + Locations = "Raids in Darashia, Krailos, Liberty Bay.", } monster.health = 3000 @@ -30,8 +30,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 - + chance = 0, } monster.strategiesTarget = { @@ -58,12 +57,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -71,22 +70,20 @@ monster.voices = { chance = 10, { text = "Catch me if you can!!", yell = false }, { text = "Never cross the rat line!", yell = false }, - { text = "Smoke on the water!", yell = false } + { text = "Smoke on the water!", yell = false }, } -monster.loot = { - -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -20, maxDamage = -500 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -150, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -250, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -250, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -99,14 +96,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/spyrat_facing_north.lua b/data-otservbr-global/monster/raids/spyrat_facing_north.lua index e119cc17581..7917af61c28 100644 --- a/data-otservbr-global/monster/raids/spyrat_facing_north.lua +++ b/data-otservbr-global/monster/raids/spyrat_facing_north.lua @@ -5,7 +5,7 @@ monster.name = "Spyrat" monster.description = "You see a spyrat" monster.experience = 3750 monster.outfit = { - lookTypeEx = 30376 + lookTypeEx = 30376, } monster.raceId = 2037 @@ -18,7 +18,7 @@ monster.Bestiary = { CharmsPoints = 0, Stars = 0, Occurrence = 0, - Locations = "Raids in Darashia, Krailos, Liberty Bay." + Locations = "Raids in Darashia, Krailos, Liberty Bay.", } monster.health = 3000 @@ -30,8 +30,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 - + chance = 0, } monster.strategiesTarget = { @@ -58,12 +57,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -71,22 +70,20 @@ monster.voices = { chance = 10, { text = "Catch me if you can!!", yell = false }, { text = "Never cross the rat line!", yell = false }, - { text = "Smoke on the water!", yell = false } + { text = "Smoke on the water!", yell = false }, } -monster.loot = { - -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -20, maxDamage = -500 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -150, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -250, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -250, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -99,14 +96,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/spyrat_facing_south.lua b/data-otservbr-global/monster/raids/spyrat_facing_south.lua index ad39980347f..9e43c5cd42d 100644 --- a/data-otservbr-global/monster/raids/spyrat_facing_south.lua +++ b/data-otservbr-global/monster/raids/spyrat_facing_south.lua @@ -5,7 +5,7 @@ monster.name = "Spyrat" monster.description = "You see a spyrat" monster.experience = 3750 monster.outfit = { - lookTypeEx = 30377 + lookTypeEx = 30377, } monster.raceId = 2037 @@ -18,7 +18,7 @@ monster.Bestiary = { CharmsPoints = 0, Stars = 0, Occurrence = 0, - Locations = "Raids in Darashia, Krailos, Liberty Bay." + Locations = "Raids in Darashia, Krailos, Liberty Bay.", } monster.health = 3000 @@ -30,8 +30,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 - + chance = 0, } monster.strategiesTarget = { @@ -58,12 +57,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -71,22 +70,20 @@ monster.voices = { chance = 10, { text = "Catch me if you can!!", yell = false }, { text = "Never cross the rat line!", yell = false }, - { text = "Smoke on the water!", yell = false } + { text = "Smoke on the water!", yell = false }, } -monster.loot = { - -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -20, maxDamage = -500 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -150, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -250, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -250, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -99,14 +96,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/spyrat_facing_west.lua b/data-otservbr-global/monster/raids/spyrat_facing_west.lua index 3e1494f0d04..af3274e8572 100644 --- a/data-otservbr-global/monster/raids/spyrat_facing_west.lua +++ b/data-otservbr-global/monster/raids/spyrat_facing_west.lua @@ -5,7 +5,7 @@ monster.name = "Spyrat" monster.description = "You see a spyrat" monster.experience = 3750 monster.outfit = { - lookTypeEx = 30378 + lookTypeEx = 30378, } monster.raceId = 2037 @@ -18,7 +18,7 @@ monster.Bestiary = { CharmsPoints = 0, Stars = 0, Occurrence = 0, - Locations = "Raids in Darashia, Krailos, Liberty Bay." + Locations = "Raids in Darashia, Krailos, Liberty Bay.", } monster.health = 3000 @@ -30,8 +30,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 0, - chance = 0 - + chance = 0, } monster.strategiesTarget = { @@ -58,12 +57,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -71,22 +70,20 @@ monster.voices = { chance = 10, { text = "Catch me if you can!!", yell = false }, { text = "Never cross the rat line!", yell = false }, - { text = "Smoke on the water!", yell = false } + { text = "Smoke on the water!", yell = false }, } -monster.loot = { - -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -20, maxDamage = -500 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -150, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -250, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -250, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { defense = 10, - armor = 10 + armor = 10, } monster.elements = { @@ -99,14 +96,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/the_horned_fox.lua b/data-otservbr-global/monster/raids/the_horned_fox.lua index fa9778bcf05..f24871b4e22 100644 --- a/data-otservbr-global/monster/raids/the_horned_fox.lua +++ b/data-otservbr-global/monster/raids/the_horned_fox.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 7990 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -48,12 +48,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { @@ -61,8 +61,8 @@ monster.summon = { summons = { { name = "Minotaur Hunter", chance = 15, interval = 1000, count = 2 }, { name = "Minotaur Amazon", chance = 15, interval = 1000, count = 1 }, - { name = "Worm Princess", chance = 15, interval = 1000, count = 2 } - } + { name = "Worm Princess", chance = 15, interval = 1000, count = 2 }, + }, } monster.voices = { @@ -71,7 +71,7 @@ monster.voices = { { text = "You will never get me!", yell = false }, { text = "I'll be back!", yell = false }, { text = "Catch me, if you can!", yell = false }, - { text = "Help me, Gang!", yell = false } + { text = "Help me, Gang!", yell = false }, } monster.loot = { @@ -102,7 +102,7 @@ monster.defenses = { defense = 33, armor = 30, { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 80, maxDamage = 100, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "invisible", interval = 1000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 1000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -115,14 +115,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -1 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = -1 } + { type = COMBAT_DEATHDAMAGE, percent = -1 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/the_pale_count.lua b/data-otservbr-global/monster/raids/the_pale_count.lua index e90d5bfb8d3..c3cc0e3dfe0 100644 --- a/data-otservbr-global/monster/raids/the_pale_count.lua +++ b/data-otservbr-global/monster/raids/the_pale_count.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "Nightfiend", chance = 10, interval = 2000, count = 4 } - } + { name = "Nightfiend", chance = 10, interval = 2000, count = 4 }, + }, } monster.voices = { @@ -108,14 +108,14 @@ monster.loot = { { id = 3027, chance = 50000, maxCount = 5 }, -- black pearl { id = 3029, chance = 50000, maxCount = 5 }, -- small sapphire { id = 3032, chance = 50000, maxCount = 5 }, -- small emerald - { id = 3036, chance = 10000 } -- violet gem + { id = 3036, chance = 10000 }, -- violet gem } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 80, attack = 120 }, { name = "speed", interval = 1000, chance = 17, speedChange = -600, range = 7, radius = 4, target = true, duration = 1500 }, { name = "combat", interval = 2000, chance = 21, type = COMBAT_ICEDAMAGE, minDamage = -130, maxDamage = -350, range = 6, radius = 2, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_GIANTICE, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -60, maxDamage = -120, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_CARNIPHILA, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -60, maxDamage = -120, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_CARNIPHILA, target = false }, } monster.defenses = { @@ -141,11 +141,10 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -153,13 +152,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/the_voice_of_ruin.lua b/data-otservbr-global/monster/raids/the_voice_of_ruin.lua index 63b82b5d179..b115cb7ff74 100644 --- a/data-otservbr-global/monster/raids/the_voice_of_ruin.lua +++ b/data-otservbr-global/monster/raids/the_voice_of_ruin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 40 + chance = 40, } monster.strategiesTarget = { @@ -76,7 +76,7 @@ monster.loot = { { id = 10410, chance = 3800 }, -- cursed shoulder spikes { id = 9058, chance = 3800 }, -- gold ingot { id = 10408, chance = 3800 }, -- spiked iron ball - { id = 10386, chance = 3800 } -- zaoan shoes + { id = 10386, chance = 3800 }, -- zaoan shoes } monster.attacks = { @@ -84,14 +84,14 @@ monster.attacks = { -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -440, maxDamage = -820, length = 3, spread = 2, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -290, maxDamage = -540, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -190, maxDamage = -480, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -190, maxDamage = -480, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { defense = 45, armor = 45, mitigation = 1.86, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 475, maxDamage = 625, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 475, maxDamage = 625, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/the_welter.lua b/data-otservbr-global/monster/raids/the_welter.lua index 4d40dea9248..addb7008d75 100644 --- a/data-otservbr-global/monster/raids/the_welter.lua +++ b/data-otservbr-global/monster/raids/the_welter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "spawn of the welter", chance = 16, interval = 2000, count = 1 } - } + { name = "spawn of the welter", chance = 16, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -94,7 +94,7 @@ monster.loot = { { id = 4839, chance = 2000 }, -- hydra egg { id = 237, chance = 20000, maxCount = 2 }, -- strong mana potion { id = 3035, chance = 20000, maxCount = 10 }, -- platinum coin - { id = 3031, chance = 20000, maxCount = 100 } -- gold coin + { id = 3031, chance = 20000, maxCount = 100 }, -- gold coin } monster.attacks = { @@ -104,7 +104,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -450, length = 8, spread = 3, effect = CONST_ME_BLACKSMOKE, target = false }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_ICEDAMAGE, minDamage = -150, maxDamage = -270, range = 7, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_ICEDAMAGE, minDamage = -120, maxDamage = -230, range = 1, radius = 1, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, - { name = "the welter paralyze", interval = 2000, chance = 9, target = false } + { name = "the welter paralyze", interval = 2000, chance = 9, target = false }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.defenses = { { name = "combat", interval = 2000, chance = 32, type = COMBAT_HEALING, minDamage = 250, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_HEALING, minDamage = 150, maxDamage = 700, radius = 5, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "the welter summon2", interval = 2000, chance = 9, target = false }, - { name = "the welter heal", interval = 2000, chance = 8, target = false } + { name = "the welter heal", interval = 2000, chance = 8, target = false }, } monster.elements = { @@ -134,11 +134,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -146,13 +145,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/tyrn.lua b/data-otservbr-global/monster/raids/tyrn.lua index 94b4fd1bf55..0c19ac9944f 100644 --- a/data-otservbr-global/monster/raids/tyrn.lua +++ b/data-otservbr-global/monster/raids/tyrn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { id = 3032, chance = 15000, maxCount = 5 }, -- small emerald { id = 3029, chance = 15000, maxCount = 5 }, -- small sapphire { id = 9057, chance = 15000, maxCount = 5 }, -- small topaz - { id = 3030, chance = 15000, maxCount = 5 } -- small ruby + { id = 3030, chance = 15000, maxCount = 5 }, -- small ruby } monster.attacks = { @@ -99,7 +99,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 33, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -190, range = 7, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYAREA, target = true }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -300, range = 7, radius = 4, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONHIT, target = true }, { name = "tyrn electrify", interval = 2000, chance = 11, target = false }, - { name = "tyrn skill reducer", interval = 2000, chance = 14, target = false } + { name = "tyrn skill reducer", interval = 2000, chance = 14, target = false }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.defenses = { -- mitigation = ???, { name = "combat", interval = 2000, chance = 33, type = COMBAT_HEALING, minDamage = 200, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "invisible", interval = 2000, chance = 11, effect = CONST_ME_ENERGYHIT }, - { name = "tyrn heal", interval = 1000, chance = 100, target = false } + { name = "tyrn heal", interval = 1000, chance = 100, target = false }, } monster.elements = { @@ -128,11 +128,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -140,13 +139,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/white_pale.lua b/data-otservbr-global/monster/raids/white_pale.lua index cbe7b36803b..06b6dcab4f3 100644 --- a/data-otservbr-global/monster/raids/white_pale.lua +++ b/data-otservbr-global/monster/raids/white_pale.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -78,7 +78,7 @@ monster.loot = { { id = 3577, chance = 70000, maxCount = 4 }, -- meat { id = 9692, chance = 70000 }, -- lump of dirt { id = 3327, chance = 70000 }, -- daramian mace - { id = 10275, chance = 70000 } -- carrion worm fang + { id = 10275, chance = 70000 }, -- carrion worm fang } monster.attacks = { @@ -86,14 +86,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 14, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -110, radius = 5, effect = CONST_ME_SMALLPLANTS, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 12, minDamage = -200, maxDamage = -300, radius = 3, effect = CONST_ME_HITAREA, target = false }, - { name = "white pale paralyze", interval = 2000, chance = 11, target = false } + { name = "white pale paralyze", interval = 2000, chance = 11, target = false }, } monster.defenses = { defense = 11, armor = 8, mitigation = 0.87, - { name = "white pale summon", interval = 2000, chance = 12, target = false } + { name = "white pale summon", interval = 2000, chance = 12, target = false }, } monster.elements = { @@ -113,11 +113,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -125,13 +124,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/raids/xenia.lua b/data-otservbr-global/monster/raids/xenia.lua index 4921e5c33e8..9df19645d2e 100644 --- a/data-otservbr-global/monster/raids/xenia.lua +++ b/data-otservbr-global/monster/raids/xenia.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 39, lookFeet = 76, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -74,19 +74,19 @@ monster.loot = { { id = 3114, chance = 100000, maxCount = 2 }, -- skull { name = "gold coin", chance = 66666, maxCount = 34 }, { name = "sabre", chance = 33000 }, - { name = "studded shield", chance = 33000 } + { name = "studded shield", chance = 33000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, - { name = "drunk", interval = 2000, chance = 10, length = 3, spread = 2, effect = CONST_ME_SOUND_RED, target = false, duration = 5000 } + { name = "drunk", interval = 2000, chance = 10, length = 3, spread = 2, effect = CONST_ME_SOUND_RED, target = false, duration = 5000 }, } monster.defenses = { defense = 15, armor = 15, mitigation = 0.71, - { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/yakchal.lua b/data-otservbr-global/monster/raids/yakchal.lua index af1ea5cf6a7..840d370a8f8 100644 --- a/data-otservbr-global/monster/raids/yakchal.lua +++ b/data-otservbr-global/monster/raids/yakchal.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 85, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 5 + chance = 5, } monster.strategiesTarget = { @@ -65,8 +65,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "Ice Golem", chance = 13, interval = 1000, count = 4 } - } + { name = "Ice Golem", chance = 13, interval = 1000, count = 4 }, + }, } monster.voices = { @@ -98,21 +98,21 @@ monster.loot = { { id = 3052, chance = 4700 }, -- life ring { id = 7410, chance = 4700 }, -- queen's sceptre { id = 3079, chance = 1500 }, -- boots of haste - { id = 3732, chance = 1500 } -- green mushroom + { id = 3732, chance = 1500 }, -- green mushroom } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -389 }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -430, radius = 4, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEAREA, target = true }, { name = "combat", interval = 3000, chance = 34, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -300, range = 7, radius = 3, shootEffect = CONST_ANI_SNOWBALL, target = true }, - { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, } monster.defenses = { defense = 20, armor = 15, mitigation = 1.74, - { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 1000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/zomba.lua b/data-otservbr-global/monster/raids/zomba.lua index 0f67a752d7f..d0a871b206c 100644 --- a/data-otservbr-global/monster/raids/zomba.lua +++ b/data-otservbr-global/monster/raids/zomba.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -72,11 +72,11 @@ monster.loot = { { id = 3031, chance = 100000, maxCount = 25 }, -- gold coin { id = 9691, chance = 100000, maxCount = 2 }, -- lion's mane { id = 3035, chance = 25000 }, -- platinum coin - { id = 3052, chance = 12500 } -- life ring + { id = 3052, chance = 12500 }, -- life ring } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 30, attack = 20 } + { name = "melee", interval = 2000, chance = 100, skill = 30, attack = 20 }, } monster.defenses = { @@ -102,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/raids/zulazza_the_corruptor.lua b/data-otservbr-global/monster/raids/zulazza_the_corruptor.lua index 311c0bc7df0..b7d14d9c966 100644 --- a/data-otservbr-global/monster/raids/zulazza_the_corruptor.lua +++ b/data-otservbr-global/monster/raids/zulazza_the_corruptor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,7 +94,7 @@ monster.loot = { { id = 3414, chance = 5500 }, -- mastermind shield { id = 3010, chance = 10500 }, -- emerald bangle { id = 8063, chance = 5500 }, -- paladin armor - { id = 3415, chance = 5500 } -- guardian shield + { id = 3415, chance = 5500 }, -- guardian shield } monster.attacks = { @@ -102,14 +102,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -800, radius = 3, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -130, range = 7, effect = CONST_ME_MAGIC_GREEN, target = true }, - { name = "speed", interval = 2000, chance = 20, speedChange = -500, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -500, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, } monster.defenses = { defense = 119, armor = 96, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 2000, maxDamage = 3000, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 2000, maxDamage = 3000, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,11 +129,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -141,13 +140,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/adult_goanna.lua b/data-otservbr-global/monster/reptiles/adult_goanna.lua index 8a8f511cc94..da07033e656 100644 --- a/data-otservbr-global/monster/reptiles/adult_goanna.lua +++ b/data-otservbr-global/monster/reptiles/adult_goanna.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1818 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt." + Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt.", } monster.health = 8300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,21 +88,21 @@ monster.loot = { { name = "wood cape", chance = 1800 }, { name = "scared frog", chance = 2100 }, { name = "sacred tree amulet", chance = 2500 }, - { name = "small tortoise", chance = 1800 } + { name = "small tortoise", chance = 1800 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350, condition = { type = CONDITION_POISON, totalDamage = 19, interval = 4000 } }, { name = "wave t", interval = 2000, chance = 10, minDamage = -250, maxDamage = -380, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -450, maxDamage = -550, range = 3, radius = 1, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -210, maxDamage = -300, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -210, maxDamage = -300, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { defense = 84, armor = 84, mitigation = 2.60, - { name = "speed", interval = 2000, chance = 5, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 5, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/boar_man.lua b/data-otservbr-global/monster/reptiles/boar_man.lua index 24631218c74..b2568e7ce2a 100644 --- a/data-otservbr-global/monster/reptiles/boar_man.lua +++ b/data-otservbr-global/monster/reptiles/boar_man.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2339 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Ingol" + Locations = "Ingol", } monster.health = 9200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,12 +59,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -94,7 +94,6 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -386, maxDamage = -480, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -60, maxDamage = -140, range = 1, radius = 4, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -311, maxDamage = -400, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, - } monster.defenses = { @@ -112,14 +111,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 5 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 5 } + { type = COMBAT_DEATHDAMAGE, percent = 5 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/carnivostrich.lua b/data-otservbr-global/monster/reptiles/carnivostrich.lua index f5ec277078a..e5fa7948d13 100644 --- a/data-otservbr-global/monster/reptiles/carnivostrich.lua +++ b/data-otservbr-global/monster/reptiles/carnivostrich.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2341 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Ingol" + Locations = "Ingol", } monster.health = 8250 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,12 +59,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -114,14 +114,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = -20 }, - { type = COMBAT_DEATHDAMAGE, percent = 5 } + { type = COMBAT_DEATHDAMAGE, percent = 5 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/cobra.lua b/data-otservbr-global/monster/reptiles/cobra.lua index 73c98f458fe..e05a21ad4d7 100644 --- a/data-otservbr-global/monster/reptiles/cobra.lua +++ b/data-otservbr-global/monster/reptiles/cobra.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 81 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Ankrahmun Library Tomb, Tarpit Tomb, Mountain Tomb, Peninsula Tomb, Darama, Tiquanda, \z - Drefia, Forbidden Lands, Arena Quarter, Lion's Rock." + Drefia, Forbidden Lands, Arena Quarter, Lion's Rock.", } monster.health = 65 @@ -36,7 +36,7 @@ monster.manaCost = 275 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -76,12 +76,12 @@ monster.voices = { } monster.loot = { - { name = "cobra tongue", chance = 5000 } + { name = "cobra tongue", chance = 5000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0, condition = { type = CONDITION_POISON, totalDamage = 100, interval = 4000 } }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -20, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -20, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { @@ -107,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/corrupt_naga.lua b/data-otservbr-global/monster/reptiles/corrupt_naga.lua index 138ae1bb8ff..bcdd68ee8f6 100644 --- a/data-otservbr-global/monster/reptiles/corrupt_naga.lua +++ b/data-otservbr-global/monster/reptiles/corrupt_naga.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 78, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 5990 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,7 +94,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/crape_man.lua b/data-otservbr-global/monster/reptiles/crape_man.lua index 6577f2d07ed..031dbf2ca48 100644 --- a/data-otservbr-global/monster/reptiles/crape_man.lua +++ b/data-otservbr-global/monster/reptiles/crape_man.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2337 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Ingol" + Locations = "Ingol", } monster.health = 9150 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,12 +59,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -112,14 +112,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 5 } + { type = COMBAT_DEATHDAMAGE, percent = 5 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/crocodile.lua b/data-otservbr-global/monster/reptiles/crocodile.lua index 4bd1637bdc4..cf15a880f69 100644 --- a/data-otservbr-global/monster/reptiles/crocodile.lua +++ b/data-otservbr-global/monster/reptiles/crocodile.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 119 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "In the crocodile cave and the jungle east of Port Hope as well as the swamp to the north, \z - Fenrock, Arena and Zoo Quarter, Trade Quarter, Talahu, also located on Meriana and Laguna Islands." + Fenrock, Arena and Zoo Quarter, Trade Quarter, Talahu, also located on Meriana and Laguna Islands.", } monster.health = 105 @@ -36,7 +36,7 @@ monster.manaCost = 350 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -78,11 +78,11 @@ monster.loot = { { name = "gold coin", chance = 50000, maxCount = 10 }, { name = "ham", chance = 40000 }, { name = "crocodile boots", chance = 100 }, - { name = "piece of crocodile leather", chance = 20180 } + { name = "piece of crocodile leather", chance = 20180 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/dreadmaw.lua b/data-otservbr-global/monster/reptiles/dreadmaw.lua index ffa5a7d27c9..2a8d79d9ce8 100644 --- a/data-otservbr-global/monster/reptiles/dreadmaw.lua +++ b/data-otservbr-global/monster/reptiles/dreadmaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -68,16 +68,16 @@ monster.loot = { { name = "gold coin", chance = 99990, maxCount = 10 }, { name = "gold ingot", chance = 99990 }, { name = "ham", chance = 50000 }, - { name = "piece of crocodile leather", chance = 99990 } + { name = "piece of crocodile leather", chance = 99990 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, -- mitigation = ???, } @@ -98,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/emerald_tortoise.lua b/data-otservbr-global/monster/reptiles/emerald_tortoise.lua index 20f0237ee17..e2375af210e 100644 --- a/data-otservbr-global/monster/reptiles/emerald_tortoise.lua +++ b/data-otservbr-global/monster/reptiles/emerald_tortoise.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2268 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Sparkling Pools" + Locations = "Sparkling Pools", } monster.health = 22300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/fungosaurus.lua b/data-otservbr-global/monster/reptiles/fungosaurus.lua index 691cccec945..d97e91d200d 100644 --- a/data-otservbr-global/monster/reptiles/fungosaurus.lua +++ b/data-otservbr-global/monster/reptiles/fungosaurus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 30000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,7 +92,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/harpy.lua b/data-otservbr-global/monster/reptiles/harpy.lua index 71fd483c0a6..01108f33336 100644 --- a/data-otservbr-global/monster/reptiles/harpy.lua +++ b/data-otservbr-global/monster/reptiles/harpy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2340 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Ingol" + Locations = "Ingol", } monster.health = 7700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,12 +59,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -115,14 +115,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = -5 } + { type = COMBAT_DEATHDAMAGE, percent = -5 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/killer_caiman.lua b/data-otservbr-global/monster/reptiles/killer_caiman.lua index 098ae02da50..5169a20f5b5 100644 --- a/data-otservbr-global/monster/reptiles/killer_caiman.lua +++ b/data-otservbr-global/monster/reptiles/killer_caiman.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 627 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Northern Zao Plantations, Souleater Mountains, Muggy Plains, \z - Killer Caiman Cave in the Zao Steppe, Chyllfroest." + Killer Caiman Cave in the Zao Steppe, Chyllfroest.", } monster.health = 1500 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -82,18 +82,18 @@ monster.loot = { { name = "crocodile boots", chance = 510 }, { id = 281, chance = 1130 }, -- giant shimmering pearl (green) { name = "piece of crocodile leather", chance = 25430 }, - { name = "bunch of ripe rice", chance = 4800, maxCount = 2 } + { name = "bunch of ripe rice", chance = 4800, maxCount = 2 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -180 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -180 }, } monster.defenses = { defense = 35, armor = 40, mitigation = 0.38, - { name = "speed", interval = 2000, chance = 15, speedChange = 700, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 700, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/liodile.lua b/data-otservbr-global/monster/reptiles/liodile.lua index 874c9a68fac..77676a87a6b 100644 --- a/data-otservbr-global/monster/reptiles/liodile.lua +++ b/data-otservbr-global/monster/reptiles/liodile.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2338 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Ingol" + Locations = "Ingol", } monster.health = 8600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,12 +59,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -108,14 +108,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = -20 }, - { type = COMBAT_DEATHDAMAGE, percent = 5 } + { type = COMBAT_DEATHDAMAGE, percent = 5 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/lizard_chosen.lua b/data-otservbr-global/monster/reptiles/lizard_chosen.lua index 84e59930be8..fc6ddad3d4a 100644 --- a/data-otservbr-global/monster/reptiles/lizard_chosen.lua +++ b/data-otservbr-global/monster/reptiles/lizard_chosen.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 620 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Temple of Equilibrium (Zao) Hidden stairs, Fire Dragon Dojo, Corruption Hole, Razzachai." + Locations = "Temple of Equilibrium (Zao) Hidden stairs, Fire Dragon Dojo, Corruption Hole, Razzachai.", } monster.health = 3050 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,7 +92,7 @@ monster.loot = { { name = "spiked iron ball", chance = 9890 }, { name = "corrupted flag", chance = 3350 }, { name = "cursed shoulder spikes", chance = 5800 }, - { name = "scale of corruption", chance = 2870 } + { name = "scale of corruption", chance = 2870 }, } monster.attacks = { @@ -100,14 +100,14 @@ monster.attacks = { -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -240, maxDamage = -320, length = 3, spread = 2, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -190, maxDamage = -340, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -90, maxDamage = -180, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -90, maxDamage = -180, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { defense = 45, armor = 28, mitigation = 0.94, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 75, maxDamage = 125, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 75, maxDamage = 125, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/lizard_dragon_priest.lua b/data-otservbr-global/monster/reptiles/lizard_dragon_priest.lua index b64dc567496..9d658b0f6f8 100644 --- a/data-otservbr-global/monster/reptiles/lizard_dragon_priest.lua +++ b/data-otservbr-global/monster/reptiles/lizard_dragon_priest.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 623 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Zzaion, Zao Palace and its antechambers, Muggy Plains, Corruption Hole, Razachai, \z - Temple of Equilibrium, Northern Zao Plantations." + Temple of Equilibrium, Northern Zao Plantations.", } monster.health = 1450 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -71,8 +71,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Dragon Hatchling", chance = 20, interval = 2000, count = 2 } - } + { name = "Dragon Hatchling", chance = 20, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -98,14 +98,14 @@ monster.loot = { { name = "bunch of ripe rice", chance = 960 }, { name = "zaoan shoes", chance = 450 }, { name = "zaoan robe", chance = 300 }, - { name = "dragon priest's wandtip", chance = 9910 } + { name = "dragon priest's wandtip", chance = 9910 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -125, maxDamage = -190, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -320, maxDamage = -400, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -320, maxDamage = -400, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.defenses = { armor = 22, mitigation = 0.78, { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 200, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/lizard_high_guard.lua b/data-otservbr-global/monster/reptiles/lizard_high_guard.lua index fee97aa6997..9d254133db4 100644 --- a/data-otservbr-global/monster/reptiles/lizard_high_guard.lua +++ b/data-otservbr-global/monster/reptiles/lizard_high_guard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 625 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Zzaion, Zao Palace and its antechambers, Muggy Plains, Zao Orc Land (single spawn in fort), \z - Corruption Hole, Razachai, Temple of Equilibrium, Northern Zao Plantations." + Corruption Hole, Razachai, Temple of Equilibrium, Northern Zao Plantations.", } monster.health = 1800 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,18 +94,18 @@ monster.loot = { { name = "zaoan legs", chance = 720 }, { name = "spiked iron ball", chance = 7000 }, { name = "high guard flag", chance = 2990 }, - { name = "high guard shoulderplates", chance = 8150 } + { name = "high guard shoulderplates", chance = 8150 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -306 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -306 }, } monster.defenses = { defense = 35, armor = 40, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 25, maxDamage = 75, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 25, maxDamage = 75, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/lizard_legionnaire.lua b/data-otservbr-global/monster/reptiles/lizard_legionnaire.lua index eecd06122be..3cd2ae78eb3 100644 --- a/data-otservbr-global/monster/reptiles/lizard_legionnaire.lua +++ b/data-otservbr-global/monster/reptiles/lizard_legionnaire.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 624 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Zzaion, Zao Palace and its antechambers, Muggy Plains, Zao Orc Land (in fort), \z - Corruption Hole, Razachai, Temple of Equilibrium, Northern Zao Plantations." + Corruption Hole, Razachai, Temple of Equilibrium, Northern Zao Plantations.", } monster.health = 1400 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,12 +89,12 @@ monster.loot = { { name = "zaoan halberd", chance = 960 }, { name = "legionnaire flags", chance = 1940 }, { name = "broken halberd", chance = 14940 }, - { name = "lizard trophy", chance = 20 } + { name = "lizard trophy", chance = 20 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -180 }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SPEAR, target = true } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SPEAR, target = true }, } monster.defenses = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/lizard_magistratus.lua b/data-otservbr-global/monster/reptiles/lizard_magistratus.lua index 6197b3b3043..410adcacc4b 100644 --- a/data-otservbr-global/monster/reptiles/lizard_magistratus.lua +++ b/data-otservbr-global/monster/reptiles/lizard_magistratus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 655 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Razzachai." + Locations = "Razzachai.", } monster.health = 6250 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -81,19 +81,19 @@ monster.loot = { { name = "lizard leather", chance = 220 }, { name = "lizard scale", chance = 450 }, { name = "strong mana potion", chance = 6280 }, - { name = "great mana potion", chance = 4480 } + { name = "great mana potion", chance = 4480 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, - { name = "lizard magistratus curse", interval = 2000, chance = 10, range = 5, target = false } + { name = "lizard magistratus curse", interval = 2000, chance = 10, range = 5, target = false }, } monster.defenses = { defense = 15, armor = 25, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/lizard_noble.lua b/data-otservbr-global/monster/reptiles/lizard_noble.lua index 521a603a842..18847211c0a 100644 --- a/data-otservbr-global/monster/reptiles/lizard_noble.lua +++ b/data-otservbr-global/monster/reptiles/lizard_noble.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 656 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Razzachai." + Locations = "Razzachai.", } monster.health = 7000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -80,20 +80,20 @@ monster.loot = { { name = "lizard leather", chance = 220 }, { name = "lizard scale", chance = 650 }, { name = "strong health potion", chance = 2550 }, - { name = "great health potion", chance = 2900 } + { name = "great health potion", chance = 2900 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -250, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -100, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -100, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.defenses = { defense = 15, armor = 27, mitigation = 1.02, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/lizard_sentinel.lua b/data-otservbr-global/monster/reptiles/lizard_sentinel.lua index d8fff881e1c..97962c22b35 100644 --- a/data-otservbr-global/monster/reptiles/lizard_sentinel.lua +++ b/data-otservbr-global/monster/reptiles/lizard_sentinel.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 114 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Chor, Zzaion and Foreigner Quarter." + Locations = "Chor, Zzaion and Foreigner Quarter.", } monster.health = 265 @@ -35,7 +35,7 @@ monster.manaCost = 560 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -85,12 +85,12 @@ monster.loot = { { name = "sentinel shield", chance = 320 }, { name = "lizard leather", chance = 990 }, { name = "lizard scale", chance = 960 }, - { name = "health potion", chance = 590 } + { name = "health potion", chance = 590 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 7, shootEffect = CONST_ANI_SPEAR, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/lizard_snakecharmer.lua b/data-otservbr-global/monster/reptiles/lizard_snakecharmer.lua index 40f8b8d9def..7a7339ef2aa 100644 --- a/data-otservbr-global/monster/reptiles/lizard_snakecharmer.lua +++ b/data-otservbr-global/monster/reptiles/lizard_snakecharmer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 115 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Chor, Forbidden Temple." + Locations = "Chor, Forbidden Temple.", } monster.health = 325 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -70,8 +70,8 @@ monster.light = { monster.summon = { maxSummons = 6, summons = { - { name = "cobra", chance = 20, interval = 2000, count = 6 } - } + { name = "cobra", chance = 20, interval = 2000, count = 6 }, + }, } monster.voices = { @@ -93,14 +93,14 @@ monster.loot = { { name = "charmer's tiara", chance = 230 }, { name = "lizard leather", chance = 1320 }, { name = "lizard scale", chance = 860 }, - { name = "mana potion", chance = 860 } + { name = "mana potion", chance = 860 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -100, maxDamage = -200, range = 7, shootEffect = CONST_ANI_POISON, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -110, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -110, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.defenses = { armor = 22, mitigation = 0.38, { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/lizard_templar.lua b/data-otservbr-global/monster/reptiles/lizard_templar.lua index 1848681dec0..b59057e6413 100644 --- a/data-otservbr-global/monster/reptiles/lizard_templar.lua +++ b/data-otservbr-global/monster/reptiles/lizard_templar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 113 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Chor, the lizard city south-east from Port Hope. They can also be found in Yalahar's \z - Foreigner Quarter and in Zzaion." + Foreigner Quarter and in Zzaion.", } monster.health = 410 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -86,11 +86,11 @@ monster.loot = { { name = "salamander shield", chance = 110 }, { name = "lizard leather", chance = 880 }, { name = "lizard scale", chance = 990 }, - { name = "health potion", chance = 890 } + { name = "health potion", chance = 890 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/lizard_zaogun.lua b/data-otservbr-global/monster/reptiles/lizard_zaogun.lua index d55e75214fc..90deba6ce7c 100644 --- a/data-otservbr-global/monster/reptiles/lizard_zaogun.lua +++ b/data-otservbr-global/monster/reptiles/lizard_zaogun.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 616 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Zzaion, Zao Palace, Muggy Plains, Zao Orc Land (in fort), Razzachai, Temple of Equilibrium." + Locations = "Zzaion, Zao Palace, Muggy Plains, Zao Orc Land (in fort), Razzachai, Temple of Equilibrium.", } monster.health = 2955 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,19 +92,19 @@ monster.loot = { { name = "zaoan shoes", chance = 1000 }, { name = "zaoan legs", chance = 1001 }, { name = "zaogun flag", chance = 8280 }, - { name = "zaogun shoulderplates", chance = 14980 } + { name = "zaogun shoulderplates", chance = 14980 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -349 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -220, maxDamage = -375, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -220, maxDamage = -375, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, } monster.defenses = { defense = 40, armor = 42, mitigation = 1.37, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 175, maxDamage = 275, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 175, maxDamage = 275, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/mantosaurus.lua b/data-otservbr-global/monster/reptiles/mantosaurus.lua index b568800cd6c..f0484558c77 100644 --- a/data-otservbr-global/monster/reptiles/mantosaurus.lua +++ b/data-otservbr-global/monster/reptiles/mantosaurus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2274 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Crystal Enigma" + Locations = "Crystal Enigma", } monster.health = 19400 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,7 +92,6 @@ monster.attacks = { { name = "combat", interval = 3500, chance = 47, type = COMBAT_PHYSICALDAMAGE, minDamage = -750, maxDamage = -1100, radius = 4, effect = CONST_ME_YELLOWSMOKE, target = false }, { name = "combat", interval = 2500, chance = 31, type = COMBAT_EARTHDAMAGE, minDamage = -550, maxDamage = -800, radius = 4, effect = CONST_ME_HITBYPOISON, target = true }, { name = "mantosaurus ring", interval = 4000, chance = 25, minDamage = -500, maxDamage = -700, range = 4, target = true }, - } monster.defenses = { @@ -118,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/mercurial_menace.lua b/data-otservbr-global/monster/reptiles/mercurial_menace.lua index 18d5a64b11a..53c3d516a9f 100644 --- a/data-otservbr-global/monster/reptiles/mercurial_menace.lua +++ b/data-otservbr-global/monster/reptiles/mercurial_menace.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2279 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Crystal Enigma" + Locations = "Crystal Enigma", } monster.health = 18500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/naga_archer.lua b/data-otservbr-global/monster/reptiles/naga_archer.lua index ac0d7d2b431..d105ddbb0fc 100644 --- a/data-otservbr-global/monster/reptiles/naga_archer.lua +++ b/data-otservbr-global/monster/reptiles/naga_archer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 78, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2260 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Temple of the Moon Goddess." + Locations = "Temple of the Moon Goddess.", } monster.health = 4640 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/naga_warrior.lua b/data-otservbr-global/monster/reptiles/naga_warrior.lua index 4525c80792b..32e24e4bb53 100644 --- a/data-otservbr-global/monster/reptiles/naga_warrior.lua +++ b/data-otservbr-global/monster/reptiles/naga_warrior.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2261 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Temple of the Moon Goddess." + Locations = "Temple of the Moon Goddess.", } monster.health = 5530 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/noxious_ripptor.lua b/data-otservbr-global/monster/reptiles/noxious_ripptor.lua index af17dcdc04b..13740d55851 100644 --- a/data-otservbr-global/monster/reptiles/noxious_ripptor.lua +++ b/data-otservbr-global/monster/reptiles/noxious_ripptor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2276 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 1, - Locations = "Crystal Enigma" + Locations = "Crystal Enigma", } monster.health = 22700 @@ -36,7 +36,7 @@ monster.maxSummons = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,12 +60,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -107,14 +107,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -10 }, { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = -10 } + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/rhindeer.lua b/data-otservbr-global/monster/reptiles/rhindeer.lua index 478458fa152..d9de46b857c 100644 --- a/data-otservbr-global/monster/reptiles/rhindeer.lua +++ b/data-otservbr-global/monster/reptiles/rhindeer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2342 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Ingol" + Locations = "Ingol", } monster.health = 8650 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -59,12 +59,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -114,14 +114,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = -5 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/rogue_naga.lua b/data-otservbr-global/monster/reptiles/rogue_naga.lua index cbb6f956ed5..25ec8c56ccf 100644 --- a/data-otservbr-global/monster/reptiles/rogue_naga.lua +++ b/data-otservbr-global/monster/reptiles/rogue_naga.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 78, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.health = 6200 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -98,7 +98,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/sea_serpent.lua b/data-otservbr-global/monster/reptiles/sea_serpent.lua index 98cc0ed340b..688bb978ca9 100644 --- a/data-otservbr-global/monster/reptiles/sea_serpent.lua +++ b/data-otservbr-global/monster/reptiles/sea_serpent.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 438 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Sea Serpent Area and Seacrest Grounds." + Locations = "Sea Serpent Area and Seacrest Grounds.", } monster.health = 1950 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,14 +94,14 @@ monster.loot = { { name = "focus cape", chance = 370 }, { name = "crystalline armor", chance = 90 }, { name = "northwind rod", chance = 930 }, - { name = "sea serpent scale", chance = 10200 } + { name = "sea serpent scale", chance = 10200 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -300, length = 7, spread = 2, effect = CONST_ME_SMALLPLANTS, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -101, maxDamage = -300, length = 7, spread = 2, effect = CONST_ME_ICEATTACK, target = false }, - { name = "sea serpent drown", interval = 2000, chance = 15, range = 5, target = false } + { name = "sea serpent drown", interval = 2000, chance = 15, range = 5, target = false }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.defenses = { armor = 25, mitigation = 1.04, { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 70, maxDamage = 273, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/seacrest_serpent.lua b/data-otservbr-global/monster/reptiles/seacrest_serpent.lua index e3a876b9a26..9be39aaa571 100644 --- a/data-otservbr-global/monster/reptiles/seacrest_serpent.lua +++ b/data-otservbr-global/monster/reptiles/seacrest_serpent.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1096 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 2, - Locations = "Seacrest Grounds when Quara Renegades are not spawning." + Locations = "Seacrest Grounds when Quara Renegades are not spawning.", } monster.health = 3000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 9 + chance = 9, } monster.strategiesTarget = { @@ -97,7 +97,7 @@ monster.loot = { { id = 823, chance = 3680 }, -- glacier kilt { id = 819, chance = 3010 }, -- glacier shoes { id = 16096, chance = 670 }, -- wand of defiance - { id = 8093, chance = 670 } -- wand of draconia + { id = 8093, chance = 670 }, -- wand of draconia } monster.attacks = { @@ -105,7 +105,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 7, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -260, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_SOUND_RED, target = true }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -285, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "seacrest serpent wave", interval = 2000, chance = 30, minDamage = 0, maxDamage = -284, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -300, length = 4, spread = 3, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -300, length = 4, spread = 3, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.defenses = { armor = 51, mitigation = 1.21, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 145, maxDamage = 200, effect = CONST_ME_SOUND_BLUE, target = false }, - { name = "melee", interval = 2000, chance = 10, minDamage = 0, maxDamage = 0 } + { name = "melee", interval = 2000, chance = 10, minDamage = 0, maxDamage = 0 }, } monster.elements = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/serpent_spawn.lua b/data-otservbr-global/monster/reptiles/serpent_spawn.lua index 1550e0fd9eb..aff96cc404b 100644 --- a/data-otservbr-global/monster/reptiles/serpent_spawn.lua +++ b/data-otservbr-global/monster/reptiles/serpent_spawn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 220 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Deeper Banuta, Forbidden Islands: Talahu (Medusa Cave) and Kharos (at level -1), Razzachai, \z - Deep below the Crystal Lakes in Foreigner Quarter, Cult's cave in the Magician Quarter, Medusa Tower." + Deep below the Crystal Lakes in Foreigner Quarter, Cult's cave in the Magician Quarter, Medusa Tower.", } monster.health = 3000 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -101,7 +101,7 @@ monster.loot = { { name = "swamplair armor", chance = 90 }, { name = "spellbook of mind control", chance = 90 }, { name = "snake skin", chance = 14800 }, - { name = "winged tail", chance = 960 } + { name = "winged tail", chance = 960 }, } monster.attacks = { @@ -110,7 +110,7 @@ monster.attacks = { { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000, outfitItem = 3976 }, { name = "speed", interval = 2000, chance = 25, speedChange = -850, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true, duration = 12000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_SOUND_RED, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.defenses = { armor = 35, mitigation = 1.04, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 340, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 340, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -138,7 +138,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/snake.lua b/data-otservbr-global/monster/reptiles/snake.lua index cd9ce19e269..7fde67d300b 100644 --- a/data-otservbr-global/monster/reptiles/snake.lua +++ b/data-otservbr-global/monster/reptiles/snake.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 28 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "In almost all grassy areas of Tibia. Also found in Rookgaard." + Locations = "In almost all grassy areas of Tibia. Also found in Rookgaard.", } monster.health = 15 @@ -35,7 +35,7 @@ monster.manaCost = 205 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -73,11 +73,10 @@ monster.voices = { { text = "Zzzzzzt", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } }, } monster.defenses = { @@ -103,7 +102,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/stampor.lua b/data-otservbr-global/monster/reptiles/stampor.lua index 5e759bba551..d916022b97d 100644 --- a/data-otservbr-global/monster/reptiles/stampor.lua +++ b/data-otservbr-global/monster/reptiles/stampor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 694 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Stampor Cave on the Muggy Plains, Chyllfroest." + Locations = "Stampor Cave on the Muggy Plains, Chyllfroest.", } monster.health = 1200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,21 +84,21 @@ monster.loot = { { name = "small topaz", chance = 7940, maxCount = 2 }, { name = "stampor horn", chance = 4920 }, { name = "stampor talons", chance = 9950, maxCount = 2 }, - { name = "hollow stampor hoof", chance = 3020 } + { name = "hollow stampor hoof", chance = 3020 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -280, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -75, maxDamage = -100, shootEffect = CONST_ANI_SMALLSTONE, target = true }, - { name = "stampor skill reducer", interval = 2000, chance = 10, range = 5, target = false } + { name = "stampor skill reducer", interval = 2000, chance = 10, range = 5, target = false }, } monster.defenses = { defense = 0, armor = 60, mitigation = 0.91, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/stonerefiner.lua b/data-otservbr-global/monster/reptiles/stonerefiner.lua index 7d048140ee5..c87dc954459 100644 --- a/data-otservbr-global/monster/reptiles/stonerefiner.lua +++ b/data-otservbr-global/monster/reptiles/stonerefiner.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1525 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Corym Mines." + Locations = "Corym Mines.", } monster.health = 800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,19 +62,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "knak knak knak", yell = false }, - { text = "nomnomnom", yell = false } + { text = "nomnomnom", yell = false }, } monster.loot = { @@ -84,18 +84,18 @@ monster.loot = { { name = "glob of acid slime", chance = 23680 }, { name = "stonerefiner's skull", chance = 20110 }, { name = "poisonous slime", chance = 20040, maxCount = 3 }, - { name = "half-digested stones", chance = 15210, maxCount = 5 } + { name = "half-digested stones", chance = 15210, maxCount = 5 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "berserk", interval = 2000, chance = 15, minDamage = 0, maxDamage = -70, target = false }, - { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -40, maxDamage = -80, range = 7, target = false } + { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -40, maxDamage = -80, range = 7, target = false }, } monster.defenses = { defense = 45, - armor = 20 + armor = 20, } monster.elements = { @@ -108,14 +108,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/thornback_tortoise.lua b/data-otservbr-global/monster/reptiles/thornback_tortoise.lua index df993574c96..dbc34a5028b 100644 --- a/data-otservbr-global/monster/reptiles/thornback_tortoise.lua +++ b/data-otservbr-global/monster/reptiles/thornback_tortoise.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 259 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Laguna Islands, Meriana Gargoyle Cave and one on Nargor." + Locations = "Laguna Islands, Meriana Gargoyle Cave and one on Nargor.", } monster.health = 300 @@ -35,7 +35,7 @@ monster.manaCost = 490 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -83,11 +83,11 @@ monster.loot = { { name = "tortoise egg", chance = 790, maxCount = 3 }, { id = 5899, chance = 800 }, -- turtle shell { name = "health potion", chance = 1600 }, - { name = "thorn", chance = 15980 } + { name = "thorn", chance = 15980 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110, condition = { type = CONDITION_POISON, totalDamage = 40, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110, condition = { type = CONDITION_POISON, totalDamage = 40, interval = 4000 } }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/tortoise.lua b/data-otservbr-global/monster/reptiles/tortoise.lua index ce83dff22d2..b7b21dcb92d 100644 --- a/data-otservbr-global/monster/reptiles/tortoise.lua +++ b/data-otservbr-global/monster/reptiles/tortoise.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 258 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Laguna Islands, Fenrock, Port Hope and also can be found behind a wall below the center of Liberty Bay. These cannot be reached." + Locations = "Laguna Islands, Fenrock, Port Hope and also can be found behind a wall below the center of Liberty Bay. These cannot be reached.", } monster.health = 185 @@ -35,7 +35,7 @@ monster.manaCost = 445 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -79,11 +79,11 @@ monster.loot = { { id = 3578, chance = 4600 }, -- fish { name = "tortoise egg", chance = 770, maxCount = 2 }, { id = 5899, chance = 1300 }, -- turtle shell - { name = "tortoise shield", chance = 200 } + { name = "tortoise shield", chance = 200 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/two-headed_turtle.lua b/data-otservbr-global/monster/reptiles/two-headed_turtle.lua index 6114533f167..6ae829f08da 100644 --- a/data-otservbr-global/monster/reptiles/two-headed_turtle.lua +++ b/data-otservbr-global/monster/reptiles/two-headed_turtle.lua @@ -17,7 +17,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Great Pearl Fan Reef" + Locations = "Great Pearl Fan Reef", } monster.health = 5010 @@ -29,7 +29,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.flags = { @@ -85,14 +85,14 @@ monster.loot = { { name = "spellbook of enlightenment", chance = 6134 }, { id = 3565, chance = 1015 }, -- "cape" { id = 10422, chance = 657 }, -- "clay lump" - { name = "white gem", chance = 418 } + { name = "white gem", chance = 418 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -300 }, { name = "combat", interval = 2500, chance = 35, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -300, radius = 4, target = false, effect = CONST_ME_ENERGYHIT }, { name = "combat", interval = 2000, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, radius = 3, target = true, effect = CONST_ME_GHOSTLYBITE }, - { name = "combat", interval = 3000, chance = 45, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -300, range = 1, radius = 1, target = true, effect = CONST_ME_EXPLOSIONAREA } + { name = "combat", interval = 3000, chance = 45, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -300, range = 1, radius = 1, target = true, effect = CONST_ME_EXPLOSIONAREA }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/wyvern.lua b/data-otservbr-global/monster/reptiles/wyvern.lua index 85d87e35533..3536ca9dd7c 100644 --- a/data-otservbr-global/monster/reptiles/wyvern.lua +++ b/data-otservbr-global/monster/reptiles/wyvern.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 290 @@ -27,7 +27,7 @@ monster.Bestiary = { Crystal Grounds, Dragon Lair (Edron), Drillworm Cave, Folda, Hero Fortress, Kazordoon, \z Green Djinn Tower, Mushroom Fields,Paradox Tower, Plains of Havoc, Plague Spike, \z Poachers' Camp (Ferngrims Gate), Stonehome, Tiquanda, Truffels Garden, \z - Vandura Mountain, Vega, Venore, Wyvern Cave (Ferngrims Gate), Wyvern Hill and Wyvern Ulderek's Rock Cave." + Vandura Mountain, Vega, Venore, Wyvern Cave (Ferngrims Gate), Wyvern Hill and Wyvern Ulderek's Rock Cave.", } monster.health = 795 @@ -39,7 +39,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,14 +86,14 @@ monster.loot = { { name = "dragon ham", chance = 60500, maxCount = 3 }, { name = "wyvern fang", chance = 410 }, { name = "strong health potion", chance = 2500 }, - { name = "wyvern talisman", chance = 12300 } + { name = "wyvern talisman", chance = 12300 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120, condition = { type = CONDITION_POISON, totalDamage = 480, interval = 4000 } }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -240, maxDamage = -240, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, - { name = "drunk", interval = 2000, chance = 10, length = 3, spread = 2, effect = CONST_ME_SOUND_RED, target = false, duration = 5000 } + { name = "drunk", interval = 2000, chance = 10, length = 3, spread = 2, effect = CONST_ME_SOUND_RED, target = false, duration = 5000 }, } monster.defenses = { @@ -101,7 +101,7 @@ monster.defenses = { armor = 19, mitigation = 1.21, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 45, maxDamage = 65, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 }, } monster.elements = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/young_goanna.lua b/data-otservbr-global/monster/reptiles/young_goanna.lua index fe926e6e017..891251d226b 100644 --- a/data-otservbr-global/monster/reptiles/young_goanna.lua +++ b/data-otservbr-global/monster/reptiles/young_goanna.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1817 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt." + Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt.", } monster.health = 6200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,19 +90,19 @@ monster.loot = { { name = "sacred tree amulet", chance = 800 }, { name = "small tortoise", chance = 550 }, { name = "fur armor", chance = 270 }, - { name = "terra hood", chance = 250 } + { name = "terra hood", chance = 250 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -230, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -490, range = 3, radius = 1, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_EXPLOSIONHIT, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -490, range = 3, radius = 1, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_EXPLOSIONHIT, target = true }, } monster.defenses = { defense = 78, armor = 78, mitigation = 2.16, - { name = "speed", interval = 2000, chance = 5, speedChange = 350, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 5, speedChange = 350, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/reptiles/young_sea_serpent.lua b/data-otservbr-global/monster/reptiles/young_sea_serpent.lua index 97de98f8d15..961ff8204c6 100644 --- a/data-otservbr-global/monster/reptiles/young_sea_serpent.lua +++ b/data-otservbr-global/monster/reptiles/young_sea_serpent.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 439 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Sea Serpent Area." + Locations = "Sea Serpent Area.", } monster.health = 1050 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -87,14 +87,14 @@ monster.loot = { { name = "strong mana potion", chance = 4000 }, { id = 8894, chance = 7940 }, -- heavily rusted armor { id = 8895, chance = 7940 }, -- rusted armor - { name = "sea serpent scale", chance = 5000 } + { name = "sea serpent scale", chance = 5000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -10, maxDamage = -250, length = 7, spread = 2, effect = CONST_ME_SMALLPLANTS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -80, maxDamage = -250, length = 7, spread = 2, effect = CONST_ME_ICEATTACK, target = false }, - { name = "young sea serpent drown", interval = 2000, chance = 15, range = 5, target = false } + { name = "young sea serpent drown", interval = 2000, chance = 15, range = 5, target = false }, } monster.defenses = { @@ -102,7 +102,7 @@ monster.defenses = { armor = 20, mitigation = 0.78, { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 25, maxDamage = 175, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/slimes/acid_blob.lua b/data-otservbr-global/monster/slimes/acid_blob.lua index 5e8be230461..b64b1563689 100644 --- a/data-otservbr-global/monster/slimes/acid_blob.lua +++ b/data-otservbr-global/monster/slimes/acid_blob.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 513 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Alchemist Quarter, Deeper Banuta." + Locations = "Alchemist Quarter, Deeper Banuta.", } monster.health = 250 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Acid Blob", chance = 10, interval = 2000, count = 3 } - } + { name = "Acid Blob", chance = 10, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -84,14 +84,14 @@ monster.voices = { } monster.loot = { - { name = "glob of acid slime", chance = 18520 } + { name = "glob of acid slime", chance = 18520 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -10, maxDamage = -20, radius = 4, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -60, length = 5, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, range = 7, shootEffect = CONST_ANI_POISON, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, range = 7, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/slimes/death_blob.lua b/data-otservbr-global/monster/slimes/death_blob.lua index ed089a61d0e..8ff4cbd4859 100644 --- a/data-otservbr-global/monster/slimes/death_blob.lua +++ b/data-otservbr-global/monster/slimes/death_blob.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 514 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Alchemist Quarter, Drefia, Razzachai, Souleater Mountains, \z - Northern Zao Plantations and Raging Mage tower." + Northern Zao Plantations and Raging Mage tower.", } monster.health = 320 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -74,8 +74,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Death Blob", chance = 10, interval = 2000, count = 3 } - } + { name = "Death Blob", chance = 10, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -85,20 +85,20 @@ monster.voices = { } monster.loot = { - { name = "glob of tar", chance = 18470 } + { name = "glob of tar", chance = 18470 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -35, maxDamage = -60, range = 3, radius = 4, effect = CONST_ME_POFF, target = false }, - { name = "death blob curse", interval = 2000, chance = 5, range = 5, target = false } + { name = "death blob curse", interval = 2000, chance = 5, range = 5, target = false }, } monster.defenses = { defense = 15, armor = 15, mitigation = 0.46, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 20, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 20, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/slimes/defiler.lua b/data-otservbr-global/monster/slimes/defiler.lua index d7455c93d46..e93b1c3ce84 100644 --- a/data-otservbr-global/monster/slimes/defiler.lua +++ b/data-otservbr-global/monster/slimes/defiler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 289 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Pits of Inferno, The Inquisition Quest (The Vats) and Grounds of Plague." + Locations = "Pits of Inferno, The Inquisition Quest (The Vats) and Grounds of Plague.", } monster.health = 3650 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,7 +94,7 @@ monster.loot = { { id = 6299, chance = 3030 }, -- death ring { name = "demonic essence", chance = 20320 }, { name = "glob of acid slime", chance = 14210 }, - { name = "glob of tar", chance = 12000 } + { name = "glob of tar", chance = 12000 }, } monster.attacks = { @@ -105,14 +105,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -170, radius = 3, effect = CONST_ME_POISONAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -500, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_SMALLPLANTS, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 15000 }, } monster.defenses = { defense = 20, armor = 60, mitigation = 1.32, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 280, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 280, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/slimes/devourer.lua b/data-otservbr-global/monster/slimes/devourer.lua index 2b4f44fedab..dace9504b1c 100644 --- a/data-otservbr-global/monster/slimes/devourer.lua +++ b/data-otservbr-global/monster/slimes/devourer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1056 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Rathleton Sewers, Lower Rathleton, Oramond/Western Plains, \z - Underground Glooth Factory, Jaccus Maxxen's Dungeon." + Underground Glooth Factory, Jaccus Maxxen's Dungeon.", } monster.health = 1900 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -99,7 +99,7 @@ monster.loot = { { id = 21180, chance = 390 }, -- glooth axe { id = 21158, chance = 370 }, -- glooth spear { id = 8084, chance = 250 }, -- springsprout rod - { id = 3065, chance = 260 } -- terra rod + { id = 3065, chance = 260 }, -- terra rod } monster.attacks = { @@ -109,14 +109,14 @@ monster.attacks = { { name = "devourer wave", interval = 2000, chance = 5, minDamage = -50, maxDamage = -150, target = false }, { name = "devourer paralyze", interval = 2000, chance = 9, target = false }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -150, length = 1, spread = 0, effect = CONST_ME_SMOKE, target = false }, - { name = "combat", interval = 2000, chance = 7, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -135, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "combat", interval = 2000, chance = 7, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -135, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { defense = 25, armor = 45, mitigation = 1.46, - { name = "combat", interval = 2000, chance = 6, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "combat", interval = 2000, chance = 6, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -136,7 +136,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/slimes/glooth_blob.lua b/data-otservbr-global/monster/slimes/glooth_blob.lua index 43892bd5d02..130f942b2f1 100644 --- a/data-otservbr-global/monster/slimes/glooth_blob.lua +++ b/data-otservbr-global/monster/slimes/glooth_blob.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1054 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Oramond/Western Plains, Lower Rathleton, Glooth Factory, Underground Glooth Factory, Rathleton Sewers." + Locations = "Oramond/Western Plains, Lower Rathleton, Glooth Factory, Underground Glooth Factory, Rathleton Sewers.", } monster.health = 750 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Glooth Blob", chance = 6, interval = 2000, count = 2 } - } + { name = "Glooth Blob", chance = 6, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -90,7 +90,7 @@ monster.loot = { { id = 21183, chance = 400 }, -- glooth amulet { id = 21179, chance = 510 }, -- glooth blade { id = 21178, chance = 580 }, -- glooth club - { id = 21180, chance = 560 } -- glooth axe + { id = 21180, chance = 560 }, -- glooth axe } monster.attacks = { @@ -98,7 +98,7 @@ monster.attacks = { -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 13, minDamage = -400, maxDamage = -480, radius = 4, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_EARTHDAMAGE, minDamage = -85, maxDamage = -180, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_GREEN_RINGS, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -105, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -105, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, } monster.defenses = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/slimes/ink_blob.lua b/data-otservbr-global/monster/slimes/ink_blob.lua index b1e3bac24f1..e61bb3e1cb4 100644 --- a/data-otservbr-global/monster/slimes/ink_blob.lua +++ b/data-otservbr-global/monster/slimes/ink_blob.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1658 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Secret Library (earth, fire and ice sections)" + Locations = "Secret Library (earth, fire and ice sections)", } monster.health = 9500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { name = "terra legs", chance = 650, maxCount = 4 }, { name = "terra mantle", chance = 550, maxCount = 4 }, { name = "clay lump", chance = 1200, maxCount = 4 }, - { name = "terra amulet", chance = 1200, maxCount = 4 } + { name = "terra amulet", chance = 1200, maxCount = 4 }, } monster.attacks = { @@ -98,14 +98,14 @@ monster.attacks = { -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 13, minDamage = -400, maxDamage = -580, radius = 4, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_EARTHDAMAGE, minDamage = -285, maxDamage = -480, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_GREEN_RINGS, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -260, maxDamage = -505, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -260, maxDamage = -505, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, } monster.defenses = { defense = 15, armor = 70, mitigation = 2.02, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 20, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 20, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/slimes/mercury_blob.lua b/data-otservbr-global/monster/slimes/mercury_blob.lua index 6465956e467..49c9b3c0fad 100644 --- a/data-otservbr-global/monster/slimes/mercury_blob.lua +++ b/data-otservbr-global/monster/slimes/mercury_blob.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 515 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Alchemist Quarter." + Locations = "Alchemist Quarter.", } monster.health = 150 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Mercury Blob", chance = 10, interval = 2000, count = 3 } - } + { name = "Mercury Blob", chance = 10, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -84,20 +84,20 @@ monster.voices = { } monster.loot = { - { name = "glob of mercury", chance = 18750 } + { name = "glob of mercury", chance = 18750 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -75 }, { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_STUN, target = true, duration = 3000 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -10, maxDamage = -30, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -10, maxDamage = -30, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, } monster.defenses = { defense = 1, armor = 3, mitigation = 0.25, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 20, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 20, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/slimes/midnight_spawn.lua b/data-otservbr-global/monster/slimes/midnight_spawn.lua index c5e8b00389e..c14361f188f 100644 --- a/data-otservbr-global/monster/slimes/midnight_spawn.lua +++ b/data-otservbr-global/monster/slimes/midnight_spawn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 584 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Forbidden Lands around the Lightbringers basin." + Locations = "Forbidden Lands around the Lightbringers basin.", } monster.health = 2000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { } monster.loot = { - { name = "midnight shard", chance = 8333 } + { name = "midnight shard", chance = 8333 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/slimes/slime.lua b/data-otservbr-global/monster/slimes/slime.lua index 65a52e9f916..6d44dcac832 100644 --- a/data-otservbr-global/monster/slimes/slime.lua +++ b/data-otservbr-global/monster/slimes/slime.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 19 @@ -28,7 +28,7 @@ monster.Bestiary = { Green Claw Swamp, Dwarf Mines, Villa Scapula, Ankrahmun Tombs, Dark Cathedral, north of Port Hope, \z Deeper Banuta, on Folda on the floor above the Water Elementals, Hellgate, Vengoth, Alchemist Quarter, \z Yalahar and Carlin sewers, Ghostlands, Desert Dungeon, Dusalk's Troll Clan Cave, Nargor, \z - and in a cave northeast of Ab'Dendriel." + and in a cave northeast of Ab'Dendriel.", } monster.health = 150 @@ -40,7 +40,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -75,8 +75,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Slime", chance = 10, interval = 2000, count = 3 } - } + { name = "Slime", chance = 10, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -85,11 +85,10 @@ monster.voices = { { text = "Blubb", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, } monster.defenses = { @@ -115,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/slimes/son_of_verminor.lua b/data-otservbr-global/monster/slimes/son_of_verminor.lua index d85472a6e2d..32199c6201a 100644 --- a/data-otservbr-global/monster/slimes/son_of_verminor.lua +++ b/data-otservbr-global/monster/slimes/son_of_verminor.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 265 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Deep in the Pits of Inferno, in Verminor's throne room. Also in the Demon Forge (The Vats and The Hive)." + Locations = "Deep in the Pits of Inferno, in Verminor's throne room. Also in the Demon Forge (The Vats and The Hive).", } monster.health = 8500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -76,14 +76,13 @@ monster.voices = { { text = "Blubb.", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -473, condition = { type = CONDITION_POISON, totalDamage = 450, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -200, range = 7, shootEffect = CONST_ANI_POISON, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -390, radius = 3, effect = CONST_ME_POISONAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -220, maxDamage = -270, radius = 3, effect = CONST_ME_SMALLCLOUDS, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -220, maxDamage = -270, radius = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, } monster.defenses = { @@ -94,7 +93,7 @@ monster.defenses = { { name = "outfit", interval = 5000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "rat" }, { name = "outfit", interval = 5000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "larva" }, { name = "outfit", interval = 5000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "scorpion" }, - { name = "outfit", interval = 5000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "slime" } + { name = "outfit", interval = 5000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "slime" }, } monster.elements = { @@ -114,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/slimes/squidgy_slime.lua b/data-otservbr-global/monster/slimes/squidgy_slime.lua index 2563a30baa3..9763d131d03 100644 --- a/data-otservbr-global/monster/slimes/squidgy_slime.lua +++ b/data-otservbr-global/monster/slimes/squidgy_slime.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 20 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 2, - Locations = "Horestis Tomb during one of the states of The Mummys Curse World Change." + Locations = "Horestis Tomb during one of the states of The Mummys Curse World Change.", } monster.health = 150 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Squidgy Slime", chance = 10, interval = 2000, count = 3 } - } + { name = "Squidgy Slime", chance = 10, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -83,11 +83,10 @@ monster.voices = { { text = "Blubb", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, skill = 45, attack = 40 } + { name = "melee", interval = 2000, chance = 100, skill = 45, attack = 40 }, } monster.defenses = { @@ -113,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/deathslicer.lua b/data-otservbr-global/monster/traps/deathslicer.lua index d912fa6bf06..5b6346e15cc 100644 --- a/data-otservbr-global/monster/traps/deathslicer.lua +++ b/data-otservbr-global/monster/traps/deathslicer.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 8200 monster.maxHealth = 8200 monster.race = "undead" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,12 +59,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, radius = 2, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, radius = 2, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { @@ -91,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/deaththrower.lua b/data-otservbr-global/monster/traps/deaththrower.lua index 9002ff4bff0..96d506b0278 100644 --- a/data-otservbr-global/monster/traps/deaththrower.lua +++ b/data-otservbr-global/monster/traps/deaththrower.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a deaththrower" monster.experience = 0 monster.outfit = { - lookTypeEx = 2190 + lookTypeEx = 2190, } monster.health = 100 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 16 + chance = 16, } monster.strategiesTarget = { @@ -40,12 +40,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -53,16 +53,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "dark torturer skill reducer", interval = 2000, chance = 15, range = 6, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_POFF, target = false } + { name = "dark torturer skill reducer", interval = 2000, chance = 15, range = 6, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 1, - armor = 1 + armor = 1, } monster.elements = { @@ -75,14 +74,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/demon_summoner.lua b/data-otservbr-global/monster/traps/demon_summoner.lua index 98aa21726e2..0eb3c8c7409 100644 --- a/data-otservbr-global/monster/traps/demon_summoner.lua +++ b/data-otservbr-global/monster/traps/demon_summoner.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "bones" monster.experience = 0 monster.outfit = { - lookTypeEx = 470 + lookTypeEx = 470, } monster.health = 100 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -40,19 +40,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 1, summons = { - { name = "Demon", chance = 100, interval = 1000, count = 1 } - } + { name = "Demon", chance = 100, interval = 1000, count = 1 }, + }, } monster.voices = { @@ -60,16 +60,14 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 0, armor = 0, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, effect = CONST_ME_MORTAREA, target = false }, } monster.elements = { @@ -82,14 +80,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/floor_blob.lua b/data-otservbr-global/monster/traps/floor_blob.lua index e333fe1b941..24db98d5fc3 100644 --- a/data-otservbr-global/monster/traps/floor_blob.lua +++ b/data-otservbr-global/monster/traps/floor_blob.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -64,11 +64,10 @@ monster.voices = { { text = "Oump!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 }, } monster.defenses = { @@ -94,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/hell_hole.lua b/data-otservbr-global/monster/traps/hell_hole.lua index 6e0cd5e666c..38e3798fd2f 100644 --- a/data-otservbr-global/monster/traps/hell_hole.lua +++ b/data-otservbr-global/monster/traps/hell_hole.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a hell hole" monster.experience = 0 monster.outfit = { - lookTypeEx = 391 + lookTypeEx = 391, } monster.health = 100 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -40,19 +40,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.summon = { maxSummons = 1, summons = { - { name = "Deathspawn", chance = 25, interval = 2000, count = 1 } - } + { name = "Deathspawn", chance = 25, interval = 2000, count = 1 }, + }, } monster.voices = { @@ -60,12 +60,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -78,14 +77,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 100 }, { type = COMBAT_HOLYDAMAGE, percent = 100 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/hive_pore.lua b/data-otservbr-global/monster/traps/hive_pore.lua index b2d7a7118df..20b8350dd65 100644 --- a/data-otservbr-global/monster/traps/hive_pore.lua +++ b/data-otservbr-global/monster/traps/hive_pore.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a hive pore" monster.experience = 0 monster.outfit = { - lookTypeEx = 14064 + lookTypeEx = 14064, } monster.health = 1 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -51,8 +51,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Lesser Swarmer", chance = 100, interval = 30000, count = 3 } - } + { name = "Lesser Swarmer", chance = 100, interval = 30000, count = 3 }, + }, } monster.voices = { @@ -60,17 +60,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 0, armor = 0, mitigation = 0.00, - { name = "effect", interval = 30000, chance = 100, radius = 3, effect = CONST_ME_HITBYPOISON, target = false } + { name = "effect", interval = 30000, chance = 100, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -90,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/lavahole.lua b/data-otservbr-global/monster/traps/lavahole.lua index 0423530cc53..cbb0388953f 100644 --- a/data-otservbr-global/monster/traps/lavahole.lua +++ b/data-otservbr-global/monster/traps/lavahole.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a lavahole" monster.experience = 0 monster.outfit = { - lookTypeEx = 391 + lookTypeEx = 391, } monster.health = 1 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -53,11 +53,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false } + { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { @@ -83,7 +82,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/magic_pillar.lua b/data-otservbr-global/monster/traps/magic_pillar.lua index 13cb37eb4d8..6160751dffb 100644 --- a/data-otservbr-global/monster/traps/magic_pillar.lua +++ b/data-otservbr-global/monster/traps/magic_pillar.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a magic pillar" monster.experience = 0 monster.outfit = { - lookTypeEx = 2190 + lookTypeEx = 2190, } monster.health = 1 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -51,8 +51,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Demon", chance = 7, interval = 2000, count = 2 } - } + { name = "Demon", chance = 7, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -60,9 +60,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} - +monster.loot = {} monster.defenses = { defense = 1, @@ -87,7 +85,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = true } + { type = "bleed", condition = true }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/magicthrower.lua b/data-otservbr-global/monster/traps/magicthrower.lua index fa6ce1be493..28e3cbe3075 100644 --- a/data-otservbr-global/monster/traps/magicthrower.lua +++ b/data-otservbr-global/monster/traps/magicthrower.lua @@ -4,10 +4,9 @@ local monster = {} monster.description = "a magicthrower" monster.experience = 18 monster.outfit = { - lookTypeEx = 2190 + lookTypeEx = 2190, } - monster.health = 100 monster.maxHealth = 100 monster.race = "undead" @@ -17,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -54,11 +53,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 2000, chance = 100, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "combat", interval = 2000, chance = 100, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { @@ -84,7 +82,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = true } + { type = "bleed", condition = true }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/mechanical_fighter.lua b/data-otservbr-global/monster/traps/mechanical_fighter.lua index 8f78de84bf5..9b16acd9845 100644 --- a/data-otservbr-global/monster/traps/mechanical_fighter.lua +++ b/data-otservbr-global/monster/traps/mechanical_fighter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 420 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -63,11 +63,11 @@ monster.voices = { } monster.loot = { - { id = 4849, chance = 87460 } -- wooden trash + { id = 4849, chance = 87460 }, -- wooden trash } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, } monster.defenses = { @@ -93,7 +93,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/mimic.lua b/data-otservbr-global/monster/traps/mimic.lua index 799d28e5485..d48b5e1001d 100644 --- a/data-otservbr-global/monster/traps/mimic.lua +++ b/data-otservbr-global/monster/traps/mimic.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 1200 monster.maxHealth = 1200 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -60,8 +59,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 3, armor = 2, @@ -85,7 +83,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/pillar.lua b/data-otservbr-global/monster/traps/pillar.lua index 45a9eac4d9c..985bd0d6145 100644 --- a/data-otservbr-global/monster/traps/pillar.lua +++ b/data-otservbr-global/monster/traps/pillar.lua @@ -4,7 +4,7 @@ local monster = {} monster.description = "a pillar" monster.experience = 0 monster.outfit = { - lookTypeEx = 2190 + lookTypeEx = 2190, } monster.health = 100 @@ -16,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -53,9 +53,7 @@ monster.voices = { chance = 10, } -monster.loot = { -} - +monster.loot = {} monster.defenses = { defense = 1, @@ -80,7 +78,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/traps/plaguethrower.lua b/data-otservbr-global/monster/traps/plaguethrower.lua index 3e22c39e89e..83620729763 100644 --- a/data-otservbr-global/monster/traps/plaguethrower.lua +++ b/data-otservbr-global/monster/traps/plaguethrower.lua @@ -4,10 +4,9 @@ local monster = {} monster.description = "a plaguethrower" monster.experience = 18 monster.outfit = { - lookTypeEx = 2190 + lookTypeEx = 2190, } - monster.health = 100 monster.maxHealth = 100 monster.race = "undead" @@ -17,7 +16,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -54,11 +53,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "combat", interval = 2000, chance = 100, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "combat", interval = 2000, chance = 100, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { @@ -84,7 +82,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/ahau.lua b/data-otservbr-global/monster/undeads/ahau.lua index bc76d0e5aa1..0e86a1d2c98 100644 --- a/data-otservbr-global/monster/undeads/ahau.lua +++ b/data-otservbr-global/monster/undeads/ahau.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.bosstiary = { @@ -27,7 +27,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -55,7 +55,7 @@ monster.flags = { canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, - pet = false + pet = false, } monster.light = { @@ -128,11 +128,10 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } -mType.onThink = function(monster, interval) -end +mType.onThink = function(monster, interval) end mType.onAppear = function(monster, creature) if monster:getType():isRewardBoss() then @@ -140,13 +139,10 @@ mType.onAppear = function(monster, creature) end end -mType.onDisappear = function(monster, creature) -end +mType.onDisappear = function(monster, creature) end -mType.onMove = function(monster, creature, fromPosition, toPosition) -end +mType.onMove = function(monster, creature, fromPosition, toPosition) end -mType.onSay = function(monster, creature, type, message) -end +mType.onSay = function(monster, creature, type, message) end mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/bane_of_light.lua b/data-otservbr-global/monster/undeads/bane_of_light.lua index 599a0792406..154af51c28f 100644 --- a/data-otservbr-global/monster/undeads/bane_of_light.lua +++ b/data-otservbr-global/monster/undeads/bane_of_light.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 580 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Svargrond around the Lightbringers basin." + Locations = "Svargrond around the Lightbringers basin.", } monster.health = 1100 @@ -33,10 +33,9 @@ monster.corpse = 6006 monster.speed = 115 monster.manaCost = 0 - monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -74,13 +73,13 @@ monster.voices = { } monster.loot = { - { name = "midnight shard", chance = 6930 } + { name = "midnight shard", chance = 6930 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -366 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -250, range = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -400, range = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 60000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -400, range = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 60000 }, } monster.defenses = { @@ -89,7 +88,7 @@ monster.defenses = { mitigation = 1.46, { name = "outfit", interval = 4000, chance = 10, effect = CONST_ME_GROUNDSHAKER, target = false, duration = 5000, outfitMonster = "bat" }, { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, target = false }, } monster.elements = { @@ -109,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/banshee.lua b/data-otservbr-global/monster/undeads/banshee.lua index 62eade85baa..712d0f71788 100644 --- a/data-otservbr-global/monster/undeads/banshee.lua +++ b/data-otservbr-global/monster/undeads/banshee.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 78 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Single one under the White Flower Temple in Thais (respawn takes about 20-25 minutes), \z Banshee Quest area in Ghostlands (also accesible by Isle of the Kings), Demon Quest Room, Drefia, \z Ancient Ruins Tomb, Desert Dungeon (unreachable), Pits of Inferno in Tafariel's Throne room, \z - Cemetery Quarter in Yalahar, Vengoth Castle, one in Robson Isle." + Cemetery Quarter in Yalahar, Vengoth Castle, one in Robson Isle.", } monster.health = 1000 @@ -38,7 +38,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -106,21 +106,21 @@ monster.loot = { { name = "terra mantle", chance = 340 }, { name = "petrified scream", chance = 4150 }, { name = "hair of a banshee", chance = 4810 }, - { name = "sweet smelling bait", chance = 40 } + { name = "sweet smelling bait", chance = 40 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 3, interval = 4000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, radius = 4, effect = CONST_ME_SOUND_RED, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -55, maxDamage = -350, range = 1, radius = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, } monster.defenses = { defense = 25, armor = 25, mitigation = 1.74, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 120, maxDamage = 190, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 120, maxDamage = 190, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -140,7 +140,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/betrayed_wraith.lua b/data-otservbr-global/monster/undeads/betrayed_wraith.lua index 76eb39b61f7..0c0648acda5 100644 --- a/data-otservbr-global/monster/undeads/betrayed_wraith.lua +++ b/data-otservbr-global/monster/undeads/betrayed_wraith.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 284 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Pits of Inferno, Helheim, The Inquisition Quest, Roshamuul Prison, Oramond Fury Dungeon" + Locations = "Pits of Inferno, Helheim, The Inquisition Quest, Roshamuul Prison, Oramond Fury Dungeon", } monster.health = 4200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -92,13 +92,13 @@ monster.loot = { { name = "bloody edge", chance = 80 }, { name = "great mana potion", chance = 15000, maxCount = 3 }, { name = "ultimate health potion", chance = 15410 }, - { name = "unholy bone", chance = 18410 } + { name = "unholy bone", chance = 18410 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "betrayed wraith skill reducer", interval = 2000, chance = 10, target = false }, - { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true, duration = 3000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true, duration = 3000 }, } monster.defenses = { @@ -107,7 +107,7 @@ monster.defenses = { mitigation = 1.46, { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 350, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "invisible", interval = 2000, chance = 10 }, - { name = "speed", interval = 2000, chance = 15, speedChange = 460, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 460, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/blightwalker.lua b/data-otservbr-global/monster/undeads/blightwalker.lua index e70c8b3e5f6..2edb1712a80 100644 --- a/data-otservbr-global/monster/undeads/blightwalker.lua +++ b/data-otservbr-global/monster/undeads/blightwalker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 298 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Pits of Inferno, Edron (In the Vats during The Inquisition Quest), Roshamuul Prison, Grounds of Undeath." + Locations = "Pits of Inferno, Edron (In the Vats during The Inquisition Quest), Roshamuul Prison, Grounds of Undeath.", } monster.health = 8900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -101,7 +101,7 @@ monster.loot = { { name = "terra legs", chance = 2500 }, { name = "ultimate health potion", chance = 14720, maxCount = 2 }, { name = "gold ingot", chance = 5270 }, - { name = "bundle of cursed straw", chance = 15000 } + { name = "bundle of cursed straw", chance = 15000 }, } monster.attacks = { @@ -110,7 +110,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -65, maxDamage = -135, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "drunk", interval = 2000, chance = 10, radius = 3, effect = CONST_ME_HITBYPOISON, target = false, duration = 5000 }, { name = "blightwalker curse", interval = 2000, chance = 15, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -300, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -300, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 30000 }, } monster.defenses = { @@ -136,7 +136,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/blood_beast.lua b/data-otservbr-global/monster/undeads/blood_beast.lua index 3d75713f53e..85af4da4b8f 100644 --- a/data-otservbr-global/monster/undeads/blood_beast.lua +++ b/data-otservbr-global/monster/undeads/blood_beast.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1040 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Oramond/Southern Plains, Lower Rathleton, Oramond/Western Plains, \z - Underground Glooth Factory, Jaccus Maxxen's Dungeon." + Underground Glooth Factory, Jaccus Maxxen's Dungeon.", } monster.health = 1600 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 4 + chance = 4, } monster.strategiesTarget = { @@ -89,14 +89,14 @@ monster.loot = { { id = 21179, chance = 210 }, -- glooth blade { id = 21178, chance = 210 }, -- glooth club { id = 21180, chance = 250 }, -- glooth axe - { id = 21158, chance = 280 } -- glooth spear + { id = 21158, chance = 280 }, -- glooth spear } monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 82, attack = 50, condition = { type = CONDITION_POISON, totalDamage = 260, interval = 4000 } }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -65, maxDamage = -105, range = 5, shootEffect = CONST_ANI_GREENSTAR, effect = CONST_ME_POISONAREA, target = true }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 17, minDamage = -300, maxDamage = -400, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 17, minDamage = -300, maxDamage = -400, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.defenses = { @@ -104,7 +104,7 @@ monster.defenses = { armor = 32, mitigation = 1.18, { name = "speed", interval = 2000, chance = 8, speedChange = 314, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, - { name = "combat", interval = 2000, chance = 7, type = COMBAT_HEALING, minDamage = 80, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 7, type = COMBAT_HEALING, minDamage = 80, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/bonebeast.lua b/data-otservbr-global/monster/undeads/bonebeast.lua index 93ba0783abb..1ac169d5f83 100644 --- a/data-otservbr-global/monster/undeads/bonebeast.lua +++ b/data-otservbr-global/monster/undeads/bonebeast.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 101 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Old Fortress, Ankrahmun Tombs, Helheim, Ramoa, Lich Hell, beneath Fenrock, Deeper Banuta, \z - Vengoth Castle, Vandura Mountain, Robson's Isle, Middle Spike, Lion's Rock, Mother of Scarabs Lair, Caverna Exanima." + Vengoth Castle, Vandura Mountain, Robson's Isle, Middle Spike, Lion's Rock, Mother of Scarabs Lair, Caverna Exanima.", } monster.health = 515 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,7 +86,7 @@ monster.loot = { { name = "hardened bone", chance = 960 }, { name = "health potion", chance = 540 }, { name = "bonebeast trophy", chance = 120 }, - { name = "bony tail", chance = 9780 } + { name = "bony tail", chance = 9780 }, } monster.attacks = { @@ -97,14 +97,14 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -50, maxDamage = -60, radius = 3, effect = CONST_ME_POISONAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -70, maxDamage = -80, length = 6, spread = 3, effect = CONST_ME_POISONAREA, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -600, target = true, duration = 13000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -600, target = true, duration = 13000 }, } monster.defenses = { defense = 30, armor = 40, mitigation = 1.15, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 60, effect = CONST_ME_HITBYPOISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 60, effect = CONST_ME_HITBYPOISON, target = false }, } monster.elements = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/bony_sea_devil.lua b/data-otservbr-global/monster/undeads/bony_sea_devil.lua index d77ec9109f0..5e57027cc6b 100644 --- a/data-otservbr-global/monster/undeads/bony_sea_devil.lua +++ b/data-otservbr-global/monster/undeads/bony_sea_devil.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1926 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Ebb and Flow." + Locations = "Ebb and Flow.", } monster.health = 24000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/burster_spectre.lua b/data-otservbr-global/monster/undeads/burster_spectre.lua index 5d298d7d4ba..82636edfa0c 100644 --- a/data-otservbr-global/monster/undeads/burster_spectre.lua +++ b/data-otservbr-global/monster/undeads/burster_spectre.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 86, lookFeet = 79, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1726 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Haunted Tomb west of Darashia, Buried Cathedral." + Locations = "Haunted Tomb west of Darashia, Buried Cathedral.", } monster.health = 6500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -97,7 +97,7 @@ monster.loot = { { name = "glacial rod", chance = 520 }, { name = "shockwave amulet", chance = 620 }, { name = "strange symbol", chance = 720 }, - { name = "hexagonal ruby", chance = 480 } + { name = "hexagonal ruby", chance = 480 }, } monster.attacks = { @@ -113,11 +113,11 @@ monster.defenses = { defense = 70, armor = 70, mitigation = 2.11, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.reflects = { - { type = COMBAT_ICEDAMAGE, percent = 133 } + { type = COMBAT_ICEDAMAGE, percent = 133 }, } monster.elements = { @@ -137,7 +137,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/capricious_phantom.lua b/data-otservbr-global/monster/undeads/capricious_phantom.lua index 0e8beb9c85e..cd402486853 100644 --- a/data-otservbr-global/monster/undeads/capricious_phantom.lua +++ b/data-otservbr-global/monster/undeads/capricious_phantom.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 83, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1932 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Ebb and Flow." + Locations = "Ebb and Flow.", } monster.health = 30000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/crypt_shambler.lua b/data-otservbr-global/monster/undeads/crypt_shambler.lua index cfb95923031..3e682b43444 100644 --- a/data-otservbr-global/monster/undeads/crypt_shambler.lua +++ b/data-otservbr-global/monster/undeads/crypt_shambler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 100 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Ankrahmun Tombs, Trapwood, Ramoa, Hellgate, Helheim, Mount Sternum Undead Cave, Deeper Catacombs, \z - Cemetery Quarter, Treasure Island, Upper Spike, Lion's Rock." + Cemetery Quarter, Treasure Island, Upper Spike, Lion's Rock.", } monster.health = 330 @@ -36,7 +36,7 @@ monster.manaCost = 580 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,12 +89,12 @@ monster.loot = { { name = "iron helmet", chance = 2000 }, { name = "bone shield", chance = 1000 }, { name = "worm", chance = 9000, maxCount = 10 }, - { name = "half-digested piece of meat", chance = 5000 } + { name = "half-digested piece of meat", chance = 5000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -28, maxDamage = -55, range = 1, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -28, maxDamage = -55, range = 1, target = true }, } monster.defenses = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/crypt_warrior.lua b/data-otservbr-global/monster/undeads/crypt_warrior.lua index e7b68ad3de8..5de0ab637ba 100644 --- a/data-otservbr-global/monster/undeads/crypt_warrior.lua +++ b/data-otservbr-global/monster/undeads/crypt_warrior.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.Bestiary = { @@ -22,7 +22,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Bounac." + Locations = "Bounac.", } monster.health = 7800 @@ -34,7 +34,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -79,13 +79,13 @@ monster.loot = { { id = 3264, chance = 2630, maxCount = 1 }, -- sword { name = "pelvis bone", chance = 2630, maxCount = 10 }, { name = "unholy bone", chance = 2630, maxCount = 5 }, - { name = "ruthless axe", chance = 150 } + { name = "ruthless axe", chance = 150 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -700 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -480, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 1500, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -380, maxDamage = -520, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 1500, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -380, maxDamage = -520, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/cursed_ape.lua b/data-otservbr-global/monster/undeads/cursed_ape.lua index a2368730572..9e14582ef8f 100644 --- a/data-otservbr-global/monster/undeads/cursed_ape.lua +++ b/data-otservbr-global/monster/undeads/cursed_ape.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2347 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Iksupan" + Locations = "Iksupan", } monster.health = 1700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,7 +88,6 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -498 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -210, maxDamage = -225, radius = 2, effect = CONST_ME_MORTAREA, target = false }, - } monster.defenses = { @@ -114,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/cursed_prospector.lua b/data-otservbr-global/monster/undeads/cursed_prospector.lua index 66e717c8421..b8e184b222c 100644 --- a/data-otservbr-global/monster/undeads/cursed_prospector.lua +++ b/data-otservbr-global/monster/undeads/cursed_prospector.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 38, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1880 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Barren Drift." + Locations = "Barren Drift.", } monster.health = 3900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -84,7 +84,7 @@ monster.loot = { { name = "lightning robe", chance = 1000 }, { name = "elven amulet", chance = 1000 }, { name = "lightning legs", chance = 830 }, - { name = "shockwave amulet", chance = 500 } + { name = "shockwave amulet", chance = 500 }, } monster.attacks = { @@ -93,7 +93,7 @@ monster.attacks = { { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -550, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -550, range = 4, radius = 4, effect = CONST_ME_ENERGYAREA, target = true } + { name = "combat", interval = 2000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -550, range = 4, radius = 4, effect = CONST_ME_ENERGYAREA, target = true }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/death_priest.lua b/data-otservbr-global/monster/undeads/death_priest.lua index c1f5325ddcb..1e211109736 100644 --- a/data-otservbr-global/monster/undeads/death_priest.lua +++ b/data-otservbr-global/monster/undeads/death_priest.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 710 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Horestis Tomb." + Locations = "Horestis Tomb.", } monster.health = 800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,19 +83,19 @@ monster.loot = { { name = "orichalcum pearl", chance = 6000, maxCount = 4 }, { name = "health potion", chance = 15000 }, { name = "mana potion", chance = 15000 }, - { id = 12482, chance = 27000 } -- hieroglyph banner + { id = 12482, chance = 27000 }, -- hieroglyph banner } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -250, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -250, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { defense = 20, armor = 38, mitigation = 1.29, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 80, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 80, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/demon_skeleton.lua b/data-otservbr-global/monster/undeads/demon_skeleton.lua index b717b275e2f..7e133b866cc 100644 --- a/data-otservbr-global/monster/undeads/demon_skeleton.lua +++ b/data-otservbr-global/monster/undeads/demon_skeleton.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 37 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Triangle Tower, Hellgate, Draconia, Plains of Havoc, Pits of Inferno, Thais Ancient Temple, \z Fibula Dungeon, Mintwallin, Mount Sternum hidden cave, Drefia, Ghost Ship, Edron Hero Cave, Shadowthorn, \z Elvenbane, Ghostlands, Femor Hills, White Flower Temple, Isle of the Kings, Dark Cathedral, Ankrahmun Tombs, \z - Ramoa, Helheim, Vengoth, Upper Spike, Lion's Rock." + Ramoa, Helheim, Vengoth, Upper Spike, Lion's Rock.", } monster.health = 400 @@ -38,7 +38,7 @@ monster.manaCost = 620 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,12 +91,12 @@ monster.loot = { { name = "health potion", chance = 10120, maxCount = 2 }, { name = "health potion", chance = 10000, maxCount = 2 }, { name = "mana potion", chance = 5300 }, - { name = "demonic skeletal hand", chance = 12600 } + { name = "demonic skeletal hand", chance = 12600 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -185 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -50, range = 1, radius = 1, effect = CONST_ME_SMALLCLOUDS, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -50, range = 1, radius = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/distorted_phantom.lua b/data-otservbr-global/monster/undeads/distorted_phantom.lua index e814fdc092c..c1fdc41461b 100644 --- a/data-otservbr-global/monster/undeads/distorted_phantom.lua +++ b/data-otservbr-global/monster/undeads/distorted_phantom.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 132, lookFeet = 76, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1962 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Mirrored Nightmare." + Locations = "Mirrored Nightmare.", } monster.health = 26000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/druid's_apparition.lua b/data-otservbr-global/monster/undeads/druid's_apparition.lua index dd47d04272f..414de6155bf 100644 --- a/data-otservbr-global/monster/undeads/druid's_apparition.lua +++ b/data-otservbr-global/monster/undeads/druid's_apparition.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 114, lookFeet = 95, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1946 @@ -22,7 +22,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Mirrored Nightmare." + Locations = "Mirrored Nightmare.", } monster.health = 25000 @@ -34,7 +34,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,19 +61,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Healing is what I do best.", yell = false }, - { text = "I'll take your place when you are gone.", yell = false } + { text = "I'll take your place when you are gone.", yell = false }, } monster.loot = { @@ -118,14 +118,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 30 }, { type = COMBAT_HOLYDAMAGE, percent = 40 }, - { type = COMBAT_DEATHDAMAGE, percent = -20 } + { type = COMBAT_DEATHDAMAGE, percent = -20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/elder_mummy.lua b/data-otservbr-global/monster/undeads/elder_mummy.lua index f841600a111..876bbc89cc5 100644 --- a/data-otservbr-global/monster/undeads/elder_mummy.lua +++ b/data-otservbr-global/monster/undeads/elder_mummy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 711 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Horestis Tomb." + Locations = "Horestis Tomb.", } monster.health = 850 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,13 +86,13 @@ monster.loot = { { name = "worm", chance = 20000, maxCount = 3 }, { name = "gauze bandage", chance = 10000 }, { name = "flask of embalming fluid", chance = 12600 }, - { id = 12483, chance = 2400 } -- pharaoh banner + { id = 12483, chance = 2400 }, -- pharaoh banner } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120, condition = { type = CONDITION_POISON, totalDamage = 3, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -130, range = 1, effect = CONST_ME_MORTAREA, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/evil_prospector.lua b/data-otservbr-global/monster/undeads/evil_prospector.lua index 07d116db5b4..6691a119f9f 100644 --- a/data-otservbr-global/monster/undeads/evil_prospector.lua +++ b/data-otservbr-global/monster/undeads/evil_prospector.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 34, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1885 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Barren Drift" + Locations = "Barren Drift", } monster.health = 8500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -80,7 +80,7 @@ monster.loot = { { name = "emerald bangle", chance = 3950 }, { name = "strange talisman", chance = 2630 }, { name = "wand of defiance", chance = 2630 }, - { name = "lightning headband", chance = 1320 } + { name = "lightning headband", chance = 1320 }, } monster.attacks = { @@ -89,7 +89,7 @@ monster.attacks = { { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -400, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, - { name = "combat", interval = 1700, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -450, range = 4, radius = 4, effect = CONST_ME_ENERGYAREA, target = true } + { name = "combat", interval = 1700, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -450, range = 4, radius = 4, effect = CONST_ME_ENERGYAREA, target = true }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/falcon_knight.lua b/data-otservbr-global/monster/undeads/falcon_knight.lua index 7770f1c97a2..1f2fb03b157 100644 --- a/data-otservbr-global/monster/undeads/falcon_knight.lua +++ b/data-otservbr-global/monster/undeads/falcon_knight.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 38, lookFeet = 105, lookAddons = 1, - lookMount = 0 + lookMount = 0, } monster.raceId = 1646 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Falcon Bastion." + Locations = "Falcon Bastion.", } monster.health = 9000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -99,13 +99,13 @@ monster.loot = { { name = "mastermind shield", chance = 620 }, { name = "heavy mace", chance = 460 }, { id = 3481, chance = 370 }, -- closed trap - { id = 3019, chance = 100 } -- demonbone amulet + { id = 3019, chance = 100 }, -- demonbone amulet } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -500, radius = 2, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -290, maxDamage = -360, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false } + { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -290, maxDamage = -360, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/falcon_paladin.lua b/data-otservbr-global/monster/undeads/falcon_paladin.lua index ee2c280a87d..d9002a289e5 100644 --- a/data-otservbr-global/monster/undeads/falcon_paladin.lua +++ b/data-otservbr-global/monster/undeads/falcon_paladin.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 38, lookFeet = 105, lookAddons = 2, - lookMount = 0 + lookMount = 0, } monster.raceId = 1647 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Falcon Bastion." + Locations = "Falcon Bastion.", } monster.health = 8500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { name = "damaged armor plates", chance = 1120 }, { name = "falcon crest", chance = 730 }, { name = "golden armor", chance = 310 }, - { name = "mastermind shield", chance = 310 } + { name = "mastermind shield", chance = 310 }, } monster.attacks = { @@ -98,7 +98,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -550, range = 5, shootEffect = CONST_ANI_ROYALSPEAR, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = 500, range = 5, shootEffect = CONST_ANI_BOLT, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -450, range = 7, radius = 2, shootEffect = CONST_ANI_POWERBOLT, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -350, length = 5, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -350, length = 5, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, } monster.defenses = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/flimsy_lost_soul.lua b/data-otservbr-global/monster/undeads/flimsy_lost_soul.lua index aa26b0ba06e..5336042dee1 100644 --- a/data-otservbr-global/monster/undeads/flimsy_lost_soul.lua +++ b/data-otservbr-global/monster/undeads/flimsy_lost_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 116, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1864 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Brain Grounds, Netherworld, Zarganash." + Locations = "Brain Grounds, Netherworld, Zarganash.", } monster.health = 4000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -85,14 +85,14 @@ monster.loot = { { name = "cursed bone", chance = 1570 }, { name = "wand of starstorm", chance = 1520 }, { name = "glacial rod", chance = 960 }, - { name = "wand of voodoo", chance = 330 } + { name = "wand of voodoo", chance = 330 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/freakish_lost_soul.lua b/data-otservbr-global/monster/undeads/freakish_lost_soul.lua index 848b25b5ec1..6f00c3eb7fe 100644 --- a/data-otservbr-global/monster/undeads/freakish_lost_soul.lua +++ b/data-otservbr-global/monster/undeads/freakish_lost_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 83, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1866 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Brain Grounds, Netherworld, Zarganash." + Locations = "Brain Grounds, Netherworld, Zarganash.", } monster.health = 7000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -82,7 +82,7 @@ monster.loot = { { id = 23529, chance = 1220 }, -- ring of blue plasma { name = "silver hand mirror", chance = 1090 }, { name = "ornate crossbow", chance = 1090 }, - { name = "crystal crossbow", chance = 270 } + { name = "crystal crossbow", chance = 270 }, } monster.attacks = { @@ -90,7 +90,7 @@ monster.attacks = { { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 4, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 1700, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, radius = 4, effect = CONST_ME_ENERGYAREA, target = false } + { name = "combat", interval = 1700, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/gazer_spectre.lua b/data-otservbr-global/monster/undeads/gazer_spectre.lua index fc272551698..771af290b31 100644 --- a/data-otservbr-global/monster/undeads/gazer_spectre.lua +++ b/data-otservbr-global/monster/undeads/gazer_spectre.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 77, lookFeet = 78, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1725 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Haunted Temple, Buried Cathedral" + Locations = "Haunted Temple, Buried Cathedral", } monster.health = 4500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,25 +94,25 @@ monster.loot = { { name = "prismatic quartz", chance = 1500 }, { name = "small enchanted emerald", chance = 800 }, { name = "onyx chip", chance = 770 }, - { name = "hexagonal ruby", chance = 500 } + { name = "hexagonal ruby", chance = 500 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 2500, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, { name = "combat", interval = 3000, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -450, radius = 5, range = 5, effect = CONST_ME_FIREATTACK, target = true }, - { name = "combat", interval = 3700, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -400, range = 7, effect = CONST_ME_YELLOWENERGY, shootEffect = CONST_ANI_ENERGYBALL, target = true } + { name = "combat", interval = 3700, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -400, range = 7, effect = CONST_ME_YELLOWENERGY, shootEffect = CONST_ANI_ENERGYBALL, target = true }, } monster.defenses = { defense = 78, armor = 68, mitigation = 2.02, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.reflects = { - { type = COMBAT_FIREDAMAGE, percent = 133 } + { type = COMBAT_FIREDAMAGE, percent = 133 }, } monster.elements = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/ghost.lua b/data-otservbr-global/monster/undeads/ghost.lua index 77c061ce53e..d876992c9ed 100644 --- a/data-otservbr-global/monster/undeads/ghost.lua +++ b/data-otservbr-global/monster/undeads/ghost.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 48 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Ghost Ship, Drefia, Ankrahmun Tombs, Mount Sternum Undead Cave between Thais and Kazordoon, \z Dark Cathedral, under Treasure Island, Isle of the Kings, Grothmok tunnels (in Dwarven Mines), Goroma, \z - Ramoa, Lich Hell, Upper Spike." + Ramoa, Lich Hell, Upper Spike.", } monster.health = 150 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -86,12 +86,12 @@ monster.loot = { { name = "cape", chance = 8800 }, { name = "shadow herb", chance = 14400 }, { name = "white piece of cloth", chance = 1940 }, - { name = "ghostly tissue", chance = 1870 } + { name = "ghostly tissue", chance = 1870 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -45, range = 1, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -45, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/ghoul.lua b/data-otservbr-global/monster/undeads/ghoul.lua index c075191d5ae..daa8681f524 100644 --- a/data-otservbr-global/monster/undeads/ghoul.lua +++ b/data-otservbr-global/monster/undeads/ghoul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 18 @@ -30,7 +30,7 @@ monster.Bestiary = { Venore Swamp Troll cave, Ghostship between Venore and Darashia, Triangle Tower, Dark Cathedral, \z Ankrahmun tombs, Isle of the Kings, Treasure Island, Nargor Undead Cave, Helheim, Lion's Rock, \z The Witches' Cliff (only accessible during a quest) and a cave northeast of Ab'Dendriel. \z - Also found behind a wall in both Rookgaard and Paradox Tower, although they cannot be reached." + Also found behind a wall in both Rookgaard and Paradox Tower, although they cannot be reached.", } monster.health = 100 @@ -42,7 +42,7 @@ monster.manaCost = 450 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -91,19 +91,19 @@ monster.loot = { { name = "rotten piece of cloth", chance = 14470 }, { name = "ghoul snack", chance = 5130 }, { name = "pile of grave earth", chance = 950 }, - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -27, range = 1, radius = 1, effect = CONST_ME_SMALLCLOUDS, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -27, range = 1, radius = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, } monster.defenses = { defense = 15, armor = 8, mitigation = 0.43, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 9, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 9, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/grave_guard.lua b/data-otservbr-global/monster/undeads/grave_guard.lua index e0ee09ec967..6b073dcbccb 100644 --- a/data-otservbr-global/monster/undeads/grave_guard.lua +++ b/data-otservbr-global/monster/undeads/grave_guard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 707 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Horestis Tomb." + Locations = "Horestis Tomb.", } monster.health = 720 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,12 +83,12 @@ monster.loot = { { name = "grave flower", chance = 70000 }, { id = 6299, chance = 1754 }, -- death ring { name = "health potion", chance = 20000 }, - { name = "mana potion", chance = 20000 } + { name = "mana potion", chance = 20000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -147 }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, radius = 1, effect = CONST_ME_SOUND_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, radius = 1, effect = CONST_ME_SOUND_BLUE, target = false }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/gravedigger.lua b/data-otservbr-global/monster/undeads/gravedigger.lua index 81a9d302a5d..f884645d0ec 100644 --- a/data-otservbr-global/monster/undeads/gravedigger.lua +++ b/data-otservbr-global/monster/undeads/gravedigger.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 975 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Around the higher level areas of Drefia, \z - including the Drefia Grim Reaper Dungeons and the Drefia Vampire Crypt." + including the Drefia Grim Reaper Dungeons and the Drefia Vampire Crypt.", } monster.health = 1500 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -92,14 +92,14 @@ monster.loot = { { name = "strong mana potion", chance = 3600, maxCount = 2 }, { name = "unholy bone", chance = 9570 }, { name = "pile of grave earth", chance = 6650 }, - { name = "safety pin", chance = 6000 } + { name = "safety pin", chance = 6000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -320, condition = { type = CONDITION_POISON, totalDamage = 180, interval = 4000 } }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -250, range = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -175, maxDamage = -300, range = 1, shootEffect = CONST_ANI_DEATH, target = false }, - { name = "drunk", interval = 2000, chance = 10, radius = 5, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 4000 } + { name = "drunk", interval = 2000, chance = 10, radius = 5, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 4000 }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.defenses = { mitigation = 1.68, { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_RED }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/grim_reaper.lua b/data-otservbr-global/monster/undeads/grim_reaper.lua index 26b7ca7e3fd..107a0ece576 100644 --- a/data-otservbr-global/monster/undeads/grim_reaper.lua +++ b/data-otservbr-global/monster/undeads/grim_reaper.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 465 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Drefia Grim Reaper Dungeons, deep in Drefia Wyrm Lair (after the Medusa Shield Quest), \z Edron (Hero Cave), Yalahar (Cemetery Quarter), Oramond Dungeon, \z - Abandoned Sewers and optionally in the Demon Oak Quest." + Abandoned Sewers and optionally in the Demon Oak Quest.", } monster.health = 3900 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -96,7 +96,7 @@ monster.loot = { { name = "skullcracker armor", chance = 270 }, { name = "underworld rod", chance = 910 }, { id = 8896, chance = 2500 }, -- slightly rusted armor - { name = "mystical hourglass", chance = 5300 } + { name = "mystical hourglass", chance = 5300 }, } monster.attacks = { @@ -104,7 +104,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -165, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 3, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, target = false }, } monster.defenses = { @@ -112,7 +112,7 @@ monster.defenses = { armor = 30, mitigation = 0.64, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 130, maxDamage = 205, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/hand_of_cursed_fate.lua b/data-otservbr-global/monster/undeads/hand_of_cursed_fate.lua index 78f94d0c6ae..be6f79fc666 100644 --- a/data-otservbr-global/monster/undeads/hand_of_cursed_fate.lua +++ b/data-otservbr-global/monster/undeads/hand_of_cursed_fate.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 281 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Pits of Inferno, The Battlefield, The Arcanum, The Blood Halls and The Crystal Caves." + Locations = "Pits of Inferno, The Battlefield, The Arcanum, The Blood Halls and The Crystal Caves.", } monster.health = 7500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -103,14 +103,14 @@ monster.loot = { { name = "abyss hammer", chance = 495 }, { name = "great mana potion", chance = 19990, maxCount = 2 }, { name = "ultimate health potion", chance = 18000 }, - { name = "gold ingot", chance = 700 } + { name = "gold ingot", chance = 700 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -520, condition = { type = CONDITION_POISON, totalDamage = 380, interval = 4000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -920, range = 1, target = false }, { name = "drunk", interval = 2000, chance = 10, radius = 4, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 3000 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -220, maxDamage = -880, range = 1, effect = CONST_ME_SMALLCLOUDS, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -220, maxDamage = -880, range = 1, effect = CONST_ME_SMALLCLOUDS, target = false }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.defenses = { mitigation = 1.88, { name = "speed", interval = 2000, chance = 15, speedChange = 1000, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -139,7 +139,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/hazardous_phantom.lua b/data-otservbr-global/monster/undeads/hazardous_phantom.lua index 34ad8c0c088..29384eafe55 100644 --- a/data-otservbr-global/monster/undeads/hazardous_phantom.lua +++ b/data-otservbr-global/monster/undeads/hazardous_phantom.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 78, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 70000 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/honour_guard.lua b/data-otservbr-global/monster/undeads/honour_guard.lua index 482394b677a..4c4966dc066 100644 --- a/data-otservbr-global/monster/undeads/honour_guard.lua +++ b/data-otservbr-global/monster/undeads/honour_guard.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 712 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 2, - Locations = "Desert north of Ankrahmun." + Locations = "Desert north of Ankrahmun.", } monster.health = 85 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -82,12 +82,12 @@ monster.loot = { { name = "mace", chance = 3760 }, { id = 3307, chance = 1640 }, -- scimitar { name = "brown mushroom", chance = 6120, maxCount = 2 }, - { name = "pelvis bone", chance = 8700 } + { name = "pelvis bone", chance = 8700 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -5, maxDamage = -13, range = 1, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -5, maxDamage = -13, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/iks_ahpututu.lua b/data-otservbr-global/monster/undeads/iks_ahpututu.lua index a964615cdad..06e8d061228 100644 --- a/data-otservbr-global/monster/undeads/iks_ahpututu.lua +++ b/data-otservbr-global/monster/undeads/iks_ahpututu.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2349 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 0, - Locations = "Iksupan" + Locations = "Iksupan", } monster.health = 1630 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/iks_aucar.lua b/data-otservbr-global/monster/undeads/iks_aucar.lua index cf083ffbb8b..26bfc867d9b 100644 --- a/data-otservbr-global/monster/undeads/iks_aucar.lua +++ b/data-otservbr-global/monster/undeads/iks_aucar.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2344 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Iksupan" + Locations = "Iksupan", } monster.health = 1520 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -97,8 +97,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250, effect = CONST_ME_PURPLEENERGY }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -75, maxDamage = -100, length = 7, spread = 0, effect = 216, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -160, range = 1, radius = 0, effect = CONST_ME_EXPLOSIONHIT, target = true } - + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -160, range = 1, radius = 0, effect = CONST_ME_EXPLOSIONHIT, target = true }, } monster.defenses = { @@ -124,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/iks_chuka.lua b/data-otservbr-global/monster/undeads/iks_chuka.lua index 6776b143b26..85f0cd77c3f 100644 --- a/data-otservbr-global/monster/undeads/iks_chuka.lua +++ b/data-otservbr-global/monster/undeads/iks_chuka.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2345 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Iksupan" + Locations = "Iksupan", } monster.health = 1240 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,22 +86,20 @@ monster.loot = { { name = "ritual tooth", chance = 1340 }, { name = "gold-brocaded cloth", chance = 960 }, { name = "broken iks spear", chance = 110 }, - { name = "broken iks headpiece", chance = 50 } + { name = "broken iks headpiece", chance = 50 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -175 }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -130, range = 4, shootEffect = CONST_ANI_ENCHANTEDSPEAR, target = true }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -110, maxDamage = -175, radius = 2, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -98, maxDamage = -114, range = 5, radius = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true } - + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -98, maxDamage = -114, range = 5, radius = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, } monster.defenses = { defense = 30, armor = 29, mitigation = 0.99, - } monster.elements = { @@ -121,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/iks_churrascan.lua b/data-otservbr-global/monster/undeads/iks_churrascan.lua index 8dbfabc88b9..704e40a53fa 100644 --- a/data-otservbr-global/monster/undeads/iks_churrascan.lua +++ b/data-otservbr-global/monster/undeads/iks_churrascan.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2350 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Iksupan" + Locations = "Iksupan", } monster.health = 1520 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -87,7 +87,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250, effect = CONST_ME_PURPLEENERGY }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -75, maxDamage = -100, length = 7, spread = 0, effect = 216, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -160, range = 1, radius = 0, effect = CONST_ME_EXPLOSIONHIT, target = true } } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -160, range = 1, radius = 0, effect = CONST_ME_EXPLOSIONHIT, target = true }, +} monster.defenses = { defense = 25, @@ -112,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/iks_pututu.lua b/data-otservbr-global/monster/undeads/iks_pututu.lua index b85fb311d3b..460aa7eb511 100644 --- a/data-otservbr-global/monster/undeads/iks_pututu.lua +++ b/data-otservbr-global/monster/undeads/iks_pututu.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2343 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Iksupan" + Locations = "Iksupan", } monster.health = 1310 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -90, radius = 2, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -75, maxDamage = -95, length = 8, spread = 0, effect = CONST_ME_STONE_STORM, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -98, maxDamage = -114, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -98, maxDamage = -114, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/infernal_phantom.lua b/data-otservbr-global/monster/undeads/infernal_phantom.lua index cc3f410a264..0b61e291291 100644 --- a/data-otservbr-global/monster/undeads/infernal_phantom.lua +++ b/data-otservbr-global/monster/undeads/infernal_phantom.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 94, lookFeet = 78, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1933 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Claustrophobic Inferno." + Locations = "Claustrophobic Inferno.", } monster.health = 26000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -130,7 +130,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/knight's_apparition.lua b/data-otservbr-global/monster/undeads/knight's_apparition.lua index 368e3962f5e..0a4415aa2fd 100644 --- a/data-otservbr-global/monster/undeads/knight's_apparition.lua +++ b/data-otservbr-global/monster/undeads/knight's_apparition.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 74, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1947 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Mirrored Nightmare." + Locations = "Mirrored Nightmare.", } monster.health = 25000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,19 +62,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "I am you. Just better!", yell = false }, - { text = "I'll take your place when you are gone.", yell = false } + { text = "I'll take your place when you are gone.", yell = false }, } monster.loot = { @@ -103,7 +103,7 @@ monster.attacks = { monster.defenses = { defense = 100, armor = 100, - mitigation = 3.04 + mitigation = 3.04, } monster.elements = { @@ -116,14 +116,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 10 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = -20 } + { type = COMBAT_DEATHDAMAGE, percent = -20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/lich.lua b/data-otservbr-global/monster/undeads/lich.lua index 9dbafd098de..811ee43d144 100644 --- a/data-otservbr-global/monster/undeads/lich.lua +++ b/data-otservbr-global/monster/undeads/lich.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 99 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Ankrahmun Library Tomb, Ancient Ruins Tomb, Oasis Tomb, Mountain Tomb, Drefia, Kharos, \z Pits of Inferno, Lich Hell in Ramoa, Cemetery Quarter in Yalahar, underground of Fenrock (on the way to Beregar). \z - Can also be seen during an undead raid in Darashia or Carlin." + Can also be seen during an undead raid in Darashia or Carlin.", } monster.health = 880 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -74,8 +74,8 @@ monster.light = { monster.summon = { maxSummons = 4, summons = { - { name = "Bonebeast", chance = 10, interval = 2000, count = 4 } - } + { name = "Bonebeast", chance = 10, interval = 2000, count = 4 }, + }, } monster.voices = { @@ -109,7 +109,7 @@ monster.loot = { { name = "strong mana potion", chance = 7500 }, { name = "lightning boots", chance = 200 }, { name = "small topaz", chance = 2430, maxCount = 3 }, - { name = "maxilla maximus", chance = 100 } + { name = "maxilla maximus", chance = 100 }, } monster.attacks = { @@ -118,14 +118,14 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -300, maxDamage = -400, length = 7, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -245, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 30000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -130, maxDamage = -195, radius = 3, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -130, maxDamage = -195, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 25, armor = 50, mitigation = 1.60, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 80, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 80, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -145,7 +145,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/lost_soul.lua b/data-otservbr-global/monster/undeads/lost_soul.lua index bf01dc78583..d00e9eb9d18 100644 --- a/data-otservbr-global/monster/undeads/lost_soul.lua +++ b/data-otservbr-global/monster/undeads/lost_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 283 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Pits of Inferno, Formorgar Mines, Helheim, Roshamuul Prison and in The Arcanum Part of the Inquisition quest, Oramond Fury Dungeon" + Locations = "Pits of Inferno, Formorgar Mines, Helheim, Roshamuul Prison and in The Arcanum Part of the Inquisition quest, Oramond Fury Dungeon", } monster.health = 5800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -97,13 +97,13 @@ monster.loot = { { name = "great mana potion", chance = 14200, maxCount = 2 }, { name = "great health potion", chance = 8800, maxCount = 2 }, { id = 8896, chance = 3500 }, -- slightly rusted armor - { name = "unholy bone", chance = 33010 } + { name = "unholy bone", chance = 33010 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -420 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -40, maxDamage = -210, length = 3, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "speed", interval = 2000, chance = 20, speedChange = -800, radius = 6, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 4000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -800, radius = 6, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 4000 }, } monster.defenses = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/mean_lost_soul.lua b/data-otservbr-global/monster/undeads/mean_lost_soul.lua index 5385d227fad..aa4ded25b2a 100644 --- a/data-otservbr-global/monster/undeads/mean_lost_soul.lua +++ b/data-otservbr-global/monster/undeads/mean_lost_soul.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 83, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1865 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Brain Grounds, Netherworld, Zarganash." + Locations = "Brain Grounds, Netherworld, Zarganash.", } monster.health = 5000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -84,14 +84,14 @@ monster.loot = { { name = "mercenary sword", chance = 1050 }, { name = "haunted blade", chance = 960 }, { name = "warrior's axe", chance = 730 }, - { name = "twiceslicer", chance = 310 } + { name = "twiceslicer", chance = 310 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/mould_phantom.lua b/data-otservbr-global/monster/undeads/mould_phantom.lua index 6b5c0a21945..c3d7ea8ea86 100644 --- a/data-otservbr-global/monster/undeads/mould_phantom.lua +++ b/data-otservbr-global/monster/undeads/mould_phantom.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 131, lookFeet = 116, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1945 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Rotten Wasteland." + Locations = "Rotten Wasteland.", } monster.health = 28000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/mummy.lua b/data-otservbr-global/monster/undeads/mummy.lua index 39bfe7ce7ec..8ec377fbc7a 100644 --- a/data-otservbr-global/monster/undeads/mummy.lua +++ b/data-otservbr-global/monster/undeads/mummy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 65 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Drefia, Darama's Dark Pyramid, Draconia, Mount Sternum Undead Cave, Green Claw Swamp, \z - Venore Amazon Camp underground, Helheim, Upper Spike, all Tombs, Dark Cathedral, Lion's Rock." + Venore Amazon Camp underground, Helheim, Upper Spike, all Tombs, Dark Cathedral, Lion's Rock.", } monster.health = 240 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -93,13 +93,13 @@ monster.loot = { { name = "yellow piece of cloth", chance = 900 }, { name = "gauze bandage", chance = 10000 }, { name = "mini mummy", chance = 10 }, - { name = "flask of embalming fluid", chance = 11690 } + { name = "flask of embalming fluid", chance = 11690 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -85, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -40, range = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -226, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 10000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -226, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 10000 }, } monster.defenses = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/paladin's_apparition.lua b/data-otservbr-global/monster/undeads/paladin's_apparition.lua index 30123f970ab..440eea9a089 100644 --- a/data-otservbr-global/monster/undeads/paladin's_apparition.lua +++ b/data-otservbr-global/monster/undeads/paladin's_apparition.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 114, lookFeet = 114, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1948 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Mirrored Nightmare." + Locations = "Mirrored Nightmare.", } monster.health = 25000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,19 +62,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "I could be your evil twin!", yell = false }, - { text = "I'll take your place when you are gone.", yell = false } + { text = "I'll take your place when you are gone.", yell = false }, } monster.loot = { @@ -106,7 +106,7 @@ monster.attacks = { monster.defenses = { defense = 100, armor = 100, - mitigation = 3.04 + mitigation = 3.04, } monster.elements = { @@ -119,14 +119,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 30 }, { type = COMBAT_HOLYDAMAGE, percent = 40 }, - { type = COMBAT_DEATHDAMAGE, percent = -20 } + { type = COMBAT_DEATHDAMAGE, percent = -20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/pirate_ghost.lua b/data-otservbr-global/monster/undeads/pirate_ghost.lua index 1f9c72ec7b4..e7790ce4248 100644 --- a/data-otservbr-global/monster/undeads/pirate_ghost.lua +++ b/data-otservbr-global/monster/undeads/pirate_ghost.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 257 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Drefia, Goroma, Nargor Undead Cave, hidden caves under Treasure Island, \z - single spawn at Liberty Bay ruins, Chyllfroest (unreachable)." + single spawn at Liberty Bay ruins, Chyllfroest (unreachable).", } monster.health = 275 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,20 +84,20 @@ monster.loot = { { id = 3049, chance = 650 }, -- stealth ring { name = "spike sword", chance = 130 }, { name = "red robe", chance = 130 }, - { name = "tattered piece of robe", chance = 4300 } + { name = "tattered piece of robe", chance = 4300 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 40, interval = 4000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -40, maxDamage = -80, radius = 1, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -65, range = 7, radius = 3, effect = CONST_ME_SOUND_RED, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -65, range = 7, radius = 3, effect = CONST_ME_SOUND_RED, target = true }, } monster.defenses = { defense = 0, armor = 30, mitigation = 0.78, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/pirate_skeleton.lua b/data-otservbr-global/monster/undeads/pirate_skeleton.lua index 33e333e04e6..db93edd98de 100644 --- a/data-otservbr-global/monster/undeads/pirate_skeleton.lua +++ b/data-otservbr-global/monster/undeads/pirate_skeleton.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 256 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Nargor Undead Cave, Goroma, Treasure Island, Drefia, The Cave, Chyllfroest." + Locations = "Nargor Undead Cave, Goroma, Treasure Island, Drefia, The Cave, Chyllfroest.", } monster.health = 190 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,12 +59,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -80,16 +80,16 @@ monster.loot = { { id = 3264, chance = 550 }, -- sword { name = "short sword", chance = 1003 }, { name = "bone club", chance = 960 }, - { name = "spooky blue eye", chance = 4730 } + { name = "spooky blue eye", chance = 4730 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, } monster.defenses = { defense = 15, - armor = 15 + armor = 15, } monster.elements = { @@ -102,14 +102,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = -25 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/putrid_mummy.lua b/data-otservbr-global/monster/undeads/putrid_mummy.lua index 9cd704426a6..dd29eb90880 100644 --- a/data-otservbr-global/monster/undeads/putrid_mummy.lua +++ b/data-otservbr-global/monster/undeads/putrid_mummy.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1415 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Caverna Exanima." + Locations = "Caverna Exanima.", } monster.health = 1500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,20 +86,20 @@ monster.loot = { { name = "green gem", chance = 3070 }, { name = "green bandage", chance = 1100 }, { name = "scarab coin", chance = 8180, maxCount = 3 }, - { name = "poison dagger", chance = 1530 } + { name = "poison dagger", chance = 1530 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -150, range = 1, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_CARNIPHILA, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -226, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true, duration = 10000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -226, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true, duration = 10000 }, } monster.defenses = { defense = 40, armor = 40, mitigation = 0.91, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/ripper_spectre.lua b/data-otservbr-global/monster/undeads/ripper_spectre.lua index fc81910e374..e8a2175a1f2 100644 --- a/data-otservbr-global/monster/undeads/ripper_spectre.lua +++ b/data-otservbr-global/monster/undeads/ripper_spectre.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 61, lookFeet = 94, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1724 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Haunted Cellar, Buried Cathedral" + Locations = "Haunted Cellar, Buried Cathedral", } monster.health = 3800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,25 +90,25 @@ monster.loot = { { name = "hexagonal ruby", chance = 800 }, { name = "assassin dagger", chance = 970 }, { name = "spike sword", chance = 530 }, - { name = "wyvern fang", chance = 120 } + { name = "wyvern fang", chance = 120 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -370 }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -425, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, { name = "combat", interval = 2800, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -450, radius = 3, effect = CONST_ME_DRAWBLOOD, target = false }, - { name = "combat", interval = 3500, chance = 37, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -375, length = 3, spread = 2, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 3500, chance = 37, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -375, length = 3, spread = 2, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { defense = 69, armor = 69, mitigation = 1.91, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.reflects = { - { type = COMBAT_EARTHDAMAGE, percent = 133 } + { type = COMBAT_EARTHDAMAGE, percent = 133 }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/rot_elemental.lua b/data-otservbr-global/monster/undeads/rot_elemental.lua index ac8fee25256..ba79449343f 100644 --- a/data-otservbr-global/monster/undeads/rot_elemental.lua +++ b/data-otservbr-global/monster/undeads/rot_elemental.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1055 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Rathleton Sewers, Glooth Factory, Lower Rathleton, Oramond/Western Plains, Jaccus Maxxen's Dungeon." + Locations = "Rathleton Sewers, Glooth Factory, Lower Rathleton, Oramond/Western Plains, Jaccus Maxxen's Dungeon.", } monster.health = 850 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 2 + chance = 2, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { id = 3038, chance = 80 }, -- green gem { id = 21183, chance = 130 }, -- glooth amulet { id = 21180, chance = 60 }, -- glooth axe - { id = 21158, chance = 460 } -- glooth spear + { id = 21158, chance = 460 }, -- glooth spear } monster.attacks = { @@ -99,7 +99,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -230, length = 6, spread = 3, effect = CONST_ME_POISONAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -200, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, - { name = "rot elemental paralyze", interval = 2000, chance = 11, target = false } + { name = "rot elemental paralyze", interval = 2000, chance = 11, target = false }, } monster.defenses = { @@ -107,7 +107,7 @@ monster.defenses = { armor = 41, mitigation = 1.07, { name = "combat", interval = 2000, chance = 7, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 9, speedChange = 470, effect = CONST_ME_SMOKE, target = false, duration = 7000 } + { name = "speed", interval = 2000, chance = 9, speedChange = 470, effect = CONST_ME_SMOKE, target = false, duration = 7000 }, } monster.elements = { @@ -127,7 +127,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/skeleton.lua b/data-otservbr-global/monster/undeads/skeleton.lua index c6502f8828f..22b05bff44d 100644 --- a/data-otservbr-global/monster/undeads/skeleton.lua +++ b/data-otservbr-global/monster/undeads/skeleton.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 33 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "In many dungeons around Tibia, like the Ancient Temple and Ghostlands. \z Also found in Rookgaard tombs and north east of Port Hope, in the jungle of Tiquanda, \z - beneath Fenrock and in the desert Tombs, Vengoth Castle." + beneath Fenrock and in the desert Tombs, Vengoth Castle.", } monster.health = 50 @@ -37,7 +37,7 @@ monster.manaCost = 300 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -85,12 +85,12 @@ monster.loot = { { name = "viking helmet", chance = 7520 }, { name = "brass shield", chance = 2090 }, { name = "pelvis bone", chance = 9940 }, - { id = 23986, chance = 1000 } -- heavy old tome + { id = 23986, chance = 1000 }, -- heavy old tome } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 1, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 1, target = false }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/skeleton_elite_warrior.lua b/data-otservbr-global/monster/undeads/skeleton_elite_warrior.lua index b414f8bdeb5..a0cc7545b99 100644 --- a/data-otservbr-global/monster/undeads/skeleton_elite_warrior.lua +++ b/data-otservbr-global/monster/undeads/skeleton_elite_warrior.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1674 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Deep Desert." + Locations = "Deep Desert.", } monster.health = 7800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -81,13 +81,13 @@ monster.loot = { { name = "pelvis bone", chance = 2630, maxCount = 10 }, { name = "unholy bone", chance = 2630, maxCount = 5 }, { name = "skull helmet", chance = 350 }, - { name = "ruthless axe", chance = 150 } + { name = "ruthless axe", chance = 150 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -700 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -480, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 1500, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -380, maxDamage = -520, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false } + { name = "combat", interval = 1500, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -380, maxDamage = -520, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/skeleton_warrior.lua b/data-otservbr-global/monster/undeads/skeleton_warrior.lua index 1c143548655..b28d25ea0e4 100644 --- a/data-otservbr-global/monster/undeads/skeleton_warrior.lua +++ b/data-otservbr-global/monster/undeads/skeleton_warrior.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 446 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Island of Destiny, Drefia, Ghostland and beneath Fenrock." + Locations = "Island of Destiny, Drefia, Ghostland and beneath Fenrock.", } monster.health = 65 @@ -35,7 +35,7 @@ monster.manaCost = 350 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -79,12 +79,12 @@ monster.loot = { { name = "mace", chance = 2000 }, { name = "white mushroom", chance = 24000, maxCount = 3 }, { name = "brown mushroom", chance = 1700 }, - { name = "pelvis bone", chance = 10630 } + { name = "pelvis bone", chance = 10630 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 1, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -110,7 +110,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/sorcerer's_apparition.lua b/data-otservbr-global/monster/undeads/sorcerer's_apparition.lua index 46d03e80738..8cf059be62c 100644 --- a/data-otservbr-global/monster/undeads/sorcerer's_apparition.lua +++ b/data-otservbr-global/monster/undeads/sorcerer's_apparition.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 52, lookFeet = 76, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1949 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Mirrored Nightmare." + Locations = "Mirrored Nightmare.", } monster.health = 25000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -62,18 +62,18 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, - { text = "I'll take your place when you are gone.", yell = false } + { text = "I'll take your place when you are gone.", yell = false }, } monster.loot = { @@ -121,14 +121,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 30 }, { type = COMBAT_HOLYDAMAGE, percent = 40 }, - { type = COMBAT_DEATHDAMAGE, percent = -20 } + { type = COMBAT_DEATHDAMAGE, percent = -20 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/souleater.lua b/data-otservbr-global/monster/undeads/souleater.lua index 338610c1845..987e34523bf 100644 --- a/data-otservbr-global/monster/undeads/souleater.lua +++ b/data-otservbr-global/monster/undeads/souleater.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 675 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Razzachai, Northern Zao Plantations, Souleater Mountains, Deeper Banuta." + Locations = "Razzachai, Northern Zao Plantations, Souleater Mountains, Deeper Banuta.", } monster.health = 1100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,7 +89,7 @@ monster.loot = { { name = "ultimate health potion", chance = 9400 }, { name = "souleater trophy", chance = 20 }, { name = "lizard essence", chance = 15250 }, - { name = "ectoplasmic sushi", chance = 2000 } + { name = "ectoplasmic sushi", chance = 2000 }, } monster.attacks = { @@ -97,7 +97,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 100, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -100, range = 7, shootEffect = CONST_ANI_SMALLICE, target = true }, { name = "souleater drown", interval = 2000, chance = 10, target = false }, { name = "souleater wave", interval = 2000, chance = 10, minDamage = -100, maxDamage = -200, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -30, maxDamage = -60, radius = 4, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -30, maxDamage = -60, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.defenses = { armor = 30, mitigation = 0.51, { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 120, maxDamage = 125, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 120, maxDamage = 125, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -125,7 +125,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/spectre.lua b/data-otservbr-global/monster/undeads/spectre.lua index 5b67d8254bd..2e7120521cd 100644 --- a/data-otservbr-global/monster/undeads/spectre.lua +++ b/data-otservbr-global/monster/undeads/spectre.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 286 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Pits of Inferno, The Crystal Caves and The Soul Well in The Inquisition Quest, \z - Drefia Grim Reaper Dungeons, as well in Vengoth." + Drefia Grim Reaper Dungeons, as well in Vengoth.", } monster.health = 1350 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,7 +95,7 @@ monster.loot = { { name = "demonic essence", chance = 6270 }, { name = "relic sword", chance = 700 }, { name = "great mana potion", chance = 920 }, - { name = "shiny stone", chance = 1000 } + { name = "shiny stone", chance = 1000 }, } monster.attacks = { @@ -103,7 +103,7 @@ monster.attacks = { { name = "drunk", interval = 2000, chance = 15, radius = 4, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 6000 }, { name = "spectre drown", interval = 2000, chance = 15, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -400, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -550, range = 7, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -550, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -111,7 +111,7 @@ monster.defenses = { armor = 40, mitigation = 1.04, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/tarnished_spirit.lua b/data-otservbr-global/monster/undeads/tarnished_spirit.lua index 4e59738a25d..2555b39ef20 100644 --- a/data-otservbr-global/monster/undeads/tarnished_spirit.lua +++ b/data-otservbr-global/monster/undeads/tarnished_spirit.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 976 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Drefia." + Locations = "Drefia.", } monster.health = 150 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -82,12 +82,12 @@ monster.loot = { { name = "cape", chance = 8800 }, { name = "shadow herb", chance = 14400 }, { name = "white piece of cloth", chance = 1940 }, - { name = "ghostly tissue", chance = 1870 } + { name = "ghostly tissue", chance = 1870 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -45, range = 1, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -45, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/tomb_servant.lua b/data-otservbr-global/monster/undeads/tomb_servant.lua index edc070811a3..3cca930ed30 100644 --- a/data-otservbr-global/monster/undeads/tomb_servant.lua +++ b/data-otservbr-global/monster/undeads/tomb_servant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 708 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Horestis Tomb" + Locations = "Horestis Tomb", } monster.health = 475 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -85,12 +85,12 @@ monster.loot = { { name = "bone shield", chance = 5300 }, { name = "worm", chance = 25325, maxCount = 12 }, { name = "half-digested piece of meat", chance = 1000 }, - { name = "fist on a stick", chance = 230 } + { name = "fist on a stick", chance = 230 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -40, maxDamage = -55, range = 7, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -40, maxDamage = -55, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/undead_cavebear.lua b/data-otservbr-global/monster/undeads/undead_cavebear.lua index 2f4d702a8f0..92370c87ca5 100644 --- a/data-otservbr-global/monster/undeads/undead_cavebear.lua +++ b/data-otservbr-global/monster/undeads/undead_cavebear.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 696 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Lich Hell." + Locations = "Lich Hell.", } monster.health = 450 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -78,11 +78,11 @@ monster.loot = { { name = "gold coin", chance = 31820, maxCount = 80 }, { name = "maxilla", chance = 13640 }, { name = "cavebear skull", chance = 2600 }, - { name = "health potion", chance = 1300 } + { name = "health potion", chance = 1300 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/undead_dragon.lua b/data-otservbr-global/monster/undeads/undead_dragon.lua index 62e2a7de839..5e604be6c5a 100644 --- a/data-otservbr-global/monster/undeads/undead_dragon.lua +++ b/data-otservbr-global/monster/undeads/undead_dragon.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 282 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Helheim (single, isolated spawn), Pits of Inferno (Ashfalor's throneroom), \z Demon Forge (The Shadow Nexus and The Arcanum), under Razachai (including the Inner Sanctum), \z - Chyllfroest, Oramond Fury Dungeon." + Chyllfroest, Oramond Fury Dungeon.", } monster.health = 8350 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -64,19 +64,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = true, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "FEEEED MY ETERNAL HUNGER!", yell = true }, - { text = "I SENSE LIFE", yell = true } + { text = "I SENSE LIFE", yell = true }, } monster.loot = { @@ -104,7 +104,7 @@ monster.loot = { { name = "skullcracker armor", chance = 290 }, { name = "gold ingot", chance = 570 }, { name = "unholy bone", chance = 33380 }, - { name = "spellweaver's robe", chance = 860 } + { name = "spellweaver's robe", chance = 860 }, } monster.attacks = { @@ -116,13 +116,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -690, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "undead dragon curse", interval = 2000, chance = 10, target = false } + { name = "undead dragon curse", interval = 2000, chance = 10, target = false }, } monster.defenses = { defense = 40, armor = 40, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -135,14 +135,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 50 }, { type = COMBAT_HOLYDAMAGE, percent = -25 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/undead_elite_gladiator.lua b/data-otservbr-global/monster/undeads/undead_elite_gladiator.lua index ecb031675c3..0f66c87cb21 100644 --- a/data-otservbr-global/monster/undeads/undead_elite_gladiator.lua +++ b/data-otservbr-global/monster/undeads/undead_elite_gladiator.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1675 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Deep Desert." + Locations = "Deep Desert.", } monster.health = 8000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,20 +90,20 @@ monster.loot = { { name = "great health potion", chance = 250, maxCount = 2 }, { id = 3049, chance = 230 }, -- stealth ring { name = "crusader helmet", chance = 150 }, - { name = "relic sword", chance = 150 } + { name = "relic sword", chance = 150 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 100, maxDamage = 550 }, { name = "combat", interval = 1500, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 300, maxDamage = 550, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = false }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 300, maxDamage = 500, range = 5, radius = 3, effect = CONST_ME_HITAREA, target = false } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 300, maxDamage = 500, range = 5, radius = 3, effect = CONST_ME_HITAREA, target = false }, } monster.defenses = { defense = 45, armor = 85, mitigation = 2.40, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/undead_gladiator.lua b/data-otservbr-global/monster/undeads/undead_gladiator.lua index 7def7dbb43f..1b22aa30d69 100644 --- a/data-otservbr-global/monster/undeads/undead_gladiator.lua +++ b/data-otservbr-global/monster/undeads/undead_gladiator.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 508 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Arena and Zoo Quarter, Krailos." + Locations = "Arena and Zoo Quarter, Krailos.", } monster.health = 1000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -96,19 +96,19 @@ monster.loot = { { name = "flask of warrior's sweat", chance = 210 }, { name = "health potion", chance = 350 }, { name = "belted cape", chance = 5000 }, - { name = "broken gladiator shield", chance = 5200 } + { name = "broken gladiator shield", chance = 5200 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -135, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -135, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = false }, } monster.defenses = { defense = 45, armor = 35, mitigation = 1.54, - { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/undead_mine_worker.lua b/data-otservbr-global/monster/undeads/undead_mine_worker.lua index 925099cb088..c82db3993ca 100644 --- a/data-otservbr-global/monster/undeads/undead_mine_worker.lua +++ b/data-otservbr-global/monster/undeads/undead_mine_worker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 594 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 1, - Locations = "West of Edron in the Lost Mines." + Locations = "West of Edron in the Lost Mines.", } monster.health = 65 @@ -35,7 +35,7 @@ monster.manaCost = 435 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -81,12 +81,12 @@ monster.loot = { { id = 3264, chance = 3850 }, -- sword { name = "mace", chance = 26900 }, { name = "white mushroom", chance = 15400, maxCount = 3 }, - { name = "brown mushroom", chance = 3850 } + { name = "brown mushroom", chance = 3850 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 1, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { @@ -112,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/undead_prospector.lua b/data-otservbr-global/monster/undeads/undead_prospector.lua index 81e15c4eee0..4a282756471 100644 --- a/data-otservbr-global/monster/undeads/undead_prospector.lua +++ b/data-otservbr-global/monster/undeads/undead_prospector.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 595 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 1, - Locations = "West of Edron, in a some Lost Mines." + Locations = "West of Edron, in a some Lost Mines.", } monster.health = 100 @@ -35,7 +35,7 @@ monster.manaCost = 440 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -87,18 +87,18 @@ monster.loot = { { name = "viking helmet", chance = 1000 }, { name = "scale armor", chance = 1000 }, { name = "worm", chance = 92310, maxCount = 6 }, - { name = "brown piece of cloth", chance = 1000 } + { name = "brown piece of cloth", chance = 1000 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, } monster.defenses = { defense = 0, armor = 8, mitigation = 0.43, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 5, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 5, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/vampire.lua b/data-otservbr-global/monster/undeads/vampire.lua index be48694a563..ffa1b280b7e 100644 --- a/data-otservbr-global/monster/undeads/vampire.lua +++ b/data-otservbr-global/monster/undeads/vampire.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 68 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "Drefia, Ghost Ship between Venore and Darashia, some Ankrahmun Tombs, Lich Hell, \z Serpentine Tower (unreachable), Ghostlands (unreachable). House between Plains of Havoc and Dark Cathedral, \z Hellgate (only during Zevelon Duskbringer raid), Edron Undead Cave, Vengoth Castle (and mountains before door), \z - Edron Vampire Crypt." + Edron Vampire Crypt.", } monster.health = 475 @@ -38,7 +38,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -94,13 +94,13 @@ monster.loot = { { name = "grave flower", chance = 1910 }, { name = "strong health potion", chance = 1500 }, { name = "vampire teeth", chance = 7600 }, - { name = "blood preservation", chance = 5100 } + { name = "blood preservation", chance = 5100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, range = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -400, range = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 60000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -400, range = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 60000 }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.defenses = { mitigation = 1.04, { name = "outfit", interval = 4000, chance = 10, effect = CONST_ME_GROUNDSHAKER, target = false, duration = 5000, outfitMonster = "bat" }, { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, target = false }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/vampire_bride.lua b/data-otservbr-global/monster/undeads/vampire_bride.lua index 1dfbfc2467d..191501f78b6 100644 --- a/data-otservbr-global/monster/undeads/vampire_bride.lua +++ b/data-otservbr-global/monster/undeads/vampire_bride.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 483 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Drefia and Vampire Castle on Vengoth, Edron Vampire Crypt." + Locations = "Drefia and Vampire Castle on Vengoth, Edron Vampire Crypt.", } monster.health = 1200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -96,7 +96,7 @@ monster.loot = { { id = 8923, chance = 970 }, -- velvet tapestry { name = "vampire teeth", chance = 10000 }, { name = "blood preservation", chance = 4950 }, - { name = "leather whip", chance = 20 } + { name = "leather whip", chance = 20 }, } monster.attacks = { @@ -104,14 +104,14 @@ monster.attacks = { { name = "combat", interval = 3000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -60, maxDamage = -130, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, { name = "combat", interval = 4000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_HEARTS, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -150, range = 7, shootEffect = CONST_ANI_ENERGY, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -150, range = 7, shootEffect = CONST_ANI_ENERGY, target = true }, } monster.defenses = { defense = 20, armor = 55, mitigation = 1.18, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/vampire_viscount.lua b/data-otservbr-global/monster/undeads/vampire_viscount.lua index 7c5e1a2aef1..eb84adcb65e 100644 --- a/data-otservbr-global/monster/undeads/vampire_viscount.lua +++ b/data-otservbr-global/monster/undeads/vampire_viscount.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 958 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Drefia, Edron Vampire Crypt." + Locations = "Drefia, Edron Vampire Crypt.", } monster.health = 1200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,14 +91,14 @@ monster.loot = { { name = "vampire teeth", chance = 7200 }, { name = "blood preservation", chance = 2910 }, { name = "tooth file", chance = 6560 }, - { name = "vampire's cape chain", chance = 4460 } + { name = "vampire's cape chain", chance = 4460 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -100, range = 6, radius = 3, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -320, maxDamage = -560, radius = 6, effect = CONST_ME_BATS, target = false } + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -320, maxDamage = -560, radius = 6, effect = CONST_ME_BATS, target = false }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.defenses = { armor = 42, mitigation = 1.18, { name = "outfit", interval = 2000, chance = 10, target = false, duration = 4000, outfitMonster = "Vicious Manbat" }, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } monster.elements = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/vibrant_phantom.lua b/data-otservbr-global/monster/undeads/vibrant_phantom.lua index 9d016a47f3b..9f17bee76ee 100644 --- a/data-otservbr-global/monster/undeads/vibrant_phantom.lua +++ b/data-otservbr-global/monster/undeads/vibrant_phantom.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 88, lookFeet = 91, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1929 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Furious Crater." + Locations = "Furious Crater.", } monster.health = 27000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/vicious_manbat.lua b/data-otservbr-global/monster/undeads/vicious_manbat.lua index 1bd87537eb6..0c50b15fe44 100644 --- a/data-otservbr-global/monster/undeads/vicious_manbat.lua +++ b/data-otservbr-global/monster/undeads/vicious_manbat.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 959 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 3, Occurrence = 3, - Locations = "Deep under Drefia." + Locations = "Deep under Drefia.", } monster.health = 1700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -75,7 +75,7 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 50000, maxCount = 100 } + { name = "gold coin", chance = 50000, maxCount = 100 }, } monster.attacks = { @@ -83,7 +83,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, target = false }, { name = "speed", interval = 2000, chance = 15, radius = 1, effect = CONST_ME_BATS, target = true }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -400, maxDamage = -600, radius = 2, target = false } + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -400, maxDamage = -600, radius = 2, target = false }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/white_shade.lua b/data-otservbr-global/monster/undeads/white_shade.lua index 097536ae5d0..f0256dfbae2 100644 --- a/data-otservbr-global/monster/undeads/white_shade.lua +++ b/data-otservbr-global/monster/undeads/white_shade.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 962 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Drefia." + Locations = "Drefia.", } monster.health = 260 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -76,20 +76,20 @@ monster.voices = { } monster.loot = { - { name = "white piece of cloth", chance = 3370 } + { name = "white piece of cloth", chance = 3370 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -4, maxDamage = -6, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_YALAHARIGHOST, target = false }, - { name = "speed", interval = 2000, chance = 5, speedChange = -400, radius = 4, effect = CONST_ME_HITAREA, target = false, duration = 3000 } + { name = "speed", interval = 2000, chance = 5, speedChange = -400, radius = 4, effect = CONST_ME_HITAREA, target = false, duration = 3000 }, } monster.defenses = { defense = 15, armor = 10, mitigation = 0.51, - { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE } + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/undeads/zombie.lua b/data-otservbr-global/monster/undeads/zombie.lua index 1fbfd955a31..36f33aa1a31 100644 --- a/data-otservbr-global/monster/undeads/zombie.lua +++ b/data-otservbr-global/monster/undeads/zombie.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 512 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Cemetery Quarter, Drefia, Vampire Castle, Treasure Island, Isle of Evil, Upper Spike." + Locations = "Cemetery Quarter, Drefia, Vampire Castle, Treasure Island, Isle of Evil, Upper Spike.", } monster.health = 500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,14 +88,14 @@ monster.loot = { { name = "simple dress", chance = 560 }, { name = "mana potion", chance = 740 }, { id = 8894, chance = 5680 }, -- heavily rusted armor - { name = "half-eaten brain", chance = 10000 } + { name = "half-eaten brain", chance = 10000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -14, maxDamage = -23, range = 1, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -24, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -49, range = 1, effect = CONST_ME_SMALLCLOUDS, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -49, range = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/afflicted_strider.lua b/data-otservbr-global/monster/vermins/afflicted_strider.lua index a24ccbea3b7..9ffbe388456 100644 --- a/data-otservbr-global/monster/vermins/afflicted_strider.lua +++ b/data-otservbr-global/monster/vermins/afflicted_strider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2094 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Antrum of the Fallen." + Locations = "Antrum of the Fallen.", } monster.health = 10000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,20 +95,20 @@ monster.loot = { { name = "titan axe", chance = 1880 }, { name = "haunted blade", chance = 1410 }, { name = "mercenary sword", chance = 1530 }, - { name = "knight axe", chance = 1290 } + { name = "knight axe", chance = 1290 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -550, maxDamage = -650, range = 3, shootEffect = CONST_ANI_POISON, target = true }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_DEATHDAMAGE, minDamage = -650, maxDamage = -800, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = false } + { name = "combat", interval = 2000, chance = 40, type = COMBAT_DEATHDAMAGE, minDamage = -650, maxDamage = -800, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { defense = 68, armor = 68, mitigation = 1.88, - { name = "speed", interval = 2000, chance = 25, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 25, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/ancient_scarab.lua b/data-otservbr-global/monster/vermins/ancient_scarab.lua index 1b601301be1..53d9c0e9a7b 100644 --- a/data-otservbr-global/monster/vermins/ancient_scarab.lua +++ b/data-otservbr-global/monster/vermins/ancient_scarab.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 79 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Ankrahmun Library Tomb, Stone Tomb, Peninsula Tomb, Mother of Scarabs Lair, Kha'zeel Scarab Lair, \z - deep in Larva Caves (found beneath steps underground), Lion's Rock, Arena and Zoo Quarter and beneath Fenrock." + deep in Larva Caves (found beneath steps underground), Lion's Rock, Arena and Zoo Quarter and beneath Fenrock.", } monster.health = 1000 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 3, summons = { - { name = "Larva", chance = 10, interval = 2000, count = 3 } - } + { name = "Larva", chance = 10, interval = 2000, count = 3 }, + }, } monster.voices = { @@ -96,7 +96,7 @@ monster.loot = { { name = "strong health potion", chance = 1500 }, { name = "springsprout rod", chance = 1000 }, { name = "terra hood", chance = 490 }, - { name = "scarab pincers", chance = 7000 } + { name = "scarab pincers", chance = 7000 }, } monster.attacks = { @@ -104,14 +104,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -15, maxDamage = -145, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -700, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false, duration = 25000 }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = -440, maxDamage = -520, radius = 5, effect = CONST_ME_POISONAREA, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = -440, maxDamage = -520, radius = 5, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { defense = 30, armor = 36, mitigation = 0.86, - { name = "speed", interval = 2000, chance = 15, speedChange = 380, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 380, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/blemished_spawn.lua b/data-otservbr-global/monster/vermins/blemished_spawn.lua index 4f72e879619..e99cd0a574c 100644 --- a/data-otservbr-global/monster/vermins/blemished_spawn.lua +++ b/data-otservbr-global/monster/vermins/blemished_spawn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2093 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Antrum of the Fallen." + Locations = "Antrum of the Fallen.", } monster.health = 9000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -98,7 +98,7 @@ monster.loot = { { id = 3289, chance = 3760 }, -- staff { name = "wand of cosmic energy", chance = 3620 }, { name = "blemished spawn tail", chance = 3530 }, - { name = "fur armor", chance = 1360 } + { name = "fur armor", chance = 1360 }, } monster.attacks = { @@ -131,7 +131,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/brimstone_bug.lua b/data-otservbr-global/monster/vermins/brimstone_bug.lua index 31861adf836..da8fbedb55b 100644 --- a/data-otservbr-global/monster/vermins/brimstone_bug.lua +++ b/data-otservbr-global/monster/vermins/brimstone_bug.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 674 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Beneath Razachai, Northern Zao Plantations, Brimstone Bug Cave, Chyllfroest, Krailos Spider Lair" + Locations = "Beneath Razachai, Northern Zao Plantations, Brimstone Bug Cave, Chyllfroest, Krailos Spider Lair", } monster.health = 1300 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -85,7 +85,7 @@ monster.loot = { { name = "lump of earth", chance = 20000 }, { name = "sulphurous stone", chance = 14970 }, { name = "brimstone fangs", chance = 5710 }, - { name = "brimstone shell", chance = 10000 } + { name = "brimstone shell", chance = 10000 }, } monster.attacks = { @@ -93,7 +93,7 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false, duration = 10000 }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -140, maxDamage = -310, radius = 6, effect = CONST_ME_SMALLPLANTS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -130, maxDamage = -200, length = 6, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "brimstone bug wave", interval = 2000, chance = 15, minDamage = -80, maxDamage = -120, target = false } + { name = "brimstone bug wave", interval = 2000, chance = 15, minDamage = -80, maxDamage = -120, target = false }, } monster.defenses = { @@ -119,7 +119,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/bug.lua b/data-otservbr-global/monster/vermins/bug.lua index 78c0eadbba1..d6e9cdfc86e 100644 --- a/data-otservbr-global/monster/vermins/bug.lua +++ b/data-otservbr-global/monster/vermins/bug.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 45 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "In many parts around Tibia, including Rookgaard." + Locations = "In many parts around Tibia, including Rookgaard.", } monster.health = 29 @@ -35,7 +35,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -74,11 +74,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 51170, maxCount = 6 }, - { name = "cherry", chance = 2590, maxCount = 3 } + { name = "cherry", chance = 2590, maxCount = 3 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -23 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -23 }, } monster.defenses = { @@ -104,7 +104,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/burrowing_beetle.lua b/data-otservbr-global/monster/vermins/burrowing_beetle.lua index 6c3e7f45c02..40e7241bd8a 100644 --- a/data-otservbr-global/monster/vermins/burrowing_beetle.lua +++ b/data-otservbr-global/monster/vermins/burrowing_beetle.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 450 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,20 +59,19 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -95 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -45, range = 1, shootEffect = CONST_ANI_POISON, target = false }, - { name = "poisonfield", interval = 2000, chance = 10, radius = 1, target = false } + { name = "poisonfield", interval = 2000, chance = 10, radius = 1, target = false }, } monster.defenses = { defense = 15, armor = 15, -- mitigation = ???, - { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -92,7 +91,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/butterfly.lua b/data-otservbr-global/monster/vermins/butterfly.lua index 1e76d7c9969..9ea18cb070f 100644 --- a/data-otservbr-global/monster/vermins/butterfly.lua +++ b/data-otservbr-global/monster/vermins/butterfly.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 213 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Ab'Dendriel, Ab'Dendriel Surroundings, Carlin, Cormaya, Edron Surroundings, \z Feyrist Meadows, Fibula, Fields of Glory, Green Claw Swamp, Issavi, Kazordoon Surroundings, Meriana, \z - Outlaw Camp, Port Hope Surroundings, Stonehome, Thais Surroundings, Venore Southern Swamp, Venore Surroundings." + Outlaw Camp, Port Hope Surroundings, Stonehome, Thais Surroundings, Venore Southern Swamp, Venore Surroundings.", } monster.health = 2 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -62,12 +62,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -75,12 +75,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.defenses = { defense = 5, - armor = 10 + armor = 10, } monster.elements = { @@ -93,14 +92,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/carrion_worm.lua b/data-otservbr-global/monster/vermins/carrion_worm.lua index ff78ea5f204..44ac6846dd7 100644 --- a/data-otservbr-global/monster/vermins/carrion_worm.lua +++ b/data-otservbr-global/monster/vermins/carrion_worm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 251 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Edron, Cormaya, Drillworm Caves, Venore Swamps, Liberty Bay, Vandura, Hellgate, \z Fibula Dungeon, Stonehome, Kazordoon, Darashia Rotworm Caves, Port Hope, Ancient Temple, \z - Fenrock, Arena and Zoo Quarter." + Fenrock, Arena and Zoo Quarter.", } monster.health = 145 @@ -37,7 +37,7 @@ monster.manaCost = 380 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -79,11 +79,11 @@ monster.loot = { { name = "meat", chance = 9460, maxCount = 2 }, { name = "worm", chance = 2100, maxCount = 2 }, { name = "carrion worm fang", chance = 10000 }, - { id = 12600, chance = 210 } -- coal + { id = 12600, chance = 210 }, -- coal } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/cave_chimera.lua b/data-otservbr-global/monster/vermins/cave_chimera.lua index c12515723e1..9a76019867b 100644 --- a/data-otservbr-global/monster/vermins/cave_chimera.lua +++ b/data-otservbr-global/monster/vermins/cave_chimera.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 64, lookFeet = 70, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2096 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Dwelling of the Forgotten" + Locations = "Dwelling of the Forgotten", } monster.health = 8000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,7 +95,7 @@ monster.loot = { { name = "ornate crossbow", chance = 850 }, { name = "crystal crossbow", chance = 180 }, { name = "composite hornbow", chance = 100 }, - { name = "elvish bow", chance = 80 } + { name = "elvish bow", chance = 80 }, } monster.attacks = { @@ -109,7 +109,7 @@ monster.defenses = { defense = 60, armor = 60, mitigation = 1.88, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/cave_devourer.lua b/data-otservbr-global/monster/vermins/cave_devourer.lua index d666d8ec6b9..15d639d4d9d 100644 --- a/data-otservbr-global/monster/vermins/cave_devourer.lua +++ b/data-otservbr-global/monster/vermins/cave_devourer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1544 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Warzone 5" + Locations = "Warzone 5", } monster.health = 4500 @@ -35,7 +35,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -88,7 +88,7 @@ monster.loot = { { name = "slime heart", chance = 13770, maxCount = 4 }, { name = "cave devourer legs", chance = 17160 }, { id = 3049, chance = 2540 }, -- stealth ring - { name = "suspicious device", chance = 420 } + { name = "suspicious device", chance = 420 }, } monster.attacks = { @@ -96,7 +96,7 @@ monster.attacks = { { name = "stalagmite rune", interval = 2000, chance = 15, minDamage = -190, maxDamage = -300, range = 7, length = 6, spread = 3, shootEffect = CONST_ANI_POISON, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -160, range = 3, length = 6, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -160, range = 3, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, target = false } + { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, target = false }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/centipede.lua b/data-otservbr-global/monster/vermins/centipede.lua index 11b86c5249e..cb5bd6eace3 100644 --- a/data-otservbr-global/monster/vermins/centipede.lua +++ b/data-otservbr-global/monster/vermins/centipede.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 124 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "All around Port Hope and Tiquanda, Dark Cathedral, Vandura, Meriana, Razzachai, \z - Slime cave east of Venore, Arena and Zoo Quarter, Gnarlhound Caves." + Slime cave east of Venore, Arena and Zoo Quarter, Gnarlhound Caves.", } monster.health = 70 @@ -36,7 +36,7 @@ monster.manaCost = 335 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,11 +76,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 80000, maxCount = 15 }, - { name = "centipede leg", chance = 10300 } + { name = "centipede leg", chance = 10300 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/chasm_spawn.lua b/data-otservbr-global/monster/vermins/chasm_spawn.lua index 8f31b207b17..0764367a1d0 100644 --- a/data-otservbr-global/monster/vermins/chasm_spawn.lua +++ b/data-otservbr-global/monster/vermins/chasm_spawn.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1546 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Warzone 4" + Locations = "Warzone 4", } monster.health = 4500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -89,7 +89,7 @@ monster.loot = { { name = "green crystal shard", chance = 7850 }, { name = "violet crystal shard", chance = 4690 }, { name = "mushroom backpack", chance = 610 }, - { name = "suspicious device", chance = 520 } + { name = "suspicious device", chance = 520 }, } monster.attacks = { @@ -100,7 +100,7 @@ monster.attacks = { { name = "explosion rune", interval = 2000, chance = 15, minDamage = -50, maxDamage = -170, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -60, range = 7, target = false }, { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -70, maxDamage = -140, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -70, maxDamage = -140, length = 3, spread = 3, effect = CONST_ME_PLANTATTACK, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -70, maxDamage = -140, length = 3, spread = 3, effect = CONST_ME_PLANTATTACK, target = false }, } monster.defenses = { @@ -126,7 +126,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/cockroach.lua b/data-otservbr-global/monster/vermins/cockroach.lua index 4072edc617d..0faa26877a1 100644 --- a/data-otservbr-global/monster/vermins/cockroach.lua +++ b/data-otservbr-global/monster/vermins/cockroach.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 1 monster.maxHealth = 1 monster.race = "venom" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 60000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -61,7 +60,7 @@ monster.voices = { } monster.loot = { - { name = "cockroach leg", chance = 100000 } + { name = "cockroach leg", chance = 100000 }, } monster.defenses = { @@ -87,7 +86,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/crawler.lua b/data-otservbr-global/monster/vermins/crawler.lua index ead176adac9..a6dd6fb32b9 100644 --- a/data-otservbr-global/monster/vermins/crawler.lua +++ b/data-otservbr-global/monster/vermins/crawler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 786 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Hive, Hive Outpost." + Locations = "Hive, Hive Outpost.", } monster.health = 1450 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,19 +84,19 @@ monster.loot = { { name = "small topaz", chance = 10040, maxCount = 2 }, { name = "crawler head plating", chance = 18430 }, { name = "compound eye", chance = 14640 }, - { name = "grasshopper legs", chance = 100 } + { name = "grasshopper legs", chance = 100 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -228, condition = { type = CONDITION_POISON, totalDamage = 80, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SMALLEARTH, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SMALLEARTH, target = false }, } monster.defenses = { defense = 30, armor = 38, mitigation = 1.26, - { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } monster.elements = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/crystal_spider.lua b/data-otservbr-global/monster/vermins/crystal_spider.lua index d723e0a9520..ecb4b9ee62c 100644 --- a/data-otservbr-global/monster/vermins/crystal_spider.lua +++ b/data-otservbr-global/monster/vermins/crystal_spider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 330 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "Atop of the Formorgar Glacier and deep inside Formorgar Mines, Frost Dragon Tunnel, \z Ice Witch Temple, Nibelor Ice Cave, the Crystal Caves in The Inquisition Quest, Mushroom Gardens, \z - Crystal Gardens." + Crystal Gardens.", } monster.health = 1250 @@ -37,7 +37,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 15 + chance = 15, } monster.strategiesTarget = { @@ -95,21 +95,21 @@ monster.loot = { { name = "sapphire hammer", chance = 140 }, { name = "crystal sword", chance = 2490 }, { name = "strong mana potion", chance = 14950 }, - { name = "glacier mask", chance = 670 } + { name = "glacier mask", chance = 670 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, { name = "speed", interval = 2000, chance = 15, speedChange = -800, range = 7, radius = 6, effect = CONST_ME_POFF, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = true }, - { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = true, duration = 10000 } + { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = true, duration = 10000 }, } monster.defenses = { defense = 0, armor = 43, mitigation = 1.60, - { name = "speed", interval = 2000, chance = 15, speedChange = 250, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 250, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -129,7 +129,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/deepworm.lua b/data-otservbr-global/monster/vermins/deepworm.lua index 5e656f09bfb..1127359392b 100644 --- a/data-otservbr-global/monster/vermins/deepworm.lua +++ b/data-otservbr-global/monster/vermins/deepworm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1531 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Gnome Deep Hub" + Locations = "Gnome Deep Hub", } monster.health = 3500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,13 +91,13 @@ monster.loot = { { name = "springsprout rod", chance = 1120 }, { name = "sacred tree amulet", chance = 2390 }, { id = 281, chance = 860 }, -- giant shimmering pearl (green) - { name = "suspicious device", chance = 530 } + { name = "suspicious device", chance = 530 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -190, maxDamage = -300, range = 7, length = 6, spread = 2, effect = CONST_ME_POISONAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -400, length = 3, spread = 3, effect = CONST_ME_POISONAREA, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -400, length = 3, spread = 3, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/diremaw.lua b/data-otservbr-global/monster/vermins/diremaw.lua index 7de83a584c5..530c3203922 100644 --- a/data-otservbr-global/monster/vermins/diremaw.lua +++ b/data-otservbr-global/monster/vermins/diremaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1532 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Gnome Deep Hub north and south tasking areas, Warzone 6" + Locations = "Gnome Deep Hub north and south tasking areas, Warzone 6", } monster.health = 3600 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,14 +90,14 @@ monster.loot = { { id = 281, chance = 3100 }, -- giant shimmering pearl (green) { name = "suspicious device", chance = 600 }, { name = "mycological bow", chance = 1200 }, - { name = "mushroom backpack", chance = 1500 } + { name = "mushroom backpack", chance = 1500 }, } monster.attacks = { { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -200, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POFF, target = true }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 21, minDamage = -200, maxDamage = -310, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 21, minDamage = -200, maxDamage = -310, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/drillworm.lua b/data-otservbr-global/monster/vermins/drillworm.lua index 7bba36f1446..f1ae51b1df4 100644 --- a/data-otservbr-global/monster/vermins/drillworm.lua +++ b/data-otservbr-global/monster/vermins/drillworm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 878 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Drillworm Caves, Lower Spike, Lost Dwarf version of the Forsaken Mine, Oramond Factory Raids and Warzone 4." + Locations = "Drillworm Caves, Lower Spike, Lost Dwarf version of the Forsaken Mine, Oramond Factory Raids and Warzone 4.", } monster.health = 1500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 20 + chance = 20, } monster.strategiesTarget = { @@ -90,14 +90,14 @@ monster.loot = { { name = "blue crystal splinter", chance = 9610 }, { name = "pulverized ore", chance = 5400 }, { name = "vein of ore", chance = 7280 }, - { name = "drill bolt", chance = 4870, maxCount = 2 } + { name = "drill bolt", chance = 4870, maxCount = 2 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, condition = { type = CONDITION_POISON, totalDamage = 100, interval = 4000 } }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -150, radius = 3, effect = CONST_ME_POISONAREA, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -150, radius = 3, effect = CONST_ME_POISONAREA, target = true }, } monster.defenses = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/emerald_damselfly.lua b/data-otservbr-global/monster/vermins/emerald_damselfly.lua index a3729011810..f0f03317f62 100644 --- a/data-otservbr-global/monster/vermins/emerald_damselfly.lua +++ b/data-otservbr-global/monster/vermins/emerald_damselfly.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 912 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Venore Salamander Cave, Dryad Gardens." + Locations = "Venore Salamander Cave, Dryad Gardens.", } monster.health = 90 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -80,19 +80,19 @@ monster.loot = { { name = "health potion", chance = 3580 }, { name = "mana potion", chance = 3550 }, { id = 17458, chance = 11830 }, -- damselfly wing - { id = 17463, chance = 9970 } -- damselfly eye + { id = 17463, chance = 9970 }, -- damselfly eye } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -4, condition = { type = CONDITION_POISON, totalDamage = 10, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -12, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -12, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { defense = 10, armor = 6, mitigation = 0.20, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 4, maxDamage = 10, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 4, maxDamage = 10, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -112,7 +112,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/exotic_cave_spider.lua b/data-otservbr-global/monster/vermins/exotic_cave_spider.lua index 97007b2b1fe..0ec053a8e67 100644 --- a/data-otservbr-global/monster/vermins/exotic_cave_spider.lua +++ b/data-otservbr-global/monster/vermins/exotic_cave_spider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2024 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Exotic cave spider cave." + Locations = "Exotic cave spider cave.", } monster.health = 1900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -81,18 +81,18 @@ monster.loot = { { name = "terra boots", chance = 4400 }, { name = "silver amulet", chance = 4550 }, { name = "spider silk", chance = 2850 }, - { name = "terra mantle", chance = 850 } + { name = "terra mantle", chance = 850 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450, condition = { type = CONDITION_POISON, totalDamage = 250, interval = 4000 } }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -90, maxDamage = -150, range = 7, radius = 3, effect = CONST_ME_POISONAREA, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -90, maxDamage = -150, range = 7, radius = 3, effect = CONST_ME_POISONAREA, target = true }, } monster.defenses = { defense = 40, - armor = 40 + armor = 40, } monster.elements = { @@ -105,14 +105,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = true }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/eyeless_devourer.lua b/data-otservbr-global/monster/vermins/eyeless_devourer.lua index 601a06310dd..1c45264bd8a 100644 --- a/data-otservbr-global/monster/vermins/eyeless_devourer.lua +++ b/data-otservbr-global/monster/vermins/eyeless_devourer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2092 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Antrum of the Fallen." + Locations = "Antrum of the Fallen.", } monster.health = 10000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -95,7 +95,7 @@ monster.loot = { { name = "ornate crossbow", chance = 1040 }, { name = "jade hammer", chance = 1200 }, { name = "shadow sceptre", chance = 400 }, - { name = "metal bat", chance = 320 } + { name = "metal bat", chance = 320 }, } monster.attacks = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/giant_spider.lua b/data-otservbr-global/monster/vermins/giant_spider.lua index dc73888b9e2..215f5884405 100644 --- a/data-otservbr-global/monster/vermins/giant_spider.lua +++ b/data-otservbr-global/monster/vermins/giant_spider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 38 @@ -29,7 +29,7 @@ monster.Bestiary = { west Drillworm Caves, Edron Hero Cave, Edron Orc Cave, on a hill near Drefia, \z on a hill north-west of Ankrahmun (inaccessible), Forbidden Lands, Deeper Banuta, Malada, Ramoa, \z Arena and Zoo Quarter, second floor up of Cemetery Quarter, beneath Fenrock, Vengoth Castle, \z - Vandura Mountain, in a cave in Robson Isle, Chyllfroest, Spider Caves, second floor of Krailos Spider Lair, Caverna Exanima." + Vandura Mountain, in a cave in Robson Isle, Chyllfroest, Spider Caves, second floor of Krailos Spider Lair, Caverna Exanima.", } monster.health = 1300 @@ -41,7 +41,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -78,8 +78,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Poison Spider", chance = 10, interval = 2000, count = 2 } - } + { name = "Poison Spider", chance = 10, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -100,20 +100,20 @@ monster.loot = { { name = "plate legs", chance = 8333 }, { name = "spider silk", chance = 1990 }, { name = "strong health potion", chance = 3550 }, - { name = "lightning headband", chance = 270 } + { name = "lightning headband", chance = 270 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, { name = "poisonfield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -70, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -70, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { defense = 0, armor = 30, mitigation = 1.04, - { name = "speed", interval = 2000, chance = 15, speedChange = 390, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 390, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/hibernal_moth.lua b/data-otservbr-global/monster/vermins/hibernal_moth.lua index c7300fe39b6..7c6fa184ddd 100644 --- a/data-otservbr-global/monster/vermins/hibernal_moth.lua +++ b/data-otservbr-global/monster/vermins/hibernal_moth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1737 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Court of Winter at night." + Locations = "Court of Winter at night.", } monster.health = 850 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -75,11 +75,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, } monster.defenses = { @@ -105,7 +104,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/hive_overseer.lua b/data-otservbr-global/monster/vermins/hive_overseer.lua index 3b79edd0445..244dce3de32 100644 --- a/data-otservbr-global/monster/vermins/hive_overseer.lua +++ b/data-otservbr-global/monster/vermins/hive_overseer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 801 @@ -26,7 +26,7 @@ monster.Bestiary = { Locations = "The Hive towers: on the highest floor of each tower, \z and in many of the closed rooms accessed with pheromones; \z many in the large underground room of the west tower. \z - Liberty Bay Hive Outpost: one spawn on the second floor underground." + Liberty Bay Hive Outpost: one spawn on the second floor underground.", } monster.health = 7500 @@ -38,7 +38,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -73,8 +73,8 @@ monster.light = { monster.summon = { maxSummons = 2, summons = { - { name = "Spidris Elite Summon", chance = 40, interval = 2000, count = 2 } - } + { name = "Spidris Elite Summon", chance = 40, interval = 2000, count = 2 }, + }, } monster.voices = { @@ -100,14 +100,14 @@ monster.loot = { { name = "carapace shield", chance = 920 }, { name = "hive scythe", chance = 1650 }, { name = "gooey mass", chance = 13000, maxCount = 2 }, - { name = "hive bow", chance = 830 } + { name = "hive bow", chance = 830 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -80, radius = 4, effect = CONST_ME_POISONAREA, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -600, maxDamage = -1000, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false } + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -600, maxDamage = -1000, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { @@ -115,7 +115,7 @@ monster.defenses = { armor = 57, mitigation = 2.40, { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 500, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 500, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -135,7 +135,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/insect_swarm.lua b/data-otservbr-global/monster/vermins/insect_swarm.lua index 1c305bd20d9..c0dbd0ec464 100644 --- a/data-otservbr-global/monster/vermins/insect_swarm.lua +++ b/data-otservbr-global/monster/vermins/insect_swarm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 621 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Zao Steppe, Northern Zao Plantations and the Horestis Tomb \z - (only when the curse of Horestis is not active)." + (only when the curse of Horestis is not active).", } monster.health = 50 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,12 +60,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false + canWalkOnPoison = false, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -73,17 +73,16 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10, condition = { type = CONDITION_POISON, totalDamage = 16, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -15, range = 1, effect = CONST_ME_MAGIC_RED, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -15, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { defense = 5, - armor = 5 + armor = 5, } monster.elements = { @@ -96,14 +95,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 } + { type = COMBAT_DEATHDAMAGE, percent = 0 }, } monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/insectoid_scout.lua b/data-otservbr-global/monster/vermins/insectoid_scout.lua index 26ec1396605..d562e0a96f2 100644 --- a/data-otservbr-global/monster/vermins/insectoid_scout.lua +++ b/data-otservbr-global/monster/vermins/insectoid_scout.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 732 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 2, - Locations = "West and south of Greenshore." + Locations = "West and south of Greenshore.", } monster.health = 230 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -78,11 +78,11 @@ monster.loot = { { name = "gold coin", chance = 80000, maxCount = 80 }, { id = 3093, chance = 100 }, -- club ring { name = "ripper lance", chance = 850 }, - { name = "health potion", chance = 280 } + { name = "health potion", chance = 280 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -74, condition = { type = CONDITION_POISON, totalDamage = 60, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -74, condition = { type = CONDITION_POISON, totalDamage = 60, interval = 4000 } }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/insectoid_worker.lua b/data-otservbr-global/monster/vermins/insectoid_worker.lua index fa3b58f1e84..08770aa809b 100644 --- a/data-otservbr-global/monster/vermins/insectoid_worker.lua +++ b/data-otservbr-global/monster/vermins/insectoid_worker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 796 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Hive, Hive Outpost." + Locations = "Hive, Hive Outpost.", } monster.health = 950 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -78,11 +78,11 @@ monster.loot = { { name = "epee", chance = 560 }, { name = "health potion", chance = 5090 }, { name = "compound eye", chance = 15380 }, - { id = 14225, chance = 14990 } -- dung ball + { id = 14225, chance = 14990 }, -- dung ball } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -163, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -163, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/kollos.lua b/data-otservbr-global/monster/vermins/kollos.lua index d733683115b..a68809ab288 100644 --- a/data-otservbr-global/monster/vermins/kollos.lua +++ b/data-otservbr-global/monster/vermins/kollos.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 788 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Hive, Hive Outpost." + Locations = "Hive, Hive Outpost.", } monster.health = 3800 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -91,12 +91,12 @@ monster.loot = { { name = "carapace shield", chance = 310 }, { name = "hive scythe", chance = 700 }, { name = "buggy backpack", chance = 460 }, - { name = "tarsal arrow", chance = 10210, maxCount = 5 } + { name = "tarsal arrow", chance = 10210, maxCount = 5 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -315 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, range = 7, radius = 3, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONHIT, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, range = 7, radius = 3, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONHIT, target = true }, } monster.defenses = { @@ -122,7 +122,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/lacewing_moth.lua b/data-otservbr-global/monster/vermins/lacewing_moth.lua index 71567875ff2..47882ba7e7f 100644 --- a/data-otservbr-global/monster/vermins/lacewing_moth.lua +++ b/data-otservbr-global/monster/vermins/lacewing_moth.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1736 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 1, - Locations = "Court of Summer at day." + Locations = "Court of Summer at day.", } monster.health = 900 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -75,11 +75,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, } monster.defenses = { @@ -105,7 +104,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/ladybug.lua b/data-otservbr-global/monster/vermins/ladybug.lua index a214abc0f01..9becac2de18 100644 --- a/data-otservbr-global/monster/vermins/ladybug.lua +++ b/data-otservbr-global/monster/vermins/ladybug.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 778 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 2, - Locations = "The Hive surface during the Hive Born World Change's third stage." + Locations = "The Hive surface during the Hive Born World Change's third stage.", } monster.health = 255 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -74,13 +74,13 @@ monster.voices = { } monster.loot = { - { name = "gold coin", chance = 65000, maxCount = 40 } + { name = "gold coin", chance = 65000, maxCount = 40 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -4 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -20, range = 1, shootEffect = CONST_ANI_POISON, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { @@ -106,7 +106,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/lancer_beetle.lua b/data-otservbr-global/monster/vermins/lancer_beetle.lua index 2bd7fd0a816..ad7c445334b 100644 --- a/data-otservbr-global/monster/vermins/lancer_beetle.lua +++ b/data-otservbr-global/monster/vermins/lancer_beetle.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 633 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Zao Wailing Widow Cave, Muggy Plains (during raid), Razzachai, \z - Northern Zao Plantations, Northern Brimstone Bug Cave, Chyllfroest." + Northern Zao Plantations, Northern Brimstone Bug Cave, Chyllfroest.", } monster.health = 400 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -81,7 +81,7 @@ monster.loot = { { name = "poisonous slime", chance = 8333 }, { name = "lump of dirt", chance = 4166 }, { name = "lancer beetle shell", chance = 16666 }, - { name = "beetle necklace", chance = 1123 } + { name = "beetle necklace", chance = 1123 }, } monster.attacks = { @@ -90,14 +90,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -90, length = 7, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -40, maxDamage = -80, range = 7, shootEffect = CONST_ANI_POISON, target = false }, - { name = "lancer beetle curse", interval = 2000, chance = 5, range = 5, target = false } + { name = "lancer beetle curse", interval = 2000, chance = 5, range = 5, target = false }, } monster.defenses = { defense = 20, armor = 35, mitigation = 0.70, - { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_GROUNDSHAKER } + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_GROUNDSHAKER }, } monster.elements = { @@ -117,7 +117,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/larva.lua b/data-otservbr-global/monster/vermins/larva.lua index f2623bc37fd..385b35d6132 100644 --- a/data-otservbr-global/monster/vermins/larva.lua +++ b/data-otservbr-global/monster/vermins/larva.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 82 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Larva Caves, Ankrahmun Tombs, Lions Rock, Gardens of Night (unreachable)" + Locations = "Larva Caves, Ankrahmun Tombs, Lions Rock, Gardens of Night (unreachable)", } monster.health = 70 @@ -35,7 +35,7 @@ monster.manaCost = 355 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -74,11 +74,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 63000, maxCount = 15 }, - { name = "meat", chance = 14666 } + { name = "meat", chance = 14666 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } }, } monster.defenses = { @@ -104,7 +104,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/lavafungus.lua b/data-otservbr-global/monster/vermins/lavafungus.lua index fd996fbb743..c25d314a85d 100644 --- a/data-otservbr-global/monster/vermins/lavafungus.lua +++ b/data-otservbr-global/monster/vermins/lavafungus.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2095 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Grotto of the Lost." + Locations = "Grotto of the Lost.", } monster.health = 7200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -96,7 +96,7 @@ monster.loot = { { name = "focus cape", chance = 2330 }, { name = "wand of starstorm", chance = 2330 }, { name = "crystal mace", chance = 1700 }, - { id = 3097, chance = 2330 } -- dwarven ring + { id = 3097, chance = 2330 }, -- dwarven ring } monster.attacks = { @@ -112,7 +112,7 @@ monster.defenses = { defense = 70, armor = 70, mitigation = 1.60, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 270, maxDamage = 530, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 270, maxDamage = 530, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -132,7 +132,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/lavaworm.lua b/data-otservbr-global/monster/vermins/lavaworm.lua index 39f48d4d71c..bc1ed322b5a 100644 --- a/data-otservbr-global/monster/vermins/lavaworm.lua +++ b/data-otservbr-global/monster/vermins/lavaworm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2088 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Grotto of the Lost." + Locations = "Grotto of the Lost.", } monster.health = 7500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -90,7 +90,7 @@ monster.loot = { { name = "warrior helmet", chance = 1560 }, { name = "wand of voodoo", chance = 1560 }, { name = "crusader helmet", chance = 1560 }, - { name = "strange helmet", chance = 500 } + { name = "strange helmet", chance = 500 }, } monster.attacks = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/lesser_swarmer.lua b/data-otservbr-global/monster/vermins/lesser_swarmer.lua index a4fceea5dc7..ae60d6545c8 100644 --- a/data-otservbr-global/monster/vermins/lesser_swarmer.lua +++ b/data-otservbr-global/monster/vermins/lesser_swarmer.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 230 monster.maxHealth = 230 monster.race = "venom" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -60,12 +59,11 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -77, condition = { type = CONDITION_POISON, totalDamage = 60, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -70, range = 5, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -70, range = 5, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { @@ -91,7 +89,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/parasite.lua b/data-otservbr-global/monster/vermins/parasite.lua index 8006360c278..da981020291 100644 --- a/data-otservbr-global/monster/vermins/parasite.lua +++ b/data-otservbr-global/monster/vermins/parasite.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 550 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -59,11 +59,10 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 40, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 40, interval = 4000 } }, } monster.defenses = { @@ -89,7 +88,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/poison_spider.lua b/data-otservbr-global/monster/vermins/poison_spider.lua index aff81078e8a..dda6b6095cc 100644 --- a/data-otservbr-global/monster/vermins/poison_spider.lua +++ b/data-otservbr-global/monster/vermins/poison_spider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 36 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Found in various caves and plains around Tibia (including Rookgaard)." + Locations = "Found in various caves and plains around Tibia (including Rookgaard).", } monster.health = 26 @@ -35,7 +35,7 @@ monster.manaCost = 270 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -74,11 +74,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 75000, maxCount = 4 }, - { name = "poison spider shell", chance = 1140 } + { name = "poison spider shell", chance = 1140 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20, condition = { type = CONDITION_POISON, totalDamage = 30, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20, condition = { type = CONDITION_POISON, totalDamage = 30, interval = 4000 } }, } monster.defenses = { @@ -104,7 +104,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/rotworm.lua b/data-otservbr-global/monster/vermins/rotworm.lua index 9345748bbad..d3bf0058386 100644 --- a/data-otservbr-global/monster/vermins/rotworm.lua +++ b/data-otservbr-global/monster/vermins/rotworm.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 26 @@ -27,7 +27,7 @@ monster.Bestiary = { caves connecting Edron and Cormaya, Venore Swamp Troll cave, Thais Troll cave, Ferngrims Gate, \z Dwarf Mines, Hellgate, below the graves in eastern Rookgaard, spider cave in western Rookgaard, \z cave northeast of Ab'Dendriel, Darashia Rotworm Caves, Liberty Bay, Fenrock, \z - below Green Claw Swamp and some other places." + below Green Claw Swamp and some other places.", } monster.health = 65 @@ -39,7 +39,7 @@ monster.manaCost = 305 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -84,11 +84,11 @@ monster.loot = { { name = "ham", chance = 20120 }, { name = "worm", chance = 3000, maxCount = 3 }, { name = "lump of dirt", chance = 10000 }, - { name = "legion helmet", chance = 1890 } + { name = "legion helmet", chance = 1890 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, } monster.defenses = { @@ -114,7 +114,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/sacred_spider.lua b/data-otservbr-global/monster/vermins/sacred_spider.lua index ba95e613093..80733b10b57 100644 --- a/data-otservbr-global/monster/vermins/sacred_spider.lua +++ b/data-otservbr-global/monster/vermins/sacred_spider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 709 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Horestis Tomb (third floor and lower)." + Locations = "Horestis Tomb (third floor and lower).", } monster.health = 550 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -80,12 +80,12 @@ monster.loot = { { name = "scarab coin", chance = 6710, maxCount = 4 }, { name = "plate armor", chance = 5050 }, { name = "spider fangs", chance = 25380 }, - { name = "gold ingot", chance = 60 } + { name = "gold ingot", chance = 60 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160, condition = { type = CONDITION_POISON, totalDamage = 80, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -80, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -80, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/sandcrawler.lua b/data-otservbr-global/monster/vermins/sandcrawler.lua index fa1c07e432b..19c8a6d228d 100644 --- a/data-otservbr-global/monster/vermins/sandcrawler.lua +++ b/data-otservbr-global/monster/vermins/sandcrawler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 641 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 5, Stars = 1, Occurrence = 0, - Locations = "Zao Steppe, Raging Mage tower, Ankrahmun Desert, Darashia Desert, Drefia." + Locations = "Zao Steppe, Raging Mage tower, Ankrahmun Desert, Darashia Desert, Drefia.", } monster.health = 30 @@ -35,7 +35,7 @@ monster.manaCost = 250 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,11 +75,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 33333, maxCount = 6 }, - { name = "sandcrawler shell", chance = 2173 } + { name = "sandcrawler shell", chance = 2173 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -3 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -3 }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/scarab.lua b/data-otservbr-global/monster/vermins/scarab.lua index a9378a05bb0..8d807e19977 100644 --- a/data-otservbr-global/monster/vermins/scarab.lua +++ b/data-otservbr-global/monster/vermins/scarab.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 83 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Ankrahmun Tombs, the sand around Ankrahmun (use a shovel), deep in Larva caves, \z - the path leading to Chor, beneath Fenrock, Lion's Rock." + the path leading to Chor, beneath Fenrock, Lion's Rock.", } monster.health = 320 @@ -36,7 +36,7 @@ monster.manaCost = 395 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -80,20 +80,20 @@ monster.loot = { { name = "scarab coin", chance = 1098 }, { name = "daramian mace", chance = 245 }, { name = "meat", chance = 40000, maxCount = 2 }, - { name = "piece of scarab shell", chance = 4950 } + { name = "piece of scarab shell", chance = 4950 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -75 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -35, range = 1, shootEffect = CONST_ANI_POISON, target = false }, - { name = "poisonfield", interval = 2000, chance = 10, radius = 1, target = false } + { name = "poisonfield", interval = 2000, chance = 10, radius = 1, target = false }, } monster.defenses = { defense = 15, armor = 21, mitigation = 0.67, - { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -113,7 +113,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/scorpion.lua b/data-otservbr-global/monster/vermins/scorpion.lua index ccc70f8b7ee..f6822ed1bd3 100644 --- a/data-otservbr-global/monster/vermins/scorpion.lua +++ b/data-otservbr-global/monster/vermins/scorpion.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 43 @@ -27,7 +27,7 @@ monster.Bestiary = { Green Claw Swamp, beneath Folda, Maze of Lost Souls, Plains of Havoc, \z Venore and Ankrahmun Dragon Lairs, beneath Edron Graveyard, Ancient Temple, \z Hellgate, Mad Mage Room, Ankrahmun Tombs, Treasure Island, Mal'ouquah, Ramoa, \z - Cyclopolis, Ghostlands, Vengoth, Lion's Rock." + Cyclopolis, Ghostlands, Vengoth, Lion's Rock.", } monster.health = 45 @@ -39,7 +39,7 @@ monster.manaCost = 310 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -78,11 +78,11 @@ monster.voices = { } monster.loot = { - { name = "scorpion tail", chance = 4930 } + { name = "scorpion tail", chance = 4930 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50, condition = { type = CONDITION_POISON, totalDamage = 340, interval = 4000 } } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50, condition = { type = CONDITION_POISON, totalDamage = 340, interval = 4000 } }, } monster.defenses = { @@ -108,7 +108,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/slug.lua b/data-otservbr-global/monster/vermins/slug.lua index aeb9c205d46..ff53f7736b5 100644 --- a/data-otservbr-global/monster/vermins/slug.lua +++ b/data-otservbr-global/monster/vermins/slug.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 731 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "South-east of Venore, Swamp Troll Cave." + Locations = "South-east of Venore, Swamp Troll Cave.", } monster.health = 255 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -76,12 +76,12 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 62000, maxCount = 40 }, - { name = "worm", chance = 5000, maxCount = 3 } + { name = "worm", chance = 5000, maxCount = 3 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -44 }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -5, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = true } + { name = "combat", interval = 1000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -5, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { @@ -107,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/spider.lua b/data-otservbr-global/monster/vermins/spider.lua index 9c9ff5187e2..bc27cdd73b9 100644 --- a/data-otservbr-global/monster/vermins/spider.lua +++ b/data-otservbr-global/monster/vermins/spider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 30 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 1, Occurrence = 0, Locations = "Almost everywhere, in grass areas, sewers like Carlin sewers, \z - caves like as Ancient Temple, Rookgaard and the Tiquanda Tarantula Caves." + caves like as Ancient Temple, Rookgaard and the Tiquanda Tarantula Caves.", } monster.health = 20 @@ -36,7 +36,7 @@ monster.manaCost = 210 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -75,11 +75,11 @@ monster.voices = { monster.loot = { { name = "gold coin", chance = 65150, maxCount = 5 }, - { name = "spider fangs", chance = 960 } + { name = "spider fangs", chance = 960 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -9 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -9 }, } monster.defenses = { @@ -105,7 +105,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/spidris.lua b/data-otservbr-global/monster/vermins/spidris.lua index a4c6432c38d..b6cb8e35501 100644 --- a/data-otservbr-global/monster/vermins/spidris.lua +++ b/data-otservbr-global/monster/vermins/spidris.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 787 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 2, - Locations = "Hive, Hive Outpost." + Locations = "Hive, Hive Outpost.", } monster.health = 3700 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -89,19 +89,19 @@ monster.loot = { { name = "compound eye", chance = 12500 }, { name = "calopteryx cape", chance = 370 }, { name = "carapace shield", chance = 720 }, - { name = "hive scythe", chance = 690 } + { name = "hive scythe", chance = 690 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -298 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -310, range = 7, radius = 3, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -310, range = 7, radius = 3, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true }, } monster.defenses = { defense = 30, armor = 53, mitigation = 1.62, - { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/spidris_elite.lua b/data-otservbr-global/monster/vermins/spidris_elite.lua index 7f1e292f189..105f8e1d249 100644 --- a/data-otservbr-global/monster/vermins/spidris_elite.lua +++ b/data-otservbr-global/monster/vermins/spidris_elite.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 797 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 2, Locations = "The Hive: east tower (beyond gates), west tower (including beyond gates), \z - also anywhere Hive Overseers are found (as summons), Hive Outpost." + also anywhere Hive Overseers are found (as summons), Hive Outpost.", } monster.health = 5000 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -88,11 +88,11 @@ monster.loot = { { name = "compound eye", chance = 13210 }, { name = "calopteryx cape", chance = 1280 }, { name = "carapace shield", chance = 1170 }, - { name = "hive scythe", chance = 1390 } + { name = "hive scythe", chance = 1390 }, } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -349 } + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -349 }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/spitter.lua b/data-otservbr-global/monster/vermins/spitter.lua index 8559febc1bb..0cc902ef51d 100644 --- a/data-otservbr-global/monster/vermins/spitter.lua +++ b/data-otservbr-global/monster/vermins/spitter.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 791 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "The Hive, Hive Outpost." + Locations = "The Hive, Hive Outpost.", } monster.health = 1500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -90,20 +90,20 @@ monster.loot = { { name = "spitter nose", chance = 18000 }, { name = "compound eye", chance = 15000 }, { name = "calopteryx cape", chance = 240 }, - { name = "grasshopper legs", chance = 130 } + { name = "grasshopper legs", chance = 130 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150, condition = { type = CONDITION_POISON, totalDamage = 240, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -160, range = 7, radius = 3, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, - { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 15000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 15000 }, } monster.defenses = { defense = 20, armor = 48, mitigation = 1.60, - { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -123,7 +123,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/streaked_devourer.lua b/data-otservbr-global/monster/vermins/streaked_devourer.lua index a0ffaf9fa1c..516bbb1f489 100644 --- a/data-otservbr-global/monster/vermins/streaked_devourer.lua +++ b/data-otservbr-global/monster/vermins/streaked_devourer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2091 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Grotto of the Lost." + Locations = "Grotto of the Lost.", } monster.health = 7000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 8 + chance = 8, } monster.strategiesTarget = { @@ -91,7 +91,7 @@ monster.loot = { { name = "guardian halberd", chance = 3080 }, { name = "warrior's axe", chance = 1540 }, { name = "giant sword", chance = 830 }, - { name = "war axe", chance = 4620 } + { name = "war axe", chance = 4620 }, } monster.attacks = { @@ -124,7 +124,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/sulphider.lua b/data-otservbr-global/monster/vermins/sulphider.lua index 15b6ed774e4..7346eb4c687 100644 --- a/data-otservbr-global/monster/vermins/sulphider.lua +++ b/data-otservbr-global/monster/vermins/sulphider.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2264 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Monster Graveyard" + Locations = "Monster Graveyard", } monster.health = 21000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -83,7 +83,7 @@ monster.loot = { { name = "Magma Boots", chance = 1600 }, { name = "Crown Shield", chance = 1230 }, { name = "Amber Staff", chance = 1150 }, - { name = "Amulet of Loss", chance = 850 } + { name = "Amulet of Loss", chance = 850 }, } monster.attacks = { @@ -115,7 +115,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/swarmer.lua b/data-otservbr-global/monster/vermins/swarmer.lua index 040ac239840..3a27eca991a 100644 --- a/data-otservbr-global/monster/vermins/swarmer.lua +++ b/data-otservbr-global/monster/vermins/swarmer.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 790 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "The Hive, Hive Outpost." + Locations = "The Hive, Hive Outpost.", } monster.health = 460 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -79,19 +79,19 @@ monster.loot = { { name = "small emerald", chance = 920 }, { name = "epee", chance = 450 }, { name = "swarmer antenna", chance = 15300 }, - { name = "compound eye", chance = 12500 } + { name = "compound eye", chance = 12500 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -102, condition = { type = CONDITION_POISON, totalDamage = 80, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -110, range = 7, effect = CONST_ME_MAGIC_RED, target = true } + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -110, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, } monster.defenses = { defense = 10, armor = 29, mitigation = 0.91, - { name = "speed", interval = 2000, chance = 15, speedChange = 220, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 220, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -111,7 +111,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/swarmer_hatchling.lua b/data-otservbr-global/monster/vermins/swarmer_hatchling.lua index b169b884aae..540c4b41fe6 100644 --- a/data-otservbr-global/monster/vermins/swarmer_hatchling.lua +++ b/data-otservbr-global/monster/vermins/swarmer_hatchling.lua @@ -10,10 +10,9 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } - monster.health = 5 monster.maxHealth = 5 monster.race = "blood" @@ -23,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 2000, - chance = 50 + chance = 50, } monster.strategiesTarget = { @@ -61,12 +60,11 @@ monster.voices = { { text = "Flzlzlzlzlzlzlz?", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -99 }, - { name = "combat", interval = 1000, chance = 11, type = COMBAT_DROWNDAMAGE, minDamage = -15, maxDamage = -100, range = 5, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true } + { name = "combat", interval = 1000, chance = 11, type = COMBAT_DROWNDAMAGE, minDamage = -15, maxDamage = -100, range = 5, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true }, } monster.defenses = { @@ -92,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/tarantula.lua b/data-otservbr-global/monster/vermins/tarantula.lua index 9cc65f2a0e3..b8c3147d810 100644 --- a/data-otservbr-global/monster/vermins/tarantula.lua +++ b/data-otservbr-global/monster/vermins/tarantula.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 219 @@ -27,7 +27,7 @@ monster.Bestiary = { in 2 small caves South of Thais, Dark Cathedral, single spawn on top of Crocodile den north of Port Hope, \z Plains of Havoc, underground Liberty Bay, Nargor Undead Cave and other constituents of the Shattered Isles, \z Green Claw Swamp, first floor up in the big building in the Cemetery Quarter, Robson Isle, Vengoth. \z - After the summer update of 2876, tarantulas can be seen on the beginner's island of Rookgaard." + After the summer update of 2876, tarantulas can be seen on the beginner's island of Rookgaard.", } monster.health = 225 @@ -39,7 +39,7 @@ monster.manaCost = 485 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -84,19 +84,19 @@ monster.loot = { { name = "brass legs", chance = 3050 }, { name = "plate shield", chance = 2000 }, { name = "spider fangs", chance = 4820 }, - { name = "tarantula egg", chance = 10000 } + { name = "tarantula egg", chance = 10000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90, condition = { type = CONDITION_POISON, totalDamage = 40, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, range = 1, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_CARNIPHILA, target = true } + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, range = 1, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_CARNIPHILA, target = true }, } monster.defenses = { defense = 10, armor = 20, mitigation = 0.51, - { name = "speed", interval = 2000, chance = 15, speedChange = 220, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 220, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -116,7 +116,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = true }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/terramite.lua b/data-otservbr-global/monster/vermins/terramite.lua index 985f0a5feb8..370f0b099ef 100644 --- a/data-otservbr-global/monster/vermins/terramite.lua +++ b/data-otservbr-global/monster/vermins/terramite.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 631 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 2, Occurrence = 0, Locations = "Steppe of Zao, Lion's Rock, Zao Terramite Caves, Darama Terramite Cave, \z - Terramite Breeding Tunnels. Also raids desert north of Ankrahmun." + Terramite Breeding Tunnels. Also raids desert north of Ankrahmun.", } monster.health = 365 @@ -36,7 +36,7 @@ monster.manaCost = 505 monster.changeTarget = { interval = 5000, - chance = 0 + chance = 0, } monster.strategiesTarget = { @@ -78,12 +78,12 @@ monster.loot = { { name = "gold coin", chance = 97520, maxCount = 45 }, { name = "terramite shell", chance = 7730 }, { name = "terramite eggs", chance = 4680, maxCount = 3 }, - { name = "terramite legs", chance = 14880 } + { name = "terramite legs", chance = 14880 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -5, maxDamage = -16, range = 7, shootEffect = CONST_ANI_POISON, target = true } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -5, maxDamage = -16, range = 7, shootEffect = CONST_ANI_POISON, target = true }, } monster.defenses = { @@ -109,7 +109,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/tremendous_tyrant.lua b/data-otservbr-global/monster/vermins/tremendous_tyrant.lua index 52278fc92d7..3cc624556e9 100644 --- a/data-otservbr-global/monster/vermins/tremendous_tyrant.lua +++ b/data-otservbr-global/monster/vermins/tremendous_tyrant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 40, lookFeet = 94, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2089 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 1, - Locations = "Dwelling of the Forgotten" + Locations = "Dwelling of the Forgotten", } monster.health = 11500 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 10000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -95,7 +95,7 @@ monster.loot = { { name = "warrior's shield", chance = 1820 }, { name = "elven amulet", chance = 2730 }, { name = "focus cape", chance = 1820 }, - { name = "glacier robe", chance = 4555 } + { name = "glacier robe", chance = 4555 }, } monster.attacks = { @@ -128,7 +128,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/tunnel_tyrant.lua b/data-otservbr-global/monster/vermins/tunnel_tyrant.lua index aecdc87aab2..2299354f240 100644 --- a/data-otservbr-global/monster/vermins/tunnel_tyrant.lua +++ b/data-otservbr-global/monster/vermins/tunnel_tyrant.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 1545 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Warzone 5" + Locations = "Warzone 5", } monster.health = 5200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 10000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -87,7 +87,7 @@ monster.loot = { { name = "crystal mace", chance = 1580 }, { id = 23508, chance = 3010 }, -- energy vein { name = "crystalline armor", chance = 860 }, - { name = "suspicious device", chance = 1290 } + { name = "suspicious device", chance = 1290 }, } monster.attacks = { @@ -95,7 +95,7 @@ monster.attacks = { { name = "stalagmite rune", interval = 2000, chance = 15, minDamage = -190, maxDamage = -300, range = 7, length = 6, spread = 3, shootEffect = CONST_ANI_POISON, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -160, range = 3, length = 6, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -160, range = 3, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, target = false } + { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, target = false }, } monster.defenses = { @@ -121,7 +121,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/undertaker.lua b/data-otservbr-global/monster/vermins/undertaker.lua index 88d14a280b8..d48c01d1c65 100644 --- a/data-otservbr-global/monster/vermins/undertaker.lua +++ b/data-otservbr-global/monster/vermins/undertaker.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 85, lookFeet = 105, lookAddons = 3, - lookMount = 0 + lookMount = 0, } monster.raceId = 2269 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 100, Stars = 5, Occurrence = 0, - Locations = "Monster Graveyard" + Locations = "Monster Graveyard", } monster.health = 20100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -120,7 +120,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/varnished_diremaw.lua b/data-otservbr-global/monster/vermins/varnished_diremaw.lua index b142e93ea1f..a2704f6a7d6 100644 --- a/data-otservbr-global/monster/vermins/varnished_diremaw.lua +++ b/data-otservbr-global/monster/vermins/varnished_diremaw.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 2090 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Dwelling of the Forgotten." + Locations = "Dwelling of the Forgotten.", } monster.health = 9000 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 5000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -100,7 +100,7 @@ monster.loot = { { name = "wood cape", chance = 2650 }, { name = "haunted blade", chance = 1370 }, { name = "glacier kilt", chance = 880 }, - { name = "crown shield", chance = 880 } + { name = "crown shield", chance = 880 }, } monster.attacks = { @@ -133,7 +133,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/wailing_widow.lua b/data-otservbr-global/monster/vermins/wailing_widow.lua index b969b08bc1f..7eb8ca57bff 100644 --- a/data-otservbr-global/monster/vermins/wailing_widow.lua +++ b/data-otservbr-global/monster/vermins/wailing_widow.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 632 @@ -24,7 +24,7 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Zao Wailing Widow Cave, Northern Zao Plantations, Northern Brimstone Bug Cave, \z - Razzachai, Chyllfroest, Krailos Spider Lair." + Razzachai, Chyllfroest, Krailos Spider Lair.", } monster.health = 850 @@ -36,7 +36,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -61,12 +61,12 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { @@ -84,21 +84,21 @@ monster.loot = { { name = "mana potion", chance = 4785 }, { name = "zaoan halberd", chance = 2210 }, { name = "widow's mandibles", chance = 20950 }, - { name = "wailing widow's necklace", chance = 900 } + { name = "wailing widow's necklace", chance = 900 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, { name = "drunk", interval = 2000, chance = 20, range = 7, radius = 4, effect = CONST_ME_SOUND_RED, target = false, duration = 4000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -40, maxDamage = -70, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -110, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -110, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { defense = 0, armor = 0, { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 70, maxDamage = 100, effect = CONST_ME_SOUND_WHITE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = 820, effect = CONST_ME_SOUND_YELLOW, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 820, effect = CONST_ME_SOUND_YELLOW, target = false, duration = 5000 }, } monster.elements = { @@ -111,14 +111,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = 100 } + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/wasp.lua b/data-otservbr-global/monster/vermins/wasp.lua index e17471e4f39..d89b7522eb8 100644 --- a/data-otservbr-global/monster/vermins/wasp.lua +++ b/data-otservbr-global/monster/vermins/wasp.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 44 @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "South of Thais, west of Ab'Dendriel, northeastern Cormaya, \z Green Claw Swamp between Kazordoon and Venore, Wasp Tower in Rookgaard, \z - Wasp Towers in Darashia, all over Tiquanda, and all over Vandura, roaming around Marapur." + Wasp Towers in Darashia, all over Tiquanda, and all over Vandura, roaming around Marapur.", } monster.health = 35 @@ -37,7 +37,7 @@ monster.manaCost = 280 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -77,11 +77,11 @@ monster.voices = { } monster.loot = { - { name = "honeycomb", chance = 3000 } + { name = "honeycomb", chance = 3000 }, } monster.attacks = { - { name = "melee", interval = 1500, chance = 100, minDamage = 0, maxDamage = -20, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } } + { name = "melee", interval = 1500, chance = 100, minDamage = 0, maxDamage = -20, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, } monster.defenses = { @@ -107,7 +107,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = false }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/waspoid.lua b/data-otservbr-global/monster/vermins/waspoid.lua index aa659232024..25da67cc07f 100644 --- a/data-otservbr-global/monster/vermins/waspoid.lua +++ b/data-otservbr-global/monster/vermins/waspoid.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 792 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "The Hive, Hive Outpost." + Locations = "The Hive, Hive Outpost.", } monster.health = 1100 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -86,13 +86,13 @@ monster.loot = { { name = "compound eye", chance = 6060 }, { name = "grasshopper legs", chance = 230 }, { name = "carapace shield", chance = 120 }, - { name = "hive scythe", chance = 330 } + { name = "hive scythe", chance = 330 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -248, condition = { type = CONDITION_POISON, totalDamage = 400, interval = 4000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -110, maxDamage = -180, radius = 3, effect = CONST_ME_POISONAREA, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -80, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false } + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -80, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false }, } monster.defenses = { @@ -118,7 +118,7 @@ monster.immunities = { { type = "paralyze", condition = false }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/vermins/wiggler.lua b/data-otservbr-global/monster/vermins/wiggler.lua index 498aeef927f..3c438edb4bc 100644 --- a/data-otservbr-global/monster/vermins/wiggler.lua +++ b/data-otservbr-global/monster/vermins/wiggler.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.raceId = 899 @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Can be found in Truffels Garden as well as the Mushroom Gardens." + Locations = "Can be found in Truffels Garden as well as the Mushroom Gardens.", } monster.health = 1200 @@ -35,7 +35,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -60,19 +60,19 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = true + canWalkOnPoison = true, } monster.light = { level = 0, - color = 0 + color = 0, } monster.voices = { interval = 5000, chance = 10, { text = "Zzzrp", yell = false }, - { text = "Crick! Crick!", yell = false } + { text = "Crick! Crick!", yell = false }, } monster.loot = { @@ -89,7 +89,7 @@ monster.loot = { { name = "crystalline arrow", chance = 15540, maxCount = 5 }, { name = "green crystal splinter", chance = 3600 }, { name = "green crystal fragment", chance = 2070 }, - { name = "drill bolt", chance = 15260, maxCount = 5 } + { name = "drill bolt", chance = 15260, maxCount = 5 }, } monster.attacks = { @@ -97,13 +97,13 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -180, maxDamage = -270, length = 4, spread = 3, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -160, maxDamage = -200, range = 7, shootEffect = CONST_ANI_POISONARROW, effect = CONST_ME_SMALLPLANTS, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 3, spread = 2, effect = CONST_ME_HITAREA, target = false, duration = 30000 } + { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 3, spread = 2, effect = CONST_ME_HITAREA, target = false, duration = 30000 }, } monster.defenses = { defense = 15, armor = 15, - { name = "speed", interval = 2000, chance = 15, speedChange = 510, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 } + { name = "speed", interval = 2000, chance = 15, speedChange = 510, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { @@ -116,14 +116,14 @@ monster.elements = { { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 10 } + { type = COMBAT_DEATHDAMAGE, percent = 10 }, } monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/wild_magics/wild_fire_magic.lua b/data-otservbr-global/monster/wild_magics/wild_fire_magic.lua index a8620c3069d..d2fbba79379 100644 --- a/data-otservbr-global/monster/wild_magics/wild_fire_magic.lua +++ b/data-otservbr-global/monster/wild_magics/wild_fire_magic.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,17 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 0, armor = 0, mitigation = 0.00, - { name = "effect", interval = 100, chance = 100, radius = 1, effect = CONST_ME_FIREWORK_YELLOW, target = false } + { name = "effect", interval = 100, chance = 100, radius = 1, effect = CONST_ME_FIREWORK_YELLOW, target = false }, } monster.elements = { @@ -92,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/wild_magics/wild_fury_magic.lua b/data-otservbr-global/monster/wild_magics/wild_fury_magic.lua index d065d23f42e..73c4e817750 100644 --- a/data-otservbr-global/monster/wild_magics/wild_fury_magic.lua +++ b/data-otservbr-global/monster/wild_magics/wild_fury_magic.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,17 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 0, armor = 0, mitigation = 0.00, - { name = "effect", interval = 100, chance = 100, radius = 1, effect = CONST_ME_MAGIC_RED, target = false } + { name = "effect", interval = 100, chance = 100, radius = 1, effect = CONST_ME_MAGIC_RED, target = false }, } monster.elements = { @@ -92,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/wild_magics/wild_nature_magic.lua b/data-otservbr-global/monster/wild_magics/wild_nature_magic.lua index 4d7cb1816fd..cc5f2ea81a9 100644 --- a/data-otservbr-global/monster/wild_magics/wild_nature_magic.lua +++ b/data-otservbr-global/monster/wild_magics/wild_nature_magic.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,17 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 0, armor = 0, mitigation = 0.00, - { name = "effect", interval = 100, chance = 100, radius = 1, effect = CONST_ME_MAGIC_GREEN, target = false } + { name = "effect", interval = 100, chance = 100, radius = 1, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -92,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/monster/wild_magics/wild_water_magic.lua b/data-otservbr-global/monster/wild_magics/wild_water_magic.lua index bdcbeb6dde8..7ddae0d5b52 100644 --- a/data-otservbr-global/monster/wild_magics/wild_water_magic.lua +++ b/data-otservbr-global/monster/wild_magics/wild_water_magic.lua @@ -10,7 +10,7 @@ monster.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 0, - lookMount = 0 + lookMount = 0, } monster.health = 1 @@ -22,7 +22,7 @@ monster.manaCost = 0 monster.changeTarget = { interval = 4000, - chance = 10 + chance = 10, } monster.strategiesTarget = { @@ -62,17 +62,15 @@ monster.voices = { chance = 10, } -monster.loot = { -} +monster.loot = {} -monster.attacks = { -} +monster.attacks = {} monster.defenses = { defense = 0, armor = 0, mitigation = 0.00, - { name = "effect", interval = 100, chance = 100, radius = 1, effect = CONST_ME_MAGIC_BLUE, target = false } + { name = "effect", interval = 100, chance = 100, radius = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { @@ -92,7 +90,7 @@ monster.immunities = { { type = "paralyze", condition = true }, { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false } + { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-otservbr-global/npc/a_bearded_woman.lua b/data-otservbr-global/npc/a_bearded_woman.lua index 834c4e26e38..c496bce5169 100644 --- a/data-otservbr-global/npc/a_bearded_woman.lua +++ b/data-otservbr-global/npc/a_bearded_woman.lua @@ -16,23 +16,23 @@ npcConfig.outfit = { lookBody = 22, lookLegs = 24, lookFeet = 32, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'I am a MAN! Get me out you drunken fools!' }, - { text = 'GET ME OUT OF HERE!' }, - { text = 'Get me out! It was all part of the plan, you fools!' }, - { text = 'If I ever get out of here, I\'ll kill you all! All of you!' }, - { text = 'I am NOT Princess Lumelia, you fools!' }, - { text = 'Get a locksmith and free me or you will regret it, you foolish pirates!' }, - { text = 'I am not a princess, I am an actor!' } + { text = "I am a MAN! Get me out you drunken fools!" }, + { text = "GET ME OUT OF HERE!" }, + { text = "Get me out! It was all part of the plan, you fools!" }, + { text = "If I ever get out of here, I'll kill you all! All of you!" }, + { text = "I am NOT Princess Lumelia, you fools!" }, + { text = "Get a locksmith and free me or you will regret it, you foolish pirates!" }, + { text = "I am not a princess, I am an actor!" }, } local keywordHandler = KeywordHandler:new() @@ -62,92 +62,84 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am a great and famous actor! Not a princess, at all. I was only PRETENDING to be a princess. But try explaining that to those stupid pirates." }) -keywordHandler:addKeyword({ 'actor' }, StdModule.say, { npcHandler = npcHandler, text = "Stage acting was a waste of my immense talent. Not only am I a born leader, my talent is more profitable when it is used for conning people." }) -keywordHandler:addKeyword({ 'stage' }, StdModule.say, { npcHandler = npcHandler, text = "Stage acting was a waste of my immense talent. Not only am I a born leader, my talent is more profitable when it is used for conning people." }) -keywordHandler:addKeyword({ 'kid' }, StdModule.say, { npcHandler = npcHandler, text = "He was always a fool with a heart too soft to become a feared pirate." }) -keywordHandler:addKeyword({ 'princess' }, StdModule.say, { npcHandler = npcHandler, text = "Me playing a princess was just part of a cunning plan we had." }) -keywordHandler:addKeyword({ 'cell' }, StdModule.say, { npcHandler = npcHandler, text = "If you find some way to release me I might even let you live as reward! So you'd better do your best or I'll kill you!" }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "How dare you? I left to rot in this dirty cell and you have nothing better to do than chit chat?" }) -keywordHandler:addKeyword({ 'rot' }, StdModule.say, { npcHandler = npcHandler, text = "YOU .. YOU .. You are as good as dead! I will get you! Do you hear me? I will have your head! On a platter!" }) -keywordHandler:addKeyword({ 'pirate' }, StdModule.say, { +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am a great and famous actor! Not a princess, at all. I was only PRETENDING to be a princess. But try explaining that to those stupid pirates." }) +keywordHandler:addKeyword({ "actor" }, StdModule.say, { npcHandler = npcHandler, text = "Stage acting was a waste of my immense talent. Not only am I a born leader, my talent is more profitable when it is used for conning people." }) +keywordHandler:addKeyword({ "stage" }, StdModule.say, { npcHandler = npcHandler, text = "Stage acting was a waste of my immense talent. Not only am I a born leader, my talent is more profitable when it is used for conning people." }) +keywordHandler:addKeyword({ "kid" }, StdModule.say, { npcHandler = npcHandler, text = "He was always a fool with a heart too soft to become a feared pirate." }) +keywordHandler:addKeyword({ "princess" }, StdModule.say, { npcHandler = npcHandler, text = "Me playing a princess was just part of a cunning plan we had." }) +keywordHandler:addKeyword({ "cell" }, StdModule.say, { npcHandler = npcHandler, text = "If you find some way to release me I might even let you live as reward! So you'd better do your best or I'll kill you!" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "How dare you? I left to rot in this dirty cell and you have nothing better to do than chit chat?" }) +keywordHandler:addKeyword({ "rot" }, StdModule.say, { npcHandler = npcHandler, text = "YOU .. YOU .. You are as good as dead! I will get you! Do you hear me? I will have your head! On a platter!" }) +keywordHandler:addKeyword({ "pirate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'In a just world, I would be captain of a grand ship, ...', - 'Those pirates out there would now be my minions, and we would brave the seas and become the terror of the coastal towns! ...', - 'If only our plan had worked!' - } -} -) -keywordHandler:addKeyword({ 'ship' }, StdModule.say, { + "In a just world, I would be captain of a grand ship, ...", + "Those pirates out there would now be my minions, and we would brave the seas and become the terror of the coastal towns! ...", + "If only our plan had worked!", + }, +}) +keywordHandler:addKeyword({ "ship" }, StdModule.say, { npcHandler = npcHandler, text = { - 'Captain Kid sold his ship to buy pointless things like those insanely expensive locks for the cell doors. ...', - 'He said the canoes would do for a while. ...', - 'I got the impression he was not overly sad to part with the ship because he was known to suffer a lot from seasickness.' - } -} -) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { + "Captain Kid sold his ship to buy pointless things like those insanely expensive locks for the cell doors. ...", + "He said the canoes would do for a while. ...", + "I got the impression he was not overly sad to part with the ship because he was known to suffer a lot from seasickness.", + }, +}) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = { - 'I\'d have been a much better captain then Kid was. I played several captains on stage and I was good! ...', - 'Where Kid longed for the appreciation of his men, I would rule by fear and with an iron fist!' - } -} -) -keywordHandler:addKeyword({ 'plan' }, StdModule.say, { + "I'd have been a much better captain then Kid was. I played several captains on stage and I was good! ...", + "Where Kid longed for the appreciation of his men, I would rule by fear and with an iron fist!", + }, +}) +keywordHandler:addKeyword({ "plan" }, StdModule.say, { npcHandler = npcHandler, text = { - 'It was all captain Kid\'s idea. You see, he hated his name and planned to become known by the name captain Kidnap. ...', - 'All he needed was someone famous to kidnap. ...', - 'Given his men\'s dismal lack of talent and intelligence that would have been quite a feat. ...', - 'We knew each other from a few scams we did together in the past, so he contacted me. ...', - 'I was to impersonate the famous Princess Lumelia. You know, the one everyone was looking for. ...', - 'That would show his men and the other pirates what a great kidnapper he was. ...', - 'He promised me that I would become his second in command and lead a wonderful life of plundering, robbing and pillaging. ...', - 'So I agreed to impersonate the Princess for a while and it worked fine at first. ...', - 'He returned with me dressed as the Princess from a raid on his own and was instantaneously the hero of the day for his men. ...', - 'Things went bad when they decided to have a victory party. ...', - 'As far as I could make out from the mumblings of the pirates, Kid lost the key to my cell while relieving himself in the underground river. ...', - 'The fool decided to dive after it .. never to be seen again. ...', - 'When I found out about Kid\'s demise I tried to convince the pirates it was a hoax, but they just won\'t believe me!' - } -} -) -keywordHandler:addKeyword({ 'kidnap' }, StdModule.say, { + "It was all captain Kid's idea. You see, he hated his name and planned to become known by the name captain Kidnap. ...", + "All he needed was someone famous to kidnap. ...", + "Given his men's dismal lack of talent and intelligence that would have been quite a feat. ...", + "We knew each other from a few scams we did together in the past, so he contacted me. ...", + "I was to impersonate the famous Princess Lumelia. You know, the one everyone was looking for. ...", + "That would show his men and the other pirates what a great kidnapper he was. ...", + "He promised me that I would become his second in command and lead a wonderful life of plundering, robbing and pillaging. ...", + "So I agreed to impersonate the Princess for a while and it worked fine at first. ...", + "He returned with me dressed as the Princess from a raid on his own and was instantaneously the hero of the day for his men. ...", + "Things went bad when they decided to have a victory party. ...", + "As far as I could make out from the mumblings of the pirates, Kid lost the key to my cell while relieving himself in the underground river. ...", + "The fool decided to dive after it .. never to be seen again. ...", + "When I found out about Kid's demise I tried to convince the pirates it was a hoax, but they just won't believe me!", + }, +}) +keywordHandler:addKeyword({ "kidnap" }, StdModule.say, { npcHandler = npcHandler, text = { - 'Ah kidnapping is so much fun. That is, if you\'re not on the receiving end. ...', - 'It\'s easy money and you have a chance to frighten and torture someone who can\'t fight back!' - } -} -) -keywordHandler:addKeyword({ 'scams' }, StdModule.say, { + "Ah kidnapping is so much fun. That is, if you're not on the receiving end. ...", + "It's easy money and you have a chance to frighten and torture someone who can't fight back!", + }, +}) +keywordHandler:addKeyword({ "scams" }, StdModule.say, { npcHandler = npcHandler, text = { - 'The more stupid the people are, the easier it is to con them. ...', - 'And the poorer they are the less means they have to get revenge. Har Har! ...', - 'So I make sure I ruin those I scam. Then they have other things to worry about than getting revenge on me.' - } -} -) -keywordHandler:addKeyword({ 'key' }, StdModule.say, { + "The more stupid the people are, the easier it is to con them. ...", + "And the poorer they are the less means they have to get revenge. Har Har! ...", + "So I make sure I ruin those I scam. Then they have other things to worry about than getting revenge on me.", + }, +}) +keywordHandler:addKeyword({ "key" }, StdModule.say, { npcHandler = npcHandler, text = { - 'The key was lost in the underground river and has probably washed into the seven seas by now! ...', - 'If that stupid Kid hadn\'t been so obsessed with kidnapping he\'d not have sold his ship to buy the most expensive and complicated locks for his cells!' - } -} -) -keywordHandler:addKeyword({ 'plundering' }, StdModule.say, { + "The key was lost in the underground river and has probably washed into the seven seas by now! ...", + "If that stupid Kid hadn't been so obsessed with kidnapping he'd not have sold his ship to buy the most expensive and complicated locks for his cells!", + }, +}) +keywordHandler:addKeyword({ "plundering" }, StdModule.say, { npcHandler = npcHandler, text = { - 'As long as we stick to undefended coastal towns we can make an easy fortune. Har Har! ...', - 'As soon as I get out of here I\'ll finally become a pirate captain on my own. I don\'t need Captain Kid!' - } -} -) + "As long as we stick to undefended coastal towns we can make an easy fortune. Har Har! ...", + "As soon as I get out of here I'll finally become a pirate captain on my own. I don't need Captain Kid!", + }, +}) npcHandler:setMessage(MESSAGE_GREET, "GET ME OUT OF HERE! NOW!") diff --git a/data-otservbr-global/npc/a_beautiful_girl.lua b/data-otservbr-global/npc/a_beautiful_girl.lua index a89650a601e..e99d2a8943c 100644 --- a/data-otservbr-global/npc/a_beautiful_girl.lua +++ b/data-otservbr-global/npc/a_beautiful_girl.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 81, lookLegs = 79, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_beggar.lua b/data-otservbr-global/npc/a_beggar.lua index 8cb0a24e34f..b82b41f86be 100644 --- a/data-otservbr-global/npc/a_beggar.lua +++ b/data-otservbr-global/npc/a_beggar.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 39, lookLegs = 39, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -69,7 +69,7 @@ local function creatureSayCallback(npc, creature, type, message) "However, to get an audience with the king, you'll have to help his subjects a bit. ... ", "His subjects that would be us, the poor, you know? ... ", "So why don't you show your dedication to the poor? Go and help Chavis at the poor house. He's collecting food for people like us. ... ", - "If you brought enough of the stuff you'll see that the king will grant you entrance in his {palace}." + "If you brought enough of the stuff you'll see that the king will grant you entrance in his {palace}.", }, npc, creature, 100) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.DarkTrails.Mission01, 2) -- Mission 1 end diff --git a/data-otservbr-global/npc/a_behemoth.lua b/data-otservbr-global/npc/a_behemoth.lua index b5787682305..90d69692804 100644 --- a/data-otservbr-global/npc/a_behemoth.lua +++ b/data-otservbr-global/npc/a_behemoth.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 55 + lookType = 55, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_confused_frog.lua b/data-otservbr-global/npc/a_confused_frog.lua index 085895238f4..9382f138c31 100644 --- a/data-otservbr-global/npc/a_confused_frog.lua +++ b/data-otservbr-global/npc/a_confused_frog.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 224 + lookType = 224, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_dark_priestess.lua b/data-otservbr-global/npc/a_dark_priestess.lua index 03e61ac7d9e..21e95a21ddd 100644 --- a/data-otservbr-global/npc/a_dark_priestess.lua +++ b/data-otservbr-global/npc/a_dark_priestess.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 58 + lookType = 58, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_dead_bureaucrat1.lua b/data-otservbr-global/npc/a_dead_bureaucrat1.lua index ef453833b7d..4ab5b370d55 100644 --- a/data-otservbr-global/npc/a_dead_bureaucrat1.lua +++ b/data-otservbr-global/npc/a_dead_bureaucrat1.lua @@ -11,18 +11,18 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 33 + lookType = 33, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Now where did I put that form?' }, - { text = 'Hail Pumin. Yes, hail.' } + { text = "Now where did I put that form?" }, + { text = "Hail Pumin. Yes, hail." }, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ local config = { [VOCATION.BASE_ID.SORCERER] = "wand", [VOCATION.BASE_ID.DRUID] = "rod", [VOCATION.BASE_ID.PALADIN] = "bow", - [VOCATION.BASE_ID.KNIGHT] = "sword" + [VOCATION.BASE_ID.KNIGHT] = "sword", } local function greetCallback(npc, creature) diff --git a/data-otservbr-global/npc/a_dead_bureaucrat2.lua b/data-otservbr-global/npc/a_dead_bureaucrat2.lua index b344b619ee1..faef1786f21 100644 --- a/data-otservbr-global/npc/a_dead_bureaucrat2.lua +++ b/data-otservbr-global/npc/a_dead_bureaucrat2.lua @@ -11,18 +11,18 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 33 + lookType = 33, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Now where did I put that form?' }, - { text = 'Hail Pumin. Yes, hail.' } + { text = "Now where did I put that form?" }, + { text = "Hail Pumin. Yes, hail." }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_dead_bureaucrat3.lua b/data-otservbr-global/npc/a_dead_bureaucrat3.lua index a25498ee198..d9d990b4e37 100644 --- a/data-otservbr-global/npc/a_dead_bureaucrat3.lua +++ b/data-otservbr-global/npc/a_dead_bureaucrat3.lua @@ -11,18 +11,18 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 33 + lookType = 33, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Now where did I put that form?' }, - { text = 'Hail Pumin. Yes, hail.' } + { text = "Now where did I put that form?" }, + { text = "Hail Pumin. Yes, hail." }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_dead_bureaucrat4.lua b/data-otservbr-global/npc/a_dead_bureaucrat4.lua index 4024e14d362..666d1beb90b 100644 --- a/data-otservbr-global/npc/a_dead_bureaucrat4.lua +++ b/data-otservbr-global/npc/a_dead_bureaucrat4.lua @@ -11,18 +11,18 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 33 + lookType = 33, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Now where did I put that form?' }, - { text = 'Hail Pumin. Yes, hail.' } + { text = "Now where did I put that form?" }, + { text = "Hail Pumin. Yes, hail." }, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ local config = { [VOCATION.BASE_ID.SORCERER] = "S O R C E R E R", [VOCATION.BASE_ID.DRUID] = "D R U I D", [VOCATION.BASE_ID.PALADIN] = "P A L A D I N", - [VOCATION.BASE_ID.KNIGHT] = "K N I G H T" + [VOCATION.BASE_ID.KNIGHT] = "K N I G H T", } local function greetCallback(npc, creature) diff --git a/data-otservbr-global/npc/a_dragon_lord.lua b/data-otservbr-global/npc/a_dragon_lord.lua index da4e2603d19..cb675223c9a 100644 --- a/data-otservbr-global/npc/a_dragon_lord.lua +++ b/data-otservbr-global/npc/a_dragon_lord.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 39 + lookType = 39, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_dragon_mother.lua b/data-otservbr-global/npc/a_dragon_mother.lua index 6c5bfd93efd..ec4653828c6 100644 --- a/data-otservbr-global/npc/a_dragon_mother.lua +++ b/data-otservbr-global/npc/a_dragon_mother.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,10 +59,10 @@ local function greetCallback(npc, creature) npcHandler:setTopic(playerId, 1) return true elseif player:getStorageValue(Storage.ForgottenKnowledge.AccessMachine) == 1 then - npcHandler:setMessage(MESSAGE_GREET, 'Grrr.') + npcHandler:setMessage(MESSAGE_GREET, "Grrr.") return true elseif player:getStorageValue(Storage.ForgottenKnowledge.HorrorKilled) >= 1 then - npcHandler:setMessage(MESSAGE_GREET, 'You have done me a favour and the knowledge you are seeking shall be yours. I melted the ice for you, you can pass now.') + npcHandler:setMessage(MESSAGE_GREET, "You have done me a favour and the knowledge you are seeking shall be yours. I melted the ice for you, you can pass now.") player:setStorageValue(Storage.ForgottenKnowledge.AccessMachine, 1) end return true @@ -77,14 +77,13 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "help") then - npcHandler:say( - "I'm aware what you are looking for. Usually I would rather devour you, but due to unfortunate circumstances, I need your {assistance}.", npc, creature) + npcHandler:say("I'm aware what you are looking for. Usually I would rather devour you, but due to unfortunate circumstances, I need your {assistance}.", npc, creature) npcHandler:setTopic(playerId, 2) elseif MsgContains(message, "assistance") then if npcHandler:getTopic(playerId) == 2 then npcHandler:say({ "Wretched creatures of ice have stolen my egg that was close to hatching. ...", - " Since I'm to huge to enter those lower Tunnels I have to ask you to take care of my {egg}. Will you do this?" + " Since I'm to huge to enter those lower Tunnels I have to ask you to take care of my {egg}. Will you do this?", }, npc, creature) npcHandler:setTopic(playerId, 3) end @@ -94,7 +93,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 3 then npcHandler:say({ "So return to the upper tunnels where cultists and ice golems dwell. Somewhere in these tunnels you will find a small prison haunted by a ghost. South of this prison cell there is a tunnel that will lead you eastwards. ...", - "Follow the tunnel until you reach a small cave. Step down and down until you see a blue energy field. It will lead you to my egg. It is sealed so that not everyone may enter the room. But you have the permission now." + "Follow the tunnel until you reach a small cave. Step down and down until you see a blue energy field. It will lead you to my egg. It is sealed so that not everyone may enter the room. But you have the permission now.", }, npc, creature) player:setStorageValue(Storage.ForgottenKnowledge.BabyDragon, 1) npcHandler:setTopic(playerId, 4) @@ -102,7 +101,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 3 then npcHandler:say({ - "Grrr." + "Grrr.", }, npc, creature) npcHandler:setTopic(playerId, 1) end @@ -112,7 +111,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 4 then npcHandler:say({ "As I told you, fiendish ice creatures dragged my egg into the lower caves. ...", - " Without enough heat the egg will die soon. Venture there and save my hatchling and the knowledge you seeek shall be yours!" + " Without enough heat the egg will die soon. Venture there and save my hatchling and the knowledge you seeek shall be yours!", }, npc, creature) player:setStorageValue(Storage.ForgottenKnowledge.BabyDragon, 1) end diff --git a/data-otservbr-global/npc/a_drillworm.lua b/data-otservbr-global/npc/a_drillworm.lua index 4b09c8062a6..3926cd2e616 100644 --- a/data-otservbr-global/npc/a_drillworm.lua +++ b/data-otservbr-global/npc/a_drillworm.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 527 + lookType = 527, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_dwarven_ghost.lua b/data-otservbr-global/npc/a_dwarven_ghost.lua index c7edddde9cd..771470fd146 100644 --- a/data-otservbr-global/npc/a_dwarven_ghost.lua +++ b/data-otservbr-global/npc/a_dwarven_ghost.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 28, lookBody = 85, lookLegs = 104, - lookFeet = 66 + lookFeet = 66, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_fading_memory.lua b/data-otservbr-global/npc/a_fading_memory.lua index bb276798cf3..e90af0c8196 100644 --- a/data-otservbr-global/npc/a_fading_memory.lua +++ b/data-otservbr-global/npc/a_fading_memory.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,7 +50,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -npcHandler:setMessage(MESSAGE_GREET, 'Oh...') +npcHandler:setMessage(MESSAGE_GREET, "Oh...") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/a_fluffy_squirrel.lua b/data-otservbr-global/npc/a_fluffy_squirrel.lua index 872a316aa04..22f3b17aa67 100644 --- a/data-otservbr-global/npc/a_fluffy_squirrel.lua +++ b/data-otservbr-global/npc/a_fluffy_squirrel.lua @@ -11,21 +11,21 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 274 + lookType = 274, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Chchch' } + { text = "Chchch" }, } npcConfig.shop = { -- Sellable items { itemName = "acorn", clientId = 10296, sell = 10 }, - { itemName = "walnut", clientId = 836, sell = 80 } + { itemName = "walnut", clientId = 836, sell = 80 }, } -- On buy npc shop message @@ -37,8 +37,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -67,7 +66,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'acorn' }, StdModule.say, { npcHandler = npcHandler, text = "Chh? Chhh?? " }) +keywordHandler:addKeyword({ "acorn" }, StdModule.say, { npcHandler = npcHandler, text = "Chh? Chhh?? " }) npcHandler:setMessage(MESSAGE_GREET, "Chhchh?") npcHandler:setMessage(MESSAGE_FAREWELL, "Chh...") diff --git a/data-otservbr-global/npc/a_frog.lua b/data-otservbr-global/npc/a_frog.lua index 3482e34c8fe..f1699b06e5c 100644 --- a/data-otservbr-global/npc/a_frog.lua +++ b/data-otservbr-global/npc/a_frog.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 224 + lookType = 224, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,14 +45,14 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'prince' }, StdModule.say, { npcHandler = npcHandler, text = "If another prince comes to kiss me, I'll kick his ass so bad that he'll need a sedan chair to get away." }) -keywordHandler:addKeyword({ 'princess' }, StdModule.say, { npcHandler = npcHandler, text = "If another prince comes to kiss me, I'll kick his ass so bad that he'll need a sedan chair to get away." }) -keywordHandler:addKeyword({ 'kiss' }, StdModule.say, { npcHandler = npcHandler, text = "Don't even try to kiss me or I'll rondhouse kick you!" }) -keywordHandler:addKeyword({ 'talk' }, StdModule.say, { npcHandler = npcHandler, text = "Talking frogs don't exist, idiot. It's your fucking imagination tricking you. And now your imagination commands you to walk away." }) -keywordHandler:addKeyword({ 'frog' }, StdModule.say, { npcHandler = npcHandler, text = "Finally someone notices I'm a FROG. Congratulations, you're VERY observant... *sigh*" }) -keywordHandler:addKeyword({ 'quest' }, StdModule.say, { npcHandler = npcHandler, text = "A quest? Yeah I got a quest! Go and tell King Tibianus his son tried to kiss me again!" }) -keywordHandler:addKeyword({ 'pyrale' }, StdModule.say, { npcHandler = npcHandler, text = "Pyrale? That idiot transformed me into an human once. But my wife came and kissed me, so I'm a frog again." }) -keywordHandler:addKeyword({ 'ribbit' }, StdModule.say, { npcHandler = npcHandler, text = "Pyrale? That idiot transformed me into an human once. But my wife came and kissed me, so I'm a frog again." }) +keywordHandler:addKeyword({ "prince" }, StdModule.say, { npcHandler = npcHandler, text = "If another prince comes to kiss me, I'll kick his ass so bad that he'll need a sedan chair to get away." }) +keywordHandler:addKeyword({ "princess" }, StdModule.say, { npcHandler = npcHandler, text = "If another prince comes to kiss me, I'll kick his ass so bad that he'll need a sedan chair to get away." }) +keywordHandler:addKeyword({ "kiss" }, StdModule.say, { npcHandler = npcHandler, text = "Don't even try to kiss me or I'll rondhouse kick you!" }) +keywordHandler:addKeyword({ "talk" }, StdModule.say, { npcHandler = npcHandler, text = "Talking frogs don't exist, idiot. It's your fucking imagination tricking you. And now your imagination commands you to walk away." }) +keywordHandler:addKeyword({ "frog" }, StdModule.say, { npcHandler = npcHandler, text = "Finally someone notices I'm a FROG. Congratulations, you're VERY observant... *sigh*" }) +keywordHandler:addKeyword({ "quest" }, StdModule.say, { npcHandler = npcHandler, text = "A quest? Yeah I got a quest! Go and tell King Tibianus his son tried to kiss me again!" }) +keywordHandler:addKeyword({ "pyrale" }, StdModule.say, { npcHandler = npcHandler, text = "Pyrale? That idiot transformed me into an human once. But my wife came and kissed me, so I'm a frog again." }) +keywordHandler:addKeyword({ "ribbit" }, StdModule.say, { npcHandler = npcHandler, text = "Pyrale? That idiot transformed me into an human once. But my wife came and kissed me, so I'm a frog again." }) npcHandler:setMessage(MESSAGE_GREET, "*sigh* Yet another dumb adventurer.") npcHandler:setMessage(MESSAGE_FAREWELL, "Yeah, good bye and don't come again!") diff --git a/data-otservbr-global/npc/a_ghostly_guardian.lua b/data-otservbr-global/npc/a_ghostly_guardian.lua index 90094cbb2f3..a0859a39de7 100644 --- a/data-otservbr-global/npc/a_ghostly_guardian.lua +++ b/data-otservbr-global/npc/a_ghostly_guardian.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 85, lookLegs = 9, lookFeet = 85, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_ghostly_knight.lua b/data-otservbr-global/npc/a_ghostly_knight.lua index 6aa5594cb82..d23bd7aa9ef 100644 --- a/data-otservbr-global/npc/a_ghostly_knight.lua +++ b/data-otservbr-global/npc/a_ghostly_knight.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 66, lookLegs = 0, lookFeet = 66, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_ghostly_sage.lua b/data-otservbr-global/npc/a_ghostly_sage.lua index 5c3476320bc..4cd9e242a4f 100644 --- a/data-otservbr-global/npc/a_ghostly_sage.lua +++ b/data-otservbr-global/npc/a_ghostly_sage.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 85, lookLegs = 9, lookFeet = 85, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,12 +50,12 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -local travelNode = keywordHandler:addKeyword({ 'teleport' }, StdModule.say, { npcHandler = npcHandler, text = 'You will now be travelled out of here. Are you sure that you want to face that teleport?' }) -travelNode:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, destination = Position(32834, 32275, 9) }) -travelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'Then stay here in these ghostly halls.' }) +local travelNode = keywordHandler:addKeyword({ "teleport" }, StdModule.say, { npcHandler = npcHandler, text = "You will now be travelled out of here. Are you sure that you want to face that teleport?" }) +travelNode:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, destination = Position(32834, 32275, 9) }) +travelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "Then stay here in these ghostly halls." }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I can offer you a {teleport}.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'Dont mind me.' }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can offer you a {teleport}." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Dont mind me." }) npcHandler:setMessage(MESSAGE_GREET, "Ah, I feel a mortal walks these ancient halls again. Pardon me, I barely notice you. I am so lost in my thoughts.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") diff --git a/data-otservbr-global/npc/a_ghostly_woman.lua b/data-otservbr-global/npc/a_ghostly_woman.lua index f98647f7058..bd08cfacb93 100644 --- a/data-otservbr-global/npc/a_ghostly_woman.lua +++ b/data-otservbr-global/npc/a_ghostly_woman.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 85, lookLegs = 10, lookFeet = 85, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Alone ... so alone. So cold.' } + { text = "Alone ... so alone. So cold." }, } local keywordHandler = KeywordHandler:new() @@ -56,8 +56,8 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "Once I was a member of the order of the nightmare knights. Now I am but a shadow who walks these cold halls." }) -keywordHandler:addKeyword({ 'boots' }, StdModule.say, { npcHandler = npcHandler, text = "The north has a puzzle to complete." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Once I was a member of the order of the nightmare knights. Now I am but a shadow who walks these cold halls." }) +keywordHandler:addKeyword({ "boots" }, StdModule.say, { npcHandler = npcHandler, text = "The north has a puzzle to complete." }) npcHandler:setMessage(MESSAGE_GREET, "I feel you. I hear your thoughts. You are ... alive.") npcHandler:setMessage(MESSAGE_FAREWELL, "Alone ... so alone. So cold.") diff --git a/data-otservbr-global/npc/a_ghostly_woman_ghostland.lua b/data-otservbr-global/npc/a_ghostly_woman_ghostland.lua index 00e1952b6ac..983df492a29 100644 --- a/data-otservbr-global/npc/a_ghostly_woman_ghostland.lua +++ b/data-otservbr-global/npc/a_ghostly_woman_ghostland.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_goblin_exile.lua b/data-otservbr-global/npc/a_goblin_exile.lua index f3af72702e7..86404fb2b39 100644 --- a/data-otservbr-global/npc/a_goblin_exile.lua +++ b/data-otservbr-global/npc/a_goblin_exile.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_grumpy_cyclops.lua b/data-otservbr-global/npc/a_grumpy_cyclops.lua index 0880eee497e..1ee6e39b3de 100644 --- a/data-otservbr-global/npc/a_grumpy_cyclops.lua +++ b/data-otservbr-global/npc/a_grumpy_cyclops.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_lost_basher.lua b/data-otservbr-global/npc/a_lost_basher.lua index 0df195b00ea..8e9f09fa87a 100644 --- a/data-otservbr-global/npc/a_lost_basher.lua +++ b/data-otservbr-global/npc/a_lost_basher.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 538 + lookType = 538, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_lost_husher.lua b/data-otservbr-global/npc/a_lost_husher.lua index a8f220e24a6..ffc3c939229 100644 --- a/data-otservbr-global/npc/a_lost_husher.lua +++ b/data-otservbr-global/npc/a_lost_husher.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 537 + lookType = 537, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_lost_soul.lua b/data-otservbr-global/npc/a_lost_soul.lua index 629db70d882..48b14524cdc 100644 --- a/data-otservbr-global/npc/a_lost_soul.lua +++ b/data-otservbr-global/npc/a_lost_soul.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 48 + lookType = 48, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_lost_thrower.lua b/data-otservbr-global/npc/a_lost_thrower.lua index 22ffb2577b9..c76d9ff5f2f 100644 --- a/data-otservbr-global/npc/a_lost_thrower.lua +++ b/data-otservbr-global/npc/a_lost_thrower.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 539 + lookType = 539, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_majestic_warwolf.lua b/data-otservbr-global/npc/a_majestic_warwolf.lua index 1e1e2bf0056..fecc9ecefdc 100644 --- a/data-otservbr-global/npc/a_majestic_warwolf.lua +++ b/data-otservbr-global/npc/a_majestic_warwolf.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 3 + lookType = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -48,7 +48,7 @@ end local function greetCallback(npc, creature) local playerId = creature:getId() if Player(creature):getStorageValue(Storage.OutfitQuest.DruidHatAddon) < 9 then - npcHandler:say('GRRRRRRRRRRRRR', npc, creature) + npcHandler:say("GRRRRRRRRRRRRR", npc, creature) return false end return true @@ -62,17 +62,17 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if table.contains({ 'addon', 'outfit' }, message) then + if table.contains({ "addon", "outfit" }, message) then if player:getStorageValue(Storage.OutfitQuest.DruidHatAddon) == 9 then - npcHandler:say('I can see in your eyes that you are a honest and friendly person, |PLAYERNAME|. You were patient enough to learn our language and I will grant you a special gift. Will you accept it?', npc, creature) + npcHandler:say("I can see in your eyes that you are a honest and friendly person, |PLAYERNAME|. You were patient enough to learn our language and I will grant you a special gift. Will you accept it?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 1 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 then player:setStorageValue(Storage.OutfitQuest.DruidHatAddon, 10) player:addOutfitAddon(148, 2) player:addOutfitAddon(144, 2) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - npcHandler:say(player:getSex() == PLAYERSEX_FEMALE and 'From now on, you shall be known as |PLAYERNAME|, the wolf girl. You shall be fast and smart as Morgrar, the great white wolf. He shall guide your path.' or 'From now on, you shall be known as |PLAYERNAME|, the bear warrior. You shall be strong and proud as Angros, the great dark bear. He shall guide your path.', npc, creature) + npcHandler:say(player:getSex() == PLAYERSEX_FEMALE and "From now on, you shall be known as |PLAYERNAME|, the wolf girl. You shall be fast and smart as Morgrar, the great white wolf. He shall guide your path." or "From now on, you shall be known as |PLAYERNAME|, the bear warrior. You shall be strong and proud as Angros, the great dark bear. He shall guide your path.", npc, creature) npcHandler:setTopic(playerId, 0) end return true diff --git a/data-otservbr-global/npc/a_nightmare_scion.lua b/data-otservbr-global/npc/a_nightmare_scion.lua index a35a904ea41..2edccc9de07 100644 --- a/data-otservbr-global/npc/a_nightmare_scion.lua +++ b/data-otservbr-global/npc/a_nightmare_scion.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 321 + lookType = 321, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_prisoner.lua b/data-otservbr-global/npc/a_prisoner.lua index fe57f87197b..b04fd035075 100644 --- a/data-otservbr-global/npc/a_prisoner.lua +++ b/data-otservbr-global/npc/a_prisoner.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 21, lookLegs = 54, lookFeet = 94, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,8 +61,12 @@ local function creatureSayCallback(npc, creature, type, message) -- Mad mage room quest if MsgContains(message, "riddle") then if player:getStorageValue(Storage.Quest.U7_24.MadMageRoom.APrisoner) ~= 1 then - npcHandler:say("Great riddle, isn't it? If you can tell me the correct answer, \z - I will give you something. Hehehe!", npc, creature) + npcHandler:say( + "Great riddle, isn't it? If you can tell me the correct answer, \z + I will give you something. Hehehe!", + npc, + creature + ) npcHandler:setTopic(playerId, 1) end elseif MsgContains(message, "PD-D-KS-P-PD") then @@ -100,8 +104,12 @@ local function creatureSayCallback(npc, creature, type, message) -- The paradox tower quest if MsgContains(message, "math") then if player:getStorageValue(Storage.Quest.U7_24.TheParadoxTower.Mathemagics) < 1 then - npcHandler:say("My surreal numbers are based on astonishing facts. \z - Are you interested in learning the secret of mathemagics?", npc, creature) + npcHandler:say( + "My surreal numbers are based on astonishing facts. \z + Are you interested in learning the secret of mathemagics?", + npc, + creature + ) npcHandler:setTopic(playerId, 6) else npcHandler:say("You already know the secrets of mathemagics! Now go and use them to learn.", npc, creature) diff --git a/data-otservbr-global/npc/a_restless_soul.lua b/data-otservbr-global/npc/a_restless_soul.lua index 0afbbb8c9af..e6535b38f99 100644 --- a/data-otservbr-global/npc/a_restless_soul.lua +++ b/data-otservbr-global/npc/a_restless_soul.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 48 + lookType = 48, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -72,7 +72,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "I was captured and tortured to death by the cultists here. They worship a being that they call Ghazbaran ...", "In his name they have claimed the mines and started to melt the ice to free an army of vile demons that have been frozen here for ages ...", - "Their plan is to create a new demon army for their master to conquer the world. Hjaern and the other shamans must learn about it! Hurry before its too late." + "Their plan is to create a new demon army for their master to conquer the world. Hjaern and the other shamans must learn about it! Hurry before its too late.", }, npc, creature) player:setStorageValue(Storage.TheIceIslands.Questline, 38) player:setStorageValue(Storage.TheIceIslands.Mission10, 2) -- Questlog The Ice Islands Quest, Formorgar Mines 2: Ghostwhisperer diff --git a/data-otservbr-global/npc/a_sleeping_dragon.lua b/data-otservbr-global/npc/a_sleeping_dragon.lua index 246ba56abdb..698533ebf1a 100644 --- a/data-otservbr-global/npc/a_sleeping_dragon.lua +++ b/data-otservbr-global/npc/a_sleeping_dragon.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 168 + lookTypeEx = 168, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -78,118 +78,118 @@ local function creatureSayCallback(npc, creature, type, message) "A majestic dragon in his sleep is surrounded by what seems the warmth and energy of a thousand suns. The tranquillity of its sight makes you smile gently. ...", "You feel a perfect mixture of joy, compassion and sudden peacefulness. Bright xanthous impressions of topaz, orange and white welcome you at the final halt of your journey. ...", "Dragon dreams are golden. ...", - "You find yourself inside the dragon's dream. You can {look} around or {go} into a specific direction. You can also {take} or {use} an object. Enter {help} to display this information at any time." + "You find yourself inside the dragon's dream. You can {look} around or {go} into a specific direction. You can also {take} or {use} an object. Enter {help} to display this information at any time.", }, npc, creature) npcHandler:setTopic(playerId, 1) - elseif (message:lower() == "help" and npcHandler:getTopic(playerId) > 0 and npcHandler:getTopic(playerId) < 34) then + elseif message:lower() == "help" and npcHandler:getTopic(playerId) > 0 and npcHandler:getTopic(playerId) < 34 then npcHandler:say("You find yourself inside the dragon's dream. You can {look} around or {go} into a specific direction. You can also {take} or {use} an object. Enter {help} to display this information at any time.", npc, creature) - elseif (message:lower() == "west" and npcHandler:getTopic(playerId) == 1) then + elseif message:lower() == "west" and npcHandler:getTopic(playerId) == 1 then npcHandler:say("Advancing to the west, you recognise an increase of onyx on the ground.", npc, creature) npcHandler:setTopic(playerId, 2) - elseif (message:lower() == "take attachment" and npcHandler:getTopic(playerId) == 2) then + elseif message:lower() == "take attachment" and npcHandler:getTopic(playerId) == 2 then npcHandler:say("You carefully lift the onyx attachment from its socket. It is lighter than you expected.", npc, creature) npcHandler:setTopic(playerId, 3) - elseif (message:lower() == "east" and npcHandler:getTopic(playerId) == 3) then + elseif message:lower() == "east" and npcHandler:getTopic(playerId) == 3 then npcHandler:say("You return to the plateau in the east.", npc, creature) npcHandler:setTopic(playerId, 4) - elseif (message:lower() == "south" and npcHandler:getTopic(playerId) == 4) then + elseif message:lower() == "south" and npcHandler:getTopic(playerId) == 4 then npcHandler:say("You wander to the south, passing large obelisks of emerald to your left and sprawling trees of topaz to your right. ", npc, creature) npcHandler:setTopic(playerId, 5) - elseif (message:lower() == "take stand" and npcHandler:getTopic(playerId) == 5) then + elseif message:lower() == "take stand" and npcHandler:getTopic(playerId) == 5 then npcHandler:say("As you rip the solid stand out of its socket and take it with you, the large gate opens with a deafening rumble. ", npc, creature) npcHandler:setTopic(playerId, 6) - elseif (message:lower() == "east" and npcHandler:getTopic(playerId) == 6) then + elseif message:lower() == "east" and npcHandler:getTopic(playerId) == 6 then npcHandler:say("You gasp at the size of the large open gate as you walk through to head further to the east.", npc, creature) npcHandler:setTopic(playerId, 7) - elseif (message:lower() == "take model" and npcHandler:getTopic(playerId) == 7) then + elseif message:lower() == "take model" and npcHandler:getTopic(playerId) == 7 then npcHandler:say("You reach for a small solitary arrangement of combined small houses and put it in your pocket.", npc, creature) npcHandler:setTopic(playerId, 8) - elseif (message:lower() == "take emeralds" and npcHandler:getTopic(playerId) == 8) then + elseif message:lower() == "take emeralds" and npcHandler:getTopic(playerId) == 8 then npcHandler:say("You take an emerald from the pile. ", npc, creature) npcHandler:setTopic(playerId, 9) - elseif (message:lower() == "west" and npcHandler:getTopic(playerId) == 9) then + elseif message:lower() == "west" and npcHandler:getTopic(playerId) == 9 then npcHandler:say("You return through the semi-translucent gate to the west. ", npc, creature) npcHandler:setTopic(playerId, 10) - elseif (message:lower() == "north" and npcHandler:getTopic(playerId) == 10) then + elseif message:lower() == "north" and npcHandler:getTopic(playerId) == 10 then npcHandler:say("You head back north to the plateau. ", npc, creature) npcHandler:setTopic(playerId, 11) - elseif (message:lower() == "east" and npcHandler:getTopic(playerId) == 11) then + elseif message:lower() == "east" and npcHandler:getTopic(playerId) == 11 then npcHandler:say("You travel east across several large emerald bluffs and edges. All sorts of gems are scattered alongside your path. ", npc, creature) npcHandler:setTopic(playerId, 12) - elseif (message:lower() == "take rubies" and npcHandler:getTopic(playerId) == 12) then + elseif message:lower() == "take rubies" and npcHandler:getTopic(playerId) == 12 then npcHandler:say("You take a rather large ruby out of a pile before you. ", npc, creature) npcHandler:setTopic(playerId, 13) - elseif (message:lower() == "north" and npcHandler:getTopic(playerId) == 13) then + elseif message:lower() == "north" and npcHandler:getTopic(playerId) == 13 then npcHandler:say("You head north passing countless stones in the crimson sea of stones beneath your feet.", npc, creature) npcHandler:setTopic(playerId, 14) - elseif (message:lower() == "use attachment" and npcHandler:getTopic(playerId) == 14) then + elseif message:lower() == "use attachment" and npcHandler:getTopic(playerId) == 14 then npcHandler:say({ "Avoiding the bright light, you carefully put the attachment on top of the strange socket. ...", - "As your eyes adjust to the sudden reduction of brightness, you see the giant wings of the gate before you move to the side. You can also make out something shiny on the ground." + "As your eyes adjust to the sudden reduction of brightness, you see the giant wings of the gate before you move to the side. You can also make out something shiny on the ground.", }, npc, creature) npcHandler:setTopic(playerId, 15) - elseif (message:lower() == "take mirror" and npcHandler:getTopic(playerId) == 15) then + elseif message:lower() == "take mirror" and npcHandler:getTopic(playerId) == 15 then npcHandler:say("You pick the mirror from the ground.", npc, creature) npcHandler:setTopic(playerId, 16) - elseif (message:lower() == "north" and npcHandler:getTopic(playerId) == 16) then + elseif message:lower() == "north" and npcHandler:getTopic(playerId) == 16 then npcHandler:say({ "Your path to the north is open. You pass the gigantic gate wings to your left and right as you advance. After about an hour of travel you hear a slight rustling in the distance. You head further into that direction. ...", - "The rustling gets louder until you come to a small dune. Behind it you find the source of the noise." + "The rustling gets louder until you come to a small dune. Behind it you find the source of the noise.", }, npc, creature) npcHandler:setTopic(playerId, 17) - elseif (message:lower() == "use model" and npcHandler:getTopic(playerId) == 17) then + elseif message:lower() == "use model" and npcHandler:getTopic(playerId) == 17 then npcHandler:say({ "You lunge out and throw the model far into the water. As nothing happens, you turn your back to the ocean. ...", "The very moment you walk down the dune to head back south, rays of light burst over your head in a shock wave that makes you tumble down the rest of the hill. ...", - "You can also hear a deep loud scraping for several minutes somewhere far in the west." + "You can also hear a deep loud scraping for several minutes somewhere far in the west.", }, npc, creature) npcHandler:setTopic(playerId, 18) - elseif (message:lower() == "south" and npcHandler:getTopic(playerId) == 18) then + elseif message:lower() == "south" and npcHandler:getTopic(playerId) == 18 then npcHandler:say("You travel all the way back down the dune and through the gate to the south. ", npc, creature) npcHandler:setTopic(playerId, 19) - elseif (message:lower() == "south" and npcHandler:getTopic(playerId) == 19) then + elseif message:lower() == "south" and npcHandler:getTopic(playerId) == 19 then npcHandler:say("You return to the crimson sea of rubies in the south. ", npc, creature) npcHandler:setTopic(playerId, 20) - elseif (message:lower() == "west" and npcHandler:getTopic(playerId) == 20) then + elseif message:lower() == "west" and npcHandler:getTopic(playerId) == 20 then npcHandler:say("You travel back to the plateau in the west. ", npc, creature) npcHandler:setTopic(playerId, 21) - elseif (message:lower() == "west" and npcHandler:getTopic(playerId) == 21) then + elseif message:lower() == "west" and npcHandler:getTopic(playerId) == 21 then npcHandler:say("Advancing to the west, you recognise an increase of onyx on the ground. ", npc, creature) npcHandler:setTopic(playerId, 22) - elseif (message:lower() == "north" and npcHandler:getTopic(playerId) == 22) then + elseif message:lower() == "north" and npcHandler:getTopic(playerId) == 22 then npcHandler:say("You continue travelling the barren sea of gemstones to the north. ", npc, creature) npcHandler:setTopic(playerId, 23) - elseif (message:lower() == "west" and npcHandler:getTopic(playerId) == 23) then + elseif message:lower() == "west" and npcHandler:getTopic(playerId) == 23 then npcHandler:say("You leave the massive open gate behind you and go to the west. ", npc, creature) npcHandler:setTopic(playerId, 24) - elseif (message:lower() == "bastesh" and npcHandler:getTopic(playerId) == 24) then + elseif message:lower() == "bastesh" and npcHandler:getTopic(playerId) == 24 then npcHandler:say("This huge statue of Bastesh is made from onyx, and thrones on a large plateau which can be reached by a sprawling stairway. She holds a large {sapphire} in her hands. ", npc, creature) npcHandler:setTopic(playerId, 25) - elseif (message:lower() == "take sapphire" and npcHandler:getTopic(playerId) == 25) then + elseif message:lower() == "take sapphire" and npcHandler:getTopic(playerId) == 25 then npcHandler:say("You carefully remove the sapphire from Bastesh's grasp. ", npc, creature) npcHandler:setTopic(playerId, 26) - elseif (message:lower() == "east" and npcHandler:getTopic(playerId) == 26) then + elseif message:lower() == "east" and npcHandler:getTopic(playerId) == 26 then npcHandler:say("You head back to the east and to the plateau. ", npc, creature) npcHandler:setTopic(playerId, 27) - elseif (message:lower() == "south" and npcHandler:getTopic(playerId) == 27) then + elseif message:lower() == "south" and npcHandler:getTopic(playerId) == 27 then npcHandler:say("You head back south to the site with the onyx lookout. ", npc, creature) npcHandler:setTopic(playerId, 28) - elseif (message:lower() == "east" and npcHandler:getTopic(playerId) == 28) then + elseif message:lower() == "east" and npcHandler:getTopic(playerId) == 28 then npcHandler:say("You return to the plateau in the east. ", npc, creature) npcHandler:setTopic(playerId, 29) - elseif (message:lower() == "use stand" and npcHandler:getTopic(playerId) == 29) then + elseif message:lower() == "use stand" and npcHandler:getTopic(playerId) == 29 then npcHandler:say("You put the stand into a small recess you find near the middle of the plateau. ", npc, creature) npcHandler:setTopic(playerId, 30) - elseif (message:lower() == "use ruby" and npcHandler:getTopic(playerId) == 30) then + elseif message:lower() == "use ruby" and npcHandler:getTopic(playerId) == 30 then npcHandler:say("As the ruby slips into the notch, the strong red of the stone intensifies a thousandfold. You fear to hurt your eyes and turn away immediately. The ray seems to be directed to the centre of the plateau with astounding precision. ", npc, creature) npcHandler:setTopic(playerId, 31) - elseif (message:lower() == "use sapphire" and npcHandler:getTopic(playerId) == 31) then + elseif message:lower() == "use sapphire" and npcHandler:getTopic(playerId) == 31 then npcHandler:say("As the sapphire slips into the notch, the deep blue of the stone intensifies a thousandfold. You fear to hurt your eyes and turn away immediately. The ray seems to be directed to the centre of the plateau with astounding precision. ", npc, creature) npcHandler:setTopic(playerId, 32) - elseif (message:lower() == "use emerald" and npcHandler:getTopic(playerId) == 32) then + elseif message:lower() == "use emerald" and npcHandler:getTopic(playerId) == 32 then npcHandler:say("As the emerald slips into the notch, the vibrant green of the stone intensifies a thousandfold. You fear to hurt your eyes and turn away immediately. The ray seems to be directed to the centre of the plateau with astounding precision. ", npc, creature) npcHandler:setTopic(playerId, 33) - elseif (message:lower() == "use mirror" and npcHandler:getTopic(playerId) == 33) then + elseif message:lower() == "use mirror" and npcHandler:getTopic(playerId) == 33 then npcHandler:say({ "With your eyes covered and avoiding direct sight of the rays, you put the mirror into the stand. ...", "Instinctively you run to a larger emerald bluff near the raise to find cover. Mere seconds after you claimed the sturdy shelter, a deep dark humming starts to swirl through the air. ...", @@ -197,31 +197,31 @@ local function creatureSayCallback(npc, creature, type, message) "You raise your head above the edge of the emerald to catch a glimpse of what's happening. ...", "The hand seems to have grown into a fist. In the distance you can now see a blurry scheme of a creature too large for your eyes to get a sharper view of its head. ...", "Blending the rays, the mirror directs pure white light directly towards the part where you assume the face of the creature. ...", - "The growl transforms into a scream, everything around you seems to compress. As you press yourself tightly against the bluff, everything falls silent and in a split second, the dark being dissolves into bursts of blackness. You wake." + "The growl transforms into a scream, everything around you seems to compress. As you press yourself tightly against the bluff, everything falls silent and in a split second, the dark being dissolves into bursts of blackness. You wake.", }, npc, creature) - player:addAchievement('Wayfarer') + player:addAchievement("Wayfarer") player:setStorageValue(Storage.WrathoftheEmperor.Questline, 28) player:setStorageValue(Storage.WrathoftheEmperor.Mission09, 2) --Questlog, Wrath of the Emperor "Mission 09: The Sleeping Dragon" npcHandler:setTopic(playerId, 0) end elseif player:getStorageValue(Storage.WrathoftheEmperor.Questline) == 28 then - if (MsgContains(message, "wayfarer")) then + if MsgContains(message, "wayfarer") then npcHandler:say("I call you the wayfarer. You travelled through my dreams. You ultimately freed my mind. My mind accepted you and so will I.", npc, creature) elseif MsgContains(message, "mission") then npcHandler:say({ "Aaaah... free at last. Hmmm. ...", "I assume you need to get through the gate to reach the evildoer. I can help you if you trust me, wayfarer. I will share a part of my mind with you which should enable you to step through the gate. ...", - "This procedure may be exhausting. Are you prepared to receive my key?" + "This procedure may be exhausting. Are you prepared to receive my key?", }, npc, creature) npcHandler:setTopic(playerId, 41) - elseif (MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 41) then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 41 then npcHandler:say({ "SAETHELON TORILUN GARNUM. ...", "SLEEP. ...", "GAIN. ...", "RISE. ...", "The transfer was successful. ...", - "You are now prepared to enter the realm of the evildoer. I am grateful for your help, wayfarer. Should you seek my council, use this charm I cede to you. For my spirit will guide you wherever you are. May you enjoy a sheltered future, you shall prevail." + "You are now prepared to enter the realm of the evildoer. I am grateful for your help, wayfarer. Should you seek my council, use this charm I cede to you. For my spirit will guide you wherever you are. May you enjoy a sheltered future, you shall prevail.", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.Questline, 29) player:setStorageValue(Storage.WrathoftheEmperor.Mission10, 1) --Questlog, Wrath of the Emperor "Mission 10: A Message of Freedom" diff --git a/data-otservbr-global/npc/a_starving_dog.lua b/data-otservbr-global/npc/a_starving_dog.lua index 2cad7138ef9..246c7dc4e75 100644 --- a/data-otservbr-global/npc/a_starving_dog.lua +++ b/data-otservbr-global/npc/a_starving_dog.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 258 + lookType = 258, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_strange_chalice.lua b/data-otservbr-global/npc/a_strange_chalice.lua index f3205e5fe57..4b1c8f1d701 100644 --- a/data-otservbr-global/npc/a_strange_chalice.lua +++ b/data-otservbr-global/npc/a_strange_chalice.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 23737 + lookTypeEx = 23737, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -46,8 +46,8 @@ npcType.onCloseChannel = function(npc, creature) end -- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "'Alice the chalice'... Hmpf, of course I won't TELL you my name, I am UNDERCOVER! Now be quiet or they will hear you." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "Well, I am drinking most of the time. Er, no I mean - trying to hold my fluids... ah, wait that came out wrong: I am doing research. Let's just keep it at that." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "'Alice the chalice'... Hmpf, of course I won't TELL you my name, I am UNDERCOVER! Now be quiet or they will hear you." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Well, I am drinking most of the time. Er, no I mean - trying to hold my fluids... ah, wait that came out wrong: I am doing research. Let's just keep it at that." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -59,7 +59,7 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "chalice") and player:getStorageValue(Storage.ForgottenKnowledge.Chalice) == 1 then npcHandler:say({ - "Finally. That's what I... oh wait, you're still talking to me - you will blow my cover! What do you want? Oh wait, did my {daughter} send you? It has been some time now, indeed." + "Finally. That's what I... oh wait, you're still talking to me - you will blow my cover! What do you want? Oh wait, did my {daughter} send you? It has been some time now, indeed.", }, npc, creature) npcHandler:setTopic(playerId, 1) end @@ -67,7 +67,7 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "daughter") and npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Well, besides being a renowned sorcerer and scholar at the magic academy in Edron, I am also the proud father of a beautiful daughter, Ivalisse. My little endeavour here must have troubled the poor thing all the time since I left. ...", - "Tell her I love her and that I will take care. I have to press on! My research is most valuable to the 'Edron-Zaoan Exploration Division'. You don't happen to have some water, do you? Ah nevermind. It's a long {story}." + "Tell her I love her and that I will take care. I have to press on! My research is most valuable to the 'Edron-Zaoan Exploration Division'. You don't happen to have some water, do you? Ah nevermind. It's a long {story}.", }, npc, creature) npcHandler:setTopic(playerId, 2) end @@ -78,7 +78,7 @@ local function creatureSayCallback(npc, creature, type, message) "The academy instated the 'Edron-Zaoan Exploration Division' shortly after. I was a founding member and head of the 'Draken' research branch. ...", "Since my valued and practical oriented colleague and mentor Spectulus did not join us, there is only one member of the academy exploration division to actually venture out to see the place - me. ...", "You must know, most things in the academy happen 'inside', behind closed doors. But some of us simply refuse to let theory reign over practical experience in science. ...", - "Well, basically Spectulus is the only one likeminded so far. In fact, he incited me to work in the field in first place. So here I am! {Disguised} as a chalice." + "Well, basically Spectulus is the only one likeminded so far. In fact, he incited me to work in the field in first place. So here I am! {Disguised} as a chalice.", }, npc, creature) npcHandler:setTopic(playerId, 3) end @@ -90,7 +90,7 @@ local function creatureSayCallback(npc, creature, type, message) "Then something happened, lizardfolk started to appear, searching the place. I had to retreat from my hiding place and advance through a safer position. ...", "I needed to get close and blend in. So I came up with the ultimate disguise: a chalice. I could establish foothold right in their midst, would never be identified as an intruder and could even analyse their drinks! ...", "I quickly dug a tunnel to get into what I assume is a throne room and waited for them to pick me up an carry me around! ...", - "They also 'used' me a bit, you don't want to go into any details here. I am really {thirsty}." + "They also 'used' me a bit, you don't want to go into any details here. I am really {thirsty}.", }, npc, creature) npcHandler:setTopic(playerId, 4) end @@ -100,7 +100,7 @@ local function creatureSayCallback(npc, creature, type, message) "Ah did I say that? Nevermind, I'm not really thirsty. It's part of this illusion. Somehow, I've been in hiding for so long, I started to... become... a vessel. ...", "I don't know, I have that constant urge to drink but in this form I would not need to, there is no mouth, no stomach, no flesh and no actual need to eat, drink or sleep. ...", "I basically communicate by making the metal of this goblet vibrate and using its form as a body of sound. Like a real voice, don't you think?? Yes, alright I know it's creepy. ...", - "I am still in the middle of my research and do not want to go home, so please tell my daughter to not worry about my - this will be a breakthrough! I already {learned} a lot!" + "I am still in the middle of my research and do not want to go home, so please tell my daughter to not worry about my - this will be a breakthrough! I already {learned} a lot!", }, npc, creature) npcHandler:setTopic(playerId, 5) end @@ -109,7 +109,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Yes, well for instance I tried for some time to figure out how to enter the fiery portal in this complex. Most of the draken never come up here. They rather hide somewhere down there, planning and plotting. ...", " I already know how to enter it, you need to step in and yell 'zzubaran'. Unfortunately they never took me with them. ...", - " I heard them say it once, when a seemingly drunk guard yelled it in front of a wall mounted torch, hitting his head against it afterwards. He spilt all my contents on the floor, hmpf." + " I heard them say it once, when a seemingly drunk guard yelled it in front of a wall mounted torch, hitting his head against it afterwards. He spilt all my contents on the floor, hmpf.", }, npc, creature) player:setStorageValue(Storage.ForgottenKnowledge.AccessLavaTeleport, 1) end diff --git a/data-otservbr-global/npc/a_strange_fellow.lua b/data-otservbr-global/npc/a_strange_fellow.lua index 15a2858a6c2..24b2f8a96cc 100644 --- a/data-otservbr-global/npc/a_strange_fellow.lua +++ b/data-otservbr-global/npc/a_strange_fellow.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 118, lookLegs = 57, lookFeet = 95, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_swan.lua b/data-otservbr-global/npc/a_swan.lua index 6f4208f498f..de24e1fc9b9 100644 --- a/data-otservbr-global/npc/a_swan.lua +++ b/data-otservbr-global/npc/a_swan.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 25445 + lookTypeEx = 25445, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,13 +54,13 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'mission') then + if MsgContains(message, "mission") then if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 11 then npcHandler:say({ "My sister Ikassis sent you? Blessed be her soul! Yes, it is true: I need help. Listen, I will tell you a secret but please don't break it. As you might already suspect I'm not really a swan but a fae. ...", "But other than many of my siblings I did not take over a swan's body. I'm a swan maiden and this is one of my two aspects. I can take the shape of a swan as well as that of a young maiden. ...", "But to do so I need a magical artefact: a cloak made of swan feathers. If I lose this cloak - or someone steals it from me - I'm stuck to the form of a swan and can't change shape anymore. And this is exactly what happened: ...", - "A troll stalked me while I was bathing in the river and he stole my cloak. Now I am trapped in the form of a swan. Please, can you find the thief and bring back the cloak?" + "A troll stalked me while I was bathing in the river and he stole my cloak. Now I am trapped in the form of a swan. Please, can you find the thief and bring back the cloak?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(ThreatenedDreams.Mission01[1]) == 14 then @@ -69,7 +69,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(ThreatenedDreams.Mission01[1], 15) npcHandler:say({ "This is everything that remained of my cloak? That's terrible! However, I guess I can put the feathers together again. Yes, that should be enough feathers. ...", - "Please give them to me so I can restore my cloak. But don't watch me! Swan maidens don't like to be observed. Nature's blessings, human being. I will tell Ikassis that you have been of great assistance." + "Please give them to me so I can restore my cloak. But don't watch me! Swan maidens don't like to be observed. Nature's blessings, human being. I will tell Ikassis that you have been of great assistance.", }, npc, creature) npcHandler:setTopic(playerId, 0) else @@ -83,7 +83,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Thank you, human being! I guess the thieving troll headed to the mountains east of here. As far as I know you can only reach these mountain tops by diving into a small cave. ...", - "The connecting tunnels will lead you to a mountain where you may discover him. I heard a man named Jerom talking about this when he passed by this river. Perhaps he knows more about it." + "The connecting tunnels will lead you to a mountain where you may discover him. I heard a man named Jerom talking about this when he passed by this river. Perhaps he knows more about it.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission01[1], 12) npcHandler:setTopic(playerId, 0) diff --git a/data-otservbr-global/npc/a_sweaty_cyclops.lua b/data-otservbr-global/npc/a_sweaty_cyclops.lua index b79fd989dda..927e10924db 100644 --- a/data-otservbr-global/npc/a_sweaty_cyclops.lua +++ b/data-otservbr-global/npc/a_sweaty_cyclops.lua @@ -11,18 +11,18 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 22 + lookType = 22, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Hum hum, huhum' }, - { text = 'Silly lil\' human' } + { text = "Hum hum, huhum" }, + { text = "Silly lil' human" }, } local keywordHandler = KeywordHandler:new() @@ -238,31 +238,31 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am smith." }) -keywordHandler:addKeyword({ 'smith' }, StdModule.say, { npcHandler = npcHandler, text = "Working steel is my profession." }) -keywordHandler:addKeyword({ 'steel' }, StdModule.say, { npcHandler = npcHandler, text = "Manny kinds of. Like {Mesh Kaha Rogh'}, {Za'Kalortith}, {Uth'Byth}, {Uth'Morc}, {Uth'Amon}, {Uth'Maer}, {Uth'Doon}, and {Zatragil}." }) -keywordHandler:addKeyword({ 'zatragil' }, StdModule.say, { npcHandler = npcHandler, text = "Most ancients use dream silver for different stuff. Now ancients most gone. Most not know about." }) -keywordHandler:addKeyword({ 'uth\'doon' }, StdModule.say, { npcHandler = npcHandler, text = "It's high steel called. Only lil' lil' ones know how make." }) -keywordHandler:addKeyword({ 'za\'kalortith' }, StdModule.say, { npcHandler = npcHandler, text = "It's evil. Demon iron is. No good cyclops goes where you can find and need evil flame to melt." }) -keywordHandler:addKeyword({ 'mesh kaha rogh' }, StdModule.say, { npcHandler = npcHandler, text = "Steel that is singing when forged. No one knows where find today." }) -keywordHandler:addKeyword({ 'uth\'byth' }, StdModule.say, { npcHandler = npcHandler, text = "Not good to make stuff off. Bad steel it is. But eating magic, so useful is." }) -keywordHandler:addKeyword({ 'uth\'maer' }, StdModule.say, { npcHandler = npcHandler, text = "Brightsteel is. Much art made with it. Sorcerers too lazy and afraid to enchant much." }) -keywordHandler:addKeyword({ 'uth\'amon' }, StdModule.say, { npcHandler = npcHandler, text = "Heartiron from heart of big old mountain, found very deep. Lil' lil ones fiercely defend. Not wanting to have it used for stuff but holy stuff." }) -keywordHandler:addKeyword({ 'ab\'dendriel' }, StdModule.say, { npcHandler = npcHandler, text = "Me parents live here before town was. Me not care about lil' ones." }) -keywordHandler:addKeyword({ 'lil\' lil\'' }, StdModule.say, { npcHandler = npcHandler, text = "Lil' lil' ones are so fun. We often chat." }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = "One day I'll go and look." }) -keywordHandler:addKeyword({ 'teshial' }, StdModule.say, { npcHandler = npcHandler, text = "Is one of elven family or such thing. Me not understand lil' ones and their business." }) -keywordHandler:addKeyword({ 'cenath' }, StdModule.say, { npcHandler = npcHandler, text = "Is one of elven family or such thing. Me not understand lil' ones and their business." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I called Bencthyclthrtrprr by me people. Lil' ones me call Big Ben." }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = "You shut up. Me not want to hear." }) -keywordHandler:addKeyword({ 'fire sword' }, StdModule.say, { npcHandler = npcHandler, text = "Do lil' one want to trade a fire sword?" }) -keywordHandler:addKeyword({ 'dragon shield' }, StdModule.say, { npcHandler = npcHandler, text = "Do lil' one want to trade a dragon shield?" }) -keywordHandler:addKeyword({ 'sword of valor' }, StdModule.say, { npcHandler = npcHandler, text = "Do lil' one want to trade a sword of valor?" }) -keywordHandler:addKeyword({ 'warlord sword' }, StdModule.say, { npcHandler = npcHandler, text = "Do lil' one want to trade a warlord sword?" }) -keywordHandler:addKeyword({ 'minotaurs' }, StdModule.say, { npcHandler = npcHandler, text = "They were friend with me parents. Long before elves here, they often made visit. No longer come here." }) -keywordHandler:addKeyword({ 'elves' }, StdModule.say, { npcHandler = npcHandler, text = "Me not fight them, they not fight me." }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = "Me wish I could make weapon like it." }) -keywordHandler:addKeyword({ 'cyclops' }, StdModule.say, { npcHandler = npcHandler, text = "Me people not live here much. Most are far away." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am smith." }) +keywordHandler:addKeyword({ "smith" }, StdModule.say, { npcHandler = npcHandler, text = "Working steel is my profession." }) +keywordHandler:addKeyword({ "steel" }, StdModule.say, { npcHandler = npcHandler, text = "Manny kinds of. Like {Mesh Kaha Rogh'}, {Za'Kalortith}, {Uth'Byth}, {Uth'Morc}, {Uth'Amon}, {Uth'Maer}, {Uth'Doon}, and {Zatragil}." }) +keywordHandler:addKeyword({ "zatragil" }, StdModule.say, { npcHandler = npcHandler, text = "Most ancients use dream silver for different stuff. Now ancients most gone. Most not know about." }) +keywordHandler:addKeyword({ "uth'doon" }, StdModule.say, { npcHandler = npcHandler, text = "It's high steel called. Only lil' lil' ones know how make." }) +keywordHandler:addKeyword({ "za'kalortith" }, StdModule.say, { npcHandler = npcHandler, text = "It's evil. Demon iron is. No good cyclops goes where you can find and need evil flame to melt." }) +keywordHandler:addKeyword({ "mesh kaha rogh" }, StdModule.say, { npcHandler = npcHandler, text = "Steel that is singing when forged. No one knows where find today." }) +keywordHandler:addKeyword({ "uth'byth" }, StdModule.say, { npcHandler = npcHandler, text = "Not good to make stuff off. Bad steel it is. But eating magic, so useful is." }) +keywordHandler:addKeyword({ "uth'maer" }, StdModule.say, { npcHandler = npcHandler, text = "Brightsteel is. Much art made with it. Sorcerers too lazy and afraid to enchant much." }) +keywordHandler:addKeyword({ "uth'amon" }, StdModule.say, { npcHandler = npcHandler, text = "Heartiron from heart of big old mountain, found very deep. Lil' lil ones fiercely defend. Not wanting to have it used for stuff but holy stuff." }) +keywordHandler:addKeyword({ "ab'dendriel" }, StdModule.say, { npcHandler = npcHandler, text = "Me parents live here before town was. Me not care about lil' ones." }) +keywordHandler:addKeyword({ "lil' lil'" }, StdModule.say, { npcHandler = npcHandler, text = "Lil' lil' ones are so fun. We often chat." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "One day I'll go and look." }) +keywordHandler:addKeyword({ "teshial" }, StdModule.say, { npcHandler = npcHandler, text = "Is one of elven family or such thing. Me not understand lil' ones and their business." }) +keywordHandler:addKeyword({ "cenath" }, StdModule.say, { npcHandler = npcHandler, text = "Is one of elven family or such thing. Me not understand lil' ones and their business." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I called Bencthyclthrtrprr by me people. Lil' ones me call Big Ben." }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "You shut up. Me not want to hear." }) +keywordHandler:addKeyword({ "fire sword" }, StdModule.say, { npcHandler = npcHandler, text = "Do lil' one want to trade a fire sword?" }) +keywordHandler:addKeyword({ "dragon shield" }, StdModule.say, { npcHandler = npcHandler, text = "Do lil' one want to trade a dragon shield?" }) +keywordHandler:addKeyword({ "sword of valor" }, StdModule.say, { npcHandler = npcHandler, text = "Do lil' one want to trade a sword of valor?" }) +keywordHandler:addKeyword({ "warlord sword" }, StdModule.say, { npcHandler = npcHandler, text = "Do lil' one want to trade a warlord sword?" }) +keywordHandler:addKeyword({ "minotaurs" }, StdModule.say, { npcHandler = npcHandler, text = "They were friend with me parents. Long before elves here, they often made visit. No longer come here." }) +keywordHandler:addKeyword({ "elves" }, StdModule.say, { npcHandler = npcHandler, text = "Me not fight them, they not fight me." }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "Me wish I could make weapon like it." }) +keywordHandler:addKeyword({ "cyclops" }, StdModule.say, { npcHandler = npcHandler, text = "Me people not live here much. Most are far away." }) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/a_tainted_soul.lua b/data-otservbr-global/npc/a_tainted_soul.lua index 994e516c64a..82a25d72d58 100644 --- a/data-otservbr-global/npc/a_tainted_soul.lua +++ b/data-otservbr-global/npc/a_tainted_soul.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 48 + lookType = 48, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_tortured_soul.lua b/data-otservbr-global/npc/a_tortured_soul.lua index 34b5a641a3b..d07c72f79ce 100644 --- a/data-otservbr-global/npc/a_tortured_soul.lua +++ b/data-otservbr-global/npc/a_tortured_soul.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 48 + lookType = 48, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_vulcongra.lua b/data-otservbr-global/npc/a_vulcongra.lua index fb5a3af4733..3c844506ea6 100644 --- a/data-otservbr-global/npc/a_vulcongra.lua +++ b/data-otservbr-global/npc/a_vulcongra.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 509 + lookType = 509, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/a_weakened_forest_fury.lua b/data-otservbr-global/npc/a_weakened_forest_fury.lua index cc3d632f34a..1d9a8a4ccdc 100644 --- a/data-otservbr-global/npc/a_weakened_forest_fury.lua +++ b/data-otservbr-global/npc/a_weakened_forest_fury.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,11 +51,11 @@ npcType.onCloseChannel = function(npc, creature) end -- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = ' My name is now known only to the wind and it shall remain like this until I will return to my kin.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I was a guardian of this glade. I am the last one... everyone had to leave.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "This glade's time is growing short if nothing will be done soon." }) -keywordHandler:addKeyword({ 'forest fury' }, StdModule.say, { npcHandler = npcHandler, text = "Take care, guardian." }) -keywordHandler:addKeyword({ 'orclops' }, StdModule.say, { npcHandler = npcHandler, text = "Cruel beings. Large and monstrous, with a single eye, staring at their prey. " }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = " My name is now known only to the wind and it shall remain like this until I will return to my kin." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I was a guardian of this glade. I am the last one... everyone had to leave." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "This glade's time is growing short if nothing will be done soon." }) +keywordHandler:addKeyword({ "forest fury" }, StdModule.say, { npcHandler = npcHandler, text = "Take care, guardian." }) +keywordHandler:addKeyword({ "orclops" }, StdModule.say, { npcHandler = npcHandler, text = "Cruel beings. Large and monstrous, with a single eye, staring at their prey. " }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -72,14 +72,14 @@ local function creatureSayCallback(npc, creature, type, message) "There is only one way to reinvigorate its spirits, a guardian must venture down there and bring life back into the forest. ... ", "Stolen {seeds} need to be wrested from the {intruders} and planted where the soil still hungers. ... ", "The purest {water} from the purest well needs to be brought there and poured and {birds} that give life need to be brought back to the inner sanctum of the glade. ...", - "Will you be our guardian?" + "Will you be our guardian?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Indeed, you will. Take one of these cages, which have been crafted generations ago to rob a creature of its freedom for that it may earn it again truthfully. Return the birds back to their home in the glade. ...", - "You will find {phials} for water near this sacred well which will take you safely to the glade. No seeds are left, they are in the hands of the intruders now. Have faith in yourself, guardian." + "You will find {phials} for water near this sacred well which will take you safely to the glade. No seeds are left, they are in the hands of the intruders now. Have faith in yourself, guardian.", }, npc, creature) player:setStorageValue(Storage.ForgottenKnowledge.BirdCage, 1) player:addItem(23812, 1) @@ -87,45 +87,45 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "seeds") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - "Seeds to give life to strong trees, blooming and proud. The {intruders} robbed us from them." + "Seeds to give life to strong trees, blooming and proud. The {intruders} robbed us from them.", }, npc, creature) end elseif MsgContains(message, "intruders") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - "The intruders appeared in the blink of an eye. Out of thin air, as if they came from nowhere. They overrun the glade within ours and drove away what was remaining from us within the day." + "The intruders appeared in the blink of an eye. Out of thin air, as if they came from nowhere. They overrun the glade within ours and drove away what was remaining from us within the day.", }, npc, creature) end elseif MsgContains(message, "water") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - "The purest water flows through this well. For centuries we concealed it, for other beings to not lay their eyes on it." + "The purest water flows through this well. For centuries we concealed it, for other beings to not lay their eyes on it.", }, npc, creature) end elseif MsgContains(message, "birds") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - "Take care, guardian." + "Take care, guardian.", }, npc, creature) end elseif MsgContains(message, "phials") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - "Phials for the purest water from our sacred well. They are finely crafted and very fragile. We keep a small supply up here around the well. Probably the only thing the intruders did not care for." + "Phials for the purest water from our sacred well. They are finely crafted and very fragile. We keep a small supply up here around the well. Probably the only thing the intruders did not care for.", }, npc, creature) end end if MsgContains(message, "cages") and player:getStorageValue(Storage.ForgottenKnowledge.BirdCage) == 1 then npcHandler:say({ "Crafted generations ago to rob a creature of its freedom for that it may earn it again truthfully. You will need them if you plan on returning the birds to their rightful home in the glade. ... ", - "Are you in need of another one? " + "Are you in need of another one? ", }, npc, creature) npcHandler:setTopic(playerId, 2) end if MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 2 then npcHandler:say({ - "I already handed a cage to you. If you are in need of another one, you will have to return to me later." + "I already handed a cage to you. If you are in need of another one, you will have to return to me later.", }, npc, creature) end end diff --git a/data-otservbr-global/npc/a_wrinkled_bonelord.lua b/data-otservbr-global/npc/a_wrinkled_bonelord.lua index 8f981c7308c..76647774119 100644 --- a/data-otservbr-global/npc/a_wrinkled_bonelord.lua +++ b/data-otservbr-global/npc/a_wrinkled_bonelord.lua @@ -11,18 +11,18 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 17 + lookType = 17, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = '485611800364197.' }, - { text = '78572611857643646724.' } + { text = "485611800364197." }, + { text = "78572611857643646724." }, } local keywordHandler = KeywordHandler:new() @@ -52,26 +52,30 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'death' }, StdModule.say, { npcHandler = npcHandler, text = "Yes, yes, I will kill you soon enough, now let me continue my investigation on you." }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = "They will mourn the day they abandoned us." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the great librarian." }) -keywordHandler:addKeyword({ 'library' }, StdModule.say, { npcHandler = npcHandler, text = "It's a fine library, isn't it?" }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I am 486486 and NOT 'Blinky' as some people called me ... before they died." }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = "It's 1, not 'Tibia', silly." }) -keywordHandler:addKeyword({ 'cyclops' }, StdModule.say, { npcHandler = npcHandler, text = "Uglyness incarnate. One eye! Imagine that! Horrible!" }) -keywordHandler:addKeyword({ 'elves' }, StdModule.say, { npcHandler = npcHandler, text = "These fools and their superstitious life cult don't understand anything of importance." }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = "Only inferior species need weapons." }) -keywordHandler:addKeyword({ 'ab\'dendriel' }, StdModule.say, { npcHandler = npcHandler, text = "I heard that elves moved in upstairs." }) -keywordHandler:addKeyword({ 'numbers' }, StdModule.say, { npcHandler = npcHandler, text = "Numbers are essential. They are the secret behind the scenes. If you are a master of mathematics you are a master over life and death." }) -keywordHandler:addKeyword({ 'books' }, StdModule.say, { npcHandler = npcHandler, text = "Our books are written in 469, of course you can't understand them." }) -keywordHandler:addKeyword({ '0' }, StdModule.say, { npcHandler = npcHandler, text = "Go and wash your eyes for using this obscene number!" }) -keywordHandler:addKeyword({ '469' }, StdModule.say, { npcHandler = npcHandler, text = "The language of my kind. Superior to any other language and only to be spoken by entities with enough eyes to blink it." }) -keywordHandler:addKeyword({ 'orcs' }, StdModule.say, { npcHandler = npcHandler, text = "Noisy pests." }) -keywordHandler:addKeyword({ 'minotaurs' }, StdModule.say, { npcHandler = npcHandler, text = "Their mages are so close to the truth. Closer then they know and closer then it's good for them." }) -keywordHandler:addKeyword({ 'humans' }, StdModule.say, { npcHandler = npcHandler, text = "Good tools to work with ... After their death, that is." }) -keywordHandler:addKeyword({ 'eyes' }, StdModule.say, { npcHandler = npcHandler, text = "You pitiful two-eyed creatures. In our eyes, you look weird. It is pathetic how much you depend on hands and legs. Since we bonelords have more eyes than any creature in the world, it is obvious that you can determine the value of a species by the number of its eyes. " }) -keywordHandler:addKeyword({ 'bonelord' }, StdModule.say, { npcHandler = npcHandler, text = "Our race is very old. Over the time, we have been given many different names by other races. The term bonelord sticks to us for quite a while now. In our language the name of our race is not fix but a complex formula, and as such it always changes for the subjective viewer. " }) -keywordHandler:addKeyword({ 'language' }, StdModule.say, { npcHandler = npcHandler, text = "Our language is beyond comprehension by your lesser beings. It heavily relies on mathemagic. Your brain is not suited for the mathemagical processing necessary to understand our language.To decipher even our most basic texts, it would need a genius that can calculate numbers within seconds in his brain. " }) +keywordHandler:addKeyword({ "death" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, yes, I will kill you soon enough, now let me continue my investigation on you." }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "They will mourn the day they abandoned us." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the great librarian." }) +keywordHandler:addKeyword({ "library" }, StdModule.say, { npcHandler = npcHandler, text = "It's a fine library, isn't it?" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am 486486 and NOT 'Blinky' as some people called me ... before they died." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "It's 1, not 'Tibia', silly." }) +keywordHandler:addKeyword({ "cyclops" }, StdModule.say, { npcHandler = npcHandler, text = "Uglyness incarnate. One eye! Imagine that! Horrible!" }) +keywordHandler:addKeyword({ "elves" }, StdModule.say, { npcHandler = npcHandler, text = "These fools and their superstitious life cult don't understand anything of importance." }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "Only inferior species need weapons." }) +keywordHandler:addKeyword({ "ab'dendriel" }, StdModule.say, { npcHandler = npcHandler, text = "I heard that elves moved in upstairs." }) +keywordHandler:addKeyword({ "numbers" }, StdModule.say, { npcHandler = npcHandler, text = "Numbers are essential. They are the secret behind the scenes. If you are a master of mathematics you are a master over life and death." }) +keywordHandler:addKeyword({ "books" }, StdModule.say, { npcHandler = npcHandler, text = "Our books are written in 469, of course you can't understand them." }) +keywordHandler:addKeyword({ "0" }, StdModule.say, { npcHandler = npcHandler, text = "Go and wash your eyes for using this obscene number!" }) +keywordHandler:addKeyword({ "469" }, StdModule.say, { npcHandler = npcHandler, text = "The language of my kind. Superior to any other language and only to be spoken by entities with enough eyes to blink it." }) +keywordHandler:addKeyword({ "orcs" }, StdModule.say, { npcHandler = npcHandler, text = "Noisy pests." }) +keywordHandler:addKeyword({ "minotaurs" }, StdModule.say, { npcHandler = npcHandler, text = "Their mages are so close to the truth. Closer then they know and closer then it's good for them." }) +keywordHandler:addKeyword({ "humans" }, StdModule.say, { npcHandler = npcHandler, text = "Good tools to work with ... After their death, that is." }) +keywordHandler:addKeyword({ "eyes" }, StdModule.say, { npcHandler = npcHandler, text = "You pitiful two-eyed creatures. In our eyes, you look weird. It is pathetic how much you depend on hands and legs. Since we bonelords have more eyes than any creature in the world, it is obvious that you can determine the value of a species by the number of its eyes. " }) +keywordHandler:addKeyword({ "bonelord" }, StdModule.say, { npcHandler = npcHandler, text = "Our race is very old. Over the time, we have been given many different names by other races. The term bonelord sticks to us for quite a while now. In our language the name of our race is not fix but a complex formula, and as such it always changes for the subjective viewer. " }) +keywordHandler:addKeyword( + { "language" }, + StdModule.say, + { npcHandler = npcHandler, text = "Our language is beyond comprehension by your lesser beings. It heavily relies on mathemagic. Your brain is not suited for the mathemagical processing necessary to understand our language.To decipher even our most basic texts, it would need a genius that can calculate numbers within seconds in his brain. " } +) npcHandler:setMessage(MESSAGE_GREET, "What is this? An optically challenged entity called |PLAYERNAME|. How fascinating!") npcHandler:setMessage(MESSAGE_WALKAWAY, "Wait right there. I will eat you after writing down what I found out.") diff --git a/data-otservbr-global/npc/a_wyrm.lua b/data-otservbr-global/npc/a_wyrm.lua index 666eb9ea4ce..a2bdeaca8e4 100644 --- a/data-otservbr-global/npc/a_wyrm.lua +++ b/data-otservbr-global/npc/a_wyrm.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 291 + lookType = 291, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/abran_ironeye.lua b/data-otservbr-global/npc/abran_ironeye.lua index 1d796ddcd38..bb77e99c450 100644 --- a/data-otservbr-global/npc/abran_ironeye.lua +++ b/data-otservbr-global/npc/abran_ironeye.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/admiral_wyrmslicer.lua b/data-otservbr-global/npc/admiral_wyrmslicer.lua index 94794be50f7..34f0c2493de 100644 --- a/data-otservbr-global/npc/admiral_wyrmslicer.lua +++ b/data-otservbr-global/npc/admiral_wyrmslicer.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 112, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/adrenius.lua b/data-otservbr-global/npc/adrenius.lua index 3483dd017c9..a7269abc672 100644 --- a/data-otservbr-global/npc/adrenius.lua +++ b/data-otservbr-global/npc/adrenius.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 9 + lookType = 9, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/ahmet.lua b/data-otservbr-global/npc/ahmet.lua index e42f9618fea..5e2574bd870 100644 --- a/data-otservbr-global/npc/ahmet.lua +++ b/data-otservbr-global/npc/ahmet.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 97, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { -- Sellable items { itemName = "basket", clientId = 2855, buy = 6 }, @@ -52,7 +52,7 @@ npcConfig.shop = { -- Sellable items { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "waterskin of water", clientId = 2901, buy = 40, count = 1 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message @@ -64,8 +64,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -103,67 +102,66 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'documents') then + if MsgContains(message, "documents") then if player:getStorageValue(Storage.ThievesGuild.Mission04) == 2 then player:setStorageValue(Storage.ThievesGuild.Mission04, 3) npcHandler:say({ - 'You need some forged documents? But I will only forge something for a friend. ...', - 'The nomads at the northern oasis killed someone dear to me. Go and kill at least one of them, then we talk about your document.' + "You need some forged documents? But I will only forge something for a friend. ...", + "The nomads at the northern oasis killed someone dear to me. Go and kill at least one of them, then we talk about your document.", }, npc, creature) elseif player:getStorageValue(Storage.ThievesGuild.Mission04) == 4 then - npcHandler:say('The slayer of my enemies is my friend! For a mere 1000 gold I will create the documents you need. Are you interested?', npc, creature) + npcHandler:say("The slayer of my enemies is my friend! For a mere 1000 gold I will create the documents you need. Are you interested?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'mission') or MsgContains(message, 'quest') then + elseif MsgContains(message, "mission") or MsgContains(message, "quest") then if player:getStorageValue(Storage.QuestChests.StealFromThieves) < 1 then npcHandler:say({ "What are you talking about?? I was robbed!!!! Someone catch those filthy thieves!!!!! GUARDS! ...", - ".... Like usual, they hide at the slightest sign of trouble! YOU! Want to earn some quick money?" + ".... Like usual, they hide at the slightest sign of trouble! YOU! Want to earn some quick money?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.QuestChests.StealFromThieves) == 1 or player:getStorageValue(Storage.QuestChests.StealFromThieves) == 2 then - npcHandler:say('Did you find my stuff?', npc, creature) + npcHandler:say("Did you find my stuff?", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif MsgContains(message, 'book') then - npcHandler:say('I see: You want me to add an additional story to this book. A legend about how it brings ill luck to kill a white deer. I could do that, yes. It costs 5000 gold, however. Are you still interested?', npc, creature) + elseif MsgContains(message, "book") then + npcHandler:say("I see: You want me to add an additional story to this book. A legend about how it brings ill luck to kill a white deer. I could do that, yes. It costs 5000 gold, however. Are you still interested?", npc, creature) npcHandler:setTopic(playerId, 5) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then if player:removeMoneyBank(1000) then player:addItem(7866, 1) player:setStorageValue(Storage.ThievesGuild.Mission04, 5) - npcHandler:say('And here they are! Now forget where you got them from.', npc, creature) + npcHandler:say("And here they are! Now forget where you got them from.", npc, creature) else - npcHandler:say('You don\'t have enough money.', npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say({ "Of course you do! Go hunt down the thieves and bring back the stuff they have stolen from me. ...", - " I saw them running out of town and then to the north. Maybe they hide at the oasis." + " I saw them running out of town and then to the north. Maybe they hide at the oasis.", }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.QuestChests.StealFromThieves, 1) elseif npcHandler:getTopic(playerId) == 3 then if player:removeItem(235, 1) then - npcHandler:say('GREAT! If you ever need a job as my personal security guard, let me know. Here is the reward I promised you.', npc, creature) + npcHandler:say("GREAT! If you ever need a job as my personal security guard, let me know. Here is the reward I promised you.", npc, creature) player:setStorageValue(Storage.QuestChests.StealFromThieves, 3) player:addItem(3031, 100) player:addItem(3725, 100) npcHandler:setTopic(playerId, 0) else - npcHandler:say('Come back when you find my stuff.', npc, creature) + npcHandler:say("Come back when you find my stuff.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 5 then - if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 1 - and player:getStorageValue(ThreatenedDreams.Mission01.PoacherChest) == 1 then + if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 1 and player:getStorageValue(ThreatenedDreams.Mission01.PoacherChest) == 1 then if player:getItemCount(25235) >= 1 and player:getMoney() >= 5000 then player:removeMoney(5000) npcHandler:say({ "Well then. Here, take the book, I added the story. Oh, just a piece of advice: Not to inflame prejudice but poachers are of rather simple disposition. I doubt they are ardent readers. ...", - "So if you want to make sure they read this anytime soon, perhaps don't hide the book in a shelf or chest. Make sure to place it somewhere where they will find it easily, like very obviously on a table or something." + "So if you want to make sure they read this anytime soon, perhaps don't hide the book in a shelf or chest. Make sure to place it somewhere where they will find it easily, like very obviously on a table or something.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission01[1], 2) npcHandler:setTopic(playerId, 0) diff --git a/data-otservbr-global/npc/ajax.lua b/data-otservbr-global/npc/ajax.lua index 80b780e0e69..b834b35fd24 100644 --- a/data-otservbr-global/npc/ajax.lua +++ b/data-otservbr-global/npc/ajax.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 101, lookLegs = 120, lookFeet = 94, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -137,7 +137,7 @@ local function creatureSayCallback(npc, creature, type, message) player:addOutfitAddon(147, 1) player:addOutfitAddon(143, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - player:addAchievement('Brutal Politeness') + player:addAchievement("Brutal Politeness") else npcHandler:say("Axe is not done yet!", npc, creature) end @@ -157,7 +157,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Good! Me make shiny weapon. If you help me, I make one for you too. Like axe I wear. I need stuff. Listen. ...", "Me need 100 iron ore. Then need crude iron. Then after that 50 behemoth fangs. And 50 lizard leather. You understand?", - "Help me yes or no?" + "Help me yes or no?", }, npc, creature) npcHandler:setTopic(playerId, 7) elseif npcHandler:getTopic(playerId) == 7 then diff --git a/data-otservbr-global/npc/al_dee.lua b/data-otservbr-global/npc/al_dee.lua index fba55af674f..19b9b40aa32 100644 --- a/data-otservbr-global/npc/al_dee.lua +++ b/data-otservbr-global/npc/al_dee.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 87, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Are you looking for the best trades? Come to my shop!' }, - { text = 'Feeling lost? You can always ask me about general hints!' }, - { text = 'Tools and general equipment at Al Dee\'s!' }, - { text = 'Don\'t head for adventure without a rope and torches! Buy your supplies here!' } + { text = "Are you looking for the best trades? Come to my shop!" }, + { text = "Feeling lost? You can always ask me about general hints!" }, + { text = "Tools and general equipment at Al Dee's!" }, + { text = "Don't head for adventure without a rope and torches! Buy your supplies here!" }, } npcConfig.shop = { -- Sellable items { itemName = "backpack", clientId = 2854, buy = 10 }, @@ -40,7 +40,7 @@ npcConfig.shop = { -- Sellable items { itemName = "scythe", clientId = 3453, buy = 12 }, { itemName = "shovel", clientId = 3457, buy = 10, sell = 2 }, { itemName = "torch", clientId = 2920, buy = 2 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message @@ -52,8 +52,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -83,94 +82,93 @@ npcType.onCloseChannel = function(npc, creature) end -- Basic Keywords -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { npcHandler = npcHandler, text = 'Just ask me for a {trade} to see what I buy from you.' }) -keywordHandler:addKeyword({ 'stuff' }, StdModule.say, { npcHandler = npcHandler, text = 'Just ask me for a {trade} to see my offers.' }) -keywordHandler:addAliasKeyword({ 'wares' }) -keywordHandler:addAliasKeyword({ 'offer' }) -keywordHandler:addAliasKeyword({ 'buy' }) - -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'If you need general {equipment}, just ask me for a {trade}. I can also provide you with some general {hints} about the game.' }) -keywordHandler:addAliasKeyword({ 'information' }) - -keywordHandler:addKeyword({ 'equip' }, StdModule.say, { npcHandler = npcHandler, text = 'As an adventurer, you should always have at least a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}.' }) -keywordHandler:addAliasKeyword({ 'tools' }) - -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m fine. I\'m so glad to have you here as my customer.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a merchant. Just ask me for a {trade} to see my offers.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Al Dee, but you can call me Al. Can I interest you in a {trade}?' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s about |TIME|. I\'m so sorry, I have no watches to sell. Do you want to buy something else?' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'If you want to challenge monsters in the {dungeons}, you need some {weapons} and {armor} from the local {merchants}.' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'If you want to explore the dungeons such as the {sewers}, you have to {equip} yourself with the vital stuff I am selling. It\'s {vital} in the deepest sense of the word.' }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, our sewer system is very primitive - it\'s so primitive that it\'s overrun by {rats}. But the stuff I sell is safe from them. Just ask me for a {trade} to see it!' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'The king encouraged salesmen to travel here, but only I dared to take the risk, and a risk it was!' }) -keywordHandler:addKeyword({ 'bug' }, StdModule.say, { npcHandler = npcHandler, text = 'Bugs plague this isle, but my wares are bug-free, totally bug-free.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'One day I will return to the continent as a rich, a very rich man!' }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = 'Thais is a crowded town.' }) -keywordHandler:addKeyword({ 'mainland' }, StdModule.say, { npcHandler = npcHandler, text = 'Have you ever wondered what that \'main\' is people are talking about? Well, once you\'ve reached level 8, you should talk to the {oracle}. You can choose a {profession} afterwards and explore much more of Tibia.' }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, I\'m sorry, but I don\'t deal with weapons. That\'s {Obi\'s} or {Lee\'Delle\'s} business. I could offer you a {pick} in exchange for a {small axe} if you should happen to own one.' }) -keywordHandler:addKeyword({ 'armor' }, StdModule.say, { npcHandler = npcHandler, text = 'Armor and shields can be bought at {Dixi\'s} or at {Lee\'Delle\'s}. Dixi runs that shop near {Obi\'s}.' }) -keywordHandler:addKeyword({ 'shield' }, StdModule.say, { npcHandler = npcHandler, text = 'Armor and shields can be bought at {Dixi\'s} or at {Lee\'Delle\'s}. Dixi runs that shop near {Obi\'s}.' }) -keywordHandler:addKeyword({ 'cooki' }, StdModule.say, { npcHandler = npcHandler, text = 'I you want to find someone who may want to buy your cookies, you should meet Lily.' }) -keywordHandler:addKeyword({ 'blueberr' }, StdModule.say, { npcHandler = npcHandler, text = 'Blueberries grow on bushes. They\'re quite common in Tibia. Just pick them from a bush if you need a snack!' }) -keywordHandler:addKeyword({ 'potion' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, I don\'t sell potions. You should visit {Lily} for that.' }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = 'Hmm, the best address to look for food might be {Willie} or {Billy}. {Norma} also has some snacks for sale.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'A bank is quite useful. You can deposit your money safely there. This way you don\'t have to carry it around with you all the time. You could also invest your money in my {wares}!' }) -keywordHandler:addKeyword({ 'academy' }, StdModule.say, { npcHandler = npcHandler, text = 'The big building in the centre of Rookgaard. They have a library, a training centre, a {bank} and the room of the {oracle}. {Seymour} is the teacher there.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The monk {Cipfried} takes care of our temple. He can heal you if you\'re badly injured or poisoned.' }) -keywordHandler:addKeyword({ 'premium' }, StdModule.say, { npcHandler = npcHandler, text = 'As a premium adventurer you have many advantages. You really should check them out!' }) -keywordHandler:addKeyword({ 'citizen' }, StdModule.say, { npcHandler = npcHandler, text = 'If you tell me the name of a citizen, I\'ll tell you what I know about him or her.' }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { npcHandler = npcHandler, text = 'To view the offers of a merchant, simply talk to him or her and ask for a {trade}. They will gladly show you their offers and also the things they buy from you.' }) -keywordHandler:addKeyword({ 'profession' }, StdModule.say, { npcHandler = npcHandler, text = 'You will learn everything you need to know about professions once you\'ve reached the {Island of Destiny}.' }) -keywordHandler:addKeyword({ 'destiny' }, StdModule.say, { npcHandler = npcHandler, text = 'The Island of Destiny can be reached via the {oracle} once you are level 8. This trip will help you choose your {profession}!' }) - -keywordHandler:addKeyword({ 'torch' }, StdModule.say, { npcHandler = npcHandler, text = 'No thank you. I can already overstock the market with torches.' }) -keywordHandler:addKeyword({ 'fishing' }, StdModule.say, { npcHandler = npcHandler, text = 'I sell fishing rods and worms if you want to fish. Simply ask me for a {trade}.' }) -keywordHandler:addKeyword({ 'shovel' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I am selling that. Simply ask me for a {trade} to view all my offers.' }) -keywordHandler:addAliasKeyword({ 'rope' }) -keywordHandler:addAliasKeyword({ 'backpack' }) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, text = "Just ask me for a {trade} to see what I buy from you." }) +keywordHandler:addKeyword({ "stuff" }, StdModule.say, { npcHandler = npcHandler, text = "Just ask me for a {trade} to see my offers." }) +keywordHandler:addAliasKeyword({ "wares" }) +keywordHandler:addAliasKeyword({ "offer" }) +keywordHandler:addAliasKeyword({ "buy" }) + +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "If you need general {equipment}, just ask me for a {trade}. I can also provide you with some general {hints} about the game." }) +keywordHandler:addAliasKeyword({ "information" }) + +keywordHandler:addKeyword({ "equip" }, StdModule.say, { npcHandler = npcHandler, text = "As an adventurer, you should always have at least a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}." }) +keywordHandler:addAliasKeyword({ "tools" }) + +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "I'm fine. I'm so glad to have you here as my customer." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a merchant. Just ask me for a {trade} to see my offers." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Al Dee, but you can call me Al. Can I interest you in a {trade}?" }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It's about |TIME|. I'm so sorry, I have no watches to sell. Do you want to buy something else?" }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "If you want to challenge monsters in the {dungeons}, you need some {weapons} and {armor} from the local {merchants}." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "If you want to explore the dungeons such as the {sewers}, you have to {equip} yourself with the vital stuff I am selling. It's {vital} in the deepest sense of the word." }) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, our sewer system is very primitive - it's so primitive that it's overrun by {rats}. But the stuff I sell is safe from them. Just ask me for a {trade} to see it!" }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "The king encouraged salesmen to travel here, but only I dared to take the risk, and a risk it was!" }) +keywordHandler:addKeyword({ "bug" }, StdModule.say, { npcHandler = npcHandler, text = "Bugs plague this isle, but my wares are bug-free, totally bug-free." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "One day I will return to the continent as a rich, a very rich man!" }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "Thais is a crowded town." }) +keywordHandler:addKeyword({ "mainland" }, StdModule.say, { npcHandler = npcHandler, text = "Have you ever wondered what that 'main' is people are talking about? Well, once you've reached level 8, you should talk to the {oracle}. You can choose a {profession} afterwards and explore much more of Tibia." }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, I'm sorry, but I don't deal with weapons. That's {Obi's} or {Lee'Delle's} business. I could offer you a {pick} in exchange for a {small axe} if you should happen to own one." }) +keywordHandler:addKeyword({ "armor" }, StdModule.say, { npcHandler = npcHandler, text = "Armor and shields can be bought at {Dixi's} or at {Lee'Delle's}. Dixi runs that shop near {Obi's}." }) +keywordHandler:addKeyword({ "shield" }, StdModule.say, { npcHandler = npcHandler, text = "Armor and shields can be bought at {Dixi's} or at {Lee'Delle's}. Dixi runs that shop near {Obi's}." }) +keywordHandler:addKeyword({ "cooki" }, StdModule.say, { npcHandler = npcHandler, text = "I you want to find someone who may want to buy your cookies, you should meet Lily." }) +keywordHandler:addKeyword({ "blueberr" }, StdModule.say, { npcHandler = npcHandler, text = "Blueberries grow on bushes. They're quite common in Tibia. Just pick them from a bush if you need a snack!" }) +keywordHandler:addKeyword({ "potion" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, I don't sell potions. You should visit {Lily} for that." }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "Hmm, the best address to look for food might be {Willie} or {Billy}. {Norma} also has some snacks for sale." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "A bank is quite useful. You can deposit your money safely there. This way you don't have to carry it around with you all the time. You could also invest your money in my {wares}!" }) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { npcHandler = npcHandler, text = "The big building in the centre of Rookgaard. They have a library, a training centre, a {bank} and the room of the {oracle}. {Seymour} is the teacher there." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The monk {Cipfried} takes care of our temple. He can heal you if you're badly injured or poisoned." }) +keywordHandler:addKeyword({ "premium" }, StdModule.say, { npcHandler = npcHandler, text = "As a premium adventurer you have many advantages. You really should check them out!" }) +keywordHandler:addKeyword({ "citizen" }, StdModule.say, { npcHandler = npcHandler, text = "If you tell me the name of a citizen, I'll tell you what I know about him or her." }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, text = "To view the offers of a merchant, simply talk to him or her and ask for a {trade}. They will gladly show you their offers and also the things they buy from you." }) +keywordHandler:addKeyword({ "profession" }, StdModule.say, { npcHandler = npcHandler, text = "You will learn everything you need to know about professions once you've reached the {Island of Destiny}." }) +keywordHandler:addKeyword({ "destiny" }, StdModule.say, { npcHandler = npcHandler, text = "The Island of Destiny can be reached via the {oracle} once you are level 8. This trip will help you choose your {profession}!" }) + +keywordHandler:addKeyword({ "torch" }, StdModule.say, { npcHandler = npcHandler, text = "No thank you. I can already overstock the market with torches." }) +keywordHandler:addKeyword({ "fishing" }, StdModule.say, { npcHandler = npcHandler, text = "I sell fishing rods and worms if you want to fish. Simply ask me for a {trade}." }) +keywordHandler:addKeyword({ "shovel" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I am selling that. Simply ask me for a {trade} to view all my offers." }) +keywordHandler:addAliasKeyword({ "rope" }) +keywordHandler:addAliasKeyword({ "backpack" }) -- Names -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = 'He is just an old monk. However, he can heal you if you are badly injured or poisoned.' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'Poor old woman, her son {Tom} never visits her.' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'He dedicated his life to welcome newcomers to this island.' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'No idea who that is.' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'Yep, that\'s me. Smart of you to notice that!' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s the local {bank} clerk.' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'He mostly stays by himself. He\'s a hermit outside of town - good luck finding him.' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'She\'s {Obi\'s} granddaughter and deals with {armors} and {shields}. Her shop is south west of town, close to the {temple}.' }) -keywordHandler:addKeyword({ 'obi' }, StdModule.say, { npcHandler = npcHandler, text = 'He sells {weapons}. His shop is south west of town, close to the {temple}.' }) -keywordHandler:addKeyword({ 'lee\'delle' }, StdModule.say, { npcHandler = npcHandler, text = 'If you are a {premium} adventurer, you should check out {Lee\'Delle\'s} shop. She lives in the western part of town, just across the bridge.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s the local tanner. You could try selling fresh corpses or leather to him.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'She\'s currently recovering from her travels in the {academy}. It\'s always nice to chat with her!' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8.' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'Seymour is a teacher running the {academy}. He has many important {information} about Tibia.' }) -keywordHandler:addKeyword({ 'lily' }, StdModule.say, { npcHandler = npcHandler, text = 'She sells health {potions} and antidote potions. Also, she buys {blueberries} and {cookies} in case you find any.' }) -keywordHandler:addKeyword({ 'willie' }, StdModule.say, { npcHandler = npcHandler, text = 'This is a local farmer. If you need fresh {food} to regain your health, it\'s a good place to go. However, many monsters also carry food such as meat or cheese. Or you could simply pick {blueberries}.' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'This is a local farmer. If you need fresh {food} to regain your health, it\'s a good place to go. He\'s only trading with {premium} adventurers though.' }) -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'She used to sell equipment, but I think she has opened a small bar now. Talks about changing her name to \'Mary\' and such, strange girl.' }) -keywordHandler:addKeyword({ 'zerbrus' }, StdModule.say, { npcHandler = npcHandler, text = 'Some call him a hero. He protects the town from {monsters}.' }) -keywordHandler:addAliasKeyword({ 'dallheim' }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = "He is just an old monk. However, he can heal you if you are badly injured or poisoned." }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "Poor old woman, her son {Tom} never visits her." }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "He dedicated his life to welcome newcomers to this island." }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "No idea who that is." }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "Yep, that's me. Smart of you to notice that!" }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "He's the local {bank} clerk." }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "He mostly stays by himself. He's a hermit outside of town - good luck finding him." }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "She's {Obi's} granddaughter and deals with {armors} and {shields}. Her shop is south west of town, close to the {temple}." }) +keywordHandler:addKeyword({ "obi" }, StdModule.say, { npcHandler = npcHandler, text = "He sells {weapons}. His shop is south west of town, close to the {temple}." }) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { npcHandler = npcHandler, text = "If you are a {premium} adventurer, you should check out {Lee'Delle's} shop. She lives in the western part of town, just across the bridge." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "He's the local tanner. You could try selling fresh corpses or leather to him." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "She's currently recovering from her travels in the {academy}. It's always nice to chat with her!" }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8." }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "Seymour is a teacher running the {academy}. He has many important {information} about Tibia." }) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { npcHandler = npcHandler, text = "She sells health {potions} and antidote potions. Also, she buys {blueberries} and {cookies} in case you find any." }) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { npcHandler = npcHandler, text = "This is a local farmer. If you need fresh {food} to regain your health, it's a good place to go. However, many monsters also carry food such as meat or cheese. Or you could simply pick {blueberries}." }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "This is a local farmer. If you need fresh {food} to regain your health, it's a good place to go. He's only trading with {premium} adventurers though." }) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "She used to sell equipment, but I think she has opened a small bar now. Talks about changing her name to 'Mary' and such, strange girl." }) +keywordHandler:addKeyword({ "zerbrus" }, StdModule.say, { npcHandler = npcHandler, text = "Some call him a hero. He protects the town from {monsters}." }) +keywordHandler:addAliasKeyword({ "dallheim" }) -- Pick quest -local pickKeyword = keywordHandler:addKeyword({ 'pick' }, StdModule.say, { npcHandler = npcHandler, text = 'Picks are hard to come by. I trade them only in exchange for high quality small axes. Would you like to make that deal?' }) -pickKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Splendid! Here, take your pick.', reset = true }, - function(player) return player:getItemCount(3462) > 0 end, - function(player) - player:removeItem(3462, 1) - player:addItem(3456, 1) - end -) -pickKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, I am looking for a SMALL axe.', reset = true }) -pickKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, then don\'t.', reset = true }) -keywordHandler:addAliasKeyword({ 'small', 'axe' }) - -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Bye, bye.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Bye, bye |PLAYERNAME|.') -npcHandler:setMessage(MESSAGE_SENDTRADE, 'Take a look in the trade window to your left.') +local pickKeyword = keywordHandler:addKeyword({ "pick" }, StdModule.say, { npcHandler = npcHandler, text = "Picks are hard to come by. I trade them only in exchange for high quality small axes. Would you like to make that deal?" }) +pickKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Splendid! Here, take your pick.", reset = true }, function(player) + return player:getItemCount(3462) > 0 +end, function(player) + player:removeItem(3462, 1) + player:addItem(3456, 1) +end) +pickKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, I am looking for a SMALL axe.", reset = true }) +pickKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Well, then don't.", reset = true }) +keywordHandler:addAliasKeyword({ "small", "axe" }) + +npcHandler:setMessage(MESSAGE_WALKAWAY, "Bye, bye.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Bye, bye |PLAYERNAME|.") +npcHandler:setMessage(MESSAGE_SENDTRADE, "Take a look in the trade window to your left.") npcHandler:setMessage(MESSAGE_GREET, { - 'Hello, hello, |PLAYERNAME|! Please come in, look, and buy! I\'m a specialist for all sorts of {tools}. Just ask me for a {trade} to see my offers! You can also ask me for general {hints} about the game. ...', - 'You can also ask me about each {citizen} of the isle.' + "Hello, hello, |PLAYERNAME|! Please come in, look, and buy! I'm a specialist for all sorts of {tools}. Just ask me for a {trade} to see my offers! You can also ask me for general {hints} about the game. ...", + "You can also ask me about each {citizen} of the isle.", }) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/alaistar.lua b/data-otservbr-global/npc/alaistar.lua index fda0d705525..883f877aaf3 100644 --- a/data-otservbr-global/npc/alaistar.lua +++ b/data-otservbr-global/npc/alaistar.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 76, lookLegs = 60, lookFeet = 1, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { @@ -54,7 +54,7 @@ npcConfig.shop = { { itemName = "ultimate health potion", clientId = 7643, buy = 438 }, { itemName = "ultimate mana potion", clientId = 23373, buy = 379 }, { itemName = "ultimate spirit potion", clientId = 23374, buy = 438 }, - { itemName = "vial", clientId = 2874, sell = 5 } + { itemName = "vial", clientId = 2874, sell = 5 }, } -- On buy npc shop message @@ -66,8 +66,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) diff --git a/data-otservbr-global/npc/albert.lua b/data-otservbr-global/npc/albert.lua index 08b285fa980..c13372b65ae 100644 --- a/data-otservbr-global/npc/albert.lua +++ b/data-otservbr-global/npc/albert.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 49, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/albinius.lua b/data-otservbr-global/npc/albinius.lua index bd5ecf05881..6ca0b84020d 100644 --- a/data-otservbr-global/npc/albinius.lua +++ b/data-otservbr-global/npc/albinius.lua @@ -16,15 +16,15 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 86, lookFeet = 60, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { - { itemName = "heavy old tome", clientId = 23986, sell = 30 } + { itemName = "heavy old tome", clientId = 23986, sell = 30 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -35,8 +35,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -62,9 +61,9 @@ npcType.onThink = function(npc, interval) npcHandler:onThink(npc, interval) end -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I am Albinius, a worshipper of the {Astral Shapers}." }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "Precisely time." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I find ways to unveil the secrets of the stars. Judging by this question, I doubt you follow my weekly publications concerning this research." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am Albinius, a worshipper of the {Astral Shapers}." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Precisely time." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I find ways to unveil the secrets of the stars. Judging by this question, I doubt you follow my weekly publications concerning this research." }) local runes = { { runeid = 24954 }, @@ -72,12 +71,12 @@ local runes = { { runeid = 24956 }, { runeid = 24957 }, { runeid = 24958 }, - { runeid = 24959 } + { runeid = 24959 }, } local function getTable() local itemsList = { - { name = "heavy old tome", id = 23986, sell = 30 } + { name = "heavy old tome", id = 23986, sell = 30 }, } return itemsList end @@ -93,57 +92,57 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "shapers") then npcHandler:say({ "The {Shapers} were an advanced civilisation, well versed in art, construction, language and exploration of our world in their time. ...", - "The foundations of this {temple} are testament to their genius and advanced understanding of complex problems. They were master craftsmen and excelled in magic." + "The foundations of this {temple} are testament to their genius and advanced understanding of complex problems. They were master craftsmen and excelled in magic.", }, npc, creature) end - if MsgContains(message, 'temple') then + if MsgContains(message, "temple") then npcHandler:say({ - "The temple has been restored to its former glory, yet we strife to live and praise in the {Shaper} ways. Do you still need me to take some old {tomes} from you my child?" + "The temple has been restored to its former glory, yet we strife to live and praise in the {Shaper} ways. Do you still need me to take some old {tomes} from you my child?", }, npc, creature) npcHandler:setTopic(playerId, 1) end if MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 then - if (player:getStorageValue(Storage.ForgottenKnowledge.Tomes) == 1) then - npcHandler:say('You already offered enough tomes for us to study and rebuild this temple. Thank you, my child.', npc, creature) + if player:getStorageValue(Storage.ForgottenKnowledge.Tomes) == 1 then + npcHandler:say("You already offered enough tomes for us to study and rebuild this temple. Thank you, my child.", npc, creature) npcHandler:setTopic(playerId, 0) else - if (player:getItemCount(23986) >= 5) then + if player:getItemCount(23986) >= 5 then player:removeItem(23986, 5) - npcHandler:say('Thank you very much for your contribution, child. Your first step in the ways of the {Shapers} has been taken.', npc, creature) + npcHandler:say("Thank you very much for your contribution, child. Your first step in the ways of the {Shapers} has been taken.", npc, creature) player:setStorageValue(Storage.ForgottenKnowledge.Tomes, 1) else - npcHandler:say('You need 5 heavy old tome.', npc, creature) + npcHandler:say("You need 5 heavy old tome.", npc, creature) end end elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 1 then - npcHandler:say('I understand. Return to me if you change your mind, my child.', npc, creature) + npcHandler:say("I understand. Return to me if you change your mind, my child.", npc, creature) npcHandler:removeInteraction(npc, creature) end - if MsgContains(message, 'tomes') and player:getStorageValue(Storage.ForgottenKnowledge.Tomes) < 1 then + if MsgContains(message, "tomes") and player:getStorageValue(Storage.ForgottenKnowledge.Tomes) < 1 then npcHandler:say({ - "If you have some old shaper tomes I would {buy} them." + "If you have some old shaper tomes I would {buy} them.", }, npc, creature) npcHandler:setTopic(playerId, 7) end - if MsgContains(message, 'buy') then + if MsgContains(message, "buy") then npcHandler:say("I'm sorry, I don't buy anything. My main concern right now is the bulding of this temple.", npc, creature) npc:openShopWindow(creature) end --- ##Astral Shaper Rune## - if MsgContains(message, 'astral shaper rune') then + if MsgContains(message, "astral shaper rune") then if player:getStorageValue(Storage.ForgottenKnowledge.LastLoreKilled) >= 1 then - npcHandler:say('Do you wish to merge your rune parts into an astral shaper rune?', npc, creature) + npcHandler:say("Do you wish to merge your rune parts into an astral shaper rune?", npc, creature) npcHandler:setTopic(playerId, 8) else npcHandler:say("I'm sorry but you lack the needed rune parts.", npc, creature) end end - if MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 8 then + if MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 8 then local haveParts = false for k = 1, #runes do if player:removeItem(runes[k].runeid, 1) then @@ -151,133 +150,133 @@ local function creatureSayCallback(npc, creature, type, message) end end if haveParts then - npcHandler:say('As you wish.', npc, creature) + npcHandler:say("As you wish.", npc, creature) player:addItem(24960, 1) npcHandler:removeInteraction(npc, creature) end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 8 then - npcHandler:say('ok.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 8 then + npcHandler:say("ok.", npc, creature) npcHandler:removeInteraction(npc, creature) end --- ####PORTALS### -- Ice Portal - if MsgContains(message, 'ice portal') then + if MsgContains(message, "ice portal") then if player:getStorageValue(Storage.ForgottenKnowledge.Tomes) == 1 then npcHandler:say({ - "You may pass this portal if you have 50 fish as offering. Do you have the fish with you?" + "You may pass this portal if you have 50 fish as offering. Do you have the fish with you?", }, npc, creature) npcHandler:setTopic(playerId, 2) else - npcHandler:say('Sorry, first you need to bring my Heavy Old Tomes.', npc, creature) + npcHandler:say("Sorry, first you need to bring my Heavy Old Tomes.", npc, creature) end end - if MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 2 then + if MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 2 then if player:getStorageValue(Storage.ForgottenKnowledge.AccessIce) < 1 and player:getItemCount(3578) >= 50 then player:removeItem(3578, 50) - npcHandler:say('Thank you for your offering. You may pass the Portal to the Powers of Ice now.', npc, creature) + npcHandler:say("Thank you for your offering. You may pass the Portal to the Powers of Ice now.", npc, creature) player:setStorageValue(Storage.ForgottenKnowledge.AccessIce, 1) else npcHandler:say("I'm sorry, you don't have enough fish. Return if you can offer fifty of them.", npc, creature) end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 2 then + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 2 then npcHandler:say("In this case I'm sorry, you may not pass this portal.", npc, creature) end -- Holy Portal - if MsgContains(message, 'holy portal') then + if MsgContains(message, "holy portal") then if player:getStorageValue(Storage.ForgottenKnowledge.Tomes) == 1 then npcHandler:say({ - "You may pass this portal if you have 50 incantation notes as offering. Do you have the incantation notes with you?" + "You may pass this portal if you have 50 incantation notes as offering. Do you have the incantation notes with you?", }, npc, creature) npcHandler:setTopic(playerId, 3) else - npcHandler:say('Sorry, first you need to bring my Heavy Old Tomes.', npc, creature) + npcHandler:say("Sorry, first you need to bring my Heavy Old Tomes.", npc, creature) end end - if MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 3 then + if MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 3 then if player:getStorageValue(Storage.ForgottenKnowledge.AccessGolden) < 1 and player:getItemCount(18929) >= 50 then player:removeItem(18929, 50) - npcHandler:say('Thank you for your offering. You may pass the Portal to the Powers of Holy now.', npc, creature) + npcHandler:say("Thank you for your offering. You may pass the Portal to the Powers of Holy now.", npc, creature) player:setStorageValue(Storage.ForgottenKnowledge.AccessGolden, 1) else npcHandler:say("I'm sorry, you don't have enough incantation notes. Return if you can offer fifty of them.", npc, creature) end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 3 then + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 3 then npcHandler:say("In this case I'm sorry, you may not pass this portal.", npc, creature) end -- Energy Portal - if MsgContains(message, 'energy portal') then + if MsgContains(message, "energy portal") then if player:getStorageValue(Storage.ForgottenKnowledge.Tomes) == 1 then npcHandler:say({ - "You may pass this portal if you have 50 marsh stalker feathers as offering. Do you have the marsh stalker feathers with you?" + "You may pass this portal if you have 50 marsh stalker feathers as offering. Do you have the marsh stalker feathers with you?", }, npc, creature) npcHandler:setTopic(playerId, 4) else - npcHandler:say('Sorry, first you need to bring my Heavy Old Tomes.', npc, creature) + npcHandler:say("Sorry, first you need to bring my Heavy Old Tomes.", npc, creature) end end - if MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 4 then + if MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 4 then if player:getStorageValue(Storage.ForgottenKnowledge.AccessViolet) < 1 and player:getItemCount(17462) >= 50 then player:removeItem(17462, 50) - npcHandler:say('Thank you for your offering. You may pass the Portal to the Powers of Energy now.', npc, creature) + npcHandler:say("Thank you for your offering. You may pass the Portal to the Powers of Energy now.", npc, creature) player:setStorageValue(Storage.ForgottenKnowledge.AccessViolet, 1) else npcHandler:say("I'm sorry, you don't have enough marsh stalker feathers. Return if you can offer fifty of them.", npc, creature) end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 4 then + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 4 then npcHandler:say("In this case I'm sorry, you may not pass this portal.", npc, creature) end -- Earth Portal - if MsgContains(message, 'earth portal') then + if MsgContains(message, "earth portal") then if player:getStorageValue(Storage.ForgottenKnowledge.Tomes) == 1 then npcHandler:say({ - "You may pass this portal if you have 50 acorns as offering. Do you have the acorns with you?" + "You may pass this portal if you have 50 acorns as offering. Do you have the acorns with you?", }, npc, creature) npcHandler:setTopic(playerId, 5) else - npcHandler:say('Sorry, first you need to bring my Heavy Old Tomes.', npc, creature) + npcHandler:say("Sorry, first you need to bring my Heavy Old Tomes.", npc, creature) end end - if MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 5 then + if MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 5 then if player:getStorageValue(Storage.ForgottenKnowledge.AccessEarth) < 1 and player:getItemCount(10296) >= 50 then player:removeItem(10296, 50) - npcHandler:say('Thank you for your offering. You may pass the Portal to the Powers of Earth now.', npc, creature) + npcHandler:say("Thank you for your offering. You may pass the Portal to the Powers of Earth now.", npc, creature) player:setStorageValue(Storage.ForgottenKnowledge.AccessEarth, 1) else npcHandler:say("I'm sorry, you don't have enough acorns. Return if you can offer fifty of them.", npc, creature) end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 5 then + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 5 then npcHandler:say("In this case I'm sorry, you may not pass this portal.", npc, creature) end -- Death Portal - if MsgContains(message, 'death portal') then + if MsgContains(message, "death portal") then if player:getStorageValue(Storage.ForgottenKnowledge.Tomes) == 1 then npcHandler:say({ - "You may pass this portal if you have 50 pelvis bones as offering. Do you have the pelvis bones with you?" + "You may pass this portal if you have 50 pelvis bones as offering. Do you have the pelvis bones with you?", }, npc, creature) npcHandler:setTopic(playerId, 6) else - npcHandler:say('Sorry, first you need to bring my Heavy Old Tomes.', npc, creature) + npcHandler:say("Sorry, first you need to bring my Heavy Old Tomes.", npc, creature) end end - if MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 6 then + if MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 6 then if player:getStorageValue(Storage.ForgottenKnowledge.AccessDeath) < 1 and player:getItemCount(11481) >= 50 then player:removeItem(11481, 50) - npcHandler:say('Thank you for your offering. You may pass the Portal to the Powers of Death now.', npc, creature) + npcHandler:say("Thank you for your offering. You may pass the Portal to the Powers of Death now.", npc, creature) player:setStorageValue(Storage.ForgottenKnowledge.AccessDeath, 1) else npcHandler:say("I'm sorry, you don't have enough pelvis bones. Return if you can offer fifty of them.", npc, creature) end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 6 then + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 6 then npcHandler:say("In this case I'm sorry, you may not pass this portal.", npc, creature) end return true diff --git a/data-otservbr-global/npc/aldo.lua b/data-otservbr-global/npc/aldo.lua index a825171a720..d04c54a4104 100644 --- a/data-otservbr-global/npc/aldo.lua +++ b/data-otservbr-global/npc/aldo.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 37, lookLegs = 116, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { @@ -40,7 +40,7 @@ npcConfig.shop = { { itemName = "steel helmet", clientId = 3351, buy = 580, sell = 293 }, { itemName = "studded helmet", clientId = 3376, buy = 63, sell = 20 }, { itemName = "studded legs", clientId = 3362, buy = 50, sell = 15 }, - { itemName = "viking helmet", clientId = 3367, buy = 265, sell = 66 } + { itemName = "viking helmet", clientId = 3367, buy = 265, sell = 66 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -51,8 +51,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -92,7 +91,7 @@ local function creatureSayCallback(npc, creature, type, message) if table.contains({ "soft boots", "repair", "soft", "boots" }, message) then npcHandler:say("Do you want to repair your worn soft boots for 10000 gold coins?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 1 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 then npcHandler:setTopic(playerId, 0) if player:getItemCount(6530) == 0 then npcHandler:say("Sorry, you don't have the item.", npc, creature) @@ -107,7 +106,7 @@ local function creatureSayCallback(npc, creature, type, message) player:removeItem(6530, 1) player:addItem(6529, 1) npcHandler:say("Here you are.", npc, creature) - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 1 then + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 1 then npcHandler:setTopic(playerId, 0) npcHandler:say("Ok then.", npc, creature) end diff --git a/data-otservbr-global/npc/alesar.lua b/data-otservbr-global/npc/alesar.lua index e938a340056..365c116843d 100644 --- a/data-otservbr-global/npc/alesar.lua +++ b/data-otservbr-global/npc/alesar.lua @@ -13,11 +13,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 80 + lookType = 80, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { @@ -45,7 +45,7 @@ npcConfig.shop = { { itemName = "titan axe", clientId = 7413, sell = 4000 }, { itemName = "tower shield", clientId = 3428, sell = 8000 }, { itemName = "vampire shield", clientId = 3434, sell = 15000 }, - { itemName = "warrior helmet", clientId = 3369, sell = 5000 } + { itemName = "warrior helmet", clientId = 3369, sell = 5000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -56,8 +56,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) diff --git a/data-otservbr-global/npc/alesar_functions.lua b/data-otservbr-global/npc/alesar_functions.lua index c2d785e2453..da25d5e8c62 100644 --- a/data-otservbr-global/npc/alesar_functions.lua +++ b/data-otservbr-global/npc/alesar_functions.lua @@ -10,7 +10,7 @@ function ParseAlesarSay(npc, creature, message, npcHandler) "So Baa'leal thinks you are up to do a mission for us? ...", "I think he is getting old, entrusting human scum such as you are with an important mission like that. ...", "Personally, I don't understand why you haven't been slaughtered right at the gates. ...", - "Anyway. Are you prepared to embark on a dangerous mission for us?" + "Anyway. Are you prepared to embark on a dangerous mission for us?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif table.contains({ 1, 2 }, missionProgress) then @@ -30,7 +30,7 @@ function ParseAlesarSay(npc, creature, message, npcHandler) "Unfortunately my last gemstone broke and therefore I'm not able to create new blades anymore. ...", "To my knowledge there is only one place where you can find these gemstones - I know for a fact that the Marid have at least one of them. ...", "Well... to cut a long story short, your mission is to sneak into Ashta'daramai and to steal it. ...", - "Needless to say, the Marid won't be too eager to part with it. Try not to get killed until you have delivered the stone to me." + "Needless to say, the Marid won't be too eager to part with it. Try not to get killed until you have delivered the stone to me.", }, npc, creature) player:setStorageValue(Storage.DjinnWar.EfreetFaction.Mission02, 1) player:setStorageValue(Storage.DjinnWar.EfreetFaction.DoorToMaridTerritory, 1) @@ -49,7 +49,7 @@ function ParseAlesarSay(npc, creature, message, npcHandler) "Amazing how you humans are just impossible to get rid of. Incidentally, you have this character trait in common with many insects and with other vermin. ...", "Nevermind. I hate to say it, but it you have done us a favour, human. That gemstone will serve us well. ...", "Baa'leal, wants you to talk to Malor concerning some new mission. ...", - "Looks like you have managed to extended your life expectancy - for just a bit longer." + "Looks like you have managed to extended your life expectancy - for just a bit longer.", }, npc, creature) player:removeItem(3233, 1) player:setStorageValue(Storage.DjinnWar.EfreetFaction.Mission02, 3) diff --git a/data-otservbr-global/npc/alexander.lua b/data-otservbr-global/npc/alexander.lua index 20e2f7597e4..be63cecf32e 100644 --- a/data-otservbr-global/npc/alexander.lua +++ b/data-otservbr-global/npc/alexander.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 71, lookLegs = 63, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Selling all sorts of magic equipment. Come and have a look' } + { text = "Selling all sorts of magic equipment. Come and have a look" }, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,7 @@ end local items = { [VOCATION.BASE_ID.SORCERER] = 3074, - [VOCATION.BASE_ID.DRUID] = 3066 + [VOCATION.BASE_ID.DRUID] = 3066, } local function creatureSayCallback(npc, creature, type, message) @@ -70,32 +70,32 @@ local function creatureSayCallback(npc, creature, type, message) end local itemId = items[player:getVocation():getBaseId()] - if MsgContains(message, 'first rod') or MsgContains(message, 'first wand') then + if MsgContains(message, "first rod") or MsgContains(message, "first wand") then if player:isMage() then if player:getStorageValue(Storage.FirstMageWeapon) == -1 then - npcHandler:say('So you ask me for a {' .. ItemType(itemId):getName() .. '} to begin your adventure?', npc, creature) + npcHandler:say("So you ask me for a {" .. ItemType(itemId):getName() .. "} to begin your adventure?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('What? I have already gave you one {' .. ItemType(itemId):getName() .. '}!', npc, creature) + npcHandler:say("What? I have already gave you one {" .. ItemType(itemId):getName() .. "}!", npc, creature) end else - npcHandler:say('Sorry, you aren\'t a druid either a sorcerer.', npc, creature) + npcHandler:say("Sorry, you aren't a druid either a sorcerer.", npc, creature) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then player:addItem(itemId, 1) - npcHandler:say('Here you are young adept, take care yourself.', npc, creature) + npcHandler:say("Here you are young adept, take care yourself.", npc, creature) player:setStorageValue(Storage.FirstMageWeapon, 1) end npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 1 then + npcHandler:say("Ok then.", npc, creature) npcHandler:setTopic(playerId, 0) end return true end -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = "I'm selling runes, life rings, wands, rods and crystal balls. I also buy powerful spellbooks. If you like to see my offers, ask me for a {trade}." }) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "I'm selling runes, life rings, wands, rods and crystal balls. I also buy powerful spellbooks. If you like to see my offers, ask me for a {trade}." }) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setMessage(MESSAGE_GREET, "Hi there |PLAYERNAME|, and welcome to the {magic} store.") @@ -149,7 +149,7 @@ npcConfig.shop = { { itemName = "wand of starstorm", clientId = 8092, buy = 18000 }, { itemName = "wand of voodoo", clientId = 8094, buy = 22000 }, { itemName = "wand of vortex", clientId = 3074, buy = 500 }, - { itemName = "wild growth rune", clientId = 3156, buy = 160 } + { itemName = "wild growth rune", clientId = 3156, buy = 160 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -160,7 +160,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/alia.lua b/data-otservbr-global/npc/alia.lua index 4c650a81e77..ec100c289ea 100644 --- a/data-otservbr-global/npc/alia.lua +++ b/data-otservbr-global/npc/alia.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 95, lookLegs = 0, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,86 +51,103 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Alia) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Alia) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Alia, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/alissa.lua b/data-otservbr-global/npc/alissa.lua index 58ea84fba8d..bd4eec50cf2 100644 --- a/data-otservbr-global/npc/alissa.lua +++ b/data-otservbr-global/npc/alissa.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 3, lookLegs = 72, lookFeet = 16, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -69,7 +69,7 @@ npcConfig.shop = { { itemName = "raspberry", clientId = 8012, buy = 1 }, { itemName = "red apple", clientId = 3585, buy = 3 }, { itemName = "strawberry", clientId = 3591, buy = 1 }, - { itemName = "tomato", clientId = 3596, buy = 4 } + { itemName = "tomato", clientId = 3596, buy = 4 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -80,7 +80,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/alkestios.lua b/data-otservbr-global/npc/alkestios.lua index 0aefcb8ae3c..4b7e593316d 100644 --- a/data-otservbr-global/npc/alkestios.lua +++ b/data-otservbr-global/npc/alkestios.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -60,31 +60,30 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "mission") then - if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 1 - and player:getStorageValue(ThreatenedDreams.Mission01.PoacherChest) == 1 then + if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 1 and player:getStorageValue(ThreatenedDreams.Mission01.PoacherChest) == 1 then npcHandler:say({ - "Uhmn.. Maybe Ahmet in Ankrahmun can help we to fake this book." + "Uhmn.. Maybe Ahmet in Ankrahmun can help we to fake this book.", }, npc, creature) elseif player:getStorageValue(ThreatenedDreams.Mission01[1]) == 2 then npcHandler:say({ - "The poachers are still chasing me. Please hurry and find a way to help me." + "The poachers are still chasing me. Please hurry and find a way to help me.", }, npc, creature) elseif player:getStorageValue(ThreatenedDreams.Mission01[1]) == 3 then npcHandler:say({ "You succeeded! It seems the poachers have read your little faked story about killing white deer and the ensuing doom. They stopped chasing me. Thank you! ...", - "You proved yourself trustworthy - at least as far as I am concerned. But as I told you I'm actually not a real animal. If you want to enter our hidden island, you must prove that you are also willing to help real animals. Would you do that?" + "You proved yourself trustworthy - at least as far as I am concerned. But as I told you I'm actually not a real animal. If you want to enter our hidden island, you must prove that you are also willing to help real animals. Would you do that?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(ThreatenedDreams.Mission01[1]) == 15 then npcHandler:say({ "I'm very happy that you could help fae and animals alike. You earned our trust and may now visit our secret realm. I marked you with an arcane fae seal. Hereby you will be able to use the elemental shrines strewn about Tibia. ...", - "There are fire, ice, energy and earth shrines. If you don't know their locations you can also reach them by most temples in this world. The elemental shrines will transport you to Feyrist now that you bear the magical seal." + "There are fire, ice, energy and earth shrines. If you don't know their locations you can also reach them by most temples in this world. The elemental shrines will transport you to Feyrist now that you bear the magical seal.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission01[1], 16) else npcHandler:say({ "I indeed have some troubles since I'm travelling this part of the world. When I took over the body of a white deer I wasn't aware that such an animal is a sought after quarry for hunters and poachers. ...", - "Now I'm living in the constant danger of being caught and killed. Of course, I could just take over another animal but this deer has really grown on me. I'd like to help this beautiful stag but I need your assistance. Are you willing to help me?" + "Now I'm living in the constant danger of being caught and killed. Of course, I could just take over another animal but this deer has really grown on me. I'd like to help this beautiful stag but I need your assistance. Are you willing to help me?", }, npc, creature) npcHandler:setTopic(playerId, 1) end @@ -97,7 +96,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Your decision honours you. However, if you consider killing the poachers in question I ask you to halt. We, the fae, are rather peaceful beings and abhor bloodshed. Therefore, we must find another way to solve this problem. ...", "I already have an idea: Some birds told me that poachers are a superstitious lot. Perhaps we can get them with their own misbelief. I know that the poachers have a kind of camp north of the Green Claw Swamps. ...", - "Please search it out and examine it closely. Perhaps you will find something you can use against them in order to stop them from hunting white deer." + "Please search it out and examine it closely. Perhaps you will find something you can use against them in order to stop them from hunting white deer.", }, npc, creature) player:setStorageValue(ThreatenedDreams.QuestLine, 1) player:setStorageValue(ThreatenedDreams.Mission01[1], 1) @@ -106,7 +105,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say({ "I heard there is a problem with a wolf mother and her whelps. However, I don't know more about it. One of my sisters, Ikassis, has taken over the body of a snake. ...", - "She knows more about the wolf. Seek her out in the north-west of Edron, near a circle of standing stones." + "She knows more about the wolf. Seek her out in the north-west of Edron, near a circle of standing stones.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission01[1], 4) npcHandler:setTopic(playerId, 0) @@ -118,20 +117,19 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'deer' }, StdModule.say, { npcHandler = npcHandler, text = "Outside of our secret {realm} my siblings and I can't keep our true shape. If we want to travel other parts of the world, we must take over the bodies of animals. But we are causing them no harm and we just take control if necessary." }) -keywordHandler:addKeyword({ 'realm' }, StdModule.say, { npcHandler = npcHandler, text = "We call it Feyrist and it is a secret, hidden place. Just few mortals get permission to enter it. A long time ago, we learned how to hide our realm from the outside world. Only if you gain our trust I will tell you how to reach it." }) -keywordHandler:addKeyword({ 'siblings' }, StdModule.say, { npcHandler = npcHandler, text = "We call ourselves the fae. Some name us nature spirits or peri but we prefer the former term. Most of us are rather reclusive and live peaceful lives in our secret realm. We only leave it in order to {protect} our home. ..." }) -keywordHandler:addKeyword({ 'kind' }, StdModule.say, { npcHandler = npcHandler, text = "We call ourselves the fae. Some name us nature spirits or peri but we prefer the former term. Most of us are rather reclusive and live peaceful lives in our secret realm. We only leave it in order to {protect} our home. ..." }) -keywordHandler:addKeyword({ 'protect' }, StdModule.say, { npcHandler = npcHandler, text = "I can sense a kind of dark energy lately. It is pervading this world, more and more every day. Yet I don't know where it arises from nor what we could do to dispel it." }) -keywordHandler:addKeyword({ 'energy' }, StdModule.say, { npcHandler = npcHandler, text = "It is rather subversive, so most creatures won't sense it ... yet. But its corrosive power has already begun to affect my kind and our hidden realm in unpleasant ways." }) -keywordHandler:addKeyword({ 'fae' }, StdModule.say, { +keywordHandler:addKeyword({ "deer" }, StdModule.say, { npcHandler = npcHandler, text = "Outside of our secret {realm} my siblings and I can't keep our true shape. If we want to travel other parts of the world, we must take over the bodies of animals. But we are causing them no harm and we just take control if necessary." }) +keywordHandler:addKeyword({ "realm" }, StdModule.say, { npcHandler = npcHandler, text = "We call it Feyrist and it is a secret, hidden place. Just few mortals get permission to enter it. A long time ago, we learned how to hide our realm from the outside world. Only if you gain our trust I will tell you how to reach it." }) +keywordHandler:addKeyword({ "siblings" }, StdModule.say, { npcHandler = npcHandler, text = "We call ourselves the fae. Some name us nature spirits or peri but we prefer the former term. Most of us are rather reclusive and live peaceful lives in our secret realm. We only leave it in order to {protect} our home. ..." }) +keywordHandler:addKeyword({ "kind" }, StdModule.say, { npcHandler = npcHandler, text = "We call ourselves the fae. Some name us nature spirits or peri but we prefer the former term. Most of us are rather reclusive and live peaceful lives in our secret realm. We only leave it in order to {protect} our home. ..." }) +keywordHandler:addKeyword({ "protect" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense a kind of dark energy lately. It is pervading this world, more and more every day. Yet I don't know where it arises from nor what we could do to dispel it." }) +keywordHandler:addKeyword({ "energy" }, StdModule.say, { npcHandler = npcHandler, text = "It is rather subversive, so most creatures won't sense it ... yet. But its corrosive power has already begun to affect my kind and our hidden realm in unpleasant ways." }) +keywordHandler:addKeyword({ "fae" }, StdModule.say, { npcHandler = npcHandler, text = { - 'Some call us nature spirits or peri but we prefer the term fae. Most of us are rather reclusive and live peaceful lives in our secret realm. We only leave it in order to protect our home. ...', - 'We tend to be secretive about our true nature, but I guess there was once an elven sage who visited our realm and put his experiences down on paper. There might be a book about the fae in the library of Ab\'Dendriel.' - } -} -) + "Some call us nature spirits or peri but we prefer the term fae. Most of us are rather reclusive and live peaceful lives in our secret realm. We only leave it in order to protect our home. ...", + "We tend to be secretive about our true nature, but I guess there was once an elven sage who visited our realm and put his experiences down on paper. There might be a book about the fae in the library of Ab'Dendriel.", + }, +}) npcHandler:setMessage(MESSAGE_GREET, "Nature's blessing, traveller! |PLAYERNAME|!") npcHandler:setMessage(MESSAGE_FAREWELL, "May your path always be even.") diff --git a/data-otservbr-global/npc/allen.lua b/data-otservbr-global/npc/allen.lua index f7e5accb9bc..614e95b3132 100644 --- a/data-otservbr-global/npc/allen.lua +++ b/data-otservbr-global/npc/allen.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -90,7 +90,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/alternative_rock.lua b/data-otservbr-global/npc/alternative_rock.lua index 10a24e09fc0..26290f5ed0d 100644 --- a/data-otservbr-global/npc/alternative_rock.lua +++ b/data-otservbr-global/npc/alternative_rock.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 13414 + lookTypeEx = 13414, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passages to Tibia, Folda and Vega.' } + { text = "Passages to Tibia, Folda and Vega." }, } local keywordHandler = KeywordHandler:new() @@ -63,7 +63,7 @@ end --addTravelKeyword('folda', 'to Folda for |TRAVELCOST|?', 10, Position(32046, 31578, 7)) -- Basic -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'Find the Golden Anchor and click there, after talk with Navigator.' }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "Find the Golden Anchor and click there, after talk with Navigator." }) --keywordHandler:addKeyword({'job'}, StdModule.say, {npcHandler = npcHandler, text = 'I am the captain of this ship.'}) --keywordHandler:addKeyword({'captain'}, StdModule.say, {npcHandler = npcHandler, text = 'I am the captain of this ship.'}) diff --git a/data-otservbr-global/npc/alwin.lua b/data-otservbr-global/npc/alwin.lua index 4debc325d93..69feb973ec2 100644 --- a/data-otservbr-global/npc/alwin.lua +++ b/data-otservbr-global/npc/alwin.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 113, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/alyxo.lua b/data-otservbr-global/npc/alyxo.lua index 8209092a0d3..f8fd752ba48 100644 --- a/data-otservbr-global/npc/alyxo.lua +++ b/data-otservbr-global/npc/alyxo.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 330 + lookType = 330, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,8 +52,7 @@ local function greetCallback(npc, creature) if player:getStorageValue(Storage.Kilmaresh.First.Access) < 1 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) - and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then + elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 15) elseif player:getStorageValue(Storage.Kilmaresh.First.Mission) == 4 then @@ -195,7 +194,7 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 13 and player:getStorageValue(Storage.Kilmaresh.Thirteen.Fafnar) == 301 then if player:getStorageValue(Storage.Kilmaresh.Thirteen.Fafnar) == 301 then - player:addAchievement("Sculptor Apprentice", "Congratulations! You earned the achievement \"Sculptor Apprentice\".") + player:addAchievement("Sculptor Apprentice", 'Congratulations! You earned the achievement "Sculptor Apprentice".') player:addItem(31574, 1) npcHandler:say({ "Congratulations, you have completed the 3 jobs I gave you." }, npc, creature) -- needs review, this is not the speech of the global player:setStorageValue(Storage.Kilmaresh.Fourteen.Remains, 1) @@ -208,7 +207,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/amanda.lua b/data-otservbr-global/npc/amanda.lua index aa8161815a6..64cc34f79dc 100644 --- a/data-otservbr-global/npc/amanda.lua +++ b/data-otservbr-global/npc/amanda.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 95, lookLegs = 0, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,128 +51,154 @@ npcType.onCloseChannel = function(npc, creature) end -- Mission (Tibia Tales: Rest In Hallowed Ground) -local startMissionKeyword = keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, I would do it myself but I can\'t leave town for a longer time. Would you be so kind to bring me a vial of holy water from the White Raven Monastery?' }, function(player) return player:getStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline) == -1 end) -startMissionKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'I thank you a lot in advance. The power of the holy water from the White Raven Monastery is legendary. For my task it is indispensable. We talk about that when you get back.', reset = true }, nil, function(player) player:setStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline, 1) end) -startMissionKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s your decision. I will ask the next believing mind that visits the temple of Banor\'s blood.', reset = true }) +local startMissionKeyword = keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = "Well, I would do it myself but I can't leave town for a longer time. Would you be so kind to bring me a vial of holy water from the White Raven Monastery?" }, function(player) + return player:getStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline) == -1 +end) +startMissionKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "I thank you a lot in advance. The power of the holy water from the White Raven Monastery is legendary. For my task it is indispensable. We talk about that when you get back.", reset = true }, nil, function(player) + player:setStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline, 1) +end) +startMissionKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "It's your decision. I will ask the next believing mind that visits the temple of Banor's blood.", reset = true }) local function addMissionKeyword(text, value, newValue, addItem) - keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline) == value end, - function(player) - if newValue then - player:setStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline, newValue) - end - - if addItem then - player:addItem(892, 1) - end + keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline) == value + end, function(player) + if newValue then + player:setStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline, newValue) + end + + if addItem then + player:addItem(892, 1) end - ) + end) end -addMissionKeyword('First of all, you have to find a way to enter the Isle of the Kings and get some holy water from the White Raven Monastery.', 1) -addMissionKeyword('Have you heard about the unholy graveyard north of Edron? Go there and spill some holy water on every grave. Once you are done, come back to me.', 2, 3) -addMissionKeyword('I feel that the spirits have not come to a rest yet. There must still be some graves left to sanctify.', 3) -addMissionKeyword('I appreciate your help. May Banor be always on your side. Here, your reward is this package which contains five mana and five health potions.', 4, 5, true) +addMissionKeyword("First of all, you have to find a way to enter the Isle of the Kings and get some holy water from the White Raven Monastery.", 1) +addMissionKeyword("Have you heard about the unholy graveyard north of Edron? Go there and spill some holy water on every grave. Once you are done, come back to me.", 2, 3) +addMissionKeyword("I feel that the spirits have not come to a rest yet. There must still be some graves left to sanctify.", 3) +addMissionKeyword("I appreciate your help. May Banor be always on your side. Here, your reward is this package which contains five mana and five health potions.", 4, 5, true) -keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, text = 'Your mission here on Tibia is to be polite and friendly. The gods will reward you, I promise!' }) +keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = "Your mission here on Tibia is to be polite and friendly. The gods will reward you, I promise!" }) -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Amanda) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Amanda) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Amanda, 1) end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Wooden Stake -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'I think you have forgotten to bring your stake, my child.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 6 and player:getItemCount(5941) == 0 end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "I think you have forgotten to bring your stake, my child." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 6 and player:getItemCount(5941) == 0 +end) -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I was informed what to do. Are you prepared to receive my line of the prayer?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 6 end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive my prayer: \'Wicked curses shall be broken\'. Now, bring your stake to Kasmir in Darashia for the next line of the prayer. I will inform him what to do.', reset = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 7) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - end -) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'ll wait for you.', reset = true }) +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I was informed what to do. Are you prepared to receive my line of the prayer?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 6 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive my prayer: 'Wicked curses shall be broken'. Now, bring your stake to Kasmir in Darashia for the next line of the prayer. I will inform him what to do.", reset = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 7) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "I'll wait for you.", reset = true }) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You should visit Kasmir in Darashia now, my child.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 7 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You already received my line of the prayer.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 7 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'A blessed stake? That\'s a strange request. Maybe Quentin knows more, he is one of the oldest monks after all.' }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You should visit Kasmir in Darashia now, my child." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 7 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You already received my line of the prayer." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 7 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "A blessed stake? That's a strange request. Maybe Quentin knows more, he is one of the oldest monks after all." }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/amarie.lua b/data-otservbr-global/npc/amarie.lua index eeb1bd0a878..71060b0f599 100644 --- a/data-otservbr-global/npc/amarie.lua +++ b/data-otservbr-global/npc/amarie.lua @@ -15,17 +15,17 @@ npcConfig.outfit = { lookHead = 128, lookBody = 34, lookLegs = 28, - lookFeet = 116 + lookFeet = 116, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Please leave me alone... I have to study.' } + { text = "Please leave me alone... I have to study." }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/ambassador_of_rathleton.lua b/data-otservbr-global/npc/ambassador_of_rathleton.lua index 3c6119870c1..fa120c51941 100644 --- a/data-otservbr-global/npc/ambassador_of_rathleton.lua +++ b/data-otservbr-global/npc/ambassador_of_rathleton.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 53, lookLegs = 61, lookFeet = 3, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -28,7 +28,7 @@ npcConfig.voices = { chance = 50, { text = "What a beautiful palace. The Kilmareshians are highly skilful architects." }, { text = "The new treaty of amity and commerce with Kilmaresh is of utmost importance." }, - { text = "The pending freight from the saffron coasts is overdue." } + { text = "The pending freight from the saffron coasts is overdue." }, } local keywordHandler = KeywordHandler:new() @@ -58,28 +58,25 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword( - { "present" }, StdModule.say, { - npcHandler = npcHandler, - text = "This is a very beautiful ring. Thank you for this generous present!" - }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Third.Recovering) == 2 and player:getItemById(31263, true) end, - function(player) - player:removeItem(31263, 1) - player:setStorageValue(Storage.Kilmaresh.Fourth.Moe, 1) - player:setStorageValue(Storage.Kilmaresh.Third.Recovering, 3) - end -) - -keywordHandler:addKeyword( - { "present" }, StdModule.say, { - npcHandler = npcHandler, - text = "Didn't you bring my gift?" - }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Third.Recovering) == 2 end -) +keywordHandler:addKeyword({ "present" }, StdModule.say, { + npcHandler = npcHandler, + text = "This is a very beautiful ring. Thank you for this generous present!", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Third.Recovering) == 2 and player:getItemById(31263, true) +end, function(player) + player:removeItem(31263, 1) + player:setStorageValue(Storage.Kilmaresh.Fourth.Moe, 1) + player:setStorageValue(Storage.Kilmaresh.Third.Recovering, 3) +end) + +keywordHandler:addKeyword({ "present" }, StdModule.say, { + npcHandler = npcHandler, + text = "Didn't you bring my gift?", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Third.Recovering) == 2 +end) npcHandler:setMessage(MESSAGE_GREET, "Greetings, friend.") -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/amber.lua b/data-otservbr-global/npc/amber.lua index d82283fcd4c..335f5dea332 100644 --- a/data-otservbr-global/npc/amber.lua +++ b/data-otservbr-global/npc/amber.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 132, lookFeet = 76, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -30,7 +30,7 @@ npcConfig.voices = { { text = "Wow, I'm tired. I really should get some sleep... zzzz." }, { text = "What was that word again in Orcish language... hmm." }, { text = "Hey you! Are you an adventurer, too?" }, - { text = " Stormy weathers, stormy weathers... stormy weathers on the sea!" } + { text = " Stormy weathers, stormy weathers... stormy weathers on the sea!" }, } local keywordHandler = KeywordHandler:new() @@ -69,15 +69,17 @@ local function creatureSayCallback(npc, creature, type, message) end local addonProgress = player:getStorageValue(Storage.OutfitQuest.Citizen.AddonBackpack) - if MsgContains(message, "addon") or MsgContains(message, "outfit") - or (addonProgress == 1 and MsgContains(message, "leather")) - or ((addonProgress == 1 or addonProgress == 2) and MsgContains(message, "backpack")) then + if MsgContains(message, "addon") or MsgContains(message, "outfit") or (addonProgress == 1 and MsgContains(message, "leather")) or ((addonProgress == 1 or addonProgress == 2) and MsgContains(message, "backpack")) then if addonProgress < 1 then npcHandler:say("Sorry, the backpack I wear is not for sale. It's handmade from rare minotaur leather.", npc, creature) npcHandler:setTopic(playerId, 1) elseif addonProgress == 1 then - npcHandler:say("Ah, right, almost forgot about the backpack! \z - Have you brought me 100 pieces of minotaur leather as requested?", npc, creature) + npcHandler:say( + "Ah, right, almost forgot about the backpack! \z + Have you brought me 100 pieces of minotaur leather as requested?", + npc, + creature + ) npcHandler:setTopic(playerId, 3) elseif addonProgress == 2 then if player:getStorageValue(Storage.OutfitQuest.Citizen.AddonBackpackTimer) < os.time() then @@ -90,21 +92,33 @@ local function creatureSayCallback(npc, creature, type, message) player:addOutfitAddon(136, 1) player:addOutfitAddon(128, 1) else - npcHandler:say("Uh... I didn't expect you to return that early. \z + npcHandler:say( + "Uh... I didn't expect you to return that early. \z Sorry, but I'm not finished yet with your backpack. \z - I'm doing the best I can, promised.", npc, creature) + I'm doing the best I can, promised.", + npc, + creature + ) end elseif addonProgress == 3 then - npcHandler:say("Sorry, but I can only make one backpack per person, \z - else I'd have to close my shop and open a leather manufactory.", npc, creature) + npcHandler:say( + "Sorry, but I can only make one backpack per person, \z + else I'd have to close my shop and open a leather manufactory.", + npc, + creature + ) end return true end if npcHandler:getTopic(playerId) == 1 then if MsgContains(message, "backpack") or MsgContains(message, "minotaur") or MsgContains(message, "leather") then - npcHandler:say("Well, if you really like this backpack, I could make one for you, \z - but minotaur leather is hard to come by these days. Are you willing to put some work into this?", npc, creature) + npcHandler:say( + "Well, if you really like this backpack, I could make one for you, \z + but minotaur leather is hard to come by these days. Are you willing to put some work into this?", + npc, + creature + ) npcHandler:setTopic(playerId, 2) end elseif npcHandler:getTopic(playerId) == 2 then @@ -112,8 +126,12 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.Ref, math.max(0, player:getStorageValue(Storage.OutfitQuest.Ref)) + 1) player:setStorageValue(Storage.OutfitQuest.Citizen.AddonBackpack, 1) player:setStorageValue(Storage.OutfitQuest.Citizen.MissionBackpack, 1) - npcHandler:say("Alright then, if you bring me 100 pieces of fine minotaur leather I will \z - see what I can do for you. You probably have to kill really many minotaurs though... so good luck!", npc, creature) + npcHandler:say( + "Alright then, if you bring me 100 pieces of fine minotaur leather I will \z + see what I can do for you. You probably have to kill really many minotaurs though... so good luck!", + npc, + creature + ) npcHandler:removeInteraction(npc, creature) else npcHandler:say("Sorry, but I don't run a welfare office, you know... no pain, no gain.", npc, creature) @@ -122,8 +140,12 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 3 then if MsgContains(message, "yes") then if player:getItemCount(5878) < 100 then - npcHandler:say("Sorry, but that's not enough leather yet to make one of these backpacks. \z - Would you rather like to buy a normal backpack for 10 gold?", npc, creature) + npcHandler:say( + "Sorry, but that's not enough leather yet to make one of these backpacks. \z + Would you rather like to buy a normal backpack for 10 gold?", + npc, + creature + ) else npcHandler:say("Great! Alright, I need a while to finish this backpack for you. Come ask me later, okay?", npc, creature) @@ -134,9 +156,13 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.Citizen.AddonBackpackTimer, os.time() + 2 * 60 * 60) end else - npcHandler:say("I know, it's quite some work... don't lose heart, \z + npcHandler:say( + "I know, it's quite some work... don't lose heart, \z just keep killing minotaurs and you'll eventually get lucky. \z - Would you rather like to buy a normal backpack for 10 gold?", npc, creature) + Would you rather like to buy a normal backpack for 10 gold?", + npc, + creature + ) end npcHandler:setTopic(playerId, 0) end @@ -144,463 +170,328 @@ end -- Basic keywords keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm recovering from a {sea} passage." - } -) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm an {explorer} who seeks {adventures}." - } -) -keywordHandler:addKeyword({ "explore" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I've been almost everywhere in {Tibia}." - } -) -keywordHandler:addKeyword({ "adventure" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I fought fierce {monsters}, climbed the highest mountains, explored the deepest {dungeons} \z - and crossed the {sea} on a {raft}." - } -) -keywordHandler:addKeyword({ "sea" }, StdModule.say, - { - npcHandler = npcHandler, - text = "My voyage on the sea was exhausting. \z +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm recovering from a {sea} passage.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm an {explorer} who seeks {adventures}.", +}) +keywordHandler:addKeyword({ "explore" }, StdModule.say, { + npcHandler = npcHandler, + text = "I've been almost everywhere in {Tibia}.", +}) +keywordHandler:addKeyword({ "adventure" }, StdModule.say, { + npcHandler = npcHandler, + text = "I fought fierce {monsters}, climbed the highest mountains, explored the deepest {dungeons} \z + and crossed the {sea} on a {raft}.", +}) +keywordHandler:addKeyword({ "sea" }, StdModule.say, { + npcHandler = npcHandler, + text = "My voyage on the sea was exhausting. \z The weather was bad, the waves high and my raft quite simple. \z - There's a certain excitement to it, though." - } -) -keywordHandler:addKeyword({ "time" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Sorry, I lost my watch in a storm." - } -) -keywordHandler:addKeyword({ "help" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, I can give you general {hints} or tell you about my {adventures} and many other topics. \z - Oh, and if you are bored, I might have a small {quest} for you." - } -) -keywordHandler:addKeyword({ "information" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, I can give you general {hints} or tell you about my {adventures} and many other topics. \z - Oh, and if you are bored, I might have a small {quest} for you." - } -) -keywordHandler:addKeyword({ "dungeon" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I had no time to explore the dungeons of this isle yet, \z + There's a certain excitement to it, though.", +}) +keywordHandler:addKeyword({ "time" }, StdModule.say, { + npcHandler = npcHandler, + text = "Sorry, I lost my watch in a storm.", +}) +keywordHandler:addKeyword({ "help" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, I can give you general {hints} or tell you about my {adventures} and many other topics. \z + Oh, and if you are bored, I might have a small {quest} for you.", +}) +keywordHandler:addKeyword({ "information" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, I can give you general {hints} or tell you about my {adventures} and many other topics. \z + Oh, and if you are bored, I might have a small {quest} for you.", +}) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { + npcHandler = npcHandler, + text = "I had no time to explore the dungeons of this isle yet, \z but I've seen two big caves in the East, and there is a ruined tower to the north-west. \z - Oh, and there're the {sewers}." - } -) -keywordHandler:addKeyword({ "sewer" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I like sewers. I made my very first battle experience in the sewers below {Thais}. \z - The small sewer system of {Rookgaard} has some nasty rats to fight." - } -) -keywordHandler:addKeyword({ "monster" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Oh, I fought {orcs}, {cyclopses}, {minotaurs}, even {dragons}, and many other creatures." - } -) -keywordHandler:addKeyword({ "cyclops" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I don't like the way they look at you. Their eye seems to pierce right through you. Creepy!" - } -) -keywordHandler:addKeyword({ "minotaur" }, StdModule.say, - { - npcHandler = npcHandler, - text = "They are nasty monsters, particularly as they have distance fighters and mages in their clans. \z - My {backpack} is handmade from minotaur leather." - } -) -keywordHandler:addKeyword({ "dragon" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Their breath is so hot! I had to cut my hair after my last encounter with \z - a dragon because the ends were all burnt. That's what you gotta deal with as a female adventurer!" - } -) -keywordHandler:addKeyword({ "raft" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I left my raft at the south-eastern shore. I forgot my private {notebook} on it. \z - If you could return it to me, I would be very grateful." - } -) -keywordHandler:addKeyword({ "quest" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I left my raft at the south-eastern shore. I forgot my private {notebook} on it. \z - If you could return it to me, I would be very grateful." - } -) -keywordHandler:addKeyword({ "mission" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I left my raft at the south-eastern shore. I forgot my private {notebook} on it. \z - If you could return it to me, I would be very grateful." - } -) -keywordHandler:addKeyword({ "seymour" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I think this poor guy was a bad choice as head of the {academy}." - } -) -keywordHandler:addKeyword({ "academy" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A fine institution, but it needs definitely more funds from the {king}." - } -) -keywordHandler:addKeyword({ "king" }, StdModule.say, - { - npcHandler = npcHandler, - text = "King Tibianus is the ruler of {Thais}. The island of {Rookgaard} belongs to his kingdom." - } -) -keywordHandler:addKeyword({ "thais" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A fine city, but the {king} has some problems enforcing the law." - } -) -keywordHandler:addKeyword({ "weapon" }, StdModule.say, - { - npcHandler = npcHandler, - text = "The best weapons on this isle are just toothpicks \z - compared with the weapons warriors wield on the {mainland}." - } -) -keywordHandler:addKeyword({ "magic" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Spells are only taught in the guildhalls of the mainland." - } -) -keywordHandler:addKeyword({ "tibia" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm trying to explore each spot of Tibia, and one day I'll have seen it all." - } -) -keywordHandler:addKeyword({ "castle" }, StdModule.say, - { - npcHandler = npcHandler, - text = "If you travel to Thais, you really should visit the marvelous castle there." - } -) -keywordHandler:addKeyword({ "mainland" }, StdModule.say, - { - npcHandler = npcHandler, - text = "You'll be surprised once you leave this island. The world outside there is gigantic." - } -) -keywordHandler:addKeyword({ "tools" }, StdModule.say, - { - npcHandler = npcHandler, - text = "The most important tools you need are a {rope}, a {shovel} and maybe a {torch}." - } -) -keywordHandler:addKeyword({ "rope" }, StdModule.say, - { - npcHandler = npcHandler, - text = "One day I fell into a hole without having a rope. I was yelling for help for three whole days! \z - Eventually a fisherman passed by and pulled me out with his own rope, lucky me." - } -) -keywordHandler:addKeyword({ "shovel" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Sometimes I have the strong urge to use it to knock someone out." - } -) -keywordHandler:addKeyword({ "torch" }, StdModule.say, - { - npcHandler = npcHandler, - text = "You know, on mainland you will be able to cast magic spells which provide you with light. \z - You won't really need torches anymore." - } -) -keywordHandler:addKeyword({ "bank" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I have almost no money with me anyway, so no need to deposit any at the bank." - } -) -keywordHandler:addKeyword({ "destiny" }, StdModule.say, - { - npcHandler = npcHandler, - text = "You will find your destiny. I'm sure it's something big and important." - } -) -keywordHandler:addKeyword({ "academy" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A fine institution, but it needs definitely more funds from the {king}." - } -) -keywordHandler:addKeyword({ "trade" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Oh, I'm sorry, but I'm not interested in buying or selling anything." - } -) -keywordHandler:addKeyword({ "premium" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I wouldn't want to miss being a premium adventurer. Everything is so much easier!" - } -) + Oh, and there're the {sewers}.", +}) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { + npcHandler = npcHandler, + text = "I like sewers. I made my very first battle experience in the sewers below {Thais}. \z + The small sewer system of {Rookgaard} has some nasty rats to fight.", +}) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { + npcHandler = npcHandler, + text = "Oh, I fought {orcs}, {cyclopses}, {minotaurs}, even {dragons}, and many other creatures.", +}) +keywordHandler:addKeyword({ "cyclops" }, StdModule.say, { + npcHandler = npcHandler, + text = "I don't like the way they look at you. Their eye seems to pierce right through you. Creepy!", +}) +keywordHandler:addKeyword({ "minotaur" }, StdModule.say, { + npcHandler = npcHandler, + text = "They are nasty monsters, particularly as they have distance fighters and mages in their clans. \z + My {backpack} is handmade from minotaur leather.", +}) +keywordHandler:addKeyword({ "dragon" }, StdModule.say, { + npcHandler = npcHandler, + text = "Their breath is so hot! I had to cut my hair after my last encounter with \z + a dragon because the ends were all burnt. That's what you gotta deal with as a female adventurer!", +}) +keywordHandler:addKeyword({ "raft" }, StdModule.say, { + npcHandler = npcHandler, + text = "I left my raft at the south-eastern shore. I forgot my private {notebook} on it. \z + If you could return it to me, I would be very grateful.", +}) +keywordHandler:addKeyword({ "quest" }, StdModule.say, { + npcHandler = npcHandler, + text = "I left my raft at the south-eastern shore. I forgot my private {notebook} on it. \z + If you could return it to me, I would be very grateful.", +}) +keywordHandler:addKeyword({ "mission" }, StdModule.say, { + npcHandler = npcHandler, + text = "I left my raft at the south-eastern shore. I forgot my private {notebook} on it. \z + If you could return it to me, I would be very grateful.", +}) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { + npcHandler = npcHandler, + text = "I think this poor guy was a bad choice as head of the {academy}.", +}) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { + npcHandler = npcHandler, + text = "A fine institution, but it needs definitely more funds from the {king}.", +}) +keywordHandler:addKeyword({ "king" }, StdModule.say, { + npcHandler = npcHandler, + text = "King Tibianus is the ruler of {Thais}. The island of {Rookgaard} belongs to his kingdom.", +}) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { + npcHandler = npcHandler, + text = "A fine city, but the {king} has some problems enforcing the law.", +}) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { + npcHandler = npcHandler, + text = "The best weapons on this isle are just toothpicks \z + compared with the weapons warriors wield on the {mainland}.", +}) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { + npcHandler = npcHandler, + text = "Spells are only taught in the guildhalls of the mainland.", +}) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm trying to explore each spot of Tibia, and one day I'll have seen it all.", +}) +keywordHandler:addKeyword({ "castle" }, StdModule.say, { + npcHandler = npcHandler, + text = "If you travel to Thais, you really should visit the marvelous castle there.", +}) +keywordHandler:addKeyword({ "mainland" }, StdModule.say, { + npcHandler = npcHandler, + text = "You'll be surprised once you leave this island. The world outside there is gigantic.", +}) +keywordHandler:addKeyword({ "tools" }, StdModule.say, { + npcHandler = npcHandler, + text = "The most important tools you need are a {rope}, a {shovel} and maybe a {torch}.", +}) +keywordHandler:addKeyword({ "rope" }, StdModule.say, { + npcHandler = npcHandler, + text = "One day I fell into a hole without having a rope. I was yelling for help for three whole days! \z + Eventually a fisherman passed by and pulled me out with his own rope, lucky me.", +}) +keywordHandler:addKeyword({ "shovel" }, StdModule.say, { + npcHandler = npcHandler, + text = "Sometimes I have the strong urge to use it to knock someone out.", +}) +keywordHandler:addKeyword({ "torch" }, StdModule.say, { + npcHandler = npcHandler, + text = "You know, on mainland you will be able to cast magic spells which provide you with light. \z + You won't really need torches anymore.", +}) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { + npcHandler = npcHandler, + text = "I have almost no money with me anyway, so no need to deposit any at the bank.", +}) +keywordHandler:addKeyword({ "destiny" }, StdModule.say, { + npcHandler = npcHandler, + text = "You will find your destiny. I'm sure it's something big and important.", +}) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { + npcHandler = npcHandler, + text = "A fine institution, but it needs definitely more funds from the {king}.", +}) +keywordHandler:addKeyword({ "trade" }, StdModule.say, { + npcHandler = npcHandler, + text = "Oh, I'm sorry, but I'm not interested in buying or selling anything.", +}) +keywordHandler:addKeyword({ "premium" }, StdModule.say, { + npcHandler = npcHandler, + text = "I wouldn't want to miss being a premium adventurer. Everything is so much easier!", +}) -- Names -keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I don't have much to say about him. I think he sells {tools}." - } -) -keywordHandler:addKeyword({ "loui" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Never seen him around." - } -) -keywordHandler:addKeyword({ "zirella" }, StdModule.say, - { - npcHandler = npcHandler, - text = "She seriously asked me if she could have the remains of my {raft} as fire wood! Can you imagine that??" - } -) -keywordHandler:addKeyword({ "santiago" }, StdModule.say, - { - npcHandler = npcHandler, - text = "He promised to repair my {raft}." - } -) -keywordHandler:addKeyword({ "amber" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Did you know my name is also the name of a gem?" - } -) -keywordHandler:addKeyword({ "tom" }, StdModule.say, - { - npcHandler = npcHandler, - text = "To me he seems a bit rude, but maybe that's just my impression." - } -) -keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I heard her offers are extraordinarily good." - } -) -keywordHandler:addKeyword({ "oracle" }, StdModule.say, - { - npcHandler = npcHandler, - text = "The oracle is said to show you your {destiny} once you are level 8." - } -) -keywordHandler:addKeyword({ "norma" }, StdModule.say, - { - npcHandler = npcHandler, - text = "She has changed a lot since I last saw her." - } -) -keywordHandler:addKeyword({ "seymour" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I think this poor guy was a bad choice as head of the {academy}." - } -) -keywordHandler:addKeyword({ "lily" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Hm, I think I haven't met her yet." - } -) -keywordHandler:addKeyword({ "billy" }, StdModule.say, - { - npcHandler = npcHandler, - text = "He brought me some of his famous rat stew. I really didn't want to insult him, \z - but I simply can't eat something like that. So I told him I'm a vegetarian and I only eat fish. " - } -) -keywordHandler:addKeyword({ "willie" }, StdModule.say, - { - npcHandler = npcHandler, - text = "He's funny in his own way." - } -) -keywordHandler:addKeyword({ "paulie" }, StdModule.say, - { - npcHandler = npcHandler, - text = "No, I didn't go to the {bank} yet." - } -) -keywordHandler:addKeyword({ "cipfried" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A gentle person. You should visit him if you have questions or need healing." - } -) -keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Hyacinth is a great healer. He lives somewhere hidden on this isle." - } -) -keywordHandler:addKeyword({ "obi" }, StdModule.say, - { - npcHandler = npcHandler, - text = "He's a funny little man." - } -) -keywordHandler:addKeyword({ "dixi" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I don't really know her, but she seems to be a nice girl." - } -) -keywordHandler:addKeyword({ "zerbrus" }, StdModule.say, - { - npcHandler = npcHandler, - text = "An extraordinary warrior. He's the first and last line of defense of {Rookgaard}." - } -) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { + npcHandler = npcHandler, + text = "I don't have much to say about him. I think he sells {tools}.", +}) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { + npcHandler = npcHandler, + text = "Never seen him around.", +}) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { + npcHandler = npcHandler, + text = "She seriously asked me if she could have the remains of my {raft} as fire wood! Can you imagine that??", +}) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { + npcHandler = npcHandler, + text = "He promised to repair my {raft}.", +}) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { + npcHandler = npcHandler, + text = "Did you know my name is also the name of a gem?", +}) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { + npcHandler = npcHandler, + text = "To me he seems a bit rude, but maybe that's just my impression.", +}) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { + npcHandler = npcHandler, + text = "I heard her offers are extraordinarily good.", +}) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { + npcHandler = npcHandler, + text = "The oracle is said to show you your {destiny} once you are level 8.", +}) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { + npcHandler = npcHandler, + text = "She has changed a lot since I last saw her.", +}) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { + npcHandler = npcHandler, + text = "I think this poor guy was a bad choice as head of the {academy}.", +}) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { + npcHandler = npcHandler, + text = "Hm, I think I haven't met her yet.", +}) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { + npcHandler = npcHandler, + text = "He brought me some of his famous rat stew. I really didn't want to insult him, \z + but I simply can't eat something like that. So I told him I'm a vegetarian and I only eat fish. ", +}) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { + npcHandler = npcHandler, + text = "He's funny in his own way.", +}) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { + npcHandler = npcHandler, + text = "No, I didn't go to the {bank} yet.", +}) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { + npcHandler = npcHandler, + text = "A gentle person. You should visit him if you have questions or need healing.", +}) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { + npcHandler = npcHandler, + text = "Hyacinth is a great healer. He lives somewhere hidden on this isle.", +}) +keywordHandler:addKeyword({ "obi" }, StdModule.say, { + npcHandler = npcHandler, + text = "He's a funny little man.", +}) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { + npcHandler = npcHandler, + text = "I don't really know her, but she seems to be a nice girl.", +}) +keywordHandler:addKeyword({ "zerbrus" }, StdModule.say, { + npcHandler = npcHandler, + text = "An extraordinary warrior. He's the first and last line of defense of {Rookgaard}.", +}) keywordHandler:addAliasKeyword({ "dallheim" }) -- Orc language -keywordHandler:addKeyword({ "orc" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Not the nicest guys you can encounter. \z - I had some clashes with them and finally ended up being their {prisoner} for a few months." - } -) -local prisonerKeyword = keywordHandler:addKeyword({ "prisoner" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I speak some Orcish words, not many though, just a few basics like '{yes}' and '{no}'." - } -) -prisonerKeyword:addChildKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "It's 'mok' in Orcish. I tell you more if you bring me some {food}.", - reset = true - } -) -prisonerKeyword:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In Orcish that's 'burp'. I tell you more if you bring me some {food}.", - reset = true - } -) +keywordHandler:addKeyword({ "orc" }, StdModule.say, { + npcHandler = npcHandler, + text = "Not the nicest guys you can encounter. \z + I had some clashes with them and finally ended up being their {prisoner} for a few months.", +}) +local prisonerKeyword = keywordHandler:addKeyword({ "prisoner" }, StdModule.say, { + npcHandler = npcHandler, + text = "I speak some Orcish words, not many though, just a few basics like '{yes}' and '{no}'.", +}) +prisonerKeyword:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "It's 'mok' in Orcish. I tell you more if you bring me some {food}.", + reset = true, +}) +prisonerKeyword:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "In Orcish that's 'burp'. I tell you more if you bring me some {food}.", + reset = true, +}) keywordHandler:addAliasKeyword({ "language" }) -- Food (Salmon) -keywordHandler:addKeyword({ "food" }, StdModule.say, - { - npcHandler = npcHandler, - text = "My favorite dish is {salmon}. Oh please, bring me some." - } -) -local salmonKeyword = keywordHandler:addKeyword({ "salmon" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Yeah! If you give me some salmon, I'll tell you another Orcish word. Okay?" - } -) -salmonKeyword:addChildKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Thank you. Orcs call arrows 'pixo'.", - reset = true - }, - function(player) - return player:getItemCount(3579) > 0 - end, - function(player) - player:removeItem(3579, 1) - end -) -salmonKeyword:addChildKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "You don't have any salmon!", - reset = true - } -) -salmonKeyword:addChildKeyword({ "" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ok, then I won't tell you another Orcish word.", - reset = true - } -) +keywordHandler:addKeyword({ "food" }, StdModule.say, { + npcHandler = npcHandler, + text = "My favorite dish is {salmon}. Oh please, bring me some.", +}) +local salmonKeyword = keywordHandler:addKeyword({ "salmon" }, StdModule.say, { + npcHandler = npcHandler, + text = "Yeah! If you give me some salmon, I'll tell you another Orcish word. Okay?", +}) +salmonKeyword:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Thank you. Orcs call arrows 'pixo'.", + reset = true, +}, function(player) + return player:getItemCount(3579) > 0 +end, function(player) + player:removeItem(3579, 1) +end) +salmonKeyword:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "You don't have any salmon!", + reset = true, +}) +salmonKeyword:addChildKeyword({ "" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ok, then I won't tell you another Orcish word.", + reset = true, +}) -- Logbook Quest -local bookKeyword = keywordHandler:addKeyword({ "book" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Do you bring me my notebook?" - } -) -bookKeyword:addChildKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Excellent. Here, take this short sword as a reward.", - reset = true - }, - function(player) - return player:getItemCount(2821) > 0 - end, - function(player) - player:addItem(3294, 1) - player:removeItem(2821, 1) - end -) -bookKeyword:addChildKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Mhm, whatever you have there, it is not my notebook.", - reset = true - } -) -bookKeyword:addChildKeyword({ "" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Too bad.", - reset = true - } -) +local bookKeyword = keywordHandler:addKeyword({ "book" }, StdModule.say, { + npcHandler = npcHandler, + text = "Do you bring me my notebook?", +}) +bookKeyword:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Excellent. Here, take this short sword as a reward.", + reset = true, +}, function(player) + return player:getItemCount(2821) > 0 +end, function(player) + player:addItem(3294, 1) + player:removeItem(2821, 1) +end) +bookKeyword:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Mhm, whatever you have there, it is not my notebook.", + reset = true, +}) +bookKeyword:addChildKeyword({ "" }, StdModule.say, { + npcHandler = npcHandler, + text = "Too bad.", + reset = true, +}) keywordHandler:addAliasKeyword({ "notebook" }) npcHandler:setMessage(MESSAGE_WALKAWAY, "Yeah, see you later.") npcHandler:setMessage(MESSAGE_FAREWELL, "See you later, |PLAYERNAME|.") -npcHandler:setMessage(MESSAGE_GREET, "Oh hello, nice to see you |PLAYERNAME|. \z - Are you here to hear some stories of my {adventures} or do you need {help}?") +npcHandler:setMessage( + MESSAGE_GREET, + "Oh hello, nice to see you |PLAYERNAME|. \z + Are you here to hear some stories of my {adventures} or do you need {help}?" +) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/amra.lua b/data-otservbr-global/npc/amra.lua index a5cc8b4e90d..4493c46d544 100644 --- a/data-otservbr-global/npc/amra.lua +++ b/data-otservbr-global/npc/amra.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 62, lookLegs = 0, lookFeet = 79, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,7 +55,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -66,7 +66,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/an_ancient_priest.lua b/data-otservbr-global/npc/an_ancient_priest.lua index ef61843e8f9..e1f1c3a7802 100644 --- a/data-otservbr-global/npc/an_ancient_priest.lua +++ b/data-otservbr-global/npc/an_ancient_priest.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 65 + lookType = 65, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/an_apparition.lua b/data-otservbr-global/npc/an_apparition.lua index 2f0973a5d02..35c3579f680 100644 --- a/data-otservbr-global/npc/an_apparition.lua +++ b/data-otservbr-global/npc/an_apparition.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 48 + lookType = 48, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/an_imprisoned_goblin.lua b/data-otservbr-global/npc/an_imprisoned_goblin.lua index 2c565ee9009..44cc192ae06 100644 --- a/data-otservbr-global/npc/an_imprisoned_goblin.lua +++ b/data-otservbr-global/npc/an_imprisoned_goblin.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 61 + lookType = 61, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/an_old_dragon_lord.lua b/data-otservbr-global/npc/an_old_dragon_lord.lua index 642cc3db5c0..1edc28f6c6b 100644 --- a/data-otservbr-global/npc/an_old_dragon_lord.lua +++ b/data-otservbr-global/npc/an_old_dragon_lord.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 39 + lookType = 39, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'AHHHH THE PAIN OF AGESSS! THE PAIN!' } + { text = "AHHHH THE PAIN OF AGESSS! THE PAIN!" }, } local keywordHandler = KeywordHandler:new() @@ -36,8 +36,8 @@ npcType.onDisappear = function(npc, creature) end npcType.onSay = function(npc, creature, type, message) - if not (MsgContains(message, 'hi') or MsgContains(message, 'hello')) then - npcHandler:say('LEAVE THE DRAGONS\' CEMETERY AT ONCE!', npc, creature) + if not (MsgContains(message, "hi") or MsgContains(message, "hello")) then + npcHandler:say("LEAVE THE DRAGONS' CEMETERY AT ONCE!", npc, creature) end npcHandler:onSay(npc, creature, type, message) end @@ -59,18 +59,18 @@ local function greetCallback(npc, creature) local playerId = player:getId() if player:getStorageValue(Storage.Dragonfetish) == 1 then - npcHandler:say('LEAVE THE DRAGONS\' CEMETERY AT ONCE!', npc, creature) + npcHandler:say("LEAVE THE DRAGONS' CEMETERY AT ONCE!", npc, creature) return false end if not player:removeItem(3723, 1) then - npcHandler:say('AHHHH THE PAIN OF AGESSS! I NEED MUSSSSHRROOOMSSS TO EASSSE MY PAIN! BRRRING ME MUSHRRROOOMSSS!', npc, creature) + npcHandler:say("AHHHH THE PAIN OF AGESSS! I NEED MUSSSSHRROOOMSSS TO EASSSE MY PAIN! BRRRING ME MUSHRRROOOMSSS!", npc, creature) return false end player:setStorageValue(Storage.Dragonfetish, 1) player:addItem(3206, 1) - npcHandler:say('AHHH MUSHRRROOOMSSS! NOW MY PAIN WILL BE EASSSED FOR A WHILE! TAKE THISS AND LEAVE THE DRAGONSSS\' CEMETERY AT ONCE!', npc, creature) + npcHandler:say("AHHH MUSHRRROOOMSSS! NOW MY PAIN WILL BE EASSSED FOR A WHILE! TAKE THISS AND LEAVE THE DRAGONSSS' CEMETERY AT ONCE!", npc, creature) return false end diff --git a/data-otservbr-global/npc/an_orc_guard.lua b/data-otservbr-global/npc/an_orc_guard.lua index ef7f2123220..c7a55359bc9 100644 --- a/data-otservbr-global/npc/an_orc_guard.lua +++ b/data-otservbr-global/npc/an_orc_guard.lua @@ -11,18 +11,18 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 7 + lookType = 7, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Grrrr.' }, - { text = 'Fetchi maruk buta.' } + { text = "Grrrr." }, + { text = "Fetchi maruk buta." }, } local keywordHandler = KeywordHandler:new() @@ -52,5 +52,4 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/anderson.lua b/data-otservbr-global/npc/anderson.lua index 8134c117bb5..ca32ad38cbd 100644 --- a/data-otservbr-global/npc/anderson.lua +++ b/data-otservbr-global/npc/anderson.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 105, lookFeet = 86, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passages to Tibia, Folda and Vega.' } + { text = "Passages to Tibia, Folda and Vega." }, } local keywordHandler = KeywordHandler:new() @@ -58,31 +58,25 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, - { - npcHandler = npcHandler, - text = "Do you want a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", - cost = cost, - discount = "postman" - } - ) - travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, - { - npcHandler = npcHandler, - text = "Have a nice trip!", - premium = false, - cost = cost, - discount = "postman", - destination = destination - } - ) - travelKeyword:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "You shouldn't miss the experience.", - reset = true - } - ) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { + npcHandler = npcHandler, + text = "Do you want a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", + cost = cost, + discount = "postman", + }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { + npcHandler = npcHandler, + text = "Have a nice trip!", + premium = false, + cost = cost, + discount = "postman", + destination = destination, + }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "You shouldn't miss the experience.", + reset = true, + }) end addTravelKeyword("tibia", 0, { x = 32235, y = 31674, z = 7 }) @@ -90,24 +84,18 @@ addTravelKeyword("vega", 20, { x = 32020, y = 31692, z = 7 }) addTravelKeyword("folda", 20, { x = 32046, y = 31578, z = 7 }) -- Basic -keywordHandler:addKeyword({ "passage" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Where do you want to go today? We serve the routes to Senja, {Folda} and {Vega} and back to {Tibia}." - } -) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "We are ferrymen. We transport goods and passengers to the Ice Islands." - } -) -keywordHandler:addKeyword({ "captain" }, StdModule.say, - { - npcHandler = npcHandler, - text = "We are ferrymen. We transport goods and passengers to the Ice Islands." - } -) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { + npcHandler = npcHandler, + text = "Where do you want to go today? We serve the routes to Senja, {Folda} and {Vega} and back to {Tibia}.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "We are ferrymen. We transport goods and passengers to the Ice Islands.", +}) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { + npcHandler = npcHandler, + text = "We are ferrymen. We transport goods and passengers to the Ice Islands.", +}) npcHandler:setMessage(MESSAGE_GREET, "Ahoi, young man |PLAYERNAME| and welcome to the Nordic Tibia Ferries. If you need a {passage}, let me know.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. You are welcome.") diff --git a/data-otservbr-global/npc/andrew_lyze.lua b/data-otservbr-global/npc/andrew_lyze.lua index b49d16e8ab4..4bd6d3336ab 100644 --- a/data-otservbr-global/npc/andrew_lyze.lua +++ b/data-otservbr-global/npc/andrew_lyze.lua @@ -16,14 +16,14 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 75, lookFeet = 58, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { - { itemName = "broken compass", clientId = 25746, buy = 10000 } + { itemName = "broken compass", clientId = 25746, buy = 10000 }, } -- On buy npc shop message @@ -35,8 +35,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -77,7 +76,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Well, a while ago powerful magic devices were used all around Tibia. These are chargeable compasses. There was but one problem: they offered the possibility to make people rich in a quite easy way. ...", "Therefore, these instruments were very coveted. People tried to get their hands on them at all costs. And so it happened what everybody feared - bloody battles forged ahead. ...", - "To put an end to these cruel escalations, eventually all of the devices were collected and destroyed. The remains were buried {deep} in the earth." + "To put an end to these cruel escalations, eventually all of the devices were collected and destroyed. The remains were buried {deep} in the earth.", }, npc, creature, 10) npcHandler:setTopic(playerId, 0) elseif MsgContains(message, "deep") then @@ -93,7 +92,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Only in the cave down there you will find the materials you need to repair the compass. Now you know why the entrance is sealed. There's the seal, but I have a deal for you: ...", "I can repair the compass for you if you deliver what I need. Besides the broken compass you have to bring me the following materials: 50 blue glas plates, 15 green glas plates and 5 violet glas plates. ...", - "They all can be found in this closed cave in front of you. I should have destroyed this seal key but things have changed. The entrance is opened now, go down and do what has to be done." }, npc, creature, 10) + "They all can be found in this closed cave in front of you. I should have destroyed this seal key but things have changed. The entrance is opened now, go down and do what has to be done.", + }, npc, creature, 10) npcHandler:setTopic(playerId, 2) elseif MsgContains(message, "down") then npcHandler:say("On first glance, this cave does not look very spectacular, but the things you find in there, are. You have to know that this is the only place where you can find the respective materials to build the {compass}.", npc, creature) diff --git a/data-otservbr-global/npc/anerui.lua b/data-otservbr-global/npc/anerui.lua index 799ca80f5a5..5e046ad9c98 100644 --- a/data-otservbr-global/npc/anerui.lua +++ b/data-otservbr-global/npc/anerui.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 63 + lookType = 63, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,23 +45,23 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the mistress of the hunt. At this place you may buy the food our hunts provide." }) -keywordHandler:addKeyword({ 'hunt' }, StdModule.say, { npcHandler = npcHandler, text = "Hunting is an art, practiced too often by diletantes. Every fool with a bow or a spear considers himself a hunter." }) -keywordHandler:addKeyword({ 'bow' }, StdModule.say, { npcHandler = npcHandler, text = "Bow, arrow, and spear are the hunters' best friends. In the northeast of the town one of us may sell such tools." }) -keywordHandler:addKeyword({ 'hunter' }, StdModule.say, { npcHandler = npcHandler, text = "Hunters live a life of freedom and closeness to nature, unlike a simple farmer or bugherder." }) -keywordHandler:addKeyword({ 'nature' }, StdModule.say, { npcHandler = npcHandler, text = "Nature is not a friend but an unforgiving teacher, and the lessons we have to learn are endless." }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "Watch the sky, it will tell you." }) -keywordHandler:addKeyword({ 'crunor' }, StdModule.say, { npcHandler = npcHandler, text = "I guess it's a human god for the human sight of nature. I have not much knowledge of this entity." }) -keywordHandler:addKeyword({ 'teshial' }, StdModule.say, { npcHandler = npcHandler, text = "If they ever existed they are gone now." }) -keywordHandler:addKeyword({ 'kuridai' }, StdModule.say, { npcHandler = npcHandler, text = "The Kuridai are too agressive not only to people but also to the enviroment. They lack any understanding of the balance that we know as nature." }) -keywordHandler:addKeyword({ 'balance' }, StdModule.say, { npcHandler = npcHandler, text = "The balance of nature, of course. It's everywhere, so don't ask but observe and learn." }) -keywordHandler:addKeyword({ 'deraisim' }, StdModule.say, { npcHandler = npcHandler, text = "We try to live in harmony with the forces of nature, may they be living or unliving." }) -keywordHandler:addKeyword({ 'human' }, StdModule.say, { npcHandler = npcHandler, text = "The humans are a loud and ugly race. They lack any grace and are more kin to the orcs then to us." }) -keywordHandler:addKeyword({ 'death' }, StdModule.say, { npcHandler = npcHandler, text = "Life and death are significant parts of the balance." }) -keywordHandler:addKeyword({ 'life' }, StdModule.say, { npcHandler = npcHandler, text = "Life and death are significant parts of the balance." }) -keywordHandler:addKeyword({ 'troll' }, StdModule.say, { npcHandler = npcHandler, text = "I despise their presence in our town, but it may be a necessary evil." }) -keywordHandler:addKeyword({ 'elf' }, StdModule.say, { npcHandler = npcHandler, text = "That is the race to which I belong." }) -keywordHandler:addKeyword({ 'cenath' }, StdModule.say, { npcHandler = npcHandler, text = "The magic they wield is all that matters to them." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the mistress of the hunt. At this place you may buy the food our hunts provide." }) +keywordHandler:addKeyword({ "hunt" }, StdModule.say, { npcHandler = npcHandler, text = "Hunting is an art, practiced too often by diletantes. Every fool with a bow or a spear considers himself a hunter." }) +keywordHandler:addKeyword({ "bow" }, StdModule.say, { npcHandler = npcHandler, text = "Bow, arrow, and spear are the hunters' best friends. In the northeast of the town one of us may sell such tools." }) +keywordHandler:addKeyword({ "hunter" }, StdModule.say, { npcHandler = npcHandler, text = "Hunters live a life of freedom and closeness to nature, unlike a simple farmer or bugherder." }) +keywordHandler:addKeyword({ "nature" }, StdModule.say, { npcHandler = npcHandler, text = "Nature is not a friend but an unforgiving teacher, and the lessons we have to learn are endless." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Watch the sky, it will tell you." }) +keywordHandler:addKeyword({ "crunor" }, StdModule.say, { npcHandler = npcHandler, text = "I guess it's a human god for the human sight of nature. I have not much knowledge of this entity." }) +keywordHandler:addKeyword({ "teshial" }, StdModule.say, { npcHandler = npcHandler, text = "If they ever existed they are gone now." }) +keywordHandler:addKeyword({ "kuridai" }, StdModule.say, { npcHandler = npcHandler, text = "The Kuridai are too agressive not only to people but also to the enviroment. They lack any understanding of the balance that we know as nature." }) +keywordHandler:addKeyword({ "balance" }, StdModule.say, { npcHandler = npcHandler, text = "The balance of nature, of course. It's everywhere, so don't ask but observe and learn." }) +keywordHandler:addKeyword({ "deraisim" }, StdModule.say, { npcHandler = npcHandler, text = "We try to live in harmony with the forces of nature, may they be living or unliving." }) +keywordHandler:addKeyword({ "human" }, StdModule.say, { npcHandler = npcHandler, text = "The humans are a loud and ugly race. They lack any grace and are more kin to the orcs then to us." }) +keywordHandler:addKeyword({ "death" }, StdModule.say, { npcHandler = npcHandler, text = "Life and death are significant parts of the balance." }) +keywordHandler:addKeyword({ "life" }, StdModule.say, { npcHandler = npcHandler, text = "Life and death are significant parts of the balance." }) +keywordHandler:addKeyword({ "troll" }, StdModule.say, { npcHandler = npcHandler, text = "I despise their presence in our town, but it may be a necessary evil." }) +keywordHandler:addKeyword({ "elf" }, StdModule.say, { npcHandler = npcHandler, text = "That is the race to which I belong." }) +keywordHandler:addKeyword({ "cenath" }, StdModule.say, { npcHandler = npcHandler, text = "The magic they wield is all that matters to them." }) -- Greeting message keywordHandler:addGreetKeyword({ "ashari" }, { npcHandler = npcHandler, text = "Ashari, |PLAYERNAME|." }) @@ -75,7 +75,7 @@ npcHandler:setMessage(MESSAGE_WALKAWAY, "Asha Thrazi.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "ham", clientId = 3582, buy = 6 }, - { itemName = "meat", clientId = 3577, buy = 4 } + { itemName = "meat", clientId = 3577, buy = 4 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -86,7 +86,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/aneus.lua b/data-otservbr-global/npc/aneus.lua index 162d5afaf58..e3861ba379e 100644 --- a/data-otservbr-global/npc/aneus.lua +++ b/data-otservbr-global/npc/aneus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 50, lookLegs = 58, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,10 +50,10 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'soldiers' }, StdModule.say, { npcHandler = npcHandler, text = "It was the elite of the whole army. They were called the Red Legion (also known as the bloody legion)." }) -keywordHandler:addKeyword({ 'orcs' }, StdModule.say, { npcHandler = npcHandler, text = "The orcs attacked the workers from time to time and so they disturbed the WORKS on the city." }) -keywordHandler:addKeyword({ 'cruelty' }, StdModule.say, { npcHandler = npcHandler, text = "The soldiers treated the workers like slaves." }) -keywordHandler:addKeyword({ 'island' }, StdModule.say, { npcHandler = npcHandler, text = "The General of the Red Legion became very angry about these attacks and after some months he STROKE back!" }) +keywordHandler:addKeyword({ "soldiers" }, StdModule.say, { npcHandler = npcHandler, text = "It was the elite of the whole army. They were called the Red Legion (also known as the bloody legion)." }) +keywordHandler:addKeyword({ "orcs" }, StdModule.say, { npcHandler = npcHandler, text = "The orcs attacked the workers from time to time and so they disturbed the WORKS on the city." }) +keywordHandler:addKeyword({ "cruelty" }, StdModule.say, { npcHandler = npcHandler, text = "The soldiers treated the workers like slaves." }) +keywordHandler:addKeyword({ "island" }, StdModule.say, { npcHandler = npcHandler, text = "The General of the Red Legion became very angry about these attacks and after some months he STROKE back!" }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -65,63 +65,63 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "story") then npcHandler:say({ - 'Ok, sit down and listen. Back in the early days, one of the ancestors ... ', - '... of our king Tibianus III wanted to build the best CITY in whole of Tibia.' + "Ok, sit down and listen. Back in the early days, one of the ancestors ... ", + "... of our king Tibianus III wanted to build the best CITY in whole of Tibia.", }, npc, creature) elseif MsgContains(message, "city") then npcHandler:say({ - 'The works on this new city began and the king sent his best ... ', - '... SOLDIERS to protect the workers from ORCS and to make them WORK HARDER.' + "The works on this new city began and the king sent his best ... ", + "... SOLDIERS to protect the workers from ORCS and to make them WORK HARDER.", }, npc, creature) elseif MsgContains(message, "works") then npcHandler:say({ - 'The development of the city was fine. Also a giant castle was build ... ', - '... northeast of the city. But more and more workers started to REBEL because of the bad conditions.' + "The development of the city was fine. Also a giant castle was build ... ", + "... northeast of the city. But more and more workers started to REBEL because of the bad conditions.", }, npc, creature) elseif MsgContains(message, "rebel") then npcHandler:say({ - 'All rebels were brought to the giant castle. Guarded by the Red Legion, ... ', - '... they had to work and live in even worser conditions. Also some FRIENDS of the king\'s sister were brought there.' + "All rebels were brought to the giant castle. Guarded by the Red Legion, ... ", + "... they had to work and live in even worser conditions. Also some FRIENDS of the king's sister were brought there.", }, npc, creature) elseif MsgContains(message, "friends") then npcHandler:say({ - 'The king\'s sister was pretty upset about the situation there but her brother ... ', - '... didn\'t want to do anything about this matter. So she made a PLAN to destroy the Red Legion for their CRUELTY forever.' + "The king's sister was pretty upset about the situation there but her brother ... ", + "... didn't want to do anything about this matter. So she made a PLAN to destroy the Red Legion for their CRUELTY forever.", }, npc, creature) elseif MsgContains(message, "plan") then npcHandler:say({ - 'She ordered her loyal druids and hunters to disguise themselves ... ', - '... as orcs from the near ISLAND and to ATTACK the Red Legion by night over and over again.' + "She ordered her loyal druids and hunters to disguise themselves ... ", + "... as orcs from the near ISLAND and to ATTACK the Red Legion by night over and over again.", }, npc, creature) elseif MsgContains(message, "stroke") then npcHandler:say({ - 'Most of the Red Legion went to the island by night. The orcs ... ', - '... were not prepared and the Red Legion killed hundreds of orcs ... ', - '... with nearly no loss. After they were satisfied they WALKED BACK to the castle.' + "Most of the Red Legion went to the island by night. The orcs ... ", + "... were not prepared and the Red Legion killed hundreds of orcs ... ", + "... with nearly no loss. After they were satisfied they WALKED BACK to the castle.", }, npc, creature) elseif MsgContains(message, "walked back") then npcHandler:say({ - 'It is said that the orcish shamans cursed the Red Legion. ', - 'Nobody knows. But one third of the soldiers died by a disease on the way back. ', - 'And the orcs wanted to take revenge, and after some days they stroke back! ', - 'The orcs and many allied cyclopses and minotaurs from all ...', - '... over Tibia came to avenge their friends, and they killed nearly all ... ', - '... workers and soldiers in the castle. The HELP of the king\'s sister came too late.' + "It is said that the orcish shamans cursed the Red Legion. ", + "Nobody knows. But one third of the soldiers died by a disease on the way back. ", + "And the orcs wanted to take revenge, and after some days they stroke back! ", + "The orcs and many allied cyclopses and minotaurs from all ...", + "... over Tibia came to avenge their friends, and they killed nearly all ... ", + "... workers and soldiers in the castle. The HELP of the king's sister came too late.", }, npc, creature) elseif MsgContains(message, "help") then npcHandler:say({ - 'She tried to rescue the workers but it was too late. The orcs ... ', - '... started immediately to attack her troops, too. Her royal troops ... ', - '... went back to the city. A TRICK saved the city from DESTRUCTION.' + "She tried to rescue the workers but it was too late. The orcs ... ", + "... started immediately to attack her troops, too. Her royal troops ... ", + "... went back to the city. A TRICK saved the city from DESTRUCTION.", }, npc, creature) elseif MsgContains(message, "destruction") then npcHandler:say({ - 'They used the same trick as against the Red Legion and the orcs ... ', - '... started to fight their non-orcish-allies. After a bloody long fight ... ', - '... the orcs went back to their cities. The city of Carlin was rescued. ', - 'Since then, a woman has always been ruling over Carlin and this statue ... ', - '... was made to remind us of their great tactics against the orcs ... ', - '... and the Red Legion. So that was the story of Carlin and these Fields of Glory. I hope you liked it. *He smiles*' + "They used the same trick as against the Red Legion and the orcs ... ", + "... started to fight their non-orcish-allies. After a bloody long fight ... ", + "... the orcs went back to their cities. The city of Carlin was rescued. ", + "Since then, a woman has always been ruling over Carlin and this statue ... ", + "... was made to remind us of their great tactics against the orcs ... ", + "... and the Red Legion. So that was the story of Carlin and these Fields of Glory. I hope you liked it. *He smiles*", }, npc, creature) end return true diff --git a/data-otservbr-global/npc/angelina.lua b/data-otservbr-global/npc/angelina.lua index 8683f1eab51..0599d3ac243 100644 --- a/data-otservbr-global/npc/angelina.lua +++ b/data-otservbr-global/npc/angelina.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 117, lookLegs = 118, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/angelo.lua b/data-otservbr-global/npc/angelo.lua index 4471c968c0c..ca73a5a6544 100644 --- a/data-otservbr-global/npc/angelo.lua +++ b/data-otservbr-global/npc/angelo.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 120, lookFeet = 101, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -74,7 +74,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - -- Sequência para pegar a quest if MsgContains(message, "project") then npcHandler:say({ "The project is called 'Sandy {Cave} Project' and is funded by the {MoTA}. Its goal is the investigation of this {cave}." }, npc, creature) @@ -160,7 +159,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/angus.lua b/data-otservbr-global/npc/angus.lua index 810677cd497..14760035dfd 100644 --- a/data-otservbr-global/npc/angus.lua +++ b/data-otservbr-global/npc/angus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 132, lookLegs = 114, lookFeet = 113, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,154 +61,100 @@ local function creatureSayCallback(npc, creature, type, message) -- Joining if MsgContains(message, "join") then - if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) < 1 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 1 then + if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) < 1 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 1 then npcHandler:say("Do you want to join the explorer society?", npc, creature) npcHandler:setTopic(playerId, 1) end -- The New Frontier Start elseif MsgContains(message, "farmine") and player:getStorageValue(TheNewFrontier.Questline) == 14 then if player:getStorageValue(TheNewFrontier.Mission05.Angus) == 1 then - npcHandler:say( - "Oh yes, an interesting topic. We had vivid discussions about this discovery. But what is it that you want?", - npc, creature) + npcHandler:say("Oh yes, an interesting topic. We had vivid discussions about this discovery. But what is it that you want?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say( - "You bring up this topic again? I don't think our talks make any sense unless you prove that you are a supporter of science. Do you have some proof for your dedication to science?", - npc, creature) + npcHandler:say("You bring up this topic again? I don't think our talks make any sense unless you prove that you are a supporter of science. Do you have some proof for your dedication to science?", npc, creature) npcHandler:setTopic(playerId, 35) end - elseif MsgContains(message, "bluff") and player:getStorageValue(TheNewFrontier.Mission05.AngusKeyword) == 1 and - player:getStorageValue(TheNewFrontier.Questline) == 14 and - player:getStorageValue(TheNewFrontier.Mission05.Angus) == 1 then + elseif MsgContains(message, "bluff") and player:getStorageValue(TheNewFrontier.Mission05.AngusKeyword) == 1 and player:getStorageValue(TheNewFrontier.Questline) == 14 and player:getStorageValue(TheNewFrontier.Mission05.Angus) == 1 then if npcHandler:getTopic(playerId) == 1 or npcHandler:getTopic(playerId) == 2 then if player:getStorageValue(TheNewFrontier.Mission05.Angus) == 1 then - npcHandler:say( - { "Those stories are just amazing! Men with faces on their stomach instead of heads you say? And hens that lay golden eggs? Whereas, most amazing is this fountain of youth you've mentioned! ...", - "I'll immediately send some of our most dedicated explorers to check those things out!" }, npc, - creature) + npcHandler:say({ "Those stories are just amazing! Men with faces on their stomach instead of heads you say? And hens that lay golden eggs? Whereas, most amazing is this fountain of youth you've mentioned! ...", "I'll immediately send some of our most dedicated explorers to check those things out!" }, npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Angus, 3) end end - elseif MsgContains(message, "impress") and player:getStorageValue(TheNewFrontier.Mission05.AngusKeyword) == 2 and - player:getStorageValue(TheNewFrontier.Questline) == 14 and - player:getStorageValue(TheNewFrontier.Mission05.Angus) == 1 then + elseif MsgContains(message, "impress") and player:getStorageValue(TheNewFrontier.Mission05.AngusKeyword) == 2 and player:getStorageValue(TheNewFrontier.Questline) == 14 and player:getStorageValue(TheNewFrontier.Mission05.Angus) == 1 then if npcHandler:getTopic(playerId) == 1 then if player:getStorageValue(TheNewFrontier.Mission05.Angus) == 1 then - npcHandler:say( - { "A whole new land is indeed very tempting. I can hardly imagine all the wonders that await us there. I doubt I could stop our explorers from going there even if I tried to." }, - npc, creature) + npcHandler:say({ "A whole new land is indeed very tempting. I can hardly imagine all the wonders that await us there. I doubt I could stop our explorers from going there even if I tried to." }, npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Angus, 3) end elseif npcHandler:getTopic(playerId) == 2 then if player:getStorageValue(TheNewFrontier.Mission05.Angus) == 1 then - npcHandler:say( - { "For all I've heard, this is rather a barren isle than a whole new land. There are so many places to explore in this world, I won't send our best explorers on account of a rumour." }, - npc, creature) + npcHandler:say({ "For all I've heard, this is rather a barren isle than a whole new land. There are so many places to explore in this world, I won't send our best explorers on account of a rumour." }, npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Angus, 3) end end -- The New Frontier End -- Mission Check elseif MsgContains(message, "mission") then - if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) > 4 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 4 and - player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) < 26 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 26 or - player:getStorageValue(Storage.ExplorerSociety.TheIceDelivery) == 8 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 8 or - player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 17 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 17 or - player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) == 5 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 5 then - npcHandler:say( - "The missions available for your rank are the {butterfly hunt}, {plant collection} and {ice delivery}.", - npc, creature) + if + player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) > 4 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 4 and player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) < 26 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 26 + or player:getStorageValue(Storage.ExplorerSociety.TheIceDelivery) == 8 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 8 + or player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 17 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 17 + or player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) == 5 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 5 + then + npcHandler:say("The missions available for your rank are the {butterfly hunt}, {plant collection} and {ice delivery}.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) > 25 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 35 and - player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) < 35 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 35 or - player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 26 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 26 or - player:getStorageValue(Storage.ExplorerSociety.TheLizardUrn) == 29 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 29 or - player:getStorageValue(Storage.ExplorerSociety.TheBonelordSecret) == 32 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 32 then - npcHandler:say( - "The missions available for your rank are {lizard urn}, {bonelord secrets} and {orc powder}.", npc, - creature) + elseif + player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) > 25 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 35 and player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) < 35 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 35 + or player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 26 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 26 + or player:getStorageValue(Storage.ExplorerSociety.TheLizardUrn) == 29 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 29 + or player:getStorageValue(Storage.ExplorerSociety.TheBonelordSecret) == 32 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 32 + then + npcHandler:say("The missions available for your rank are {lizard urn}, {bonelord secrets} and {orc powder}.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) > 34 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 34 and - player:getStorageValue(Storage.ExplorerSociety.TheRuneWritings) < 44 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 44 or - player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) == 35 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 35 or - player:getStorageValue(Storage.ExplorerSociety.TheElvenPoetry) == 38 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 38 or - player:getStorageValue(Storage.ExplorerSociety.TheMemoryStone) == 41 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 41 then - npcHandler:say( - "The missions available for your rank are {elven poetry}, {memory stone} and {rune writings}.", npc, - creature) + elseif + player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) > 34 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 34 and player:getStorageValue(Storage.ExplorerSociety.TheRuneWritings) < 44 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 44 + or player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) == 35 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 35 + or player:getStorageValue(Storage.ExplorerSociety.TheElvenPoetry) == 38 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 38 + or player:getStorageValue(Storage.ExplorerSociety.TheMemoryStone) == 41 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 41 + then + npcHandler:say("The missions available for your rank are {elven poetry}, {memory stone} and {rune writings}.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif player:getStorageValue(Storage.ExplorerSociety.TheRuneWritings) == 44 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 44 then - npcHandler:say( - "The explorer society needs a great deal of help in the research of astral travel. Are you willing to help?", - npc, creature) + elseif player:getStorageValue(Storage.ExplorerSociety.TheRuneWritings) == 44 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 44 then + npcHandler:say("The explorer society needs a great deal of help in the research of astral travel. Are you willing to help?", npc, creature) npcHandler:setTopic(playerId, 27) - elseif player:getStorageValue(Storage.ExplorerSociety.TheEctoplasm) == 46 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 46 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheEctoplasm) == 46 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 46 then npcHandler:say("Do you have some collected ectoplasm with you?", npc, creature) npcHandler:setTopic(playerId, 29) - elseif player:getStorageValue(Storage.ExplorerSociety.TheEctoplasm) == 47 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 47 then - npcHandler:say( - { "The research on ectoplasm makes good progress. Now we need some spectral article. Our scientists think a spectral dress would be a perfect object for their studies ...", - "The bad news is that the only source to got such a dress is the queen of the banshees. Do you dare to seek her out?" }, - npc, creature) + elseif player:getStorageValue(Storage.ExplorerSociety.TheEctoplasm) == 47 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 47 then + npcHandler:say({ "The research on ectoplasm makes good progress. Now we need some spectral article. Our scientists think a spectral dress would be a perfect object for their studies ...", "The bad news is that the only source to got such a dress is the queen of the banshees. Do you dare to seek her out?" }, npc, creature) npcHandler:setTopic(playerId, 30) - elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralDress) == 49 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 48 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralDress) == 49 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 48 then npcHandler:say("Did you bring the dress?", npc, creature) npcHandler:setTopic(playerId, 31) -- Spectral stone - elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralDress) == 50 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 50 then - npcHandler:say( - { "With the objects you've provided our researchers will make steady progress. Still we are missing some test results from fellow explorers ...", - "Please travel to our base in Northport and ask them to mail us their latest research reports. Then return here and ask about new missions." }, - npc, creature) + elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralDress) == 50 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 50 then + npcHandler:say({ "With the objects you've provided our researchers will make steady progress. Still we are missing some test results from fellow explorers ...", "Please travel to our base in Northport and ask them to mail us their latest research reports. Then return here and ask about new missions." }, npc, creature) player:setStorageValue(Storage.ExplorerSociety.TheSpectralStone, 51) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 51) player:setStorageValue(Storage.ExplorerSociety.SpectralStone, 1) - elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralStone) == 51 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 51 and - player:getStorageValue(Storage.ExplorerSociety.SpectralStone) == 2 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralStone) == 51 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 51 and player:getStorageValue(Storage.ExplorerSociety.SpectralStone) == 2 then npcHandler:say("Oh, yes! Tell our fellow explorer that the papers are in the mail already.", npc, creature) player:setStorageValue(Storage.ExplorerSociety.TheSpectralStone, 52) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 52) npcHandler:setTopic(playerId, 0) - elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralStone) == 52 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 52 and - player:getStorageValue(Storage.ExplorerSociety.SpectralStone) == 1 then - npcHandler:say( - "The reports from Northport have already arrived here and our progress is astonishing. We think it is possible to create an astral bridge between our bases. Are you interested to assist us with this?", - npc, creature) + elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralStone) == 52 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 52 and player:getStorageValue(Storage.ExplorerSociety.SpectralStone) == 1 then + npcHandler:say("The reports from Northport have already arrived here and our progress is astonishing. We think it is possible to create an astral bridge between our bases. Are you interested to assist us with this?", npc, creature) npcHandler:setTopic(playerId, 32) -- Spectral stone -- Astral portals - elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralStone) == 55 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 55 then - npcHandler:say( - { "Both carvings are now charged and harmonised. In theory you should be able to travel in zero time from one base to the other ...", - "However, you will need to have an orichalcum pearl in your possession to use it as power source. It will be destroyed during the process. I will give you 6 of such pearls and you can buy new ones in our bases ...", - "In addition, you need to be a premium explorer to use the astral travel. ...", - "And remember: it's a small teleport for you, but a big teleport for all Tibians! Here is a small present for your efforts!" }, - npc, creature) + elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralStone) == 55 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 55 then + npcHandler:say({ + "Both carvings are now charged and harmonised. In theory you should be able to travel in zero time from one base to the other ...", + "However, you will need to have an orichalcum pearl in your possession to use it as power source. It will be destroyed during the process. I will give you 6 of such pearls and you can buy new ones in our bases ...", + "In addition, you need to be a premium explorer to use the astral travel. ...", + "And remember: it's a small teleport for you, but a big teleport for all Tibians! Here is a small present for your efforts!", + }, npc, creature) player:setStorageValue(Storage.ExplorerSociety.TheAstralPortals, 56) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 56) player:addItem(5021, 6) -- Orichalcum pearl @@ -218,196 +164,146 @@ local function creatureSayCallback(npc, creature, type, message) -- Mission check -- Pickaxe mission elseif MsgContains(message, "pickaxe") then - if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) < 5 or - player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) > 1 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 1 or - player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 1 then + if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) < 5 or player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) > 1 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 1 or player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 1 then npcHandler:say("Did you get the requested pickaxe from Uzgod in Kazordoon?", npc, creature) npcHandler:setTopic(playerId, 3) end -- Pickaxe mission -- Ice delivery elseif MsgContains(message, "ice delivery") then - if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) == 5 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 5 then - npcHandler:say( - { "Our finest minds came up with the theory that deep beneath the ice island of Folda ice can be found that is ancient. To prove this theory we would need a sample of the aforesaid ice ...", - "Of course the ice melts away quickly so you would need to hurry to bring it here ...", - "Would you like to accept this mission?" }, npc, creature) + if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) == 5 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 5 then + npcHandler:say({ "Our finest minds came up with the theory that deep beneath the ice island of Folda ice can be found that is ancient. To prove this theory we would need a sample of the aforesaid ice ...", "Of course the ice melts away quickly so you would need to hurry to bring it here ...", "Would you like to accept this mission?" }, npc, creature) npcHandler:setTopic(playerId, 4) - elseif player:getStorageValue(Storage.ExplorerSociety.TheIceDelivery) == 7 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 7 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheIceDelivery) == 7 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 7 then npcHandler:say("Did you get the ice we are looking for?", npc, creature) npcHandler:setTopic(playerId, 5) end -- Ice delivery -- Butterfly hunt elseif MsgContains(message, "butterfly hunt") then - if player:getStorageValue(Storage.ExplorerSociety.TheIceDelivery) == 8 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 8 then - npcHandler:say("The mission asks you to collect some species of butterflies, are you interested?", npc, - creature) + if player:getStorageValue(Storage.ExplorerSociety.TheIceDelivery) == 8 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 8 then + npcHandler:say("The mission asks you to collect some species of butterflies, are you interested?", npc, creature) npcHandler:setTopic(playerId, 7) - elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 10 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 10 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 10 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 10 then npcHandler:say("Did you acquire the purple butterfly we are looking for?", npc, creature) npcHandler:setTopic(playerId, 8) - elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 11 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 11 then - npcHandler:say({ "This preparation kit will allow you to collect a blue butterfly you have killed ...", - "Just use it on the fresh corpse of a blue butterfly, return the prepared butterfly to me and give me a report of your butterfly hunt." }, - npc, creature) + elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 11 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 11 then + npcHandler:say({ "This preparation kit will allow you to collect a blue butterfly you have killed ...", "Just use it on the fresh corpse of a blue butterfly, return the prepared butterfly to me and give me a report of your butterfly hunt." }, npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4863, 1) player:setStorageValue(Storage.ExplorerSociety.TheButterflyHunt, 12) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 12) - elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 13 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 13 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 13 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 13 then npcHandler:say("Did you acquire the blue butterfly we are looking for?", npc, creature) npcHandler:setTopic(playerId, 9) - elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 14 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 14 then - npcHandler:say({ "This preparation kit will allow you to collect a red butterfly you have killed ...", - "Just use it on the fresh corpse of a red butterfly, return the prepared butterfly to me and give me a report of your butterfly hunt." }, - npc, creature) + elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 14 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 14 then + npcHandler:say({ "This preparation kit will allow you to collect a red butterfly you have killed ...", "Just use it on the fresh corpse of a red butterfly, return the prepared butterfly to me and give me a report of your butterfly hunt." }, npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4863, 1) player:setStorageValue(Storage.ExplorerSociety.TheButterflyHunt, 15) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 15) - elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 16 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 16 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 16 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 16 then npcHandler:say("Did you acquire the red butterfly we are looking for?", npc, creature) npcHandler:setTopic(playerId, 10) end -- Butterfly Hunt -- Plant Collection elseif MsgContains(message, "plant collection") then - if player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 17 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 17 then - npcHandler:say( - "In this mission we require you to get us some plant samples from Tiquandan plants. Would you like to fulfil this mission?", - npc, creature) + if player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 17 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 17 then + npcHandler:say("In this mission we require you to get us some plant samples from Tiquandan plants. Would you like to fulfil this mission?", npc, creature) npcHandler:setTopic(playerId, 11) - elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 19 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 19 then + elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 19 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 19 then npcHandler:say("Did you acquire the sample of the jungle bells plant we are looking for?", npc, creature) npcHandler:setTopic(playerId, 12) - elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 20 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 20 then - npcHandler:say( - "Use this botanist's container on a witches cauldron to collect a sample for us. Bring it here and report about your plant collection.", - npc, creature) + elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 20 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 20 then + npcHandler:say("Use this botanist's container on a witches cauldron to collect a sample for us. Bring it here and report about your plant collection.", npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4867, 1) player:setStorageValue(Storage.ExplorerSociety.ThePlantCollection, 21) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 21) - elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 22 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 22 then + elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 22 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 22 then npcHandler:say("Did you acquire the sample of the witches cauldron we are looking for?", npc, creature) npcHandler:setTopic(playerId, 13) - elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 23 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 23 then - npcHandler:say( - "Use this botanist\'s container on a giant jungle rose to obtain a sample for us. Bring it here and report about your plant collection.", - npc, creature) + elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 23 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 23 then + npcHandler:say("Use this botanist's container on a giant jungle rose to obtain a sample for us. Bring it here and report about your plant collection.", npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4867, 1) player:setStorageValue(Storage.ExplorerSociety.ThePlantCollection, 24) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 24) - elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 25 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 25 then + elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 25 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 25 then npcHandler:say("Did you acquire the sample of the giant jungle rose we are looking for?", npc, creature) npcHandler:setTopic(playerId, 14) end -- Plant Collection -- Lizard Urn elseif MsgContains(message, "lizard urn") then - if player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 26 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 26 then - npcHandler:say( - "The explorer society would like to acquire an ancient urn which is some sort of relic to the lizard people of Tiquanda. Would you like to accept this mission?", - npc, creature) + if player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 26 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 26 then + npcHandler:say("The explorer society would like to acquire an ancient urn which is some sort of relic to the lizard people of Tiquanda. Would you like to accept this mission?", npc, creature) npcHandler:setTopic(playerId, 15) - elseif player:getStorageValue(Storage.ExplorerSociety.TheLizardUrn) == 28 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 27 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheLizardUrn) == 28 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 27 then npcHandler:say("Did you manage to get the ancient urn?", npc, creature) npcHandler:setTopic(playerId, 16) end -- Lizard Urn -- Bonelords elseif MsgContains(message, "bonelord secrets") then - if player:getStorageValue(Storage.ExplorerSociety.TheLizardUrn) == 29 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 29 then - npcHandler:say( - { "We want to learn more about the ancient race of bonelords. We believe the black pyramid north east of Darashia was originally built by them ...", - "We ask you to explore the ruins of the black pyramid and look for any signs that prove our theory. You might probably find some document with the numeric bonelord language ...", - "That would be sufficient proof. Would you like to accept this mission?" }, npc, creature) + if player:getStorageValue(Storage.ExplorerSociety.TheLizardUrn) == 29 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 29 then + npcHandler:say({ + "We want to learn more about the ancient race of bonelords. We believe the black pyramid north east of Darashia was originally built by them ...", + "We ask you to explore the ruins of the black pyramid and look for any signs that prove our theory. You might probably find some document with the numeric bonelord language ...", + "That would be sufficient proof. Would you like to accept this mission?", + }, npc, creature) npcHandler:setTopic(playerId, 17) - elseif player:getStorageValue(Storage.ExplorerSociety.TheBonelordSecret) == 31 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 30 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheBonelordSecret) == 31 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 30 then npcHandler:say("Have you found any proof that the pyramid was built by bonelords?", npc, creature) npcHandler:setTopic(playerId, 18) end -- Bonelords -- Orc Powder elseif MsgContains(message, "orc powder") then - if player:getStorageValue(Storage.ExplorerSociety.TheBonelordSecret) == 32 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 32 then - npcHandler:say( - { "It is commonly known that orcs of Uldereks Rock use some sort of powder to increase the fierceness of their war wolves and berserkers ...", - "What we do not know are the ingredients of this powder and its effect on humans ...", - "So we would like you to get a sample of the aforesaid powder. Do you want to accept this mission?" }, - npc, creature) + if player:getStorageValue(Storage.ExplorerSociety.TheBonelordSecret) == 32 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 32 then + npcHandler:say({ "It is commonly known that orcs of Uldereks Rock use some sort of powder to increase the fierceness of their war wolves and berserkers ...", "What we do not know are the ingredients of this powder and its effect on humans ...", "So we would like you to get a sample of the aforesaid powder. Do you want to accept this mission?" }, npc, creature) npcHandler:setTopic(playerId, 19) - elseif player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) == 34 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 33 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) == 34 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 33 then npcHandler:say("Did you acquire some of the orcish powder?", npc, creature) npcHandler:setTopic(playerId, 20) end -- Orc Powder -- Elven Poetry elseif MsgContains(message, "elven poetry") then - if player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) == 35 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 35 then - npcHandler:say( - { "Some high ranking members would like to study elven poetry. They want the rare book 'Songs of the Forest' ...", - "For sure someone in Ab'Dendriel will own a copy. So you would just have to ask around there. Are you willing to accept this mission?" }, - npc, creature) + if player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) == 35 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 35 then + npcHandler:say({ "Some high ranking members would like to study elven poetry. They want the rare book 'Songs of the Forest' ...", "For sure someone in Ab'Dendriel will own a copy. So you would just have to ask around there. Are you willing to accept this mission?" }, npc, creature) npcHandler:setTopic(playerId, 21) - elseif player:getStorageValue(Storage.ExplorerSociety.TheElvenPoetry) == 37 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 36 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheElvenPoetry) == 37 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 36 then npcHandler:say("Did you acquire a copy of 'Songs of the Forest' for us?", npc, creature) npcHandler:setTopic(playerId, 22) end -- Elven Poetry -- Memory Stone elseif MsgContains(message, "memory stone") then - if player:getStorageValue(Storage.ExplorerSociety.TheElvenPoetry) == 38 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 38 then - npcHandler:say( - { "We acquired some knowledge about special magic stones. Some lost civilisations used it to store knowledge and lore, just like we use books ...", - "The wisdom in such stones must be immense, but so are the dangers faced by every person who tries to obtain one...", - "As far as we know the ruins found in the north-west of Edron were once inhabited by beings who used such stones. Do you have the heart to go there and to get us such a stone?" }, - npc, creature) + if player:getStorageValue(Storage.ExplorerSociety.TheElvenPoetry) == 38 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 38 then + npcHandler:say({ + "We acquired some knowledge about special magic stones. Some lost civilisations used it to store knowledge and lore, just like we use books ...", + "The wisdom in such stones must be immense, but so are the dangers faced by every person who tries to obtain one...", + "As far as we know the ruins found in the north-west of Edron were once inhabited by beings who used such stones. Do you have the heart to go there and to get us such a stone?", + }, npc, creature) npcHandler:setTopic(playerId, 23) - elseif player:getStorageValue(Storage.ExplorerSociety.TheMemoryStone) == 40 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 39 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheMemoryStone) == 40 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 39 then npcHandler:say("Were you able to acquire a memory stone for our society?", npc, creature) npcHandler:setTopic(playerId, 24) end -- Memory Stone -- Rune Writings elseif MsgContains(message, "rune writings") then - if player:getStorageValue(Storage.ExplorerSociety.TheMemoryStone) == 41 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 41 then - npcHandler:say( - { "We would like to study some ancient runes that were used by the lizard race. We suspect some relation of the lizards to the founders of Ankrahmun ...", - "Somewhere under the ape infested city of Banuta, one can find dungeons that were once inhabited by lizards...", - "Look there for an atypical structure that would rather fit to Ankrahmun and its Ankrahmun Tombs. Copy the runes you will find on this structure...", - "Are you up to that challenge?" }, npc, creature) + if player:getStorageValue(Storage.ExplorerSociety.TheMemoryStone) == 41 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 41 then + npcHandler:say({ + "We would like to study some ancient runes that were used by the lizard race. We suspect some relation of the lizards to the founders of Ankrahmun ...", + "Somewhere under the ape infested city of Banuta, one can find dungeons that were once inhabited by lizards...", + "Look there for an atypical structure that would rather fit to Ankrahmun and its Ankrahmun Tombs. Copy the runes you will find on this structure...", + "Are you up to that challenge?", + }, npc, creature) npcHandler:setTopic(playerId, 25) - elseif player:getStorageValue(Storage.ExplorerSociety.TheRuneWritings) == 43 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 43 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheRuneWritings) == 43 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 43 then npcHandler:say("Did you create a copy of the ancient runes as requested?", npc, creature) npcHandler:setTopic(playerId, 26) end @@ -415,15 +311,14 @@ local function creatureSayCallback(npc, creature, type, message) -- Answer Yes elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say( - { "Fine, though it takes more then a mere lip service to join our ranks. To prove your dedication to the cause you will have to acquire an item for us ...", - "The mission should be simple to fulfil. For our excavations we have ordered a sturdy pickaxe in Kazordoon. You would have to seek out this trader Uzgod and get the pickaxe for us ...", - "Simple enough? Are you interested in this task?" }, npc, creature) + npcHandler:say({ + "Fine, though it takes more then a mere lip service to join our ranks. To prove your dedication to the cause you will have to acquire an item for us ...", + "The mission should be simple to fulfil. For our excavations we have ordered a sturdy pickaxe in Kazordoon. You would have to seek out this trader Uzgod and get the pickaxe for us ...", + "Simple enough? Are you interested in this task?", + }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then - npcHandler:say( - "We will see if you can handle this simple task. Get the pickaxe from Uzgod in Kazordoon and bring it to one of our bases. Report there about the pickaxe.", - npc, creature) + npcHandler:say("We will see if you can handle this simple task. Get the pickaxe from Uzgod in Kazordoon and bring it to one of our bases. Report there about the pickaxe.", npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.ExplorerSociety.JoiningTheExplorers, 1) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 1) @@ -431,70 +326,53 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeItem(4845, 1) then player:setStorageValue(Storage.ExplorerSociety.JoiningTheExplorers, 5) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 5) - npcHandler:say( - { "Excellent, you brought just the tool we need! Of course it was only a simple task. However ...", - "I officially welcome you to the explorer society. From now on you can ask for missions to improve your rank." }, - npc, creature) + npcHandler:say({ "Excellent, you brought just the tool we need! Of course it was only a simple task. However ...", "I officially welcome you to the explorer society. From now on you can ask for missions to improve your rank." }, npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 4 then player:setStorageValue(Storage.ExplorerSociety.TheIceDelivery, 6) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 6) - npcHandler:say( - { "So listen please: Take this ice pick and use it on a block of ice in the caves beneath Folda. Get some ice and bring it here as fast as you can ...", - "Should the ice melt away, report on your ice delivery mission anyway. I will then tell you if the time is right to start another mission." }, - npc, creature) + npcHandler:say({ "So listen please: Take this ice pick and use it on a block of ice in the caves beneath Folda. Get some ice and bring it here as fast as you can ...", "Should the ice melt away, report on your ice delivery mission anyway. I will then tell you if the time is right to start another mission." }, npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4872, 1) elseif npcHandler:getTopic(playerId) == 5 then if player:removeItem(4837, 1) then player:setStorageValue(Storage.ExplorerSociety.TheIceDelivery, 8) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 8) - npcHandler:say("Just in time. Sadly not much ice is left over but it will do. Thank you again.", npc, - creature) + npcHandler:say("Just in time. Sadly not much ice is left over but it will do. Thank you again.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 6 then player:setStorageValue(Storage.ExplorerSociety.TheIceDelivery, 6) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 6) - npcHandler:say( - "*Sigh* I think the time is right to grant you another chance to get that ice. Hurry up this time.", - npc, creature) + npcHandler:say("*Sigh* I think the time is right to grant you another chance to get that ice. Hurry up this time.", npc, creature) npcHandler:setTopic(playerId, 0) -- Butterfly Hunt elseif npcHandler:getTopic(playerId) == 7 then player:setStorageValue(Storage.ExplorerSociety.TheButterflyHunt, 9) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 9) - npcHandler:say({ "This preparation kit will allow you to collect a purple butterfly you have killed ...", - "Just use it on the fresh corpse of a purple butterfly, return the prepared butterfly to me and give me a report of your butterfly hunt." }, - npc, creature) + npcHandler:say({ "This preparation kit will allow you to collect a purple butterfly you have killed ...", "Just use it on the fresh corpse of a purple butterfly, return the prepared butterfly to me and give me a report of your butterfly hunt." }, npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4863, 1) elseif npcHandler:getTopic(playerId) == 8 then if player:removeItem(4864, 1) then player:setStorageValue(Storage.ExplorerSociety.TheButterflyHunt, 11) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 11) - npcHandler:say( - "A little bit battered but it will do. Thank you! If you think you are ready, ask for another butterfly hunt.", - npc, creature) + npcHandler:say("A little bit battered but it will do. Thank you! If you think you are ready, ask for another butterfly hunt.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 9 then if player:removeItem(4865, 1) then player:setStorageValue(Storage.ExplorerSociety.TheButterflyHunt, 14) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 14) - npcHandler:say( - "A little bit battered but it will do. Thank you! If you think you are ready, ask for another butterfly hunt.", - npc, creature) + npcHandler:say("A little bit battered but it will do. Thank you! If you think you are ready, ask for another butterfly hunt.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 10 then if player:removeItem(4866, 1) then player:setStorageValue(Storage.ExplorerSociety.TheButterflyHunt, 17) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 17) - npcHandler:say( - "That is an extraordinary species you have brought. Thank you! That was the last butterfly we needed.", - npc, creature) + npcHandler:say("That is an extraordinary species you have brought. Thank you! That was the last butterfly we needed.", npc, creature) npcHandler:setTopic(playerId, 0) end -- Butterfly Hunt @@ -502,35 +380,28 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 11 then player:setStorageValue(Storage.ExplorerSociety.ThePlantCollection, 18) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 18) - npcHandler:say( - "Fine! Here take this botanist's container. Use it on a jungle bells plant to collect a sample for us. Report about your plant collection when you have been successful.", - npc, creature) + npcHandler:say("Fine! Here take this botanist's container. Use it on a jungle bells plant to collect a sample for us. Report about your plant collection when you have been successful.", npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4867, 1) elseif npcHandler:getTopic(playerId) == 12 then if player:removeItem(4868, 1) then player:setStorageValue(Storage.ExplorerSociety.ThePlantCollection, 20) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 20) - npcHandler:say( - "I see. It seems you've got some quite useful sample by sheer luck. Thank you! Just tell me when you are ready to continue with the plant collection.", - npc, creature) + npcHandler:say("I see. It seems you've got some quite useful sample by sheer luck. Thank you! Just tell me when you are ready to continue with the plant collection.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 13 then if player:removeItem(4869, 1) then player:setStorageValue(Storage.ExplorerSociety.ThePlantCollection, 23) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 23) - npcHandler:say( - "Ah, finally. I started to wonder what took you so long. But thank you! Another fine sample, indeed. Just tell me when you are ready to continue with the plant collection.", - npc, creature) + npcHandler:say("Ah, finally. I started to wonder what took you so long. But thank you! Another fine sample, indeed. Just tell me when you are ready to continue with the plant collection.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 14 then if player:removeItem(4870, 1) then player:setStorageValue(Storage.ExplorerSociety.ThePlantCollection, 26) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 26) - npcHandler:say("What a lovely sample! With that you have finished your plant collection missions.", npc, - creature) + npcHandler:say("What a lovely sample! With that you have finished your plant collection missions.", npc, creature) npcHandler:setTopic(playerId, 0) end -- Plant Collection @@ -539,18 +410,13 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ExplorerSociety.TheLizardUrn, 27) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 27) player:setStorageValue(Storage.ExplorerSociety.ChorurnDoor, 1) - npcHandler:say( - { "You have indeed the spirit of an adventurer! In the south-east of Tiquanda is a small settlement of the lizard people ...", - "Beneath the newly constructed temple there, the lizards hide the said urn. Our attempts to acquire this item were without success ...", - "Perhaps you are more successful." }, npc, creature) + npcHandler:say({ "You have indeed the spirit of an adventurer! In the south-east of Tiquanda is a small settlement of the lizard people ...", "Beneath the newly constructed temple there, the lizards hide the said urn. Our attempts to acquire this item were without success ...", "Perhaps you are more successful." }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 16 then if player:removeItem(4847, 1) then player:setStorageValue(Storage.ExplorerSociety.TheLizardUrn, 29) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 29) - npcHandler:say( - "Yes, that is the prized relic we have been looking for so long. You did a great job, thank you.", - npc, creature) + npcHandler:say("Yes, that is the prized relic we have been looking for so long. You did a great job, thank you.", npc, creature) npcHandler:setTopic(playerId, 0) end -- Lizard Urn @@ -559,17 +425,13 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ExplorerSociety.TheBonelordSecret, 30) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 30) player:setStorageValue(Storage.ExplorerSociety.BonelordsDoor, 1) - npcHandler:say( - { "Excellent! So travel to the city of Darashia and then head north-east for the pyramid ...", - "If any documents are left, you probably find them in the catacombs beneath. Good luck!" }, npc, - creature) + npcHandler:say({ "Excellent! So travel to the city of Darashia and then head north-east for the pyramid ...", "If any documents are left, you probably find them in the catacombs beneath. Good luck!" }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 18 then if player:removeItem(173, 1) then player:setStorageValue(Storage.ExplorerSociety.TheBonelordSecret, 32) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 32) - npcHandler:say("You did it! Excellent! The scientific world will be shaken by this discovery!", npc, - creature) + npcHandler:say("You did it! Excellent! The scientific world will be shaken by this discovery!", npc, creature) npcHandler:setTopic(playerId, 0) end -- Bonelords @@ -578,10 +440,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ExplorerSociety.TheOrcPowder, 33) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 33) player:setStorageValue(Storage.ExplorerSociety.OrcDoor, 1) - npcHandler:say( - { "You are a brave soul. As far as we can tell, the orcs maintain some sort of training facility in some hill in the north-east of their city ...", - "There you should find lots of their war wolves and hopefully also some of the orcish powder. Good luck!" }, - npc, creature) + npcHandler:say({ "You are a brave soul. As far as we can tell, the orcs maintain some sort of training facility in some hill in the north-east of their city ...", "There you should find lots of their war wolves and hopefully also some of the orcish powder. Good luck!" }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 20 then if player:removeItem(13974, 1) then @@ -596,17 +455,13 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ExplorerSociety.TheElvenPoetry, 36) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 36) player:setStorageValue(Storage.ExplorerSociety.ElvenDoor, 1) - npcHandler:say( - "Excellent. This mission is easy but nonetheless vital. Travel to Ab'Dendriel and get the book.", npc, - creature) + npcHandler:say("Excellent. This mission is easy but nonetheless vital. Travel to Ab'Dendriel and get the book.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 22 then if player:removeItem(4844, 1) then player:setStorageValue(Storage.ExplorerSociety.TheElvenPoetry, 38) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 38) - npcHandler:say( - "Let me have a look! Yes, that's what we wanted. A copy of 'Songs of the Forest'. I won't ask any questions about those bloodstains.", - npc, creature) + npcHandler:say("Let me have a look! Yes, that's what we wanted. A copy of 'Songs of the Forest'. I won't ask any questions about those bloodstains.", npc, creature) npcHandler:setTopic(playerId, 0) end -- Elven Poetry @@ -615,16 +470,13 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ExplorerSociety.TheMemoryStone, 39) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 39) player:setStorageValue(Storage.ExplorerSociety.MemoryStoneDoor, 1) - npcHandler:say("In the ruins of north-western Edron you should be able to find a memory stone. Good luck.", - npc, creature) + npcHandler:say("In the ruins of north-western Edron you should be able to find a memory stone. Good luck.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 24 then if player:removeItem(4841, 1) then player:setStorageValue(Storage.ExplorerSociety.TheMemoryStone, 41) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 41) - npcHandler:say( - "A flawless memory stone! Incredible! It will take years even to figure out how it works but what an opportunity for science, thank you!", - npc, creature) + npcHandler:say("A flawless memory stone! Incredible! It will take years even to figure out how it works but what an opportunity for science, thank you!", npc, creature) npcHandler:setTopic(playerId, 0) end -- Memory Stone @@ -632,9 +484,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 25 then player:setStorageValue(Storage.ExplorerSociety.TheRuneWritings, 42) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 42) - npcHandler:say( - "Excellent! Here, take this tracing paper and use it on the object you will find there to create a copy of the ancient runes.", - npc, creature) + npcHandler:say("Excellent! Here, take this tracing paper and use it on the object you will find there to create a copy of the ancient runes.", npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4842, 1) elseif npcHandler:getTopic(playerId) == 26 then @@ -648,14 +498,13 @@ local function creatureSayCallback(npc, creature, type, message) -- Ectoplasm elseif npcHandler:getTopic(playerId) == 27 then npcHandler:say( - { "Fine. The society is looking for new means to travel. Some of our most brilliant minds have some theories about astral travel that they want to research further ...", - "Therefore we need you to collect some ectoplasm from the corpse of a ghost. We will supply you with a collector that you can use on the body of a slain ghost ...", - "Do you think you are ready for that mission?" }, npc, creature) + { "Fine. The society is looking for new means to travel. Some of our most brilliant minds have some theories about astral travel that they want to research further ...", "Therefore we need you to collect some ectoplasm from the corpse of a ghost. We will supply you with a collector that you can use on the body of a slain ghost ...", "Do you think you are ready for that mission?" }, + npc, + creature + ) npcHandler:setTopic(playerId, 28) elseif npcHandler:getTopic(playerId) == 28 then - npcHandler:say( - "Good! Take this container and use it on a ghost that was recently slain. Return with the collected ectoplasm and hand me that container ...", - npc, creature) + npcHandler:say("Good! Take this container and use it on a ghost that was recently slain. Return with the collected ectoplasm and hand me that container ...", npc, creature) npcHandler:say("Don't lose the container. They are expensive!", npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.ExplorerSociety.TheEctoplasm, 45) @@ -665,18 +514,17 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeItem(4853, 1) then player:setStorageValue(Storage.ExplorerSociety.TheEctoplasm, 47) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 47) - npcHandler:say( - "Phew, I had no idea that ectoplasm would smell that ... oh, it's you, well, sorry. Thank you for the ectoplasm.", - npc, creature) + npcHandler:say("Phew, I had no idea that ectoplasm would smell that ... oh, it's you, well, sorry. Thank you for the ectoplasm.", npc, creature) npcHandler:setTopic(playerId, 0) end -- Ectoplasm -- Spectral Dress elseif npcHandler:getTopic(playerId) == 30 then npcHandler:say( - { "That is quite courageous. We know, it's much we are asking for. The queen of the banshees lives in the so called Ghostlands, south west of Carlin. It is rumoured that her lair is located in the deepest dungeons beneath that cursed place ...", - "Any violence will probably be futile, you will have to negotiate with her. Try to get a spectral dress from her. Good luck." }, - npc, creature) + { "That is quite courageous. We know, it's much we are asking for. The queen of the banshees lives in the so called Ghostlands, south west of Carlin. It is rumoured that her lair is located in the deepest dungeons beneath that cursed place ...", "Any violence will probably be futile, you will have to negotiate with her. Try to get a spectral dress from her. Good luck." }, + npc, + creature + ) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.ExplorerSociety.TheSpectralDress, 48) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 48) @@ -690,10 +538,7 @@ local function creatureSayCallback(npc, creature, type, message) -- Spectral Dress -- Spectral Stone elseif npcHandler:getTopic(playerId) == 32 then - npcHandler:say( - { "Good, just take this spectral essence and use it on the strange carving in this building as well as on the corresponding tile in our base at Northport ...", - "As soon as you have charged the portal tiles that way, report about the spectral portals." }, npc, - creature) + npcHandler:say({ "Good, just take this spectral essence and use it on the strange carving in this building as well as on the corresponding tile in our base at Northport ...", "As soon as you have charged the portal tiles that way, report about the spectral portals." }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.ExplorerSociety.TheSpectralStone, 53) player:setStorageValue(Storage.ExplorerSociety.SpectralStoneDoor, 1) @@ -703,9 +548,7 @@ local function creatureSayCallback(npc, creature, type, message) -- Skull Of Ratha / Giant Smithhammer elseif npcHandler:getTopic(playerId) == 33 then if player:removeItem(3207, 1) then - npcHandler:say( - "Poor Ratha. Thank you for returning this skull to the society. We will see to a honourable burial of Ratha.", - npc, creature) + npcHandler:say("Poor Ratha. Thank you for returning this skull to the society. We will see to a honourable burial of Ratha.", npc, creature) player:setStorageValue(Storage.ExplorerSociety.SkullOfRatha, 1) player:addItem(3035, 2) player:addItem(3031, 50) @@ -722,16 +565,13 @@ local function creatureSayCallback(npc, creature, type, message) player:addItem(3031, 50) npcHandler:setTopic(playerId, 0) else - npcHandler:say("No you don\'t.", npc, creature) + npcHandler:say("No you don't.", npc, creature) npcHandler:setTopic(playerId, 0) end -- The New Frontier elseif npcHandler:getTopic(playerId) == 35 then - if player:getStorageValue(TheNewFrontier.Questline) == 14 and - player:getStorageValue(TheNewFrontier.Mission05.Angus) == 2 and player:removeItem(10011, 1) then - npcHandler:say( - "What a strange map. I wonder if any of our explorers recognises this coastal lines. However, you earned yourself another chance to convince me. Why do you think that Farmine would be interesting for us?", - npc, creature) + if player:getStorageValue(TheNewFrontier.Questline) == 14 and player:getStorageValue(TheNewFrontier.Mission05.Angus) == 2 and player:removeItem(10011, 1) then + npcHandler:say("What a strange map. I wonder if any of our explorers recognises this coastal lines. However, you earned yourself another chance to convince me. Why do you think that Farmine would be interesting for us?", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Angus, 1) npcHandler:setTopic(playerId, 2) end @@ -752,22 +592,15 @@ local function creatureSayCallback(npc, creature, type, message) -- Answer No -- Skull Of Ratha / Giant Smithhammer elseif MsgContains(message, "skull of ratha") and player:getStorageValue(Storage.ExplorerSociety.SkullOfRatha) < 1 then - npcHandler:say( - { "Ratha was a great explorer and even greater ladies' man. Sadly he never returned from a visit to the amazons. Probably he is dead ...", - "The society offers a substantial reward for the retrieval of Ratha or his remains. Do you have any news about Ratha?" }, - npc, creature) + npcHandler:say({ "Ratha was a great explorer and even greater ladies' man. Sadly he never returned from a visit to the amazons. Probably he is dead ...", "The society offers a substantial reward for the retrieval of Ratha or his remains. Do you have any news about Ratha?" }, npc, creature) npcHandler:setTopic(playerId, 33) - elseif MsgContains(message, "giant smith hammer") and - player:getStorageValue(Storage.ExplorerSociety.GiantSmithHammer) < 1 then - npcHandler:say( - "The explorer society is looking for a genuine giant smith hammer for our collection. It is rumoured the cyclopses of the Plains of Havoc might be using one. Did you by chance obtain such a hammer?", - npc, creature) + elseif MsgContains(message, "giant smith hammer") and player:getStorageValue(Storage.ExplorerSociety.GiantSmithHammer) < 1 then + npcHandler:say("The explorer society is looking for a genuine giant smith hammer for our collection. It is rumoured the cyclopses of the Plains of Havoc might be using one. Did you by chance obtain such a hammer?", npc, creature) npcHandler:setTopic(playerId, 34) -- Skull Of Ratha / Giant Smithhammer else -- The New Frontier - if player:getStorageValue(TheNewFrontier.Questline) == 14 and - player:getStorageValue(TheNewFrontier.Mission05.Angus) == 1 then + if player:getStorageValue(TheNewFrontier.Questline) == 14 and player:getStorageValue(TheNewFrontier.Mission05.Angus) == 1 then npcHandler:say({ "Wrong Word." }, npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Angus, 2) end @@ -780,53 +613,65 @@ npcHandler:setCallback(CALLBACK_ON_TRADE_REQUEST, onTradeRequest) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) -npcConfig.shop = { { - itemName = "atlas", - clientId = 6108, - buy = 150 -}, { - itemName = "botanist s container", - clientId = 4867, - buy = 500 -}, { - itemName = "butterfly conservation kit", - clientId = 4863, - buy = 250 -}, { - itemName = "crown backpack", - clientId = 9605, - buy = 800, - storageKey = Storage.ExplorerSociety.TheAstralPortals, - storageValue = 56 -}, { - itemName = "ectoplasm container", - clientId = 4852, - buy = 750 -}, { - itemName = "explorer brooch", - clientId = 4871, - sell = 50 -}, { - itemName = "giant smithhammer", - clientId = 12510, - sell = 250 -}, { - itemName = "hydra egg", - clientId = 4839, - sell = 500 -}, { - itemName = "old parchment", - clientId = 5956, - sell = 500 -}, { - itemName = "orichalcum pearl", - clientId = 5021, - buy = 80 -}, { - itemName = "skull of ratha", - clientId = 3207, - sell = 250 -} } +npcConfig.shop = { + { + itemName = "atlas", + clientId = 6108, + buy = 150, + }, + { + itemName = "botanist s container", + clientId = 4867, + buy = 500, + }, + { + itemName = "butterfly conservation kit", + clientId = 4863, + buy = 250, + }, + { + itemName = "crown backpack", + clientId = 9605, + buy = 800, + storageKey = Storage.ExplorerSociety.TheAstralPortals, + storageValue = 56, + }, + { + itemName = "ectoplasm container", + clientId = 4852, + buy = 750, + }, + { + itemName = "explorer brooch", + clientId = 4871, + sell = 50, + }, + { + itemName = "giant smithhammer", + clientId = 12510, + sell = 250, + }, + { + itemName = "hydra egg", + clientId = 4839, + sell = 500, + }, + { + itemName = "old parchment", + clientId = 5956, + sell = 500, + }, + { + itemName = "orichalcum pearl", + clientId = 5021, + buy = 80, + }, + { + itemName = "skull of ratha", + clientId = 3207, + sell = 250, + }, +} -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) npc:sellItem(player, itemId, amount, subType, 0, ignore, inBackpacks) @@ -836,7 +681,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/appaloosa.lua b/data-otservbr-global/npc/appaloosa.lua index 10e35733dd0..7031d711207 100644 --- a/data-otservbr-global/npc/appaloosa.lua +++ b/data-otservbr-global/npc/appaloosa.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 114, lookBody = 0, lookLegs = 114, - lookFeet = 0 + lookFeet = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,22 +57,22 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'transport') then - npcHandler:say('We can bring you to Thais with one of our coaches for 125 gold. Are you interested?', npc, creature) + if MsgContains(message, "transport") then + npcHandler:say("We can bring you to Thais with one of our coaches for 125 gold. Are you interested?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif table.contains({ 'rent', 'horses' }, message) then - npcHandler:say('Do you want to rent a horse for one day at a price of 500 gold?', npc, creature) + elseif table.contains({ "rent", "horses" }, message) then + npcHandler:say("Do you want to rent a horse for one day at a price of 500 gold?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then local player = Player(creature) if npcHandler:getTopic(playerId) == 1 then if player:isPzLocked() then - npcHandler:say('First get rid of those blood stains!', npc, creature) + npcHandler:say("First get rid of those blood stains!", npc, creature) return true end if not player:removeMoneyBank(125) then - npcHandler:say('You don\'t have enough money.', npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) return true end @@ -80,33 +80,33 @@ local function creatureSayCallback(npc, creature, type, message) local destination = Position(32449, 32226, 7) player:teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) - npcHandler:say('Have a nice trip!', npc, creature) + npcHandler:say("Have a nice trip!", npc, creature) elseif npcHandler:getTopic(playerId) == 2 then if player:getStorageValue(Storage.RentedHorseTimer) >= os.time() then - npcHandler:say('You already have a horse.', npc, creature) + npcHandler:say("You already have a horse.", npc, creature) return true end if not player:removeMoneyBank(500) then - npcHandler:say('You do not have enough money to rent a horse!', npc, creature) + npcHandler:say("You do not have enough money to rent a horse!", npc, creature) return true end local mountId = { 22, 25, 26 } player:addMount(mountId[math.random(#mountId)]) player:setStorageValue(Storage.RentedHorseTimer, os.time() + 86400) - player:addAchievement('Natural Born Cowboy') - npcHandler:say('I\'ll give you one of our experienced ones. Take care! Look out for low hanging branches.', npc, creature) + player:addAchievement("Natural Born Cowboy") + npcHandler:say("I'll give you one of our experienced ones. Take care! Look out for low hanging branches.", npc, creature) end npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) > 0 then - npcHandler:say('Then not.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) > 0 then + npcHandler:say("Then not.", npc, creature) npcHandler:setTopic(playerId, 0) end return true end -npcHandler:setMessage(MESSAGE_GREET, 'Salutations, |PLAYERNAME| I guess you are here for the {horses}.') +npcHandler:setMessage(MESSAGE_GREET, "Salutations, |PLAYERNAME| I guess you are here for the {horses}.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/archery.lua b/data-otservbr-global/npc/archery.lua index dc43b6587b1..434695f56c9 100644 --- a/data-otservbr-global/npc/archery.lua +++ b/data-otservbr-global/npc/archery.lua @@ -17,17 +17,17 @@ npcConfig.outfit = { lookLegs = 96, lookFeet = 114, lookAddons = 3, - lookMount = 1101 + lookMount = 1101, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Come into my tavern and share some stories!' } + { text = "Come into my tavern and share some stories!" }, } local keywordHandler = KeywordHandler:new() @@ -59,7 +59,7 @@ end -- Basic -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the owner of this saloon. I call it Archery's Hut. I am also {selling} ammunitions." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the owner of this saloon. I call it Archery's Hut. I am also {selling} ammunitions." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to Archery's shop!") npcHandler:setMessage(MESSAGE_FAREWELL, "Please come back from time to time.") @@ -97,7 +97,7 @@ npcConfig.shop = { { itemName = "spectral bolt", clientId = 35902, buy = 70 }, { itemName = "tarsal arrow", clientId = 14251, buy = 6 }, { itemName = "throwing star", clientId = 3287, buy = 42 }, - { itemName = "vortex bolt", clientId = 14252, buy = 6 } + { itemName = "vortex bolt", clientId = 14252, buy = 6 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -108,7 +108,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/archery_rook.lua b/data-otservbr-global/npc/archery_rook.lua index 250c406fdd1..192a389ca72 100644 --- a/data-otservbr-global/npc/archery_rook.lua +++ b/data-otservbr-global/npc/archery_rook.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 96, lookFeet = 114, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Come into my tavern and share some stories!' } + { text = "Come into my tavern and share some stories!" }, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,7 @@ end -- Basic -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the owner of this saloon. I call it Archery's Hut. I am also {selling} ammunitions." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the owner of this saloon. I call it Archery's Hut. I am also {selling} ammunitions." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to Archery's Rook shop.") npcHandler:setMessage(MESSAGE_FAREWELL, "Please come back from time to time.") @@ -67,7 +67,7 @@ npcHandler:setMessage(MESSAGE_WALKAWAY, "Please come back from time to time.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "royal spear", clientId = 7378, buy = 100 } + { itemName = "royal spear", clientId = 7378, buy = 100 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -78,7 +78,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/ariella.lua b/data-otservbr-global/npc/ariella.lua index 7eb536b817f..f0935ea539a 100644 --- a/data-otservbr-global/npc/ariella.lua +++ b/data-otservbr-global/npc/ariella.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 3, lookLegs = 1, lookFeet = 76, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Have a drink in Meriana's only tavern!" } + { text = "Have a drink in Meriana's only tavern!" }, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,6 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() @@ -66,8 +65,7 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "cookie") then - if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 and - player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Ariella) ~= 1 then + if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Ariella) ~= 1 then npcHandler:say("So you brought a cookie to a pirate?", npc, creature) npcHandler:setTopic(playerId, 1) end @@ -75,14 +73,18 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say( "To get pirate hat you need give me Brutus Bloodbeard's Hat, \ Lethal Lissy's Shirt, Ron the Ripper's Sabre and Deadeye Devious' Eye Patch. Do you have them with you?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 2) elseif MsgContains(message, "mission") then if player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 1 then npcHandler:say( "You know, we have plenty of rum here but we lack some basic food. \ Especially food that easily becomes mouldy is a problem. Bring me 100 breads and you will help me a lot.", - npc, creature) + npc, + creature + ) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 2) elseif player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 2 then npcHandler:say("Are you here to bring me the 100 pieces of bread that I requested?", npc, creature) @@ -92,7 +94,7 @@ local function creatureSayCallback(npc, creature, type, message) "The sailors always tell tales about the famous beer of Carlin. \z You must know, alcohol is forbidden in that city. ...", "The beer is served in a secret whisper bar anyway. \z - Bring me a sample of the whisper beer, NOT the usual beer but whisper beer. I hope you are listening." + Bring me a sample of the whisper beer, NOT the usual beer but whisper beer. I hope you are listening.", }, npc, creature) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 11) elseif player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 12 or player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 11 then @@ -113,20 +115,13 @@ local function creatureSayCallback(npc, creature, type, message) end npc:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) - npcHandler:say( - "How sweet of you ... Uhh ... OH NO ... Bozo did it again. Tell this prankster I'll pay him back.", - npc, creature) + npcHandler:say("How sweet of you ... Uhh ... OH NO ... Bozo did it again. Tell this prankster I'll pay him back.", npc, creature) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) elseif npcHandler:getTopic(playerId) == 2 then if player:getStorageValue(Storage.OutfitQuest.PirateHatAddon) == -1 then - if player:getItemCount(6101) > 0 and player:getItemCount(6102) > 0 and player:getItemCount(6100) > 0 and - player:getItemCount(6099) > 0 - then - if - player:removeItem(6101, 1) and player:removeItem(6102, 1) and player:removeItem(6100, 1) and - player:removeItem(6099, 1) - then + if player:getItemCount(6101) > 0 and player:getItemCount(6102) > 0 and player:getItemCount(6100) > 0 and player:getItemCount(6099) > 0 then + if player:removeItem(6101, 1) and player:removeItem(6102, 1) and player:removeItem(6100, 1) and player:removeItem(6099, 1) then npcHandler:say("Ah, right! The pirate hat! Here you go.", npc, creature) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) player:setStorageValue(Storage.OutfitQuest.PirateHatAddon, 1) @@ -194,7 +189,7 @@ npcConfig.shop = { { itemName = "pumpkin", clientId = 3594, buy = 10 }, { itemName = "red apple", clientId = 3585, buy = 5 }, { itemName = "strawberry", clientId = 3591, buy = 2 }, - { itemName = "valentine's cake", clientId = 6392, buy = 100 } + { itemName = "valentine's cake", clientId = 6392, buy = 100 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -205,7 +200,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/arito.lua b/data-otservbr-global/npc/arito.lua index 880e1b2cb92..679783f3462 100644 --- a/data-otservbr-global/npc/arito.lua +++ b/data-otservbr-global/npc/arito.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 111, lookLegs = 99, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -63,8 +63,8 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "nomads") then if player:getStorageValue(Storage.TibiaTales.AritosTask) <= 0 and player:getItemCount(7533) >= 0 then npcHandler:say({ - 'What?? My name on a deathlist which you retrieved from a nomad?? Show me!! ...', - 'Oh my god! They found me! You must help me! Please !!!!' + "What?? My name on a deathlist which you retrieved from a nomad?? Show me!! ...", + "Oh my god! They found me! You must help me! Please !!!!", }, npc, creature) if player:getStorageValue(Storage.TibiaTales.DefaultStart) <= 0 then player:setStorageValue(Storage.TibiaTales.DefaultStart, 1) @@ -73,7 +73,7 @@ local function creatureSayCallback(npc, creature, type, message) -- END TASK elseif player:getStorageValue(Storage.TibiaTales.AritosTask) == 2 then npcHandler:say({ - 'These are great news!! Thank you for your help! I don\'t have much, but without you I wouldn\'t have anything so please take this as a reward.' + "These are great news!! Thank you for your help! I don't have much, but without you I wouldn't have anything so please take this as a reward.", }, npc, creature) player:setStorageValue(Storage.TibiaTales.AritosTask, 3) player:addItem(3035, 50) @@ -85,7 +85,7 @@ end npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Come in, have a drink and something to eat.' } + { text = "Come in, have a drink and something to eat." }, } npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) @@ -105,7 +105,7 @@ npcConfig.shop = { { itemName = "mug of beer", clientId = 2880, buy = 2, count = 3 }, { itemName = "mug of lemonade", clientId = 2880, buy = 2, count = 12 }, { itemName = "mug of water", clientId = 2880, buy = 1, count = 1 }, - { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 } + { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -116,7 +116,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/arkarra.lua b/data-otservbr-global/npc/arkarra.lua index a3a02bed117..19403602dca 100644 --- a/data-otservbr-global/npc/arkarra.lua +++ b/data-otservbr-global/npc/arkarra.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 381 + lookType = 381, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Krrrrrng.' } + { text = "Krrrrrng." }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/arkhothep.lua b/data-otservbr-global/npc/arkhothep.lua index fe1ee6f9bd9..2c68cd0227a 100644 --- a/data-otservbr-global/npc/arkhothep.lua +++ b/data-otservbr-global/npc/arkhothep.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 87 + lookType = 87, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/arkulius.lua b/data-otservbr-global/npc/arkulius.lua index 8b5ea3cd91d..ca9d3f6cf9c 100644 --- a/data-otservbr-global/npc/arkulius.lua +++ b/data-otservbr-global/npc/arkulius.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 79, lookLegs = 90, lookFeet = 117, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -31,7 +31,7 @@ npcConfig.voices = { { text = "" }, { text = "...the minimum square deviation could cause a dislocation, in a matter of fact..." }, { text = "...it could be possible to bring the sphere to a destination where..." }, - { text = "Yes, that's it! The elementary particle are corresponding to the... the ... UNBELIEVEABLE!!!" } + { text = "Yes, that's it! The elementary particle are corresponding to the... the ... UNBELIEVEABLE!!!" }, } local keywordHandler = KeywordHandler:new() @@ -64,7 +64,7 @@ end local greetMsg = { "...if the expected constant is higher than... Hmmm, who are you?? What do you want?", "...then I could transform a spell to bend... How can anyone expect me to work under these conditions?? What do you want?", - "...if my calculations are correct, I will be able to revive... Arrgghh!! What do you want?" + "...if my calculations are correct, I will be able to revive... Arrgghh!! What do you want?", } local function greetCallback(npc, creature) @@ -86,19 +86,19 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "It happened while he carried out an experiment concerning the creation of the elemental {shrines}. I still get goose bumps just by thinking of it. ...", "You need to know about the process of creating an elemental shrine to understand it completely, but I don't want to go into detail now. ...", - "Anyway, his spell had a different outcome than he had planned. He accidentally created an Ice Overlord, pure living elemental ice, who froze him in a blink of an eye." + "Anyway, his spell had a different outcome than he had planned. He accidentally created an Ice Overlord, pure living elemental ice, who froze him in a blink of an eye.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif MsgContains(message, "shrine") then npcHandler:say({ "The creation of the elemental shrines is a really complex matter. They are actually nodes, locations where the matching elemental sphere is very close. ...", - "The shrine itself is like a portal between our world and the elemental {sphere} and enables us to use the elemental energy emerging from it." + "The shrine itself is like a portal between our world and the elemental {sphere} and enables us to use the elemental energy emerging from it.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif MsgContains(message, "sphere") and player:getLevel() >= 80 then npcHandler:say({ "There are four spheres we know of: ice, fire, earth and energy. .... Hmmm, should I ask or not?....The heck with it! Now that you know about the spheres ...", - "I found a way to visit them. It's VERY dangerous and there is a decent chance that you won't come back BUT if you succeed you'll write history!!! Ask me about that {mission} if you're interested." + "I found a way to visit them. It's VERY dangerous and there is a decent chance that you won't come back BUT if you succeed you'll write history!!! Ask me about that {mission} if you're interested.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif MsgContains(message, "mission") or MsgContains(message, "quest") then @@ -110,28 +110,28 @@ local function creatureSayCallback(npc, creature, type, message) "Okay, listen closely: First of all, you need to gather 20 enchanted rubies in order to go to the fire sphere. Deep under the academy, one floor below the elemental shrines, there is a machine. Put the gems in there and activate it. ...", "Once you got there, find a way to gather elemental fire in any form. You will face fire elementals, that's for sure, but I don't know how the fire is stored. ...", "Anyway, there should be a way to use that elemental fire and strengthen one of the elementals. If my calculations are right, you will create a Fire Overlord who hopefully will consist of some sort of 'concentrated' fire or something similar. ...", - "THAT'S what we need!! Are you in on it?" + "THAT'S what we need!! Are you in on it?", }, npc, creature) elseif player:isDruid() then npcHandler:say({ "Okay, listen closely: First of all, you need to gather 20 enchanted emeralds in order to go to the earth sphere. Deep under the academy, one floor below the elemental shrines, there is a machine. Put the gems in there and activate it. ...", "Once you got there, find a way to gather elemental earth in any form. You will face earth elementals, that's for sure, but I don't know how the earth is stored. ...", "Anyway, there should be a way to use that elemental earth and strengthen one of the elementals. If my calculations are right, you will create an Earth Overlord who hopefully will consist of some sort of 'concentrated' earth or something similar. ...", - "THAT'S what we need!! Are you in on it?" + "THAT'S what we need!! Are you in on it?", }, npc, creature) elseif player:isPaladin() then npcHandler:say({ "Okay, listen closely: First of all, you need to gather 20 enchanted sapphires in order to go to the ice sphere. Deep under the academy, one floor below the elemental shrines, there is a machine. Put the gems in there and activate it. ...", "Once you got there, find a way to gather elemental ice in any form. You will face ice elementals, that's for sure, but I don't know how the ice is stored. ...", "Anyway, there should be a way to use that elemental ice and strengthen one of the elementals. If my calculations are right, you will create an Ice Overlord who hopefully will consist of some sort of 'concentrated' ice or something similar. ...", - "THAT'S what we need!! Are you in on it?" + "THAT'S what we need!! Are you in on it?", }, npc, creature) elseif player:isKnight() then npcHandler:say({ "Okay, listen closely: First of all, you need to gather 20 enchanted amethysts in order to go to the energy sphere. Deep under the academy, one floor below the elemental shrines, there is a machine. Put the gems in there and activate it. ...", "Once you got there, find a way to gather elemental energy in any form. You will face energy elementals, that's for sure, but I don't know how the energy is stored. ...", "Anyway, there should be a way to use that energy and strengthen one of the elementals. If my calculations are right, you will create an Energy Overlord who hopefully will consist of some sort of 'concentrated' energy. ...", - "THAT'S what we need!! Are you in on it?" + "THAT'S what we need!! Are you in on it?", }, npc, creature) end else @@ -144,10 +144,15 @@ local function creatureSayCallback(npc, creature, type, message) if player:getItemCount(player:isSorcerer() and 946 or player:isDruid() and 947 or player:isPaladin() and 942 or player:isKnight() and 948) > 0 then player:setStorageValue(Storage.ElementalSphere.QuestLine, 2) npcHandler:say({ - "Impressive!! Let me take a look.......Ahh, " .. - (player:isSorcerer() and "an ETERNAL FLAME! Now you need to find a knight, a druid, and a paladin who also completed this first task. ..." or player:isDruid() and "MOTHER SOIL! Now you need to find a knight, a paladin, and a sorcerer who also completed this first task. ..." or player:isPaladin() and "a FLAWLESS ICE CRYSTAL! Now you need to find a knight, a druid, and a sorcerer who also completed this first task. ..." or player:isKnight() and "PURE ENERGY! Now you need to find a druid, a paladin, and a sorcerer who also completed this first task. ..."), + "Impressive!! Let me take a look.......Ahh, " + .. ( + player:isSorcerer() and "an ETERNAL FLAME! Now you need to find a knight, a druid, and a paladin who also completed this first task. ..." + or player:isDruid() and "MOTHER SOIL! Now you need to find a knight, a paladin, and a sorcerer who also completed this first task. ..." + or player:isPaladin() and "a FLAWLESS ICE CRYSTAL! Now you need to find a knight, a druid, and a sorcerer who also completed this first task. ..." + or player:isKnight() and "PURE ENERGY! Now you need to find a druid, a paladin, and a sorcerer who also completed this first task. ..." + ), "Go down in the cellar again. I prepared a room under the academy where it should be safe. Your task is to charge the machines with the elemental substances and summon the LORD OF THE ELEMENTS. ...", - "When you use an obsidian knife on it's corpse you hopefully get some of the precious neutral matter. It's the only way to revive my dear friend Alverus!!" + "When you use an obsidian knife on it's corpse you hopefully get some of the precious neutral matter. It's the only way to revive my dear friend Alverus!!", }, npc, creature) else npcHandler:say("You need some kind of pure elemental soil from the " .. (player:isSorcerer() and "Fire" or player:isDruid() and "Earth" or player:isPaladin() and "Ice" or player:isKnight() and "Energy") .. " Overlord. Come back when you've got it.", npc, creature) @@ -168,12 +173,12 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "How dare you asking me this?!? I'm Arkulius - Master of Elements, the HEADMASTER of this academy!!" }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I'm Arkulius - Master of Elements, the headmaster of this academy." }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = "I have better things to do than helping you. See that ice statue over there? My dear friend Alverus needs to be revived!" }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "Time is an illusion and completely irrelevant to me." }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = "Weapons are for those people who aren't able to use their heads or better what's INSIDE their heads. No offence ." }) -- < Knight; FIXME !!! -keywordHandler:addKeyword({ 'pits of inferno' }, StdModule.say, { npcHandler = npcHandler, text = "Yeye, I believe you almost feel like home among all those brainless creatures!" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "How dare you asking me this?!? I'm Arkulius - Master of Elements, the HEADMASTER of this academy!!" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Arkulius - Master of Elements, the headmaster of this academy." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "I have better things to do than helping you. See that ice statue over there? My dear friend Alverus needs to be revived!" }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Time is an illusion and completely irrelevant to me." }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "Weapons are for those people who aren't able to use their heads or better what's INSIDE their heads. No offence ." }) -- < Knight; FIXME !!! +keywordHandler:addKeyword({ "pits of inferno" }, StdModule.say, { npcHandler = npcHandler, text = "Yeye, I believe you almost feel like home among all those brainless creatures!" }) npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye and please stay away, okay?") npcHandler:setMessage(MESSAGE_FAREWELL, "At last! Good things come to those who wait.") @@ -190,7 +195,7 @@ npcConfig.shop = { { itemName = "mother soil", clientId = 947, sell = 5000 }, { itemName = "natural soil", clientId = 940, sell = 2000 }, { itemName = "neutral matter", clientId = 954, sell = 5000 }, - { itemName = "pure energy", clientId = 948, sell = 5000 } + { itemName = "pure energy", clientId = 948, sell = 5000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -201,7 +206,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/armenius.lua b/data-otservbr-global/npc/armenius.lua index 36d5e2585c0..9216c33cc3a 100644 --- a/data-otservbr-global/npc/armenius.lua +++ b/data-otservbr-global/npc/armenius.lua @@ -17,11 +17,11 @@ npcConfig.outfit = { lookLegs = 113, lookFeet = 115, lookAddons = 0, - lookMount = 0 + lookMount = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -79,7 +79,8 @@ local function creatureSayCallback(npc, creature, type, message) else npcHandler:say({ "...... ...... ....", - "HAHAHAHAHA! What the... HAHAHAHA! Come on, say it again, just because it's so funny - and then I'll get rid of you, little mouse!" }, npc, creature) + "HAHAHAHAHA! What the... HAHAHAHA! Come on, say it again, just because it's so funny - and then I'll get rid of you, little mouse!", + }, npc, creature) npcHandler:setTopic(playerId, 2) end end @@ -99,7 +100,7 @@ npcConfig.shop = { { itemName = "mug of beer", clientId = 2880, buy = 3, count = 3 }, { itemName = "mug of rum", clientId = 2880, buy = 10, count = 13 }, { itemName = "mug of wine", clientId = 2880, buy = 4, count = 2 }, - { itemName = "tomato", clientId = 3596, buy = 3 } + { itemName = "tomato", clientId = 3596, buy = 3 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -110,7 +111,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/arnold.lua b/data-otservbr-global/npc/arnold.lua index b84a6990bd6..081109de7e4 100644 --- a/data-otservbr-global/npc/arnold.lua +++ b/data-otservbr-global/npc/arnold.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 113, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/aruda.lua b/data-otservbr-global/npc/aruda.lua index 60c7b677319..b75b1aa8b58 100644 --- a/data-otservbr-global/npc/aruda.lua +++ b/data-otservbr-global/npc/aruda.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 81, lookLegs = 79, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Hey there, up for a chat?' } + { text = "Hey there, up for a chat?" }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/ashari.lua b/data-otservbr-global/npc/ashari.lua index 511a4b692e5..3c254411af7 100644 --- a/data-otservbr-global/npc/ashari.lua +++ b/data-otservbr-global/npc/ashari.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 38, lookBody = 117, lookLegs = 117, - lookFeet = 116 + lookFeet = 116, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/ashtamor.lua b/data-otservbr-global/npc/ashtamor.lua index 21b1c8a28a7..960f4f92a3b 100644 --- a/data-otservbr-global/npc/ashtamor.lua +++ b/data-otservbr-global/npc/ashtamor.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 76, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'The passage to the afterlife is filled with obstacles, but I can help you with my wares.' } + { text = "The passage to the afterlife is filled with obstacles, but I can help you with my wares." }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/asima.lua b/data-otservbr-global/npc/asima.lua index 138650060db..5e4e1713ad8 100644 --- a/data-otservbr-global/npc/asima.lua +++ b/data-otservbr-global/npc/asima.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 70, lookLegs = 93, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,7 +52,7 @@ end local items = { [VOCATION.BASE_ID.SORCERER] = 3074, - [VOCATION.BASE_ID.DRUID] = 3066 + [VOCATION.BASE_ID.DRUID] = 3066, } local function creatureSayCallback(npc, creature, type, message) @@ -64,26 +64,26 @@ local function creatureSayCallback(npc, creature, type, message) end local itemId = items[player:getVocation():getBaseId()] - if MsgContains(message, 'first rod') or MsgContains(message, 'first wand') then + if MsgContains(message, "first rod") or MsgContains(message, "first wand") then if player:isMage() then if player:getStorageValue(Storage.FirstMageWeapon) == -1 then - npcHandler:say('So you ask me for a {' .. ItemType(itemId):getName() .. '} to begin your adventure?', npc, creature) + npcHandler:say("So you ask me for a {" .. ItemType(itemId):getName() .. "} to begin your adventure?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('What? I have already gave you one {' .. ItemType(itemId):getName() .. '}!', npc, creature) + npcHandler:say("What? I have already gave you one {" .. ItemType(itemId):getName() .. "}!", npc, creature) end else - npcHandler:say('Sorry, you aren\'t a druid either a sorcerer.', npc, creature) + npcHandler:say("Sorry, you aren't a druid either a sorcerer.", npc, creature) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then player:addItem(itemId, 1) - npcHandler:say('Here you are young adept, take care yourself.', npc, creature) + npcHandler:say("Here you are young adept, take care yourself.", npc, creature) player:setStorageValue(Storage.FirstMageWeapon, 1) end npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 1 then + npcHandler:say("Ok then.", npc, creature) npcHandler:setTopic(playerId, 0) end return true @@ -152,7 +152,7 @@ npcConfig.shop = { { itemName = "wand of inferno", clientId = 3071, buy = 15000 }, { itemName = "wand of starstorm", clientId = 8092, buy = 18000 }, { itemName = "wand of voodoo", clientId = 8094, buy = 22000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -163,7 +163,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/asnarus.lua b/data-otservbr-global/npc/asnarus.lua index 4aefa1ec942..97dfb7cdc79 100644 --- a/data-otservbr-global/npc/asnarus.lua +++ b/data-otservbr-global/npc/asnarus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -118,7 +118,7 @@ npcConfig.shop = { { itemName = "ultimate spirit potion", clientId = 23374, buy = 438 }, { itemName = "vial", clientId = 2874, sell = 5 }, { itemName = "vortex bolt", clientId = 14252, buy = 6 }, - { itemName = "wild growth rune", clientId = 3156, buy = 160 } + { itemName = "wild growth rune", clientId = 3156, buy = 160 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -129,7 +129,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/asphota.lua b/data-otservbr-global/npc/asphota.lua index 578d95f0789..550cb36386b 100644 --- a/data-otservbr-global/npc/asphota.lua +++ b/data-otservbr-global/npc/asphota.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 54, lookLegs = 0, lookFeet = 0, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -73,7 +73,7 @@ npcConfig.shop = { { itemName = "torch", clientId = 2920, buy = 2 }, { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -84,7 +84,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/asrak.lua b/data-otservbr-global/npc/asrak.lua index 03e818ff75a..19a6f4d2d9a 100644 --- a/data-otservbr-global/npc/asrak.lua +++ b/data-otservbr-global/npc/asrak.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 20, lookLegs = 30, lookFeet = 40, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/asralius.lua b/data-otservbr-global/npc/asralius.lua index c1a5e12cfea..0ed8a1db19c 100644 --- a/data-otservbr-global/npc/asralius.lua +++ b/data-otservbr-global/npc/asralius.lua @@ -16,18 +16,18 @@ npcConfig.outfit = { lookBody = 85, lookLegs = 113, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Let me speak a few words to you.' }, - { text = 'Death comes to the best of us, but this time you had no chance.' } + { text = "Let me speak a few words to you." }, + { text = "Death comes to the best of us, but this time you had no chance." }, } local keywordHandler = KeywordHandler:new() @@ -57,5 +57,4 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/atrad.lua b/data-otservbr-global/npc/atrad.lua index 2a5cd409166..d28cba32024 100644 --- a/data-otservbr-global/npc/atrad.lua +++ b/data-otservbr-global/npc/atrad.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 132, lookFeet = 94, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -64,13 +64,13 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (MsgContains(message, "addon") or MsgContains(message, "outfit")) then - if (getPlayerStorageValue(creature, Storage.Atrad) < 1) then + if MsgContains(message, "addon") or MsgContains(message, "outfit") then + if getPlayerStorageValue(creature, Storage.Atrad) < 1 then npcHandler:say("You managed to deceive Erayo? Impressive. Well, I guess, since you have come that far, I might as well give you a task too, eh?", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif (MsgContains(message, "nose ring") or MsgContains(message, "ring")) then - if (getPlayerStorageValue(creature, Storage.Atrad) == 1) then + elseif MsgContains(message, "nose ring") or MsgContains(message, "ring") then + if getPlayerStorageValue(creature, Storage.Atrad) == 1 then if (getPlayerItemCount(creature, 5804) >= 1) and getPlayerItemCount(creature, 5930) >= 1 then npcHandler:say("I see you brought my stuff. Good. I'll keep my promise: Here's katana in return.", npc, creature) doPlayerRemoveItem(creature, 5804, 1) @@ -83,11 +83,11 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 0) end end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 2) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 2 then npcHandler:say("Okay, listen up. I don't have a list of stupid objects, I just want two things. A behemoth claw and a nose ring. Got that?", npc, creature) npcHandler:setTopic(playerId, 3) - elseif (npcHandler:getTopic(playerId) == 3) then + elseif npcHandler:getTopic(playerId) == 3 then npcHandler:say("Good. Come back then you have BOTH. Should be clear where to get a behemoth claw from. There's a horned fox who wears a nose ring. Good luck.", npc, creature) setPlayerStorageValue(creature, Storage.Atrad, 1) npcHandler:setTopic(playerId, 0) @@ -102,7 +102,7 @@ npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "assassin star", clientId = 7368, buy = 100 } + { itemName = "assassin star", clientId = 7368, buy = 100 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -113,7 +113,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/atur.lua b/data-otservbr-global/npc/atur.lua index 31ed1cc16c7..0e044a6378d 100644 --- a/data-otservbr-global/npc/atur.lua +++ b/data-otservbr-global/npc/atur.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 78, lookLegs = 0, lookFeet = 3, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/aurita.lua b/data-otservbr-global/npc/aurita.lua index dd7acf62d78..7a0b64d02d3 100644 --- a/data-otservbr-global/npc/aurita.lua +++ b/data-otservbr-global/npc/aurita.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 5811 + lookTypeEx = 5811, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,23 +59,22 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Yes, there is something. I'm in love with Taegen, but he is a faun. As such he's inhabiting the forests, dancing with fairies. And I, being a mermaid, am living in the ocean, swimming with the fish between coral reefs. ...", "But I lost my heart to Taegen, I can't help it. We would love to spend some time together, but not just sitting on the beach. ...", - "I'd love to show him my homestead beneath the waves. I have an idea but I can't do it alone. Would you help me?" + "I'd love to show him my homestead beneath the waves. I have an idea but I can't do it alone. Would you help me?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(ThreatenedDreams.Mission03[1]) == 1 then npcHandler:say({ - "There is a fairy who once told me about this spell. Perhaps she will share her knowledge. You can find her in a small fairy village in the southwest of Feyrist." + "There is a fairy who once told me about this spell. Perhaps she will share her knowledge. You can find her in a small fairy village in the southwest of Feyrist.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif player:getStorageValue(ThreatenedDreams.Mission03[1]) >= 2 - and player:getStorageValue(ThreatenedDreams.Mission03[1]) <= 3 then + elseif player:getStorageValue(ThreatenedDreams.Mission03[1]) >= 2 and player:getStorageValue(ThreatenedDreams.Mission03[1]) <= 3 then npcHandler:say({ - "The spell works! I already took a walk on the beach last night in the moonlight. Please talk to Taegen now, he may have another request." + "The spell works! I already took a walk on the beach last night in the moonlight. Please talk to Taegen now, he may have another request.", }, npc, creature) npcHandler:setTopic(playerId, 0) else npcHandler:say({ - "Thank you again, friend! Taegen and I we're so happy now." + "Thank you again, friend! Taegen and I we're so happy now.", }, npc, creature) npcHandler:setTopic(playerId, 0) end @@ -84,14 +83,14 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(ThreatenedDreams.Mission03.EmptyStarlightVial) < 1 then npcHandler:say({ "Thank you, friend! Please take the starlight vial. It is made of a very rare kind of enchanted glass and magical metals, so it is able to preserve starlight. ...", - "A long time ago a pixie knight of Maelyrra carried it with her. But when she was flying above the waves she accidentally dropped it and it sunk. I found it but now you may take it and use it to help Feyrist." + "A long time ago a pixie knight of Maelyrra carried it with her. But when she was flying above the waves she accidentally dropped it and it sunk. I found it but now you may take it and use it to help Feyrist.", }, npc, creature) player:addItem(25731, 1) player:setStorageValue(ThreatenedDreams.Mission03.EmptyStarlightVial, 1) npcHandler:setTopic(playerId, 0) else npcHandler:say({ - "I already gave you the empty starlight vial." + "I already gave you the empty starlight vial.", }, npc, creature) end end @@ -99,7 +98,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "That's very kind of you, my friend! Listen: I know there is a spell to transform my fishtail into legs. It is a temporary effect, so I could return to the ocean as soon as the spell ends. Unfortunately I don't know how to cast this spell. ...", - "But there is a fairy who once told me about it. Perhaps she will share her knowledge. You can find her in a small fairy village in the southwest of Feyrist." + "But there is a fairy who once told me about it. Perhaps she will share her knowledge. You can find her in a small fairy village in the southwest of Feyrist.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission03[1], 1) player:setStorageValue(ThreatenedDreams.Mission03.UnlikelyCouple, 1) diff --git a/data-otservbr-global/npc/auron.lua b/data-otservbr-global/npc/auron.lua index fbc8011b80f..76ffe1a4809 100644 --- a/data-otservbr-global/npc/auron.lua +++ b/data-otservbr-global/npc/auron.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 508 + lookType = 508, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,7 +50,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -61,7 +61,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/avar_tar.lua b/data-otservbr-global/npc/avar_tar.lua index edbdaf36747..79d95f91862 100644 --- a/data-otservbr-global/npc/avar_tar.lua +++ b/data-otservbr-global/npc/avar_tar.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 73 + lookType = 73, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,82 +54,79 @@ local function creatureSayCallback(npc, creature, type, message) end if npcHandler:getTopic(playerId) == 0 then - if MsgContains(message, 'outfit') then + if MsgContains(message, "outfit") then npcHandler:say({ - 'I\'m tired of all these young unskilled wannabe heroes. Every Tibian can show his skills or actions by wearing a special outfit. To prove oneself worthy of the demon outfit, this is how it goes: ...', - 'The base outfit will be granted for completing the annihilator quest, which isn\'t much of a challenge nowadays, in my opinion. Anyway ...', - 'The shield however will only be granted to those adventurers who have finished the demon helmet quest. ...', - 'Well, the helmet is for those who really are tenacious and have hunted down all 6666 demons and finished the demon oak as well. ...', - 'Are you interested?' + "I'm tired of all these young unskilled wannabe heroes. Every Tibian can show his skills or actions by wearing a special outfit. To prove oneself worthy of the demon outfit, this is how it goes: ...", + "The base outfit will be granted for completing the annihilator quest, which isn't much of a challenge nowadays, in my opinion. Anyway ...", + "The shield however will only be granted to those adventurers who have finished the demon helmet quest. ...", + "Well, the helmet is for those who really are tenacious and have hunted down all 6666 demons and finished the demon oak as well. ...", + "Are you interested?", }, npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'cookie') then - if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 - and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.AvarTar) ~= 1 then - npcHandler:say('Do you really think you could bribe a hero like me with a meagre cookie?', npc, creature) + elseif MsgContains(message, "cookie") then + if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.AvarTar) ~= 1 then + npcHandler:say("Do you really think you could bribe a hero like me with a meagre cookie?", npc, creature) npcHandler:setTopic(playerId, 3) end end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('So you want to have the demon outfit, hah! Let\'s have a look first if you really deserve it. Tell me: {base}, {shield} or {helmet}?', npc, creature) + npcHandler:say("So you want to have the demon outfit, hah! Let's have a look first if you really deserve it. Tell me: {base}, {shield} or {helmet}?", npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 3 then if not player:removeItem(130, 1) then - npcHandler:say('You have no cookie that I\'d like.', npc, creature) + npcHandler:say("You have no cookie that I'd like.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:setStorageValue(Storage.WhatAFoolish.CookieDelivery.AvarTar, 1) if player:getCookiesDelivered() == 10 then - player:addAchievement('Allow Cookies?') + player:addAchievement("Allow Cookies?") end npc:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) - npcHandler:say('Well, you won\'t! Though it looks tasty ...What the ... WHAT DO YOU THINK YOU ARE? THIS IS THE ULTIMATE INSULT! GET LOST!', npc, creature) + npcHandler:say("Well, you won't! Though it looks tasty ...What the ... WHAT DO YOU THINK YOU ARE? THIS IS THE ULTIMATE INSULT! GET LOST!", npc, creature) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 3 then - npcHandler:say('I see.', npc, creature) + npcHandler:say("I see.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'base') then + if MsgContains(message, "base") then if player:getStorageValue(Storage.Quest.U7_24.TheAnnihilator.Reward) == 1 then player:addOutfit(541) player:addOutfit(542) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) player:setStorageValue(Storage.Quest.U7_24.TheAnnihilator.Reward, 2) - npcHandler:say('Receive the base outfit, |PLAYERNAME|.', npc, creature) + npcHandler:say("Receive the base outfit, |PLAYERNAME|.", npc, creature) else - npcHandler:say('You need to complete annihilator quest first, |PLAYERNAME|.', npc, creature) + npcHandler:say("You need to complete annihilator quest first, |PLAYERNAME|.", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif MsgContains(message, 'shield') then - if player:getStorageValue(Storage.Quest.U7_24.TheAnnihilator.Reward) == 2 - and player:getStorageValue(Storage.Quest.U6_4.DemonHelmet.Rewards.DemonHelmet) == 1 then + elseif MsgContains(message, "shield") then + if player:getStorageValue(Storage.Quest.U7_24.TheAnnihilator.Reward) == 2 and player:getStorageValue(Storage.Quest.U6_4.DemonHelmet.Rewards.DemonHelmet) == 1 then player:addOutfitAddon(541, 1) player:addOutfitAddon(542, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) player:setStorageValue(Storage.Quest.U6_4.DemonHelmet.Rewards.DemonHelmet, 2) - npcHandler:say('Receive the shield, |PLAYERNAME|.', npc, creature) + npcHandler:say("Receive the shield, |PLAYERNAME|.", npc, creature) else - npcHandler:say('The shield will only be granted to those adventurers who have finished the demon helmet quest, |PLAYERNAME|.', npc, creature) + npcHandler:say("The shield will only be granted to those adventurers who have finished the demon helmet quest, |PLAYERNAME|.", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif MsgContains(message, 'helmet') then - if player:getStorageValue(Storage.Quest.U7_24.TheAnnihilator.Reward) == 2 - and player:getStorageValue(Storage.DemonOak.Done) == 3 then + elseif MsgContains(message, "helmet") then + if player:getStorageValue(Storage.Quest.U7_24.TheAnnihilator.Reward) == 2 and player:getStorageValue(Storage.DemonOak.Done) == 3 then player:addOutfitAddon(541, 2) player:addOutfitAddon(542, 2) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) player:setStorageValue(Storage.DemonOak.Done, 4) - npcHandler:say('Receive the helmet, |PLAYERNAME|.', npc, creature) + npcHandler:say("Receive the helmet, |PLAYERNAME|.", npc, creature) else - npcHandler:say('The helmet is for those who have hunted down all 6666 demons and finished the demon oak as well, |PLAYERNAME|.', npc, creature) + npcHandler:say("The helmet is for those who have hunted down all 6666 demons and finished the demon oak as well, |PLAYERNAME|.", npc, creature) npcHandler:setTopic(playerId, 2) end end @@ -137,9 +134,9 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_GREET, 'Greetings, traveller |PLAYERNAME|!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'See you later, |PLAYERNAME|.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'See you later, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_GREET, "Greetings, traveller |PLAYERNAME|!") +npcHandler:setMessage(MESSAGE_FAREWELL, "See you later, |PLAYERNAME|.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "See you later, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/awarness_of_the_emperor.lua b/data-otservbr-global/npc/awarness_of_the_emperor.lua index b903b8bc8c7..b8dd66675ca 100644 --- a/data-otservbr-global/npc/awarness_of_the_emperor.lua +++ b/data-otservbr-global/npc/awarness_of_the_emperor.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 231 + lookType = 231, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -71,7 +71,7 @@ local function creatureSayCallback(npc, creature, type, message) "It is still weak and disoriented. You might stand a chance - this is our only chance. I will send you to the point to where the vital force is channelled. I have no idea where that might be though. ...", "You will probably have to fight some sort of vessel the snake god uses. Even if you defeat it, it is likely that it only weakens the snake. ...", "You might have to fight several incarnations until the snake god is worn out enough. Then use the power of the snake's own sceptre against it. Use it on its corpse to claim your victory. ...", - "Be prepared for the fight of your life! Are you ready?" + "Be prepared for the fight of your life! Are you ready?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.WrathoftheEmperor.Questline) == 32 then @@ -80,7 +80,7 @@ local function creatureSayCallback(npc, creature, type, message) "But such an act would bring me down to your own barbaric level and only fuel the corruption that destroys the land that I own. Therefore I will not only spare your miserable life but show your the generosity of the dragon emperor. ...", "I will reward you beyond your wildest dreams! ...", "I grant you three chests - filled to the lid with platinum coins, a house in the city in which you may reside, a set of the finest armor Zao has to offer, and a casket of never-ending mana. ...", - "Speak with magistrate Izsh in the ministry about your reward. And now leave before I change my mind!" + "Speak with magistrate Izsh in the ministry about your reward. And now leave before I change my mind!", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.TeleportAccess.SleepingDragon, 2) player:setStorageValue(Storage.WrathoftheEmperor.Questline, 33) diff --git a/data-otservbr-global/npc/azalea.lua b/data-otservbr-global/npc/azalea.lua index 7049daf169f..1dd4ff5f8a5 100644 --- a/data-otservbr-global/npc/azalea.lua +++ b/data-otservbr-global/npc/azalea.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 27, lookFeet = 40, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,86 +51,103 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Alia) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Alia) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Alia, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/azil.lua b/data-otservbr-global/npc/azil.lua index deea48cb5aa..84ae099295a 100644 --- a/data-otservbr-global/npc/azil.lua +++ b/data-otservbr-global/npc/azil.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 9, lookLegs = 12, lookFeet = 123, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -86,7 +86,7 @@ npcConfig.shop = { { itemName = "studded shield", clientId = 3426, buy = 50, sell = 16 }, { itemName = "viking helmet", clientId = 3367, buy = 265, sell = 66 }, { itemName = "viking shield", clientId = 3431, buy = 260, sell = 85 }, - { itemName = "wooden shield", clientId = 3412, buy = 15, sell = 5 } + { itemName = "wooden shield", clientId = 3412, buy = 15, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -97,7 +97,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/baa_leal.lua b/data-otservbr-global/npc/baa_leal.lua index 8c7e24e2bd7..5a1cc2a96b5 100644 --- a/data-otservbr-global/npc/baa_leal.lua +++ b/data-otservbr-global/npc/baa_leal.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 51 + lookType = 51, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,14 +56,14 @@ local function greetCallback(npc, creature, message) if not player:getCondition(CONDITION_FIRE) and not MsgContains(message, "djanni'hah") then player:getPosition():sendMagicEffect(CONST_ME_EXPLOSIONAREA) player:addCondition(condition) - npcHandler:say('Take this!', npc, creature) + npcHandler:say("Take this!", npc, creature) return false end if player:getStorageValue(Storage.DjinnWar.EfreetFaction.Mission01) < 1 then - npcHandler:setMessage(MESSAGE_GREET, 'You know the code human! Very well then... What do you want, |PLAYERNAME|?') + npcHandler:setMessage(MESSAGE_GREET, "You know the code human! Very well then... What do you want, |PLAYERNAME|?") else - npcHandler:setMessage(MESSAGE_GREET, 'You are still alive, |PLAYERNAME|? Well, what do you want?') + npcHandler:setMessage(MESSAGE_GREET, "You are still alive, |PLAYERNAME|? Well, what do you want?") end return true end @@ -77,59 +77,59 @@ local function creatureSayCallback(npc, creature, type, message) end local missionProgress = player:getStorageValue(Storage.DjinnWar.EfreetFaction.Mission01) - if MsgContains(message, 'mission') then + if MsgContains(message, "mission") then if missionProgress < 1 then npcHandler:say({ - 'Each mission and operation is a crucial step towards our victory! ...', - 'Now that we speak of it ...', - 'Since you are no djinn, there is something you could help us with. Are you interested, human?' + "Each mission and operation is a crucial step towards our victory! ...", + "Now that we speak of it ...", + "Since you are no djinn, there is something you could help us with. Are you interested, human?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif table.contains({ 1, 2 }, missionProgress) then - npcHandler:say('Did you find the thief of our supplies?', npc, creature) + npcHandler:say("Did you find the thief of our supplies?", npc, creature) npcHandler:setTopic(playerId, 2) else - npcHandler:say('Did you already talk to Alesar? He has another mission for you!', npc, creature) + npcHandler:say("Did you already talk to Alesar? He has another mission for you!", npc, creature) end elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then npcHandler:say({ - 'Well ... All right. You may only be a human, but you do seem to have the right spirit. ...', - 'Listen! Since our base of operations is set in this isolated spot we depend on supplies from outside. These supplies are crucial for us to win the war. ...', - 'Unfortunately, it has happened that some of our supplies have disappeared on their way to this fortress. At first we thought it was the Marid, but intelligence reports suggest a different explanation. ...', - 'We now believe that a human was behind the theft! ...', - 'His identity is still unknown but we have been told that the thief fled to the human settlement called Carlin. I want you to find him and report back to me. Nobody messes with the Efreet and lives to tell the tale! ...', - 'Now go! Travel to the northern city Carlin! Keep your eyes open and look around for something that might give you a clue!' + "Well ... All right. You may only be a human, but you do seem to have the right spirit. ...", + "Listen! Since our base of operations is set in this isolated spot we depend on supplies from outside. These supplies are crucial for us to win the war. ...", + "Unfortunately, it has happened that some of our supplies have disappeared on their way to this fortress. At first we thought it was the Marid, but intelligence reports suggest a different explanation. ...", + "We now believe that a human was behind the theft! ...", + "His identity is still unknown but we have been told that the thief fled to the human settlement called Carlin. I want you to find him and report back to me. Nobody messes with the Efreet and lives to tell the tale! ...", + "Now go! Travel to the northern city Carlin! Keep your eyes open and look around for something that might give you a clue!", }, npc, creature) player:setStorageValue(Storage.DjinnWar.EfreetFaction.Start, 1) player:setStorageValue(Storage.DjinnWar.EfreetFaction.Mission01, 1) - elseif MsgContains(message, 'no') then - npcHandler:say('After all, you\'re just a human.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("After all, you're just a human.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then - npcHandler:say('Finally! What is his name then?', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("Finally! What is his name then?", npc, creature) npcHandler:setTopic(playerId, 3) - elseif MsgContains(message, 'no') then - npcHandler:say('Then go to Carlin and search for him! Look for something that might give you a clue!', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Then go to Carlin and search for him! Look for something that might give you a clue!", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 3 then - if MsgContains(message, 'partos') then + if MsgContains(message, "partos") then if missionProgress ~= 2 then - npcHandler:say('Hmmm... I don\'t think so. Return to Thais and continue your search!', npc, creature) + npcHandler:say("Hmmm... I don't think so. Return to Thais and continue your search!", npc, creature) else npcHandler:say({ - 'You found the thief! Excellent work, soldier! You are doing well - for a human, that is. Here - take this as a reward. ...', - 'Since you have proven to be a capable soldier, we have another mission for you. ...', - 'If you are interested go to Alesar and ask him about it.' + "You found the thief! Excellent work, soldier! You are doing well - for a human, that is. Here - take this as a reward. ...", + "Since you have proven to be a capable soldier, we have another mission for you. ...", + "If you are interested go to Alesar and ask him about it.", }, npc, creature) player:addMoney(600) player:setStorageValue(Storage.DjinnWar.EfreetFaction.Mission01, 3) end else - npcHandler:say('Hmmm... I don\'t think so. Return to Thais and continue your search!', npc, creature) + npcHandler:say("Hmmm... I don't think so. Return to Thais and continue your search!", npc, creature) end npcHandler:setTopic(playerId, 0) end @@ -139,7 +139,7 @@ end -- Greeting message keywordHandler:addGreetKeyword({ "djanni'hah" }, { npcHandler = npcHandler, text = "What do you want from me, |PLAYERNAME|?" }) -npcHandler:setMessage(MESSAGE_FAREWELL, 'Stand down, soldier!') +npcHandler:setMessage(MESSAGE_FAREWELL, "Stand down, soldier!") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/baltim.lua b/data-otservbr-global/npc/baltim.lua index 68644437fc8..37c5c9d34ba 100644 --- a/data-otservbr-global/npc/baltim.lua +++ b/data-otservbr-global/npc/baltim.lua @@ -17,11 +17,11 @@ npcConfig.outfit = { lookLegs = 39, lookFeet = 20, lookAddons = 1, - lookMount = 0 + lookMount = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -131,7 +131,7 @@ npcConfig.shop = { { itemName = "viking helmet", clientId = 3367, buy = 265 }, { itemName = "viking shield", clientId = 3431, buy = 260 }, { itemName = "war hammer", clientId = 3279, buy = 10000 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -142,7 +142,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/bambi_bonecrusher.lua b/data-otservbr-global/npc/bambi_bonecrusher.lua index 2f848e73a85..30af7ffe7bb 100644 --- a/data-otservbr-global/npc/bambi_bonecrusher.lua +++ b/data-otservbr-global/npc/bambi_bonecrusher.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 68, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/barazbaz.lua b/data-otservbr-global/npc/barazbaz.lua index d27825f8a96..3421dd672f2 100644 --- a/data-otservbr-global/npc/barazbaz.lua +++ b/data-otservbr-global/npc/barazbaz.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 55, lookLegs = 49, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,7 +61,7 @@ local function creatureSayCallback(npc, creature, type, message) "Usually, I'm too much bound to my duties to the city to sacrifice time for such an endeavour. ...", "But on the other hand, just now is the time of an important decision of the magistrate concerning the funding of the archives. It is a matter easily overlooked by our good citizens. ...", "If you'd be so kind to place just one of your votes for the funding of the archives, I would be inclined to take the time for your investigation in turn. ...", - "Just go to Marvin in the magistrate and vote for a greater funding of the archives. Afterwards, I might be able to present you with some first results of my investigations on your behalf." + "Just go to Marvin in the magistrate and vote for a greater funding of the archives. Afterwards, I might be able to present you with some first results of my investigations on your behalf.", }, npc, creature, 10) player:setStorageValue(Storage.DarkTrails.Mission07, 1) elseif MsgContains(message, "abandoned sewers") and player:getStorageValue(Storage.DarkTrails.Mission08) == 1 then @@ -71,13 +71,13 @@ local function creatureSayCallback(npc, creature, type, message) "The nature of this evil is up to debate, but there are hints that this evil predated the settlement of men and that it perhaps was part of a more ancient civilisation or caused the downfall of the latter. ...", "After that evil had been overcome, much was sealed away. Some say that only forbidden knowledge had been sealed, but others like me were always worried that more had been hidden. ...", "Something like the ruins you have found. What you have seen there hints to a new incident, though. As if someone or something was searching for something. In the past, when those ruins were buried, people were primitive and superstitious. ...", - "Today, we have advanced far more and could have the ruins investigated in a far more efficient way. And that is what I would just recommend you to do: get a necrometer from magistrate Jondrin upstairs and investigate the ruins thoroughly." + "Today, we have advanced far more and could have the ruins investigated in a far more efficient way. And that is what I would just recommend you to do: get a necrometer from magistrate Jondrin upstairs and investigate the ruins thoroughly.", }, npc, creature, 10) player:setStorageValue(Storage.DarkTrails.Mission09, 1) elseif (MsgContains(message, "notebook")) and (player:getStorageValue(Storage.DarkTrails.Mission11) == 1 and getPlayerItemCount(creature, 11450) == 1) then npcHandler:say({ " I know that handwriting you describe! It belongs to a traveller from far away. Magistrate Sholley introduced him to me and she was quite excited to learn more about our city's past. ...", - "I should have thought of him right in the beginning when I heard the stuff you mentioned. But I haven't seen him for a while. You should ask Sholley about her friend to learn about his whereabouts." + "I should have thought of him right in the beginning when I heard the stuff you mentioned. But I haven't seen him for a while. You should ask Sholley about her friend to learn about his whereabouts.", }, npc, creature, 10) player:setStorageValue(Storage.DarkTrails.Mission12, 1) doPlayerRemoveItem(creature, 11450, 1) diff --git a/data-otservbr-global/npc/barbara.lua b/data-otservbr-global/npc/barbara.lua index d2eff4eece6..7e695614c1b 100644 --- a/data-otservbr-global/npc/barbara.lua +++ b/data-otservbr-global/npc/barbara.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 71, lookLegs = 100, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,8 +50,8 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'hi' }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the queen greet with her title!" }) -keywordHandler:addKeyword({ 'hello' }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the queen greet with her title!" }) +keywordHandler:addKeyword({ "hi" }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the queen greet with her title!" }) +keywordHandler:addKeyword({ "hello" }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the queen greet with her title!" }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -61,7 +61,7 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if table.contains({ 'fuck', 'idiot', 'asshole', 'ass', 'fag', 'stupid', 'tyrant', 'shit', 'lunatic' }, message) then + if table.contains({ "fuck", "idiot", "asshole", "ass", "fag", "stupid", "tyrant", "shit", "lunatic" }, message) then local player = Player(creature) local conditions = { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_PARALYZE, CONDITION_DROWN, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED } for i = 1, #conditions do @@ -71,18 +71,18 @@ local function creatureSayCallback(npc, creature, type, message) end player:getPosition():sendMagicEffect(CONST_ME_EXPLOSIONAREA) player:addHealth(1 - player:getHealth()) - npcHandler:say('Take this!', npc, creature) + npcHandler:say("Take this!", npc, creature) npc:getPosition():sendMagicEffect(CONST_ME_YELLOW_RINGS) end return true end -- Greeting -keywordHandler:addGreetKeyword({ 'hail queen' }, { npcHandler = npcHandler, text = 'HAIL TO THE QUEEN!' }) -keywordHandler:addGreetKeyword({ 'salutations queen' }, { npcHandler = npcHandler, text = 'HAIL TO THE QUEEN!' }) +keywordHandler:addGreetKeyword({ "hail queen" }, { npcHandler = npcHandler, text = "HAIL TO THE QUEEN!" }) +keywordHandler:addGreetKeyword({ "salutations queen" }, { npcHandler = npcHandler, text = "HAIL TO THE QUEEN!" }) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'LONG LIVE THE QUEEN!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'LONG LIVE THE QUEEN! You may leave now!') +npcHandler:setMessage(MESSAGE_WALKAWAY, "LONG LIVE THE QUEEN!") +npcHandler:setMessage(MESSAGE_FAREWELL, "LONG LIVE THE QUEEN! You may leave now!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/barnabas_dee.lua b/data-otservbr-global/npc/barnabas_dee.lua index 45b813a14b3..9359d320a5d 100644 --- a/data-otservbr-global/npc/barnabas_dee.lua +++ b/data-otservbr-global/npc/barnabas_dee.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 95, lookLegs = 117, lookFeet = 98, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,11 +54,12 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (MsgContains(message, "mission")) then + if MsgContains(message, "mission") then if player:getStorageValue(Storage.Oramond.PeppermoonBell) < 1 then npcHandler:say({ "I am afraid my supplies of peppermoon bell powder have gone flat again. Please provide me with the pollen of this flower. ...", - "It only blooms underground in a cavern to the northwest. I will need 15 units of pollen. Bring them to me and we shall conduct a séance." }, npc, creature) + "It only blooms underground in a cavern to the northwest. I will need 15 units of pollen. Bring them to me and we shall conduct a séance.", + }, npc, creature) player:setStorageValue(Storage.Oramond.PeppermoonBell, 1) player:setStorageValue(Storage.Oramond.PeppermoonBellCount, 0) npcHandler:setTopic(playerId, 0) @@ -70,7 +71,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) end end - if (MsgContains(message, "yes")) then + if MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then if player:getStorageValue(Storage.Oramond.PeppermoonBellCount) >= 15 then if player:getStorageValue(Storage.DarkTrails.Mission15) == 1 then @@ -102,7 +103,8 @@ local function creatureSayCallback(npc, creature, type, message) "Concentrate! ...", "Concentrate! ...", "Concentrate! ...", - "Do you feel something?" }, npc, creature) + "Do you feel something?", + }, npc, creature) npcHandler:setTopic(playerId, 4) elseif npcHandler:getTopic(playerId) == 4 then npcHandler:say("Yes, take care, the gate is opening! Can you see a bright light?", npc, creature) @@ -114,7 +116,7 @@ local function creatureSayCallback(npc, creature, type, message) player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "seance")) then + elseif MsgContains(message, "seance") then if player:getStorageValue(Storage.DarkTrails.Mission15) == 3 then npcHandler:say("Splendid. Let me make the final preparations... There. Are you ready, too?", npc, creature) npcHandler:setTopic(playerId, 3) diff --git a/data-otservbr-global/npc/barney.lua b/data-otservbr-global/npc/barney.lua index 0ce77262765..3724d3d33b9 100644 --- a/data-otservbr-global/npc/barney.lua +++ b/data-otservbr-global/npc/barney.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 39, lookLegs = 115, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/barry.lua b/data-otservbr-global/npc/barry.lua index 70048859cb2..a017418d571 100644 --- a/data-otservbr-global/npc/barry.lua +++ b/data-otservbr-global/npc/barry.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,23 +58,23 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'report') then + if MsgContains(message, "report") then local player = Player(creature) if table.contains({ 9, 11 }, player:getStorageValue(Storage.InServiceofYalahar.Questline)) then - npcHandler:say('Oh my, where to begin with .. .', npc, creature) + npcHandler:say("Oh my, where to begin with .. .", npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, player:getStorageValue(Storage.InServiceofYalahar.Questline) + 1) player:setStorageValue(Storage.InServiceofYalahar.Mission02, player:getStorageValue(Storage.InServiceofYalahar.Mission02) + 1) -- StorageValue for Questlog 'Mission 02: Watching the Watchmen' end - elseif MsgContains(message, 'pass') then - npcHandler:say('You can {pass} either to the {Magician Quarter} or {Sunken Quarter}. Which one will it be?', npc, creature) + elseif MsgContains(message, "pass") then + npcHandler:say("You can {pass} either to the {Magician Quarter} or {Sunken Quarter}. Which one will it be?", npc, creature) npcHandler:setTopic(playerId, 1) elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'magician') then + if MsgContains(message, "magician") then local destination = Position(32885, 31157, 7) Player(creature):teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'sunken') then + elseif MsgContains(message, "sunken") then local destination = Position(32884, 31162, 7) Player(creature):teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/npc/bashira.lua b/data-otservbr-global/npc/bashira.lua index d4f07305ce2..9171e2e373c 100644 --- a/data-otservbr-global/npc/bashira.lua +++ b/data-otservbr-global/npc/bashira.lua @@ -15,17 +15,17 @@ npcConfig.outfit = { lookHead = 78, lookBody = 63, lookLegs = 97, - lookFeet = 76 + lookFeet = 76, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Welcome to Ab\'Dendriel\'s store for general goods.' } + { text = "Welcome to Ab'Dendriel's store for general goods." }, } local keywordHandler = KeywordHandler:new() @@ -96,7 +96,7 @@ npcConfig.shop = { { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "waterskin of water", clientId = 2901, buy = 10, count = 1 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -107,7 +107,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/basilisk.lua b/data-otservbr-global/npc/basilisk.lua index 9b72688b038..d0b8993ab99 100644 --- a/data-otservbr-global/npc/basilisk.lua +++ b/data-otservbr-global/npc/basilisk.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 28 + lookType = 28, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/battlemart.lua b/data-otservbr-global/npc/battlemart.lua index 77cc8031d22..d8109854bc0 100644 --- a/data-otservbr-global/npc/battlemart.lua +++ b/data-otservbr-global/npc/battlemart.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 95, lookFeet = 113, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -187,7 +187,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/baxter.lua b/data-otservbr-global/npc/baxter.lua index 8de9877bac4..1f7cd756e32 100644 --- a/data-otservbr-global/npc/baxter.lua +++ b/data-otservbr-global/npc/baxter.lua @@ -16,18 +16,18 @@ npcConfig.outfit = { lookBody = 29, lookLegs = 29, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'People of Thais, bring honour to your king by fighting in the orc war!' }, - { text = 'The orcs are preparing for war!!!' } + { text = "People of Thais, bring honour to your king by fighting in the orc war!" }, + { text = "The orcs are preparing for war!!!" }, } local keywordHandler = KeywordHandler:new() @@ -73,7 +73,7 @@ npcConfig.shop = { { itemName = "orc tooth", clientId = 10196, sell = 150 }, { itemName = "orcish gear", clientId = 11477, sell = 85 }, { itemName = "shamanic hood", clientId = 11478, sell = 45 }, - { itemName = "skull belt", clientId = 11480, sell = 80 } + { itemName = "skull belt", clientId = 11480, sell = 80 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -84,7 +84,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/beatrice.lua b/data-otservbr-global/npc/beatrice.lua index 4ad129e10a8..50c4ccfb9cc 100644 --- a/data-otservbr-global/npc/beatrice.lua +++ b/data-otservbr-global/npc/beatrice.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 103, lookLegs = 69, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Selling general goods and paperware! Come to my shop!' } + { text = "Selling general goods and paperware! Come to my shop!" }, } local keywordHandler = KeywordHandler:new() @@ -116,7 +116,7 @@ npcConfig.shop = { { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "waterball", clientId = 893, buy = 222 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -127,7 +127,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/benevola.lua b/data-otservbr-global/npc/benevola.lua index 94066239f42..d99faccac1f 100644 --- a/data-otservbr-global/npc/benevola.lua +++ b/data-otservbr-global/npc/benevola.lua @@ -16,19 +16,19 @@ npcConfig.outfit = { lookBody = 120, lookLegs = 15, lookFeet = 94, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Nature is in pain.' }, - { text = 'The weather is fine today.' }, - { text = 'I can hear the call of the forest.' } + { text = "Nature is in pain." }, + { text = "The weather is fine today." }, + { text = "I can hear the call of the forest." }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/benjamin.lua b/data-otservbr-global/npc/benjamin.lua index bca8761c97a..9b26653fcf3 100644 --- a/data-otservbr-global/npc/benjamin.lua +++ b/data-otservbr-global/npc/benjamin.lua @@ -16,19 +16,19 @@ npcConfig.outfit = { lookBody = 79, lookLegs = 117, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Welcome to the post office!' }, - { text = 'If you need help with letters or parcels, just ask me. I can explain everything.' }, - { text = 'Hey, send a letter to your friend now and then. Keep in touch, you know.' } + { text = "Welcome to the post office!" }, + { text = "If you need help with letters or parcels, just ask me. I can explain everything." }, + { text = "Hey, send a letter to your friend now and then. Keep in touch, you know." }, } local keywordHandler = KeywordHandler:new() @@ -91,7 +91,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -102,7 +102,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/berenice.lua b/data-otservbr-global/npc/berenice.lua index 0c0d84a7599..34a2b527022 100644 --- a/data-otservbr-global/npc/berenice.lua +++ b/data-otservbr-global/npc/berenice.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 87, lookLegs = 104, lookFeet = 106, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -89,7 +89,7 @@ local function creatureSayCallback(npc, creature, type, message) "While in Calassa, do not take the helmet off under any circumstances. If you have any questions, don't hesitate to ask Captain Max. ...", "Your mission there, apart from observing the Quara, is to retrieve a special logbook from one of the shipwrecks buried there. ...", "One of our last expeditions there failed horribly and the ship sank, but we still do not know the exact reason. ...", - "If you could retrieve the logbook, we'd finally know what happened. Have you understood your task and are willing to take this risk?" + "If you could retrieve the logbook, we'd finally know what happened. Have you understood your task and are willing to take this risk?", }, npc, creature) npcHandler:setTopic(playerId, 3) elseif npcHandler:getTopic(playerId) == 3 then @@ -116,7 +116,7 @@ npcConfig.shop = { { itemName = "fourth verse of the hymn", clientId = 6090, sell = 800 }, { itemName = "orichalcum pearl", clientId = 5021, buy = 80 }, { itemName = "second verse of the hymn", clientId = 6088, sell = 250 }, - { itemName = "third verse of the hymn", clientId = 6089, sell = 400 } + { itemName = "third verse of the hymn", clientId = 6089, sell = 400 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -127,7 +127,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/bertha.lua b/data-otservbr-global/npc/bertha.lua index 0c7320b8da0..a4d27b9ef4f 100644 --- a/data-otservbr-global/npc/bertha.lua +++ b/data-otservbr-global/npc/bertha.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 97, lookLegs = 116, lookFeet = 99, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Hey there, need some general goods or paperware?' } + { text = "Hey there, need some general goods or paperware?" }, } local keywordHandler = KeywordHandler:new() @@ -83,7 +83,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'equipment' }, StdModule.say, { npcHandler = npcHandler, text = "I sell equipment for your adventure! Just ask me for a {trade} to see my wares." }) +keywordHandler:addKeyword({ "equipment" }, StdModule.say, { npcHandler = npcHandler, text = "I sell equipment for your adventure! Just ask me for a {trade} to see my wares." }) npcHandler:setMessage(MESSAGE_GREET, "Oh, please come in, |PLAYERNAME|. What can I do for you? If you need adventure equipment, ask me for a {trade}.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") @@ -131,7 +131,7 @@ npcConfig.shop = { { itemName = "valentine's card", clientId = 6538, buy = 30 }, { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -142,7 +142,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/bertram.lua b/data-otservbr-global/npc/bertram.lua index 7e28bdc0a73..27252c06086 100644 --- a/data-otservbr-global/npc/bertram.lua +++ b/data-otservbr-global/npc/bertram.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 0, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,16 +58,19 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'key') then - if player:getStorageValue(Storage.ThievesGuild.Mission06) == 1 - and player:getSex() == PLAYERSEX_FEMALE then + if MsgContains(message, "key") then + if player:getStorageValue(Storage.ThievesGuild.Mission06) == 1 and player:getSex() == PLAYERSEX_FEMALE then local headItem = player:getSlotItem(CONST_SLOT_HEAD) if headItem and headItem.itemid == 3576 and player:getStorageValue(Storage.Postman.Rank) == 5 then player:addItem(7934, 1) player:setStorageValue(Storage.ThievesGuild.Mission06, 2) - npcHandler:say('Oh my! You look so great in your uniform! \z + npcHandler:say( + "Oh my! You look so great in your uniform! \z You archpostwomen are not only daring but also beautiful. \z - Here take it, that\'s the key you wanted. Just promise to visit me now and then!', npc, creature) + Here take it, that's the key you wanted. Just promise to visit me now and then!", + npc, + creature + ) end end end diff --git a/data-otservbr-global/npc/bezil.lua b/data-otservbr-global/npc/bezil.lua index c1bcd1f51b8..0c828a73823 100644 --- a/data-otservbr-global/npc/bezil.lua +++ b/data-otservbr-global/npc/bezil.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 116, lookBody = 60, lookLegs = 76, - lookFeet = 95 + lookFeet = 95, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -79,7 +79,7 @@ npcConfig.shop = { { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "waterskin of water", clientId = 2901, buy = 40, count = 1 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -90,7 +90,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/bigfoot_soldier.lua b/data-otservbr-global/npc/bigfoot_soldier.lua index cc6c57f6d73..45759f9d837 100644 --- a/data-otservbr-global/npc/bigfoot_soldier.lua +++ b/data-otservbr-global/npc/bigfoot_soldier.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 120, lookLegs = 58, lookFeet = 15, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/bill_the_worker.lua b/data-otservbr-global/npc/bill_the_worker.lua index bfef88ae8bb..c23eb4e3d76 100644 --- a/data-otservbr-global/npc/bill_the_worker.lua +++ b/data-otservbr-global/npc/bill_the_worker.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 58, lookBody = 21, lookLegs = 86, - lookFeet = 116 + lookFeet = 116, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/billy.lua b/data-otservbr-global/npc/billy.lua index e7d882102f7..d5912aa378a 100644 --- a/data-otservbr-global/npc/billy.lua +++ b/data-otservbr-global/npc/billy.lua @@ -16,23 +16,23 @@ npcConfig.outfit = { lookBody = 63, lookLegs = 58, lookFeet = 115, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Add one fresh dead rat and stir it well... ' }, - { text = 'Argh, if I only had a pan!' }, - { text = 'Bread, cheese, ham and meat! All fresh!' }, - { text = 'Buying fresh dead rats!' }, - { text = 'Buying many types of food and ingredients, too!' }, - { text = 'Hmm, hmm, now which ingredients do I need...' }, - { text = 'Need food? I have plenty for sale!' } + { text = "Add one fresh dead rat and stir it well... " }, + { text = "Argh, if I only had a pan!" }, + { text = "Bread, cheese, ham and meat! All fresh!" }, + { text = "Buying fresh dead rats!" }, + { text = "Buying many types of food and ingredients, too!" }, + { text = "Hmm, hmm, now which ingredients do I need..." }, + { text = "Need food? I have plenty for sale!" }, } local keywordHandler = KeywordHandler:new() @@ -62,91 +62,89 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - -- Basic keywords -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'Billy.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a farmer and a {cook}. I\'d love to make pancakes, but I\'m lacking a good {pan}.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'I came here for peace and leisure, so leave me alone with \'time\'.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'Rather give your {money} to me than leaving it at the bank. Hehe.' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'Thank you, I\'m fine.' }) -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'If you need information, I can provide you with general {hints}.' }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a cook, not a priest. If you need information, I can provide you with general {hints}.' }) -keywordHandler:addKeyword({ 'cook' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the best cook around. You can sell most types of {food} to me. Just ask me for a {trade} to see what I buy from you as well as my offers.' }) -keywordHandler:addKeyword({ 'citizen' }, StdModule.say, { npcHandler = npcHandler, text = 'Which citizen?' }) -keywordHandler:addKeyword({ 'rat' }, StdModule.say, { npcHandler = npcHandler, text = 'If you bring me a fresh rat for my famous stew, ask me for a {trade}.' }) -keywordHandler:addKeyword({ 'shop' }, StdModule.say, { npcHandler = npcHandler, text = 'Nah, this is not a real shop. I have some offers, though. If you\'re interested, just ask me for a {trade}. There are other {merchants} on {Rookgaard} as well.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'There is so much to explore! Better hurry to get to the continent! Once you\'re level 8, look for the {oracle}.' }) -keywordHandler:addKeyword({ 'equipment' }, StdModule.say, { npcHandler = npcHandler, text = 'As an adventurer, you should always have at least a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}.' }) -keywordHandler:addKeyword({ 'academy' }, StdModule.say, { npcHandler = npcHandler, text = 'There are lots and lots of dusty books. You can read them for some basic knowledge about the world. Then again, you could also ask around in the village.' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'The king and his tax collectors are far away. You\'ll meet them soon enough.' }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = 'Ask {Obi} or {Lee\'Delle}. They make a fortune here with all those wannabe heroes.' }) -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, { npcHandler = npcHandler, text = 'This island will prepare you for the main continent of {Tibia}. Learn to fight and grow stronger!' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'Don\'t be scared, you should be safe as long as you stay in town. Dangerous monsters are roaming the {dungeons}.' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'You\'ll find a lot of dungeons if you look around. One example are the {sewers} below Rookgaard.' }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { npcHandler = npcHandler, text = 'The local sewers are invested by {rats}. Fresh rats give a good stew, you can sell them to me.' }) -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { npcHandler = npcHandler, text = 'Just ask me for a {trade} to see what I buy from you. Food of almost any kind!' }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { npcHandler = npcHandler, text = 'To view the offers of a merchant, simply talk to him or her and ask for a {trade}.' }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s right, I\'m the god of cooking!' }) -keywordHandler:addKeyword({ 'recipe' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'d love to make pancakes, but I\'m lacking a decent {pan}. If you get me one, I\'ll reward you.' }) - -keywordHandler:addKeyword({ 'armor' }, StdModule.say, { npcHandler = npcHandler, text = 'Armor and shields can be bought at {Dixi\'s} or at {Lee\'Delle\'s}. Dixi runs that shop near {Obi\'s}.' }) -keywordHandler:addAliasKeyword({ 'shield' }) - -keywordHandler:addKeyword({ 'backpack' }, StdModule.say, { npcHandler = npcHandler, text = 'Get that from {Al Dee} or {Lee\'Delle}.' }) -keywordHandler:addAliasKeyword({ 'shovel' }) -keywordHandler:addAliasKeyword({ 'rope' }) -keywordHandler:addAliasKeyword({ 'fishing' }) - -keywordHandler:addKeyword({ 'money' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, no gold, no deal. Earn gold by fighting {monsters} and picking up the things they carry. Sell it to {merchants} to make profit!' }) -keywordHandler:addAliasKeyword({ 'gold' }) - -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = 'I can spell but I don\'t know any spells.' }) -keywordHandler:addAliasKeyword({ 'spell' }) - -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = 'Just ask me for a {trade} to see my offers.' }) -keywordHandler:addAliasKeyword({ 'buy' }) -keywordHandler:addAliasKeyword({ 'stuff' }) -keywordHandler:addAliasKeyword({ 'offer' }) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Billy." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a farmer and a {cook}. I'd love to make pancakes, but I'm lacking a good {pan}." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "I came here for peace and leisure, so leave me alone with 'time'." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "Rather give your {money} to me than leaving it at the bank. Hehe." }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "Thank you, I'm fine." }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "If you need information, I can provide you with general {hints}." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a cook, not a priest. If you need information, I can provide you with general {hints}." }) +keywordHandler:addKeyword({ "cook" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the best cook around. You can sell most types of {food} to me. Just ask me for a {trade} to see what I buy from you as well as my offers." }) +keywordHandler:addKeyword({ "citizen" }, StdModule.say, { npcHandler = npcHandler, text = "Which citizen?" }) +keywordHandler:addKeyword({ "rat" }, StdModule.say, { npcHandler = npcHandler, text = "If you bring me a fresh rat for my famous stew, ask me for a {trade}." }) +keywordHandler:addKeyword({ "shop" }, StdModule.say, { npcHandler = npcHandler, text = "Nah, this is not a real shop. I have some offers, though. If you're interested, just ask me for a {trade}. There are other {merchants} on {Rookgaard} as well." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "There is so much to explore! Better hurry to get to the continent! Once you're level 8, look for the {oracle}." }) +keywordHandler:addKeyword({ "equipment" }, StdModule.say, { npcHandler = npcHandler, text = "As an adventurer, you should always have at least a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}." }) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { npcHandler = npcHandler, text = "There are lots and lots of dusty books. You can read them for some basic knowledge about the world. Then again, you could also ask around in the village." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "The king and his tax collectors are far away. You'll meet them soon enough." }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "Ask {Obi} or {Lee'Delle}. They make a fortune here with all those wannabe heroes." }) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { npcHandler = npcHandler, text = "This island will prepare you for the main continent of {Tibia}. Learn to fight and grow stronger!" }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Don't be scared, you should be safe as long as you stay in town. Dangerous monsters are roaming the {dungeons}." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "You'll find a lot of dungeons if you look around. One example are the {sewers} below Rookgaard." }) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, text = "The local sewers are invested by {rats}. Fresh rats give a good stew, you can sell them to me." }) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, text = "Just ask me for a {trade} to see what I buy from you. Food of almost any kind!" }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, text = "To view the offers of a merchant, simply talk to him or her and ask for a {trade}." }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "That's right, I'm the god of cooking!" }) +keywordHandler:addKeyword({ "recipe" }, StdModule.say, { npcHandler = npcHandler, text = "I'd love to make pancakes, but I'm lacking a decent {pan}. If you get me one, I'll reward you." }) + +keywordHandler:addKeyword({ "armor" }, StdModule.say, { npcHandler = npcHandler, text = "Armor and shields can be bought at {Dixi's} or at {Lee'Delle's}. Dixi runs that shop near {Obi's}." }) +keywordHandler:addAliasKeyword({ "shield" }) + +keywordHandler:addKeyword({ "backpack" }, StdModule.say, { npcHandler = npcHandler, text = "Get that from {Al Dee} or {Lee'Delle}." }) +keywordHandler:addAliasKeyword({ "shovel" }) +keywordHandler:addAliasKeyword({ "rope" }) +keywordHandler:addAliasKeyword({ "fishing" }) + +keywordHandler:addKeyword({ "money" }, StdModule.say, { npcHandler = npcHandler, text = "Well, no gold, no deal. Earn gold by fighting {monsters} and picking up the things they carry. Sell it to {merchants} to make profit!" }) +keywordHandler:addAliasKeyword({ "gold" }) + +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "I can spell but I don't know any spells." }) +keywordHandler:addAliasKeyword({ "spell" }) + +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "Just ask me for a {trade} to see my offers." }) +keywordHandler:addAliasKeyword({ "buy" }) +keywordHandler:addAliasKeyword({ "stuff" }) +keywordHandler:addAliasKeyword({ "offer" }) -- Names -keywordHandler:addKeyword({ 'obi' }, StdModule.say, { npcHandler = npcHandler, text = 'I like him, we usually have a drink or two once a week and share stories about {Willie}.' }) -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'That girl is all about party now. I think she was fed up with {equipment} selling.' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'Now that\'s one crazy fellow. I usually hear him scream about some hole.' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s a fisherman and somehow his hut is always infested with cockroaches.' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'That old hag always finds someone to do her work. I have no clue how she is doing that.' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'Decent guy. He sells general equipment such as {ropes}, {shovels} and so on.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'She\'s pretty indeed! I wonder if she likes bearded men.' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'Gotta love that name.' }) -keywordHandler:addKeyword({ 'willie' }, StdModule.say, { npcHandler = npcHandler, text = 'Don\'t listen to this old wannabe, I\'m the best cook around.' }) -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = 'He never leaves the temple. He spends his time caring for those who newly arrive here. You can ask him for a heal if you are badly injured or poisoned.' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s {Obi\'s} granddaughter. She helps him out by selling {armors} and {shields}. I think she\'ll be a beauty when she\'s grown up.' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'I never see that guy around.' }) -keywordHandler:addKeyword({ 'lee\'delle' }, StdModule.say, { npcHandler = npcHandler, text = 'Her shop is super-duper exclusive. If you\'re a premium adventurer, check it out in the western part of town. Lotsa nice offers there.' }) -keywordHandler:addKeyword({ 'lily' }, StdModule.say, { npcHandler = npcHandler, text = 'She lives in the very south of this town, selling her potions. Sweet - well, sweet-loving girl.' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8.' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'He must have the most boring job there is.' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t like his headmaster behaviour. Then again, he IS the headmaster of the {academy}.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'Tom the tanner buys what\'s too nasty or too old to eat, animal-wise. Dead wolves and such.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'He is one of the king\'s best men and here to protect us.' }) -keywordHandler:addAliasKeyword({ 'zerbrus' }) +keywordHandler:addKeyword({ "obi" }, StdModule.say, { npcHandler = npcHandler, text = "I like him, we usually have a drink or two once a week and share stories about {Willie}." }) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "That girl is all about party now. I think she was fed up with {equipment} selling." }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "Now that's one crazy fellow. I usually hear him scream about some hole." }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "He's a fisherman and somehow his hut is always infested with cockroaches." }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "That old hag always finds someone to do her work. I have no clue how she is doing that." }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "Decent guy. He sells general equipment such as {ropes}, {shovels} and so on." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "She's pretty indeed! I wonder if she likes bearded men." }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "Gotta love that name." }) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { npcHandler = npcHandler, text = "Don't listen to this old wannabe, I'm the best cook around." }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = "He never leaves the temple. He spends his time caring for those who newly arrive here. You can ask him for a heal if you are badly injured or poisoned." }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "That's {Obi's} granddaughter. She helps him out by selling {armors} and {shields}. I think she'll be a beauty when she's grown up." }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "I never see that guy around." }) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { npcHandler = npcHandler, text = "Her shop is super-duper exclusive. If you're a premium adventurer, check it out in the western part of town. Lotsa nice offers there." }) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { npcHandler = npcHandler, text = "She lives in the very south of this town, selling her potions. Sweet - well, sweet-loving girl." }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8." }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "He must have the most boring job there is." }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "I don't like his headmaster behaviour. Then again, he IS the headmaster of the {academy}." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "Tom the tanner buys what's too nasty or too old to eat, animal-wise. Dead wolves and such." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "He is one of the king's best men and here to protect us." }) +keywordHandler:addAliasKeyword({ "zerbrus" }) -- Health Potion Quest -local panKeyword = keywordHandler:addKeyword({ 'pan' }, StdModule.say, { npcHandler = npcHandler, text = 'Have you found a pan for me?' }) -panKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'A pan! At last! Take this in case you eat something my cousin has cooked.', reset = true }, - function(player) return player:getItemCount(3466) > 0 end, - function(player) - player:removeItem(3466, 1) - player:addItem(7876, 1) - end -) -panKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Hey! You don\'t have one!', reset = true }) -panKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Then go and look for one!', reset = true }) - -npcHandler:setMessage(MESSAGE_WALKAWAY, 'HOW RUDE!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Bye.') -npcHandler:setMessage(MESSAGE_SENDTRADE, 'Sure.') -npcHandler:setMessage(MESSAGE_GREET, 'Howdy |PLAYERNAME|. I\'m a farmer and cook, maybe I can interest you in a {trade} with food? You can also ask me for general {hints} about the game.') +local panKeyword = keywordHandler:addKeyword({ "pan" }, StdModule.say, { npcHandler = npcHandler, text = "Have you found a pan for me?" }) +panKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "A pan! At last! Take this in case you eat something my cousin has cooked.", reset = true }, function(player) + return player:getItemCount(3466) > 0 +end, function(player) + player:removeItem(3466, 1) + player:addItem(7876, 1) +end) +panKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Hey! You don't have one!", reset = true }) +panKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Then go and look for one!", reset = true }) + +npcHandler:setMessage(MESSAGE_WALKAWAY, "HOW RUDE!") +npcHandler:setMessage(MESSAGE_FAREWELL, "Bye.") +npcHandler:setMessage(MESSAGE_SENDTRADE, "Sure.") +npcHandler:setMessage(MESSAGE_GREET, "Howdy |PLAYERNAME|. I'm a farmer and cook, maybe I can interest you in a {trade} with food? You can also ask me for general {hints} about the game.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -159,7 +157,7 @@ npcConfig.shop = { { itemName = "egg", clientId = 3606, sell = 1 }, { itemName = "ham", clientId = 3582, buy = 8, sell = 4 }, { itemName = "meat", clientId = 3577, buy = 5, sell = 2 }, - { itemName = "salmon", clientId = 3579, sell = 2 } + { itemName = "salmon", clientId = 3579, sell = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -170,7 +168,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/black_bert.lua b/data-otservbr-global/npc/black_bert.lua index e57fc411e40..08006ac1230 100644 --- a/data-otservbr-global/npc/black_bert.lua +++ b/data-otservbr-global/npc/black_bert.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 19, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { { clientId = 123, buy = 16000, sell = 16000, count = 1 }, @@ -98,7 +98,7 @@ npcConfig.shop = { { clientId = 11552, buy = 4000, count = 1 }, { clientId = 13974, buy = 5000, count = 1 }, { clientId = 31414, buy = 50000, count = 1 }, - { clientId = 31447, buy = 5000, count = 1 } + { clientId = 31447, buy = 5000, count = 1 }, } -- On buy npc shop message @@ -110,8 +110,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) diff --git a/data-otservbr-global/npc/blind_orc.lua b/data-otservbr-global/npc/blind_orc.lua index 2e0370431c0..8893db86ec1 100644 --- a/data-otservbr-global/npc/blind_orc.lua +++ b/data-otservbr-global/npc/blind_orc.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 5 + lookType = 5, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -47,60 +47,59 @@ end local function addBuyableKeyword(keywords, itemid, amount, price, text) local keyword - if type(keywords) == 'table' then - keyword = keywordHandler:addKeyword({ 'goshak', keywords[1], keywords[2] }, StdModule.say, { npcHandler = npcHandler, text = text }) + if type(keywords) == "table" then + keyword = keywordHandler:addKeyword({ "goshak", keywords[1], keywords[2] }, StdModule.say, { npcHandler = npcHandler, text = text }) else - keyword = keywordHandler:addKeyword({ 'goshak', keywords }, StdModule.say, { npcHandler = npcHandler, text = text }) + keyword = keywordHandler:addKeyword({ "goshak", keywords }, StdModule.say, { npcHandler = npcHandler, text = text }) end - keyword:addChildKeyword({ 'mok' }, StdModule.say, { npcHandler = npcHandler, text = 'Maruk rambo zambo!', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= price end, - function(player) - if player:removeMoneyBank(price) then - player:addItem(itemid, amount) - end + keyword:addChildKeyword({ "mok" }, StdModule.say, { npcHandler = npcHandler, text = "Maruk rambo zambo!", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= price + end, function(player) + if player:removeMoneyBank(price) then + player:addItem(itemid, amount) end - ) - keyword:addChildKeyword({ 'mok' }, StdModule.say, { npcHandler = npcHandler, text = 'Maruk nixda!', reset = true }) - keyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Buta maruk klamuk!', reset = true }) + end) + keyword:addChildKeyword({ "mok" }, StdModule.say, { npcHandler = npcHandler, text = "Maruk nixda!", reset = true }) + keyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Buta maruk klamuk!", reset = true }) end -- Greeting and Farewell -keywordHandler:addGreetKeyword({ 'charach' }, { npcHandler = npcHandler, text = 'Ikem Charach maruk.' }) -keywordHandler:addFarewellKeyword({ 'futchi' }, { npcHandler = npcHandler, text = 'Futchi!' }) +keywordHandler:addGreetKeyword({ "charach" }, { npcHandler = npcHandler, text = "Ikem Charach maruk." }) +keywordHandler:addFarewellKeyword({ "futchi" }, { npcHandler = npcHandler, text = "Futchi!" }) -keywordHandler:addKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = 'Buta humak!' }) +keywordHandler:addKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "Buta humak!" }) -keywordHandler:addKeyword({ 'ikem', 'goshak' }, StdModule.say, { npcHandler = npcHandler, text = 'Ikem pashak porak, bata, dora. Ba goshak maruk?' }) -keywordHandler:addKeyword({ 'goshak', 'porak' }, StdModule.say, { npcHandler = npcHandler, text = 'Ikem pashak charcha, burka, burka bata, hakhak. Ba goshak maruk?' }) -keywordHandler:addKeyword({ 'goshak', 'bata' }, StdModule.say, { npcHandler = npcHandler, text = 'Ikem pashak aka bora, tulak bora, grofa. Ba goshak maruk?' }) -keywordHandler:addKeyword({ 'goshak', 'dora' }, StdModule.say, { npcHandler = npcHandler, text = 'Ikem pashak donga. Ba goshak maruk?' }) +keywordHandler:addKeyword({ "ikem", "goshak" }, StdModule.say, { npcHandler = npcHandler, text = "Ikem pashak porak, bata, dora. Ba goshak maruk?" }) +keywordHandler:addKeyword({ "goshak", "porak" }, StdModule.say, { npcHandler = npcHandler, text = "Ikem pashak charcha, burka, burka bata, hakhak. Ba goshak maruk?" }) +keywordHandler:addKeyword({ "goshak", "bata" }, StdModule.say, { npcHandler = npcHandler, text = "Ikem pashak aka bora, tulak bora, grofa. Ba goshak maruk?" }) +keywordHandler:addKeyword({ "goshak", "dora" }, StdModule.say, { npcHandler = npcHandler, text = "Ikem pashak donga. Ba goshak maruk?" }) -- Bow -addBuyableKeyword('batuk', 3350, 1, 400, 'Ahhhh, maruk, goshak batuk?') +addBuyableKeyword("batuk", 3350, 1, 400, "Ahhhh, maruk, goshak batuk?") -- 10 Arrows -addBuyableKeyword('pixo', 3447, 10, 30, 'Maruk goshak tefar pixo ul batuk?') +addBuyableKeyword("pixo", 3447, 10, 30, "Maruk goshak tefar pixo ul batuk?") -- Brass Shield -addBuyableKeyword('donga', 3411, 1, 65, 'Maruk goshak ta?') +addBuyableKeyword("donga", 3411, 1, 65, "Maruk goshak ta?") -- Leather Armor -addBuyableKeyword('bora', 3361, 1, 25, 'Maruk goshak ta?') +addBuyableKeyword("bora", 3361, 1, 25, "Maruk goshak ta?") -- Studded Armor -addBuyableKeyword({ 'tulak', 'bora' }, 3378, 1, 90, 'Maruk goshak ta?') +addBuyableKeyword({ "tulak", "bora" }, 3378, 1, 90, "Maruk goshak ta?") -- Studded Helmet -addBuyableKeyword('grofa', 3376, 1, 60, 'Maruk goshak ta?') +addBuyableKeyword("grofa", 3376, 1, 60, "Maruk goshak ta?") -- Sabre -addBuyableKeyword('charcha', 3273, 1, 25, 'Maruk goshak ta?') +addBuyableKeyword("charcha", 3273, 1, 25, "Maruk goshak ta?") -- Sword -addBuyableKeyword({ 'burka', 'bata' }, 3264, 1, 85, 'Maruk goshak ta?') +addBuyableKeyword({ "burka", "bata" }, 3264, 1, 85, "Maruk goshak ta?") -- Short Sword -addBuyableKeyword('burka', 3294, 1, 30, 'Maruk goshak ta?') +addBuyableKeyword("burka", 3294, 1, 30, "Maruk goshak ta?") -- Hatchet -addBuyableKeyword('hakhak', 3276, 1, 85, 'Maruk goshak ta?') +addBuyableKeyword("hakhak", 3276, 1, 85, "Maruk goshak ta?") -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Futchi.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Futchi.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/blossom_bonecrusher.lua b/data-otservbr-global/npc/blossom_bonecrusher.lua index b02866d09bb..358c1ba0f59 100644 --- a/data-otservbr-global/npc/blossom_bonecrusher.lua +++ b/data-otservbr-global/npc/blossom_bonecrusher.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 100, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/bo_ques.lua b/data-otservbr-global/npc/bo_ques.lua index 175d14ecc62..3b279836dcc 100644 --- a/data-otservbr-global/npc/bo_ques.lua +++ b/data-otservbr-global/npc/bo_ques.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 80 + lookType = 80, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Now, where was I...' } + { text = "Now, where was I..." }, } local keywordHandler = KeywordHandler:new() @@ -60,56 +60,56 @@ local function creatureSayCallback(npc, creature, type, message) end local missionProgress = player:getStorageValue(Storage.DjinnWar.MaridFaction.Mission01) - if MsgContains(message, 'recipe') or MsgContains(message, 'mission') then + if MsgContains(message, "recipe") or MsgContains(message, "mission") then if missionProgress < 1 then npcHandler:say({ - 'My collection of recipes is almost complete. There are only but a few that are missing. ...', - 'Hmmm... now that we talk about it. There is something you could help me with. Are you interested?' + "My collection of recipes is almost complete. There are only but a few that are missing. ...", + "Hmmm... now that we talk about it. There is something you could help me with. Are you interested?", }, npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('I already told you about the recipes I am missing, now please try to find a cookbook of the dwarven kitchen.', npc, creature) + npcHandler:say("I already told you about the recipes I am missing, now please try to find a cookbook of the dwarven kitchen.", npc, creature) end - elseif MsgContains(message, 'cookbook') then + elseif MsgContains(message, "cookbook") then if missionProgress == -1 then npcHandler:say({ - 'I\'m preparing the food for all djinns in Ashta\'daramai. ...', - 'Therefore, I\'m what is commonly called a cook, although I do not like that word too much. It is vulgar. I prefer to call myself \'chef\'.' + "I'm preparing the food for all djinns in Ashta'daramai. ...", + "Therefore, I'm what is commonly called a cook, although I do not like that word too much. It is vulgar. I prefer to call myself 'chef'.", }, npc, creature) elseif missionProgress == 1 then - npcHandler:say('Do you have the cookbook of the dwarven kitchen with you? Can I have it?', npc, creature) + npcHandler:say("Do you have the cookbook of the dwarven kitchen with you? Can I have it?", npc, creature) npcHandler:setTopic(playerId, 2) else - npcHandler:say('Thanks again, for bringing me that book!', npc, creature) + npcHandler:say("Thanks again, for bringing me that book!", npc, creature) end elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then npcHandler:say({ - 'Fine! Even though I know so many recipes, I\'m looking for the description of some dwarven meals. ...', - 'So, if you could bring me a cookbook of the dwarven kitchen, I\'ll reward you well.' + "Fine! Even though I know so many recipes, I'm looking for the description of some dwarven meals. ...", + "So, if you could bring me a cookbook of the dwarven kitchen, I'll reward you well.", }, npc, creature) player:setStorageValue(Storage.DjinnWar.MaridFaction.Start, 1) player:setStorageValue(Storage.DjinnWar.MaridFaction.Mission01, 1) - elseif MsgContains(message, 'no') then - npcHandler:say('Well, too bad.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Well, too bad.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not player:removeItem(3234, 1) then - npcHandler:say('Too bad. I must have this book.', npc, creature) + npcHandler:say("Too bad. I must have this book.", npc, creature) return true end npcHandler:say({ - 'The book! You have it! Let me see! ...', - 'Dragon Egg Omelette, Dwarven beer sauce... it\'s all there. This is great! Here is your well-deserved reward. ...', - 'Incidentally, I have talked to Fa\'hradin about you during dinner. I think he might have some work for you. Why don\'t you talk to him about it?' + "The book! You have it! Let me see! ...", + "Dragon Egg Omelette, Dwarven beer sauce... it's all there. This is great! Here is your well-deserved reward. ...", + "Incidentally, I have talked to Fa'hradin about you during dinner. I think he might have some work for you. Why don't you talk to him about it?", }, npc, creature) player:setStorageValue(Storage.DjinnWar.MaridFaction.Mission01, 2) player:addItem(3029, 3) - elseif MsgContains(message, 'no') then - npcHandler:say('Too bad. I must have this book.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Too bad. I must have this book.", npc, creature) end npcHandler:setTopic(playerId, 0) end @@ -119,8 +119,8 @@ end -- Greeting keywordHandler:addGreetKeyword({ "djanni'hah" }, { npcHandler = npcHandler, text = "Hey! A human! What are you doing in my kitchen, |PLAYERNAME|?" }) -npcHandler:setMessage(MESSAGE_FAREWELL, 'Goodbye. I am sure you will come back for more. They all do.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Goodbye. I am sure you will come back for more. They all do.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Goodbye. I am sure you will come back for more. They all do.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Goodbye. I am sure you will come back for more. They all do.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/bob_the_worker.lua b/data-otservbr-global/npc/bob_the_worker.lua index 5da99d8d5b0..f5bc2ca9f61 100644 --- a/data-otservbr-global/npc/bob_the_worker.lua +++ b/data-otservbr-global/npc/bob_the_worker.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 40, lookBody = 63, lookLegs = 87, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/bolfona.lua b/data-otservbr-global/npc/bolfona.lua index b00a9423eac..0354da3a13c 100644 --- a/data-otservbr-global/npc/bolfona.lua +++ b/data-otservbr-global/npc/bolfona.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 37, lookBody = 16, lookLegs = 54, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -102,7 +102,7 @@ npcConfig.shop = { { itemName = "cheese", clientId = 3607, buy = 4 }, { itemName = "ham", clientId = 3582, buy = 8 }, { itemName = "meat", clientId = 3577, buy = 5 }, - { itemName = "mug of beer", clientId = 2880, buy = 2, count = 3 } + { itemName = "mug of beer", clientId = 2880, buy = 2, count = 3 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -113,7 +113,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/bonifacius.lua b/data-otservbr-global/npc/bonifacius.lua index af3c42e2e07..f54a50b3f79 100644 --- a/data-otservbr-global/npc/bonifacius.lua +++ b/data-otservbr-global/npc/bonifacius.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 82, lookLegs = 97, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,7 +59,7 @@ npcConfig.shop = { { itemName = "orange", clientId = 3586, buy = 5 }, { itemName = "pumpkin", clientId = 3594, buy = 10 }, { itemName = "roll", clientId = 3601, buy = 2 }, - { itemName = "salmon", clientId = 3579, buy = 4 } + { itemName = "salmon", clientId = 3579, buy = 4 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -70,7 +70,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/boozer.lua b/data-otservbr-global/npc/boozer.lua index 62d077da219..78b5ba3eb62 100644 --- a/data-otservbr-global/npc/boozer.lua +++ b/data-otservbr-global/npc/boozer.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 20, lookLegs = 116, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -95,7 +95,7 @@ npcConfig.shop = { { itemName = "mug of beer", clientId = 2880, buy = 2, count = 3 }, { itemName = "mug of lemonade", clientId = 2880, buy = 2, count = 12 }, { itemName = "mug of water", clientId = 2880, buy = 2, count = 1 }, - { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 } + { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -106,7 +106,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/borkas.lua b/data-otservbr-global/npc/borkas.lua index faf311e2b41..167506f484f 100644 --- a/data-otservbr-global/npc/borkas.lua +++ b/data-otservbr-global/npc/borkas.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -64,7 +64,7 @@ npcConfig.shop = { { itemName = "venorean cabinet kit", clientId = 17974, buy = 90 }, { itemName = "venorean drawer kit", clientId = 17977, buy = 40 }, { itemName = "venorean wardrobe kit", clientId = 17975, buy = 50 }, - { itemName = "weapon rack kit", clientId = 6115, buy = 90 } + { itemName = "weapon rack kit", clientId = 6115, buy = 90 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -75,7 +75,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/boveas.lua b/data-otservbr-global/npc/boveas.lua index 518a9261ce4..a99ba1059d0 100644 --- a/data-otservbr-global/npc/boveas.lua +++ b/data-otservbr-global/npc/boveas.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 25 + lookType = 25, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/bozarn.lua b/data-otservbr-global/npc/bozarn.lua index cd54a19d8f3..ca47f2d8a26 100644 --- a/data-otservbr-global/npc/bozarn.lua +++ b/data-otservbr-global/npc/bozarn.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 95, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/bozo.lua b/data-otservbr-global/npc/bozo.lua index 7602a441a99..51d5c4aca7a 100644 --- a/data-otservbr-global/npc/bozo.lua +++ b/data-otservbr-global/npc/bozo.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 80, lookFeet = 79, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Come chat with ol\' Bozo!' }, - { text = 'Do you know the one with the dragon? Where - and then ... hahahaha! Oh no, I guess I ruined it.' }, - { text = 'The fools\' guild? Are you serious? No, of course not! Hahaha!' }, - { text = 'Welcome, welcome, step closer!' } + { text = "Come chat with ol' Bozo!" }, + { text = "Do you know the one with the dragon? Where - and then ... hahahaha! Oh no, I guess I ruined it." }, + { text = "The fools' guild? Are you serious? No, of course not! Hahaha!" }, + { text = "Welcome, welcome, step closer!" }, } local keywordHandler = KeywordHandler:new() @@ -62,544 +62,542 @@ end local config = { [1] = { text = { - [1] = 'Do you have a fitting flower for me?', - [2] = 'You don\'t have a fitting flower! Why do only fools apply for the fools guild?', - [3] = 'Indeed. This flower will do the trick, so to say. Just ask me about another mission whenever you\'re ready.' + [1] = "Do you have a fitting flower for me?", + [2] = "You don't have a fitting flower! Why do only fools apply for the fools guild?", + [3] = "Indeed. This flower will do the trick, so to say. Just ask me about another mission whenever you're ready.", }, yes = true, removeItem = { itemId = 102 }, updateStorages = { { key = Storage.WhatAFoolish.Mission1, value = 2 }, - { key = Storage.WhatAFoolish.Questline, value = 2 } - } + { key = Storage.WhatAFoolish.Questline, value = 2 }, + }, }, [2] = { text = { [1] = { - 'The next task will be a bit more difficult. I pride myself on being the major manufacturer of stink bombs in whole Tibia. Stop chuckling you fool aspirant ...', - 'The worst part is getting the perfect stench. Whenever a slime dies, it leaves a noxious gas cloud ...', - 'If you are able to collect its scent in the first few seconds after the slime\'s death, we have the ideal substance to create dozens of stink bombs ...', - 'Take this special vial and fill it with the perfect stench. Then return here and we will talk about your mission.' - } + "The next task will be a bit more difficult. I pride myself on being the major manufacturer of stink bombs in whole Tibia. Stop chuckling you fool aspirant ...", + "The worst part is getting the perfect stench. Whenever a slime dies, it leaves a noxious gas cloud ...", + "If you are able to collect its scent in the first few seconds after the slime's death, we have the ideal substance to create dozens of stink bombs ...", + "Take this special vial and fill it with the perfect stench. Then return here and we will talk about your mission.", + }, }, addItem = { itemId = 107 }, updateStorages = { { key = Storage.WhatAFoolish.Mission2, value = 1 }, - { key = Storage.WhatAFoolish.Questline, value = 3 } - } + { key = Storage.WhatAFoolish.Questline, value = 3 }, + }, }, [3] = { text = { - [1] = 'Do you have acquired the exquisite stench we need?', - [2] = 'No, you haven\'t! Why do only fools apply for the fools guild?', - [3] = 'Ugh. You got some efficient stuff there. I have to admit you have a talent for such distasteful matters. Perhaps you feel ready for another mission. Just ask me about it.' + [1] = "Do you have acquired the exquisite stench we need?", + [2] = "No, you haven't! Why do only fools apply for the fools guild?", + [3] = "Ugh. You got some efficient stuff there. I have to admit you have a talent for such distasteful matters. Perhaps you feel ready for another mission. Just ask me about it.", }, yes = true, removeItem = { itemId = 9170 }, updateStorages = { { key = Storage.WhatAFoolish.Mission2, value = 2 }, - { key = Storage.WhatAFoolish.Questline, value = 4 } - } + { key = Storage.WhatAFoolish.Questline, value = 4 }, + }, }, [4] = { text = { [1] = { - 'I think you\'re ready for a small promotion. Provided that you finish another mission, that is ...', - 'As you might know, nothing helps you to break the ice so easily when you meet new people as a pie thrown in the face ...', - 'Of course, this habit leads to a dramatic shortage of pies now and then. And that\'s what we need you for. Mirabell in Edron creates the most creamy and sticky pies in the world ...', - 'Get me a dozen of them, this means 12, you fool. Then report to me about your mission.' - } + "I think you're ready for a small promotion. Provided that you finish another mission, that is ...", + "As you might know, nothing helps you to break the ice so easily when you meet new people as a pie thrown in the face ...", + "Of course, this habit leads to a dramatic shortage of pies now and then. And that's what we need you for. Mirabell in Edron creates the most creamy and sticky pies in the world ...", + "Get me a dozen of them, this means 12, you fool. Then report to me about your mission.", + }, }, updateStorages = { { key = Storage.WhatAFoolish.Mission3, value = 1 }, - { key = Storage.WhatAFoolish.Questline, value = 5 } - } + { key = Storage.WhatAFoolish.Questline, value = 5 }, + }, }, [5] = { text = { - [1] = 'So do you bring me a box full of pies?', - [2] = 'No, you don\'t! Why do only fools apply for the fools guild?', + [1] = "So do you bring me a box full of pies?", + [2] = "No, you don't! Why do only fools apply for the fools guild?", [3] = { - 'Excellent. Poor Harsky, poor Stutch. They will mourn the day they dared to yawn during a performance of the magnificent Bozo ...', - 'However, I grant you the title of \'Fool in Training\' for your efforts. Just don\'t let it go to your head and don\'t use this highly spiritual title to show off ...', - 'If you are interested in another mission, talk to me.' - } + "Excellent. Poor Harsky, poor Stutch. They will mourn the day they dared to yawn during a performance of the magnificent Bozo ...", + "However, I grant you the title of 'Fool in Training' for your efforts. Just don't let it go to your head and don't use this highly spiritual title to show off ...", + "If you are interested in another mission, talk to me.", + }, }, yes = true, removeItem = { itemId = 119 }, pie = true, updateStorages = { { key = Storage.WhatAFoolish.Mission3, value = 2 }, - { key = Storage.WhatAFoolish.Questline, value = 6 } - } + { key = Storage.WhatAFoolish.Questline, value = 6 }, + }, }, [6] = { text = { [1] = { - 'Ah, the fool in training wants to see some action? Fine with me. I think you are ready for a big prank. But first I need 18 vials filled with wine ...', - 'Get them and report here about your mission.' - } + "Ah, the fool in training wants to see some action? Fine with me. I think you are ready for a big prank. But first I need 18 vials filled with wine ...", + "Get them and report here about your mission.", + }, }, updateStorages = { { key = Storage.WhatAFoolish.Mission4, value = 1 }, - { key = Storage.WhatAFoolish.Questline, value = 7 } - } + { key = Storage.WhatAFoolish.Questline, value = 7 }, + }, }, [7] = { text = { - [1] = 'Do you have 18 vials of wine?', - [2] = 'No, you haven\'t! Why do only fools apply for the fools guild?', + [1] = "Do you have 18 vials of wine?", + [2] = "No, you haven't! Why do only fools apply for the fools guild?", [3] = { - 'So lets see. I put them into this crate which looks just like the ones in which old Xodet gets his mana potions [1]ed ...', - 'Here take this crate and bring it to Xodet\'s shop. In front of the shop, you should see the latest [1]y. Just use this crate on the other one to exchange them ...', - 'Bring me the interchanged crate and talk to me about your mission.' - } + "So lets see. I put them into this crate which looks just like the ones in which old Xodet gets his mana potions [1]ed ...", + "Here take this crate and bring it to Xodet's shop. In front of the shop, you should see the latest [1]y. Just use this crate on the other one to exchange them ...", + "Bring me the interchanged crate and talk to me about your mission.", + }, }, yes = true, removeItem = { itemId = 2874, count = 18, subType = 15 }, updateStorages = { { key = Storage.WhatAFoolish.Mission4, value = 2 }, - { key = Storage.WhatAFoolish.Questline, value = 8 } + { key = Storage.WhatAFoolish.Questline, value = 8 }, }, - addItem = { itemId = 117 } + addItem = { itemId = 117 }, }, [8] = { text = { - [1] = 'Do you bring me Xodet\'s exchanged crate?', - [2] = 'No, you don\'t! Why do only fools apply for the fools guild?', - [3] = 'I see. I guess we can expect a few drunken mages soon! Am I mistaken or are you up for some more challenging missions? Just ask me about if you feel foolish enough.' + [1] = "Do you bring me Xodet's exchanged crate?", + [2] = "No, you don't! Why do only fools apply for the fools guild?", + [3] = "I see. I guess we can expect a few drunken mages soon! Am I mistaken or are you up for some more challenging missions? Just ask me about if you feel foolish enough.", }, yes = true, removeItem = { itemId = 118 }, updateStorages = { { key = Storage.WhatAFoolish.Mission4, value = 3 }, - { key = Storage.WhatAFoolish.Questline, value = 9 } - } + { key = Storage.WhatAFoolish.Questline, value = 9 }, + }, }, [9] = { text = { [1] = { - 'I have a fine prank in mind but without proper preparation, you\'d end up hacked in pieces by the dwarfs. By chance I found out about an artefact that might save the day ...', - 'There is a mysterious tower, known as Triangle Tower, north of Jakundaf Desert. In this tower, you will find a magic watch that we need for our dangerous fun ...', - 'Well, I\'ll have the fun and you\'ll have the danger but you can view it from a positive side - view it from my side for instance. Now get that watch and report about your mission.' - } + "I have a fine prank in mind but without proper preparation, you'd end up hacked in pieces by the dwarfs. By chance I found out about an artefact that might save the day ...", + "There is a mysterious tower, known as Triangle Tower, north of Jakundaf Desert. In this tower, you will find a magic watch that we need for our dangerous fun ...", + "Well, I'll have the fun and you'll have the danger but you can view it from a positive side - view it from my side for instance. Now get that watch and report about your mission.", + }, }, updateStorages = { { key = Storage.WhatAFoolish.Mission5, value = 1 }, { key = Storage.WhatAFoolish.TriangleTowerDoor, value = 1 }, - { key = Storage.WhatAFoolish.Questline, value = 10 } - } + { key = Storage.WhatAFoolish.Questline, value = 10 }, + }, }, [10] = { text = { - [1] = 'Did you get the watch?', - [2] = 'No you have not! Why do only fools apply to the fools guild?', + [1] = "Did you get the watch?", + [2] = "No you have not! Why do only fools apply to the fools guild?", [3] = { - 'Oh boy, you will have so much fun with that watch if they don\'t catch and kill you. I envy you so much ... Bozo: So listen my little fool, this watch has the power to advance you in time. It will come in handy when you are stealing the beard of the dwarven emperor ...', - 'Oh, come on, don\'t faint like some baby. It\'s perfectly safe with that watch ... well, almost. You sneak into the emperor\'s bedroom when it\'s empty. Use the watch directly beside the bed\'s pillow ...', - 'This should advance you in time. You will appear next to the sleeping emperor. His guards will be outside so they shouldn\'t bother you. Use a sharp kitchen knife to cut off his beard ...', - 'Then quickly use the watch again to advance in time once more. You should appear at a time when everybody has left the room...', - 'Sneak out and come here to report about your mission. As the watch will only work those 2 times, make sure that you\'ve got the beard when returning here.' - } + "Oh boy, you will have so much fun with that watch if they don't catch and kill you. I envy you so much ... Bozo: So listen my little fool, this watch has the power to advance you in time. It will come in handy when you are stealing the beard of the dwarven emperor ...", + "Oh, come on, don't faint like some baby. It's perfectly safe with that watch ... well, almost. You sneak into the emperor's bedroom when it's empty. Use the watch directly beside the bed's pillow ...", + "This should advance you in time. You will appear next to the sleeping emperor. His guards will be outside so they shouldn't bother you. Use a sharp kitchen knife to cut off his beard ...", + "Then quickly use the watch again to advance in time once more. You should appear at a time when everybody has left the room...", + "Sneak out and come here to report about your mission. As the watch will only work those 2 times, make sure that you've got the beard when returning here.", + }, }, yes = true, checkItemCount = 112, updateStorages = { { key = Storage.WhatAFoolish.Mission5, value = 2 }, - { key = Storage.WhatAFoolish.Questline, value = 11 } - } + { key = Storage.WhatAFoolish.Questline, value = 11 }, + }, }, [11] = { text = { - [1] = 'Did you get the beard?', - [2] = 'No, you don\'t! Why do only fools apply for the fools guild?', + [1] = "Did you get the beard?", + [2] = "No, you don't! Why do only fools apply for the fools guild?", [3] = { - 'You got the beard and survived. I think for the first time in my whole life I\'m impressed, no wait, it was just a stone in my shoe ...', - 'Still, as a small recognition of your accomplishments I\'m willing to tell you how to get your own jester outfit. If you are interested in more fun and adventures, ask me for more missions.' - } + "You got the beard and survived. I think for the first time in my whole life I'm impressed, no wait, it was just a stone in my shoe ...", + "Still, as a small recognition of your accomplishments I'm willing to tell you how to get your own jester outfit. If you are interested in more fun and adventures, ask me for more missions.", + }, }, yes = true, checkStorage = Storage.WhatAFoolish.EmperorBeardShave, removeItem = { itemId = 113 }, updateStorages = { { key = Storage.WhatAFoolish.Mission5, value = 3 }, - { key = Storage.WhatAFoolish.Questline, value = 12 } - } + { key = Storage.WhatAFoolish.Questline, value = 12 }, + }, }, [12] = { text = { - [1] = 'I can\'t think of anything right now. Maybe you should try to get your jester outfit.' - } + [1] = "I can't think of anything right now. Maybe you should try to get your jester outfit.", + }, }, [13] = { text = { - [1] = 'You know, nothing has brought more fun and joy to humanity than the whoopee cushion. Its creation is a delicate matter though. Bring me 4 pieces of minotaur leather first and then lets talk about this mission.' + [1] = "You know, nothing has brought more fun and joy to humanity than the whoopee cushion. Its creation is a delicate matter though. Bring me 4 pieces of minotaur leather first and then lets talk about this mission.", }, updateStorages = { { key = Storage.WhatAFoolish.Mission6, value = 1 }, - { key = Storage.WhatAFoolish.Questline, value = 14 } - } + { key = Storage.WhatAFoolish.Questline, value = 14 }, + }, }, [14] = { text = { - [1] = 'Do you have the four minotaur leathers?', - [2] = 'No, you don\'t! Why do only fools apply for the fools guild?', - [3] = 'Good, this was the first part. Now it gets difficult. To sew it together, we need a very fine yarn, as fine as the silk of a giant spider. Bring me some giant spider silk and talk to me about your mission.' + [1] = "Do you have the four minotaur leathers?", + [2] = "No, you don't! Why do only fools apply for the fools guild?", + [3] = "Good, this was the first part. Now it gets difficult. To sew it together, we need a very fine yarn, as fine as the silk of a giant spider. Bring me some giant spider silk and talk to me about your mission.", }, yes = true, removeItem = { itemId = 5878, count = 4 }, updateStorages = { { key = Storage.WhatAFoolish.Mission6, value = 2 }, - { key = Storage.WhatAFoolish.Questline, value = 15 } - } + { key = Storage.WhatAFoolish.Questline, value = 15 }, + }, }, [15] = { text = { - [1] = 'Do you have the spider silk with you?', - [2] = 'No, you don\'t! Why do only fools apply for the fools guild?', - [3] = 'Let\'s see, a stitch here, a stitch there. Hey Presto! A whoopee cushion! Are you ready for the fun part? Then talk to me about your next mission.' + [1] = "Do you have the spider silk with you?", + [2] = "No, you don't! Why do only fools apply for the fools guild?", + [3] = "Let's see, a stitch here, a stitch there. Hey Presto! A whoopee cushion! Are you ready for the fun part? Then talk to me about your next mission.", }, yes = true, removeItem = { itemId = 5879 }, updateStorages = { { key = Storage.WhatAFoolish.Mission6, value = 3 }, - { key = Storage.WhatAFoolish.Questline, value = 16 } + { key = Storage.WhatAFoolish.Questline, value = 16 }, }, - effect = CONST_ME_POFF + effect = CONST_ME_POFF, }, [16] = { text = { [1] = { - 'Now that we have this whoopee cushion it would be a waste not to use it, don\'t you agree ...', - 'Don\'t speak! I already know what you have in your impish mind my friend and I agree fully. You will bring this cushion to Carlin and place it right on Queen Eloise\'s throne! Then return here and talk to me about your mission.' - } + "Now that we have this whoopee cushion it would be a waste not to use it, don't you agree ...", + "Don't speak! I already know what you have in your impish mind my friend and I agree fully. You will bring this cushion to Carlin and place it right on Queen Eloise's throne! Then return here and talk to me about your mission.", + }, }, addItem = { itemId = 121 }, updateStorages = { { key = Storage.WhatAFoolish.Mission6, value = 4 }, - { key = Storage.WhatAFoolish.Questline, value = 17 } - } + { key = Storage.WhatAFoolish.Questline, value = 17 }, + }, }, [17] = { text = { - [1] = 'Have you placed the whoopee cushion on the throne in Carlin?', - [2] = 'No, you haven\'t! Why do only fools apply for the fools guild?', - [3] = 'This will cause quite a commotion in Carlin. I think we should play some pranks in many more places to spread humour all over the world. Talk to me about your next mission to learn more about it.' - + [1] = "Have you placed the whoopee cushion on the throne in Carlin?", + [2] = "No, you haven't! Why do only fools apply for the fools guild?", + [3] = "This will cause quite a commotion in Carlin. I think we should play some pranks in many more places to spread humour all over the world. Talk to me about your next mission to learn more about it.", }, yes = true, checkStorage = Storage.WhatAFoolish.WhoopeeCushion, updateStorages = { { key = Storage.WhatAFoolish.Mission6, value = 5 }, - { key = Storage.WhatAFoolish.Questline, value = 18 } - } + { key = Storage.WhatAFoolish.Questline, value = 18 }, + }, }, [18] = { text = { [1] = { - 'The time has come to play a prank on some arrogant Venorean. I found out that Carina, the jeweller, is terribly afraid of mice ...', - 'Your task is quite easy. Steal the toy mouse of Queen Eloise\'s cat and show it to Carina in Venore to scare her to death. Then report about your mission.' - } + "The time has come to play a prank on some arrogant Venorean. I found out that Carina, the jeweller, is terribly afraid of mice ...", + "Your task is quite easy. Steal the toy mouse of Queen Eloise's cat and show it to Carina in Venore to scare her to death. Then report about your mission.", + }, }, updateStorages = { { key = Storage.WhatAFoolish.Mission7, value = 1 }, { key = Storage.WhatAFoolish.QueenEloiseCatDoor, value = 1 }, - { key = Storage.WhatAFoolish.Questline, value = 19 } - } + { key = Storage.WhatAFoolish.Questline, value = 19 }, + }, }, [19] = { text = { - [1] = 'Have you been to Venore and scared Carina as I asked you to?', - [2] = 'No, you haven\'t! Why do only fools apply for the fools guild?', - [3] = 'Excellent. The Venoreans have been safe from my pranks far too long. If you are ready for another mission, talk to me.' - + [1] = "Have you been to Venore and scared Carina as I asked you to?", + [2] = "No, you haven't! Why do only fools apply for the fools guild?", + [3] = "Excellent. The Venoreans have been safe from my pranks far too long. If you are ready for another mission, talk to me.", }, yes = true, checkStorage = Storage.WhatAFoolish.ScaredCarina, updateStorages = { { key = Storage.WhatAFoolish.Mission7, value = 2 }, - { key = Storage.WhatAFoolish.Questline, value = 20 } - } + { key = Storage.WhatAFoolish.Questline, value = 20 }, + }, }, [20] = { text = { [1] = { - 'These Venoreans think they are safe from us. They couldn\'t be more wrong. Let them feel the wrath of the fools! Get a spoon and collect some sulphur from an inactive lava hole ...', - 'Be very careful when you get the easily inflammable substance. Then let\'s talk about the next part of your mission.' - } + "These Venoreans think they are safe from us. They couldn't be more wrong. Let them feel the wrath of the fools! Get a spoon and collect some sulphur from an inactive lava hole ...", + "Be very careful when you get the easily inflammable substance. Then let's talk about the next part of your mission.", + }, }, updateStorages = { { key = Storage.WhatAFoolish.Mission8, value = 1 }, - { key = Storage.WhatAFoolish.Questline, value = 21 } - } + { key = Storage.WhatAFoolish.Questline, value = 21 }, + }, }, [21] = { text = { - [1] = 'Have you collected the sulphur?', - [2] = 'No, you haven\'t! Why do only fools apply for the fools guild?', - [3] = 'So much for part one of my foolish master plan. Now travel to Tiquanda and use a kitchen knife to cut some leaves of the jungle dweller bush for me. Bring them with you when you report about your mission.' + [1] = "Have you collected the sulphur?", + [2] = "No, you haven't! Why do only fools apply for the fools guild?", + [3] = "So much for part one of my foolish master plan. Now travel to Tiquanda and use a kitchen knife to cut some leaves of the jungle dweller bush for me. Bring them with you when you report about your mission.", }, yes = true, removeItem = { itemId = 124 }, updateStorages = { { key = Storage.WhatAFoolish.Mission8, value = 2 }, - { key = Storage.WhatAFoolish.Questline, value = 22 } - } + { key = Storage.WhatAFoolish.Questline, value = 22 }, + }, }, [22] = { text = { - [1] = 'Do you have the leaves with you?', - [2] = 'No, you don\'t! Why do only fools apply for the fools guild?', - [3] = 'So far so good. I will prepare some nasty surprise for your next mission. Talk to me about it whenever you feel ready.' + [1] = "Do you have the leaves with you?", + [2] = "No, you don't! Why do only fools apply for the fools guild?", + [3] = "So far so good. I will prepare some nasty surprise for your next mission. Talk to me about it whenever you feel ready.", }, yes = true, removeItem = { itemId = 3129 }, updateStorages = { { key = Storage.WhatAFoolish.Mission8, value = 3 }, - { key = Storage.WhatAFoolish.Questline, value = 23 } - } + { key = Storage.WhatAFoolish.Questline, value = 23 }, + }, }, [23] = { text = { [1] = { - 'Now look at this, someone has made exploding cigars out of the sulphur and the leaves! Coincidentally I have a great idea how wecould use them ...', - 'Take this cigar and give it to Theodore Loveless, the Venorean representative in Liberty Bay. After you [1]ed our little\'present\', report here about the outcome of your mission.' - } + "Now look at this, someone has made exploding cigars out of the sulphur and the leaves! Coincidentally I have a great idea how wecould use them ...", + "Take this cigar and give it to Theodore Loveless, the Venorean representative in Liberty Bay. After you [1]ed our little'present', report here about the outcome of your mission.", + }, }, addItem = { itemId = 141 }, updateStorages = { { key = Storage.WhatAFoolish.Mission8, value = 4 }, - { key = Storage.WhatAFoolish.Questline, value = 24 } - } + { key = Storage.WhatAFoolish.Questline, value = 24 }, + }, }, [24] = { text = { - [1] = 'Have you [1]ed the exploding cigar to Theodore Loveless?', - [2] = 'No, you haven\'t! Why do only fools apply for the fools guild?', - [3] = 'You\'re hell of a guy, I bet you enjoyed it. As you represent everything a fool stands for, I give you this fool\'s sceptre to spiceup your jester outfit. If you are interested, there are even more missions for a fool like yourself. Just ask about them.' + [1] = "Have you [1]ed the exploding cigar to Theodore Loveless?", + [2] = "No, you haven't! Why do only fools apply for the fools guild?", + [3] = "You're hell of a guy, I bet you enjoyed it. As you represent everything a fool stands for, I give you this fool's sceptre to spiceup your jester outfit. If you are interested, there are even more missions for a fool like yourself. Just ask about them.", }, yes = true, checkStorage = Storage.WhatAFoolish.Cigar, updateStorages = { { key = Storage.WhatAFoolish.Mission8, value = 5 }, - { key = Storage.WhatAFoolish.Questline, value = 25 } + { key = Storage.WhatAFoolish.Questline, value = 25 }, }, addItem = { itemId = 895 }, - addon = 1 + addon = 1, }, [25] = { text = { [1] = { - 'Well, I think as a true fool you have to think big. So our next little prank will be on a grand scale. Of course, this will need some preparation ...', - 'Firstly, take this vial and use it on a dead stalker immediately after his death to collect his warm blood. Report about your mission when you are done.' - } + "Well, I think as a true fool you have to think big. So our next little prank will be on a grand scale. Of course, this will need some preparation ...", + "Firstly, take this vial and use it on a dead stalker immediately after his death to collect his warm blood. Report about your mission when you are done.", + }, }, updateStorages = { { key = Storage.WhatAFoolish.Mission9, value = 1 }, - { key = Storage.WhatAFoolish.Questline, value = 26 } + { key = Storage.WhatAFoolish.Questline, value = 26 }, }, - addItem = { itemId = 107 } + addItem = { itemId = 107 }, }, [26] = { text = { - [1] = 'Have you gotten the blood that we need?', - [2] = 'No, you haven\'t! Why do only fools apply for the fools guild?', + [1] = "Have you gotten the blood that we need?", + [2] = "No, you haven't! Why do only fools apply for the fools guild?", [3] = { - 'Congratulations! Now let\'s talk about the complicated part. We need the ink of a quara constrictor. Use this vial on a fresh corpse to get the ink ...', - 'Stop making these grimaces! I know it\'s a foolish task, but after all that\'s also the fun about it. Get the ink and report to me about your mission.' - } + "Congratulations! Now let's talk about the complicated part. We need the ink of a quara constrictor. Use this vial on a fresh corpse to get the ink ...", + "Stop making these grimaces! I know it's a foolish task, but after all that's also the fun about it. Get the ink and report to me about your mission.", + }, }, yes = true, removeItem = { itemId = 125 }, updateStorages = { { key = Storage.WhatAFoolish.Mission9, value = 2 }, - { key = Storage.WhatAFoolish.Questline, value = 27 } + { key = Storage.WhatAFoolish.Questline, value = 27 }, }, - addItem = { itemId = 107 } + addItem = { itemId = 107 }, }, [27] = { text = { - [1] = 'Have you acquired the constrictor\'s ink?', - [2] = 'No, you haven\'t! Why do only fools apply for the fools guild?', - [3] = 'Excellent. As a true fool you have of course no clue what these ingredients are good for, but I will enlighten you. Just ask about your next mission and I\'ll tell you everything you need to know.' + [1] = "Have you acquired the constrictor's ink?", + [2] = "No, you haven't! Why do only fools apply for the fools guild?", + [3] = "Excellent. As a true fool you have of course no clue what these ingredients are good for, but I will enlighten you. Just ask about your next mission and I'll tell you everything you need to know.", }, yes = true, removeItem = { itemId = 9149 }, updateStorages = { { key = Storage.WhatAFoolish.Mission9, value = 3 }, - { key = Storage.WhatAFoolish.Questline, value = 28 } - } + { key = Storage.WhatAFoolish.Questline, value = 28 }, + }, }, [28] = { text = { [1] = { - 'Blood of a stalker and ink of a quara are the main ingredients of the prop for our next prank. Mix it together to obtain some nice vanishing ink ...', - 'It looks exactly like normal ink, however, exposed to air it will vanish within minutes. I\'m sure you understand how useful this ink can be ...', - 'Now, listen to my plan. Go to Sam and order 2000 steel shields. He will never agree to it if you do not sign a contract ...', - 'Use the vanishing ink to sign the contract and then hand the paper back to him. This will keep this humourless doter busy for a while. Talk to me about your mission when you are done.' - } + "Blood of a stalker and ink of a quara are the main ingredients of the prop for our next prank. Mix it together to obtain some nice vanishing ink ...", + "It looks exactly like normal ink, however, exposed to air it will vanish within minutes. I'm sure you understand how useful this ink can be ...", + "Now, listen to my plan. Go to Sam and order 2000 steel shields. He will never agree to it if you do not sign a contract ...", + "Use the vanishing ink to sign the contract and then hand the paper back to him. This will keep this humourless doter busy for a while. Talk to me about your mission when you are done.", + }, }, updateStorages = { { key = Storage.WhatAFoolish.Mission9, value = 4 }, - { key = Storage.WhatAFoolish.Questline, value = 29 } + { key = Storage.WhatAFoolish.Questline, value = 29 }, }, - addItem = { itemId = 127 } + addItem = { itemId = 127 }, }, [29] = { text = { - [1] = 'So have you fooled the old Sam yet?', - [2] = 'No, you haven\'t! Why do only fools apply for the fools guild?', - [3] = 'What a splendid prank! If you are ready for more, ask me about the next mission.' + [1] = "So have you fooled the old Sam yet?", + [2] = "No, you haven't! Why do only fools apply for the fools guild?", + [3] = "What a splendid prank! If you are ready for more, ask me about the next mission.", }, yes = true, checkStorage = Storage.WhatAFoolish.Contract, updateStorages = { { key = Storage.WhatAFoolish.Mission9, value = 5 }, - { key = Storage.WhatAFoolish.Questline, value = 30 } - } + { key = Storage.WhatAFoolish.Questline, value = 30 }, + }, }, [30] = { text = { [1] = { - 'This time I have no real mission for you, rather a small errand. I bet you had expected some dangerous and exhausting quest but since I like you so much, I make it veeeeery easy for you ...', - 'Here are some cookies. Beware though, those are exploding confetti cookies. You will have to [1] them to 10 special persons, then return to me and report about your mission. Seems easy, doesn\'t it? Are you going to accept this mission?' + "This time I have no real mission for you, rather a small errand. I bet you had expected some dangerous and exhausting quest but since I like you so much, I make it veeeeery easy for you ...", + "Here are some cookies. Beware though, those are exploding confetti cookies. You will have to [1] them to 10 special persons, then return to me and report about your mission. Seems easy, doesn't it? Are you going to accept this mission?", }, [3] = { - 'Great! That\'s the word of a true fool! Maybe you want to write the names down. Here we go: [1] a cookie to: ...', - 'The pompous hero Avar Tar in Edron, Simon the greedy beggar on Fibula, the pirate Ariella on the Shattered Isles, the dubious Lorbas next to the ruins of the Dark Cathedral, King Markwin in the underground city Mintwalin ...', - 'The shaman Hjaern on the ice island Nibelor, the witch Wyda in the Green Claw Swamp, the ape Hairycles in the jungle city Banuta ...', - 'The orc king in the orc fortress Uldrek\'s Rock and the last one to EITHER Yaman, the green djinn, OR, Nah\'Bob, the blue djinn ...', - 'A piece of cake isn\'t it? Did you take notes? If you need the list again, just ask me for it. Otherwise leave now and report about the mission whenever you\'re done.' - } + "Great! That's the word of a true fool! Maybe you want to write the names down. Here we go: [1] a cookie to: ...", + "The pompous hero Avar Tar in Edron, Simon the greedy beggar on Fibula, the pirate Ariella on the Shattered Isles, the dubious Lorbas next to the ruins of the Dark Cathedral, King Markwin in the underground city Mintwalin ...", + "The shaman Hjaern on the ice island Nibelor, the witch Wyda in the Green Claw Swamp, the ape Hairycles in the jungle city Banuta ...", + "The orc king in the orc fortress Uldrek's Rock and the last one to EITHER Yaman, the green djinn, OR, Nah'Bob, the blue djinn ...", + "A piece of cake isn't it? Did you take notes? If you need the list again, just ask me for it. Otherwise leave now and report about the mission whenever you're done.", + }, }, yes = true, updateStorages = { { key = Storage.WhatAFoolish.Mission10, value = 1 }, - { key = Storage.WhatAFoolish.Questline, value = 31 } + { key = Storage.WhatAFoolish.Questline, value = 31 }, }, - addItem = { itemId = 130, count = 10 } + addItem = { itemId = 130, count = 10 }, }, [31] = { text = { - [1] = 'Are you done with your little delivery mission?', - [3] = 'Indeed, you\'re done. By the way, you look a little bit tired and dirty. However, if you still have some power left, ask me about the next mission.' + [1] = "Are you done with your little delivery mission?", + [3] = "Indeed, you're done. By the way, you look a little bit tired and dirty. However, if you still have some power left, ask me about the next mission.", }, yes = true, cookiesDelivery = true, updateStorages = { { key = Storage.WhatAFoolish.Mission10, value = 2 }, - { key = Storage.WhatAFoolish.Questline, value = 32 } - } + { key = Storage.WhatAFoolish.Questline, value = 32 }, + }, }, [32] = { text = { [1] = { - 'I\'m sure you\'re wondering how many tiring missions old Bozo has still in store for you! Don\'t worry! You\'re almost done, only one final mission left ...', - 'Well, that is after you got the needed material. First of all, bring me 5 pieces of white cloth. Then we talk more about your mission.' - } + "I'm sure you're wondering how many tiring missions old Bozo has still in store for you! Don't worry! You're almost done, only one final mission left ...", + "Well, that is after you got the needed material. First of all, bring me 5 pieces of white cloth. Then we talk more about your mission.", + }, }, updateStorages = { { key = Storage.WhatAFoolish.Mission11, value = 1 }, - { key = Storage.WhatAFoolish.Questline, value = 33 } - } + { key = Storage.WhatAFoolish.Questline, value = 33 }, + }, }, [33] = { text = { - [1] = 'Have you been able to get hold of 5 pieces of white cloth?', - [2] = 'No, you haven\'t! Why do only fools apply for the fools guild?', + [1] = "Have you been able to get hold of 5 pieces of white cloth?", + [2] = "No, you haven't! Why do only fools apply for the fools guild?", [3] = { - 'Well done. Anyway, I reeeally hate to tell you but ... as white as it\'s now we have no use for it. Don\'t worry though. There is a way to give it an old and worn look ...', - 'The unforgiving desert sun combined with the noxious fumes of the Plague Spike in Darama will do the trick ...', - 'Travel to Darama, climb the Plague Spike and look for a nice spot to let mother nature do the work. Perhaps something like an altar would be useful. Once you\'re done, return here and learn about the next step of your mission.' - } + "Well done. Anyway, I reeeally hate to tell you but ... as white as it's now we have no use for it. Don't worry though. There is a way to give it an old and worn look ...", + "The unforgiving desert sun combined with the noxious fumes of the Plague Spike in Darama will do the trick ...", + "Travel to Darama, climb the Plague Spike and look for a nice spot to let mother nature do the work. Perhaps something like an altar would be useful. Once you're done, return here and learn about the next step of your mission.", + }, }, yes = true, removeItem = { itemId = 5909, count = 5 }, updateStorages = { { key = Storage.WhatAFoolish.Mission11, value = 2 }, - { key = Storage.WhatAFoolish.Questline, value = 34 } + { key = Storage.WhatAFoolish.Questline, value = 34 }, }, - addItem = { itemId = 142 } + addItem = { itemId = 142 }, }, [34] = { text = { - [1] = 'Do you have a piece of old and worn cloth?', - [2] = 'No, you don\'t! Why do only fools apply for the fools guild?', + [1] = "Do you have a piece of old and worn cloth?", + [2] = "No, you don't! Why do only fools apply for the fools guild?", [3] = { - 'Fine, fine. Now let\'s do the last step of our foolish plan. Smart as I am, I used a pair of scissors to create some old and worn bands from the cloth you have brought me. DON\'T touch it yet ...', - 'Travel to Darashia and visit caliph Kazzan. Use the bands made of the worn cloth to disguise yourself as a mummy ...', - 'Finally, talk to the caliph to give him the scare of his lifetime. Afterwards come back here and tell me about the fun you had with this mission.' - } + "Fine, fine. Now let's do the last step of our foolish plan. Smart as I am, I used a pair of scissors to create some old and worn bands from the cloth you have brought me. DON'T touch it yet ...", + "Travel to Darashia and visit caliph Kazzan. Use the bands made of the worn cloth to disguise yourself as a mummy ...", + "Finally, talk to the caliph to give him the scare of his lifetime. Afterwards come back here and tell me about the fun you had with this mission.", + }, }, yes = true, removeItem = { itemId = 143 }, updateStorages = { { key = Storage.WhatAFoolish.Mission11, value = 3 }, - { key = Storage.WhatAFoolish.Questline, value = 35 } + { key = Storage.WhatAFoolish.Questline, value = 35 }, }, - addItem = { itemId = 144 } + addItem = { itemId = 144 }, }, [35] = { text = { - [1] = 'Well, my diligent pupil, have you scared the caliph yet?', - [2] = 'No, you don\'t! Why do only fools apply for the fools guild?', - [3] = 'By Kurik, I knew you have it in you. You are a fool after my fancy. Take this jester hat, you deserve it. It will go nicely with your jester costume.' + [1] = "Well, my diligent pupil, have you scared the caliph yet?", + [2] = "No, you don't! Why do only fools apply for the fools guild?", + [3] = "By Kurik, I knew you have it in you. You are a fool after my fancy. Take this jester hat, you deserve it. It will go nicely with your jester costume.", }, yes = true, checkStorage = Storage.WhatAFoolish.ScaredKazzan, updateStorages = { { key = Storage.WhatAFoolish.Mission11, value = 4 }, - { key = Storage.WhatAFoolish.Questline, value = 36 } + { key = Storage.WhatAFoolish.Questline, value = 36 }, }, addItem = { itemId = 894 }, addon = 2, - last = true + last = true, }, [36] = { text = { - [1] = 'You are a fully trained fool now who has developed to an accomplished jester. Your final mission is to bring fun and joy to the whole world.' - } - } + [1] = "You are a fully trained fool now who has developed to an accomplished jester. Your final mission is to bring fun and joy to the whole world.", + }, + }, } local jesterOutfit = { [-1] = { text = { - [1] = 'First we will need one piece of red cloth. Do you have it with you?', - [2] = 'Ok, now we need one piece of blue cloth. Do you have one with you by chance?' + [1] = "First we will need one piece of red cloth. Do you have it with you?", + [2] = "Ok, now we need one piece of blue cloth. Do you have one with you by chance?", }, removeItemId = 5911, newValue = 1, - choice = 1 + choice = 1, }, [1] = { text = { - [1] = 'Now we need one piece of blue cloth. Do you have one with you by chance?', - [2] = 'Ok, now we need one piece of green cloth. Do you have one with you by chance?' + [1] = "Now we need one piece of blue cloth. Do you have one with you by chance?", + [2] = "Ok, now we need one piece of green cloth. Do you have one with you by chance?", }, removeItemId = 5912, newValue = 2, - choice = 2 + choice = 2, }, [2] = { text = { - [1] = 'Now we need one piece of green cloth. Do you have one with you by chance?', - [2] = 'At last we need one piece of yellow cloth. Do you have one with you by chance?' + [1] = "Now we need one piece of green cloth. Do you have one with you by chance?", + [2] = "At last we need one piece of yellow cloth. Do you have one with you by chance?", }, removeItemId = 5910, newValue = 3, - choice = 3 + choice = 3, }, [3] = { text = { - [1] = 'Now we need one piece of yellow cloth. Do you have one with you by chance?', - [2] = 'That\'s it. Here is your jester outfit. It\'s admittedly a bit basic but maybe you\'ll earn some nice accessories soon. At least you are more fittingly dressed for your next missions now.' + [1] = "Now we need one piece of yellow cloth. Do you have one with you by chance?", + [2] = "That's it. Here is your jester outfit. It's admittedly a bit basic but maybe you'll earn some nice accessories soon. At least you are more fittingly dressed for your next missions now.", }, removeItemId = 5914, newValue = 4, addOutfit = true, - last = true - } + last = true, + }, } local value = {} @@ -607,9 +605,9 @@ local value = {} local function greetCallback(npc, creature) local playerId = creature:getId() if Player(creature):getSex() == PLAYERSEX_MALE then - npcHandler:setMessage(MESSAGE_GREET, 'Hi there, how\'s it hanging, |PLAYERNAME|! What brings you {here}?') + npcHandler:setMessage(MESSAGE_GREET, "Hi there, how's it hanging, |PLAYERNAME|! What brings you {here}?") else - npcHandler:setMessage(MESSAGE_GREET, 'Hello, hello, hello, little lady |PLAYERNAME|! What brings you {here}?') + npcHandler:setMessage(MESSAGE_GREET, "Hello, hello, hello, little lady |PLAYERNAME|! What brings you {here}?") end value[playerId] = nil return true @@ -623,15 +621,15 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'join') then + if MsgContains(message, "join") then if player:getStorageValue(Storage.WhatAFoolish.Questline) ~= -1 then - npcHandler:say('Wow, your stupidity would be pride and joy for every fool. You\'ve already applied as a member. Let\'s rather talk about your current mission.', npc, creature) + npcHandler:say("Wow, your stupidity would be pride and joy for every fool. You've already applied as a member. Let's rather talk about your current mission.", npc, creature) return true end - npcHandler:say('Do you wish to become a jester and join the fools guild?', npc, creature) + npcHandler:say("Do you wish to become a jester and join the fools guild?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'mission') then + elseif MsgContains(message, "mission") then local targetValue = config[player:getStorageValue(Storage.WhatAFoolish.Questline)] if not targetValue then return true @@ -655,7 +653,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 3) value[playerId] = targetValue end - elseif MsgContains(message, 'jester outfit') then + elseif MsgContains(message, "jester outfit") then if player:getStorageValue(Storage.WhatAFoolish.Questline) == 12 then local targetValue = jesterOutfit[player:getStorageValue(Storage.WhatAFoolish.JesterOutfit)] if not targetValue then @@ -666,14 +664,14 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 4) value[playerId] = targetValue else - npcHandler:say('I\'m sure it suits you well.', npc, creature) + npcHandler:say("I'm sure it suits you well.", npc, creature) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - 'So you want to make a total fool of yourself? Fine with me, but note that becoming a real fool means more than being just an ordinary fool ...', - 'You will have to master a whole series of challenging, lengthy and, above all, totally foolish quests ...', - 'Are you sure you want to waste a part of your limited lifetime on a quest that makes a fool of yourself and which might award you with the prestigious title of a grand fool in a far away future?' + "So you want to make a total fool of yourself? Fine with me, but note that becoming a real fool means more than being just an ordinary fool ...", + "You will have to master a whole series of challenging, lengthy and, above all, totally foolish quests ...", + "Are you sure you want to waste a part of your limited lifetime on a quest that makes a fool of yourself and which might award you with the prestigious title of a grand fool in a far away future?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then @@ -681,11 +679,11 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.WhatAFoolish.Questlog, 1) player:setStorageValue(Storage.WhatAFoolish.Mission1, 1) npcHandler:say({ - 'What a foolish decision! You are indeed a worthy candidate! But let\'s talk about business ...', - 'Being a jester is not just about telling jokes. A good jester heavily relies on requisites ...', - 'Getting some requisites will be your first job. First of all we need a good supply of water squirt flowers ...', - 'I\'m making them on my own in my spare time but I need the right material. South of Thais, next to the Whiteflower Temple, you will find the ideal flowers ...', - 'Take a kitchen knife, cut the thickest and healthiest flower and bring it here. Then talk to me about your mission.' + "What a foolish decision! You are indeed a worthy candidate! But let's talk about business ...", + "Being a jester is not just about telling jokes. A good jester heavily relies on requisites ...", + "Getting some requisites will be your first job. First of all we need a good supply of water squirt flowers ...", + "I'm making them on my own in my spare time but I need the right material. South of Thais, next to the Whiteflower Temple, you will find the ideal flowers ...", + "Take a kitchen knife, cut the thickest and healthiest flower and bring it here. Then talk to me about your mission.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then @@ -716,16 +714,15 @@ local function creatureSayCallback(npc, creature, type, message) if targetValue.cookiesDeliveryy then if player:getCookiesDelivered() ~= 10 then - npcHandler:say('No, you aren\'t! Why do only fools apply for the fools guild?', npc, creature) + npcHandler:say("No, you aren't! Why do only fools apply for the fools guild?", npc, creature) npcHandler:setTopic(playerId, 0) return true end end if targetValue.pie then - if player:getStorageValue(Storage.WhatAFoolish.PieBoxTimer) > 0 - and player:getStorageValue(Storage.WhatAFoolish.PieBoxTimer) < os.time() then - npcHandler:say('Eeeek! What have you done?? These pies are crawling with bugs! Those must be the infamous parcel bugs! Get some new pies at once you wannabe fool, and this time without any bugs!', npc, creature) + if player:getStorageValue(Storage.WhatAFoolish.PieBoxTimer) > 0 and player:getStorageValue(Storage.WhatAFoolish.PieBoxTimer) < os.time() then + npcHandler:say("Eeeek! What have you done?? These pies are crawling with bugs! Those must be the infamous parcel bugs! Get some new pies at once you wannabe fool, and this time without any bugs!", npc, creature) npcHandler:setTopic(playerId, 0) return true end @@ -753,8 +750,8 @@ local function creatureSayCallback(npc, creature, type, message) end if targetValue.last then - player:addAchievement('Perfect Fool') - player:addAchievement('Fool at Heart') + player:addAchievement("Perfect Fool") + player:addAchievement("Fool at Heart") end npcHandler:say(targetValue.text[3], npc, creature) @@ -762,7 +759,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 4 then local targetValue = value[playerId] if not player:removeItem(targetValue.removeItemId, 1) then - npcHandler:say('No, you don\'t! Why do only fools apply for the fools guild?', npc, creature) + npcHandler:say("No, you don't! Why do only fools apply for the fools guild?", npc, creature) npcHandler:setTopic(playerId, 0) return true end @@ -780,27 +777,25 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 0) end end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) ~= 0 then + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) ~= 0 then if table.contains({ 1, 2 }, npcHandler:getTopic(playerId)) then - npcHandler:say('Too bad, I\'m convinced you have it in you.', npc, creature) + npcHandler:say("Too bad, I'm convinced you have it in you.", npc, creature) elseif table.contains({ 3, 4 }, npcHandler:getTopic(playerId)) then - if player:getStorageValue(Storage.WhatAFoolish.Questline) == 11 - and player:getStorageValue(Storage.WhatAFoolish.EmperorBeardShave) == 1 then + if player:getStorageValue(Storage.WhatAFoolish.Questline) == 11 and player:getStorageValue(Storage.WhatAFoolish.EmperorBeardShave) == 1 then player:setStorageValue(Storage.WhatAFoolish.Questline, 12) player:setStorageValue(Storage.WhatAFoolish.Mission5, 3) npcHandler:say({ - 'You shaved the emperor, but lost the beard? What kind of fool are you? Well, at least he will have a nice surprise when he wakes up ...', - 'Still, as a small recognition of your accomplishments I\'m willing to tell you how to get your own jester outfit. If you are interested in more fun and adventures, ask me for more missions.' + "You shaved the emperor, but lost the beard? What kind of fool are you? Well, at least he will have a nice surprise when he wakes up ...", + "Still, as a small recognition of your accomplishments I'm willing to tell you how to get your own jester outfit. If you are interested in more fun and adventures, ask me for more missions.", }, npc, creature) elseif player:getStorageValue(Storage.WhatAFoolish.Questline) == 30 then - npcHandler:say('You won\'t be successful in the fool\'s world with such an attitude.', npc, creature) - elseif player:getStorageValue(Storage.WhatAFoolish.Questline) == 35 - and player:getStorageValue(Storage.WhatAFoolish.LostDisguise) ~= 1 then + npcHandler:say("You won't be successful in the fool's world with such an attitude.", npc, creature) + elseif player:getStorageValue(Storage.WhatAFoolish.Questline) == 35 and player:getStorageValue(Storage.WhatAFoolish.LostDisguise) ~= 1 then player:addItem(144, 1) player:setStorageValue(Storage.WhatAFoolish.LostDisguise, 1) - npcHandler:say('You wasted the disguise?? Why do only fools apply for the fools guild? Here... try again, but be wittier this time.', npc, creature) + npcHandler:say("You wasted the disguise?? Why do only fools apply for the fools guild? Here... try again, but be wittier this time.", npc, creature) else - npcHandler:say('Oh boy, why do only fools apply for the fools guild?', npc, creature) + npcHandler:say("Oh boy, why do only fools apply for the fools guild?", npc, creature) end end npcHandler:setTopic(playerId, 0) @@ -808,94 +803,124 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'sorcerer' }, StdModule.say, { npcHandler = npcHandler, text = 'I wanted to become a sorcerer, too, but I was overqualified!' }, function(player) return player:isSorcerer() end) -keywordHandler:addKeyword({ 'druid' }, StdModule.say, { npcHandler = npcHandler, text = 'I wanted to become a druid, too, but I was overqualified!' }, function(player) return player:isDruid() end) -keywordHandler:addKeyword({ 'paladin' }, StdModule.say, { npcHandler = npcHandler, text = 'I wanted to become a paladin, too, but I was overqualified!' }, function(player) return player:isPaladin() end) -keywordHandler:addKeyword({ 'knight' }, StdModule.say, { npcHandler = npcHandler, text = 'I wanted to become a knight, too, but I was overqualified!' }, function(player) return player:isKnight() end) -keywordHandler:addKeyword({ 'sorcerer' }, StdModule.say, { npcHandler = npcHandler, text = 'The good thing about them is that they can\'t be at two places at the same time.' }) -keywordHandler:addKeyword({ 'druid' }, StdModule.say, { npcHandler = npcHandler, text = 'I wonder if they love my water squirt flowers as much as all other plants.' }) -keywordHandler:addKeyword({ 'paladin' }, StdModule.say, { npcHandler = npcHandler, text = 'They are the king\'s favourites, because they know how to \'bow\'.' }) -keywordHandler:addKeyword({ 'knight' }, StdModule.say, { npcHandler = npcHandler, text = 'Did you notice that old knights have their scars just on their backs?' }) - -keywordHandler:addKeyword({ 'here' }, StdModule.say, { npcHandler = npcHandler, text = 'A fitting place for a {jester}. I guess there are worse {jobs} around.' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'Bozo: Nah, no jests about His Royal Highness.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'I rarely leave the castle. It\'s really stressful to be as popular as me.' }) -keywordHandler:addKeyword({ 'castle' }, StdModule.say, { npcHandler = npcHandler, text = 'This castle is my home. A fitting place for a jester and all other fools. Feel welcome.' }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a jester, not a doctor!' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Bozo. But it\'s more than a name, it\'s a lifestyle for me!' }) -keywordHandler:addKeyword({ 'bozo' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s me: Bozo, the jester!' }) -keywordHandler:addKeyword({ 'guild' }, StdModule.say, { npcHandler = npcHandler, text = 'Ever since the first guild was created, there is a great demand of jesters and fools to join them.' }) -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { npcHandler = npcHandler, text = 'Sell? Hmm, I know a little about magic and by chance I can sell you a truly unusual {weapon}.' }) -keywordHandler:addKeyword({ 'joke' }, StdModule.say, { npcHandler = npcHandler, text = 'I know some \'monstrous\' jokes!' }) -keywordHandler:addKeyword({ 'news' }, StdModule.say, { npcHandler = npcHandler, text = 'I know the newest jokes in tibia.' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'Thank you, I\'m fine, the gods are with me.' }) -keywordHandler:addKeyword({ 'necromant', 'nectar' }, StdModule.say, { npcHandler = npcHandler, text = 'Pheeew! That sounds disgusting! Are you a cook at Frodo\'s?' }) -keywordHandler:addKeyword({ 'necromant' }, StdModule.say, { npcHandler = npcHandler, text = 'Don\'t feed the necromants.' }) -keywordHandler:addKeyword({ 'dog' }, StdModule.say, { npcHandler = npcHandler, text = 'Are we talking about Noodles?' }) -keywordHandler:addKeyword({ 'poodle' }, StdModule.say, { npcHandler = npcHandler, text = 'Are we talking about Noodles?' }) -keywordHandler:addKeyword({ 'noodles' }, StdModule.say, { npcHandler = npcHandler, text = 'Hey, the little one is almost as funny as me!' }) -keywordHandler:addKeyword({ 'muriel' }, StdModule.say, { npcHandler = npcHandler, text = 'Better don\'t mess with sorcerers!' }) -keywordHandler:addKeyword({ 'elane' }, StdModule.say, { npcHandler = npcHandler, text = 'She\'s pretty but too serious for my taste.' }) -keywordHandler:addKeyword({ 'marvik' }, StdModule.say, { npcHandler = npcHandler, text = 'Humourless old guy! Once, he turned me into a frog for painting his distasteful cave in pink.' }) -keywordHandler:addKeyword({ 'gregor' }, StdModule.say, { npcHandler = npcHandler, text = 'A man of steel with a stomach of wax. Never offer him a beer!' }) -keywordHandler:addKeyword({ 'quentin' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s my baby brother. If you tell him I sent you, he will grant you an extra spell or two.' }) -keywordHandler:addKeyword({ 'gorn' }, StdModule.say, { npcHandler = npcHandler, text = 'He sells spell scrolls each day at midnight, but you have to address him that very second.' }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = 'I better make no jokes about THIS matter.' }) -keywordHandler:addKeyword({ 'sam' }, StdModule.say, { npcHandler = npcHandler, text = 'Did you know that he sells a \'power axe of doom\' now? Run and buy it, he only has got three in store.' }) -keywordHandler:addKeyword({ 'benjamin' }, StdModule.say, { npcHandler = npcHandler, text = 'He would make a fine jester, too.' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'I know a lot of monster jokes. Just tell me a monster\'s name, come on.' }) -keywordHandler:addKeyword({ 'demon' }, StdModule.say, { npcHandler = npcHandler, text = 'Why are the experienced heroes quicker than others? ... The demons love fast food!' }) -keywordHandler:addKeyword({ 'ghoul' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do ghouls buy their robes? ... In a boooohtique!' }) -keywordHandler:addKeyword({ 'dragon' }, StdModule.say, { npcHandler = npcHandler, text = 'Why do dragons breathe fire? ... They ate too many sorcerers in chilli sauce!' }) -keywordHandler:addKeyword({ 'orc' }, StdModule.say, { npcHandler = npcHandler, text = 'Why do orcs have green skin? ... They ate at Frodo\'s!' }) -keywordHandler:addKeyword({ 'cyclops' }, StdModule.say, { npcHandler = npcHandler, text = 'How many eyes does a cyclops have? ... One for each IQ point they have!' }) -keywordHandler:addKeyword({ 'oswald' }, StdModule.say, { npcHandler = npcHandler, text = 'If you believe half the rumours he\'s spreading, you will get in a lot of trouble.' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'If you are a bad jester, you get a chance to visit them now and then.' }) -keywordHandler:addKeyword({ 'mino' }, StdModule.say, { npcHandler = npcHandler, text = 'What do all little minotaurs want to become when they are grown-ups? ... Cowboys, of course!' }) -keywordHandler:addKeyword({ 'troll' }, StdModule.say, { npcHandler = npcHandler, text = 'Why do trolls live underground? ... Because there are so many pks on the surface!' }) -keywordHandler:addKeyword({ 'bonelord' }, StdModule.say, { npcHandler = npcHandler, text = 'Why are bonelords so ugly? ... Because their mom and dad were bonelords, too!' }) -keywordHandler:addKeyword({ 'rat' }, StdModule.say, { npcHandler = npcHandler, text = 'Why does the rat have a wooden leg? ... Because it is a former pirate!' }) -keywordHandler:addKeyword({ 'spider' }, StdModule.say, { npcHandler = npcHandler, text = 'Why did the spider cross the road? ... Because it ... oh you already know this one!?' }) -keywordHandler:addKeyword({ 'hugo' }, StdModule.say, { npcHandler = npcHandler, text = 'I had a cousin named like that.' }) -keywordHandler:addKeyword({ 'cousin' }, StdModule.say, { npcHandler = npcHandler, text = 'He died some years ago.' }) -keywordHandler:addKeyword({ 'durin' }, StdModule.say, { npcHandler = npcHandler, text = 'Isn\'t he the author of the book \'Fun with Demons\'?' }) -keywordHandler:addKeyword({ 'stephan' }, StdModule.say, { npcHandler = npcHandler, text = 'He is kind of a father figure to me. Of course he denies all kinship to me.' }) -keywordHandler:addKeyword({ 'steve' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s a smart one. I heared he hid in a foreign country as the first bugs showed up.' }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = 'I am not foolish enough to believe in the existence of this weapon.' }) -keywordHandler:addKeyword({ 'wall', 'carving' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, I saw some demon carvings in the dungeons as I hid there after a little joke on old Stutch.' }) -keywordHandler:addKeyword({ 'demon', 'carving' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, they showed demons, seven actually, dancing around a sword! In something like a flaming pit.' }) -keywordHandler:addKeyword({ 'flaming', 'pit' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, don\'t ask me! Usually mages and mystics know more about such stuff.' }) - -local jobKeyword = keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the royal jes ... uhm ... the royal tax-collector! Do you want to pay your taxes?' }) -jobKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Come back, when you have enough money.', reset = true }, function(player) return player:getMoney() < 50 end) -jobKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Thank you very much. I will have a drink or two on your health!', reset = true }, nil, function(player) if player:removeMoneyBank(50) then end end) -jobKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, perhaps later.', reset = true }) - -local magicKeyword = keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = 'I actually know some spells! Do you want to learn how to \'lessen your load\' for 200 gold?' }) -magicKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Come back, when you have enough money.', reset = true }, function(player) return player:getMoney() < 200 end) -magicKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are, I already lessened your load.', reset = true }, nil, function(player) if player:removeMoneyBank(200) then end end) -magicKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'You don\'t know what offer you are missing!', reset = true }) -keywordHandler:addAliasKeyword({ 'spell' }) - -local weaponKeyword = keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want to buy a \'mace of the fury\' for 250 gold?' }) -weaponKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Come back, when you have enough money.', reset = true }, function(player) return player:getMoney() < 250 end) -weaponKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'And here it is, it suits you well!', reset = true }, nil, function(player) if player:removeMoneyBank(250) then player:addItem(3473, 1) end end) -weaponKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'You dont know what offer you have passed!', reset = true }) - -keywordHandler:addKeyword({ 'kiss' }, StdModule.say, { npcHandler = npcHandler, text = 'Uh, go away!', ungreet = true }, function(player) return player:getSex() == PLAYERSEX_MALE end) - -local kissKeyword = keywordHandler:addKeyword({ 'kiss' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want to kiss me?' }) -kissKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Uh, oh! ... I am seeing stars!', reset = true }, nil, function(player) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) end) -kissKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Pah, I didn\'t want to kiss you anyway!', reset = true }) - -keywordHandler:addKeyword({ 'lady' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, women don\'t behave necessarily in a ladylike way just because they dress like one!' }, function(player) return player:getSex() == PLAYERSEX_MALE end) - -local ladyKeyword = keywordHandler:addKeyword({ 'lady' }, StdModule.say, { npcHandler = npcHandler, text = 'Has any man said to you that you\'re not only beautiful but also intelligent?' }) -ladyKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'This is a world of fantasy and full of surprises!', reset = true }) -ladyKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, think about it!', reset = true }) - -npcHandler:setMessage(MESSAGE_FAREWELL, 'Remember: A joke a day keeps the ghouls away!') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Hey! Fools have feelings too.') +keywordHandler:addKeyword({ "sorcerer" }, StdModule.say, { npcHandler = npcHandler, text = "I wanted to become a sorcerer, too, but I was overqualified!" }, function(player) + return player:isSorcerer() +end) +keywordHandler:addKeyword({ "druid" }, StdModule.say, { npcHandler = npcHandler, text = "I wanted to become a druid, too, but I was overqualified!" }, function(player) + return player:isDruid() +end) +keywordHandler:addKeyword({ "paladin" }, StdModule.say, { npcHandler = npcHandler, text = "I wanted to become a paladin, too, but I was overqualified!" }, function(player) + return player:isPaladin() +end) +keywordHandler:addKeyword({ "knight" }, StdModule.say, { npcHandler = npcHandler, text = "I wanted to become a knight, too, but I was overqualified!" }, function(player) + return player:isKnight() +end) +keywordHandler:addKeyword({ "sorcerer" }, StdModule.say, { npcHandler = npcHandler, text = "The good thing about them is that they can't be at two places at the same time." }) +keywordHandler:addKeyword({ "druid" }, StdModule.say, { npcHandler = npcHandler, text = "I wonder if they love my water squirt flowers as much as all other plants." }) +keywordHandler:addKeyword({ "paladin" }, StdModule.say, { npcHandler = npcHandler, text = "They are the king's favourites, because they know how to 'bow'." }) +keywordHandler:addKeyword({ "knight" }, StdModule.say, { npcHandler = npcHandler, text = "Did you notice that old knights have their scars just on their backs?" }) + +keywordHandler:addKeyword({ "here" }, StdModule.say, { npcHandler = npcHandler, text = "A fitting place for a {jester}. I guess there are worse {jobs} around." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "Bozo: Nah, no jests about His Royal Highness." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "I rarely leave the castle. It's really stressful to be as popular as me." }) +keywordHandler:addKeyword({ "castle" }, StdModule.say, { npcHandler = npcHandler, text = "This castle is my home. A fitting place for a jester and all other fools. Feel welcome." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a jester, not a doctor!" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Bozo. But it's more than a name, it's a lifestyle for me!" }) +keywordHandler:addKeyword({ "bozo" }, StdModule.say, { npcHandler = npcHandler, text = "That's me: Bozo, the jester!" }) +keywordHandler:addKeyword({ "guild" }, StdModule.say, { npcHandler = npcHandler, text = "Ever since the first guild was created, there is a great demand of jesters and fools to join them." }) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, text = "Sell? Hmm, I know a little about magic and by chance I can sell you a truly unusual {weapon}." }) +keywordHandler:addKeyword({ "joke" }, StdModule.say, { npcHandler = npcHandler, text = "I know some 'monstrous' jokes!" }) +keywordHandler:addKeyword({ "news" }, StdModule.say, { npcHandler = npcHandler, text = "I know the newest jokes in tibia." }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "Thank you, I'm fine, the gods are with me." }) +keywordHandler:addKeyword({ "necromant", "nectar" }, StdModule.say, { npcHandler = npcHandler, text = "Pheeew! That sounds disgusting! Are you a cook at Frodo's?" }) +keywordHandler:addKeyword({ "necromant" }, StdModule.say, { npcHandler = npcHandler, text = "Don't feed the necromants." }) +keywordHandler:addKeyword({ "dog" }, StdModule.say, { npcHandler = npcHandler, text = "Are we talking about Noodles?" }) +keywordHandler:addKeyword({ "poodle" }, StdModule.say, { npcHandler = npcHandler, text = "Are we talking about Noodles?" }) +keywordHandler:addKeyword({ "noodles" }, StdModule.say, { npcHandler = npcHandler, text = "Hey, the little one is almost as funny as me!" }) +keywordHandler:addKeyword({ "muriel" }, StdModule.say, { npcHandler = npcHandler, text = "Better don't mess with sorcerers!" }) +keywordHandler:addKeyword({ "elane" }, StdModule.say, { npcHandler = npcHandler, text = "She's pretty but too serious for my taste." }) +keywordHandler:addKeyword({ "marvik" }, StdModule.say, { npcHandler = npcHandler, text = "Humourless old guy! Once, he turned me into a frog for painting his distasteful cave in pink." }) +keywordHandler:addKeyword({ "gregor" }, StdModule.say, { npcHandler = npcHandler, text = "A man of steel with a stomach of wax. Never offer him a beer!" }) +keywordHandler:addKeyword({ "quentin" }, StdModule.say, { npcHandler = npcHandler, text = "He's my baby brother. If you tell him I sent you, he will grant you an extra spell or two." }) +keywordHandler:addKeyword({ "gorn" }, StdModule.say, { npcHandler = npcHandler, text = "He sells spell scrolls each day at midnight, but you have to address him that very second." }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "I better make no jokes about THIS matter." }) +keywordHandler:addKeyword({ "sam" }, StdModule.say, { npcHandler = npcHandler, text = "Did you know that he sells a 'power axe of doom' now? Run and buy it, he only has got three in store." }) +keywordHandler:addKeyword({ "benjamin" }, StdModule.say, { npcHandler = npcHandler, text = "He would make a fine jester, too." }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "I know a lot of monster jokes. Just tell me a monster's name, come on." }) +keywordHandler:addKeyword({ "demon" }, StdModule.say, { npcHandler = npcHandler, text = "Why are the experienced heroes quicker than others? ... The demons love fast food!" }) +keywordHandler:addKeyword({ "ghoul" }, StdModule.say, { npcHandler = npcHandler, text = "Where do ghouls buy their robes? ... In a boooohtique!" }) +keywordHandler:addKeyword({ "dragon" }, StdModule.say, { npcHandler = npcHandler, text = "Why do dragons breathe fire? ... They ate too many sorcerers in chilli sauce!" }) +keywordHandler:addKeyword({ "orc" }, StdModule.say, { npcHandler = npcHandler, text = "Why do orcs have green skin? ... They ate at Frodo's!" }) +keywordHandler:addKeyword({ "cyclops" }, StdModule.say, { npcHandler = npcHandler, text = "How many eyes does a cyclops have? ... One for each IQ point they have!" }) +keywordHandler:addKeyword({ "oswald" }, StdModule.say, { npcHandler = npcHandler, text = "If you believe half the rumours he's spreading, you will get in a lot of trouble." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "If you are a bad jester, you get a chance to visit them now and then." }) +keywordHandler:addKeyword({ "mino" }, StdModule.say, { npcHandler = npcHandler, text = "What do all little minotaurs want to become when they are grown-ups? ... Cowboys, of course!" }) +keywordHandler:addKeyword({ "troll" }, StdModule.say, { npcHandler = npcHandler, text = "Why do trolls live underground? ... Because there are so many pks on the surface!" }) +keywordHandler:addKeyword({ "bonelord" }, StdModule.say, { npcHandler = npcHandler, text = "Why are bonelords so ugly? ... Because their mom and dad were bonelords, too!" }) +keywordHandler:addKeyword({ "rat" }, StdModule.say, { npcHandler = npcHandler, text = "Why does the rat have a wooden leg? ... Because it is a former pirate!" }) +keywordHandler:addKeyword({ "spider" }, StdModule.say, { npcHandler = npcHandler, text = "Why did the spider cross the road? ... Because it ... oh you already know this one!?" }) +keywordHandler:addKeyword({ "hugo" }, StdModule.say, { npcHandler = npcHandler, text = "I had a cousin named like that." }) +keywordHandler:addKeyword({ "cousin" }, StdModule.say, { npcHandler = npcHandler, text = "He died some years ago." }) +keywordHandler:addKeyword({ "durin" }, StdModule.say, { npcHandler = npcHandler, text = "Isn't he the author of the book 'Fun with Demons'?" }) +keywordHandler:addKeyword({ "stephan" }, StdModule.say, { npcHandler = npcHandler, text = "He is kind of a father figure to me. Of course he denies all kinship to me." }) +keywordHandler:addKeyword({ "steve" }, StdModule.say, { npcHandler = npcHandler, text = "He's a smart one. I heared he hid in a foreign country as the first bugs showed up." }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "I am not foolish enough to believe in the existence of this weapon." }) +keywordHandler:addKeyword({ "wall", "carving" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, I saw some demon carvings in the dungeons as I hid there after a little joke on old Stutch." }) +keywordHandler:addKeyword({ "demon", "carving" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, they showed demons, seven actually, dancing around a sword! In something like a flaming pit." }) +keywordHandler:addKeyword({ "flaming", "pit" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, don't ask me! Usually mages and mystics know more about such stuff." }) + +local jobKeyword = keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the royal jes ... uhm ... the royal tax-collector! Do you want to pay your taxes?" }) +jobKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Come back, when you have enough money.", reset = true }, function(player) + return player:getMoney() < 50 +end) +jobKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Thank you very much. I will have a drink or two on your health!", reset = true }, nil, function(player) + if player:removeMoneyBank(50) then + end +end) +jobKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Well, perhaps later.", reset = true }) + +local magicKeyword = keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "I actually know some spells! Do you want to learn how to 'lessen your load' for 200 gold?" }) +magicKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Come back, when you have enough money.", reset = true }, function(player) + return player:getMoney() < 200 +end) +magicKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are, I already lessened your load.", reset = true }, nil, function(player) + if player:removeMoneyBank(200) then + end +end) +magicKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "You don't know what offer you are missing!", reset = true }) +keywordHandler:addAliasKeyword({ "spell" }) + +local weaponKeyword = keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "Do you want to buy a 'mace of the fury' for 250 gold?" }) +weaponKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Come back, when you have enough money.", reset = true }, function(player) + return player:getMoney() < 250 +end) +weaponKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "And here it is, it suits you well!", reset = true }, nil, function(player) + if player:removeMoneyBank(250) then + player:addItem(3473, 1) + end +end) +weaponKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "You dont know what offer you have passed!", reset = true }) + +keywordHandler:addKeyword({ "kiss" }, StdModule.say, { npcHandler = npcHandler, text = "Uh, go away!", ungreet = true }, function(player) + return player:getSex() == PLAYERSEX_MALE +end) + +local kissKeyword = keywordHandler:addKeyword({ "kiss" }, StdModule.say, { npcHandler = npcHandler, text = "Do you want to kiss me?" }) +kissKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Uh, oh! ... I am seeing stars!", reset = true }, nil, function(player) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +kissKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Pah, I didn't want to kiss you anyway!", reset = true }) + +keywordHandler:addKeyword({ "lady" }, StdModule.say, { npcHandler = npcHandler, text = "Well, women don't behave necessarily in a ladylike way just because they dress like one!" }, function(player) + return player:getSex() == PLAYERSEX_MALE +end) + +local ladyKeyword = keywordHandler:addKeyword({ "lady" }, StdModule.say, { npcHandler = npcHandler, text = "Has any man said to you that you're not only beautiful but also intelligent?" }) +ladyKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "This is a world of fantasy and full of surprises!", reset = true }) +ladyKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Well, think about it!", reset = true }) + +npcHandler:setMessage(MESSAGE_FAREWELL, "Remember: A joke a day keeps the ghouls away!") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Hey! Fools have feelings too.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/braden.lua b/data-otservbr-global/npc/braden.lua index fadf9656444..d3100b6ad6c 100644 --- a/data-otservbr-global/npc/braden.lua +++ b/data-otservbr-global/npc/braden.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 20, lookLegs = 116, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/bradford.lua b/data-otservbr-global/npc/bradford.lua index 14ed570c11d..09d90916ae3 100644 --- a/data-otservbr-global/npc/bradford.lua +++ b/data-otservbr-global/npc/bradford.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 93, lookLegs = 82, lookFeet = 116, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/brasith.lua b/data-otservbr-global/npc/brasith.lua index 59fe79bfa7e..68f9b69e935 100644 --- a/data-otservbr-global/npc/brasith.lua +++ b/data-otservbr-global/npc/brasith.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 41, lookBody = 94, lookLegs = 97, - lookFeet = 76 + lookFeet = 76, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,16 +45,16 @@ npcType.onThink = function(npc, interval) npcHandler:onThink(npc, interval) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "You may buy all the things we grow or gather at this place." }) -keywordHandler:addKeyword({ 'crunor' }, StdModule.say, { npcHandler = npcHandler, text = "We abandoned the gods a long time ago. A short time after they abandoned us." }) -keywordHandler:addKeyword({ 'teshial' }, StdModule.say, { npcHandler = npcHandler, text = "They are lost, and if they still exist they are alone in the cold and the darkness." }) -keywordHandler:addKeyword({ 'kuridai' }, StdModule.say, { npcHandler = npcHandler, text = "The Kuridai left the true path and can't see their error. Their way of living may have been suitable in the past, but if they don't come back to us, their path will lead into darkness." }) -keywordHandler:addKeyword({ 'deraisim' }, StdModule.say, { npcHandler = npcHandler, text = "We have still much to learn but we are on the correct path at least." }) -keywordHandler:addKeyword({ 'cenath' }, StdModule.say, { npcHandler = npcHandler, text = "The Cenath forgot as many as they learned. I doubt they find the wisdom they are looking for without the things they neglected in their pursuit of knowledge." }) -keywordHandler:addKeyword({ 'troll' }, StdModule.say, { npcHandler = npcHandler, text = "I don't claim to understand this creatures but sometimes they are more close to the roots than we are." }) -keywordHandler:addKeyword({ 'human' }, StdModule.say, { npcHandler = npcHandler, text = "They are so many, so planless, so divided. They choose a path I do not want for my own race." }) -keywordHandler:addKeyword({ 'plants' }, StdModule.say, { npcHandler = npcHandler, text = "Life takes many forms. Plants are a very basic form of life. Its simplicity makes them close to the core of nature." }) -keywordHandler:addKeyword({ 'tree' }, StdModule.say, { npcHandler = npcHandler, text = "Life takes many forms. Plants are a very basic form of life. Its simplicity makes them close to the core of nature." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "You may buy all the things we grow or gather at this place." }) +keywordHandler:addKeyword({ "crunor" }, StdModule.say, { npcHandler = npcHandler, text = "We abandoned the gods a long time ago. A short time after they abandoned us." }) +keywordHandler:addKeyword({ "teshial" }, StdModule.say, { npcHandler = npcHandler, text = "They are lost, and if they still exist they are alone in the cold and the darkness." }) +keywordHandler:addKeyword({ "kuridai" }, StdModule.say, { npcHandler = npcHandler, text = "The Kuridai left the true path and can't see their error. Their way of living may have been suitable in the past, but if they don't come back to us, their path will lead into darkness." }) +keywordHandler:addKeyword({ "deraisim" }, StdModule.say, { npcHandler = npcHandler, text = "We have still much to learn but we are on the correct path at least." }) +keywordHandler:addKeyword({ "cenath" }, StdModule.say, { npcHandler = npcHandler, text = "The Cenath forgot as many as they learned. I doubt they find the wisdom they are looking for without the things they neglected in their pursuit of knowledge." }) +keywordHandler:addKeyword({ "troll" }, StdModule.say, { npcHandler = npcHandler, text = "I don't claim to understand this creatures but sometimes they are more close to the roots than we are." }) +keywordHandler:addKeyword({ "human" }, StdModule.say, { npcHandler = npcHandler, text = "They are so many, so planless, so divided. They choose a path I do not want for my own race." }) +keywordHandler:addKeyword({ "plants" }, StdModule.say, { npcHandler = npcHandler, text = "Life takes many forms. Plants are a very basic form of life. Its simplicity makes them close to the core of nature." }) +keywordHandler:addKeyword({ "tree" }, StdModule.say, { npcHandler = npcHandler, text = "Life takes many forms. Plants are a very basic form of life. Its simplicity makes them close to the core of nature." }) npcHandler:setMessage(MESSAGE_GREET, "Ashari, |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_FAREWELL, "Asha Thrazi.") @@ -76,7 +76,7 @@ npcConfig.shop = { { itemName = "melon", clientId = 3593, buy = 8 }, { itemName = "potato", clientId = 8010, buy = 4 }, { itemName = "pumpkin", clientId = 3594, buy = 10 }, - { itemName = "strawberry", clientId = 3591, buy = 1 } + { itemName = "strawberry", clientId = 3591, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -87,7 +87,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/brengus.lua b/data-otservbr-global/npc/brengus.lua index cbc5b1ec76d..654d46d2aed 100644 --- a/data-otservbr-global/npc/brengus.lua +++ b/data-otservbr-global/npc/brengus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 76, lookLegs = 76, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -161,7 +161,7 @@ npcConfig.shop = { { itemName = "viking shield", clientId = 3431, buy = 260 }, { itemName = "vortex bolt", clientId = 14252, buy = 6 }, { itemName = "war hammer", clientId = 3279, buy = 10000 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -172,7 +172,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/brewster.lua b/data-otservbr-global/npc/brewster.lua index d435f50642c..a59118bc953 100644 --- a/data-otservbr-global/npc/brewster.lua +++ b/data-otservbr-global/npc/brewster.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 131, lookLegs = 132, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,102 +51,125 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Brewster) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Brewster) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Brewster, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Wooden Stake -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'I think you have forgotten to bring your stake, pilgrim.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 9 and player:getItemCount(5941) == 0 end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "I think you have forgotten to bring your stake, pilgrim." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 9 and player:getItemCount(5941) == 0 +end) -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I have been informed and haven\'t yet drunk enough to forget, so you can count yourself lucky. Are you prepared to receive my line of the prayer?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 9 end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive my prayer: \'Your hand shall be guided - your feet shall walk in harmony\'. Now, take your stake to Tyrias in Liberty Bay for the next line of the prayer. I shall let him know what he is to do.', reset = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 10) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - end -) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'ll wait for you.', reset = true }) +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I have been informed and haven't yet drunk enough to forget, so you can count yourself lucky. Are you prepared to receive my line of the prayer?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 9 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive my prayer: 'Your hand shall be guided - your feet shall walk in harmony'. Now, take your stake to Tyrias in Liberty Bay for the next line of the prayer. I shall let him know what he is to do.", reset = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 10) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "I'll wait for you.", reset = true }) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You should visit Tyrias in Liberty Bay now.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 10 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You have already received my line of the prayer. Don\'t make me do more work than necessary!' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 10 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'A blessed stake? That\'s a strange request. Maybe Quentin knows more, he is one of the oldest monks after all.' }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You should visit Tyrias in Liberty Bay now." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 10 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You have already received my line of the prayer. Don't make me do more work than necessary!" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 10 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "A blessed stake? That's a strange request. Maybe Quentin knows more, he is one of the oldest monks after all." }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/briasol.lua b/data-otservbr-global/npc/briasol.lua index 3d3bc7607b5..1dd3a0060bf 100644 --- a/data-otservbr-global/npc/briasol.lua +++ b/data-otservbr-global/npc/briasol.lua @@ -15,17 +15,17 @@ npcConfig.outfit = { lookHead = 3, lookBody = 86, lookLegs = 87, - lookFeet = 76 + lookFeet = 76, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Come and take a look at the finest gems in the lands of Tibia.' } + { text = "Come and take a look at the finest gems in the lands of Tibia." }, } local keywordHandler = KeywordHandler:new() @@ -68,7 +68,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Rashid sent you, I suppose. Before I sell you that vase, one word of advice. ...", "Make room in your backpack so that I can place the vase carefully inside it. If it falls to the floor, it will most likely shatter or break if you try to pick it up again. ...", - "This vase it not meant to be touched by human hands, so just keep your hands off it. Are you ready to buy that vase for 1000 gold?" + "This vase it not meant to be touched by human hands, so just keep your hands off it. Are you ready to buy that vase for 1000 gold?", }, npc, creature) npcHandler:setTopic(playerId, 1) end @@ -149,7 +149,7 @@ npcConfig.shop = { { itemName = "violet crystal shard", clientId = 16120, sell = 1500 }, { itemName = "wedding ring", clientId = 3004, buy = 990 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -160,7 +160,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/bright_percht_sleigh.lua b/data-otservbr-global/npc/bright_percht_sleigh.lua index 21993c8aaeb..2cffbf6f53f 100644 --- a/data-otservbr-global/npc/bright_percht_sleigh.lua +++ b/data-otservbr-global/npc/bright_percht_sleigh.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 1164 + lookType = 1164, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/brodrosch.lua b/data-otservbr-global/npc/brodrosch.lua index 225094925d8..518d90efa52 100644 --- a/data-otservbr-global/npc/brodrosch.lua +++ b/data-otservbr-global/npc/brodrosch.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 66 + lookType = 66, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passage to Cormaya! Unforgettable steamboat ride!' } + { text = "Passage to Cormaya! Unforgettable steamboat ride!" }, } local keywordHandler = KeywordHandler:new() @@ -60,29 +60,29 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'ticket') then + if MsgContains(message, "ticket") then if Player(creature):getStorageValue(Storage.WagonTicket) >= os.time() then - npcHandler:say('Your weekly ticket is still valid. Would be a waste of money to purchase a second one', npc, creature) + npcHandler:say("Your weekly ticket is still valid. Would be a waste of money to purchase a second one", npc, creature) return true end - npcHandler:say('Do you want to purchase a weekly ticket for the ore wagons? With it you can travel freely and swiftly through Kazordoon for one week. 250 gold only. Deal?', npc, creature) + npcHandler:say("Do you want to purchase a weekly ticket for the ore wagons? With it you can travel freely and swiftly through Kazordoon for one week. 250 gold only. Deal?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) > 0 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) > 0 then local player = Player(creature) if npcHandler:getTopic(playerId) == 1 then if not player:removeMoneyBank(250) then - npcHandler:say('You don\'t have enough money.', npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:setStorageValue(Storage.WagonTicket, os.time() + 7 * 24 * 60 * 60) - npcHandler:say('Here is your stamp. It can\'t be transferred to another person and will last one week from now. You\'ll get notified upon using an ore wagon when it isn\'t valid anymore.', npc, creature) + npcHandler:say("Here is your stamp. It can't be transferred to another person and will last one week from now. You'll get notified upon using an ore wagon when it isn't valid anymore.", npc, creature) end npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) > 0 then - npcHandler:say('No then.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) > 0 then + npcHandler:say("No then.", npc, creature) npcHandler:setTopic(playerId, 0) end return true @@ -93,49 +93,47 @@ local function addTravelKeyword(keyword, text, cost, discount, destination, cond if condition then keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, - text = { 'Well, you might be just the hero they need there. To tell you the truth, some our most reliable ore mines have started to run low. ...', - 'This is why we developed new steamship technologies to be able to further explore and cartograph the great subterraneous rivers. Our brothers have established a base on a continent far, far away. ...', - 'We call that the far, far away base. But since it will hopefully become a flourishing mine one day, most of us started to call it {Farmine}. The dwarfs there could really use some help right now.' - } + text = { + "Well, you might be just the hero they need there. To tell you the truth, some our most reliable ore mines have started to run low. ...", + "This is why we developed new steamship technologies to be able to further explore and cartograph the great subterraneous rivers. Our brothers have established a base on a continent far, far away. ...", + "We call that the far, far away base. But since it will hopefully become a flourishing mine one day, most of us started to call it {Farmine}. The dwarfs there could really use some help right now.", + }, }, condition, action) end local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = { text[1] }, cost = cost, discount = discount }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = text[2], cost = cost, discount = discount, destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = text[3], reset = true }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = text[2], cost = cost, discount = discount, destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = text[3], reset = true }) end -addTravelKeyword('farmine', { 'Do you seek a ride to Farmine for |TRAVELCOST|?', 'Full steam ahead!', 'We would like to serve you some time.' }, 210, { 'postman', 'new frontier' }, - function(player) - local destination = Position(33025, 31553, 14) - if player:getStorageValue(TheNewFrontier.Mission05[1]) == 2 then --if The New Frontier Quest 'Mission 05: Getting Things Busy' complete then Stage 3 - destination.z = 10 - elseif player:getStorageValue(TheNewFrontier.Mission03) >= 2 then --if The New Frontier Quest 'Mission 03: Strangers in the Night' complete then Stage 2 - destination.z = 12 - end - return destination - end, function(player) return player:getStorageValue(TheNewFrontier.FarmineFirstTravel) < 1 end, - function(player) - if player:getStorageValue(TheNewFrontier.FarmineFirstTravel) < 1 then - player:setStorageValue(TheNewFrontier.FarmineFirstTravel, 1) - end +addTravelKeyword("farmine", { "Do you seek a ride to Farmine for |TRAVELCOST|?", "Full steam ahead!", "We would like to serve you some time." }, 210, { "postman", "new frontier" }, function(player) + local destination = Position(33025, 31553, 14) + if player:getStorageValue(TheNewFrontier.Mission05[1]) == 2 then --if The New Frontier Quest 'Mission 05: Getting Things Busy' complete then Stage 3 + destination.z = 10 + elseif player:getStorageValue(TheNewFrontier.Mission03) >= 2 then --if The New Frontier Quest 'Mission 03: Strangers in the Night' complete then Stage 2 + destination.z = 12 end -) + return destination +end, function(player) + return player:getStorageValue(TheNewFrontier.FarmineFirstTravel) < 1 +end, function(player) + if player:getStorageValue(TheNewFrontier.FarmineFirstTravel) < 1 then + player:setStorageValue(TheNewFrontier.FarmineFirstTravel, 1) + end +end) -addTravelKeyword('cormaya', { 'Do you seek a ride to Cormaya for |TRAVELCOST|?', 'Full steam ahead!', 'We would like to serve you some time.' }, 160, { 'postman' }, Position(33311, 31989, 15), - function(player) - if player:getStorageValue(Storage.Postman.Mission01) == 4 then - player:setStorageValue(Storage.Postman.Mission01, 5) - end +addTravelKeyword("cormaya", { "Do you seek a ride to Cormaya for |TRAVELCOST|?", "Full steam ahead!", "We would like to serve you some time." }, 160, { "postman" }, Position(33311, 31989, 15), function(player) + if player:getStorageValue(Storage.Postman.Mission01) == 4 then + player:setStorageValue(Storage.Postman.Mission01, 5) end -) +end) -addTravelKeyword('gnomprona', { 'Would you like to travel to Gnomprona for |TRAVELCOST|?', 'Full steam ahead!', 'Then not.' }, 200, 'postman', Position(33516, 32856, 14)) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want me take you to {Cormaya}, {Farmine} or to {Gnomprona}?' }) +addTravelKeyword("gnomprona", { "Would you like to travel to Gnomprona for |TRAVELCOST|?", "Full steam ahead!", "Then not." }, 200, "postman", Position(33516, 32856, 14)) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Do you want me take you to {Cormaya}, {Farmine} or to {Gnomprona}?" }) -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, |PLAYERNAME|! May earth protect you on the rocky grounds. If you need a {passage}, I can help you.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +npcHandler:setMessage(MESSAGE_GREET, "Welcome, |PLAYERNAME|! May earth protect you on the rocky grounds. If you need a {passage}, I can help you.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/broken_servant_sentry.lua b/data-otservbr-global/npc/broken_servant_sentry.lua index 34b33f5b335..d0d426d951e 100644 --- a/data-otservbr-global/npc/broken_servant_sentry.lua +++ b/data-otservbr-global/npc/broken_servant_sentry.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,15 +54,15 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (MsgContains(message, "slime") or MsgContains(message, "mould") or MsgContains(message, "fungus") or MsgContains(message, "sample")) then - if (getPlayerStorageValue(creature, Storage.ElementalistQuest1) < 1) then + if MsgContains(message, "slime") or MsgContains(message, "mould") or MsgContains(message, "fungus") or MsgContains(message, "sample") then + if getPlayerStorageValue(creature, Storage.ElementalistQuest1) < 1 then npcHandler:say("If. You. Bring. Slime. Fungus. Samples. Fro-Fro-Fro-Frrrr*chhhhchrk*From. Other. Tower. You. Must. Be. The. Master. Are. You. There. Master?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (getPlayerStorageValue(creature, Storage.ElementalistQuest1) == 1) then + elseif getPlayerStorageValue(creature, Storage.ElementalistQuest1) == 1 then npcHandler:say("If. You. Bring. Slime. Fungus. Samples. Fro-Fro-Fro-Frrrr*chhhhchrk*From. Other. Tower. You. Must. Be. The. Master. Are. You. There. Master?", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif (MsgContains(message, "cap") or MsgContains(message, "mage")) then + elseif MsgContains(message, "cap") or MsgContains(message, "mage") then if (getPlayerItemCount(creature, 12599) >= 1 and getPlayerStorageValue(creature, Storage.ElementalistQuest1) == 2) and getPlayerStorageValue(creature, Storage.ElementalistQuest2) < 1 then npcHandler:say("Yo-Yo-Your*chhhrk*. Cap. Is. Slimed. I. Can. Clean. It. *chhhhrrrkchrk* ...", npc, creature) npcHandler:say("Here. You. Are. *chhhrrrrkchrk*", npc, creature) @@ -71,38 +71,36 @@ local function creatureSayCallback(npc, creature, type, message) doPlayerAddOutfit(creature, 432, 1) doPlayerAddOutfit(creature, 433, 1) npcHandler:setTopic(playerId, 0) - elseif (getPlayerStorageValue(creature, Storage.ElementalistQuest2) == 1) then + elseif getPlayerStorageValue(creature, Storage.ElementalistQuest2) == 1 then npcHandler:say("You already have this outfit!", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "staff") or MsgContains(message, "spike")) then + elseif MsgContains(message, "staff") or MsgContains(message, "spike") then if (getPlayerItemCount(creature, 12803) >= 1 and getPlayerStorageValue(creature, Storage.ElementalistQuest1) == 2) and getPlayerStorageValue(creature, Storage.ElementalistQuest3) < 1 then - npcHandler:say({ "Yo-Yo-Your*chhhrk*. Cap. Is. Slimed. I. Can. Clean. It. *chhhhrrrkchrk* ...", - "Here. You. Are. *chhhrrrrkchrk*" }, npc, creature, 4000) + npcHandler:say({ "Yo-Yo-Your*chhhrk*. Cap. Is. Slimed. I. Can. Clean. It. *chhhhrrrkchrk* ...", "Here. You. Are. *chhhrrrrkchrk*" }, npc, creature, 4000) doPlayerRemoveItem(creature, 12803, 1) setPlayerStorageValue(creature, Storage.ElementalistQuest3, 1) doPlayerAddOutfit(creature, 432, 2) doPlayerAddOutfit(creature, 433, 2) npcHandler:setTopic(playerId, 0) - elseif (getPlayerStorageValue(creature, Storage.ElementalistQuest3) == 1) then + elseif getPlayerStorageValue(creature, Storage.ElementalistQuest3) == 1 then npcHandler:say("You already have this outfit!", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say("I. Greet. You. Ma-Ma-Ma-ster! Did. You. Bring. Mo-Mo-Mo-M*chhhhrrrk*ore. Samples. For. Me. To-To-To. Analyse-lyse-lyse?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif (npcHandler:getTopic(playerId) == 2) then + elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say("Thank. I. Will. Start. Analysing. No-No-No-No*chhrrrk*Now.", npc, creature) setPlayerStorageValue(creature, Storage.ElementalistQuest1, 1) setPlayerStorageValue(creature, Storage.ElementalistOutfitStart, 1) --this for default start of Outfit and Addon Quests npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 3) then + elseif npcHandler:getTopic(playerId) == 3 then npcHandler:say("I. Greet. You. Ma-Ma-Ma-ster! Did. You. Bring. Mo-Mo-Mo-M*chhhhrrrk*ore. Samples. For. Me. To-To-To. Analyse-lyse-lyse?", npc, creature) npcHandler:setTopic(playerId, 4) elseif (npcHandler:getTopic(playerId) == 4) and getPlayerItemCount(creature, 12601) >= 20 then - npcHandler:say({ "Please. Wait. I. Can. Not. Han-Han-Han*chhhhhrrrchrk*Handle. *chhhhrchrk* This. Is. Enough. Material. *chrrrchhrk* ...", - "I. Have-ve-ve-veee*chrrrck*. Also. Cleaned. Your. Clothes. Master. It. Is. No-No-No*chhrrrrk*Now. Free. Of. Sample. Stains." }, npc, creature, 4000) + npcHandler:say({ "Please. Wait. I. Can. Not. Han-Han-Han*chhhhhrrrchrk*Handle. *chhhhrchrk* This. Is. Enough. Material. *chrrrchhrk* ...", "I. Have-ve-ve-veee*chrrrck*. Also. Cleaned. Your. Clothes. Master. It. Is. No-No-No*chhrrrrk*Now. Free. Of. Sample. Stains." }, npc, creature, 4000) doPlayerRemoveItem(creature, 12601, 20) setPlayerStorageValue(creature, Storage.ElementalistQuest1, 2) doPlayerAddOutfit(creature, 432, 0) diff --git a/data-otservbr-global/npc/brom.lua b/data-otservbr-global/npc/brom.lua index 5eab191dc07..05be63fbd9a 100644 --- a/data-otservbr-global/npc/brom.lua +++ b/data-otservbr-global/npc/brom.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 69 + lookType = 69, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/bron.lua b/data-otservbr-global/npc/bron.lua index 320706311ef..014be84e6b6 100644 --- a/data-otservbr-global/npc/bron.lua +++ b/data-otservbr-global/npc/bron.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 132, lookFeet = 86, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -60,7 +60,7 @@ local function greetCallback(npc, creature) return true end -keywordHandler:addKeyword({ 'gelagos' }, StdModule.say, { npcHandler = npcHandler, text = "This... person... makes me want to... say something bad... must... control myself. " }) +keywordHandler:addKeyword({ "gelagos" }, StdModule.say, { npcHandler = npcHandler, text = "This... person... makes me want to... say something bad... must... control myself. " }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -74,24 +74,24 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.OutfitQuest.BarbarianAddon) < 1 then npcHandler:say({ "Convincing Ajax that it is not always necessary to use brute force... this would be such an achievement. Definitely a hard task though. ...", - "Listen, I simply have to ask, maybe a stranger can influence him better than I can. Would you help me with my brother?" + "Listen, I simply have to ask, maybe a stranger can influence him better than I can. Would you help me with my brother?", }, npc, creature) npcHandler:setTopic(playerId, 1) end - elseif (MsgContains(message, "fist")) then + elseif MsgContains(message, "fist") then if player:getStorageValue(Storage.OutfitQuest.BarbarianAddon) == 3 then npcHandler:say("Oh! He really said that? I am so proud of you, |PLAYERNAME|. These are really good news. Everything would be great... if only there wasn't this {person} near my house.", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif (MsgContains(message, "person")) then - if (npcHandler:getTopic(playerId) == 3) then + elseif MsgContains(message, "person") then + if npcHandler:getTopic(playerId) == 3 then npcHandler:say({ "This... person... makes me want to... say something bad... must... control myself. I really don't know what to do anymore. ...", - "I wonder if Ajax has an idea. Could you ask him about Gelagos?" + "I wonder if Ajax has an idea. Could you ask him about Gelagos?", }, npc, creature) npcHandler:setTopic(playerId, 4) end - elseif (MsgContains(message, "fighting spirit")) then + elseif MsgContains(message, "fighting spirit") then if player:getStorageValue(Storage.OutfitQuest.BarbarianAddon) == 5 then if player:removeItem(5884, 1) then player:setStorageValue(Storage.OutfitQuest.BarbarianAddon, 6) @@ -99,61 +99,61 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 0) end end - elseif (MsgContains(message, "cloth")) then + elseif MsgContains(message, "cloth") then if player:getStorageValue(Storage.OutfitQuest.BarbarianAddon) == 7 then npcHandler:say("Have you really managed to fulfil the task and brought me 25 pieces of red cloth and 25 pieces of green cloth?", npc, creature) npcHandler:setTopic(playerId, 8) end - elseif (MsgContains(message, "silk")) then + elseif MsgContains(message, "silk") then if player:getStorageValue(Storage.OutfitQuest.BarbarianAddon) == 8 then npcHandler:say("Oh, did you bring 5 rolls of spider silk yarn for me?", npc, creature) npcHandler:setTopic(playerId, 9) end - elseif (MsgContains(message, "sweat")) then + elseif MsgContains(message, "sweat") then if player:getStorageValue(Storage.OutfitQuest.BarbarianAddon) == 9 then npcHandler:say("Were you able to get hold of a flask with pure warrior's sweat?", npc, creature) npcHandler:setTopic(playerId, 10) end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Really! That is such an incredibly nice offer! I already have a plan. You have to teach him that sometimes words are stronger than fists. ...", "Maybe you can provoke him with something to get angry, like saying... 'MINE!' or something. But beware, I'm sure that he will try to hit you. ...", "Don't do this if you feel weak or ill. He will probably want to make you leave by using violence, but just stay strong and refuse to give up. ...", "If he should ask what else is necessary to make you leave, tell him to 'say please'. Afterwards, do leave and return to him one hour later. ...", "This way he might learn that violence doesn't always help, but that a friendly word might just do the trick. ...", - "Have you understood everything I told you and are really willing to take this risk?" + "Have you understood everything I told you and are really willing to take this risk?", }, npc, creature) npcHandler:setTopic(playerId, 2) - elseif (npcHandler:getTopic(playerId) == 2) then + elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say("You are indeed not only well educated, but also very courageous. I wish you good luck, you are my last hope.", npc, creature) player:setStorageValue(Storage.OutfitQuest.BarbarianAddon, 1) player:setStorageValue(Storage.OutfitQuest.DefaultStart, 1) --this for default start of Outfit and Addon Quests npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 4) then + elseif npcHandler:getTopic(playerId) == 4 then npcHandler:say("Again, I have to thank you for your selfless offer to help me. I hope that Ajax can come up with something, now that he has experienced the power of words.", npc, creature) player:setStorageValue(Storage.OutfitQuest.BarbarianAddon, 4) npcHandler:setTopic(playerId, 0) - elseif (player:getStorageValue(Storage.OutfitQuest.BarbarianAddon) == 6 and npcHandler:getTopic(playerId) == 0) then + elseif player:getStorageValue(Storage.OutfitQuest.BarbarianAddon) == 6 and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "I'm impressed... I am sure this was Ajax' idea. I would love to give him a present, but if I leave my hut to gather ingredients, hewill surely notice. ...", - "Would you maybe help me again, one last time, my friend? I assure you that your efforts will not be in vain." + "Would you maybe help me again, one last time, my friend? I assure you that your efforts will not be in vain.", }, npc, creature) npcHandler:setTopic(playerId, 6) - elseif (npcHandler:getTopic(playerId) == 6) then + elseif npcHandler:getTopic(playerId) == 6 then npcHandler:say({ "Great! You see, I really would love to sew a nice shirt for him. I just need a few things for that, so please listen closely: ...", "He loves green and red, so I will need about 25 pieces of red cloth - like the material heroes make their capes of - and 25 pieces of the green cloth Djinns like. ...", "Secondly, I need about 5 rolls of spider silk yarn. I think mermaids can yarn silk of large spiders to create a smooth thread. ...", "The only remaining thing needed would be a bottle of warrior's sweat to spray it over the shirt... he just loves this smell. ...", - "Have you understood everything I told you and are willing to handle this task?" + "Have you understood everything I told you and are willing to handle this task?", }, npc, creature) npcHandler:setTopic(playerId, 7) - elseif (npcHandler:getTopic(playerId) == 7) then + elseif npcHandler:getTopic(playerId) == 7 then npcHandler:say("Thank you, my friend! Come back to me once you have collected 25 pieces of red cloth and 25 pieces of green cloth.", npc, creature) player:setStorageValue(Storage.OutfitQuest.BarbarianAddon, 7) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 8) then + elseif npcHandler:getTopic(playerId) == 8 then if player:getItemCount(5910) >= 25 and player:getItemCount(5911) >= 25 then npcHandler:say("Terrific! I will start to trim it while you gather 5 rolls of spider silk. I'm sure that Ajax will love it.", npc, creature) player:removeItem(5910, 25) @@ -161,13 +161,13 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.BarbarianAddon, 8) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 9) then + elseif npcHandler:getTopic(playerId) == 9 then if player:removeItem(5886, 5) then npcHandler:say("I'm impressed! You really managed to get spider silk yarn for me! I will immediately start to work on this shirt. Please don't forget to bring me warrior's sweat!", npc, creature) player:setStorageValue(Storage.OutfitQuest.BarbarianAddon, 9) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 10) then + elseif npcHandler:getTopic(playerId) == 10 then if player:removeItem(5885, 1) then npcHandler:say("Good work, |PLAYERNAME|! Now I can finally finish this present for Ajax. Because you were such a great help, I have also a present for you. Will you accept it?", npc, creature) player:setStorageValue(Storage.OutfitQuest.BarbarianAddon, 10) diff --git a/data-otservbr-global/npc/bruce.lua b/data-otservbr-global/npc/bruce.lua index 2ef27c1c1e0..55eada7766d 100644 --- a/data-otservbr-global/npc/bruce.lua +++ b/data-otservbr-global/npc/bruce.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,23 +58,23 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'report') then + if MsgContains(message, "report") then local player = Player(creature) if table.contains({ 9, 11 }, player:getStorageValue(Storage.InServiceofYalahar.Questline)) then - npcHandler:say('Well, .. .', npc, creature) + npcHandler:say("Well, .. .", npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, player:getStorageValue(Storage.InServiceofYalahar.Questline) + 1) player:setStorageValue(Storage.InServiceofYalahar.Mission02, player:getStorageValue(Storage.InServiceofYalahar.Mission02) + 1) -- StorageValue for Questlog 'Mission 02: Watching the Watchmen' end - elseif MsgContains(message, 'pass') then - npcHandler:say('You can {pass} either to the {Alchemist Quarter} or {Cemetery Quarter}. Which one will it be?', npc, creature) + elseif MsgContains(message, "pass") then + npcHandler:say("You can {pass} either to the {Alchemist Quarter} or {Cemetery Quarter}. Which one will it be?", npc, creature) npcHandler:setTopic(playerId, 1) elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'alchemist') then + if MsgContains(message, "alchemist") then local destination = Position(32738, 31113, 7) Player(creature):teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'cemetery') then + elseif MsgContains(message, "cemetery") then local destination = Position(32743, 31113, 7) Player(creature):teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/npc/bruno.lua b/data-otservbr-global/npc/bruno.lua index 0fb215d2415..f0c0d46135e 100644 --- a/data-otservbr-global/npc/bruno.lua +++ b/data-otservbr-global/npc/bruno.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 66, lookLegs = 114, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,13 +50,13 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'offer' }, StdModule.say, { npcHandler = npcHandler, text = "Well, I sell freshly caught fish. You like some? Of course, you can buy more than one at once. *grin* Just ask me for a {trade}." }) -keywordHandler:addKeyword({ 'buy' }, StdModule.say, { npcHandler = npcHandler, text = "Well, I sell freshly caught fish. You like some? Of course, you can buy more than one at once. *grin* Just ask me for a {trade}." }) -keywordHandler:addKeyword({ 'fish' }, StdModule.say, { npcHandler = npcHandler, text = "Well, I sell freshly caught fish. You like some? Of course, you can buy more than one at once. *grin* Just ask me for a {trade}." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "My name is Bruno." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "My job is to catch fish and to sell them here." }) -keywordHandler:addKeyword({ 'marlene' }, StdModule.say, { npcHandler = npcHandler, text = "Ah yes, my lovely wife. God forgive her, but she can't stop talking. So my work is a great rest for my poor ears. *laughs loudly*" }) -keywordHandler:addKeyword({ 'graubart' }, StdModule.say, { npcHandler = npcHandler, text = "I like this old salt. I learned much from him. Whatever. You like some fish? *grin*" }) +keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "Well, I sell freshly caught fish. You like some? Of course, you can buy more than one at once. *grin* Just ask me for a {trade}." }) +keywordHandler:addKeyword({ "buy" }, StdModule.say, { npcHandler = npcHandler, text = "Well, I sell freshly caught fish. You like some? Of course, you can buy more than one at once. *grin* Just ask me for a {trade}." }) +keywordHandler:addKeyword({ "fish" }, StdModule.say, { npcHandler = npcHandler, text = "Well, I sell freshly caught fish. You like some? Of course, you can buy more than one at once. *grin* Just ask me for a {trade}." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Bruno." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "My job is to catch fish and to sell them here." }) +keywordHandler:addKeyword({ "marlene" }, StdModule.say, { npcHandler = npcHandler, text = "Ah yes, my lovely wife. God forgive her, but she can't stop talking. So my work is a great rest for my poor ears. *laughs loudly*" }) +keywordHandler:addKeyword({ "graubart" }, StdModule.say, { npcHandler = npcHandler, text = "I like this old salt. I learned much from him. Whatever. You like some fish? *grin*" }) npcHandler:setMessage(MESSAGE_GREET, "Ahoi, |PLAYERNAME|. You want to buy some fresh fish?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye and come again!") diff --git a/data-otservbr-global/npc/brutus.lua b/data-otservbr-global/npc/brutus.lua index 4f489f5ccb8..23d6720a272 100644 --- a/data-otservbr-global/npc/brutus.lua +++ b/data-otservbr-global/npc/brutus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 78, lookFeet = 116, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/buddel.lua b/data-otservbr-global/npc/buddel.lua index 9a42502e775..c07ab7a7052 100644 --- a/data-otservbr-global/npc/buddel.lua +++ b/data-otservbr-global/npc/buddel.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 22, lookFeet = 20, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,7 +53,7 @@ end -- Travel local function addTravelKeyword(keyword, text, destination, randomDestination, randomNumber, condition, ringCheck, ringRemove, helheimAccess) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'No, no, no, you even are no barb....barba...er.. one of us!!!! Talk to the Jarl first!' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "No, no, no, you even are no barb....barba...er.. one of us!!!! Talk to the Jarl first!" }, condition) end if helheimAccess then keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text }, helheimAccess) @@ -62,50 +62,71 @@ local function addTravelKeyword(keyword, text, destination, randomDestination, r local ring = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Ohh, you got a nice ring there! Ya don't have to pay if you gimme the ring and I promise you I will bring you to the correct spot!*HICKS* Alright?" }, ringCheck) ring:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 0, destination = destination }, ringRemove) local normalTravel = ring:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Give me 50 gold and I bring you to " .. keyword .. ". 'kay?" }) - normalTravel:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) + normalTravel:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) if randomNumber then - normalTravel:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = destination }, randomNumber) + normalTravel:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = destination }, randomNumber) end - normalTravel:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = randomDestination }, randomNumber) + normalTravel:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = randomDestination }, randomNumber) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = 50, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = 50, discount = "postman" }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) if randomNumber then - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = destination }, randomNumber) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = destination }, randomNumber) end - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = randomDestination }, randomNumber) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = randomDestination }, randomNumber) end local randomDestination = { Position(32225, 31381, 7), Position(32462, 31174, 7), Position(32333, 31227, 7), Position(32021, 31294, 7) } -addTravelKeyword('okolnir', "It's nice there. Except of the ice dragons which are not very companionable.", Position(32225, 31381, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) -addTravelKeyword('helheim', "T'at is a small island to the east.", Position(32462, 31174, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end, - function(player) return player:getStorageValue(Storage.TheIceIslands.Questline) < 30 end) -addTravelKeyword('tyrsung', '*HICKS* Big, big island east of here. Venorian hunters settled there ..... I could bring you north of their camp.', Position(32333, 31227, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) -addTravelKeyword('camp', 'Both of you look like you could defend yourself! If you want to go there, ask me for a passage.', Position(32021, 31294, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) +addTravelKeyword("okolnir", "It's nice there. Except of the ice dragons which are not very companionable.", Position(32225, 31381, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) +addTravelKeyword("helheim", "T'at is a small island to the east.", Position(32462, 31174, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end, function(player) + return player:getStorageValue(Storage.TheIceIslands.Questline) < 30 +end) +addTravelKeyword("tyrsung", "*HICKS* Big, big island east of here. Venorian hunters settled there ..... I could bring you north of their camp.", Position(32333, 31227, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) +addTravelKeyword("camp", "Both of you look like you could defend yourself! If you want to go there, ask me for a passage.", Position(32021, 31294, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, text = "Get out o' here!*HICKS*", destination = { Position(32255, 31193, 7), Position(32256, 31193, 7), Position(32257, 31193, 7) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, text = "Get out o' here!*HICKS*", destination = { Position(32255, 31193, 7), Position(32256, 31193, 7), Position(32257, 31193, 7) } }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = "Where are we at the moment? Is this Svargrond? Ahh yes!*HICKS* Where do you want to go?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where are we at the moment? Is this Svargrond? Ahh yes!*HICKS* Where do you want to go?" }) keywordHandler:addAliasKeyword({ "trip" }) keywordHandler:addAliasKeyword({ "go" }) keywordHandler:addAliasKeyword({ "sail" }) @@ -115,7 +136,7 @@ npcHandler:setMessage(MESSAGE_GREET, "Hey big guys. You? {Here}? *HICKS*") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "compass", clientId = 10302, sell = 45 } + { itemName = "compass", clientId = 10302, sell = 45 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -126,7 +147,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/buddel_helheim.lua b/data-otservbr-global/npc/buddel_helheim.lua index 28abecbb448..12f03103128 100644 --- a/data-otservbr-global/npc/buddel_helheim.lua +++ b/data-otservbr-global/npc/buddel_helheim.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 22, lookFeet = 20, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,56 +53,76 @@ end -- Travel local function addTravelKeyword(keyword, text, destination, randomDestination, randomNumber, condition, ringCheck, ringRemove) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'No, no, no, you even are no barb....barba...er.. one of us!!!! Talk to the Jarl first!' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "No, no, no, you even are no barb....barba...er.. one of us!!!! Talk to the Jarl first!" }, condition) end if ringCheck then local ring = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Ohh, you got a nice ring there! Ya don't have to pay if you gimme the ring and I promise you I will bring you to the correct spot!*HICKS* Alright?" }, ringCheck) ring:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 0, destination = destination }, ringRemove) local normalTravel = ring:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Give me 50 gold and I bring you to " .. keyword .. ". 'kay?" }) - normalTravel:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) + normalTravel:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) if randomNumber then - normalTravel:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = destination }, randomNumber) + normalTravel:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = destination }, randomNumber) end - normalTravel:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = randomDestination }, randomNumber) + normalTravel:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = randomDestination }, randomNumber) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = 50, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = 50, discount = "postman" }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) if randomNumber then - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = destination }, randomNumber) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = destination }, randomNumber) end - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = randomDestination }, randomNumber) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = randomDestination }, randomNumber) end local randomDestination = { Position(32255, 31197, 7), Position(32225, 31381, 7), Position(32333, 31227, 7), Position(32021, 31294, 7) } -addTravelKeyword('svargrond', "You know a town nicer than this? NICER DICER! Apropos, don't play dice when you are drunk ...", Position(32255, 31197, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) -addTravelKeyword('okolnir', "It's nice there. Except of the ice dragons which are not very companionable.", Position(32225, 31381, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) -addTravelKeyword('tyrsung', '*HICKS* Big, big island east of here. Venorian hunters settled there ..... I could bring you north of their camp.', Position(32333, 31227, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) -addTravelKeyword('camp', 'Both of you look like you could defend yourself! If you want to go there, ask me for a passage.', Position(32021, 31294, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) +addTravelKeyword("svargrond", "You know a town nicer than this? NICER DICER! Apropos, don't play dice when you are drunk ...", Position(32255, 31197, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) +addTravelKeyword("okolnir", "It's nice there. Except of the ice dragons which are not very companionable.", Position(32225, 31381, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) +addTravelKeyword("tyrsung", "*HICKS* Big, big island east of here. Venorian hunters settled there ..... I could bring you north of their camp.", Position(32333, 31227, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) +addTravelKeyword("camp", "Both of you look like you could defend yourself! If you want to go there, ask me for a passage.", Position(32021, 31294, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, text = "Get out o' here!*HICKS*", destination = { Position(32468, 31176, 7) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, text = "Get out o' here!*HICKS*", destination = { Position(32468, 31176, 7) } }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = "Where are we at the moment? Is this Svargrond? Ahh yes!*HICKS* Where do you want to go?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where are we at the moment? Is this Svargrond? Ahh yes!*HICKS* Where do you want to go?" }) keywordHandler:addAliasKeyword({ "trip" }) keywordHandler:addAliasKeyword({ "go" }) keywordHandler:addAliasKeyword({ "sail" }) @@ -111,7 +131,7 @@ npcHandler:setMessage(MESSAGE_GREET, "Where are we at the moment? Is this {Svarg npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "compass", clientId = 10302, sell = 45 } + { itemName = "compass", clientId = 10302, sell = 45 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -122,7 +142,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/buddel_okolnir.lua b/data-otservbr-global/npc/buddel_okolnir.lua index 5bf3890362d..354117079e1 100644 --- a/data-otservbr-global/npc/buddel_okolnir.lua +++ b/data-otservbr-global/npc/buddel_okolnir.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 22, lookFeet = 20, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,7 +53,7 @@ end -- Travel local function addTravelKeyword(keyword, text, destination, randomDestination, randomNumber, condition, ringCheck, ringRemove, helheimAccess) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'No, no, no, you even are no barb....barba...er.. one of us!!!! Talk to the Jarl first!' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "No, no, no, you even are no barb....barba...er.. one of us!!!! Talk to the Jarl first!" }, condition) end if helheimAccess then keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text }, helheimAccess) @@ -62,50 +62,71 @@ local function addTravelKeyword(keyword, text, destination, randomDestination, r local ring = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Ohh, you got a nice ring there! Ya don't have to pay if you gimme the ring and I promise you I will bring you to the correct spot!*HICKS* Alright?" }, ringCheck) ring:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 0, destination = destination }, ringRemove) local normalTravel = ring:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Give me 50 gold and I bring you to " .. keyword .. ". 'kay?" }) - normalTravel:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) + normalTravel:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) if randomNumber then - normalTravel:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = destination }, randomNumber) + normalTravel:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = destination }, randomNumber) end - normalTravel:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = randomDestination }, randomNumber) + normalTravel:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = randomDestination }, randomNumber) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = 50, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = 50, discount = "postman" }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) if randomNumber then - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = destination }, randomNumber) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = destination }, randomNumber) end - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = randomDestination }, randomNumber) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = randomDestination }, randomNumber) end local randomDestination = { Position(32255, 31197, 7), Position(32462, 31174, 7), Position(32333, 31227, 7), Position(32021, 31294, 7) } -addTravelKeyword('svargrond', "You know a town nicer than this? NICER DICER! Apropos, don't play dice when you are drunk ...", Position(32255, 31197, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) -addTravelKeyword('camp', 'Both of you look like you could defend yourself! If you want to go there, ask me for a passage.', Position(32021, 31294, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) -addTravelKeyword('helheim', "T'at is a small island to the east.", Position(32462, 31174, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end, - function(player) return player:getStorageValue(Storage.TheIceIslands.Questline) < 30 end) -addTravelKeyword('tyrsung', '*HICKS* Big, big island east of here. Venorian hunters settled there ..... I could bring you north of their camp.', Position(32333, 31227, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) +addTravelKeyword("svargrond", "You know a town nicer than this? NICER DICER! Apropos, don't play dice when you are drunk ...", Position(32255, 31197, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) +addTravelKeyword("camp", "Both of you look like you could defend yourself! If you want to go there, ask me for a passage.", Position(32021, 31294, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) +addTravelKeyword("helheim", "T'at is a small island to the east.", Position(32462, 31174, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end, function(player) + return player:getStorageValue(Storage.TheIceIslands.Questline) < 30 +end) +addTravelKeyword("tyrsung", "*HICKS* Big, big island east of here. Venorian hunters settled there ..... I could bring you north of their camp.", Position(32333, 31227, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, text = "Get out o' here!*HICKS*", destination = { Position(32228, 31386, 7) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, text = "Get out o' here!*HICKS*", destination = { Position(32228, 31386, 7) } }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = "Where are we at the moment? Is this Svargrond? Ahh yes!*HICKS* Where do you want to go?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where are we at the moment? Is this Svargrond? Ahh yes!*HICKS* Where do you want to go?" }) keywordHandler:addAliasKeyword({ "trip" }) keywordHandler:addAliasKeyword({ "go" }) keywordHandler:addAliasKeyword({ "sail" }) @@ -114,7 +135,7 @@ npcHandler:setMessage(MESSAGE_GREET, "Where are we at the moment? Is this {Svarg npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "compass", clientId = 10302, sell = 45 } + { itemName = "compass", clientId = 10302, sell = 45 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -125,7 +146,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/buddel_raider_camp.lua b/data-otservbr-global/npc/buddel_raider_camp.lua index 5321b1bd23b..2198c012827 100644 --- a/data-otservbr-global/npc/buddel_raider_camp.lua +++ b/data-otservbr-global/npc/buddel_raider_camp.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 22, lookFeet = 20, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,7 +53,7 @@ end -- Travel local function addTravelKeyword(keyword, text, destination, randomDestination, randomNumber, condition, ringCheck, ringRemove, helheimAccess) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'No, no, no, you even are no barb....barba...er.. one of us!!!! Talk to the Jarl first!' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "No, no, no, you even are no barb....barba...er.. one of us!!!! Talk to the Jarl first!" }, condition) end if helheimAccess then keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text }, helheimAccess) @@ -62,51 +62,72 @@ local function addTravelKeyword(keyword, text, destination, randomDestination, r local ring = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Ohh, you got a nice ring there! Ya don't have to pay if you gimme the ring and I promise you I will bring you to the correct spot!*HICKS* Alright?" }, ringCheck) ring:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 0, destination = destination }, ringRemove) local normalTravel = ring:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Give me 50 gold and I bring you to " .. keyword .. ". 'kay?" }) - normalTravel:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) + normalTravel:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) if randomNumber then - normalTravel:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = destination }, randomNumber) + normalTravel:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = destination }, randomNumber) end - normalTravel:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = randomDestination }, randomNumber) + normalTravel:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = randomDestination }, randomNumber) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = 50, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = 50, discount = "postman" }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) if randomNumber then - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = destination }, randomNumber) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = destination }, randomNumber) end - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = randomDestination }, randomNumber) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = randomDestination }, randomNumber) end local randomDestination = { Position(32255, 31197, 7), Position(32225, 31381, 7), Position(32462, 31174, 7), Position(32333, 31227, 7) } -addTravelKeyword('svargrond', "You know a town nicer than this? NICER DICER! Apropos, don't play dice when you are drunk ...", Position(32255, 31197, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) -addTravelKeyword('okolnir', "It's nice there. Except of the ice dragons which are not very companionable.", Position(32225, 31381, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) -addTravelKeyword('helheim', "T'at is a small island to the east.", Position(32462, 31174, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end, - function(player) return player:getStorageValue(Storage.TheIceIslands.Questline) < 30 end) -addTravelKeyword('tyrsung', '*HICKS* Big, big island east of here. Venorian hunters settled there ..... I could bring you north of their camp.', Position(32333, 31227, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) +addTravelKeyword("svargrond", "You know a town nicer than this? NICER DICER! Apropos, don't play dice when you are drunk ...", Position(32255, 31197, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) +addTravelKeyword("okolnir", "It's nice there. Except of the ice dragons which are not very companionable.", Position(32225, 31381, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) +addTravelKeyword("helheim", "T'at is a small island to the east.", Position(32462, 31174, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end, function(player) + return player:getStorageValue(Storage.TheIceIslands.Questline) < 30 +end) +addTravelKeyword("tyrsung", "*HICKS* Big, big island east of here. Venorian hunters settled there ..... I could bring you north of their camp.", Position(32333, 31227, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, text = "Get out o' here!*HICKS*", destination = { Position(32020, 31297, 7), Position(32021, 31297, 7), Position(32022, 31297, 7) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, text = "Get out o' here!*HICKS*", destination = { Position(32020, 31297, 7), Position(32021, 31297, 7), Position(32022, 31297, 7) } }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = "Where are we at the moment? Is this Svargrond? Ahh yes!*HICKS* Where do you want to go?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where are we at the moment? Is this Svargrond? Ahh yes!*HICKS* Where do you want to go?" }) keywordHandler:addAliasKeyword({ "trip" }) keywordHandler:addAliasKeyword({ "go" }) keywordHandler:addAliasKeyword({ "sail" }) @@ -115,7 +136,7 @@ npcHandler:setMessage(MESSAGE_GREET, "Where are we at the moment? Is this {Svarg npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "compass", clientId = 10302, sell = 45 } + { itemName = "compass", clientId = 10302, sell = 45 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -126,7 +147,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/buddel_tyrsung.lua b/data-otservbr-global/npc/buddel_tyrsung.lua index 9c60accdef0..c86f1bac3fa 100644 --- a/data-otservbr-global/npc/buddel_tyrsung.lua +++ b/data-otservbr-global/npc/buddel_tyrsung.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 22, lookFeet = 20, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,7 +53,7 @@ end -- Travel local function addTravelKeyword(keyword, text, destination, randomDestination, randomNumber, condition, ringCheck, ringRemove, helheimAccess) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'No, no, no, you even are no barb....barba...er.. one of us!!!! Talk to the Jarl first!' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "No, no, no, you even are no barb....barba...er.. one of us!!!! Talk to the Jarl first!" }, condition) end if helheimAccess then keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text }, helheimAccess) @@ -62,51 +62,72 @@ local function addTravelKeyword(keyword, text, destination, randomDestination, r local ring = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Ohh, you got a nice ring there! Ya don't have to pay if you gimme the ring and I promise you I will bring you to the correct spot!*HICKS* Alright?" }, ringCheck) ring:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 0, destination = destination }, ringRemove) local normalTravel = ring:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Give me 50 gold and I bring you to " .. keyword .. ". 'kay?" }) - normalTravel:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) + normalTravel:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) if randomNumber then - normalTravel:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = destination }, randomNumber) + normalTravel:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = destination }, randomNumber) end - normalTravel:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = randomDestination }, randomNumber) + normalTravel:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = randomDestination }, randomNumber) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = 50, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = 50, discount = "postman" }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) if randomNumber then - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = destination }, randomNumber) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = destination }, randomNumber) end - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = randomDestination }, randomNumber) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = randomDestination }, randomNumber) end local randomDestination = { Position(32255, 31197, 7), Position(32225, 31381, 7), Position(32462, 31174, 7), Position(32021, 31294, 7) } -addTravelKeyword('svargrond', "You know a town nicer than this? NICER DICER! Apropos, don't play dice when you are drunk ...", Position(32255, 31197, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) -addTravelKeyword('okolnir', "It's nice there. Except of the ice dragons which are not very companionable.", Position(32225, 31381, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) -addTravelKeyword('helheim', "T'at is a small island to the east.", Position(32462, 31174, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end, - function(player) return player:getStorageValue(Storage.TheIceIslands.Questline) < 30 end) -addTravelKeyword('camp', 'Both of you look like you could defend yourself! If you want to go there, ask me for a passage.', Position(32021, 31294, 7), - function() return randomDestination[math.random(#randomDestination)] end, - function() return math.random(5) > 1 end, - function(player) return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 end, - function(player) return player:getItemCount(3097) > 0 end, - function(player) return player:removeItem(3097, 1) end) +addTravelKeyword("svargrond", "You know a town nicer than this? NICER DICER! Apropos, don't play dice when you are drunk ...", Position(32255, 31197, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) +addTravelKeyword("okolnir", "It's nice there. Except of the ice dragons which are not very companionable.", Position(32225, 31381, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) +addTravelKeyword("helheim", "T'at is a small island to the east.", Position(32462, 31174, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end, function(player) + return player:getStorageValue(Storage.TheIceIslands.Questline) < 30 +end) +addTravelKeyword("camp", "Both of you look like you could defend yourself! If you want to go there, ask me for a passage.", Position(32021, 31294, 7), function() + return randomDestination[math.random(#randomDestination)] +end, function() + return math.random(5) > 1 +end, function(player) + return player:getStorageValue(Storage.BarbarianTest.Questline) < 8 +end, function(player) + return player:getItemCount(3097) > 0 +end, function(player) + return player:removeItem(3097, 1) +end) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, text = "Get out o' here!*HICKS*", destination = { Position(32332, 31232, 7) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, text = "Get out o' here!*HICKS*", destination = { Position(32332, 31232, 7) } }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = "Where are we at the moment? Is this Svargrond? Ahh yes!*HICKS* Where do you want to go?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where are we at the moment? Is this Svargrond? Ahh yes!*HICKS* Where do you want to go?" }) keywordHandler:addAliasKeyword({ "trip" }) keywordHandler:addAliasKeyword({ "go" }) keywordHandler:addAliasKeyword({ "sail" }) @@ -115,7 +136,7 @@ npcHandler:setMessage(MESSAGE_GREET, "Where are we at the moment? Is this {Svarg npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "compass", clientId = 10302, sell = 45 } + { itemName = "compass", clientId = 10302, sell = 45 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -126,7 +147,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/budrik.lua b/data-otservbr-global/npc/budrik.lua index c8ef1e41579..6261e3d4c82 100644 --- a/data-otservbr-global/npc/budrik.lua +++ b/data-otservbr-global/npc/budrik.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 94, lookBody = 95, lookLegs = 58, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,12 +57,11 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if table.contains({ "mission", "quest" }, message:lower()) then if player:getStorageValue(Storage.ToOutfoxAFoxQuest) < 1 then npcHandler:say({ "Funny that you are asking me for a mission! There is indeed something you can do for me. Ever heard about The Horned Fox? Anyway, yesterday his gang has stolen my mining helmet during a raid. ...", - "It belonged to my father and before that to my grandfather. That helmet is at least 600 years old! I need it back. Are you willing to help me?" + "It belonged to my father and before that to my grandfather. That helmet is at least 600 years old! I need it back. Are you willing to help me?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.ToOutfoxAFoxQuest) == 1 then @@ -76,13 +75,15 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.ToOutfoxAFoxQuest) == 2 and player:getLevel() <= 40 and player:getStorageValue(Storage.KillingInTheNameOf.BudrikMinos) < 0 then npcHandler:say({ "I am so angry I could spit grit! That damn {Horned Fox} and his attacks! Let's show those bull-heads that they have messed with the wrong people....", - "I want you to kill 5000 minotaurs - no matter where - for me and all the dwarfs of Kazordoon! Are you willing to do that?" }, npc, creature) + "I want you to kill 5000 minotaurs - no matter where - for me and all the dwarfs of Kazordoon! Are you willing to do that?", + }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.KillingInTheNameOf.BudrikMinos) == 0 then if player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.MinotaurCount) >= 5000 then npcHandler:say({ "By all that is holy! You are a truly great warrior! With much patience! I have just found out the location the hideout of The Horned Fox! I have marked the spot on your map so you can find it. Go there and slay him!! ...", - "BUT, you will have only this ONE chance to catch him! Good luck!" }, npc, creature) + "BUT, you will have only this ONE chance to catch him! Good luck!", + }, npc, creature) player:setStorageValue(Storage.KillingInTheNameOf.BudrikMinos, 1) player:setStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.FoxCount, 0) else @@ -140,7 +141,8 @@ keywordHandler:addKeyword({ "shearton softbeard" }, StdModule.say, { npcHandler = npcHandler, text = { "Yes, I remember him well. It was a tragedy. An earthquake led to a cave-in and many of our brave miners died. ...", - "Their ghosts still haunt the Grothmok tunnel in which they died, so we had to seal it off." } + "Their ghosts still haunt the Grothmok tunnel in which they died, so we had to seal it off.", + }, }) keywordHandler:addKeyword({ "grothmok" }, StdModule.say, { npcHandler = npcHandler, text = "You may enter the tunnel." }) keywordHandler:addKeyword({ "deeper mines" }, StdModule.say, { npcHandler = npcHandler, text = "This is no funhouse. Leave the miners and their drilling-worms alone and get out! We have already enough trouble without you." }) diff --git a/data-otservbr-global/npc/bunny_bonecrusher.lua b/data-otservbr-global/npc/bunny_bonecrusher.lua index 4627bc7f397..6a926df382a 100644 --- a/data-otservbr-global/npc/bunny_bonecrusher.lua +++ b/data-otservbr-global/npc/bunny_bonecrusher.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 79, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,22 +50,22 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'hail general' }, StdModule.say, { npcHandler = npcHandler, text = "Salutations, commoner |PLAYERNAME|!" }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = "We are in constant training and in perfect health." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the general of the queen's army. I don't have time to explain this concept to you." }) -keywordHandler:addKeyword({ 'bonecrusher' }, StdModule.say, { npcHandler = npcHandler, text = "Our family has been serving the Carlin army since countless generations!" }) -keywordHandler:addKeyword({ 'sister' }, StdModule.say, { npcHandler = npcHandler, text = "Our family has been serving the Carlin army since countless generations!" }) -keywordHandler:addKeyword({ 'family' }, StdModule.say, { npcHandler = npcHandler, text = "She is one of my beloved sisters and serves Carlin as a town guard." }) -keywordHandler:addKeyword({ 'queen' }, StdModule.say, { npcHandler = npcHandler, text = "HAIL TO QUEEN ELOISE, OUR NOBLE {LEADER}!" }) -keywordHandler:addKeyword({ 'leader' }, StdModule.say, { npcHandler = npcHandler, text = "Queen Eloise is a fine leader for our fair town, indeed!" }) -keywordHandler:addKeyword({ 'army' }, StdModule.say, { npcHandler = npcHandler, text = "The army protects the defenceless males of our {city}. Our elite forces are the {Green Ferrets}." }) -keywordHandler:addKeyword({ 'city' }, StdModule.say, { npcHandler = npcHandler, text = "Our city blends in with the nature surrounding it. Our {druids} take care of that." }) -keywordHandler:addKeyword({ 'druids' }, StdModule.say, { npcHandler = npcHandler, text = "They are our main magic support and play a major role in our battle {tactics}." }) -keywordHandler:addKeyword({ 'tactics' }, StdModule.say, { npcHandler = npcHandler, text = "Our tactic is to kiss." }) -keywordHandler:addKeyword({ 'kiss' }, StdModule.say, { npcHandler = npcHandler, text = "K.I.S.S.! Keep It Simple, Stupid! Complicated tactics are too easy to be crushed by a twist of fate." }) -keywordHandler:addKeyword({ 'green ferrets' }, StdModule.say, { npcHandler = npcHandler, text = "Our elite forces are trained by rangers and druids. In the woods they come a close second to elves." }) -keywordHandler:addKeyword({ 'join' }, StdModule.say, { npcHandler = npcHandler, text = "Join what?" }) -keywordHandler:addKeyword({ 'join army' }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, we don't recruit foreigners. Maybe you can join if you prove yourself in a mission for the queen." }) +keywordHandler:addKeyword({ "hail general" }, StdModule.say, { npcHandler = npcHandler, text = "Salutations, commoner |PLAYERNAME|!" }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "We are in constant training and in perfect health." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the general of the queen's army. I don't have time to explain this concept to you." }) +keywordHandler:addKeyword({ "bonecrusher" }, StdModule.say, { npcHandler = npcHandler, text = "Our family has been serving the Carlin army since countless generations!" }) +keywordHandler:addKeyword({ "sister" }, StdModule.say, { npcHandler = npcHandler, text = "Our family has been serving the Carlin army since countless generations!" }) +keywordHandler:addKeyword({ "family" }, StdModule.say, { npcHandler = npcHandler, text = "She is one of my beloved sisters and serves Carlin as a town guard." }) +keywordHandler:addKeyword({ "queen" }, StdModule.say, { npcHandler = npcHandler, text = "HAIL TO QUEEN ELOISE, OUR NOBLE {LEADER}!" }) +keywordHandler:addKeyword({ "leader" }, StdModule.say, { npcHandler = npcHandler, text = "Queen Eloise is a fine leader for our fair town, indeed!" }) +keywordHandler:addKeyword({ "army" }, StdModule.say, { npcHandler = npcHandler, text = "The army protects the defenceless males of our {city}. Our elite forces are the {Green Ferrets}." }) +keywordHandler:addKeyword({ "city" }, StdModule.say, { npcHandler = npcHandler, text = "Our city blends in with the nature surrounding it. Our {druids} take care of that." }) +keywordHandler:addKeyword({ "druids" }, StdModule.say, { npcHandler = npcHandler, text = "They are our main magic support and play a major role in our battle {tactics}." }) +keywordHandler:addKeyword({ "tactics" }, StdModule.say, { npcHandler = npcHandler, text = "Our tactic is to kiss." }) +keywordHandler:addKeyword({ "kiss" }, StdModule.say, { npcHandler = npcHandler, text = "K.I.S.S.! Keep It Simple, Stupid! Complicated tactics are too easy to be crushed by a twist of fate." }) +keywordHandler:addKeyword({ "green ferrets" }, StdModule.say, { npcHandler = npcHandler, text = "Our elite forces are trained by rangers and druids. In the woods they come a close second to elves." }) +keywordHandler:addKeyword({ "join" }, StdModule.say, { npcHandler = npcHandler, text = "Join what?" }) +keywordHandler:addKeyword({ "join army" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, we don't recruit foreigners. Maybe you can join if you prove yourself in a mission for the queen." }) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/busty_bonecrusher.lua b/data-otservbr-global/npc/busty_bonecrusher.lua index 3884ba1704f..da0707856b6 100644 --- a/data-otservbr-global/npc/busty_bonecrusher.lua +++ b/data-otservbr-global/npc/busty_bonecrusher.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 66, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Behave yourself as long as you are in Carlin, commoner!' } + { text = "Behave yourself as long as you are in Carlin, commoner!" }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/cael.lua b/data-otservbr-global/npc/cael.lua index 93d89ef2a8e..f6dcbfe81fe 100644 --- a/data-otservbr-global/npc/cael.lua +++ b/data-otservbr-global/npc/cael.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 66 + lookType = 66, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -23,7 +23,7 @@ npcConfig.voices = { chance = 50, { text = "I wish I could learn more about this strange world." }, { text = "Those different cultures are amazing." }, - { text = "What an interesting continent." } + { text = "What an interesting continent." }, } local tomes = Storage.Quest.U8_54.TheNewFrontier.TomeofKnowledge @@ -43,8 +43,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -132,7 +131,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("You dont have one!", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "zao")) then + elseif MsgContains(message, "zao") then if npcHandler:getTopic(playerId) == 21 then --tome1 npcHandler:say("I've learnt more about the {lizard} culture. It's really fascinating.", npc, creature) npcHandler:setTopic(playerId, 40) @@ -173,65 +172,65 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("I've learnt many things from your books. Still, I guess that's just a fragment of what I could still discover about this interesting continent.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "lizard")) then --tome1 + elseif MsgContains(message, "lizard") then --tome1 if npcHandler:getTopic(playerId) == 40 then npcHandler:say({ "Did you know that the lizardmen were among the first races roaming this continent? They were waging war against the orcs, minotaurs and humans on Zao and for a long time it seemed that the forces were even. ...", "However, a while later, also a race of dragons arrived on this continent. Seeing the lizards as distant relatives, they decided to support their war, and together they drove all other races back into the steppe. ...", "It turned out though that the dragonkin didn't really view the lizards as allies but as servants and demanded gold and slaves for their help. Part of the lizard population agreed and obeyed their new masters, the others stirred up a violent rebellion. ...", - "It doesn't really say what happened afterwards, but in the book were also pictures of special symbols the lizards use for their flags and banners. I've given this to Pompan. Maybe he can find a way to use it." + "It doesn't really say what happened afterwards, but in the book were also pictures of special symbols the lizards use for their flags and banners. I've given this to Pompan. Maybe he can find a way to use it.", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "minotaur")) then --tome2 + elseif MsgContains(message, "minotaur") then --tome2 if npcHandler:getTopic(playerId) == 41 then npcHandler:say({ "Did you know that most of the minotaurs you might have met by now do not originally come from Zao? The original minotaur race stood no chance against the united force of dragons and lizards. ...", "Most of them were killed and captured, but a few of them were able to flee the continent. They found other minotaurs, mighty Mooh'Tah masters, and told them their story. ...", "The Mooh'Tah masters actually found the continent Zao and started to look for their lost brothers, but it doesn't say whether they actually found any survivors. ...", "In the tome, there was also a really nice pattern of a carrying device that might have been used by minotaurs. Or maybe by enemies of minotaurs. I've given it to Pompan. ...", - "Maybe he can find a way to use it... we dwarfs are not that skilled when it comes to fashion." + "Maybe he can find a way to use it... we dwarfs are not that skilled when it comes to fashion.", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "draken")) then --tome3 + elseif MsgContains(message, "draken") then --tome3 if npcHandler:getTopic(playerId) == 42 then npcHandler:say({ "According to what I've read in that tome, the Draken seem to be a crossbreed between lizards and dragons, combining the dragons' strength with the lizards' swiftness. They seem to be the main figures in the dragons' internal quarrels. ...", "They can't fly and are stuck with walking on two feet, but else they combine the best of two worlds - they are intelligent, powerful and both strong magic users and skilled weapon wielders. ...", - "Have you been to one of their settlements yet? They seem to have really beautifully adorned weapon racks. I've given a construction plan of such a rack to Esrik. Maybe he can recreate it." + "Have you been to one of their settlements yet? They seem to have really beautifully adorned weapon racks. I've given a construction plan of such a rack to Esrik. Maybe he can recreate it.", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "food")) then --tome4 + elseif MsgContains(message, "food") then --tome4 if npcHandler:getTopic(playerId) == 43 then npcHandler:say({ "I discovered an interesting recipe in this Tome of Knowledge. Maybe you've seen the large rice terraces in Muggy Plains - that is how the lizardmen apparently call that region. ...", "The book is a lot of blabla about how they cultivate and harvest their rice, but there's something we could actually learn, and that is a certain way to prepare that rice. ...", - "If you ever come across a ripe rice plant, bring it to Swolt in the tavern and he might help you prepare it - grumpily." + "If you ever come across a ripe rice plant, bring it to Swolt in the tavern and he might help you prepare it - grumpily.", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "zzaion")) then --tome5 + elseif MsgContains(message, "zzaion") then --tome5 if npcHandler:getTopic(playerId) == 44 then npcHandler:say({ "Have you ever seen the towers of the large lizard city south-east of Zao? It's the last one south of the mountains and who knows how long they are able to hold it. ...", "It's under constant and heavy siege by the steppe orcs and minotaurs. Sometimes they manage to crush the gates and storm the city. Watch out, you probably don't want to stumble right into the middle of a war. Or maybe you do? ...", - "Anyway, I found another nice pattern in this book. It's for a lizard carrying device. I've given it to Pompan, just in case you're interested." + "Anyway, I found another nice pattern in this book. It's for a lizard carrying device. I've given it to Pompan, just in case you're interested.", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "human")) then --tome6 + elseif MsgContains(message, "human") then --tome6 if npcHandler:getTopic(playerId) == 45 then npcHandler:say({ "Well, to be honest it doesn't say much about humans in this book. However, it seems that the humans on this continent used to live in the steppe. ...", "In the great war against dragons and lizards, they didn't stand the slightest chance due to lack of equipment and well, let's face it, intelligence. The other races were superior in every way. ...", "They were driven back into the mountains and survived by growing mushrooms, collecting herbs and probably hunting smaller animals. Today, the orcs pose a major threat to them, so I guess they need every help they can possibly get. ...", - "Anyway! The humans seem to make a so-called 'great hunt' now and then, and for that they play war instruments. If you're interested in drums or a didgeridoo and want to trade, let me know. I've recreated a few, they don't actually sound bad!" + "Anyway! The humans seem to make a so-called 'great hunt' now and then, and for that they play war instruments. If you're interested in drums or a didgeridoo and want to trade, let me know. I've recreated a few, they don't actually sound bad!", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "steppe")) then --tome7 + elseif MsgContains(message, "steppe") then --tome7 if npcHandler:getTopic(playerId) == 46 then npcHandler:say({ "Maybe you don't know that the great steppe was once a fertile ground. Well, to be precise - in the distant past it probably did not look any different from what it looks today. ...", @@ -239,11 +238,11 @@ local function creatureSayCallback(npc, creature, type, message) "Back in those times, the lizard population was immense and their need of supplies tremendous. Therefore, they did not allow other races to co-exist and exterminated most of them almost completely. ...", "Some relics of the settlements of the pre-lizard cultures can still be found. Most of them were probably converted by the victorious lizardmen into something that suited their purposes better. ...", "All that talk about relics reminds me about something I've recently seen when getting some fresh air up in the mountains. Right next to the carpet pilot - may earth protect me from ever having to step on that thing - was an old lizard relic. ...", - "Incredible how far their realm might have stretched at the peak of their civilisation! Time left its marks on the relic and I suppose it looks rather dangerous, but I am convinced that it is safe. You should try it out sometime." + "Incredible how far their realm might have stretched at the peak of their civilisation! Time left its marks on the relic and I suppose it looks rather dangerous, but I am convinced that it is safe. You should try it out sometime.", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "corruption")) then --tome8 + elseif MsgContains(message, "corruption") then --tome8 if npcHandler:getTopic(playerId) == 47 then npcHandler:say({ "You know, while all this talk about growing and preparing rice might sound boring, there are actually some bits of vital information hidden in all those lists. ...", @@ -254,11 +253,11 @@ local function creatureSayCallback(npc, creature, type, message) "According to the descriptions, I'd call them mentally unstable, but their people see them as 'blessed by the dragon emperor'. I assume there are strange forces at work in this land, and I have a bad feeling about it. ...", "Anyway, you know what else was mentioned in this book? A path down to a hidden cave system below the Muggy Plains. ...", "Apparently, at first this system was used to hide - or rather to get rid of - new-born lizards that carried the sign of corruption - before the lizards decided to view it as a blessing. ...", - "Who knows what happens down there now - maybe it's worth a look, maybe not. Maybe you won't even discover anything. In any case, be careful." + "Who knows what happens down there now - maybe it's worth a look, maybe not. Maybe you won't even discover anything. In any case, be careful.", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "origin")) then --tome9 + elseif MsgContains(message, "origin") then --tome9 if npcHandler:getTopic(playerId) == 48 then npcHandler:say({ "I think the origin of the Draken sheds some new light on certain aspects of the lizard society. It is obvious from the books that the Draken appeared only after the dragon kings revealed themselves to the lizards. ...", @@ -269,11 +268,11 @@ local function creatureSayCallback(npc, creature, type, message) "It seems that some of those eggs are imbued with spiritual or magical power and as a result bear a serpent spawn. It appears that this changed when the dragon emperor became the ruler of this land. ...", "Unlike serpent spawns, the Draken hatched from some of the eggs in the hatcheries. ...", "I can only imagine what this might imply. As I said, it's only a theory, but I think a quite valid one and I'd treasure any additional information about that topic. ...", - "In the meantime, I've also talked to Esrik about some information that I found in the tome concerning weaponry and armory. Knowing this dwarf, he might have some interesting offers for you by now." + "In the meantime, I've also talked to Esrik about some information that I found in the tome concerning weaponry and armory. Knowing this dwarf, he might have some interesting offers for you by now.", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "founder")) then --tome10 + elseif MsgContains(message, "founder") then --tome10 if npcHandler:getTopic(playerId) == 49 then npcHandler:say({ "It seems that some parts of the tome are just copies from other sources and rather unrelated to each other. As far as I could piece them together, there was a mythical founder of the lizard civilisation. ...", @@ -282,11 +281,11 @@ local function creatureSayCallback(npc, creature, type, message) "My guess is that several members of this dynasty are responsible for or connected to the feats that were attributed to the mythical 'Zao'. ...", "The improbable lifespan of 'Zao' can thus be explained with the time the Zao dynasty reigned. On the other hand, we all know larger-than-life heroes did exist and some of them had an extremely long lifespan. ...", "Most likely, he also had children which could explain the mentioning of a Zao family. I think even the lizardmen don't know for sure what happened in such distant past and so this might be one of those riddles that will never be solved. ...", - "It seems that the origin of the Zao dynasty was somewhere in the Dragonblaze Peaks, or rather under them. Legends tell of a large fortress, once erected up the highest peak, but now buried deep underground. Who knows, maybe you'll find answers there?" + "It seems that the origin of the Zao dynasty was somewhere in the Dragonblaze Peaks, or rather under them. Legends tell of a large fortress, once erected up the highest peak, but now buried deep underground. Who knows, maybe you'll find answers there?", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "dragons")) then --tome11 + elseif MsgContains(message, "dragons") then --tome11 if npcHandler:getTopic(playerId) == 50 then npcHandler:say({ "Dragons are of great symbolism for this land. Even before the dragons came here and took control over Zao, the lizards worshipped the dragons as strong mythical beasts. ...", @@ -295,11 +294,11 @@ local function creatureSayCallback(npc, creature, type, message) "I think in the past, the lizardmen of this country might have worshipped a snake god or goddess just like their brethren in Tiquanda if we can believe the reports from this area. The dragons replaced the snake worship at some point of history. ...", "The reference to heretics and their extermination suggests that there might have been a rebellion against the dragons, which in turn hints at some close link between lizards and dragons, maybe a forced one. ...", "While reading this tome, I discovered a drawing of this beautiful statue. I was a skilled sculptor in the past, so I can't resist. ...", - "I'm probably not that good anymore, but if you're interested and find me a red lantern, I could make one of those for you." + "I'm probably not that good anymore, but if you're interested and find me a red lantern, I could make one of those for you.", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "thrones")) then --tome12 + elseif MsgContains(message, "thrones") then --tome12 if npcHandler:getTopic(playerId) == 51 then npcHandler:say({ "In the modern lizard culture thrones seem to be only a reminiscent of the past. Whereas in the past the rulers of the lizardmen used thrones and other insignia to show their status, in our days they are ruled by dragon kings. ...", @@ -307,7 +306,7 @@ local function creatureSayCallback(npc, creature, type, message) "From what I can tell, the lizards are bound to those dragon kings by some kind of magic. I'm not sure what this magic does, but I guess it ensures their loyalty to some extent. ...", "On an interesting side note - there were some hints in the tome that the dragon kings themselves are somehow bound to the dragon emperor through the same kind of magic. ...", "It seems this kind of liege system was formed sometime after the arrival of the dragons in this land. It's definitely an interesting field of research and shows us how much we still have to learn and to discover. ...", - "Well, I've certainly learnt how the great old thrones look like. If you bring me some red cloth, I could probably try and reconstruct one for you." + "Well, I've certainly learnt how the great old thrones look like. If you bring me some red cloth, I could probably try and reconstruct one for you.", }, npc, creature) npcHandler:setTopic(playerId, 0) end diff --git a/data-otservbr-global/npc/cameron.lua b/data-otservbr-global/npc/cameron.lua index 86e4db30ec2..3d8ca6c016e 100644 --- a/data-otservbr-global/npc/cameron.lua +++ b/data-otservbr-global/npc/cameron.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 37, lookLegs = 115, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/canary.lua b/data-otservbr-global/npc/canary.lua index b5de8b9589d..c4bfb5c3e8b 100644 --- a/data-otservbr-global/npc/canary.lua +++ b/data-otservbr-global/npc/canary.lua @@ -18,17 +18,17 @@ npcConfig.outfit = { lookLegs = 0, lookFeet = 0, lookAddons = 2, - lookMount = 42 + lookMount = 42, } npcConfig.voices = { interval = 15000, chance = 20, - { text = "Welcome to the Canary Server!" } + { text = "Welcome to the Canary Server!" }, } npcConfig.flags = { - floorchange = false + floorchange = false, } -- Npc shop @@ -36,7 +36,7 @@ npcConfig.shop = { { clientId = 123, buy = 32000, sell = 16000, count = 1 }, { clientId = 130, buy = 100, count = 1 }, { clientId = 135, buy = 5000, count = 1 }, - { clientId = 138, buy = 600, count = 1 } + { clientId = 138, buy = 600, count = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -47,8 +47,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end -- Create keywordHandler and npcHandler local keywordHandler = KeywordHandler:new() @@ -104,7 +103,7 @@ local function creatureSayCallback(npc, creature, type, message) "The goal is for Canary to be an 'engine', that is, it will be \z a server with a 'clean' datapack, with as few things as possible, \z thus facilitating development and testing.", - "See more on our {discord group}." + "See more on our {discord group}.", }, npc, creature, 3000) npcHandler:setTopic(playerId, 1) elseif MsgContains(message, "discord group") then diff --git a/data-otservbr-global/npc/captain_bluebear.lua b/data-otservbr-global/npc/captain_bluebear.lua index d61d061bcd8..a535403a61e 100644 --- a/data-otservbr-global/npc/captain_bluebear.lua +++ b/data-otservbr-global/npc/captain_bluebear.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 69, lookLegs = 125, lookFeet = 50, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passages to Carlin, Ab\'Dendriel, Edron, Venore, Port Hope, Liberty Bay, Yalahar, Roshamuul, Krailos, Oramond and Svargrond.' } + { text = "Passages to Carlin, Ab'Dendriel, Edron, Venore, Port Hope, Liberty Bay, Yalahar, Roshamuul, Krailos, Oramond and Svargrond." }, } local keywordHandler = KeywordHandler:new() @@ -59,68 +59,65 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, action, condition) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but I don\'t sail there.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }, nil, action) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }, nil, action) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('carlin', 110, Position(32387, 31820, 6), - function(player) - if player:getStorageValue(Storage.Postman.Mission01) == 1 then - player:setStorageValue(Storage.Postman.Mission01, 2) - end - end) - -addTravelKeyword('ab\'dendriel', 130, Position(32734, 31668, 6)) -addTravelKeyword('edron', 160, Position(33175, 31764, 6)) -addTravelKeyword('venore', 170, Position(32954, 32022, 6)) -addTravelKeyword('port hope', 160, Position(32527, 32784, 6)) -addTravelKeyword('roshamuul', 210, Position(33494, 32567, 7)) -addTravelKeyword('svargrond', 180, Position(32341, 31108, 6)) -addTravelKeyword('liberty bay', 180, Position(32285, 32892, 6)) -addTravelKeyword('yalahar', 200, Position(32816, 31272, 6), nil, - function(player) - return player:getStorageValue(Storage.SearoutesAroundYalahar.Thais) ~= 1 - and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 - end) -addTravelKeyword('oramond', 150, Position(33479, 31985, 7)) -addTravelKeyword('krailos', 230, Position(33492, 31712, 6)) +addTravelKeyword("carlin", 110, Position(32387, 31820, 6), function(player) + if player:getStorageValue(Storage.Postman.Mission01) == 1 then + player:setStorageValue(Storage.Postman.Mission01, 2) + end +end) + +addTravelKeyword("ab'dendriel", 130, Position(32734, 31668, 6)) +addTravelKeyword("edron", 160, Position(33175, 31764, 6)) +addTravelKeyword("venore", 170, Position(32954, 32022, 6)) +addTravelKeyword("port hope", 160, Position(32527, 32784, 6)) +addTravelKeyword("roshamuul", 210, Position(33494, 32567, 7)) +addTravelKeyword("svargrond", 180, Position(32341, 31108, 6)) +addTravelKeyword("liberty bay", 180, Position(32285, 32892, 6)) +addTravelKeyword("yalahar", 200, Position(32816, 31272, 6), nil, function(player) + return player:getStorageValue(Storage.SearoutesAroundYalahar.Thais) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 +end) +addTravelKeyword("oramond", 150, Position(33479, 31985, 7)) +addTravelKeyword("krailos", 230, Position(33492, 31712, 6)) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32320, 32219, 6), Position(32321, 32210, 6) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32320, 32219, 6), Position(32321, 32210, 6) } }) -- Basic -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Captain Bluebear from the Royal Tibia Line.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this sailing-ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this sailing-ship.' }) -keywordHandler:addKeyword({ 'ship' }, StdModule.say, { npcHandler = npcHandler, text = 'The Royal Tibia Line connects all seaside towns of Tibia.' }) -keywordHandler:addKeyword({ 'line' }, StdModule.say, { npcHandler = npcHandler, text = 'The Royal Tibia Line connects all seaside towns of Tibia.' }) -keywordHandler:addKeyword({ 'company' }, StdModule.say, { npcHandler = npcHandler, text = 'The Royal Tibia Line connects all seaside towns of Tibia.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'The Royal Tibia Line connects all seaside towns of Tibia.' }) -keywordHandler:addKeyword({ 'good' }, StdModule.say, { npcHandler = npcHandler, text = 'We can transport everything you want.' }) -keywordHandler:addKeyword({ 'passenger' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to welcome you on board.' }) -keywordHandler:addKeyword({ 'trip' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Carlin}, {Ab\'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?' }) -keywordHandler:addKeyword({ 'route' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Carlin}, {Ab\'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Carlin}, {Ab\'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Carlin}, {Ab\'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?' }) -keywordHandler:addKeyword({ 'destination' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Carlin}, {Ab\'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?' }) -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Carlin}, {Ab\'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?' }) -keywordHandler:addKeyword({ 'go' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Carlin}, {Ab\'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?' }) -keywordHandler:addKeyword({ 'ice' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry, but we don\'t serve the routes to the Ice Islands.' }) -keywordHandler:addKeyword({ 'senja' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry, but we don\'t serve the routes to the Ice Islands.' }) -keywordHandler:addKeyword({ 'folda' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry, but we don\'t serve the routes to the Ice Islands.' }) -keywordHandler:addKeyword({ 'vega' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry, but we don\'t serve the routes to the Ice Islands.' }) -keywordHandler:addKeyword({ 'darashia' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m not sailing there. This route is afflicted by a ghostship! However I\'ve heard that Captain Fearless from Venore sails there.' }) -keywordHandler:addKeyword({ 'darama' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m not sailing there. This route is afflicted by a ghostship! However I\'ve heard that Captain Fearless from Venore sails there.' }) -keywordHandler:addKeyword({ 'ghost' }, StdModule.say, { npcHandler = npcHandler, text = 'Many people who sailed to Darashia never returned because they were attacked by a ghostship! I\'ll never sail there!' }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = 'This is Thais. Where do you want to go?' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome on board, |PLAYERNAME|. Where can I {sail} you today?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Captain Bluebear from the Royal Tibia Line." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this sailing-ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this sailing-ship." }) +keywordHandler:addKeyword({ "ship" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "line" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "company" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "good" }, StdModule.say, { npcHandler = npcHandler, text = "We can transport everything you want." }) +keywordHandler:addKeyword({ "passenger" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to welcome you on board." }) +keywordHandler:addKeyword({ "trip" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Carlin}, {Ab'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?" }) +keywordHandler:addKeyword({ "route" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Carlin}, {Ab'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Carlin}, {Ab'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?" }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Carlin}, {Ab'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?" }) +keywordHandler:addKeyword({ "destination" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Carlin}, {Ab'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?" }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Carlin}, {Ab'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?" }) +keywordHandler:addKeyword({ "go" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Carlin}, {Ab'Dendriel}, {Venore}, {Port Hope}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Roshamuul}, {Oramond} or {Edron}?" }) +keywordHandler:addKeyword({ "ice" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) +keywordHandler:addKeyword({ "senja" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) +keywordHandler:addKeyword({ "folda" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) +keywordHandler:addKeyword({ "vega" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) +keywordHandler:addKeyword({ "darashia" }, StdModule.say, { npcHandler = npcHandler, text = "I'm not sailing there. This route is afflicted by a ghostship! However I've heard that Captain Fearless from Venore sails there." }) +keywordHandler:addKeyword({ "darama" }, StdModule.say, { npcHandler = npcHandler, text = "I'm not sailing there. This route is afflicted by a ghostship! However I've heard that Captain Fearless from Venore sails there." }) +keywordHandler:addKeyword({ "ghost" }, StdModule.say, { npcHandler = npcHandler, text = "Many people who sailed to Darashia never returned because they were attacked by a ghostship! I'll never sail there!" }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "This is Thais. Where do you want to go?" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. Where can I {sail} you today?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/captain_breezelda.lua b/data-otservbr-global/npc/captain_breezelda.lua index 3dd315efed5..5ce9cb5a99b 100644 --- a/data-otservbr-global/npc/captain_breezelda.lua +++ b/data-otservbr-global/npc/captain_breezelda.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 23, lookLegs = 28, lookFeet = 76, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,23 +52,23 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('thais', 110, Position(32310, 32210, 6)) -addTravelKeyword('carlin', 180, Position(32387, 31820, 6)) -addTravelKeyword('venore', 150, Position(32954, 32022, 6)) +addTravelKeyword("thais", 110, Position(32310, 32210, 6)) +addTravelKeyword("carlin", 180, Position(32387, 31820, 6)) +addTravelKeyword("venore", 150, Position(32954, 32022, 6)) -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Carlin}, {Venore} or {Thais}?' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Carlin}, {Venore} or {Thais}?' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'svargrond' }, StdModule.say, { npcHandler = npcHandler, text = 'This is Svargrond. Where do you want to go?' }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Carlin}, {Venore} or {Thais}?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Carlin}, {Venore} or {Thais}?" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "svargrond" }, StdModule.say, { npcHandler = npcHandler, text = "This is Svargrond. Where do you want to go?" }) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32337, 31115, 7) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32337, 31115, 7) } }) npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. Where can I {sail} you today?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") diff --git a/data-otservbr-global/npc/captain_chelop.lua b/data-otservbr-global/npc/captain_chelop.lua index 628094c2b13..026e864814d 100644 --- a/data-otservbr-global/npc/captain_chelop.lua +++ b/data-otservbr-global/npc/captain_chelop.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 67, lookLegs = 39, lookFeet = 76, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'By direct edict of the honorable Henricus, we are ordered to give passage for all recruits to Thais.' } + { text = "By direct edict of the honorable Henricus, we are ordered to give passage for all recruits to Thais." }, } local keywordHandler = KeywordHandler:new() @@ -57,20 +57,20 @@ npcType.onCloseChannel = function(npc, creature) end -- Travel -local travelKeyword = keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to Thais for |TRAVELCOST|?', cost = 210, discount = 'postman' }) -travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 210, discount = 'postman', destination = Position(32310, 32210, 6) }) -travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'By direct edict of the honorable Henricus himself... well, you know.', reset = true }) -keywordHandler:addAliasKeyword({ 'town' }) +local travelKeyword = keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to Thais for |TRAVELCOST|?", cost = 210, discount = "postman" }) +travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 210, discount = "postman", destination = Position(32310, 32210, 6) }) +travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "By direct edict of the honorable Henricus himself... well, you know.", reset = true }) +keywordHandler:addAliasKeyword({ "town" }) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33495, 32564, 7), Position(33495, 32563, 7), Position(33496, 32562, 7) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33495, 32564, 7), Position(33495, 32563, 7), Position(33496, 32562, 7) } }) -- Basic -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = "I can bring you back to {Thais} if you are weary or you can stay and fight. What shall it be?" }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "My name is Chelop and I am a captain of this {inquisition} ship." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "Can't you see? I'm captain of the Pesadilla, the proud {inquisition} ship which anchors here." }) -keywordHandler:addKeyword({ 'inquisition' }, StdModule.say, { npcHandler = npcHandler, text = "By edict of the honorable Henricus himself, we are ordered to give passage to all recruits of the Roshamuul mission for a small fee." }) -keywordHandler:addKeyword({ 'roshamuul' }, StdModule.say, { npcHandler = npcHandler, text = "This is the island you are currently on, just in case you forgot." }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "I can bring you back to {Thais} if you are weary or you can stay and fight. What shall it be?" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Chelop and I am a captain of this {inquisition} ship." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Can't you see? I'm captain of the Pesadilla, the proud {inquisition} ship which anchors here." }) +keywordHandler:addKeyword({ "inquisition" }, StdModule.say, { npcHandler = npcHandler, text = "By edict of the honorable Henricus himself, we are ordered to give passage to all recruits of the Roshamuul mission for a small fee." }) +keywordHandler:addKeyword({ "roshamuul" }, StdModule.say, { npcHandler = npcHandler, text = "This is the island you are currently on, just in case you forgot." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, recruit |PLAYERNAME|. Where can I {sail} you today?") npcHandler:setMessage(MESSAGE_FAREWELL, "On behalf of the inquisition, I bid you farewell.") diff --git a/data-otservbr-global/npc/captain_cookie.lua b/data-otservbr-global/npc/captain_cookie.lua index fedd3d8cb1b..498662f0d51 100644 --- a/data-otservbr-global/npc/captain_cookie.lua +++ b/data-otservbr-global/npc/captain_cookie.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,15 +51,15 @@ npcType.onCloseChannel = function(npc, creature) end -- Travel -local travelKeyword = keywordHandler:addKeyword({ 'liberty bay' }, StdModule.say, { npcHandler = npcHandler, text = 'I can bring you to our base in Liberty Bay for |TRAVELCOST|. Is that what you want?', cost = 400, discount = 'postman' }) -travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 400, discount = 'postman', destination = Position(32285, 32892, 6) }) -travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) -keywordHandler:addAliasKeyword({ 'passage' }) +local travelKeyword = keywordHandler:addKeyword({ "liberty bay" }, StdModule.say, { npcHandler = npcHandler, text = "I can bring you to our base in Liberty Bay for |TRAVELCOST|. Is that what you want?", cost = 400, discount = "postman" }) +travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 400, discount = "postman", destination = Position(32285, 32892, 6) }) +travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) +keywordHandler:addAliasKeyword({ "passage" }) -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'I can take you to {Liberty Bay}.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'yalahar' }, StdModule.say, { npcHandler = npcHandler, text = 'I travelled here, hoping to find the cockaigne. Imagine my disappointment when I discovered I was wrong.' }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "I can take you to {Liberty Bay}." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "yalahar" }, StdModule.say, { npcHandler = npcHandler, text = "I travelled here, hoping to find the cockaigne. Imagine my disappointment when I discovered I was wrong." }) npcHandler:setMessage(MESSAGE_GREET, "Greetings, daring adventurer. If you need a {passage}, let me know.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") diff --git a/data-otservbr-global/npc/captain_dreadnought.lua b/data-otservbr-global/npc/captain_dreadnought.lua index 10482a25b38..384e5777453 100644 --- a/data-otservbr-global/npc/captain_dreadnought.lua +++ b/data-otservbr-global/npc/captain_dreadnought.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 78, lookFeet = 96, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -30,7 +30,7 @@ npcConfig.voices = { { text = "No fear! The Sea Cat will ship you safely to the mainland!" }, { text = "All aboard! Prepare to sail!" }, { text = "Come hell or high water, we'll reach any port I sail you to!" }, - { text = "This island is too small. I need sea water around me." } + { text = "This island is too small. I need sea water around me." }, } npcConfig.moneyToNeedDonation = 500 --value in gold coins (ex: 500 = 500gp, 10000 = 10k) @@ -68,12 +68,12 @@ local towns = { name = "Ab'dendriel", about = { "Main city of the elves - lots of trees, bug milk and stuff that easily burns ...", - "... Sorry, just thinking aloud. Ahem. Very cosy and safe I guess if you're fond of nature." + "... Sorry, just thinking aloud. Ahem. Very cosy and safe I guess if you're fond of nature.", }, canBeSailed = true, isPremium = false, message = "So it's Ab'Dendriel, the tree city of the elves you chose as your new home?", - destination = { x = 32734, y = 31668, z = 6 } + destination = { x = 32734, y = 31668, z = 6 }, }, [TOWNS_LIST.ANKRAHMUN] = { name = "Ankrahmun", @@ -81,111 +81,110 @@ local towns = { canBeSailed = true, isPremium = true, message = "So it's Ankrahmun, the city you chose as your new home?", - destination = { x = 33092, y = 32883, z = 6 } + destination = { x = 33092, y = 32883, z = 6 }, }, [TOWNS_LIST.CARLIN] = { name = "Carlin", about = { "A city ruled by forthright independent women. \z - Very clean and safe, but also very strict on the booze, alas. But if that's what you like..." + Very clean and safe, but also very strict on the booze, alas. But if that's what you like...", }, canBeSailed = true, isPremium = false, message = "So it's Carlin, the city under women's rule, a rival to Thais you chose as your new home?", - destination = { x = 32387, y = 31820, z = 6 } + destination = { x = 32387, y = 31820, z = 6 }, }, [TOWNS_LIST.DARASHIA] = { name = "Darashia", about = { "One of the two desert cities. \z - Built around a lovely oasis. Lions, dragons... decent location for a newcomer." + Built around a lovely oasis. Lions, dragons... decent location for a newcomer.", }, canBeSailed = true, isPremium = true, message = "So it's Darashia, the city you chose as your new home?", - destination = { x = 33289, y = 32481, z = 6 } + destination = { x = 33289, y = 32481, z = 6 }, }, [TOWNS_LIST.EDRON] = { name = "Edron", about = { "Quiet little castle city on an island in the north-eastern part of Tibia. \z - Trolls, goblins, rotworms... good place for starters, too." + Trolls, goblins, rotworms... good place for starters, too.", }, canBeSailed = true, isPremium = true, message = "So it's Edron, the city you chose as your new home?", - destination = { x = 33175, y = 31764, z = 6 } + destination = { x = 33175, y = 31764, z = 6 }, }, [TOWNS_LIST.KAZORDOON] = { name = "Kazordoon", about = { "The underground dwarven city. Doesn't have a real harbour, so I can't bring you there, sorry." }, - canBeSailed = false + canBeSailed = false, }, [TOWNS_LIST.LIBERTY_BAY] = { name = "Liberty Bay", about = { "Liberty Bay is on an island group in the South Seas. Ah, home sweet home. Err. I mean, \z - it's pirates galore. Good deal of tortoises, too. Just be careful, then it's a good hunting location." + it's pirates galore. Good deal of tortoises, too. Just be careful, then it's a good hunting location.", }, canBeSailed = true, isPremium = true, message = "So it's Liberty Bay, the city you chose as your new home?", - destination = { x = 32285, y = 32892, z = 6 } + destination = { x = 32285, y = 32892, z = 6 }, }, [TOWNS_LIST.PORT_HOPE] = { name = "Port Hope", about = { "Port Hope is an outpost right in the middle of the jungle. ...", "Apes, bananas, hydras, tarantulas... Who'd want to go there? \z - Except for crazy adventurers like these guys here on the island, obviously." + Except for crazy adventurers like these guys here on the island, obviously.", }, canBeSailed = true, isPremium = true, message = "So it's Port Hope, the city you chose as your new home?", - destination = { x = 32527, y = 32784, z = 6 } + destination = { x = 32527, y = 32784, z = 6 }, }, [TOWNS_LIST.SVARGROND] = { name = "Svargrond", about = { "Negative, can't bring you there. You gotta pass some sort of Barbarian test \z - before they let you live there. Still, you should go there sometime, I heard it's quite interesting." + before they let you live there. Still, you should go there sometime, I heard it's quite interesting.", }, - canBeSailed = false + canBeSailed = false, }, [TOWNS_LIST.THAIS] = { name = "Thais", about = { "Old-school city. Actually the oldest main city in Tibia. \z - Be careful on those streets, there are bandits everywhere." + Be careful on those streets, there are bandits everywhere.", }, canBeSailed = true, isPremium = false, message = "So it's Thais, the oldest of the human kingdoms you chose as your new home?", - destination = { x = 32310, y = 32210, z = 6 } + destination = { x = 32310, y = 32210, z = 6 }, }, [TOWNS_LIST.VENORE] = { name = "Venore", about = { "Hohoh, one of the richest cities, filled with merchants and LOOT! Err. \z I mean, it is HIGHLY recommendable for unexperienced and first-time adventurers. \z - Don't know why they built it over a stinking swamp though." + Don't know why they built it over a stinking swamp though.", }, canBeSailed = true, isPremium = false, - message = - "So it's Venore, \z + message = "So it's Venore, \z the rich swamp city of traders, recommended for new heroes, that you chose as your new home?", - destination = { x = 32954, y = 32022, z = 6 } + destination = { x = 32954, y = 32022, z = 6 }, }, [TOWNS_LIST.YALAHAR] = { name = "Yalahar", about = { "Now that must be one of the biggest cities I've ever seen. \z Might be not cosy for a newcomer like yourself, though. And I can't sail there anyway... \z - they don't let everyone enter their fine pretty harbour, they're a bit particular." + they don't let everyone enter their fine pretty harbour, they're a bit particular.", }, - canBeSailed = false - } + canBeSailed = false, + }, } local defaultTown = TOWNS_LIST.THAIS @@ -211,7 +210,9 @@ local function buildStrings() if #townList == 1 then townNames[list] = townList[1] elseif #townList > 1 then - table.sort(townList, function(a, b) return a:upper() < b:upper() end) + table.sort(townList, function(a, b) + return a:upper() < b:upper() + end) local lastTown = table.remove(townList, #townList) townNames[list] = table.concat(townList, ", ") .. " or " .. lastTown end @@ -228,20 +229,22 @@ local function donationHandler(npc, creature, message, keywords, parameters, nod if (parameters.confirm ~= true) and (parameters.decline ~= true) then npcHandler:say("So you want to donate " .. (player:getMoney() - npcConfig.moneyToNeedDonation) .. " gold coins? \z The little kiddies are going to appreciate it.", npc, creature) - elseif (parameters.confirm == true) then + elseif parameters.confirm == true then if player:getMoney() > npcConfig.moneyToNeedDonation then player:removeMoney((player:getMoney() - npcConfig.moneyToNeedDonation)) npcHandler:say( "Well, that's really generous of you. That'll feed a lot of hungry mouths for a while. \z - Right, now which {city} did you say you wanted to go to?", npc, creature) + Right, now which {city} did you say you wanted to go to?", + npc, + creature + ) npcHandler:resetNpc(creature) else npcHandler:say("Well, har har. Very funny. Come on, pick up the gold you just dropped.", npc, creature) end - elseif (parameters.decline == true) then + elseif parameters.decline == true then if player:getMoney() > npcConfig.moneyToNeedDonation then - npcHandler:say( - "By tempest! What's all this gold weighing us down? Don't you think that's a little risky with all \z + npcHandler:say("By tempest! What's all this gold weighing us down? Don't you think that's a little risky with all \z these pirates around? You can take " .. npcConfig.moneyToNeedDonation .. " with you, but that's it. Drop the rest or {donate} it to the \z Adventurers' Orphans Fund, really.", npc, creature) end @@ -265,15 +268,17 @@ local function townTravelHandler(npc, creature, message, keywords, parameters, n elseif town.isPremium == true and not player:isPremium() then npcHandler:say( "Negative, can't bring you there without a premium account. \z - You should be glad you get to travel by ship - usually that's a premium service too, you know.", npc, creature) + You should be glad you get to travel by ship - usually that's a premium service too, you know.", + npc, + creature + ) else npcHandler:say(town.message .. " What do you say, {yes} or {no}?", npc, creature) end - elseif (parameters.confirm == true) then + elseif parameters.confirm == true then -- Handle money excess at confirm or it may be dropped and picked up in previous steps if player:getMoney() > npcConfig.moneyToNeedDonation then - npcHandler:say( - "By tempest! What's all this gold weighing us down? Don't you think that's a little risky with all \z + npcHandler:say("By tempest! What's all this gold weighing us down? Don't you think that's a little risky with all \z these pirates around? You can take " .. npcConfig.moneyToNeedDonation .. " with you, but that's it. Drop the rest or {donate} it to the \z Adventurers' Orphans Fund, really.", npc, creature) return true @@ -288,10 +293,13 @@ local function townTravelHandler(npc, creature, message, keywords, parameters, n player:setStorageValue(Storage.Dawnport.Mainland, 1) npcHandler:say( "Cast off! Don't forget to talk to the guide at the port for directions to nearest bars... err, shops and \z - bank and such!", npc, creature) + bank and such!", + npc, + creature + ) npcHandler:resetNpc(creature) npcHandler:removeInteraction(npc, creature) - elseif (parameters.decline == true) then + elseif parameters.decline == true then if player:isPremium() then npcHandler:say("Changed your mind? Which city do you want to head to, " .. townNames.premium .. "?", npc, creature) else @@ -308,103 +316,88 @@ local function townTravelHandler(npc, creature, message, keywords, parameters, n return true end -- Other topics -keywordHandler:addKeyword({ "name" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ruby Dreadnought. But it's Captain Dreadnought to you!" - }) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm captain of this little sloop here, the Sea Cat." - }) -keywordHandler:addKeyword({ "ship" }, StdModule.say, - { - npcHandler = npcHandler, - text = "She's pretty, isn't she? Will ship you safely to any port. Though a young landlubber such as you should \z - consider to travel to Thais first. The travel is for free. Just once though! You have to ask for a {passage}." - }) -keywordHandler:addKeyword({ "mainland" }, StdModule.say, - { - npcHandler = npcHandler, - text = "You chose a peaceful world. Not much danger from other adventurers. Just beware the monsters. \z - Want go there, ask for a {passage}." - }) -keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, - { - npcHandler = npcHandler, - text = "That old place? Sorry, I don't sail there, no loot to be had." - }) -keywordHandler:addKeyword({ "adventurers guild" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Those fellows help still green adventurers like you, so you learn the lay of the Tibian Mainlands. \z +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ruby Dreadnought. But it's Captain Dreadnought to you!", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm captain of this little sloop here, the Sea Cat.", +}) +keywordHandler:addKeyword({ "ship" }, StdModule.say, { + npcHandler = npcHandler, + text = "She's pretty, isn't she? Will ship you safely to any port. Though a young landlubber such as you should \z + consider to travel to Thais first. The travel is for free. Just once though! You have to ask for a {passage}.", +}) +keywordHandler:addKeyword({ "mainland" }, StdModule.say, { + npcHandler = npcHandler, + text = "You chose a peaceful world. Not much danger from other adventurers. Just beware the monsters. \z + Want go there, ask for a {passage}.", +}) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { + npcHandler = npcHandler, + text = "That old place? Sorry, I don't sail there, no loot to be had.", +}) +keywordHandler:addKeyword({ "adventurers guild" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Those fellows help still green adventurers like you, so you learn the lay of the Tibian Mainlands. \z With the adventurer's stone you can reach their guild hall from all major temples. ...", - "I recommend you travel there as soon as possible." - } - }) -keywordHandler:addKeyword({ "premium" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Some regions in the world can't be accessed by everyone. Gotta pay, you know? \z - If you spend some real cash for premium time, I can bring you to much more challenging locations." - }) -keywordHandler:addKeyword({ "tibia" }, StdModule.say, - { - npcHandler = npcHandler, - text = "That's what the whole place is called." - }) + "I recommend you travel there as soon as possible.", + }, +}) +keywordHandler:addKeyword({ "premium" }, StdModule.say, { + npcHandler = npcHandler, + text = "Some regions in the world can't be accessed by everyone. Gotta pay, you know? \z + If you spend some real cash for premium time, I can bring you to much more challenging locations.", +}) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { + npcHandler = npcHandler, + text = "That's what the whole place is called.", +}) -- Main topic nodes -local readyNode = keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Good. Got all you want to take to the mainland, {yes}? Gear, limbs, loot?" - }) -local notReadyNode = keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "What? Then what DO you want? Learn about the main Tibian {cities}?" - }) +local readyNode = keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Good. Got all you want to take to the mainland, {yes}? Gear, limbs, loot?", +}) +local notReadyNode = keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "What? Then what DO you want? Learn about the main Tibian {cities}?", +}) -- Main subtopic nodes -- hi, yes, ... -local defaultTownNode = readyNode:addChildKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Quick learner, good answer. For inexperienced newcomers, \z +local defaultTownNode = readyNode:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Quick learner, good answer. For inexperienced newcomers, \z I'd recommend the city of {" .. towns[defaultTown].name .. "}. Great place to start! ...", - "Though I can tell you about the other main Tibian {cities} too, if you wish. \z - So, ready to set sail for {" .. towns[defaultTown].name .. "}?" - } - }) -readyNode:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "While you take time to ponder, I will just stroll over there and pretend not to listen to you thinking.", - ungreet = true - }) + "Though I can tell you about the other main Tibian {cities} too, if you wish. \z + So, ready to set sail for {" .. towns[defaultTown].name .. "}?", + }, +}) +readyNode:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "While you take time to ponder, I will just stroll over there and pretend not to listen to you thinking.", + ungreet = true, +}) -- hi, no, ... -local aboutTownsNode = notReadyNode:addChildKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, I can tell you stuff about " .. townNames.all .. "." - }) -local aboutSailNode = notReadyNode:addChildKeyword({ "no" }, townTravelHandler, - { - sailableTowns = true, - text = "So you know it all, huh? Where do you want me to bring you to, kid? |TOWNS|?" - }) +local aboutTownsNode = notReadyNode:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, I can tell you stuff about " .. townNames.all .. ".", +}) +local aboutSailNode = notReadyNode:addChildKeyword({ "no" }, townTravelHandler, { + sailableTowns = true, + text = "So you know it all, huh? Where do you want me to bring you to, kid? |TOWNS|?", +}) -- hi, yes, yes, ... defaultTownNode:addChildKeyword({ "yes" }, townTravelHandler, { confirm = true, townId = defaultTown }) defaultTownNode:addAliasKeyword({ towns[defaultTown].name:lower() }) defaultTownNode:addChildKeyword({ "no" }, townTravelHandler, { decline = true }) -- Towns topic nodes -local townsNode = keywordHandler:addKeyword({ "cities" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Do you want to know about " .. townNames.all .. "?" - }) +local townsNode = keywordHandler:addKeyword({ "cities" }, StdModule.say, { + npcHandler = npcHandler, + text = "Do you want to know about " .. townNames.all .. "?", +}) for id, town in pairs(towns) do local townNode = KeywordNode:new({ town.name:lower() }, StdModule.say, { npcHandler = npcHandler, text = town.about }) townsNode:addChildKeywordNode(townNode) @@ -412,11 +405,10 @@ for id, town in pairs(towns) do end keywordHandler:addAliasKeyword({ "city" }) -- Sail topic nodes -local sailNode = keywordHandler:addKeyword({ "sail" }, StdModule.say, - { - npcHandler = npcHandler, - text = "So, you've decided on your new home city? Which one will it be?" - }) +local sailNode = keywordHandler:addKeyword({ "sail" }, StdModule.say, { + npcHandler = npcHandler, + text = "So, you've decided on your new home city? Which one will it be?", +}) local confirmNode = KeywordNode:new({ "yes" }, townTravelHandler, { confirm = true }) local declineNode = KeywordNode:new({ "no" }, townTravelHandler, { decline = true }) for id, town in pairs(towns) do @@ -429,20 +421,17 @@ end keywordHandler:addAliasKeyword({ "passage" }) keywordHandler:addAliasKeyword({ "travel" }) -- Donate topic nodes -local donateNode = keywordHandler:addKeyword({ "donate" }, donationHandler, {}, - function(player) return player:getMoney() > npcConfig.moneyToNeedDonation end -) +local donateNode = keywordHandler:addKeyword({ "donate" }, donationHandler, {}, function(player) + return player:getMoney() > npcConfig.moneyToNeedDonation +end) donateNode:addChildKeywordNode(KeywordNode:new({ "yes" }, donationHandler, { confirm = true })) donateNode:addChildKeywordNode(KeywordNode:new({ "no" }, donationHandler, { decline = true })) local function greetCallback(npc, creature) local playerId = creature:getId() local player = Player(creature) - npcHandler:setMessage( - MESSAGE_GREET, - "Well, well, a new " .. player:getVocation():getName():lower() .. "! Want me to bring you somewhere nice? \z - Just say {yes}." - ) + npcHandler:setMessage(MESSAGE_GREET, "Well, well, a new " .. player:getVocation():getName():lower() .. "! Want me to bring you somewhere nice? \z + Just say {yes}.") return true end @@ -459,22 +448,21 @@ local function creatureSayCallback(npc, creature, type, message) if #currentNode.children == 0 then npcHandler:say( "Kid, listen. Answering with a clear {yes} or {no} will get you much further in Tibia. \z - Most people are not as sharp-eared as I am. Got that?", npc, creature) + Most people are not as sharp-eared as I am. Got that?", + npc, + creature + ) elseif currentNode == readyNode then npcHandler:say("Errr... was that a foreign language? Could you just answer with a clear {yes} or {no}?", npc, creature) elseif currentNode == notReadyNode then - npcHandler:say( - "Aw, come on! Talk to me in human words! {Yes}, {no}, or mention a city's name, that kind of stuff.", npc, creature) + npcHandler:say("Aw, come on! Talk to me in human words! {Yes}, {no}, or mention a city's name, that kind of stuff.", npc, creature) end return true end npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) -npcHandler:setMessage( - MESSAGE_FAREWELL, - "You sure you want to spend time on this piece of rock? I can show you the world! Huh." -) +npcHandler:setMessage(MESSAGE_FAREWELL, "You sure you want to spend time on this piece of rock? I can show you the world! Huh.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/captain_fearless.lua b/data-otservbr-global/npc/captain_fearless.lua index c64be9c1c70..e9e53eae9bc 100644 --- a/data-otservbr-global/npc/captain_fearless.lua +++ b/data-otservbr-global/npc/captain_fearless.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 95, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passages to Thais, Carlin, Ab\'Dendriel, Krailos, Port Hope, Edron, Darashia, Liberty Bay, Svargrond, Gray Island, Yalahar and Ankrahmun.' } + { text = "Passages to Thais, Carlin, Ab'Dendriel, Krailos, Port Hope, Edron, Darashia, Liberty Bay, Svargrond, Gray Island, Yalahar and Ankrahmun." }, } local keywordHandler = KeywordHandler:new() @@ -59,48 +59,58 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, condition) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but I don\'t sail there.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('thais', 170, Position(32310, 32210, 6)) -addTravelKeyword('krailos', 185, Position(33493, 31712, 6)) -- {x = 33493, y = 31712, z = 6} -addTravelKeyword('carlin', 130, Position(32387, 31820, 6)) -addTravelKeyword('gray island', 150, Position(33196, 31984, 7)) -addTravelKeyword('ab\'dendriel', 90, Position(32734, 31668, 6)) -addTravelKeyword('edron', 40, Position(33173, 31764, 6)) -addTravelKeyword('port hope', 160, Position(32527, 32784, 6)) -addTravelKeyword('svargrond', 150, Position(32341, 31108, 6)) -addTravelKeyword('liberty bay', 180, Position(32285, 32892, 6)) -addTravelKeyword('yalahar', 185, Position(32816, 31272, 6), function(player) return player:getStorageValue(Storage.SearoutesAroundYalahar.Venore) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 end) -addTravelKeyword('ankrahmun', 150, Position(33092, 32883, 6)) -addTravelKeyword('issavi', 130, Position(33900, 31463, 6)) +addTravelKeyword("thais", 170, Position(32310, 32210, 6)) +addTravelKeyword("krailos", 185, Position(33493, 31712, 6)) -- {x = 33493, y = 31712, z = 6} +addTravelKeyword("carlin", 130, Position(32387, 31820, 6)) +addTravelKeyword("gray island", 150, Position(33196, 31984, 7)) +addTravelKeyword("ab'dendriel", 90, Position(32734, 31668, 6)) +addTravelKeyword("edron", 40, Position(33173, 31764, 6)) +addTravelKeyword("port hope", 160, Position(32527, 32784, 6)) +addTravelKeyword("svargrond", 150, Position(32341, 31108, 6)) +addTravelKeyword("liberty bay", 180, Position(32285, 32892, 6)) +addTravelKeyword("yalahar", 185, Position(32816, 31272, 6), function(player) + return player:getStorageValue(Storage.SearoutesAroundYalahar.Venore) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 +end) +addTravelKeyword("ankrahmun", 150, Position(33092, 32883, 6)) +addTravelKeyword("issavi", 130, Position(33900, 31463, 6)) -- Darashia -local travelNode = keywordHandler:addKeyword({ 'darashia' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to Darashia for |TRAVELCOST|?', cost = 60, discount = 'postman' }) -local childTravelNode = travelNode:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'I warn you! This route is haunted by a ghostship. Do you really want to go there?' }) -childTravelNode:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 60, discount = 'postman', destination = function(player) return math.random(10) == 1 and Position(33324, 32173, 6) or Position(33289, 32481, 6) end }) -childTravelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'We would like to serve you some time.' }) -travelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'We would like to serve you some time.' }) +local travelNode = keywordHandler:addKeyword({ "darashia" }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to Darashia for |TRAVELCOST|?", cost = 60, discount = "postman" }) +local childTravelNode = travelNode:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "I warn you! This route is haunted by a ghostship. Do you really want to go there?" }) +childTravelNode:addChildKeyword({ "yes" }, StdModule.travel, { + npcHandler = npcHandler, + premium = false, + cost = 60, + discount = "postman", + destination = function(player) + return math.random(10) == 1 and Position(33324, 32173, 6) or Position(33289, 32481, 6) + end, +}) +childTravelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "We would like to serve you some time." }) +travelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "We would like to serve you some time." }) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32952, 32031, 6), Position(32955, 32031, 6), Position(32957, 32032, 6) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32952, 32031, 6), Position(32955, 32031, 6), Position(32957, 32032, 6) } }) -- Basic -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Issavi}, {krailos}, {Thais}, {Carlin}, {Ab\'Dendriel}, {Port Hope}, {Edron}, {Darashia}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Gray Island} or {Ankrahmun}?' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Issavi} {krailos}, {Thais}, {Carlin}, {Ab\'Dendriel}, {Port Hope}, {Edron}, {Darashia}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Gray Island} or {Ankrahmun}?' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'venore' }, StdModule.say, { npcHandler = npcHandler, text = 'This is Venore. Where do you want to go?' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Captain Fearless from the Royal Tibia Line.' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome on board, |PLAYERNAME|. Where can I {sail} you today?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Issavi}, {krailos}, {Thais}, {Carlin}, {Ab'Dendriel}, {Port Hope}, {Edron}, {Darashia}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Gray Island} or {Ankrahmun}?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Issavi} {krailos}, {Thais}, {Carlin}, {Ab'Dendriel}, {Port Hope}, {Edron}, {Darashia}, {Liberty Bay}, {Svargrond}, {Yalahar}, {Gray Island} or {Ankrahmun}?" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "venore" }, StdModule.say, { npcHandler = npcHandler, text = "This is Venore. Where do you want to go?" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Captain Fearless from the Royal Tibia Line." }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. Where can I {sail} you today?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/captain_greyhound.lua b/data-otservbr-global/npc/captain_greyhound.lua index 3a1d72f55e5..9f42bf412ed 100644 --- a/data-otservbr-global/npc/captain_greyhound.lua +++ b/data-otservbr-global/npc/captain_greyhound.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 95, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,49 +53,51 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, condition) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but I don\'t sail there.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('thais', 110, Position(32310, 32210, 6)) -addTravelKeyword('ab\'dendriel', 80, Position(32734, 31668, 6)) -addTravelKeyword('edron', 110, Position(33175, 31764, 6)) -addTravelKeyword('venore', 130, Position(32954, 32022, 6)) -addTravelKeyword('svargrond', 110, Position(32341, 31108, 6)) -addTravelKeyword('yalahar', 185, Position(32816, 31272, 6), function(player) return player:getStorageValue(Storage.SearoutesAroundYalahar.Carlin) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 end) +addTravelKeyword("thais", 110, Position(32310, 32210, 6)) +addTravelKeyword("ab'dendriel", 80, Position(32734, 31668, 6)) +addTravelKeyword("edron", 110, Position(33175, 31764, 6)) +addTravelKeyword("venore", 130, Position(32954, 32022, 6)) +addTravelKeyword("svargrond", 110, Position(32341, 31108, 6)) +addTravelKeyword("yalahar", 185, Position(32816, 31272, 6), function(player) + return player:getStorageValue(Storage.SearoutesAroundYalahar.Carlin) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 +end) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32384, 31815, 6), Position(32387, 31815, 6), Position(32390, 31815, 6) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32384, 31815, 6), Position(32387, 31815, 6), Position(32390, 31815, 6) } }) -- Basic -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "My name is Captain Greyhound from the Royal Tibia Line." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this sailing-ship." }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this sailing-ship." }) -keywordHandler:addKeyword({ 'ship' }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) -keywordHandler:addKeyword({ 'line' }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) -keywordHandler:addKeyword({ 'company' }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) -keywordHandler:addKeyword({ 'route' }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) -keywordHandler:addKeyword({ 'good' }, StdModule.say, { npcHandler = npcHandler, text = "We can transport everything you want." }) -keywordHandler:addKeyword({ 'passenger' }, StdModule.say, { npcHandler = npcHandler, text = "We would like to welcome you on board." }) -keywordHandler:addKeyword({ 'trip' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Ab\'Dendriel}, {Venore}, {Svargrond}, {Yalahar} or {Edron?}" }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Ab\'Dendriel}, {Venore}, {Svargrond}, {Yalahar} or {Edron?}" }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Ab\'Dendriel}, {Venore}, {Svargrond}, {Yalahar} or {Edron?}" }) -keywordHandler:addKeyword({ 'destination' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Ab\'Dendriel}, {Venore}, {Svargrond}, {Yalahar} or {Edron?}" }) -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Ab\'Dendriel}, {Venore}, {Svargrond}, {Yalahar} or {Edron?}" }) -keywordHandler:addKeyword({ 'go' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Ab\'Dendriel}, {Venore}, {Svargrond}, {Yalahar} or {Edron?}" }) -keywordHandler:addKeyword({ 'ice' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) -keywordHandler:addKeyword({ 'senja' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) -keywordHandler:addKeyword({ 'folda' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) -keywordHandler:addKeyword({ 'vega' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) -keywordHandler:addKeyword({ 'darashia' }, StdModule.say, { npcHandler = npcHandler, text = "I'm not sailing there. This route is afflicted by a ghost ship! However I've heard that Captain Fearless from Venore sails there." }) -keywordHandler:addKeyword({ 'darama' }, StdModule.say, { npcHandler = npcHandler, text = "I'm not sailing there. This route is afflicted by a ghost ship! However I've heard that Captain Fearless from Venore sails there." }) -keywordHandler:addKeyword({ 'ghost' }, StdModule.say, { npcHandler = npcHandler, text = "Many people who sailed to Darashia never returned because they were attacked by a ghostship! I'll never sail there!" }) -keywordHandler:addKeyword({ 'carlin' }, StdModule.say, { npcHandler = npcHandler, text = "This is Carlin. Where do you want to go?" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Captain Greyhound from the Royal Tibia Line." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this sailing-ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this sailing-ship." }) +keywordHandler:addKeyword({ "ship" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "line" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "company" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "route" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "good" }, StdModule.say, { npcHandler = npcHandler, text = "We can transport everything you want." }) +keywordHandler:addKeyword({ "passenger" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to welcome you on board." }) +keywordHandler:addKeyword({ "trip" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Ab'Dendriel}, {Venore}, {Svargrond}, {Yalahar} or {Edron?}" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Ab'Dendriel}, {Venore}, {Svargrond}, {Yalahar} or {Edron?}" }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Ab'Dendriel}, {Venore}, {Svargrond}, {Yalahar} or {Edron?}" }) +keywordHandler:addKeyword({ "destination" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Ab'Dendriel}, {Venore}, {Svargrond}, {Yalahar} or {Edron?}" }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Ab'Dendriel}, {Venore}, {Svargrond}, {Yalahar} or {Edron?}" }) +keywordHandler:addKeyword({ "go" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Ab'Dendriel}, {Venore}, {Svargrond}, {Yalahar} or {Edron?}" }) +keywordHandler:addKeyword({ "ice" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) +keywordHandler:addKeyword({ "senja" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) +keywordHandler:addKeyword({ "folda" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) +keywordHandler:addKeyword({ "vega" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) +keywordHandler:addKeyword({ "darashia" }, StdModule.say, { npcHandler = npcHandler, text = "I'm not sailing there. This route is afflicted by a ghost ship! However I've heard that Captain Fearless from Venore sails there." }) +keywordHandler:addKeyword({ "darama" }, StdModule.say, { npcHandler = npcHandler, text = "I'm not sailing there. This route is afflicted by a ghost ship! However I've heard that Captain Fearless from Venore sails there." }) +keywordHandler:addKeyword({ "ghost" }, StdModule.say, { npcHandler = npcHandler, text = "Many people who sailed to Darashia never returned because they were attacked by a ghostship! I'll never sail there!" }) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { npcHandler = npcHandler, text = "This is Carlin. Where do you want to go?" }) npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. Where can I {sail} you today?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") diff --git a/data-otservbr-global/npc/captain_gulliver.lua b/data-otservbr-global/npc/captain_gulliver.lua index b4d2d50322e..1d8ff1b4349 100644 --- a/data-otservbr-global/npc/captain_gulliver.lua +++ b/data-otservbr-global/npc/captain_gulliver.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 20, lookFeet = 39, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passages to Thais and Krailos! Visit the strange lands!' } + { text = "Passages to Thais and Krailos! Visit the strange lands!" }, } local keywordHandler = KeywordHandler:new() @@ -58,39 +58,39 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, action) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }, nil, action) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }, nil, action) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('thais', 150, Position(32311, 32210, 6)) -addTravelKeyword('krailos', 180, Position(33493, 31712, 6)) -addTravelKeyword('issavi', 130, Position(33902, 31462, 6)) +addTravelKeyword("thais", 150, Position(32311, 32210, 6)) +addTravelKeyword("krailos", 180, Position(33493, 31712, 6)) +addTravelKeyword("issavi", 130, Position(33902, 31462, 6)) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33487, 31986, 7), Position(33486, 31984, 7) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33487, 31986, 7), Position(33486, 31984, 7) } }) -- Basic -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you may not have heard of me. I am Captain Gulliver, the first Oramondian for a hundred years to have sailed through the mist to your strange lands.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of the \'Sea Goddess\', the splendid and beautiful ship you see over there.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of the \'Sea Goddess\', the splendid and beautiful ship you see over there.' }) -keywordHandler:addKeyword({ 'ship' }, StdModule.say, { npcHandler = npcHandler, text = 'The \'Sea Goddess\' is the most beautiful in Oramond, a whole new model of ship, elegant, sure and swift. There\'s no weather she can\'t take!' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, your lands are quite a sight! I have only visited Thais so far, but I think of navigating to more cities, when the time - and public demand - comes.' }) -keywordHandler:addKeyword({ 'good' }, StdModule.say, { npcHandler = npcHandler, text = 'I will gladly take on board everything you wish to transport. No pets, though.' }) -keywordHandler:addKeyword({ 'passenger' }, StdModule.say, { npcHandler = npcHandler, text = ' I would be delighted to have you on board.' }) - -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'You would like to book a passage for {Thais} or {Krailos}?' }) -keywordHandler:addKeyword({ 'route' }, StdModule.say, { npcHandler = npcHandler, text = 'You would like to book a passage for {Thais} or {Krailos}?' }) -keywordHandler:addKeyword({ 'trip' }, StdModule.say, { npcHandler = npcHandler, text = 'You would like to book a passage for {Thais} or {Krailos}?' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'You would like to book a passage for {Thais} or {Krailos}?' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'You would like to book a passage for {Thais} or {Krailos}?' }) -keywordHandler:addKeyword({ 'destination' }, StdModule.say, { npcHandler = npcHandler, text = 'You would like to book a passage for {Thais} or {Krailos}?' }) -keywordHandler:addKeyword({ 'go' }, StdModule.say, { npcHandler = npcHandler, text = 'You would like to book a passage for {Thais} or {Krailos}?' }) - -keywordHandler:addKeyword({ 'oramond' }, StdModule.say, { npcHandler = npcHandler, text = 'This is the only safe landing place on Oramond. The cliffs surrounding the isle are too dangerous, you see.' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome on board, Sir |PLAYERNAME|. Where can I {sail} you today?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you may not have heard of me. I am Captain Gulliver, the first Oramondian for a hundred years to have sailed through the mist to your strange lands." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of the 'Sea Goddess', the splendid and beautiful ship you see over there." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of the 'Sea Goddess', the splendid and beautiful ship you see over there." }) +keywordHandler:addKeyword({ "ship" }, StdModule.say, { npcHandler = npcHandler, text = "The 'Sea Goddess' is the most beautiful in Oramond, a whole new model of ship, elegant, sure and swift. There's no weather she can't take!" }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, your lands are quite a sight! I have only visited Thais so far, but I think of navigating to more cities, when the time - and public demand - comes." }) +keywordHandler:addKeyword({ "good" }, StdModule.say, { npcHandler = npcHandler, text = "I will gladly take on board everything you wish to transport. No pets, though." }) +keywordHandler:addKeyword({ "passenger" }, StdModule.say, { npcHandler = npcHandler, text = " I would be delighted to have you on board." }) + +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "You would like to book a passage for {Thais} or {Krailos}?" }) +keywordHandler:addKeyword({ "route" }, StdModule.say, { npcHandler = npcHandler, text = "You would like to book a passage for {Thais} or {Krailos}?" }) +keywordHandler:addKeyword({ "trip" }, StdModule.say, { npcHandler = npcHandler, text = "You would like to book a passage for {Thais} or {Krailos}?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "You would like to book a passage for {Thais} or {Krailos}?" }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "You would like to book a passage for {Thais} or {Krailos}?" }) +keywordHandler:addKeyword({ "destination" }, StdModule.say, { npcHandler = npcHandler, text = "You would like to book a passage for {Thais} or {Krailos}?" }) +keywordHandler:addKeyword({ "go" }, StdModule.say, { npcHandler = npcHandler, text = "You would like to book a passage for {Thais} or {Krailos}?" }) + +keywordHandler:addKeyword({ "oramond" }, StdModule.say, { npcHandler = npcHandler, text = "This is the only safe landing place on Oramond. The cliffs surrounding the isle are too dangerous, you see." }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, Sir |PLAYERNAME|. Where can I {sail} you today?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/captain_haba.lua b/data-otservbr-global/npc/captain_haba.lua index 40f79a47150..559f7d16377 100644 --- a/data-otservbr-global/npc/captain_haba.lua +++ b/data-otservbr-global/npc/captain_haba.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -29,7 +29,7 @@ npcConfig.voices = { { text = "Is this a mutiny or what? Move, move!!" }, { text = "In the rigging ya lazy fools!" }, { text = "I wanna see you movin' ya lazy fools!!" }, - { text = "Full sails!! There's a sea serpent to catch!!" } + { text = "Full sails!! There's a sea serpent to catch!!" }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/captain_haba_open_sea.lua b/data-otservbr-global/npc/captain_haba_open_sea.lua index 36c19bb553b..5516c8077b6 100644 --- a/data-otservbr-global/npc/captain_haba_open_sea.lua +++ b/data-otservbr-global/npc/captain_haba_open_sea.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -67,19 +67,22 @@ local randomMessages = { "STRAIGHT AHED!! WHY DOES THIS TAKE SO LONG?!? HURRY UP!", "LOOKOUT REPORTS SEA SERPENT ON SIGHT!! STRAIGHT AHEAD!!", "GO GO GO, SEA SERPENT STRAIGHT AHEAD!!", - "SET FULL SAILS! SEA SERPENT RIGHT IN FRONT OF US!!" }, + "SET FULL SAILS! SEA SERPENT RIGHT IN FRONT OF US!!", + }, starboard = { "SET FULL SAILS! SEA SERPENT ON THE STARBOARD SIDE!!", "LOOKOUT REPORTS SEA SERPENT ON SIGHT!! SEA SERPENT ON THE STARBOARD SIEDE!!", "COME ON YOU LAZY FOOLS!! SEA SERPENT ON THE STARBOARD SIDE!!", "GO GO GO, SEA SERPENT ON THE STARBOARD SIDE!!", - "CHANGE COURSE TO STARBOARD!! WHY DOES THIS TAKE SO LONG?!? HURRY UP!" }, + "CHANGE COURSE TO STARBOARD!! WHY DOES THIS TAKE SO LONG?!? HURRY UP!", + }, larboard = { "SET FULL SAILS! SEA SERPENT ON THE LARBOARD SIDE!!", "SEA SERPENT AHEAD!! LARBOARD SIDE!!", "SEA SERPENT ON SIGHT!! TO THE LARBOARD SIDE, FAST!", "LARBOARD!! THY DOES THIS TAKE SO LONG?!? LET'S GET IT ON!", - "LET'S GO YOU LAZY FOOLS. WE GOT A SEA SERPENT TO CATCH! TO LARBOARD SIDE, GO, GO, GO!" } + "LET'S GO YOU LAZY FOOLS. WE GOT A SEA SERPENT TO CATCH! TO LARBOARD SIDE, GO, GO, GO!", + }, } local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -94,7 +97,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "A'right, first of all you need a bait which isn't for free, though. I sell them for 50 gold each. Use the bait on the crane over there when you see something in the telescope. ...", "Then go up to the lookout and check the telescope for a sight of the sea serpent. ...", - "If you see it in front of ya, get down at once. And what d'ya gonna say to me?" }, npc, creature) + "If you see it in front of ya, get down at once. And what d'ya gonna say to me?", + }, npc, creature) npcHandler:setTopic(playerId, 1) elseif npcHandler:getTopic(playerId) == 1 and message:lower() ~= "straight" then npcHandler:say("Harharhar, landlubber, no no!! The correct command would be STRAIGHT. Remember that! Next, what you gonna say when you see something to left?", npc, creature) @@ -105,7 +109,8 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 1 and message:lower() ~= "starboard" then npcHandler:say({ "Ya gotta learn a lot! The correct command would be STARBOARD side. ...", - "After you told me about the direction, put a bait on the crane again and go up to the lookout! That would be all sailor, let's go hunt down the sea serpent!!" }, npc, creature) + "After you told me about the direction, put a bait on the crane again and go up to the lookout! That would be all sailor, let's go hunt down the sea serpent!!", + }, npc, creature) npcHandler:setTopic(playerId, 0) elseif MsgContains(message:lower(), "straight") then randomMessagesResult = randomMessages.straight[math.random(#randomMessages.straight)] @@ -174,7 +179,7 @@ npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "bait", clientId = 939, buy = 50 } + { itemName = "bait", clientId = 939, buy = 50 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -185,7 +190,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/captain_harava.lua b/data-otservbr-global/npc/captain_harava.lua index 4a5135bc5aa..776434d5dad 100644 --- a/data-otservbr-global/npc/captain_harava.lua +++ b/data-otservbr-global/npc/captain_harava.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 101, lookLegs = 3, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Come on board! The winds are prosperous!' } + { text = "Come on board! The winds are prosperous!" }, } local keywordHandler = KeywordHandler:new() @@ -59,34 +59,34 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, action, condition) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but I don\'t sail there.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }, nil, action) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }, nil, action) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('darashia', 80, Position(33289, 32481, 6)) -addTravelKeyword('venore', 80, Position(32954, 32022, 6)) -addTravelKeyword('oramond', 100, Position(33479, 31985, 7)) -addTravelKeyword('krailos', 80, Position(33492, 31712, 6)) +addTravelKeyword("darashia", 80, Position(33289, 32481, 6)) +addTravelKeyword("venore", 80, Position(32954, 32022, 6)) +addTravelKeyword("oramond", 100, Position(33479, 31985, 7)) +addTravelKeyword("krailos", 80, Position(33492, 31712, 6)) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33897, 31471, 6), Position(33901, 31471, 6) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33897, 31471, 6), Position(33901, 31471, 6) } }) -- Basic -keywordHandler:addKeyword({ 'trip' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}.' }) -keywordHandler:addKeyword({ 'route' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}.' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}.' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}.' }) -keywordHandler:addKeyword({ 'destination' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}.' }) -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}.' }) -keywordHandler:addKeyword({ 'go' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}.' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome on board, traveller. Where can I {sail} you today?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +keywordHandler:addKeyword({ "trip" }, StdModule.say, { npcHandler = npcHandler, text = "I'm ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}." }) +keywordHandler:addKeyword({ "route" }, StdModule.say, { npcHandler = npcHandler, text = "I'm ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}." }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I'm ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}." }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "I'm ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}." }) +keywordHandler:addKeyword({ "destination" }, StdModule.say, { npcHandler = npcHandler, text = "I'm ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}." }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "I'm ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}." }) +keywordHandler:addKeyword({ "go" }, StdModule.say, { npcHandler = npcHandler, text = "I'm ready to bring you to {Oramond}, {Krailos}, {Venore} or {Darashia}." }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, traveller. Where can I {sail} you today?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/captain_jack.lua b/data-otservbr-global/npc/captain_jack.lua index 12f321c78d5..086f4e956e5 100644 --- a/data-otservbr-global/npc/captain_jack.lua +++ b/data-otservbr-global/npc/captain_jack.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 128, lookLegs = 95, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,12 +50,12 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -local travelNode = keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage back to Tibia?' }) -travelNode:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, level = 0, cost = 0, destination = Position(32204, 31756, 6) }) -travelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'We would like to serve you some time.' }) +local travelNode = keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage back to Tibia?" }) +travelNode:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, level = 0, cost = 0, destination = Position(32204, 31756, 6) }) +travelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "We would like to serve you some time." }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I can travel you to {Tibia}.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I can travel you to {Tibia}.' }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can travel you to {Tibia}." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I can travel you to {Tibia}." }) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/captain_jack_rat.lua b/data-otservbr-global/npc/captain_jack_rat.lua index e94a6e75168..538bc12b121 100644 --- a/data-otservbr-global/npc/captain_jack_rat.lua +++ b/data-otservbr-global/npc/captain_jack_rat.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/captain_kurt.lua b/data-otservbr-global/npc/captain_kurt.lua index 9aadbee23c0..5e607b67b5c 100644 --- a/data-otservbr-global/npc/captain_kurt.lua +++ b/data-otservbr-global/npc/captain_kurt.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/captain_max.lua b/data-otservbr-global/npc/captain_max.lua index 18e92a5c5ba..85a0af120bb 100644 --- a/data-otservbr-global/npc/captain_max.lua +++ b/data-otservbr-global/npc/captain_max.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 10, lookLegs = 56, lookFeet = 77, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Whoah. That was a large shadow passing by.' } + { text = "Whoah. That was a large shadow passing by." }, } local keywordHandler = KeywordHandler:new() @@ -57,26 +57,30 @@ npcType.onCloseChannel = function(npc, creature) end local function addTravelKeyword(keyword, text, cost, destination) - if keyword == 'calassa' then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but we don\'t serve this route.' }, function(player) return player:getStorageValue(Storage.ExplorerSociety.CalassaQuest) < 1 end) + if keyword == "calassa" then + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but we don't serve this route." }, function(player) + return player:getStorageValue(Storage.ExplorerSociety.CalassaQuest) < 1 + end) end - if keyword == 'yalahar' then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but we don\'t serve this route.' }, function(player) return player:getStorageValue(Storage.TheWayToYalahar.QuestLine) < 1 end) + if keyword == "yalahar" then + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but we don't serve this route." }, function(player) + return player:getStorageValue(Storage.TheWayToYalahar.QuestLine) < 1 + end) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = 'Hold on!', cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'You shouldn\'t miss the experience.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = "Hold on!", cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) end -addTravelKeyword('calassa', 'Should I bring you to Calassa for 200 gold?', 200, Position(31911, 32710, 6)) -addTravelKeyword('yalahar', 'That is quite a long unprofitable travel. I\'ll bring you to Yalahar for 400 gold though. Is that ok with you?', 400, Position(32816, 31272, 6)) +addTravelKeyword("calassa", "Should I bring you to Calassa for 200 gold?", 200, Position(31911, 32710, 6)) +addTravelKeyword("yalahar", "That is quite a long unprofitable travel. I'll bring you to Yalahar for 400 gold though. Is that ok with you?", 400, Position(32816, 31272, 6)) -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'Welcome on board, noble |PLAYERNAME|. I can bring you to {Calassa} or {Yalahar}, but only if you have the according mission from {Berenice} or {Wyrdin}.' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Welcome on board, noble |PLAYERNAME|. I can bring you to {Calassa} or {Yalahar}, but only if you have the according mission from {Berenice} or {Wyrdin}.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Welcome on board, noble |PLAYERNAME|. I can bring you to {Calassa} or {Yalahar}, but only if you have the according mission from {Berenice} or {Wyrdin}." }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Welcome on board, noble |PLAYERNAME|. I can bring you to {Calassa} or {Yalahar}, but only if you have the according mission from {Berenice} or {Wyrdin}." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) npcHandler:setMessage(MESSAGE_GREET, "Ahoy, |PLAYERNAME|. On a mission for the explorer society, eh?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") @@ -84,7 +88,7 @@ npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "helmet of the deep", clientId = 5460, buy = 5000 } + { itemName = "helmet of the deep", clientId = 5460, buy = 5000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -95,7 +99,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/captain_max_calassa.lua b/data-otservbr-global/npc/captain_max_calassa.lua index 3c8326b8be9..de57a2f1a14 100644 --- a/data-otservbr-global/npc/captain_max_calassa.lua +++ b/data-otservbr-global/npc/captain_max_calassa.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 10, lookLegs = 56, lookFeet = 77, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Whoah. That was a large shadow passing by.' } + { text = "Whoah. That was a large shadow passing by." }, } local keywordHandler = KeywordHandler:new() @@ -56,14 +56,14 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -local travelNode = keywordHandler:addKeyword({ 'liberty bay' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want go back to Liberty Bay?' }) -travelNode:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, level = 0, cost = 0, destination = Position(32298, 32895, 6) }) -travelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'Maybe another time, then.' }) +local travelNode = keywordHandler:addKeyword({ "liberty bay" }, StdModule.say, { npcHandler = npcHandler, text = "Do you want go back to Liberty Bay?" }) +travelNode:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, level = 0, cost = 0, destination = Position(32298, 32895, 6) }) +travelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "Maybe another time, then." }) -keywordHandler:addKeyword({ 'back' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want go back to {Liberty Bay}?' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Welcome on board, noble |PLAYERNAME|. I can bring you back to {Liberty Bay}. Do you want me to do it?' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) +keywordHandler:addKeyword({ "back" }, StdModule.say, { npcHandler = npcHandler, text = "Do you want go back to {Liberty Bay}?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Welcome on board, noble |PLAYERNAME|. I can bring you back to {Liberty Bay}. Do you want me to do it?" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) npcHandler:setMessage(MESSAGE_GREET, "Ahoy, |PLAYERNAME|. On a mission for the explorer society, eh?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") @@ -72,7 +72,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "helmet of the deep", clientId = 5460, sell = 5000 }, - { itemName = "helmet of the deep", clientId = 5460, buy = 5000 } + { itemName = "helmet of the deep", clientId = 5460, buy = 5000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -83,7 +83,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/captain_pelagia.lua b/data-otservbr-global/npc/captain_pelagia.lua index 6345298d5b7..4fc315b20f5 100644 --- a/data-otservbr-global/npc/captain_pelagia.lua +++ b/data-otservbr-global/npc/captain_pelagia.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 114, lookFeet = 85, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -29,7 +29,7 @@ local npcHandler = NpcHandler:new(keywordHandler) npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passages to Edron, Darashia, Oramond, Thais and Venore.' } + { text = "Passages to Edron, Darashia, Oramond, Thais and Venore." }, } local keywordHandler = KeywordHandler:new() @@ -61,39 +61,47 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('venore', 120, Position(32954, 32022, 6)) -- {x = 32954, y = 32022, z = 6} -addTravelKeyword('edron', 110, Position(33176, 31765, 6)) -- {x = 33176, y = 31765, z = 6} -addTravelKeyword('oramond', 70, Position(33479, 31985, 7)) -- {x = 33479, y = 31985, z = 7} -addTravelKeyword('darashia', 120, Position(33289, 32481, 6)) -- {x = 33289, y = 32481, z = 6} -addTravelKeyword('thais', 130, Position(32310, 32210, 6)) -- -addTravelKeyword('issavi', 130, Position(33902, 31464, 6)) +addTravelKeyword("venore", 120, Position(32954, 32022, 6)) -- {x = 32954, y = 32022, z = 6} +addTravelKeyword("edron", 110, Position(33176, 31765, 6)) -- {x = 33176, y = 31765, z = 6} +addTravelKeyword("oramond", 70, Position(33479, 31985, 7)) -- {x = 33479, y = 31985, z = 7} +addTravelKeyword("darashia", 120, Position(33289, 32481, 6)) -- {x = 33289, y = 32481, z = 6} +addTravelKeyword("thais", 130, Position(32310, 32210, 6)) -- +addTravelKeyword("issavi", 130, Position(33902, 31464, 6)) -- Darashia -local travelNode = keywordHandler:addKeyword({ 'darashia' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to Darashia for |TRAVELCOST|?', cost = 0, discount = 'postman' }) -local childTravelNode = travelNode:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'I warn you! This route is haunted by a ghostship. Do you really want to go there?' }) -childTravelNode:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 0, discount = 'postman', destination = function(player) return math.random(10) == 1 and Position(33324, 32173, 6) or Position(33289, 32481, 6) end }) -childTravelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'We would like to serve you some time.' }) -travelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'We would like to serve you some time.' }) +local travelNode = keywordHandler:addKeyword({ "darashia" }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to Darashia for |TRAVELCOST|?", cost = 0, discount = "postman" }) +local childTravelNode = travelNode:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "I warn you! This route is haunted by a ghostship. Do you really want to go there?" }) +childTravelNode:addChildKeyword({ "yes" }, StdModule.travel, { + npcHandler = npcHandler, + premium = false, + cost = 0, + discount = "postman", + destination = function(player) + return math.random(10) == 1 and Position(33324, 32173, 6) or Position(33289, 32481, 6) + end, +}) +childTravelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "We would like to serve you some time." }) +travelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "We would like to serve you some time." }) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33498, 31711, 6) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33498, 31711, 6) } }) -- Basic -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Edron}, {Darashia}, {Oramond} or {Venore}?' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Edron}, {Darashia}, {Oramond} or {Venore}?' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'venore' }, StdModule.say, { npcHandler = npcHandler, text = 'This is Venore. Where do you want to go?' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Captain Pelagia from the Royal Tibia Line.' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome on board, |PLAYERNAME|. Where can I {sail} you today?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Edron}, {Darashia}, {Oramond} or {Venore}?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Edron}, {Darashia}, {Oramond} or {Venore}?" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "venore" }, StdModule.say, { npcHandler = npcHandler, text = "This is Venore. Where do you want to go?" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Captain Pelagia from the Royal Tibia Line." }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. Where can I {sail} you today?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/captain_seagull.lua b/data-otservbr-global/npc/captain_seagull.lua index 928bb113187..f738a41a632 100644 --- a/data-otservbr-global/npc/captain_seagull.lua +++ b/data-otservbr-global/npc/captain_seagull.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 95, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,52 +53,54 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, condition) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but I don\'t sail there.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('thais', 130, Position(32310, 32210, 6)) -addTravelKeyword('carlin', 80, Position(32387, 31820, 6)) -addTravelKeyword('gray island', 150, Position(33196, 31984, 7)) -addTravelKeyword('edron', 70, Position(33175, 31764, 6)) -addTravelKeyword('venore', 90, Position(32954, 32022, 6)) -addTravelKeyword('yalahar', 160, Position(32816, 31272, 6), function(player) return player:getStorageValue(Storage.SearoutesAroundYalahar.AbDendriel) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 end) +addTravelKeyword("thais", 130, Position(32310, 32210, 6)) +addTravelKeyword("carlin", 80, Position(32387, 31820, 6)) +addTravelKeyword("gray island", 150, Position(33196, 31984, 7)) +addTravelKeyword("edron", 70, Position(33175, 31764, 6)) +addTravelKeyword("venore", 90, Position(32954, 32022, 6)) +addTravelKeyword("yalahar", 160, Position(32816, 31272, 6), function(player) + return player:getStorageValue(Storage.SearoutesAroundYalahar.AbDendriel) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 +end) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32724, 31669, 6), Position(32726, 31665, 6) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32724, 31669, 6), Position(32726, 31665, 6) } }) -- Basic -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "My name is Captain Seagull from the Royal Tibia Line." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this sailing-ship." }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this sailing-ship." }) -keywordHandler:addKeyword({ 'ship' }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) -keywordHandler:addKeyword({ 'line' }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) -keywordHandler:addKeyword({ 'company' }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) -keywordHandler:addKeyword({ 'route' }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) -keywordHandler:addKeyword({ 'good' }, StdModule.say, { npcHandler = npcHandler, text = "We can transport everything you want." }) -keywordHandler:addKeyword({ 'passanger' }, StdModule.say, { npcHandler = npcHandler, text = "We would like to welcome you on board." }) -keywordHandler:addKeyword({ 'trip' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Carlin}, {Venore}, {Yalahar}, {Edron} or {Gray Island}?" }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = "WWhere do you want to go? To {Thais}, {Carlin}, {Venore}, {Yalahar}, {Edron} or {Gray Island}?" }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Carlin}, {Venore}, {Yalahar}, {Edron} or {Gray Island}?" }) -keywordHandler:addKeyword({ 'destination' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Carlin}, {Venore}, {Yalahar}, {Edron} or {Gray Island}?" }) -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Carlin}, {Venore}, {Yalahar}, {Edron} or {Gray Island}?" }) -keywordHandler:addKeyword({ 'go' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Carlin}, {Venore}, {Yalahar}, {Edron} or {Gray Island}?" }) -keywordHandler:addKeyword({ 'ice' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) -keywordHandler:addKeyword({ 'senja' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) -keywordHandler:addKeyword({ 'folda' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) -keywordHandler:addKeyword({ 'vega' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) -keywordHandler:addKeyword({ 'ankrahmun' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve this route." }) -keywordHandler:addKeyword({ 'tiquanda' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve this route." }) -keywordHandler:addKeyword({ 'port hope' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve this route." }) -keywordHandler:addKeyword({ 'darashia' }, StdModule.say, { npcHandler = npcHandler, text = "I'm not sailing there. This route is afflicted by a ghost ship! However I've heard that Captain Fearless from Venore sails there." }) -keywordHandler:addKeyword({ 'darama' }, StdModule.say, { npcHandler = npcHandler, text = "I'm not sailing there. This route is afflicted by a ghost ship! However I've heard that Captain Fearless from Venore sails there." }) -keywordHandler:addKeyword({ 'ghost' }, StdModule.say, { npcHandler = npcHandler, text = "Many people who sailed to Darashia never returned because they were attacked by a ghostship! I'll never sail there!" }) -keywordHandler:addKeyword({ 'ab\'dendriel' }, StdModule.say, { npcHandler = npcHandler, text = "This is Ab\'Dendriel. Where do you want to go?" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Captain Seagull from the Royal Tibia Line." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this sailing-ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this sailing-ship." }) +keywordHandler:addKeyword({ "ship" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "line" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "company" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "route" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "The Royal Tibia Line connects all seaside towns of Tibia." }) +keywordHandler:addKeyword({ "good" }, StdModule.say, { npcHandler = npcHandler, text = "We can transport everything you want." }) +keywordHandler:addKeyword({ "passanger" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to welcome you on board." }) +keywordHandler:addKeyword({ "trip" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Carlin}, {Venore}, {Yalahar}, {Edron} or {Gray Island}?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "WWhere do you want to go? To {Thais}, {Carlin}, {Venore}, {Yalahar}, {Edron} or {Gray Island}?" }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Carlin}, {Venore}, {Yalahar}, {Edron} or {Gray Island}?" }) +keywordHandler:addKeyword({ "destination" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Carlin}, {Venore}, {Yalahar}, {Edron} or {Gray Island}?" }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Carlin}, {Venore}, {Yalahar}, {Edron} or {Gray Island}?" }) +keywordHandler:addKeyword({ "go" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}, {Carlin}, {Venore}, {Yalahar}, {Edron} or {Gray Island}?" }) +keywordHandler:addKeyword({ "ice" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) +keywordHandler:addKeyword({ "senja" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) +keywordHandler:addKeyword({ "folda" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) +keywordHandler:addKeyword({ "vega" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) +keywordHandler:addKeyword({ "ankrahmun" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve this route." }) +keywordHandler:addKeyword({ "tiquanda" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve this route." }) +keywordHandler:addKeyword({ "port hope" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve this route." }) +keywordHandler:addKeyword({ "darashia" }, StdModule.say, { npcHandler = npcHandler, text = "I'm not sailing there. This route is afflicted by a ghost ship! However I've heard that Captain Fearless from Venore sails there." }) +keywordHandler:addKeyword({ "darama" }, StdModule.say, { npcHandler = npcHandler, text = "I'm not sailing there. This route is afflicted by a ghost ship! However I've heard that Captain Fearless from Venore sails there." }) +keywordHandler:addKeyword({ "ghost" }, StdModule.say, { npcHandler = npcHandler, text = "Many people who sailed to Darashia never returned because they were attacked by a ghostship! I'll never sail there!" }) +keywordHandler:addKeyword({ "ab'dendriel" }, StdModule.say, { npcHandler = npcHandler, text = "This is Ab'Dendriel. Where do you want to go?" }) npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. Where can I {sail} you today?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") diff --git a/data-otservbr-global/npc/captain_seahorse.lua b/data-otservbr-global/npc/captain_seahorse.lua index af64049d1e1..05fc5c856e0 100644 --- a/data-otservbr-global/npc/captain_seahorse.lua +++ b/data-otservbr-global/npc/captain_seahorse.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 95, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,41 +52,40 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, action) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }, nil, action) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }, nil, action) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('venore', 40, Position(32954, 32022, 6), - function(player) - if player:getStorageValue(Storage.Postman.Mission01) == 3 then - player:setStorageValue(Storage.Postman.Mission01, 4) - end - end) -addTravelKeyword('thais', 160, Position(32310, 32210, 6)) -addTravelKeyword('carlin', 110, Position(32387, 31820, 6)) -addTravelKeyword('krailos', 185, Position(33493, 31712, 6)) -addTravelKeyword('ab\'dendriel', 70, Position(32734, 31668, 6)) -addTravelKeyword('gray island', 190, Position(33196, 31984, 7)) -addTravelKeyword('port hope', 150, Position(32527, 32784, 6)) -addTravelKeyword('liberty bay', 170, Position(32285, 32892, 6)) -addTravelKeyword('ankrahmun', 160, Position(33092, 32883, 6)) -addTravelKeyword('cormaya', 20, Position(33288, 31956, 6)) -addTravelKeyword('oramond', 200, Position(33479, 31985, 7)) +addTravelKeyword("venore", 40, Position(32954, 32022, 6), function(player) + if player:getStorageValue(Storage.Postman.Mission01) == 3 then + player:setStorageValue(Storage.Postman.Mission01, 4) + end +end) +addTravelKeyword("thais", 160, Position(32310, 32210, 6)) +addTravelKeyword("carlin", 110, Position(32387, 31820, 6)) +addTravelKeyword("krailos", 185, Position(33493, 31712, 6)) +addTravelKeyword("ab'dendriel", 70, Position(32734, 31668, 6)) +addTravelKeyword("gray island", 190, Position(33196, 31984, 7)) +addTravelKeyword("port hope", 150, Position(32527, 32784, 6)) +addTravelKeyword("liberty bay", 170, Position(32285, 32892, 6)) +addTravelKeyword("ankrahmun", 160, Position(33092, 32883, 6)) +addTravelKeyword("cormaya", 20, Position(33288, 31956, 6)) +addTravelKeyword("oramond", 200, Position(33479, 31985, 7)) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33174, 31773, 6), Position(33175, 31771, 6), Position(33177, 31772, 6) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33174, 31773, 6), Position(33175, 31771, 6), Position(33177, 31772, 6) } }) -- Basic -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Krailos}, {Thais}, {Carlin}, {Ab\'Dendriel}, {Venore}, {Port Hope}, {Ankrahmun}, {Liberty Bay}, {Gray Island} or the isle {Cormaya}?' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Krailos}, {Thais}, {Carlin}, {Ab\'Dendriel}, {Venore}, {Port Hope}, {Ankrahmun}, {Liberty Bay}, {Gray Island} or the isle {Cormaya}?' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Captain Seahorse from the Royal Tibia Line.' }) -keywordHandler:addKeyword({ 'edron' }, StdModule.say, { npcHandler = npcHandler, text = 'This is Edron. Where do you want to go?' }) -keywordHandler:addKeyword({ 'yalahar' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry, but we don\'t serve this route. However, I heard that Wyrdin here in Edron is looking for adventurers to go on a trip to Yalahar for him.' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome on board, |PLAYERNAME|. Where may I {sail} you today?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Krailos}, {Thais}, {Carlin}, {Ab'Dendriel}, {Venore}, {Port Hope}, {Ankrahmun}, {Liberty Bay}, {Gray Island} or the isle {Cormaya}?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Krailos}, {Thais}, {Carlin}, {Ab'Dendriel}, {Venore}, {Port Hope}, {Ankrahmun}, {Liberty Bay}, {Gray Island} or the isle {Cormaya}?" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Captain Seahorse from the Royal Tibia Line." }) +keywordHandler:addKeyword({ "edron" }, StdModule.say, { npcHandler = npcHandler, text = "This is Edron. Where do you want to go?" }) +keywordHandler:addKeyword({ "yalahar" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve this route. However, I heard that Wyrdin here in Edron is looking for adventurers to go on a trip to Yalahar for him." }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. Where may I {sail} you today?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/captain_sinbeard.lua b/data-otservbr-global/npc/captain_sinbeard.lua index 831b64eefa1..277d80544de 100644 --- a/data-otservbr-global/npc/captain_sinbeard.lua +++ b/data-otservbr-global/npc/captain_sinbeard.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 10, lookLegs = 56, lookFeet = 77, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,45 +53,47 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, condition) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but I don\'t sail there.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('edron', 160, Position(33175, 31764, 6)) -addTravelKeyword('venore', 150, Position(32954, 32022, 6)) -addTravelKeyword('port hope', 80, Position(32527, 32784, 6)) -addTravelKeyword('liberty bay', 90, Position(32285, 32892, 6)) -addTravelKeyword('darashia', 100, Position(33289, 32480, 6)) -addTravelKeyword('yalahar', 230, Position(32816, 31272, 6), function(player) return player:getStorageValue(Storage.SearoutesAroundYalahar.Ankrahmun) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 end) +addTravelKeyword("edron", 160, Position(33175, 31764, 6)) +addTravelKeyword("venore", 150, Position(32954, 32022, 6)) +addTravelKeyword("port hope", 80, Position(32527, 32784, 6)) +addTravelKeyword("liberty bay", 90, Position(32285, 32892, 6)) +addTravelKeyword("darashia", 100, Position(33289, 32480, 6)) +addTravelKeyword("yalahar", 230, Position(32816, 31272, 6), function(player) + return player:getStorageValue(Storage.SearoutesAroundYalahar.Ankrahmun) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 +end) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33082, 32879, 6), Position(33085, 32879, 6), Position(33085, 32881, 6) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33082, 32879, 6), Position(33085, 32879, 6), Position(33085, 32881, 6) } }) -- Basic -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I'm known all over the world as Captain Sinbeard" }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I'm the captain of this sailing ship" }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = "I'm the captain of this sailing ship" }) -keywordHandler:addKeyword({ 'ship' }, StdModule.say, { npcHandler = npcHandler, text = "My ship is the fastest in the whole world." }) -keywordHandler:addKeyword({ 'line' }, StdModule.say, { npcHandler = npcHandler, text = "My ship is the fastest in the whole world." }) -keywordHandler:addKeyword({ 'company' }, StdModule.say, { npcHandler = npcHandler, text = "My ship is the fastest in the whole world." }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = "My ship is the fastest in the whole world." }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) -keywordHandler:addKeyword({ 'passanger' }, StdModule.say, { npcHandler = npcHandler, text = "We would like to welcome you on board." }) -keywordHandler:addKeyword({ 'trip' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) -keywordHandler:addKeyword({ 'route' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) -keywordHandler:addKeyword({ 'destination' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) -keywordHandler:addKeyword({ 'go' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }) -keywordHandler:addKeyword({ 'carlin' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }) -keywordHandler:addKeyword({ 'ab\'dendriel' }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }) -keywordHandler:addKeyword({ 'ankrahmun' }, StdModule.say, { npcHandler = npcHandler, text = "That's where we are." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm known all over the world as Captain Sinbeard" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the captain of this sailing ship" }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the captain of this sailing ship" }) +keywordHandler:addKeyword({ "ship" }, StdModule.say, { npcHandler = npcHandler, text = "My ship is the fastest in the whole world." }) +keywordHandler:addKeyword({ "line" }, StdModule.say, { npcHandler = npcHandler, text = "My ship is the fastest in the whole world." }) +keywordHandler:addKeyword({ "company" }, StdModule.say, { npcHandler = npcHandler, text = "My ship is the fastest in the whole world." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "My ship is the fastest in the whole world." }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) +keywordHandler:addKeyword({ "passanger" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to welcome you on board." }) +keywordHandler:addKeyword({ "trip" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) +keywordHandler:addKeyword({ "route" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) +keywordHandler:addKeyword({ "destination" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) +keywordHandler:addKeyword({ "go" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Darashia}, {Venore}, {Liberty Bay}, {Port Hope}, {Yalahar} or {Edron}? Or to {Travora} - the island between the worlds?" }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }) +keywordHandler:addKeyword({ "ab'dendriel" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }) +keywordHandler:addKeyword({ "ankrahmun" }, StdModule.say, { npcHandler = npcHandler, text = "That's where we are." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, Sir |PLAYERNAME|. Where can I {sail} you today?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") diff --git a/data-otservbr-global/npc/captain_tiberius.lua b/data-otservbr-global/npc/captain_tiberius.lua index 1e0324f7314..f9953a7f336 100644 --- a/data-otservbr-global/npc/captain_tiberius.lua +++ b/data-otservbr-global/npc/captain_tiberius.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 79, lookLegs = 95, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/captain_waverider.lua b/data-otservbr-global/npc/captain_waverider.lua index 5445d3625ac..d69108b7a02 100644 --- a/data-otservbr-global/npc/captain_waverider.lua +++ b/data-otservbr-global/npc/captain_waverider.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,7 +54,7 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (MsgContains(message, "peg leg")) then + if MsgContains(message, "peg leg") then if player:getStorageValue(Storage.TheShatteredIsles.AccessToMeriana) == 1 then npcHandler:say("Ohhhh. So... you know who sent you so I sail you to you know where. It will cost 50 gold to cover my expenses. Is it that what you wish?", npc, creature) npcHandler:setTopic(playerId, 1) @@ -62,14 +62,14 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Sorry, my old ears can't hear you.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "passage")) then + elseif MsgContains(message, "passage") then npcHandler:say(" I knew someone else would claim all the treasure someday. But at least it will be you and not some greedy and selfish person. For a small fee of 200 gold pieces I will sail you to your rendezvous with fate. Do we have a deal?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif (MsgContains(message, "no")) then + elseif MsgContains(message, "no") then npcHandler:say("I have to admit this leaves me a bit puzzled.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then if player:removeMoneyBank(50) then npcHandler:say("And there we go!", npc, creature) player:teleportTo(Position(32346, 32625, 7)) @@ -79,7 +79,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("You don't have enough money.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 2) then + elseif npcHandler:getTopic(playerId) == 2 then if player:removeMoneyBank(200) then npcHandler:say("And there we go!", npc, creature) player:teleportTo(Position(32131, 32913, 7)) diff --git a/data-otservbr-global/npc/captain_waverider_island.lua b/data-otservbr-global/npc/captain_waverider_island.lua index ff56c28438b..8fd27ec5c3a 100644 --- a/data-otservbr-global/npc/captain_waverider_island.lua +++ b/data-otservbr-global/npc/captain_waverider_island.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,13 +50,13 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -local travelNode = keywordHandler:addKeyword({ 'liberty bay' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage back to Liberty Bay for |TRAVELCOST|?', cost = 0, discount = 'postman' }) -travelNode:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = 'postman', destination = Position(32349, 32856, 7) }) -travelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'We would like to serve you some time.' }) +local travelNode = keywordHandler:addKeyword({ "liberty bay" }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage back to Liberty Bay for |TRAVELCOST|?", cost = 0, discount = "postman" }) +travelNode:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 50, discount = "postman", destination = Position(32349, 32856, 7) }) +travelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "We would like to serve you some time." }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Liberty bay}?' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Liberty bay}?" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) npcHandler:setMessage(MESSAGE_GREET, "Greetings, daring adventurer. If you need a return {passage}, let me know.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") diff --git a/data-otservbr-global/npc/caramellia.lua b/data-otservbr-global/npc/caramellia.lua index ebc39b117e6..b45bae8d4e0 100644 --- a/data-otservbr-global/npc/caramellia.lua +++ b/data-otservbr-global/npc/caramellia.lua @@ -16,18 +16,18 @@ npcConfig.outfit = { lookBody = 34, lookLegs = 34, lookFeet = 34, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Can I finally have some peace...?' }, - { text = 'Please leave me alone in my mourning.' } + { text = "Can I finally have some peace...?" }, + { text = "Please leave me alone in my mourning." }, } local keywordHandler = KeywordHandler:new() @@ -57,16 +57,16 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'mourning' }, StdModule.say, { npcHandler = npcHandler, text = "All is lost. With {Winfred} dead, my love has died and I'm only an empty shell without hope or purpose." }) -keywordHandler:addKeyword({ 'port hope' }, StdModule.say, { npcHandler = npcHandler, text = "We put all our hope in this far away colony. Sadly, we never made it there and I will never know what our life would have been like in Port Hope." }) -keywordHandler:addKeyword({ 'druid' }, StdModule.say, { npcHandler = npcHandler, text = "I guess he was the one that put my father up to the whole thing. He spied on Winfred and me and it was certainly him that suggested my {imprisonment} in this tower." }) -keywordHandler:addKeyword({ 'imprisonment' }, StdModule.say, { npcHandler = npcHandler, text = "This forsaken place seems as remote from the rest of the world as my heart is." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "Please leave me alone in my mourning." }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = "The bustling streets of Thais are all but a faint memory to me." }) -keywordHandler:addKeyword({ 'carlin' }, StdModule.say, { npcHandler = npcHandler, text = "Carlin is a lovely and green city as far as I remember." }) -keywordHandler:addKeyword({ 'venore' }, StdModule.say, { npcHandler = npcHandler, text = "My father wanted me to marry a wealthy Venorean. He understood so little about love and the ways of the heart." }) -keywordHandler:addKeyword({ 'ab\'dendriel' }, StdModule.say, { npcHandler = npcHandler, text = "The city of the elves is an exotic wonder." }) -keywordHandler:addKeyword({ 'kazordoon' }, StdModule.say, { npcHandler = npcHandler, text = "The city is like the dwarfs that built it. Stony, never-changing and hard to understand for an outsider." }) +keywordHandler:addKeyword({ "mourning" }, StdModule.say, { npcHandler = npcHandler, text = "All is lost. With {Winfred} dead, my love has died and I'm only an empty shell without hope or purpose." }) +keywordHandler:addKeyword({ "port hope" }, StdModule.say, { npcHandler = npcHandler, text = "We put all our hope in this far away colony. Sadly, we never made it there and I will never know what our life would have been like in Port Hope." }) +keywordHandler:addKeyword({ "druid" }, StdModule.say, { npcHandler = npcHandler, text = "I guess he was the one that put my father up to the whole thing. He spied on Winfred and me and it was certainly him that suggested my {imprisonment} in this tower." }) +keywordHandler:addKeyword({ "imprisonment" }, StdModule.say, { npcHandler = npcHandler, text = "This forsaken place seems as remote from the rest of the world as my heart is." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Please leave me alone in my mourning." }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "The bustling streets of Thais are all but a faint memory to me." }) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { npcHandler = npcHandler, text = "Carlin is a lovely and green city as far as I remember." }) +keywordHandler:addKeyword({ "venore" }, StdModule.say, { npcHandler = npcHandler, text = "My father wanted me to marry a wealthy Venorean. He understood so little about love and the ways of the heart." }) +keywordHandler:addKeyword({ "ab'dendriel" }, StdModule.say, { npcHandler = npcHandler, text = "The city of the elves is an exotic wonder." }) +keywordHandler:addKeyword({ "kazordoon" }, StdModule.say, { npcHandler = npcHandler, text = "The city is like the dwarfs that built it. Stony, never-changing and hard to understand for an outsider." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -78,20 +78,20 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "winfred") then npcHandler:say({ - 'He was my one and only true love. He was a mere commoner and so my {father} forbid me to see him ...', - 'We met anyway, we had plans to flee to {Port Hope} and to start a new life there ...', - 'A {druid}, in service of my father, had spied on us. So they brought me here and locked me into this {tower}. The druid cast a spell on the plants at the entrance which kept everyone from entering the tower ...', - 'I could see Winfred from the window but he could not come to me. One day he disappeared. I knew immediately that something horrible had happened to him.' + "He was my one and only true love. He was a mere commoner and so my {father} forbid me to see him ...", + "We met anyway, we had plans to flee to {Port Hope} and to start a new life there ...", + "A {druid}, in service of my father, had spied on us. So they brought me here and locked me into this {tower}. The druid cast a spell on the plants at the entrance which kept everyone from entering the tower ...", + "I could see Winfred from the window but he could not come to me. One day he disappeared. I knew immediately that something horrible had happened to him.", }, npc, creature) elseif MsgContains(message, "father") then npcHandler:say({ - 'He wasn\'t a bad man. He was only misguided by false friends who told him what society expected of him ...', - 'By trying to uphold a respectable image in society, he ruined not only my life but also his own.' + "He wasn't a bad man. He was only misguided by false friends who told him what society expected of him ...", + "By trying to uphold a respectable image in society, he ruined not only my life but also his own.", }, npc, creature) elseif MsgContains(message, "tower") then npcHandler:say({ - 'Once, this tower has been my prison but after the death of Winfred it has become my refuge from the rest of the world. ...', - 'I welcome the loneliness here because it mirrors the state of my heart.' + "Once, this tower has been my prison but after the death of Winfred it has become my refuge from the rest of the world. ...", + "I welcome the loneliness here because it mirrors the state of my heart.", }, npc, creature) end return true diff --git a/data-otservbr-global/npc/carina.lua b/data-otservbr-global/npc/carina.lua index a3200cd2587..65d6ffa217c 100644 --- a/data-otservbr-global/npc/carina.lua +++ b/data-otservbr-global/npc/carina.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 70, lookLegs = 94, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,36 +58,36 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'precious necklace') then + if MsgContains(message, "precious necklace") then if player:getItemCount(7940) > 0 then - npcHandler:say('Would you like to buy my precious necklace for 5000 gold?', npc, creature) + npcHandler:say("Would you like to buy my precious necklace for 5000 gold?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'mouse') then - npcHandler:say('Wha ... What??? Are you saying you\'ve seen a mouse here??', npc, creature) + elseif MsgContains(message, "mouse") then + npcHandler:say("Wha ... What??? Are you saying you've seen a mouse here??", npc, creature) npcHandler:setTopic(playerId, 2) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then if player:removeMoneyBank(5000) then player:removeItem(7940, 1) player:addItem(7939, 1) - npcHandler:say('Here you go kind sir.', npc, creature) + npcHandler:say("Here you go kind sir.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 2 then if not player:removeItem(123, 1) then - npcHandler:say('There is no mouse here! Stop talking foolish things about serious issues!', npc, creature) + npcHandler:say("There is no mouse here! Stop talking foolish things about serious issues!", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:setStorageValue(Storage.WhatAFoolish.ScaredCarina, 1) - npcHandler:say('IIIEEEEEK!', npc, creature) + npcHandler:say("IIIEEEEEK!", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 2 then - npcHandler:say('Thank goodness!', npc, creature) + npcHandler:say("Thank goodness!", npc, creature) npcHandler:setTopic(playerId, 0) end end @@ -102,7 +102,7 @@ npcConfig.shop = { { itemName = "golden amulet", clientId = 3013, buy = 6600 }, { itemName = "precious necklace", clientId = 7939, buy = 5000 }, { itemName = "ruby necklace", clientId = 3016, buy = 3560 }, - { itemName = "wedding ring", clientId = 3004, buy = 990, sell = 100 } + { itemName = "wedding ring", clientId = 3004, buy = 990, sell = 100 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -113,7 +113,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/carlos.lua b/data-otservbr-global/npc/carlos.lua index 150c50f94ef..709ad1791a6 100644 --- a/data-otservbr-global/npc/carlos.lua +++ b/data-otservbr-global/npc/carlos.lua @@ -16,27 +16,27 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 86, lookFeet = 114, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Hmm, we should do something about your outfit.' }, - { text = 'Ah, another adventurer. Let\'s talk a little.' }, - { text = 'Psst! Come over here for a little trade.' }, - { text = 'Hello, hello! Don\'t be shy, I don\'t bite.' }, - { text = 'By the way, if you want to look at old hints again, find the \'Help\' button near your inventory and select \'Tutorial Hints\'.' } + { text = "Hmm, we should do something about your outfit." }, + { text = "Ah, another adventurer. Let's talk a little." }, + { text = "Psst! Come over here for a little trade." }, + { text = "Hello, hello! Don't be shy, I don't bite." }, + { text = "By the way, if you want to look at old hints again, find the 'Help' button near your inventory and select 'Tutorial Hints'." }, } -- Npc shop npcConfig.shop = { { itemName = "ham", clientId = 3582, sell = 2, count = 1 }, - { itemName = "meat", clientId = 3577, sell = 2, count = 1 } + { itemName = "meat", clientId = 3577, sell = 2, count = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -47,8 +47,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -183,7 +182,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Well, that's how trading with NPCs like me works. I think you are ready now to cross the bridge to Rookgaard, just follow the path to the northwest. Good luck, |PLAYERNAME|! ...", "And by the way: if you thought all of this was boring and you'd rather skip the tutorial with your next character, just say 'skip tutorial' to Santiago. ...", - "Then you'll miss out on those nice items and experience though. Hehehe! It's your choice. Well, take care for now!" + "Then you'll miss out on those nice items and experience though. Hehehe! It's your choice. Well, take care for now!", }, npc, creature) player:setStorageValue(Storage.RookgaardTutorialIsland.CarlosQuestLog, 7) player:setStorageValue(Storage.RookgaardTutorialIsland.CarlosNpcGreetStorage, 8) @@ -195,7 +194,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Well, that's how trading with NPCs like me works. I think you are ready now to cross the bridge to Rookgaard, just follow the path to the northwest. Good luck, |PLAYERNAME|! ...", "And by the way: if you thought all of this was boring and you'd rather skip the tutorial with your next character, just say 'skip tutorial' to Santiago. ...", - "Then you'll miss out on those nice items and experience though. Hehehe! It's your choice. Well, take care for now!" + "Then you'll miss out on those nice items and experience though. Hehehe! It's your choice. Well, take care for now!", }, npc, creature) player:setStorageValue(Storage.RookgaardTutorialIsland.CarlosQuestLog, 7) player:setStorageValue(Storage.RookgaardTutorialIsland.CarlosNpcGreetStorage, 8) @@ -208,7 +207,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Well, that's how trading with NPCs like me works. I think you are ready now to cross the bridge to Rookgaard, just follow the path to the northwest. Good luck, |PLAYERNAME|! ...", "And by the way: if you thought all of this was boring and you'd rather skip the tutorial with your next character, just say 'skip tutorial' to Santiago. ...", - "Then you'll miss out on those nice items and experience though. Hehehe! It's your choice. Well, take care for now!" + "Then you'll miss out on those nice items and experience though. Hehehe! It's your choice. Well, take care for now!", }, npc, creature) player:setStorageValue(Storage.RookgaardTutorialIsland.CarlosQuestLog, 7) player:setStorageValue(Storage.RookgaardTutorialIsland.CarlosNpcGreetStorage, 8) diff --git a/data-otservbr-global/npc/carlson.lua b/data-otservbr-global/npc/carlson.lua index be0ebbae30a..9e53df2e3d0 100644 --- a/data-otservbr-global/npc/carlson.lua +++ b/data-otservbr-global/npc/carlson.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 105, lookFeet = 86, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,17 +52,17 @@ end -- Travel local function addTravelKeyword(keyword, text, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want to sail ' .. text, cost = cost }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you want to sail " .. text, cost = cost }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('tibia', 'back to Tibia?', 0, Position(32235, 31674, 7)) -addTravelKeyword('senja', 'Senja for |TRAVELCOST|?', 20, Position(32128, 31664, 7)) -addTravelKeyword('folda', 'Folda for |TRAVELCOST|?', 20, Position(32046, 31578, 7)) +addTravelKeyword("tibia", "back to Tibia?", 0, Position(32235, 31674, 7)) +addTravelKeyword("senja", "Senja for |TRAVELCOST|?", 20, Position(32128, 31664, 7)) +addTravelKeyword("folda", "Folda for |TRAVELCOST|?", 20, Position(32046, 31578, 7)) -- Basic -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Folda}, {Senja} or {Tibia}?' }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Folda}, {Senja} or {Tibia}?" }) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/cassino.lua b/data-otservbr-global/npc/cassino.lua index e383646ac53..c424312f845 100644 --- a/data-otservbr-global/npc/cassino.lua +++ b/data-otservbr-global/npc/cassino.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 22, lookLegs = 24, lookFeet = 32, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local config = { @@ -32,7 +32,7 @@ local config = { }, playerPosition = Position(32352, 32226, 7), -- NpcPos(x-2) player must stay on this position to talk with npc dicerCounter = Position(32352, 32225, 7), -- NpcPos(x-1, y-1) counter position - diePos = Position(32354, 32225, 7) --NpcPos(y-1) + diePos = Position(32354, 32225, 7), --NpcPos(y-1) } local keywordHandler = KeywordHandler:new() @@ -86,7 +86,7 @@ local function getBetValue() for _, item in pairs(items) do if table.contains({ 3043, 3035, 3031 }, item:getId()) then value = value + getCoinValue(item:getId()) * item:getCount() - tempMoney[#tempMoney+1] = item + tempMoney[#tempMoney + 1] = item end end @@ -107,18 +107,18 @@ local function createMoney(money) currentMoney = currentMoney - crystals * 10000 while crystals > 0 do local count = math.min(100, crystals) - table[#table+1] = { 3043, count } + table[#table + 1] = { 3043, count } crystals = crystals - count end local platinums = math.floor(currentMoney / 100) if platinums ~= 0 then - table[#table+1] = { 3035, platinums } + table[#table + 1] = { 3035, platinums } currentMoney = currentMoney - platinums * 100 end if currentMoney ~= 0 then - table[#table+1] = { 3031, currentMoney } + table[#table + 1] = { 3031, currentMoney } end return table end @@ -248,8 +248,8 @@ local function creatureMoveCallback(npc, player, fromPosition, toPosition) end npcHandler:setMessage(MESSAGE_GREET, "Welcome to the Cassino! Here we play with: \n [PAYOUT 180%] {HIGH / LOW}: High for 4, 5, 6 and Low for 1, 2, and 3 - {ODD / EVEN }: Odd for 1, 3, 5 and Even for 2, 4 and 6 \n [PAYOUT 500%] {NUMBERS}: You choose the number, and if you get it right ... {$$$$$}") -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/cedrik.lua b/data-otservbr-global/npc/cedrik.lua index a160275dea9..923513e45fd 100644 --- a/data-otservbr-global/npc/cedrik.lua +++ b/data-otservbr-global/npc/cedrik.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 97, lookFeet = 59, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,86 +51,103 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Alia) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Alia) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Alia, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -234,7 +251,7 @@ npcConfig.shop = { { itemName = "viking shield", clientId = 3431, buy = 260 }, { itemName = "vortex bolt", clientId = 14252, buy = 6 }, { itemName = "war hammer", clientId = 3279, buy = 10000 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -245,7 +262,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/ceiron.lua b/data-otservbr-global/npc/ceiron.lua index a357bfa6f65..9a52c506291 100644 --- a/data-otservbr-global/npc/ceiron.lua +++ b/data-otservbr-global/npc/ceiron.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 100, lookLegs = 119, lookFeet = 116, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -85,7 +85,7 @@ local function creatureSayCallback(npc, creature, type, message) "However, these trickles are said to contain water as pure and clean as nowhere else in Tibia. ...", "If you could reach one of these trickles and retrieve a water sample for me, it would be a great help. ...", "It is important that you take the water directly from the trickle, not from the pond - else it will not be as pure anymore. ...", - "Have you understood everything I told you and will fulfil this task for me?" + "Have you understood everything I told you and will fulfil this task for me?", }, npc, creature) npcHandler:setTopic(playerId, 6) elseif player:getStorageValue(Storage.OutfitQuest.DruidHatAddon) == 4 then @@ -96,7 +96,7 @@ local function creatureSayCallback(npc, creature, type, message) "It does not work all the time, but if you succeed, their vicious spirit is finally defeated. ...", "I want proof that you are on the right side, against Zathroth. Bring me 100 ounces of demon dust and I shall be convinced. ...", "You will probably need to ask a priest for help to obtain a blessed stake. ...", - "Have you understood everything I told you and will fulfil this task for me?" + "Have you understood everything I told you and will fulfil this task for me?", }, npc, creature) npcHandler:setTopic(playerId, 8) elseif player:getStorageValue(Storage.OutfitQuest.DruidHatAddon) == 6 then @@ -105,7 +105,7 @@ local function creatureSayCallback(npc, creature, type, message) "Unfortunately, my intrusion was discovered and I had to run for my life. During my escape, I lost my favourite wolf tooth chain.", "It should still be somewhere in the fortress, if the orcs did not try to eat it. I really wish you could retrieve it for me.", "It has the letter 'C' carved into one of the teeth. Please look for it.", - "Have you understood everything I told you and will fulfil this task for me?" + "Have you understood everything I told you and will fulfil this task for me?", }, npc, creature) npcHandler:setTopic(playerId, 10) end @@ -136,7 +136,7 @@ local function creatureSayCallback(npc, creature, type, message) "This place is somewhere in the bleak mountains of Nargor. I would love to have a sample of its blossom, but the problem is that it seldom actually blooms. ...", "I cannot afford to travel there each day just to check whether the time has already come, besides I have no idea where to start looking. ...", "I would be deeply grateful if you could support me in this matter and collect a sample of the blooming Griffinclaw for me. ...", - "Have you understood everything I told you and will fullfil this task for me?" + "Have you understood everything I told you and will fullfil this task for me?", }, npc, creature) npcHandler:setTopic(playerId, 4) elseif npcHandler:getTopic(playerId) == 4 then diff --git a/data-otservbr-global/npc/cerdras.lua b/data-otservbr-global/npc/cerdras.lua index 9767300b2ee..bd7379ab26a 100644 --- a/data-otservbr-global/npc/cerdras.lua +++ b/data-otservbr-global/npc/cerdras.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 96, lookLegs = 41, lookFeet = 22, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,8 +50,8 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I'm merely a humble druid like so many others here. I may not be the most talented of healers, but I am gifted with a special atunement to the elements." }) -keywordHandler:addKeyword({ 'nature' }, StdModule.say, { npcHandler = npcHandler, text = "For me, nature is the harmony of the elements. This harmony can be disturbed by certain events, but nature always finds its way back to harmony in the end." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm merely a humble druid like so many others here. I may not be the most talented of healers, but I am gifted with a special atunement to the elements." }) +keywordHandler:addKeyword({ "nature" }, StdModule.say, { npcHandler = npcHandler, text = "For me, nature is the harmony of the elements. This harmony can be disturbed by certain events, but nature always finds its way back to harmony in the end." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -63,19 +63,19 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "elements") then npcHandler:say({ - 'How can I explain my connection to the elements so that you can understand it? Hmmm, it is like a faint melody, a song, that is always there. ...', - 'I hear that melody shifting in time with the shifts in the elements. With so many years of listening, I have learned to interpret these shifts and so come to a deeper understanding of the elements. ...', - 'It was a natural step for me to become responsible for researching elemental lore. I try to learn as much as I can and share it with my fellow druids. ...', - 'Unfortunately, much of my understanding is instinctive, and our language just doesn\'t contain the right words for me to express the things I feel adequately.' + "How can I explain my connection to the elements so that you can understand it? Hmmm, it is like a faint melody, a song, that is always there. ...", + "I hear that melody shifting in time with the shifts in the elements. With so many years of listening, I have learned to interpret these shifts and so come to a deeper understanding of the elements. ...", + "It was a natural step for me to become responsible for researching elemental lore. I try to learn as much as I can and share it with my fellow druids. ...", + "Unfortunately, much of my understanding is instinctive, and our language just doesn't contain the right words for me to express the things I feel adequately.", }, npc, creature) elseif MsgContains(message, "song") then npcHandler:say({ - 'It is hard to explain. Of course, it\'s not a real song as you would understand it. I don\'t hear it with my ears, but rather, I feel it deep inside of me. ...', - 'Calling it a song or melody is the best I can do to describe it to those who don\'t share this kind of perception. ...', - 'It also helps me to express and understand something for which our language has no appropriate expression. ...', - 'You know, we are so dependent on words that we can\'t think about concepts when we don\'t have words for them. ...', - 'I sometimes think words have become just as much of a hindrance as a help. ...', - 'Perhaps we would fare better if only we forgot words and dealt purely in feelings. Then perhaps all of us could hear the wonderful melody of nature.' + "It is hard to explain. Of course, it's not a real song as you would understand it. I don't hear it with my ears, but rather, I feel it deep inside of me. ...", + "Calling it a song or melody is the best I can do to describe it to those who don't share this kind of perception. ...", + "It also helps me to express and understand something for which our language has no appropriate expression. ...", + "You know, we are so dependent on words that we can't think about concepts when we don't have words for them. ...", + "I sometimes think words have become just as much of a hindrance as a help. ...", + "Perhaps we would fare better if only we forgot words and dealt purely in feelings. Then perhaps all of us could hear the wonderful melody of nature.", }, npc, creature) end return true diff --git a/data-otservbr-global/npc/cerebrir.lua b/data-otservbr-global/npc/cerebrir.lua index c5bc52d9c01..bc051ed0965 100644 --- a/data-otservbr-global/npc/cerebrir.lua +++ b/data-otservbr-global/npc/cerebrir.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 1067 + lookType = 1067, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/chantalle.lua b/data-otservbr-global/npc/chantalle.lua index bcc62a1655f..5805682e961 100644 --- a/data-otservbr-global/npc/chantalle.lua +++ b/data-otservbr-global/npc/chantalle.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 37, lookLegs = 71, lookFeet = 70, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,19 +58,19 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'key') then + if MsgContains(message, "key") then if player:getStorageValue(Storage.ThievesGuild.Mission06) == 1 then local headItem = player:getSlotItem(CONST_SLOT_HEAD) if headItem and headItem.itemid == 3576 and player:getStorageValue(Storage.Postman.Rank) == 5 and player:getSex() ~= PLAYERSEX_FEMALE then player:addItem(7934) player:setStorageValue(Storage.ThievesGuild.Mission06, 2) - npcHandler:say('Oh my! You look so great in your uniform! You archpostmen are not only daring but also handsome. Here take it, that\'s the key you wanted. Just promise to visit me now and then!', npc, creature) + npcHandler:say("Oh my! You look so great in your uniform! You archpostmen are not only daring but also handsome. Here take it, that's the key you wanted. Just promise to visit me now and then!", npc, creature) elseif player:removeItem(7939, 1) then player:addItem(7934) player:setStorageValue(Storage.ThievesGuild.Mission06, 2) - npcHandler:say('Oh my, such a lovely necklace! Here take it, that\'s the key you wanted. Now let me admire my precious necklace alone.', npc, creature) + npcHandler:say("Oh my, such a lovely necklace! Here take it, that's the key you wanted. Now let me admire my precious necklace alone.", npc, creature) else - npcHandler:say('I am sorry, I am not interested in your money. Maybe you should try your luck with Herbert, the postman instead.', npc, creature) + npcHandler:say("I am sorry, I am not interested in your money. Maybe you should try your luck with Herbert, the postman instead.", npc, creature) end end end @@ -141,7 +141,7 @@ npcConfig.shop = { { itemName = "watermelon tourmaline", clientId = 33780, sell = 230000 }, { itemName = "wedding ring", clientId = 3004, buy = 990 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -152,7 +152,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/charles.lua b/data-otservbr-global/npc/charles.lua index eb5bd758b07..a33f3188b2b 100644 --- a/data-otservbr-global/npc/charles.lua +++ b/data-otservbr-global/npc/charles.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 67, lookLegs = 95, lookFeet = 60, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passages to Thais, Darashia, Edron, Venore, Ankrahmun, Liberty Bay and Yalahar.' } + { text = "Passages to Thais, Darashia, Edron, Venore, Ankrahmun, Liberty Bay and Yalahar." }, } local keywordHandler = KeywordHandler:new() @@ -59,35 +59,39 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, condition) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but I don\'t sail there.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('edron', 150, Position(33173, 31764, 6)) -addTravelKeyword('venore', 160, Position(32954, 32022, 6)) -addTravelKeyword('yalahar', 260, Position(32816, 31272, 6), function(player) return player:getStorageValue(Storage.SearoutesAroundYalahar.PortHope) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 end) -addTravelKeyword('ankrahmun', 110, Position(33092, 32883, 6)) -addTravelKeyword('darashia', 180, Position(33289, 32480, 6)) -addTravelKeyword('thais', 160, Position(32310, 32210, 6)) -addTravelKeyword('liberty bay', 50, Position(32285, 32892, 6)) -addTravelKeyword('carlin', 120, Position(32387, 31820, 6)) -addTravelKeyword('shortcut', 100, Position(32029, 32466, 7), function(player) return player:getStorageValue(Storage.TheSecretLibrary.PinkTel) == 2 and player:getStorageValue(Storage.TheSecretLibrary.Mota) == 12 end) +addTravelKeyword("edron", 150, Position(33173, 31764, 6)) +addTravelKeyword("venore", 160, Position(32954, 32022, 6)) +addTravelKeyword("yalahar", 260, Position(32816, 31272, 6), function(player) + return player:getStorageValue(Storage.SearoutesAroundYalahar.PortHope) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 +end) +addTravelKeyword("ankrahmun", 110, Position(33092, 32883, 6)) +addTravelKeyword("darashia", 180, Position(33289, 32480, 6)) +addTravelKeyword("thais", 160, Position(32310, 32210, 6)) +addTravelKeyword("liberty bay", 50, Position(32285, 32892, 6)) +addTravelKeyword("carlin", 120, Position(32387, 31820, 6)) +addTravelKeyword("shortcut", 100, Position(32029, 32466, 7), function(player) + return player:getStorageValue(Storage.TheSecretLibrary.PinkTel) == 2 and player:getStorageValue(Storage.TheSecretLibrary.Mota) == 12 +end) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32535, 32792, 6), Position(32536, 32778, 6) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32535, 32792, 6), Position(32536, 32778, 6) } }) -- Basic -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go - {Thais}, {Darashia}, {Venore}, {Liberty Bay}, {Ankrahmun}, {Yalahar} or {Edron?}' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go - {Thais}, {Darashia}, {Venore}, {Liberty Bay}, {Ankrahmun}, {Yalahar} or {Edron?}' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'Im the captain of the Poodle, the proudest ship on all oceans.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'port hope' }, StdModule.say, { npcHandler = npcHandler, text = "That's where we are." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s Charles.' }) -keywordHandler:addKeyword({ 'svargrond' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry, but we don\'t serve the routes to the Ice Islands.' }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go - {Thais}, {Darashia}, {Venore}, {Liberty Bay}, {Ankrahmun}, {Yalahar} or {Edron?}" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go - {Thais}, {Darashia}, {Venore}, {Liberty Bay}, {Ankrahmun}, {Yalahar} or {Edron?}" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Im the captain of the Poodle, the proudest ship on all oceans." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "port hope" }, StdModule.say, { npcHandler = npcHandler, text = "That's where we are." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "It's Charles." }) +keywordHandler:addKeyword({ "svargrond" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but we don't serve the routes to the Ice Islands." }) npcHandler:setMessage(MESSAGE_GREET, "Ahoy. Where can I sail you today?") npcHandler:setMessage(MESSAGE_FAREWELL, "Bye.") diff --git a/data-otservbr-global/npc/charlotta.lua b/data-otservbr-global/npc/charlotta.lua index 7ad2152df17..a5d0311f1e1 100644 --- a/data-otservbr-global/npc/charlotta.lua +++ b/data-otservbr-global/npc/charlotta.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 97, lookLegs = 115, lookFeet = 95, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/charos.lua b/data-otservbr-global/npc/charos.lua index 9189e82a63b..98cc9920f30 100644 --- a/data-otservbr-global/npc/charos.lua +++ b/data-otservbr-global/npc/charos.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 114, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,8 +61,8 @@ local config = { ["port hope"] = TOWNS_LIST.PORT_HOPE, ["ankrahmun"] = TOWNS_LIST.ANKRAHMUN, ["darashia"] = TOWNS_LIST.DARASHIA, - ["edron"] = TOWNS_LIST.EDRON - } + ["edron"] = TOWNS_LIST.EDRON, + }, } local function greetCallback(npc, creature) @@ -74,9 +74,12 @@ local function greetCallback(npc, creature) npcHandler:resetNpc(creature) return false else - npcHandler:setMessage(MESSAGE_GREET, "Hello young friend! I can attune you to a city of your choice. \z + npcHandler:setMessage( + MESSAGE_GREET, + "Hello young friend! I can attune you to a city of your choice. \z If you step to the teleporter here you will not appear in the city you came from as usual, \z - but the city of your choice. Is it what you wish?") + but the city of your choice. Is it what you wish?" + ) end return true end @@ -99,8 +102,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 1 then local cityTable = config.towns[message:lower()] if cityTable then - player:setStorageValue(Storage.AdventurersGuild.CharosTrav, - player:getStorageValue(Storage.AdventurersGuild.CharosTrav) + 1) + player:setStorageValue(Storage.AdventurersGuild.CharosTrav, player:getStorageValue(Storage.AdventurersGuild.CharosTrav) + 1) player:setStorageValue(Storage.AdventurersGuild.Stone, cityTable) npcHandler:say("Goodbye traveler!", npc, creature) else diff --git a/data-otservbr-global/npc/chartan.lua b/data-otservbr-global/npc/chartan.lua index e249033c3d6..b1e94d5f6b6 100644 --- a/data-otservbr-global/npc/chartan.lua +++ b/data-otservbr-global/npc/chartan.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 338 + lookType = 338, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -72,7 +72,7 @@ local function creatureSayCallback(npc, creature, type, message) "Hm, I underztand. ... ", "Oh you did. ... ", "I zee. Interezting. ... ", - "You being here meanz we have eztablished connectionz to ze zouz. Finally. And you are going to help uz. Well, zere iz zertainly a lot for you to do. Zo better get ztarted. " + "You being here meanz we have eztablished connectionz to ze zouz. Finally. And you are going to help uz. Well, zere iz zertainly a lot for you to do. Zo better get ztarted. ", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.Questline, 3) player:setStorageValue(Storage.WrathoftheEmperor.Mission01, 3) --Questlog, Wrath of the Emperor "Mission 01: Catering the Lions Den" @@ -85,7 +85,7 @@ local function creatureSayCallback(npc, creature, type, message) "Ze teleporter over zere uzed to work juzt fine to get uz back to ze zouz. But it haz ztopped operating for quite zome time. ... ", "My men believe it iz a dizturbanze cauzed by ze corruption zat zpreadz everywhere. Zey are too zcared to go down zere. And zat'z where you come in. ... ", "Zere were meanz to activate teleporterz zomewhere in ze complex. But zinze you cannot reach all ze roomz, I guezz you will have to improvize. ... ", - "Here iz ze key to ze entranze to ze complex. Figure zomezing out, reztore ze teleporter zo we can get back to ze plainz in ze zouz. " + "Here iz ze key to ze entranze to ze complex. Figure zomezing out, reztore ze teleporter zo we can get back to ze plainz in ze zouz. ", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.Questline, 4) player:setStorageValue(Storage.WrathoftheEmperor.Mission02, 1) --Questlog, Wrath of the Emperor "Mission 02: First Contact" @@ -93,7 +93,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 3 then npcHandler:say({ "You did it! Zere waz zome kind of zparkle and I zink it iz working again - oh pleaze feel free to try it, I uhm, I will wait here and be ready juzt in caze zomezing uhm happenz to you. ... ", - "And if you head to Zalamon, be zure to inform him about our zituation. Food rationz are running low and we are ztill not well equipped. We need to eztablish a working zupply line. " + "And if you head to Zalamon, be zure to inform him about our zituation. Food rationz are running low and we are ztill not well equipped. We need to eztablish a working zupply line. ", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.TeleportAccess.Rebel, 1) player:setStorageValue(Storage.WrathoftheEmperor.Questline, 6) @@ -146,7 +146,7 @@ npcConfig.shop = { { itemName = "ultimate health potion", clientId = 7643, buy = 379 }, { itemName = "ultimate mana potion", clientId = 23373, buy = 438 }, { itemName = "ultimate spirit potion", clientId = 23374, buy = 438 }, - { itemName = "vial", clientId = 2874, sell = 5 } + { itemName = "vial", clientId = 2874, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -157,7 +157,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/chatterbone.lua b/data-otservbr-global/npc/chatterbone.lua index 58ca9d701f4..67491d98b70 100644 --- a/data-otservbr-global/npc/chatterbone.lua +++ b/data-otservbr-global/npc/chatterbone.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/chavis.lua b/data-otservbr-global/npc/chavis.lua index f7445251815..7b685cd145c 100644 --- a/data-otservbr-global/npc/chavis.lua +++ b/data-otservbr-global/npc/chavis.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 20, lookFeet = 76, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -63,8 +63,8 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.Oramond.MissionToTakeRoots) <= 0 then npcHandler:say({ "Hey there, just to let you know - I am not a man of many words. I prefer 'deeds', you see? The poor of this city will not feed themselves. ...", - "So in case you've got nothing better to do - and it sure looks that way judging by how long you\'re already loitering around in front of my nose - please help us. ...", - "If you can find some of the nutritious, juicy {roots} in the outskirts of Rathleton, bring them here. We will gladly take bundles of five roots each, and hey - helping us, helps you in the long term, trust me." + "So in case you've got nothing better to do - and it sure looks that way judging by how long you're already loitering around in front of my nose - please help us. ...", + "If you can find some of the nutritious, juicy {roots} in the outskirts of Rathleton, bring them here. We will gladly take bundles of five roots each, and hey - helping us, helps you in the long term, trust me.", }, npc, creature, 10) if player:getStorageValue(Storage.Oramond.QuestLine) <= 0 then player:setStorageValue(Storage.Oramond.QuestLine, 1) @@ -82,11 +82,9 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 then npcHandler:say("Spend it wisely, though, put in a word for the poor, will ye? Sure you will.", npc, creature) - player:setStorageValue(Storage.Oramond.VotingPoints, - player:getStorageValue(Storage.Oramond.VotingPoints) + 1) + player:setStorageValue(Storage.Oramond.VotingPoints, player:getStorageValue(Storage.Oramond.VotingPoints) + 1) - player:setStorageValue(Storage.Oramond.HarvestedRootCount, - player:getStorageValue(Storage.Oramond.HarvestedRootCount) - 5) + player:setStorageValue(Storage.Oramond.HarvestedRootCount, player:getStorageValue(Storage.Oramond.HarvestedRootCount) - 5) player:removeItem(21291, 5) player:setStorageValue(Storage.Oramond.MissionToTakeRoots, 0) @@ -100,15 +98,15 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "rathleton") then npcHandler:say({ "Don't be fooled, we have here masters and servants like everywhere else. The whole system is a scam to subdue the masses, to fool them about what is really happening. ...", - "The system only ensures that the rich have a better control and the labourers are only used." + "The system only ensures that the rich have a better control and the labourers are only used.", }, npc, creature, 10) npcHandler:setTopic(playerId, 0) end return true end -npcHandler:setMessage(MESSAGE_GREET, 'Hey there! You don\'t happen to have some {food} on you, you\'re willing to share? Well, where are my manners, a warm welcome for now.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Take care out there!') +npcHandler:setMessage(MESSAGE_GREET, "Hey there! You don't happen to have some {food} on you, you're willing to share? Well, where are my manners, a warm welcome for now.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Take care out there!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/chemar.lua b/data-otservbr-global/npc/chemar.lua index c9efb1276dc..4ad7684b79e 100644 --- a/data-otservbr-global/npc/chemar.lua +++ b/data-otservbr-global/npc/chemar.lua @@ -16,18 +16,18 @@ npcConfig.outfit = { lookBody = 3, lookLegs = 14, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Ask me if you need letters or parcels. I\'ll deliver them via airmail, of course!' }, - { text = 'Feel the wind in your hair during one of my carpet rides!' } + { text = "Ask me if you need letters or parcels. I'll deliver them via airmail, of course!" }, + { text = "Feel the wind in your hair during one of my carpet rides!" }, } local keywordHandler = KeywordHandler:new() @@ -61,36 +61,40 @@ end local TheNewFrontier = Storage.Quest.U8_54.TheNewFrontier local function addTravelKeyword(keyword, text, cost, destination, condition, action) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Never heard about a place like this.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Never heard about a place like this." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a ride to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = 'Hold on!', cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'You shouldn\'t miss the experience.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a ride to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = "Hold on!", cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) end -addTravelKeyword('farmine', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('zao', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('edron', '', 60, Position(33193, 31784, 3)) -addTravelKeyword('svargrond', '', 60, Position(32253, 31097, 4)) -addTravelKeyword('femor hills', '', 60, Position(32536, 31837, 4)) -keywordHandler:addAliasKeyword({ 'hills' }) -addTravelKeyword('kazordoon', '', 80, Position(32588, 31941, 0)) -keywordHandler:addAliasKeyword({ 'kazor' }) -addTravelKeyword('issavi', '', 100, Position(33957, 31515, 0)) -addTravelKeyword('marapur', 'Marapur', 70, Position(33805, 32767, 2)) - -npcHandler:setMessage(MESSAGE_GREET, 'Daraman\'s blessings, traveller |PLAYERNAME|.') -keywordHandler:addKeyword({ 'fly' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Edron}, {Issavi}, {Svargrond}, {Kazordoon}, {Zao}, {Femor Hills} or to {Marapur} if you like. Where do you want to go?' }) -npcHandler:setMessage(MESSAGE_FAREWELL, 'It was a pleasure to help you, |PLAYERNAME|.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'It was a pleasure to help you, |PLAYERNAME|.') +addTravelKeyword("farmine", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("zao", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("edron", "", 60, Position(33193, 31784, 3)) +addTravelKeyword("svargrond", "", 60, Position(32253, 31097, 4)) +addTravelKeyword("femor hills", "", 60, Position(32536, 31837, 4)) +keywordHandler:addAliasKeyword({ "hills" }) +addTravelKeyword("kazordoon", "", 80, Position(32588, 31941, 0)) +keywordHandler:addAliasKeyword({ "kazor" }) +addTravelKeyword("issavi", "", 100, Position(33957, 31515, 0)) +addTravelKeyword("marapur", "Marapur", 70, Position(33805, 32767, 2)) + +npcHandler:setMessage(MESSAGE_GREET, "Daraman's blessings, traveller |PLAYERNAME|.") +keywordHandler:addKeyword({ "fly" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Edron}, {Issavi}, {Svargrond}, {Kazordoon}, {Zao}, {Femor Hills} or to {Marapur} if you like. Where do you want to go?" }) +npcHandler:setMessage(MESSAGE_FAREWELL, "It was a pleasure to help you, |PLAYERNAME|.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "It was a pleasure to help you, |PLAYERNAME|.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -101,7 +105,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/chephan.lua b/data-otservbr-global/npc/chephan.lua index 5013d1ceec4..1288e496661 100644 --- a/data-otservbr-global/npc/chephan.lua +++ b/data-otservbr-global/npc/chephan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 26, lookLegs = 115, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -68,7 +68,7 @@ npcConfig.shop = { { itemName = "pot", clientId = 3465, buy = 30 }, { itemName = "rolling pin", clientId = 3473, buy = 12 }, { itemName = "spoon", clientId = 3468, buy = 10 }, - { itemName = "wooden spoon", clientId = 3470, buy = 5 } + { itemName = "wooden spoon", clientId = 3470, buy = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -79,7 +79,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/chester_kahs.lua b/data-otservbr-global/npc/chester_kahs.lua index d24be602c16..796c3dfcb57 100644 --- a/data-otservbr-global/npc/chester_kahs.lua +++ b/data-otservbr-global/npc/chester_kahs.lua @@ -16,21 +16,21 @@ npcConfig.outfit = { lookBody = 28, lookLegs = 47, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Too many possibilities to become a servant of darkness to trust ANYONE!' }, - { text = 'Don\'t tell me I didn\'t warn you.' }, - { text = 'It\'s all a big conspiracy, mark my words.' }, - { text = 'Not everything that walks our streets is human ... or even living.' }, - { text = 'We are surrounded by myths, living and dead.' } + { text = "Too many possibilities to become a servant of darkness to trust ANYONE!" }, + { text = "Don't tell me I didn't warn you." }, + { text = "It's all a big conspiracy, mark my words." }, + { text = "Not everything that walks our streets is human ... or even living." }, + { text = "We are surrounded by myths, living and dead." }, } local keywordHandler = KeywordHandler:new() @@ -73,82 +73,82 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'gamel') or MsgContains(message, 'rebel') or MsgContains(message, 'gamel rebel') then - npcHandler:say('Are you saying that Gamel is a member of the rebellion?', npc, creature) + if MsgContains(message, "gamel") or MsgContains(message, "rebel") or MsgContains(message, "gamel rebel") then + npcHandler:say("Are you saying that Gamel is a member of the rebellion?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Do you know what his plans are about?', npc, creature) + npcHandler:say("Do you know what his plans are about?", npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 3 then if player:removeItem(3061, 1) then - npcHandler:say('Thank you! Take this ring. If you ever need a healing, come, bring the scroll, and ask me to {heal}.', npc, creature) + npcHandler:say("Thank you! Take this ring. If you ever need a healing, come, bring the scroll, and ask me to {heal}.", npc, creature) player:addItem(3052, 1) else - npcHandler:say('Sorry, but you have none.', npc, creature) + npcHandler:say("Sorry, but you have none.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 4 then if player:removeItem(3052, 1) then - npcHandler:say('So be healed!', npc, creature) + npcHandler:say("So be healed!", npc, creature) player:addHealth(player:getMaxHealth()) npc:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) else - npcHandler:say('Sorry, you are not worthy!', npc, creature) + npcHandler:say("Sorry, you are not worthy!", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 5 then player:setStorageValue(Storage.SecretService.Quest, 1) - npcHandler:say('Then I welcome you to the TBI. This is a great moment for you, remember it well. Talk to me about your missions whenever you feel ready.', npc, creature) + npcHandler:say("Then I welcome you to the TBI. This is a great moment for you, remember it well. Talk to me about your missions whenever you feel ready.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 6 then player:setStorageValue(Storage.SecretService.TBIMission01, 3) player:setStorageValue(Storage.SecretService.Quest, 3) - npcHandler:say('I think they understood the warning the way it was meant. If not, you will have to visit Venore soon again. But for now it\'s settled.', npc, creature) + npcHandler:say("I think they understood the warning the way it was meant. If not, you will have to visit Venore soon again. But for now it's settled.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 7 then if player:removeItem(5956, 1) then player:setStorageValue(Storage.SecretService.TBIMission02, 2) player:setStorageValue(Storage.SecretService.Quest, 5) - npcHandler:say('Thank you, we can finally let them have some closure regarding this.', npc, creature) + npcHandler:say("Thank you, we can finally let them have some closure regarding this.", npc, creature) else - npcHandler:say('Please bring me some proof of his whereabouts.', npc, creature) + npcHandler:say("Please bring me some proof of his whereabouts.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 8 then if player:removeItem(5952, 1) then player:setStorageValue(Storage.SecretService.TBIMission03, 3) player:setStorageValue(Storage.SecretService.Quest, 7) - npcHandler:say('I can only hope that this information are as valuable as we expected it. A good man died for them.', npc, creature) + npcHandler:say("I can only hope that this information are as valuable as we expected it. A good man died for them.", npc, creature) else - npcHandler:say('Please bring me some valuable information!', npc, creature) + npcHandler:say("Please bring me some valuable information!", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 9 then if player:removeItem(348, 1) then player:setStorageValue(Storage.SecretService.TBIMission04, 2) player:setStorageValue(Storage.SecretService.Quest, 9) - npcHandler:say('Ah yes, very interesting. Almost as I suspected. It\'s a good thing that we got those documents in our hands.', npc, creature) + npcHandler:say("Ah yes, very interesting. Almost as I suspected. It's a good thing that we got those documents in our hands.", npc, creature) else - npcHandler:say('We need those intelligence reports, do whatever you need to do agent!', npc, creature) + npcHandler:say("We need those intelligence reports, do whatever you need to do agent!", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 10 then player:setStorageValue(Storage.SecretService.TBIMission05, 3) player:setStorageValue(Storage.SecretService.Quest, 11) - npcHandler:say('Now that Venore is of nearly no importance anymore, there is only Carlin left to deal with.', npc, creature) + npcHandler:say("Now that Venore is of nearly no importance anymore, there is only Carlin left to deal with.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 11 then player:setStorageValue(Storage.SecretService.TBIMission06, 3) player:setStorageValue(Storage.SecretService.Quest, 13) - npcHandler:say('I already heard that our little trick worked quite well. Several officials of Carlin are already on their way to repair the damage done to their diplomatic efforts. It will not only cost them much money but also quite some time.', npc, creature) + npcHandler:say("I already heard that our little trick worked quite well. Several officials of Carlin are already on their way to repair the damage done to their diplomatic efforts. It will not only cost them much money but also quite some time.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 12 then if player:removeMoneyBank(1000) then player:addItem(397, 1) - npcHandler:say('Here you are. Better don\'t loose it again.', npc, creature) + npcHandler:say("Here you are. Better don't loose it again.", npc, creature) else - npcHandler:say('You don\'t have enough money', npc, creature) + npcHandler:say("You don't have enough money", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 13 then @@ -156,17 +156,17 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.SecretService.Mission07, 2) player:setStorageValue(Storage.SecretService.Quest, 15) player:addItem(897, 1) - npcHandler:say('You have done superb work agent, I grant you the title of Top Agent! Here\'s a little gift you might find useful.', npc, creature) + npcHandler:say("You have done superb work agent, I grant you the title of Top Agent! Here's a little gift you might find useful.", npc, creature) else - npcHandler:say('Please bring me proof of the mad technomancers defeat!', npc, creature) + npcHandler:say("Please bring me proof of the mad technomancers defeat!", npc, creature) end npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Then don\'t bother me with it. I\'m a busy man.', npc, creature) + npcHandler:say("Then don't bother me with it. I'm a busy man.", npc, creature) elseif npcHandler:getTopic(playerId) == 3 then - npcHandler:say('Traitor!', npc, creature) + npcHandler:say("Traitor!", npc, creature) player:addCondition(fire) player:getPosition():sendMagicEffect(CONST_ME_EXPLOSIONHIT) npc:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) @@ -174,127 +174,127 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) else - npcHandler:say('As you wish.', npc, creature) + npcHandler:say("As you wish.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'magic') and MsgContains(message, 'crystal') and MsgContains(message, 'lugri') and MsgContains(message, 'deathcurse') then - npcHandler:say('That\'s terrible! Will you give me the crystal?', npc, creature) + if MsgContains(message, "magic") and MsgContains(message, "crystal") and MsgContains(message, "lugri") and MsgContains(message, "deathcurse") then + npcHandler:say("That's terrible! Will you give me the crystal?", npc, creature) npcHandler:setTopic(playerId, 3) else - npcHandler:say('Tell me precisely what he asked you to do! It\'s important!', npc, creature) + npcHandler:say("Tell me precisely what he asked you to do! It's important!", npc, creature) end - elseif MsgContains(message, 'heal') then - npcHandler:say('Do you need the healing now?', npc, creature) + elseif MsgContains(message, "heal") then + npcHandler:say("Do you need the healing now?", npc, creature) npcHandler:setTopic(playerId, 4) - elseif MsgContains(message, 'join') then + elseif MsgContains(message, "join") then if player:getStorageValue(Storage.SecretService.Quest) < 1 then npcHandler:say({ - 'Our bureau is an old and traditional branch of the Thaian government. It takes more than lip service to join our ranks ...', - 'Absolute loyalty to the crown and the Thaian cause as well as courage face-to-face with the enemy is the least we expect from our members ...', - 'You will swear allegiance to Thais alone and abandon the service of any other city. So is it really your wish to become one of our field agents?' + "Our bureau is an old and traditional branch of the Thaian government. It takes more than lip service to join our ranks ...", + "Absolute loyalty to the crown and the Thaian cause as well as courage face-to-face with the enemy is the least we expect from our members ...", + "You will swear allegiance to Thais alone and abandon the service of any other city. So is it really your wish to become one of our field agents?", }, npc, creature) npcHandler:setTopic(playerId, 5) end - elseif MsgContains(message, 'mission') then + elseif MsgContains(message, "mission") then if player:getStorageValue(Storage.SecretService.Quest) == 1 and player:getStorageValue(Storage.SecretService.AVINMission01) < 1 and player:getStorageValue(Storage.SecretService.CGBMission01) < 1 then player:setStorageValue(Storage.SecretService.Quest, 2) player:setStorageValue(Storage.SecretService.TBIMission01, 1) npcHandler:say({ - 'Your first task is to deliver a warning. Illegally, the Venoreans are crafting more ships than the Thaian authorities have allowed them ...', - 'Our sources have told us that those ships often end up in the hands of pirates or smugglers ...', - 'An official note would strain the relationship between Thais and Venore too much as this would mean that we had to admit officially that we know about those activities ...', - 'Still, we can\'t allow them to continue like this. It will be your task to let them know that we do not tolerate such behaviour. Get a fire bug from Liberty Bay and set their shipyard on fire ...', - 'Use the fire bug on some flammable material there to start the fire. It might take a while to find some wood that\'s dry enough for the fire to spread. Just keep trying ... ', - 'If you get captured or killed during your mission, we will deny any contact with you.' + "Your first task is to deliver a warning. Illegally, the Venoreans are crafting more ships than the Thaian authorities have allowed them ...", + "Our sources have told us that those ships often end up in the hands of pirates or smugglers ...", + "An official note would strain the relationship between Thais and Venore too much as this would mean that we had to admit officially that we know about those activities ...", + "Still, we can't allow them to continue like this. It will be your task to let them know that we do not tolerate such behaviour. Get a fire bug from Liberty Bay and set their shipyard on fire ...", + "Use the fire bug on some flammable material there to start the fire. It might take a while to find some wood that's dry enough for the fire to spread. Just keep trying ... ", + "If you get captured or killed during your mission, we will deny any contact with you.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.TBIMission01) == 2 then - npcHandler:say('Have you fulfilled your current mission?', npc, creature) + npcHandler:say("Have you fulfilled your current mission?", npc, creature) npcHandler:setTopic(playerId, 6) elseif player:getStorageValue(Storage.SecretService.TBIMission01) == 3 and player:getStorageValue(Storage.SecretService.Quest) == 3 then player:setStorageValue(Storage.SecretService.Quest, 4) player:setStorageValue(Storage.SecretService.TBIMission02, 1) npcHandler:say({ - 'Your next mission concerns an internal matter for our agency. Some decades ago, one of our most talented field agents vanished in the Green Claw Swamp ...', - 'Nowadays, that more and more adventurers are swarming this area, there is an increasing number of reports on some sinister goings-on and mysterious ruins in the middle of the swamp ...', - 'We got some credible clues that there might be a connection between the ruins and the disappearance of our agent ...', - 'As he is already missing since decades it is unlikely that he is still alive. Nevertheless, we want you to find out something about the whereabouts of our agent in the ruins in the Green Claw Swamp, north west of Venore ...', - 'He used to write diaries, maybe you can find one of those, or some other hints, or even his remains. You have to understand that he was a member of a prestigious Thaian family. Very influential people are interested in his whereabouts ...', - 'The Green Claw Swamp is treacherous and dangerous. You will have a hard time to find any clues ...', - 'As a small incentive I think its worthy to mention that he was wearing a quite impressive armor. You may keep it for yourself if you stumble across it.' + "Your next mission concerns an internal matter for our agency. Some decades ago, one of our most talented field agents vanished in the Green Claw Swamp ...", + "Nowadays, that more and more adventurers are swarming this area, there is an increasing number of reports on some sinister goings-on and mysterious ruins in the middle of the swamp ...", + "We got some credible clues that there might be a connection between the ruins and the disappearance of our agent ...", + "As he is already missing since decades it is unlikely that he is still alive. Nevertheless, we want you to find out something about the whereabouts of our agent in the ruins in the Green Claw Swamp, north west of Venore ...", + "He used to write diaries, maybe you can find one of those, or some other hints, or even his remains. You have to understand that he was a member of a prestigious Thaian family. Very influential people are interested in his whereabouts ...", + "The Green Claw Swamp is treacherous and dangerous. You will have a hard time to find any clues ...", + "As a small incentive I think its worthy to mention that he was wearing a quite impressive armor. You may keep it for yourself if you stumble across it.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.TBIMission02) == 1 then - npcHandler:say('Have you fulfilled your current mission?', npc, creature) + npcHandler:say("Have you fulfilled your current mission?", npc, creature) npcHandler:setTopic(playerId, 7) elseif player:getStorageValue(Storage.SecretService.TBIMission02) == 2 and player:getStorageValue(Storage.SecretService.Quest) == 5 then player:setStorageValue(Storage.SecretService.Quest, 6) player:setStorageValue(Storage.SecretService.TBIMission03, 1) npcHandler:say({ - 'One of our agents is missing. He was investigating the cause for the slow growth of our colony Port Hope ...', - 'You will continue these investigations at the point where the information that the lost agent has sent us ends. Some of the traders in Port Hope must have connections to persons who are interested in sabotaging our efforts in Tiquanda ...', - 'Search their personal belongings to find some sort of evidence that we could need!' + "One of our agents is missing. He was investigating the cause for the slow growth of our colony Port Hope ...", + "You will continue these investigations at the point where the information that the lost agent has sent us ends. Some of the traders in Port Hope must have connections to persons who are interested in sabotaging our efforts in Tiquanda ...", + "Search their personal belongings to find some sort of evidence that we could need!", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.TBIMission03) == 2 then - npcHandler:say('Have you fulfilled your current mission?', npc, creature) + npcHandler:say("Have you fulfilled your current mission?", npc, creature) npcHandler:setTopic(playerId, 8) elseif player:getStorageValue(Storage.SecretService.TBIMission03) == 3 and player:getStorageValue(Storage.SecretService.Quest) == 7 then player:setStorageValue(Storage.SecretService.Quest, 8) player:setStorageValue(Storage.SecretService.TBIMission04, 1) npcHandler:say({ - 'Just recently we were able to secretly help our elven friends to exposure an agitator sent by Carlin to poison our connections with them. The elves\' reaction wasswift and without compromise ...', - 'They banished the delinquent in a place they call \'Hellgate\'. Unfortunately, we learnt later that the convict was sent there with several of his belongings and it is very likely that he took vital papers with him ...', - 'These papers can tell us much about Carlin\'s plans in the North. We need you to enter \'Hellgate\' and to retrieve the papers for us ...', - 'We don\'t care how you get them. Do whatever you think is necessary.' + "Just recently we were able to secretly help our elven friends to exposure an agitator sent by Carlin to poison our connections with them. The elves' reaction wasswift and without compromise ...", + "They banished the delinquent in a place they call 'Hellgate'. Unfortunately, we learnt later that the convict was sent there with several of his belongings and it is very likely that he took vital papers with him ...", + "These papers can tell us much about Carlin's plans in the North. We need you to enter 'Hellgate' and to retrieve the papers for us ...", + "We don't care how you get them. Do whatever you think is necessary.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.TBIMission04) == 1 then - npcHandler:say('Have you fulfilled your current mission?', npc, creature) + npcHandler:say("Have you fulfilled your current mission?", npc, creature) npcHandler:setTopic(playerId, 9) elseif player:getStorageValue(Storage.SecretService.TBIMission04) == 2 and player:getStorageValue(Storage.SecretService.Quest) == 9 then player:setStorageValue(Storage.SecretService.Quest, 10) player:setStorageValue(Storage.SecretService.TBIMission05, 1) player:addItem(349, 1) npcHandler:say({ - 'It\'s bad enough that Carlin got a solid foothold in the far North but now the Venoreans also try to move in. They try to gain influence on the barbarian raiders by bribing their leaders or making them great promises ...', - 'We want you to cause some bad blood in this relationship. Travel to their most southern camp, enter the ice tower of their leaders and kill some of them ...', - 'Here is a signet ring that the Venorean emissaries use to wear. \'Lose\' the ring in the north-western corner of the highest level of the tower. They will surely find it there.' + "It's bad enough that Carlin got a solid foothold in the far North but now the Venoreans also try to move in. They try to gain influence on the barbarian raiders by bribing their leaders or making them great promises ...", + "We want you to cause some bad blood in this relationship. Travel to their most southern camp, enter the ice tower of their leaders and kill some of them ...", + "Here is a signet ring that the Venorean emissaries use to wear. 'Lose' the ring in the north-western corner of the highest level of the tower. They will surely find it there.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.TBIMission05) == 2 then - npcHandler:say('Have you fulfilled your current mission?', npc, creature) + npcHandler:say("Have you fulfilled your current mission?", npc, creature) npcHandler:setTopic(playerId, 10) elseif player:getStorageValue(Storage.SecretService.TBIMission05) == 3 and player:getStorageValue(Storage.SecretService.Quest) == 11 then player:setStorageValue(Storage.SecretService.Quest, 12) player:setStorageValue(Storage.SecretService.TBIMission06, 1) player:addItem(397, 1) npcHandler:say({ - 'The women of Carlin have the northern city Svargrond in the firm grip of her manicured hands. At the moment, there is little we can do about it but there is one thing that plays into our hands ...', - 'The barbarians have surely at least heard about the fact that alcohol is outlawed in Carlin ...', - 'If some amazonian warrior would smash a beer or ale cask in front of some witnesses, the relationship would surely suffer a bit. So go and disguise yourself as an amazon. Then use a crowbar to destroy a cask.' + "The women of Carlin have the northern city Svargrond in the firm grip of her manicured hands. At the moment, there is little we can do about it but there is one thing that plays into our hands ...", + "The barbarians have surely at least heard about the fact that alcohol is outlawed in Carlin ...", + "If some amazonian warrior would smash a beer or ale cask in front of some witnesses, the relationship would surely suffer a bit. So go and disguise yourself as an amazon. Then use a crowbar to destroy a cask.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.TBIMission06) == 2 then - npcHandler:say('Have you fulfilled your current mission?', npc, creature) + npcHandler:say("Have you fulfilled your current mission?", npc, creature) npcHandler:setTopic(playerId, 11) elseif player:getStorageValue(Storage.SecretService.TBIMission06) == 3 and player:getStorageValue(Storage.SecretService.Quest) == 13 then player:setStorageValue(Storage.SecretService.Quest, 14) player:setStorageValue(Storage.SecretService.Mission07, 1) npcHandler:say({ - 'Great, you are here. We need your service in a mission of utmost urgency ...', - 'A mad dwarven technomancer that listens to the name of Blowbeard sent us a blackmailing letter. He demands to deliver all of Thais\'s gold to him. Else he will destroy the city with an artificial earthquake caused by one of his machines! ...', - 'We need you to find his base in Kazordoon and to kill him before he can use his infernal machine. Bring us his beard as proof of your success.' + "Great, you are here. We need your service in a mission of utmost urgency ...", + "A mad dwarven technomancer that listens to the name of Blowbeard sent us a blackmailing letter. He demands to deliver all of Thais's gold to him. Else he will destroy the city with an artificial earthquake caused by one of his machines! ...", + "We need you to find his base in Kazordoon and to kill him before he can use his infernal machine. Bring us his beard as proof of your success.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.TBIMission06) == 3 and player:getStorageValue(Storage.SecretService.Mission07) == 1 then - npcHandler:say('Have you fulfilled your current mission?', npc, creature) + npcHandler:say("Have you fulfilled your current mission?", npc, creature) npcHandler:setTopic(playerId, 13) end - elseif MsgContains(message, 'disguise') then + elseif MsgContains(message, "disguise") then if player:getStorageValue(Storage.SecretService.TBIMission06) == 1 then - npcHandler:say('If you lost or wasted your disguise kit I can replace it. It will cost you 1000 gold though since you lost royal property. Is that ok for you?', npc, creature) + npcHandler:say("If you lost or wasted your disguise kit I can replace it. It will cost you 1000 gold though since you lost royal property. Is that ok for you?", npc, creature) npcHandler:setTopic(playerId, 12) end end diff --git a/data-otservbr-global/npc/chief_grarkharok.lua b/data-otservbr-global/npc/chief_grarkharok.lua index d76f2f402b1..49020883194 100644 --- a/data-otservbr-global/npc/chief_grarkharok.lua +++ b/data-otservbr-global/npc/chief_grarkharok.lua @@ -11,19 +11,19 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 281 + lookType = 281, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Grarkharok\'s bestest troll tribe! Yeee, good name!' }, - { text = 'Grarkharok make new tribe here! Me Chief now!' }, - { text = 'Me like to throw rocks, me also like frogs! Yumyum!' } + { text = "Grarkharok's bestest troll tribe! Yeee, good name!" }, + { text = "Grarkharok make new tribe here! Me Chief now!" }, + { text = "Me like to throw rocks, me also like frogs! Yumyum!" }, } local keywordHandler = KeywordHandler:new() @@ -63,7 +63,7 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'cloak') or MsgContains(message, 'feather') or MsgContains(message, 'swan') or MsgContains(message, 'maiden') then + if MsgContains(message, "cloak") or MsgContains(message, "feather") or MsgContains(message, "swan") or MsgContains(message, "maiden") then if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 12 then npcHandler:say("Hahaha! Grarkharok take cloak from pretty girl. Then ... girl is swan. Grarkharok wants eat but flies away. Grarkharok not understand. Not need cloak, too many feathers. Give cloak to To ... Ta ... Tereban in Edron. Getting shiny coins and meat.", npc, creature) else @@ -162,5 +162,4 @@ npcHandler:setMessage(MESSAGE_WALKAWAY, "Grarkharok be {chief}!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) - npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/chondur.lua b/data-otservbr-global/npc/chondur.lua index ecc8a9d2d23..af711b4b897 100644 --- a/data-otservbr-global/npc/chondur.lua +++ b/data-otservbr-global/npc/chondur.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 119, lookFeet = 116, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,41 +58,43 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'stampor') or MsgContains(message, 'mount') then + if MsgContains(message, "stampor") or MsgContains(message, "mount") then if not player:hasMount(11) then npcHandler:say( - 'You did bring all the items I requqested, cuild. Good. \ - Shall I travel to the spirit realm and try finding a stampor compasion for you?', - npc, creature) + "You did bring all the items I requqested, cuild. Good. \ + Shall I travel to the spirit realm and try finding a stampor compasion for you?", + npc, + creature + ) npcHandler:setTopic(playerId, 1) else - npcHandler:say('You already have stampor mount.', npc, creature) + npcHandler:say("You already have stampor mount.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'mission') then + elseif MsgContains(message, "mission") then if player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 8 then npcHandler:say( - 'The evil cult has placed a curse on one of the captains here. \ - I need at least five of their pirate voodoo dolls to lift that curse.', - npc, creature) + "The evil cult has placed a curse on one of the captains here. \ + I need at least five of their pirate voodoo dolls to lift that curse.", + npc, + creature + ) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 9) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 9 then - npcHandler:say('Did you bring five pirate voodoo dolls?', npc, creature) + npcHandler:say("Did you bring five pirate voodoo dolls?", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then if player:removeItem(12312, 50) and player:removeItem(12314, 30) and player:removeItem(12313, 100) then - npcHandler:say( - { - 'Ohhhhh Mmmmmmmmmmmm Ammmmmgggggggaaaaaaa ...', - 'Aaaaaaaaaahhmmmm Mmmaaaaaaaaaa Kaaaaaamaaaa ...', - "Brrt! I think it worked! It's a male stampor. \ + npcHandler:say({ + "Ohhhhh Mmmmmmmmmmmm Ammmmmgggggggaaaaaaa ...", + "Aaaaaaaaaahhmmmm Mmmaaaaaaaaaa Kaaaaaamaaaa ...", + "Brrt! I think it worked! It's a male stampor. \ I linked this spirit to yours. You can probably already summon him to you ...", - 'So, since me are done here... I need to prepare another ritual, so please let me work, cuild.' - }, - npc, creature) + "So, since me are done here... I need to prepare another ritual, so please let me work, cuild.", + }, npc, creature) player:addMount(11) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) else @@ -102,7 +104,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 2 then if player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 9 then if player:removeItem(5810, 5) then - npcHandler:say('Finally I can put an end to that curse. I thank you so much.', npc, creature) + npcHandler:say("Finally I can put an end to that curse. I thank you so much.", npc, creature) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 10) npcHandler:setTopic(playerId, 0) else @@ -111,8 +113,8 @@ local function creatureSayCallback(npc, creature, type, message) end end end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) > 2 then - npcHandler:say('Maybe next time.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) > 2 then + npcHandler:say("Maybe next time.", npc, creature) npcHandler:setTopic(playerId, 0) end return true @@ -121,467 +123,269 @@ end -- Shaman Addons -- If the player can't wear shaman outfit local function notReadyKeyword(keyword, text) - keywordHandler:addKeyword( - { keyword }, - StdModule.say, - { npcHandler = npcHandler, text = text }, - function(player) - return not player:hasOutfit(player:getSex() == PLAYERSEX_FEMALE and 158 or 154) - end - ) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return not player:hasOutfit(player:getSex() == PLAYERSEX_FEMALE and 158 or 154) + end) end -notReadyKeyword( - 'outfit', - { - "Hum? Sorry, but I don't sense enough spiritual wisdom in you to even allow \z +notReadyKeyword("outfit", { + "Hum? Sorry, but I don't sense enough spiritual wisdom in you to even allow \z you to touch the mask and staff I'm wearing... yet. ...", - 'I know of a really wise ape healer, though, who might be able to bless you with shamanic energy. \z - You should become his apprentice first if you desire to become mine.' - } -) -notReadyKeyword( - 'addon', - { - "Hum? Sorry, but I don't sense enough spiritual wisdom in you to even allow \z + "I know of a really wise ape healer, though, who might be able to bless you with shamanic energy. \z + You should become his apprentice first if you desire to become mine.", +}) +notReadyKeyword("addon", { + "Hum? Sorry, but I don't sense enough spiritual wisdom in you to even allow \z you to touch the mask and staff I'm wearing... yet. ...", - 'I know of a really wise ape healer, though, who might be able to bless you with shamanic energy. \z - You should become his apprentice first if you desire to become mine.' - } -) -notReadyKeyword('task', "The time hasn't come yet, my child. Believe and learn.") + "I know of a really wise ape healer, though, who might be able to bless you with shamanic energy. \z + You should become his apprentice first if you desire to become mine.", +}) +notReadyKeyword("task", "The time hasn't come yet, my child. Believe and learn.") -- Start task local function addTaskKeyword(text, value, missionStorage) - local taskKeyword = - keywordHandler:addKeyword( - { 'task' }, - StdModule.say, - { npcHandler = npcHandler, text = text[1] }, - function(player) - return player:getStorageValue(Storage.OutfitQuest.Shaman.AddonStaffMask) == value - end - ) - local yesKeyword = taskKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = text[2] }) - - yesKeyword:addChildKeyword( - { 'yes' }, - StdModule.say, - { npcHandler = npcHandler, text = text[3], reset = true }, - nil, - function(player) - player:setStorageValue( - Storage.OutfitQuest.Shaman.AddonStaffMask, - math.max(0, player:getStorageValue(Storage.OutfitQuest.Shaman.AddonStaffMask)) + 1 - ) - player:setStorageValue(missionStorage, 1) - player:setStorageValue(Storage.OutfitQuest.Ref, math.max(0, player:getStorageValue(Storage.OutfitQuest.Ref)) + 1) - end - ) - yesKeyword:addChildKeyword( - { 'no' }, - StdModule.say, - { npcHandler = npcHandler, text = 'Would you like me to repeat the task requirements then?', moveup = 2 } - ) - - taskKeyword:addChildKeyword( - { 'no' }, - StdModule.say, - { npcHandler = npcHandler, text = "Well, it seems you aren't ready yet.", reset = true } - ) - keywordHandler:addAliasKeyword({ 'addon' }) - keywordHandler:addAliasKeyword({ 'outfit' }) + local taskKeyword = keywordHandler:addKeyword({ "task" }, StdModule.say, { npcHandler = npcHandler, text = text[1] }, function(player) + return player:getStorageValue(Storage.OutfitQuest.Shaman.AddonStaffMask) == value + end) + local yesKeyword = taskKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = text[2] }) + + yesKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = text[3], reset = true }, nil, function(player) + player:setStorageValue(Storage.OutfitQuest.Shaman.AddonStaffMask, math.max(0, player:getStorageValue(Storage.OutfitQuest.Shaman.AddonStaffMask)) + 1) + player:setStorageValue(missionStorage, 1) + player:setStorageValue(Storage.OutfitQuest.Ref, math.max(0, player:getStorageValue(Storage.OutfitQuest.Ref)) + 1) + end) + yesKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Would you like me to repeat the task requirements then?", moveup = 2 }) + + taskKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Well, it seems you aren't ready yet.", reset = true }) + keywordHandler:addAliasKeyword({ "addon" }) + keywordHandler:addAliasKeyword({ "outfit" }) end -- Staff -addTaskKeyword( - { - "If you fulfil a task for me, I'll grant you a staff like the one I'm wearing. \z +addTaskKeyword({ + "If you fulfil a task for me, I'll grant you a staff like the one I'm wearing. \z Do you want to hear the requirements?", - { - 'Deep in the Tiquandian jungle a monster lurks which is seldom seen. \z - It is the revenge of the jungle against humankind. ...', - 'This monster, if slain, carries a rare root called Mandrake. If you find it, bring it to me. \z - Also, gather 5 of the voodoo dolls used by the mysterious dworc voodoomasters. ...', - 'If you manage to fulfil this task, I will grant you your own staff. \z - Have you understood everything and are ready for this test?' - }, - "Good! Come back once you've found a mandrake and collected 5 dworcish voodoo dolls." + { + "Deep in the Tiquandian jungle a monster lurks which is seldom seen. \z + It is the revenge of the jungle against humankind. ...", + "This monster, if slain, carries a rare root called Mandrake. If you find it, bring it to me. \z + Also, gather 5 of the voodoo dolls used by the mysterious dworc voodoomasters. ...", + "If you manage to fulfil this task, I will grant you your own staff. \z + Have you understood everything and are ready for this test?", }, - -1, - Storage.OutfitQuest.Shaman.MissionStaff -) + "Good! Come back once you've found a mandrake and collected 5 dworcish voodoo dolls.", +}, -1, Storage.OutfitQuest.Shaman.MissionStaff) -- Mask -addTaskKeyword( - { - "You have successfully passed the first task. \z +addTaskKeyword({ + "You have successfully passed the first task. \z If you can fulfil my second task, I'll grant you a mask like the one I'm wearing. \z Do you want to hear the requirements?", - { - "The dworcs of Tiquanda like to wear certain tribal masks which I'd like to take a look at. \z + { + "The dworcs of Tiquanda like to wear certain tribal masks which I'd like to take a look at. \z Please bring me 5 of these masks. ...", - "Secondly, the high ape magicians of Banuta use banana staffs. \z + "Secondly, the high ape magicians of Banuta use banana staffs. \z I'd love to learn more about theses staffs, so please bring me 5 of them, too. ...", - "If you manage to fulfil this task, I'll grant you your own mask. \z - Have you understood everything and are you ready for this test?" - }, - 'Good! Come back once you have collected 5 tribal masks and 5 banana staffs.' + "If you manage to fulfil this task, I'll grant you your own mask. \z + Have you understood everything and are you ready for this test?", }, - 2, - Storage.OutfitQuest.Shaman.MissionMask -) + "Good! Come back once you have collected 5 tribal masks and 5 banana staffs.", +}, 2, Storage.OutfitQuest.Shaman.MissionMask) -- Hand in task items local function addItemKeyword(keyword, aliasKeyword, text, value, item, addonId, missionStorage, achievement) - local itemKeyword = - keywordHandler:addKeyword( - { keyword }, - StdModule.say, - { npcHandler = npcHandler, text = text[1] }, - function(player) - return player:getStorageValue(Storage.OutfitQuest.Shaman.AddonStaffMask) == value - end - ) - itemKeyword:addChildKeyword( - { 'yes' }, - StdModule.say, - { npcHandler = npcHandler, text = text[2], reset = true }, - function(player) - return player:getItemCount(item[1].itemId) < item[1].count or player:getItemCount(item[2].itemId) < item[2].count - end - ) - - itemKeyword:addChildKeyword( - { 'yes' }, - StdModule.say, - { npcHandler = npcHandler, text = text[3], reset = true }, - function(player) - return player:getItemCount(item[1].itemId) >= item[1].count and player:getItemCount(item[2].itemId) >= item[2].count - end, - function(player) - player:removeItem(item[1].itemId, item[1].count) - player:removeItem(item[2].itemId, item[2].count) - player:addOutfitAddon(158, addonId) - player:addOutfitAddon(154, addonId) - player:setStorageValue( - Storage.OutfitQuest.Shaman.AddonStaffMask, - player:getStorageValue(Storage.OutfitQuest.Shaman.AddonStaffMask) + 1 - ) - player:setStorageValue(Storage.OutfitQuest.Ref, math.min(0, player:getStorageValue(Storage.OutfitQuest.Ref) - 1)) - player:setStorageValue(missionStorage, 0) - if achievement then - player:addAchievement('Way of the Shaman') - end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) + local itemKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text[1] }, function(player) + return player:getStorageValue(Storage.OutfitQuest.Shaman.AddonStaffMask) == value + end) + itemKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = text[2], reset = true }, function(player) + return player:getItemCount(item[1].itemId) < item[1].count or player:getItemCount(item[2].itemId) < item[2].count + end) + + itemKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = text[3], reset = true }, function(player) + return player:getItemCount(item[1].itemId) >= item[1].count and player:getItemCount(item[2].itemId) >= item[2].count + end, function(player) + player:removeItem(item[1].itemId, item[1].count) + player:removeItem(item[2].itemId, item[2].count) + player:addOutfitAddon(158, addonId) + player:addOutfitAddon(154, addonId) + player:setStorageValue(Storage.OutfitQuest.Shaman.AddonStaffMask, player:getStorageValue(Storage.OutfitQuest.Shaman.AddonStaffMask) + 1) + player:setStorageValue(Storage.OutfitQuest.Ref, math.min(0, player:getStorageValue(Storage.OutfitQuest.Ref) - 1)) + player:setStorageValue(missionStorage, 0) + if achievement then + player:addAchievement("Way of the Shaman") end - ) - itemKeyword:addChildKeyword( - { 'no' }, - StdModule.say, - { npcHandler = npcHandler, text = "Well, it seems you aren't ready yet.", reset = true } - ) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) + end) + itemKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Well, it seems you aren't ready yet.", reset = true }) keywordHandler:addAliasKeyword({ aliasKeyword }) - keywordHandler:addKeyword( - { keyword }, - StdModule.say, - { npcHandler = npcHandler, text = aliasKeyword and text[4] or text[3] } - ) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = aliasKeyword and text[4] or text[3] }) end -addItemKeyword( - 'mandrake', - 'voodoo doll', - { - 'Have you gathered the mandrake and the 5 voodoo dolls from the dworcs?', - "I'm proud of you my child, excellent work. This staff shall be yours from now on!", - 'A rare root with mysterious powers.', - { - 'Together with the spirits of the ancestors, I seek for wisdom. \ - Together we can change the flow of magic to do things that are beyond the limits of ordinary magic. ...', - 'In conversations with the spirits, I gain insight into secrets that would have been lost otherwise.' - } - }, - 1, - { { itemId = 5014, count = 1 }, { itemId = 3002, count = 5 } }, - 2, - Storage.OutfitQuest.Shaman.MissionStaff -) -addItemKeyword( - 'tribal mask', - 'banana staff', +addItemKeyword("mandrake", "voodoo doll", { + "Have you gathered the mandrake and the 5 voodoo dolls from the dworcs?", + "I'm proud of you my child, excellent work. This staff shall be yours from now on!", + "A rare root with mysterious powers.", { - 'Have you gathered the 5 tribal masks and the 5 banana staffs?', - 'Well done, my child! I hereby grant you the right to wear a shamanic mask. Do it proudly.', - 'Sometimes dworcs are seen with these masks.', - 'A banana staff is the sign of a high ape magician.' + "Together with the spirits of the ancestors, I seek for wisdom. \ + Together we can change the flow of magic to do things that are beyond the limits of ordinary magic. ...", + "In conversations with the spirits, I gain insight into secrets that would have been lost otherwise.", }, - 3, - { { itemId = 3348, count = 5 }, { itemId = 3403, count = 5 } }, - 1, - Storage.OutfitQuest.Shaman.MissionMask, - true -) +}, 1, { { itemId = 5014, count = 1 }, { itemId = 3002, count = 5 } }, 2, Storage.OutfitQuest.Shaman.MissionStaff) +addItemKeyword("tribal mask", "banana staff", { + "Have you gathered the 5 tribal masks and the 5 banana staffs?", + "Well done, my child! I hereby grant you the right to wear a shamanic mask. Do it proudly.", + "Sometimes dworcs are seen with these masks.", + "A banana staff is the sign of a high ape magician.", +}, 3, { { itemId = 3348, count = 5 }, { itemId = 3403, count = 5 } }, 1, Storage.OutfitQuest.Shaman.MissionMask, true) -- Task status local function addTaskStatusKeyword(keyword, text, value) - keywordHandler:addKeyword( - { keyword }, - StdModule.say, - { npcHandler = npcHandler, text = text }, - function(player) - return player:getStorageValue(Storage.OutfitQuest.Shaman.AddonStaffMask) == value - end - ) - if keyword == 'addon' then - keywordHandler:addAliasKeyword({ 'outfit' }) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getStorageValue(Storage.OutfitQuest.Shaman.AddonStaffMask) == value + end) + if keyword == "addon" then + keywordHandler:addAliasKeyword({ "outfit" }) end end -addTaskStatusKeyword( - 'task', - 'Your task is to retrieve a mandrake from the Tiquandan jungle and 5 dworcish voodoo dolls.', - 1 -) -addTaskStatusKeyword( - 'task', - 'Your task is to retrieve 5 tribal masks from the dworcs and 5 banana staffs from the apes.', - 3 -) -addTaskStatusKeyword( - 'task', - 'You have successfully passed all of my tasks. There are no further things I can teach you right now.', - 4 -) +addTaskStatusKeyword("task", "Your task is to retrieve a mandrake from the Tiquandan jungle and 5 dworcish voodoo dolls.", 1) +addTaskStatusKeyword("task", "Your task is to retrieve 5 tribal masks from the dworcs and 5 banana staffs from the apes.", 3) +addTaskStatusKeyword("task", "You have successfully passed all of my tasks. There are no further things I can teach you right now.", 4) addTaskStatusKeyword( - 'addon', - 'The time has come, my child. I sense great spiritual wisdom in you and I shall grant you a \ - sign of your progress if you can fulfil my task.', + "addon", + "The time has come, my child. I sense great spiritual wisdom in you and I shall grant you a \ + sign of your progress if you can fulfil my task.", 1 ) -addTaskStatusKeyword('addon', 'I shall grant you a sign of your progress as a shaman if you can fulfil my task.', 3) -addTaskStatusKeyword( - 'addon', - 'You have successfully passed all of my tasks. There are no further things I can teach you right now.', - 4 -) +addTaskStatusKeyword("addon", "I shall grant you a sign of your progress as a shaman if you can fulfil my task.", 3) +addTaskStatusKeyword("addon", "You have successfully passed all of my tasks. There are no further things I can teach you right now.", 4) -- End Shaman Addons -- Wooden Stake -keywordHandler:addKeyword( - { 'stake' }, - StdModule.say, - { - npcHandler = npcHandler, - text = "Ten prayers for a blessed stake? Don't tell me they made you travel whole Tibia for it! \ - Listen, child, if you bring me a wooden stake, I'll bless it for you. " - }, - function(player) - return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 11 - end, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 12) - player:addAchievement('Blessed!') - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - end -) - -local stakeKeyword = - keywordHandler:addKeyword( - { 'stake' }, - StdModule.say, - { npcHandler = npcHandler, text = 'Would you like to receive a spiritual prayer to bless your stake?' }, - function(player) - return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 12 - end - ) - -stakeKeyword:addChildKeyword( - { 'yes' }, - StdModule.say, - { npcHandler = npcHandler, text = "You don't have a wooden stake.", reset = true }, - function(player) - return player:getItemCount(5941) == 0 - end -) - -stakeKeyword:addChildKeyword( - { 'yes' }, - StdModule.say, - { - npcHandler = npcHandler, - text = "Sorry, but I'm still exhausted from the last ritual. Please come back later.", - reset = true - }, - function(player) - return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStakeWaitTime) >= os.time() - end -) - -stakeKeyword:addChildKeyword( - { 'yes' }, - StdModule.say, - { npcHandler = npcHandler, text = ' Sha Kesh Mar!', reset = true }, - function(player) - return player:getItemCount(5941) > 0 - end, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStakeWaitTime, os.time() + 7 * 86400) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - player:removeItem(5941, 1) - player:addItem(5942, 1) - end -) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Maybe another time.', reset = true }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ten prayers for a blessed stake? Don't tell me they made you travel whole Tibia for it! \ + Listen, child, if you bring me a wooden stake, I'll bless it for you. ", +}, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 11 +end, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 12) + player:addAchievement("Blessed!") + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) + +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Would you like to receive a spiritual prayer to bless your stake?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 12 +end) + +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "You don't have a wooden stake.", reset = true }, function(player) + return player:getItemCount(5941) == 0 +end) + +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Sorry, but I'm still exhausted from the last ritual. Please come back later.", + reset = true, +}, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStakeWaitTime) >= os.time() +end) + +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = " Sha Kesh Mar!", reset = true }, function(player) + return player:getItemCount(5941) > 0 +end, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStakeWaitTime, os.time() + 7 * 86400) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) + player:removeItem(5941, 1) + player:addItem(5942, 1) +end) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Maybe another time.", reset = true }) -- Counterspell -keywordHandler:addKeyword( - { 'counterspell' }, - StdModule.say, - { npcHandler = npcHandler, text = "You should not talk about things you don't know anything about." }, - function(player) - return player:getStorageValue(Storage.TheShatteredIsles.DragahsSpellbook) == -1 - end -) -keywordHandler:addAliasKeyword({ 'energy field' }) +keywordHandler:addKeyword({ "counterspell" }, StdModule.say, { npcHandler = npcHandler, text = "You should not talk about things you don't know anything about." }, function(player) + return player:getStorageValue(Storage.TheShatteredIsles.DragahsSpellbook) == -1 +end) +keywordHandler:addAliasKeyword({ "energy field" }) -- Start mission -local startcounterspellKeyword = - keywordHandler:addKeyword( - { 'counterspell' }, - StdModule.say, - { - npcHandler = npcHandler, - text = 'You mean, you are interested in a counterspell to cross the energy barrier on Goroma?' - }, - function(player) - return player:getStorageValue(Storage.TheShatteredIsles.TheCounterspell) == -1 - end - ) -local acceptKeyword = - startcounterspellKeyword:addChildKeyword( - { 'yes' }, - StdModule.say, - { - npcHandler = npcHandler, - text = 'This is really not advisable. Behind this barrier, strong forces are raging violently. \ - Are you sure that you want to go there?' - } - ) +local startcounterspellKeyword = keywordHandler:addKeyword({ "counterspell" }, StdModule.say, { + npcHandler = npcHandler, + text = "You mean, you are interested in a counterspell to cross the energy barrier on Goroma?", +}, function(player) + return player:getStorageValue(Storage.TheShatteredIsles.TheCounterspell) == -1 +end) +local acceptKeyword = startcounterspellKeyword:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "This is really not advisable. Behind this barrier, strong forces are raging violently. \ + Are you sure that you want to go there?", +}) acceptKeyword:addChildKeyword( - { 'yes' }, + { "yes" }, StdModule.say, { npcHandler = npcHandler, text = { "I guess I cannot stop you then. Since you told me about my apprentice, it's my turn to help you. \ I'll perform a ritual for you, but I need a few ingredients. ...", - 'Bring me one fresh dead chicken, one fresh dead rat and one fresh dead black sheep, in that order.' + "Bring me one fresh dead chicken, one fresh dead rat and one fresh dead black sheep, in that order.", }, - reset = true + reset = true, }, nil, function(player) player:setStorageValue(Storage.TheShatteredIsles.TheCounterspell, 1) end ) -acceptKeyword:addChildKeyword( - { 'no' }, - StdModule.say, - { npcHandler = npcHandler, text = "It's much safer for you to stay here anyway, trust me.", reset = true } -) +acceptKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "It's much safer for you to stay here anyway, trust me.", reset = true }) -startcounterspellKeyword:addChildKeyword( - { 'no' }, - StdModule.say, - { npcHandler = npcHandler, text = "It's much safer for you to stay here anyway, trust me.", reset = true } -) +startcounterspellKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "It's much safer for you to stay here anyway, trust me.", reset = true }) -- Deliver in corpses local function addCounterspellKeyword(text, value, itemId) - local counterspellKeyword = - keywordHandler:addKeyword( - { 'counterspell' }, - StdModule.say, - { npcHandler = npcHandler, text = text[1] }, - function(player) - return player:getStorageValue(Storage.TheShatteredIsles.TheCounterspell) == value - end - ) - counterspellKeyword:addChildKeyword( - { 'yes' }, - StdModule.say, - { npcHandler = npcHandler, text = text[2], reset = true }, - function(player) - return player:getItemCount(itemId) > 0 - end, - function(player) - player:removeItem(itemId, 1) - player:setStorageValue(Storage.TheShatteredIsles.TheCounterspell, value + 1) - end - ) + local counterspellKeyword = keywordHandler:addKeyword({ "counterspell" }, StdModule.say, { npcHandler = npcHandler, text = text[1] }, function(player) + return player:getStorageValue(Storage.TheShatteredIsles.TheCounterspell) == value + end) + counterspellKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = text[2], reset = true }, function(player) + return player:getItemCount(itemId) > 0 + end, function(player) + player:removeItem(itemId, 1) + player:setStorageValue(Storage.TheShatteredIsles.TheCounterspell, value + 1) + end) end -addCounterspellKeyword( - { - 'Did you bring the fresh dead chicken?', - "Very good! 'Your soul shall be protected!' Now, I need a fresh dead rat." - }, - 1, - 4330 -) -addCounterspellKeyword( - { - 'Did you bring the fresh dead rat?', - "Very good! 'You shall face black magic without fear!' Now, I need a fresh dead black sheep." - }, - 2, - 3994 -) -addCounterspellKeyword( - { - 'Did you bring the fresh dead black sheep?', - "Very good! 'EVIL POWERS SHALL NOT KEEP YOU ANYMORE! SO BE IT!'" - }, - 3, - 4095 -) +addCounterspellKeyword({ + "Did you bring the fresh dead chicken?", + "Very good! 'Your soul shall be protected!' Now, I need a fresh dead rat.", +}, 1, 4330) +addCounterspellKeyword({ + "Did you bring the fresh dead rat?", + "Very good! 'You shall face black magic without fear!' Now, I need a fresh dead black sheep.", +}, 2, 3994) +addCounterspellKeyword({ + "Did you bring the fresh dead black sheep?", + "Very good! 'EVIL POWERS SHALL NOT KEEP YOU ANYMORE! SO BE IT!'", +}, 3, 4095) -- Completed the Counterspell -keywordHandler:addKeyword( - { 'counterspell' }, - StdModule.say, - { - npcHandler = npcHandler, - text = "Hm. I don't think you need another one of my counterspells to cross the barrier on Goroma." - } -) +keywordHandler:addKeyword({ "counterspell" }, StdModule.say, { + npcHandler = npcHandler, + text = "Hm. I don't think you need another one of my counterspells to cross the barrier on Goroma.", +}) -- Spellbook -keywordHandler:addKeyword( - { 'spellbook' }, - StdModule.say, - { npcHandler = npcHandler, text = "Ah, thank you very much! I'll honour his memory." }, - function(player) - return player:getItemCount(6120) > 0 - end, - function(player) - player:removeItem(6120, 1) - player:setStorageValue(Storage.TheShatteredIsles.DragahsSpellbook, 1) - end -) +keywordHandler:addKeyword({ "spellbook" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, thank you very much! I'll honour his memory." }, function(player) + return player:getItemCount(6120) > 0 +end, function(player) + player:removeItem(6120, 1) + player:setStorageValue(Storage.TheShatteredIsles.DragahsSpellbook, 1) +end) -- Energy Field -keywordHandler:addKeyword( - { 'energy field' }, - StdModule.say, - { - npcHandler = npcHandler, - text = "Ah, the energy barrier set up by the cult is maintained by lousy magic, but it's still effective. \ - Without a proper counterspell, you won't be able to pass it." - } -) +keywordHandler:addKeyword({ "energy field" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ah, the energy barrier set up by the cult is maintained by lousy magic, but it's still effective. \ + Without a proper counterspell, you won't be able to pass it.", +}) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -591,7 +395,7 @@ npcConfig.shop = { { itemName = "blood goblet", clientId = 8531, sell = 10000 }, { itemName = "blood herb", clientId = 3734, sell = 500 }, { itemName = "enigmatic voodoo skull", clientId = 5669, sell = 4000 }, - { itemName = "mysterious voodoo skull", clientId = 5668, sell = 4000 } + { itemName = "mysterious voodoo skull", clientId = 5668, sell = 4000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -602,7 +406,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/chrak.lua b/data-otservbr-global/npc/chrak.lua index d67f44ad7c1..4c5e8b4d654 100644 --- a/data-otservbr-global/npc/chrak.lua +++ b/data-otservbr-global/npc/chrak.lua @@ -11,14 +11,13 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 115 + lookType = 115, } npcConfig.flags = { - floorchange = false + floorchange = false, } - local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -58,7 +57,7 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "battle") then if player:getStorageValue(TheNewFrontier.Questline) == 24 then npcHandler:say({ - "Zo you want to enter ze arena, you know ze rulez and zat zere will be no ozer option zan deaz or victory?" + "Zo you want to enter ze arena, you know ze rulez and zat zere will be no ozer option zan deaz or victory?", }, npc, creature) npcHandler:setTopic(playerId, 1) end @@ -66,14 +65,14 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(TheNewFrontier.Questline) == 24 then npcHandler:say({ "Ze tournament iz ze ultimate challenge of might and prowrezz. Ze rulez may have changed over ze centuriez but ze ezzence remained ze zame. ...", - "If you know ze rulez, you might enter ze arena for ze {battle}." + "If you know ze rulez, you might enter ze arena for ze {battle}.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 27 then npcHandler:say({ "You have done ze impozzible and beaten ze champion. Your mazter will be pleazed. Hereby I cleanze ze poizon from your body. You are now allowed to leave. ...", "For now ze mazter will zee zat you and your alliez are zpared of ze wraz of ze dragon emperor az you are unimportant for hiz goalz. ...", - "You may crawl back to your alliez and warn zem of ze gloriouz might of ze dragon emperor and hiz minionz." + "You may crawl back to your alliez and warn zem of ze gloriouz might of ze dragon emperor and hiz minionz.", }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 28) player:setStorageValue(TheNewFrontier.Mission09[1], 3) --Questlog, "Mission 09: Mortal Combat" diff --git a/data-otservbr-global/npc/christine.lua b/data-otservbr-global/npc/christine.lua index 47e1a46c9b4..ba759ba8bc6 100644 --- a/data-otservbr-global/npc/christine.lua +++ b/data-otservbr-global/npc/christine.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 23, lookLegs = 2, lookFeet = 115, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -72,7 +72,7 @@ npcConfig.shop = { { itemName = "roll", clientId = 3601, buy = 2 }, { itemName = "salmon", clientId = 3579, buy = 10 }, { itemName = "tomato", clientId = 3596, buy = 5 }, - { itemName = "white mushroom", clientId = 3723, buy = 10 } + { itemName = "white mushroom", clientId = 3723, buy = 10 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -83,7 +83,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/christoph.lua b/data-otservbr-global/npc/christoph.lua index bdeb68700f6..94ff312aa23 100644 --- a/data-otservbr-global/npc/christoph.lua +++ b/data-otservbr-global/npc/christoph.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 113, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/chrystal.lua b/data-otservbr-global/npc/chrystal.lua index e39bc2acdcb..588008b4a7a 100644 --- a/data-otservbr-global/npc/chrystal.lua +++ b/data-otservbr-global/npc/chrystal.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 79, lookLegs = 117, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -84,7 +84,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -95,7 +95,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/chuck_the_worker.lua b/data-otservbr-global/npc/chuck_the_worker.lua index bae8db6c041..784f765b0bf 100644 --- a/data-otservbr-global/npc/chuck_the_worker.lua +++ b/data-otservbr-global/npc/chuck_the_worker.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 96, lookBody = 97, lookLegs = 67, - lookFeet = 61 + lookFeet = 61, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/chuckles.lua b/data-otservbr-global/npc/chuckles.lua index c2a1de78130..494e207d90d 100644 --- a/data-otservbr-global/npc/chuckles.lua +++ b/data-otservbr-global/npc/chuckles.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 99 + lookType = 99, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -107,7 +107,7 @@ npcConfig.shop = { { itemName = "wand of inferno", clientId = 3071, buy = 15000 }, { itemName = "wand of starstorm", clientId = 8092, buy = 18000 }, { itemName = "wand of voodoo", clientId = 8094, buy = 22000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -118,7 +118,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/cillia.lua b/data-otservbr-global/npc/cillia.lua index d5788faa117..d268adb90c3 100644 --- a/data-otservbr-global/npc/cillia.lua +++ b/data-otservbr-global/npc/cillia.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 78, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,20 +58,20 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then local player = Player(creature) if not player:removeMoneyBank(50) then - npcHandler:say('The exhibition is not for free. You have to pay 50 Gold to get in. Next please!', npc, creature) + npcHandler:say("The exhibition is not for free. You have to pay 50 Gold to get in. Next please!", npc, creature) return true end - npcHandler:say('And here we go!', npc, creature) + npcHandler:say("And here we go!", npc, creature) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) local exhibitionPosition = Position(32390, 32195, 8) player:teleportTo(exhibitionPosition) exhibitionPosition:sendMagicEffect(CONST_ME_TELEPORT) else - npcHandler:say('Then not.', npc, creature) + npcHandler:say("Then not.", npc, creature) end npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) diff --git a/data-otservbr-global/npc/cipfried.lua b/data-otservbr-global/npc/cipfried.lua index 1ce40f5d482..463e824e92c 100644 --- a/data-otservbr-global/npc/cipfried.lua +++ b/data-otservbr-global/npc/cipfried.lua @@ -11,20 +11,20 @@ npcConfig.walkInterval = 1000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 57 + lookType = 57, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Feeling lost, my child? Ask me for hints or help!' }, - { text = 'Come to me if you need healing!' }, - { text = 'Welcome to the temple of Rookgaard!' }, - { text = 'Don\'t despair! Help is near!' } + { text = "Feeling lost, my child? Ask me for hints or help!" }, + { text = "Come to me if you need healing!" }, + { text = "Welcome to the temple of Rookgaard!" }, + { text = "Don't despair! Help is near!" }, } local keywordHandler = KeywordHandler:new() @@ -54,7 +54,6 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - local function greetCallback(npc, creature) local playerId = creature:getId() local player = Player(creature) @@ -62,116 +61,120 @@ local function greetCallback(npc, creature) local lowHealth = health < 65 local poisoned = player:getCondition(CONDITION_POISON) if lowHealth or poisoned then - npcHandler:setMessage(MESSAGE_GREET, 'Hello, |PLAYERNAME|! You are looking really bad. Let me heal your wounds. It\'s my job after all.') - if lowHealth then player:addHealth(65 - health) end - if poisoned then player:removeCondition(CONDITION_POISON) end + npcHandler:setMessage(MESSAGE_GREET, "Hello, |PLAYERNAME|! You are looking really bad. Let me heal your wounds. It's my job after all.") + if lowHealth then + player:addHealth(65 - health) + end + if poisoned then + player:removeCondition(CONDITION_POISON) + end player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) else - npcHandler:setMessage(MESSAGE_GREET, 'Hello, |PLAYERNAME|! I\'ll {heal} you if you are injured or poisoned. Feel free to ask me for {help} or general {hints}.') + npcHandler:setMessage(MESSAGE_GREET, "Hello, |PLAYERNAME|! I'll {heal} you if you are injured or poisoned. Feel free to ask me for {help} or general {hints}.") end return true end -- Basic keywords -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Cipfried.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'Me? Oh, I\'m just a humble {monk}. Ask me if you need {help} or {healing}.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'Now it is |TIME|, my child.' }) -keywordHandler:addKeyword({ 'monk' }, StdModule.say, { npcHandler = npcHandler, text = 'I have sacrificed my life to serve the good gods of {Tibia} and to help newcomers in this world.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'You can deposit your money at the bank. That way you won\'t lose it if you get {killed}. The bank is just under the academy and to the right.' }) -keywordHandler:addKeyword({ 'destiny' }, StdModule.say, { npcHandler = npcHandler, text = 'Your near destiny will be to choose a {vocation} once you are level 8. Whether you will become a {knight}, {sorcerer}, {paladin} or {druid} is a big decision!' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s where we are - the world of Tibia, in a village called {Rookgaard}, to be precise, with many {monsters}, {quests} and {citizens} around.' }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'How can I help you? I can tell you about specific {citizens} if you tell me their name. I can also give you general {hints} about {Tibia}. ' }) -keywordHandler:addKeyword({ 'citizen' }, StdModule.say, { npcHandler = npcHandler, text = 'Only a few people live in our village, most of them are {merchants}. You can either ask them for a {trade} or about various other topics, like the names of other citizens, their {job} or Tibia in general.' }) -keywordHandler:addKeyword({ 'trade' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t have any goods for trade, but if you ask one of the {merchants}, he or she will gladly show you what you can buy or sell.' }) -keywordHandler:addKeyword({ 'rat' }, StdModule.say, { npcHandler = npcHandler, text = 'A single rat doesn\'t pose a grave danger to you, but be careful not to get cornered by many of them. They could still {kill} you.' }) -keywordHandler:addKeyword({ 'spider' }, StdModule.say, { npcHandler = npcHandler, text = 'If you face spiders, beware of the {poisonous} ones. If you are poisoned, you will constantly lose health. Come to me and I\'ll heal you from poison.' }) -keywordHandler:addKeyword({ 'kill' }, StdModule.say, { npcHandler = npcHandler, text = 'If you get killed, you will revive in this temple. However, you will lose experience and also equipment, which can be quite painful. Take good care of yourself!' }) -keywordHandler:addKeyword({ 'poison' }, StdModule.say, { npcHandler = npcHandler, text = 'Poison is very dangerous! Don\'t ever drink green liquids, they are poisonous and will make you lose health!' }) -keywordHandler:addKeyword({ 'vocation' }, StdModule.say, { npcHandler = npcHandler, text = 'There are four vocations in Tibia: {knight}, {sorcerer}, {paladin} or {druid}. Each vocation has its unique special abilities.' }) -keywordHandler:addKeyword({ 'knight' }, StdModule.say, { npcHandler = npcHandler, text = 'Knights are close combat fighters. They usually wield melee weapons such as swords, axes or clubs.' }) -keywordHandler:addKeyword({ 'druid' }, StdModule.say, { npcHandler = npcHandler, text = 'Druids are nature magicians. Their speciality is casting ice and earth magic, as well as providing healing for others.' }) -keywordHandler:addKeyword({ 'paladin' }, StdModule.say, { npcHandler = npcHandler, text = 'Paladins are well-trained distance fighters and can cast holy magic. You will usually see them wearing bows or crossbows.' }) -keywordHandler:addKeyword({ 'sorcerer' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorcerers are elemental magicians. They have mastered fire, energy and death magic.' }) -keywordHandler:addKeyword({ 'shop' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy and sell goods from merchants. To do so, simply talk to them and ask them for a {trade}. They will gladly show you their offers and also the things they buy from you.' }) -keywordHandler:addKeyword({ 'equip' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy equipment from the {merchants} in this village once you earned some {gold}. Some {monsters} also carry equipment pieces with them.' }) -keywordHandler:addKeyword({ 'shovel' }, StdModule.say, { npcHandler = npcHandler, text = 'Shovels are very useful. There may be a hidden entrance under a loose pile of stone and without a shovel, how would you know?' }) -keywordHandler:addKeyword({ 'rope' }, StdModule.say, { npcHandler = npcHandler, text = 'Never go adventuring without a rope! If you don\'t have one when you fall through a hole in the ground, you won\'t be able to leave without a rope.' }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = 'To defend yourself against enemies, you will need a weapon. You can purchase weapons at {Obi}\'s shop.' }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = 'Food is very important for your health. If you are hurt in a fight with a {monster}, select \'Use\' on food such as cheese, ham or meat to eat it. This will slowly refill your health.' }) -keywordHandler:addKeyword({ 'premium' }, StdModule.say, { npcHandler = npcHandler, text = 'As a premium adventurer, you are an official tax payer and thus privileged in many ways. For example, you can travel by {ship} and get better deals from {merchants}.' }) -keywordHandler:addKeyword({ 'ship' }, StdModule.say, { npcHandler = npcHandler, text = { 'Ships are a comfortable way of travelling to distant cities. At any harbour, you can board the ship and ask its captain where he sails to.', 'Travelling by ship will cost you some gold, though, so be sure to have money with you.' } }) -keywordHandler:addKeyword({ 'potion' }, StdModule.say, { npcHandler = npcHandler, text = 'Potions will come in handy once you are in a fight deep in a dungeon. If you aren\'t in immediate danger, you can simply eat {food} to regain health, though.' }) -keywordHandler:addKeyword({ 'academy' }, StdModule.say, { npcHandler = npcHandler, text = 'The academy is just north of here. You can learn helpful things there from {Seymour}, if you wish to!' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, King Tibianus of course. The island of {Rookgaard} belongs to his kingdom.' }) -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, { npcHandler = npcHandler, text = 'The {gods} have chosen this isle as the point of arrival for newborn souls. The {citizens} will help you if you ask them.' }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = 'They created {Tibia} and all life on it. Visit our {academy} and learn about them.' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'Monsters are a constant threat to this village. You would tremendously help us by fighting them, starting with {rats} in the {sewers}, then turning to {spiders} or {wolves}.' }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy and sell goods from merchants. To do so, simply talk to them and ask them for a {trade}. They will gladly show you their offers and also the things they buy from you.' }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { npcHandler = npcHandler, text = 'The sewers are right below this village. North of this temple, you find a sewer grate which leads down, but there are also many small huts in the village which are connected to the sewers.' }) - -keywordHandler:addKeyword({ 'buy' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry, but I\'m not interested in worldly goods. If you want to buy or sell something, you should ask a local merchant for a trade.' }) -keywordHandler:addAliasKeyword({ 'sell' }) - -keywordHandler:addKeyword({ 'shield' }, StdModule.say, { npcHandler = npcHandler, text = 'To defend yourself against enemies, you will need armor and shields. You can purchase both at {Dixi}\'s shop.' }) -keywordHandler:addAliasKeyword({ 'armor' }) - -keywordHandler:addKeyword({ 'money' }, StdModule.say, { npcHandler = npcHandler, text = 'You can earn a fair amount of gold by fighting {monsters} and picking up the things they carry. Many {citizens} are buying some of that loot, simply ask around.' }) -keywordHandler:addAliasKeyword({ 'gold' }) - -keywordHandler:addKeyword({ 'quest' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, I can handle my tasks myself, thank you. If you are looking for something to do, you should listen to the local {citizens} and ask them for {quests}. You could also help us fight {monsters}.' }) -keywordHandler:addAliasKeyword({ 'mission' }) - -keywordHandler:addKeyword({ 'wolf' }, StdModule.say, { npcHandler = npcHandler, text = 'Wolves can only be found outside of the village. If you want to know where their dens are, best talk to {Dallheim} or {Zerbrus} at the bridges.' }) -keywordHandler:addAliasKeyword({ 'wolves' }) - -keywordHandler:addKeyword({ 'adventure' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see a bright future for you... you will soon embark on a very big adventure and explore the world of {Tibia} - maybe even influence history!' }) -keywordHandler:addAliasKeyword({ 'explore' }) - -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are poisoned. I will help you.' }, - function(player) return player:getCondition(CONDITION_POISON) end, - function(player) - local health = player:getHealth() - if health < 65 then player:addHealth(65 - health) end - player:removeCondition(CONDITION_POISON) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) - end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'Let me heal your wounds.' }, - function(player) return player:getHealth() < 185 and player:getHealth() < player:getBaseMaxHealth() end, - function(player) - local health = player:getHealth() - player:addHealth(185 - health) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Cipfried." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Me? Oh, I'm just a humble {monk}. Ask me if you need {help} or {healing}." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Now it is |TIME|, my child." }) +keywordHandler:addKeyword({ "monk" }, StdModule.say, { npcHandler = npcHandler, text = "I have sacrificed my life to serve the good gods of {Tibia} and to help newcomers in this world." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "You can deposit your money at the bank. That way you won't lose it if you get {killed}. The bank is just under the academy and to the right." }) +keywordHandler:addKeyword({ "destiny" }, StdModule.say, { npcHandler = npcHandler, text = "Your near destiny will be to choose a {vocation} once you are level 8. Whether you will become a {knight}, {sorcerer}, {paladin} or {druid} is a big decision!" }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "That's where we are - the world of Tibia, in a village called {Rookgaard}, to be precise, with many {monsters}, {quests} and {citizens} around." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "How can I help you? I can tell you about specific {citizens} if you tell me their name. I can also give you general {hints} about {Tibia}. " }) +keywordHandler:addKeyword({ "citizen" }, StdModule.say, { npcHandler = npcHandler, text = "Only a few people live in our village, most of them are {merchants}. You can either ask them for a {trade} or about various other topics, like the names of other citizens, their {job} or Tibia in general." }) +keywordHandler:addKeyword({ "trade" }, StdModule.say, { npcHandler = npcHandler, text = "I don't have any goods for trade, but if you ask one of the {merchants}, he or she will gladly show you what you can buy or sell." }) +keywordHandler:addKeyword({ "rat" }, StdModule.say, { npcHandler = npcHandler, text = "A single rat doesn't pose a grave danger to you, but be careful not to get cornered by many of them. They could still {kill} you." }) +keywordHandler:addKeyword({ "spider" }, StdModule.say, { npcHandler = npcHandler, text = "If you face spiders, beware of the {poisonous} ones. If you are poisoned, you will constantly lose health. Come to me and I'll heal you from poison." }) +keywordHandler:addKeyword({ "kill" }, StdModule.say, { npcHandler = npcHandler, text = "If you get killed, you will revive in this temple. However, you will lose experience and also equipment, which can be quite painful. Take good care of yourself!" }) +keywordHandler:addKeyword({ "poison" }, StdModule.say, { npcHandler = npcHandler, text = "Poison is very dangerous! Don't ever drink green liquids, they are poisonous and will make you lose health!" }) +keywordHandler:addKeyword({ "vocation" }, StdModule.say, { npcHandler = npcHandler, text = "There are four vocations in Tibia: {knight}, {sorcerer}, {paladin} or {druid}. Each vocation has its unique special abilities." }) +keywordHandler:addKeyword({ "knight" }, StdModule.say, { npcHandler = npcHandler, text = "Knights are close combat fighters. They usually wield melee weapons such as swords, axes or clubs." }) +keywordHandler:addKeyword({ "druid" }, StdModule.say, { npcHandler = npcHandler, text = "Druids are nature magicians. Their speciality is casting ice and earth magic, as well as providing healing for others." }) +keywordHandler:addKeyword({ "paladin" }, StdModule.say, { npcHandler = npcHandler, text = "Paladins are well-trained distance fighters and can cast holy magic. You will usually see them wearing bows or crossbows." }) +keywordHandler:addKeyword({ "sorcerer" }, StdModule.say, { npcHandler = npcHandler, text = "Sorcerers are elemental magicians. They have mastered fire, energy and death magic." }) +keywordHandler:addKeyword({ "shop" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy and sell goods from merchants. To do so, simply talk to them and ask them for a {trade}. They will gladly show you their offers and also the things they buy from you." }) +keywordHandler:addKeyword({ "equip" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy equipment from the {merchants} in this village once you earned some {gold}. Some {monsters} also carry equipment pieces with them." }) +keywordHandler:addKeyword({ "shovel" }, StdModule.say, { npcHandler = npcHandler, text = "Shovels are very useful. There may be a hidden entrance under a loose pile of stone and without a shovel, how would you know?" }) +keywordHandler:addKeyword({ "rope" }, StdModule.say, { npcHandler = npcHandler, text = "Never go adventuring without a rope! If you don't have one when you fall through a hole in the ground, you won't be able to leave without a rope." }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "To defend yourself against enemies, you will need a weapon. You can purchase weapons at {Obi}'s shop." }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "Food is very important for your health. If you are hurt in a fight with a {monster}, select 'Use' on food such as cheese, ham or meat to eat it. This will slowly refill your health." }) +keywordHandler:addKeyword({ "premium" }, StdModule.say, { npcHandler = npcHandler, text = "As a premium adventurer, you are an official tax payer and thus privileged in many ways. For example, you can travel by {ship} and get better deals from {merchants}." }) +keywordHandler:addKeyword({ "ship" }, StdModule.say, { npcHandler = npcHandler, text = { "Ships are a comfortable way of travelling to distant cities. At any harbour, you can board the ship and ask its captain where he sails to.", "Travelling by ship will cost you some gold, though, so be sure to have money with you." } }) +keywordHandler:addKeyword({ "potion" }, StdModule.say, { npcHandler = npcHandler, text = "Potions will come in handy once you are in a fight deep in a dungeon. If you aren't in immediate danger, you can simply eat {food} to regain health, though." }) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { npcHandler = npcHandler, text = "The academy is just north of here. You can learn helpful things there from {Seymour}, if you wish to!" }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "Well, King Tibianus of course. The island of {Rookgaard} belongs to his kingdom." }) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { npcHandler = npcHandler, text = "The {gods} have chosen this isle as the point of arrival for newborn souls. The {citizens} will help you if you ask them." }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "They created {Tibia} and all life on it. Visit our {academy} and learn about them." }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Monsters are a constant threat to this village. You would tremendously help us by fighting them, starting with {rats} in the {sewers}, then turning to {spiders} or {wolves}." }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy and sell goods from merchants. To do so, simply talk to them and ask them for a {trade}. They will gladly show you their offers and also the things they buy from you." }) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, text = "The sewers are right below this village. North of this temple, you find a sewer grate which leads down, but there are also many small huts in the village which are connected to the sewers." }) + +keywordHandler:addKeyword({ "buy" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry, but I'm not interested in worldly goods. If you want to buy or sell something, you should ask a local merchant for a trade." }) +keywordHandler:addAliasKeyword({ "sell" }) + +keywordHandler:addKeyword({ "shield" }, StdModule.say, { npcHandler = npcHandler, text = "To defend yourself against enemies, you will need armor and shields. You can purchase both at {Dixi}'s shop." }) +keywordHandler:addAliasKeyword({ "armor" }) + +keywordHandler:addKeyword({ "money" }, StdModule.say, { npcHandler = npcHandler, text = "You can earn a fair amount of gold by fighting {monsters} and picking up the things they carry. Many {citizens} are buying some of that loot, simply ask around." }) +keywordHandler:addAliasKeyword({ "gold" }) + +keywordHandler:addKeyword({ "quest" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, I can handle my tasks myself, thank you. If you are looking for something to do, you should listen to the local {citizens} and ask them for {quests}. You could also help us fight {monsters}." }) +keywordHandler:addAliasKeyword({ "mission" }) + +keywordHandler:addKeyword({ "wolf" }, StdModule.say, { npcHandler = npcHandler, text = "Wolves can only be found outside of the village. If you want to know where their dens are, best talk to {Dallheim} or {Zerbrus} at the bridges." }) +keywordHandler:addAliasKeyword({ "wolves" }) + +keywordHandler:addKeyword({ "adventure" }, StdModule.say, { npcHandler = npcHandler, text = "I can see a bright future for you... you will soon embark on a very big adventure and explore the world of {Tibia} - maybe even influence history!" }) +keywordHandler:addAliasKeyword({ "explore" }) + +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are poisoned. I will help you." }, function(player) + return player:getCondition(CONDITION_POISON) +end, function(player) + local health = player:getHealth() + if health < 65 then + player:addHealth(65 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking really bad, |PLAYERNAME|. I can only help in cases of real emergencies. Raise your health simply by eating {food}.' }) + player:removeCondition(CONDITION_POISON) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "Let me heal your wounds." }, function(player) + return player:getHealth() < 185 and player:getHealth() < player:getBaseMaxHealth() +end, function(player) + local health = player:getHealth() + player:addHealth(185 - health) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking really bad, |PLAYERNAME|. I can only help in cases of real emergencies. Raise your health simply by eating {food}." }) -- Names -keywordHandler:addKeyword({ 'obi' }, StdModule.say, { npcHandler = npcHandler, text = 'Obi\'s {shop} is to the north-east of this humble temple. He sells {weapons}, and his granddaughter {Dixi} sells {armor} and {shields} upstairs.' }) -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'She recently opened a little bar north of this village.' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s a sad story. He used to help me guard this temple, but for some reason he went out of his mind.' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'I absolutely appreciate what he\'s doing. He has helped me a lot since he took up the job of welcoming newcomers to this island.' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'That old lady hasn\'t had an easy life. Her son {Tom} completely abandoned her, but I have no idea why.' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'In Al Dee\'s shop you\'ll find important general equipment such as {ropes}, {shovels} and torches.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'Amber is such a lovely girl, and also a very experienced {explorer} and {adventurer}. It\'s always interesting to chat with her.' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s a farmer, just like his cousin {Willie}. He doesn\'t talk to everybody, though.' }) -keywordHandler:addKeyword({ 'willie' }, StdModule.say, { npcHandler = npcHandler, text = 'Willie is a farmer, just like his cousin {Billy}. His farm is located left of the temple. You can buy and sell {food} there.' }) -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes? How can I {help} you?' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s {Obi\'s} granddaughter. Her counter is just upstairs from Obi\'s shop. She helps him by selling {armor} and {shields}.' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'Hyacinth is a close friend of mine. He left the village many years ago to live in solitude. I think all this bustle here simply was too much for him.' }) -keywordHandler:addKeyword({ 'lee\'delle' }, StdModule.say, { npcHandler = npcHandler, text = 'Lee\'Delle\'s shop is on the {premium} side of the village. You should visit her!' }) -keywordHandler:addKeyword({ 'lily' }, StdModule.say, { npcHandler = npcHandler, text = 'You must have passed the house of Lily on your way here. She sells {potions}. If you pick blueberries or find cookies, she\'ll buy them from you.' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8 to find your {destiny}.' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'He is the {bank} clerk, making sure your {money} remains safe.' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'Seymour is a loyal follower of the {king} and a teacher in the {academy}.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'Tom is the main provider for leather armor in this village. You can sell fresh corpses or even minotaur leather to him.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'May the gods bless our loyal guardsmen! Day and night they stand watch on our bridges, ensuring that it is not passed by dangerous {monsters}!' }) -keywordHandler:addAliasKeyword({ 'zerbrus' }) +keywordHandler:addKeyword({ "obi" }, StdModule.say, { npcHandler = npcHandler, text = "Obi's {shop} is to the north-east of this humble temple. He sells {weapons}, and his granddaughter {Dixi} sells {armor} and {shields} upstairs." }) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "She recently opened a little bar north of this village." }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "That's a sad story. He used to help me guard this temple, but for some reason he went out of his mind." }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "I absolutely appreciate what he's doing. He has helped me a lot since he took up the job of welcoming newcomers to this island." }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "That old lady hasn't had an easy life. Her son {Tom} completely abandoned her, but I have no idea why." }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "In Al Dee's shop you'll find important general equipment such as {ropes}, {shovels} and torches." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "Amber is such a lovely girl, and also a very experienced {explorer} and {adventurer}. It's always interesting to chat with her." }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "He's a farmer, just like his cousin {Willie}. He doesn't talk to everybody, though." }) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { npcHandler = npcHandler, text = "Willie is a farmer, just like his cousin {Billy}. His farm is located left of the temple. You can buy and sell {food} there." }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = "Yes? How can I {help} you?" }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "That's {Obi's} granddaughter. Her counter is just upstairs from Obi's shop. She helps him by selling {armor} and {shields}." }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "Hyacinth is a close friend of mine. He left the village many years ago to live in solitude. I think all this bustle here simply was too much for him." }) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { npcHandler = npcHandler, text = "Lee'Delle's shop is on the {premium} side of the village. You should visit her!" }) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { npcHandler = npcHandler, text = "You must have passed the house of Lily on your way here. She sells {potions}. If you pick blueberries or find cookies, she'll buy them from you." }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8 to find your {destiny}." }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "He is the {bank} clerk, making sure your {money} remains safe." }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "Seymour is a loyal follower of the {king} and a teacher in the {academy}." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "Tom is the main provider for leather armor in this village. You can sell fresh corpses or even minotaur leather to him." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "May the gods bless our loyal guardsmen! Day and night they stand watch on our bridges, ensuring that it is not passed by dangerous {monsters}!" }) +keywordHandler:addAliasKeyword({ "zerbrus" }) npcHandler:setCallback(CALLBACK_GREET, greetCallback) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Farewell, |PLAYERNAME|!') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) -- npcType registering the npcConfig table diff --git a/data-otservbr-global/npc/clark.lua b/data-otservbr-global/npc/clark.lua index 8e559337bc8..9e84a3d2bb6 100644 --- a/data-otservbr-global/npc/clark.lua +++ b/data-otservbr-global/npc/clark.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 79, lookLegs = 98, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/cledwyn.lua b/data-otservbr-global/npc/cledwyn.lua index 09880c9ba93..a45968f5978 100644 --- a/data-otservbr-global/npc/cledwyn.lua +++ b/data-otservbr-global/npc/cledwyn.lua @@ -16,28 +16,28 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 76, lookFeet = 94, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.currency = 22516 npcConfig.shop = { { itemName = "earthheart cuirass", clientId = 22521, buy = 100 }, - { itemName = "earthheart hauberk", clientId = 22522, buy = 100, }, - { itemName = "earthheart platemail", clientId = 22523, buy = 100, }, - { itemName = "earthmind raiment", clientId = 22535, buy = 100, }, - { itemName = "earthsoul tabard", clientId = 22531, buy = 100, }, - { itemName = "fireheart cuirass", clientId = 22518, buy = 100, }, - { itemName = "fireheart hauberk", clientId = 22519, buy = 100, }, + { itemName = "earthheart hauberk", clientId = 22522, buy = 100 }, + { itemName = "earthheart platemail", clientId = 22523, buy = 100 }, + { itemName = "earthmind raiment", clientId = 22535, buy = 100 }, + { itemName = "earthsoul tabard", clientId = 22531, buy = 100 }, + { itemName = "fireheart cuirass", clientId = 22518, buy = 100 }, + { itemName = "fireheart hauberk", clientId = 22519, buy = 100 }, { itemName = "fireheart platemail", clientId = 22520, buy = 100 }, { itemName = "firemind raiment", clientId = 22534, buy = 100 }, { itemName = "firesoul tabard", clientId = 22530, buy = 100 }, { itemName = "frostheart cuirass", clientId = 22527, buy = 100 }, - { itemName = "frostheart hauberk", clientId = 22528, buy = 100, }, + { itemName = "frostheart hauberk", clientId = 22528, buy = 100 }, { itemName = "frostheart platemail", clientId = 22529, buy = 100 }, { itemName = "frostmind raiment", clientId = 22537, buy = 100 }, { itemName = "frostsoul tabard", clientId = 22533, buy = 100 }, @@ -46,7 +46,7 @@ npcConfig.shop = { { itemName = "thunderheart hauberk", clientId = 22525, buy = 100 }, { itemName = "thunderheart platemail", clientId = 22526, buy = 100 }, { itemName = "thundermind raiment", clientId = 22536, buy = 100 }, - { itemName = "thundersoul tabard", clientId = 22532, buy = 100 } + { itemName = "thundersoul tabard", clientId = 22532, buy = 100 }, } -- On buy npc shop message @@ -58,15 +58,14 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Trading tokens! First-class bargains!' }, - { text = 'Bespoke armor for all vocations! For the cost of some tokens only!' }, - { text = 'Tokens! Bring your tokens!' } + { text = "Trading tokens! First-class bargains!" }, + { text = "Bespoke armor for all vocations! For the cost of some tokens only!" }, + { text = "Tokens! Bring your tokens!" }, } local keywordHandler = KeywordHandler:new() @@ -99,16 +98,16 @@ end local charge = {} local chargeItem = { - ['pendulet'] = { noChargeID = 29429, ChargeID = 30344 }, - ['sleep shawl'] = { noChargeID = 29428, ChargeID = 30342 }, - ['blister ring'] = { noChargeID = 31621, ChargeID = 31557 }, - ['theurgic amulet'] = { noChargeID = 30401, ChargeID = 30403 }, - ['ring of souls'] = { noChargeID = 32636, ChargeID = 32621 }, - ['spiritthorn ring'] = { noChargeID = 39179, ChargeID = 39177 }, - ['alicorn ring'] = { noChargeID = 39182, ChargeID = 39180 }, - ['arcanomancer sigil'] = { noChargeID = 39185, ChargeID = 39183 }, - ['arboreal ring'] = { noChargeID = 39188, ChargeID = 39187 }, - ['turtle amulet'] = { noChargeID = 39235, ChargeID = 39233 } + ["pendulet"] = { noChargeID = 29429, ChargeID = 30344 }, + ["sleep shawl"] = { noChargeID = 29428, ChargeID = 30342 }, + ["blister ring"] = { noChargeID = 31621, ChargeID = 31557 }, + ["theurgic amulet"] = { noChargeID = 30401, ChargeID = 30403 }, + ["ring of souls"] = { noChargeID = 32636, ChargeID = 32621 }, + ["spiritthorn ring"] = { noChargeID = 39179, ChargeID = 39177 }, + ["alicorn ring"] = { noChargeID = 39182, ChargeID = 39180 }, + ["arcanomancer sigil"] = { noChargeID = 39185, ChargeID = 39183 }, + ["arboreal ring"] = { noChargeID = 39188, ChargeID = 39187 }, + ["turtle amulet"] = { noChargeID = 39235, ChargeID = 39233 }, } local function creatureSayCallback(npc, creature, type, message) @@ -123,32 +122,28 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'token') or MsgContains(message, 'tokens') then + if MsgContains(message, "token") or MsgContains(message, "tokens") then npcHandler:say("If you have any {silver} tokens with you, let's have a look! Maybe I can offer you something in exchange.", npc, creature) - elseif MsgContains(message, 'information') then + elseif MsgContains(message, "information") then npcHandler:say("With pleasure. I trade {token}s. There are several ways to obtain the {token}s I am interested in - killing certain bosses, for example. In exchange for a certain amount of tokens, I can offer you some first-class items.", npc, creature) - elseif MsgContains(message, 'talk') then - npcHandler:say({ "Why, certainly! I'm always up for some small talk. ...", - "The weather continues just fine here, don't you think? Just the day for a little walk around the town! ...", - "Actually, I haven't been around much yet, but I'm looking forward to exploring the city once I've finished trading {token}s." }, npc, creature) - elseif MsgContains(message, 'silver') then + elseif MsgContains(message, "talk") then + npcHandler:say({ "Why, certainly! I'm always up for some small talk. ...", "The weather continues just fine here, don't you think? Just the day for a little walk around the town! ...", "Actually, I haven't been around much yet, but I'm looking forward to exploring the city once I've finished trading {token}s." }, npc, creature) + elseif MsgContains(message, "silver") then npc:openShopWindow(creature) - npcHandler:say({ "Here's the deal, " .. player:getName() .. ". For 100 of your silver tokens, I can offer you some first-class torso armor. These armors provide a solid boost to your main attack skill, as well as ...", - "some elemental protection of your choice! I also sell a magic shield potion for one silver token. So these are my offers." }, npc, creature) - elseif MsgContains(message, 'enchant') then - npcHandler:say({ "The following items can be enchanted: {pendulet}, {sleep shawl}, {blister ring}, {theurgic amulet}, {ring of souls}. ...", - "For sufficient silver tokens you can also enchant: {spiritthorn ring}, {alicorn ring}, {arcanomancer sigil}, {arboreal ring}, {turtle amulet}. Make you choice!" }, npc, creature) + npcHandler:say({ "Here's the deal, " .. player:getName() .. ". For 100 of your silver tokens, I can offer you some first-class torso armor. These armors provide a solid boost to your main attack skill, as well as ...", "some elemental protection of your choice! I also sell a magic shield potion for one silver token. So these are my offers." }, npc, creature) + elseif MsgContains(message, "enchant") then + npcHandler:say({ "The following items can be enchanted: {pendulet}, {sleep shawl}, {blister ring}, {theurgic amulet}, {ring of souls}. ...", "For sufficient silver tokens you can also enchant: {spiritthorn ring}, {alicorn ring}, {arcanomancer sigil}, {arboreal ring}, {turtle amulet}. Make you choice!" }, npc, creature) npcHandler:setTopic(playerId, 1) - elseif table.contains({ 'pendulet', 'sleep shawl', 'blister ring', 'theurgic amulet', 'ring of souls', 'turtle amulet' }, message:lower()) and npcHandler:getTopic(playerId) == 1 then + elseif table.contains({ "pendulet", "sleep shawl", "blister ring", "theurgic amulet", "ring of souls", "turtle amulet" }, message:lower()) and npcHandler:getTopic(playerId) == 1 then npcHandler:say("Should I enchant the item " .. message .. " for 2 " .. ItemType(npc:getCurrency()):getPluralName():lower() .. "?", npc, creature) charge = message:lower() npcHandler:setTopic(playerId, 2) - elseif table.contains({ 'spiritthorn ring', 'alicorn ring', 'arcanomancer sigil', 'arboreal ring' }, message:lower()) and npcHandler:getTopic(playerId) == 1 then + elseif table.contains({ "spiritthorn ring", "alicorn ring", "arcanomancer sigil", "arboreal ring" }, message:lower()) and npcHandler:getTopic(playerId) == 1 then npcHandler:say("Should I enchant the item " .. message .. " for 5 " .. ItemType(npc:getCurrency()):getPluralName():lower() .. "?", npc, creature) charge = message:lower() npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not chargeItem[charge] then npcHandler:say("Sorry, you don't have an unenchanted " .. charge .. ".", npc, creature) else @@ -162,19 +157,19 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then npcHandler:say("Alright, come back if you have changed your mind.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'addon') then + elseif MsgContains(message, "addon") then if player:hasOutfit(846, 0) or player:hasOutfit(845, 0) then npcHandler:say("Ah, very good. Now choose your addon: {first} or {second}.", npc, creature) npcHandler:setTopic(playerId, 3) else npcHandler:say("Sorry, friend, but one good turn deserves another. You need to obtain the rift warrior outfit first.", npc, creature) end - elseif table.contains({ 'first', 'second' }, message:lower()) and npcHandler:getTopic(playerId) == 3 then - if message:lower() == 'first' then + elseif table.contains({ "first", "second" }, message:lower()) and npcHandler:getTopic(playerId) == 3 then + if message:lower() == "first" then if not (player:hasOutfit(846, 1)) and not (player:hasOutfit(845, 1)) then if player:removeItem(22516, 100) then npcHandler:say("Ah, excellent. Obtain the first addon for your rift warrior outfit.", npc, creature) @@ -189,7 +184,7 @@ local function creatureSayCallback(npc, creature, type, message) else npcHandler:say("Sorry, friend, you already have the first Rift Warrior addon.", npc, creature) end - elseif message:lower() == 'second' then + elseif message:lower() == "second" then if not (player:hasOutfit(846, 2)) and not (player:hasOutfit(845, 2)) then if player:removeItem(22516, 100) then npcHandler:say("Ah, excellent. Obtain the second addon for your rift warrior outfit.", npc, creature) diff --git a/data-otservbr-global/npc/clyde.lua b/data-otservbr-global/npc/clyde.lua index 17539997fd4..bbbc0b286d3 100644 --- a/data-otservbr-global/npc/clyde.lua +++ b/data-otservbr-global/npc/clyde.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 59, lookLegs = 47, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -63,7 +63,7 @@ npcConfig.shop = { { itemName = "mug of lemonade", clientId = 2880, buy = 2, count = 12 }, { itemName = "mug of water", clientId = 2880, buy = 2, count = 1 }, { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 }, - { itemName = "tomato", clientId = 3596, buy = 3 } + { itemName = "tomato", clientId = 3596, buy = 3 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -74,7 +74,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/cobra.lua b/data-otservbr-global/npc/cobra.lua index 8ebf09b7b28..37a39c19b34 100644 --- a/data-otservbr-global/npc/cobra.lua +++ b/data-otservbr-global/npc/cobra.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 2054 + lookTypeEx = 2054, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/cold_percht_sleigh.lua b/data-otservbr-global/npc/cold_percht_sleigh.lua index a2f267b5400..57bed69dfb3 100644 --- a/data-otservbr-global/npc/cold_percht_sleigh.lua +++ b/data-otservbr-global/npc/cold_percht_sleigh.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 1163 + lookType = 1163, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/coltrayne.lua b/data-otservbr-global/npc/coltrayne.lua index 4ee71301292..252a322cb07 100644 --- a/data-otservbr-global/npc/coltrayne.lua +++ b/data-otservbr-global/npc/coltrayne.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 124, lookFeet = 78, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -30,7 +30,7 @@ npcConfig.voices = { { text = "Get your gear and help us defend Dawnport against the monsters!" }, { text = "Better weapons equal more damage - get yourself some gear right here!" }, { text = "Gird youselves! Chain mail, bows, spears, swords - we've got it all!" }, - { text = "Skill comes with practice - get out there and kill some beasts!" } + { text = "Skill comes with practice - get out there and kill some beasts!" }, } local keywordHandler = KeywordHandler:new() @@ -60,84 +60,60 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'name' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Coltrayne Daggard. Just ask me for a trade to see the latest in chain mail and weapons." - } -) -keywordHandler:addKeyword({ 'job' }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm a blacksmith by trade. Want to keep our lads and lasses safe and equipped with a sharp blade, me." - } -) -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, - { - npcHandler = npcHandler, - text = "You mean to imply I am an inexperienced guardian? Get out of here." - } -) -keywordHandler:addKeyword({ 'coltrayne' }, StdModule.say, - { - npcHandler = npcHandler, - text = " Yes. You wish to trade I guess. At least, you look like you could use some good gear, kid." - } -) -keywordHandler:addKeyword({ 'hamish' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Good at potions. Likes experimenting. Can kit you out with magical equipment for a hunt." - } -) -keywordHandler:addKeyword({ 'inigo' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Gives newcomers hints how we do things here in Tibia. Don't know how to use something? Ask Inigo." - } -) -keywordHandler:addKeyword({ 'garamond' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Don't have much to say about him. Barely know him. Seems a decent spell teacher for mages." - } -) -keywordHandler:addKeyword({ 'ser tybald' }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm sure I've seen his face before somewhere... \z +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "Coltrayne Daggard. Just ask me for a trade to see the latest in chain mail and weapons.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm a blacksmith by trade. Want to keep our lads and lasses safe and equipped with a sharp blade, me.", +}) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { + npcHandler = npcHandler, + text = "You mean to imply I am an inexperienced guardian? Get out of here.", +}) +keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, { + npcHandler = npcHandler, + text = " Yes. You wish to trade I guess. At least, you look like you could use some good gear, kid.", +}) +keywordHandler:addKeyword({ "hamish" }, StdModule.say, { + npcHandler = npcHandler, + text = "Good at potions. Likes experimenting. Can kit you out with magical equipment for a hunt.", +}) +keywordHandler:addKeyword({ "inigo" }, StdModule.say, { + npcHandler = npcHandler, + text = "Gives newcomers hints how we do things here in Tibia. Don't know how to use something? Ask Inigo.", +}) +keywordHandler:addKeyword({ "garamond" }, StdModule.say, { + npcHandler = npcHandler, + text = "Don't have much to say about him. Barely know him. Seems a decent spell teacher for mages.", +}) +keywordHandler:addKeyword({ "ser tybald" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm sure I've seen his face before somewhere... \z never mind. Anyway, he's the knight and paladin spell teacher around here, letting you try them out for free. \z - Don't underestimate the use of spells, even if you're not a mage." - } -) -keywordHandler:addKeyword({ 'richard' }, StdModule.say, - { - npcHandler = npcHandler, - text = "He's just in the next shop to the left, selling food and equipment \z - like ropes and shovels and fishing rods and such." - } -) -keywordHandler:addKeyword({ 'mr morris' }, StdModule.say, - { - npcHandler = npcHandler, - text = "He had a plan, as usual. Came here, set up the outpost, managed everything. \z - Looking for a task or quest? He's your man." - } -) -keywordHandler:addKeyword({ 'oressa' }, StdModule.say, - { - npcHandler = npcHandler, - text = "She's our local healer. Downstairs in the temple and oracle room, that's where she is. \z - Just say 'heal' or 'help' and she'll help ya if you really need it." - } -) -keywordHandler:addKeyword({ 'plunderpurse' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Pirates and gold, you get the rest. Hoards gold now for young adventurers - \z - keeps it safe while you go out hunting." - } -) + Don't underestimate the use of spells, even if you're not a mage.", +}) +keywordHandler:addKeyword({ "richard" }, StdModule.say, { + npcHandler = npcHandler, + text = "He's just in the next shop to the left, selling food and equipment \z + like ropes and shovels and fishing rods and such.", +}) +keywordHandler:addKeyword({ "mr morris" }, StdModule.say, { + npcHandler = npcHandler, + text = "He had a plan, as usual. Came here, set up the outpost, managed everything. \z + Looking for a task or quest? He's your man.", +}) +keywordHandler:addKeyword({ "oressa" }, StdModule.say, { + npcHandler = npcHandler, + text = "She's our local healer. Downstairs in the temple and oracle room, that's where she is. \z + Just say 'heal' or 'help' and she'll help ya if you really need it.", +}) +keywordHandler:addKeyword({ "plunderpurse" }, StdModule.say, { + npcHandler = npcHandler, + text = "Pirates and gold, you get the rest. Hoards gold now for young adventurers - \z + keeps it safe while you go out hunting.", +}) npcHandler:setMessage(MESSAGE_GREET, "Hey there. Need some armor or weapon? Then ask me for a {trade}.") npcHandler:setMessage(MESSAGE_FAREWELL, "Yeah, bye..") @@ -182,7 +158,7 @@ npcConfig.shop = { { itemName = "studded shield", clientId = 3426, buy = 50, sell = 16 }, { itemName = "sword", clientId = 3264, sell = 25 }, { itemName = "viking helmet", clientId = 3367, sell = 25 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -193,7 +169,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/commander_stone.lua b/data-otservbr-global/npc/commander_stone.lua index 5eba27574f7..07240ff0fab 100644 --- a/data-otservbr-global/npc/commander_stone.lua +++ b/data-otservbr-global/npc/commander_stone.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 9, lookLegs = 9, lookFeet = 9, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,11 +58,9 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if (MsgContains(message, "mission") and player:getStorageValue(Storage.BigfootBurden.QuestLineComplete) >= 2) then + if MsgContains(message, "mission") and player:getStorageValue(Storage.BigfootBurden.QuestLineComplete) >= 2 then if player:getStorageValue(Storage.BigfootBurden.Rank) < 30 then - npcHandler:say({ "Two missions are available for your {rank}: crystal {keeper} and {spark} hunting. You can undertake each mission but you can turn in a specific mission only once each 20 hours. ...", - "If you lose a mission item you can probably buy it from Gnomally." }, npc, creature) + npcHandler:say({ "Two missions are available for your {rank}: crystal {keeper} and {spark} hunting. You can undertake each mission but you can turn in a specific mission only once each 20 hours. ...", "If you lose a mission item you can probably buy it from Gnomally." }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.BigfootBurden.Rank) >= 30 then npcHandler:say({ "For your {rank} there are four missions avaliable: crystal {keeper}, {spark} hunting, monster {extermination} and mushroom {digging}. By the way, you {rank} now allows you to take aditional missions from {Gnomeral} in {Gnomebase Alpha}. ... ", "If you lose a mission item you can probably buy it from Gnomally." }, npc, creature) @@ -88,7 +86,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.BigfootBurden.MissionCrystalKeeper, 0) player:setStorageValue(Storage.BigfootBurden.CrystalKeeperTimout, os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN)) player:setStorageValue(Storage.BigfootBurden.RepairedCrystalCount, -1) - player:addAchievement('Crystal Keeper') + player:addAchievement("Crystal Keeper") player:checkGnomeRank() npcHandler:say("You did well. That will help us a lot. Take your {token} and this gnomish supply package as a reward. ", npc, creature) npcHandler:setTopic(playerId, 0) @@ -110,8 +108,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "spark") then if player:getStorageValue(Storage.BigfootBurden.Rank) < 30 then if player:getStorageValue(Storage.BigfootBurden.MissionRaidersOfTheLostSpark) < 1 and player:getStorageValue(Storage.BigfootBurden.RaidersOfTheLostSparkTimeout) < os.time() then - npcHandler:say({ "Take this extractor and drive it into a body of a slain crystal crusher. This will charge your own body with energy sparks. Charge it with seven sparks and return to me. ...", - "Don't worry. The gnomes assured me you'd be save. That is if nothing strange or unusual occurs! " }, npc, creature) + npcHandler:say({ "Take this extractor and drive it into a body of a slain crystal crusher. This will charge your own body with energy sparks. Charge it with seven sparks and return to me. ...", "Don't worry. The gnomes assured me you'd be save. That is if nothing strange or unusual occurs! " }, npc, creature) player:setStorageValue(Storage.BigfootBurden.MissionRaidersOfTheLostSpark, 1) player:setStorageValue(Storage.BigfootBurden.ExtractedCount, 0) player:addItem(15696, 1) --- taking missions @@ -126,7 +123,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.BigfootBurden.MissionRaidersOfTheLostSpark, 0) player:setStorageValue(Storage.BigfootBurden.ExtractedCount, -1) player:setStorageValue(Storage.BigfootBurden.RaidersOfTheLostSparkTimeout, os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN)) - player:addAchievement('Call Me Sparky') + player:addAchievement("Call Me Sparky") player:checkGnomeRank() npcHandler:say("You did well. That will help us a lot. Take your {token} and this gnomish supply package as a reward. ", npc, creature) npcHandler:setTopic(playerId, 0) @@ -161,7 +158,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.BigfootBurden.MissionExterminators, 0) player:setStorageValue(Storage.BigfootBurden.ExterminatedCount, -1) player:setStorageValue(Storage.BigfootBurden.ExterminatorsTimeout, os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN)) - player:addAchievement('One Foot Vs. Many') + player:addAchievement("One Foot Vs. Many") player:checkGnomeRank() npcHandler:say("You did well. That will help us a lot. Take your {token} and this gnomish supply package as a reward. ", npc, creature) npcHandler:setTopic(playerId, 0) @@ -187,7 +184,7 @@ local function creatureSayCallback(npc, creature, type, message) "Take this little piggy here. It will one day become a great mushroom hunter for sure. For now it is depended on you and other pigs. ...", "Well, other pigs like it is one, I mean. I was of course not comparing you with a pig! Go to the truffles area and follow the truffle pigs there. If they dig up some truffles, let the little pig eat the mushrooms. ...", "You'll have to feed it three times. Then return it to me. ...", - "Keep in mind that the pig has to be returned to his mother after a while. If you don't do this, the gnomes will call it back via teleport crystals." + "Keep in mind that the pig has to be returned to his mother after a while. If you don't do this, the gnomes will call it back via teleport crystals.", }, npc, creature) player:setStorageValue(Storage.BigfootBurden.MissionMushroomDigger, 1) player:setStorageValue(Storage.BigfootBurden.MushroomCount, 0) @@ -203,7 +200,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.BigfootBurden.MissionMushroomDigger, 0) player:setStorageValue(Storage.BigfootBurden.MushroomCount, -1) player:setStorageValue(Storage.BigfootBurden.MushroomDiggerTimeout, os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN)) - player:addAchievement('The Picky Pig') + player:addAchievement("The Picky Pig") player:checkGnomeRank() npcHandler:say("You did well. That will help us a lot. Take your {token} and this gnomish supply package as a reward. ", npc, creature) npcHandler:setTopic(playerId, 0) @@ -220,7 +217,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Sorry, you do have not have the required rank to undertake this mission.", npc, creature) end -- Mushroom Digger - elseif (MsgContains(message, "report")) then + elseif MsgContains(message, "report") then if player:getStorageValue(Storage.BigfootBurden.Rank) < 30 then npcHandler:say("Which mission do you want to report: crystal {keeper}, {spark} hunting?", npc, creature) npcHandler:setTopic(playerId, 1) @@ -232,7 +229,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_GREET, 'Hello recruit.') +npcHandler:setMessage(MESSAGE_GREET, "Hello recruit.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/cornelia.lua b/data-otservbr-global/npc/cornelia.lua index 1747313e36a..7735527ee1e 100644 --- a/data-otservbr-global/npc/cornelia.lua +++ b/data-otservbr-global/npc/cornelia.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 76, lookLegs = 100, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Quality armors for sale!' } + { text = "Quality armors for sale!" }, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I run this armoury. If you want to protect your life, you better buy my wares." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I run this armoury. If you want to protect your life, you better buy my wares." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -70,19 +70,19 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.OutfitQuest.WarriorShoulderAddon) == 5 then player:setStorageValue(Storage.OutfitQuest.WarriorShoulderAddon, 6) player:setStorageValue(Storage.OutfitQuest.WarriorShoulderTimer, os.time() + (player:getSex() == PLAYERSEX_FEMALE and 1768 or 7200)) - npcHandler:say('Ah, you must be the hero Trisha talked about. I\'ll prepare the shoulder spikes for you. Please give me some time to finish.', npc, creature) + npcHandler:say("Ah, you must be the hero Trisha talked about. I'll prepare the shoulder spikes for you. Please give me some time to finish.", npc, creature) elseif player:getStorageValue(Storage.OutfitQuest.WarriorShoulderAddon) == 6 then if player:getStorageValue(Storage.OutfitQuest.WarriorShoulderTimer) > os.time() then - npcHandler:say('I\'m not done yet. Please be as patient as you are courageous.', npc, creature) + npcHandler:say("I'm not done yet. Please be as patient as you are courageous.", npc, creature) elseif player:getStorageValue(Storage.OutfitQuest.WarriorShoulderTimer) > 0 and player:getStorageValue(Storage.OutfitQuest.WarriorShoulderTimer) < os.time() then player:addOutfitAddon(142, 1) player:addOutfitAddon(134, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) player:setStorageValue(Storage.OutfitQuest.WarriorShoulderAddon, 7) - player:addAchievementProgress('Wild Warrior', 2) - npcHandler:say('Finished! Since you are a man, I thought you probably wanted two. Men always want that little extra status symbol. ', npc, creature) + player:addAchievementProgress("Wild Warrior", 2) + npcHandler:say("Finished! Since you are a man, I thought you probably wanted two. Men always want that little extra status symbol. ", npc, creature) else - npcHandler:say('I\'m selling leather armor, chain armor, and brass armor. Ask me for a {trade} if you like to take a look.', npc, creature) + npcHandler:say("I'm selling leather armor, chain armor, and brass armor. Ask me for a {trade} if you like to take a look.", npc, creature) end end end @@ -128,7 +128,7 @@ npcConfig.shop = { { itemName = "studded shield", clientId = 3426, buy = 50, sell = 16 }, { itemName = "viking helmet", clientId = 3367, buy = 265, sell = 66 }, { itemName = "viking shield", clientId = 3431, buy = 260, sell = 85 }, - { itemName = "wooden shield", clientId = 3412, buy = 15, sell = 5 } + { itemName = "wooden shield", clientId = 3412, buy = 15, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -139,7 +139,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/cornell.lua b/data-otservbr-global/npc/cornell.lua index 15f2936d0f9..577ebe3e8de 100644 --- a/data-otservbr-global/npc/cornell.lua +++ b/data-otservbr-global/npc/cornell.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 99, lookLegs = 40, lookFeet = 115, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passage to Grimvale and Edron.' } + { text = "Passage to Grimvale and Edron." }, } local keywordHandler = KeywordHandler:new() @@ -58,21 +58,21 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, action) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }, nil, action) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }, nil, action) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('grimvale', 100, Position(33341, 31691, 7)) -addTravelKeyword('edron', 100, Position(33304, 31719, 7)) +addTravelKeyword("grimvale", 100, Position(33341, 31691, 7)) +addTravelKeyword("edron", 100, Position(33304, 31719, 7)) -- Kick -- Basic -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'I can travel you to {Grimvale} or {Edron}.' }) -npcHandler:setMessage(MESSAGE_GREET, 'Welcome on board, |PLAYERNAME|. Where can I {sail} you today, to {Grimvale} or {Edron}?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "I can travel you to {Grimvale} or {Edron}." }) +npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. Where can I {sail} you today, to {Grimvale} or {Edron}?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/corym_butler.lua b/data-otservbr-global/npc/corym_butler.lua index fe2c0c714d5..58bf72cbf40 100644 --- a/data-otservbr-global/npc/corym_butler.lua +++ b/data-otservbr-global/npc/corym_butler.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 115, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,10 +56,10 @@ local function greetCallback(npc, creature, message) if player:getStorageValue(HiddenThreats.CorymRescued05) < 0 then npcHandler:setMessage(MESSAGE_GREET, { - 'Every man is the architect of his own fortune. The times of {repression} are finally over.' + "Every man is the architect of his own fortune. The times of {repression} are finally over.", }) else - npcHandler:setMessage(MESSAGE_GREET, 'We have to dig up valuable resources, but don\'t get enough to eat. The situation is terrible.') + npcHandler:setMessage(MESSAGE_GREET, "We have to dig up valuable resources, but don't get enough to eat. The situation is terrible.") end return true end @@ -71,9 +71,9 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "repression")) then + if MsgContains(message, "repression") then npcHandler:say({ - "We have to dig up valuable resources, but don't get enough to eat. The situation is terrible." + "We have to dig up valuable resources, but don't get enough to eat. The situation is terrible.", }, npc, creature) if player:getStorageValue(HiddenThreats.CorymRescued05) < 0 then player:setStorageValue(HiddenThreats.CorymRescueMission, player:getStorageValue(HiddenThreats.CorymRescueMission) + 1) @@ -84,7 +84,7 @@ local function creatureSayCallback(npc, creature, type, message) end -- Greeting message -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/corym_footman.lua b/data-otservbr-global/npc/corym_footman.lua index 06c4fbd2cb9..ea2311b4686 100644 --- a/data-otservbr-global/npc/corym_footman.lua +++ b/data-otservbr-global/npc/corym_footman.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 115, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,10 +56,10 @@ local function greetCallback(npc, creature, message) if player:getStorageValue(HiddenThreats.CorymRescued08) < 0 then npcHandler:setMessage(MESSAGE_GREET, { - 'Every man is the architect of his own fortune. We have nearly died of {hunger}.' + "Every man is the architect of his own fortune. We have nearly died of {hunger}.", }) else - npcHandler:setMessage(MESSAGE_GREET, 'What we get to eat is really ridiculous.') + npcHandler:setMessage(MESSAGE_GREET, "What we get to eat is really ridiculous.") end return true end @@ -71,9 +71,9 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "hunger")) then + if MsgContains(message, "hunger") then npcHandler:say({ - "What we get to eat is really ridiculous. Particularly in view of the fact that we should dig up an insane amount of ores." + "What we get to eat is really ridiculous. Particularly in view of the fact that we should dig up an insane amount of ores.", }, npc, creature) if player:getStorageValue(HiddenThreats.CorymRescued08) < 0 then player:setStorageValue(HiddenThreats.CorymRescueMission, player:getStorageValue(HiddenThreats.CorymRescueMission) + 1) @@ -84,7 +84,7 @@ local function creatureSayCallback(npc, creature, type, message) end -- Greeting message -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/corym_ratter.lua b/data-otservbr-global/npc/corym_ratter.lua index cd3592b9ddc..91cc127471b 100644 --- a/data-otservbr-global/npc/corym_ratter.lua +++ b/data-otservbr-global/npc/corym_ratter.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 115, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,11 +56,11 @@ local function greetCallback(npc, creature, message) if player:getStorageValue(HiddenThreats.QuestLine) < 1 then npcHandler:setMessage(MESSAGE_GREET, { - 'Welcome stranger! You might be surprised that I don\'t attack you immediately. The point is, that I think you could be useful to me. What you see in front of you is a great mine of the corym! ...', - 'We dig up all what mother earth delivers to us, valuable natural resources. But the yield is getting worse and here I need your {help}.' + "Welcome stranger! You might be surprised that I don't attack you immediately. The point is, that I think you could be useful to me. What you see in front of you is a great mine of the corym! ...", + "We dig up all what mother earth delivers to us, valuable natural resources. But the yield is getting worse and here I need your {help}.", }) else - npcHandler:setMessage(MESSAGE_GREET, 'We dig up all what mother earth delivers to us, valuable natural resources.') + npcHandler:setMessage(MESSAGE_GREET, "We dig up all what mother earth delivers to us, valuable natural resources.") end return true end @@ -73,11 +73,11 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "help")) then + if MsgContains(message, "help") then npcHandler:say("Recently the amount of delivered ores is decreasing. Could you find out the reason, why the situation has become worse?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then player:setStorageValue(Storage.TibiaTales.DefaultStart, 1) player:setStorageValue(HiddenThreats.QuestLine, 1) player:setStorageValue(HiddenThreats.RatterDoor, 1) @@ -89,7 +89,7 @@ local function creatureSayCallback(npc, creature, type, message) end -- Greeting message -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/corym_servant.lua b/data-otservbr-global/npc/corym_servant.lua index 460f296022d..186c1ebe8e9 100644 --- a/data-otservbr-global/npc/corym_servant.lua +++ b/data-otservbr-global/npc/corym_servant.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 115, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,24 +56,24 @@ local function greetCallback(npc, creature, message) if player:getStorageValue(HiddenThreats.QuestLine) == 1 then npcHandler:setMessage(MESSAGE_GREET, { - 'We work as hard we can, my master! Wait, I haven\'t seen you here before. You were sent by the Corym Ratter, I see. He misses the courage to visit us and find the reason for {decreasing resources}? He\'s the coward I have expected.' + "We work as hard we can, my master! Wait, I haven't seen you here before. You were sent by the Corym Ratter, I see. He misses the courage to visit us and find the reason for {decreasing resources}? He's the coward I have expected.", }) elseif player:getStorageValue(HiddenThreats.CorymRescueMission) == 8 and player:getStorageValue(HiddenThreats.QuestLine) == 3 then npcHandler:setMessage(MESSAGE_GREET, { - 'Well done! The riot progesses! No fight without weapons. In the mine the temperature is quite high, higher as expected in this depth. Therefore we need heat-resistent weapons and armors. ...', - 'This effect can be reached by adding rare earth to the common materials. But this can only be found in the stomaches of stonerefiners. 20 of these should be enough. Well, I see you have already collected enough of them! Would you give it to me?' + "Well done! The riot progesses! No fight without weapons. In the mine the temperature is quite high, higher as expected in this depth. Therefore we need heat-resistent weapons and armors. ...", + "This effect can be reached by adding rare earth to the common materials. But this can only be found in the stomaches of stonerefiners. 20 of these should be enough. Well, I see you have already collected enough of them! Would you give it to me?", }) player:setStorageValue(HiddenThreats.QuestLine, 4) elseif player:getStorageValue(HiddenThreats.QuestLine) == 4 then npcHandler:setMessage(MESSAGE_GREET, { - 'Well, I see you have already collected enough rare earth! Would you give it to me?' + "Well, I see you have already collected enough rare earth! Would you give it to me?", }) elseif player:getStorageValue(HiddenThreats.QuestLine) == 3 then npcHandler:setMessage(MESSAGE_GREET, { - 'You have to liberate all the Corym I told you. Unlock the three affected areas.' + "You have to liberate all the Corym I told you. Unlock the three affected areas.", }) else - npcHandler:setMessage(MESSAGE_GREET, 'Every man is the architect of his own fortune. The times of repression are finally over.') + npcHandler:setMessage(MESSAGE_GREET, "Every man is the architect of his own fortune. The times of repression are finally over.") end return true end @@ -86,14 +86,14 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "decreasing resources")) then + if MsgContains(message, "decreasing resources") then npcHandler:say({ "You have to know, that our work is very hard and the conditions we have are terrible. The wanted amount is abolutely unrealistic. Beyond that the food we get is never enough. ...", - "Our workers should give their best while starving. This is not possible. That's the point to {defy} the authority." + "Our workers should give their best while starving. This is not possible. That's the point to {defy} the authority.", }, npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "defy")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "defy") then + if npcHandler:getTopic(playerId) == 1 then if player:getStorageValue(HiddenThreats.QuestLine) == 1 then player:setStorageValue(HiddenThreats.QuestLine, 2) player:setStorageValue(HiddenThreats.ServantDoor, 1) @@ -101,7 +101,7 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:say({ "I see you are interested to change our sitation. The first thing I like you to do is to liberate the jailed coryms. There are three areas with locked doors. You have to find a way to get access. ...", - "For this reason I will give you access to the second floor. It was closed because it wasn't possible to continue working at these enourmous high temperatures. Furthermore we were instantly attacked by stonerefiners. So take care of you!" + "For this reason I will give you access to the second floor. It was closed because it wasn't possible to continue working at these enourmous high temperatures. Furthermore we were instantly attacked by stonerefiners. So take care of you!", }, npc, creature) npcHandler:setTopic(playerId, 2) end @@ -109,7 +109,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeItem(27301, 20) then npcHandler:say({ "Thank you very much! Our smiths are now able to craft heat-resistent weapons and armor. A little reward for you is this. ...", - "There is one last thing I would like to say to you, there are rumours that this dungeon can only be entered alive. This could mean that there's an unknown dungeon keeper guarding this place, so take care of you!" + "There is one last thing I would like to say to you, there are rumours that this dungeon can only be entered alive. This could mean that there's an unknown dungeon keeper guarding this place, so take care of you!", }, npc, creature) player:addItem(3040, 2) player:setStorageValue(HiddenThreats.QuestLine, 5) @@ -124,7 +124,7 @@ local function creatureSayCallback(npc, creature, type, message) end -- Greeting message -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/corym_slave.lua b/data-otservbr-global/npc/corym_slave.lua index 806e1bde92e..0dc9ccca3f8 100644 --- a/data-otservbr-global/npc/corym_slave.lua +++ b/data-otservbr-global/npc/corym_slave.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 115, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,10 +56,10 @@ local function greetCallback(npc, creature, message) if player:getStorageValue(HiddenThreats.CorymRescued02) < 0 then npcHandler:setMessage(MESSAGE_GREET, { - 'Every man is the architect of his own fortune. There will be the day of {pay back}.' + "Every man is the architect of his own fortune. There will be the day of {pay back}.", }) else - npcHandler:setMessage(MESSAGE_GREET, 'The repression has taken too long. With our new weapons the respective people will get their just punishment.') + npcHandler:setMessage(MESSAGE_GREET, "The repression has taken too long. With our new weapons the respective people will get their just punishment.") end return true end @@ -71,9 +71,9 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "pay back")) then + if MsgContains(message, "pay back") then npcHandler:say({ - "The repression has taken too long. With our new weapons the respective people will get their just punishment." + "The repression has taken too long. With our new weapons the respective people will get their just punishment.", }, npc, creature) if player:getStorageValue(HiddenThreats.CorymRescued02) < 0 then player:setStorageValue(HiddenThreats.CorymRescueMission, player:getStorageValue(HiddenThreats.CorymRescueMission) + 1) @@ -84,7 +84,7 @@ local function creatureSayCallback(npc, creature, type, message) end -- Greeting message -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/corym_worker_01.lua b/data-otservbr-global/npc/corym_worker_01.lua index 69e3e1fed08..26299cc76b7 100644 --- a/data-otservbr-global/npc/corym_worker_01.lua +++ b/data-otservbr-global/npc/corym_worker_01.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 115, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,13 +56,13 @@ local function greetCallback(npc, creature, message) if player:getStorageValue(HiddenThreats.CorymRescued01) < 0 then npcHandler:setMessage(MESSAGE_GREET, { - 'My hero! A friend of mine sent you to liberate me? A true friend! I am poor but nevertheless I give you this as little reward.' + "My hero! A friend of mine sent you to liberate me? A true friend! I am poor but nevertheless I give you this as little reward.", }) player:setStorageValue(HiddenThreats.CorymRescueMission, player:getStorageValue(HiddenThreats.CorymRescueMission) + 1) player:setStorageValue(HiddenThreats.CorymRescued01, 1) player:addItem(3030, 1) else - npcHandler:setMessage(MESSAGE_GREET, 'My hero! A friend of mine sent you to liberate me? A true friend!') + npcHandler:setMessage(MESSAGE_GREET, "My hero! A friend of mine sent you to liberate me? A true friend!") end return true end @@ -77,7 +77,7 @@ local function creatureSayCallback(npc, creature, type, message) end -- Greeting message -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/corym_worker_02.lua b/data-otservbr-global/npc/corym_worker_02.lua index 3ef4819ee83..8e308c1a555 100644 --- a/data-otservbr-global/npc/corym_worker_02.lua +++ b/data-otservbr-global/npc/corym_worker_02.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 115, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,10 +56,10 @@ local function greetCallback(npc, creature, message) if player:getStorageValue(HiddenThreats.CorymRescued03) < 0 then npcHandler:setMessage(MESSAGE_GREET, { - 'Every man is the architect of his own fortune. The times of {repression} are finally over.' + "Every man is the architect of his own fortune. The times of {repression} are finally over.", }) else - npcHandler:setMessage(MESSAGE_GREET, 'We need weapons to overcome our situation.') + npcHandler:setMessage(MESSAGE_GREET, "We need weapons to overcome our situation.") end return true end @@ -71,9 +71,9 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "repression")) then + if MsgContains(message, "repression") then npcHandler:say({ - "We need weapons to overcome our situation." + "We need weapons to overcome our situation.", }, npc, creature) if player:getStorageValue(HiddenThreats.CorymRescued03) < 0 then player:setStorageValue(HiddenThreats.CorymRescueMission, player:getStorageValue(HiddenThreats.CorymRescueMission) + 1) @@ -84,7 +84,7 @@ local function creatureSayCallback(npc, creature, type, message) end -- Greeting message -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/corym_worker_03.lua b/data-otservbr-global/npc/corym_worker_03.lua index 0e2723e96f5..b69d623f4dc 100644 --- a/data-otservbr-global/npc/corym_worker_03.lua +++ b/data-otservbr-global/npc/corym_worker_03.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 115, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,13 +56,13 @@ local function greetCallback(npc, creature, message) if player:getStorageValue(HiddenThreats.CorymRescued04) < 0 then npcHandler:setMessage(MESSAGE_GREET, { - 'My hero! A friend of mine sent you to liberate me? A true friend! I am poor but nevertheless I give you this as little reward.' + "My hero! A friend of mine sent you to liberate me? A true friend! I am poor but nevertheless I give you this as little reward.", }) player:setStorageValue(HiddenThreats.CorymRescueMission, player:getStorageValue(HiddenThreats.CorymRescueMission) + 1) player:setStorageValue(HiddenThreats.CorymRescued04, 1) player:addItem(3032, 1) else - npcHandler:setMessage(MESSAGE_GREET, 'My hero! A friend of mine sent you to liberate me? A true friend!') + npcHandler:setMessage(MESSAGE_GREET, "My hero! A friend of mine sent you to liberate me? A true friend!") end return true end @@ -76,7 +76,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -- Greeting message -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/corym_worker_04.lua b/data-otservbr-global/npc/corym_worker_04.lua index 4b9488cbfac..b2007136775 100644 --- a/data-otservbr-global/npc/corym_worker_04.lua +++ b/data-otservbr-global/npc/corym_worker_04.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 115, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,12 +56,12 @@ local function greetCallback(npc, creature, message) if player:getStorageValue(HiddenThreats.CorymRescued06) < 0 then npcHandler:setMessage(MESSAGE_GREET, { - 'Every man is the architect of his own fortune. I want to see the daylight again! Just smell fresh air.' + "Every man is the architect of his own fortune. I want to see the daylight again! Just smell fresh air.", }) player:setStorageValue(HiddenThreats.CorymRescueMission, player:getStorageValue(HiddenThreats.CorymRescueMission) + 1) player:setStorageValue(HiddenThreats.CorymRescued06, 1) else - npcHandler:setMessage(MESSAGE_GREET, 'Every man is the architect of his own fortune. I want to see the daylight again! Just smell fresh air.') + npcHandler:setMessage(MESSAGE_GREET, "Every man is the architect of his own fortune. I want to see the daylight again! Just smell fresh air.") end return true end @@ -76,7 +76,7 @@ local function creatureSayCallback(npc, creature, type, message) end -- Greeting message -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/corym_worker_05.lua b/data-otservbr-global/npc/corym_worker_05.lua index a0f0510443d..a76f2053050 100644 --- a/data-otservbr-global/npc/corym_worker_05.lua +++ b/data-otservbr-global/npc/corym_worker_05.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 115, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,13 +56,13 @@ local function greetCallback(npc, creature, message) if player:getStorageValue(HiddenThreats.CorymRescued07) < 0 then npcHandler:setMessage(MESSAGE_GREET, { - 'My hero! A friend of mine sent you to liberate me? A true friend! I am poor but nevertheless I give you this as little reward.' + "My hero! A friend of mine sent you to liberate me? A true friend! I am poor but nevertheless I give you this as little reward.", }) player:setStorageValue(HiddenThreats.CorymRescueMission, player:getStorageValue(HiddenThreats.CorymRescueMission) + 1) player:setStorageValue(HiddenThreats.CorymRescued07, 1) player:addItem(3029, 1) else - npcHandler:setMessage(MESSAGE_GREET, 'My hero! A friend of mine sent you to liberate me? A true friend!') + npcHandler:setMessage(MESSAGE_GREET, "My hero! A friend of mine sent you to liberate me? A true friend!") end return true end @@ -77,7 +77,7 @@ local function creatureSayCallback(npc, creature, type, message) end -- Greeting message -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/costello.lua b/data-otservbr-global/npc/costello.lua index 271c80ecb05..d338eb95f13 100644 --- a/data-otservbr-global/npc/costello.lua +++ b/data-otservbr-global/npc/costello.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 57 + lookType = 57, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -49,58 +49,62 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if MsgContains(message, 'fugio') then + if MsgContains(message, "fugio") then if player:getStorageValue(Storage.Quest.U7_24.FamilyBrooch.Brooch) == 1 then - npcHandler:say('To be honest, I fear the omen in my dreams may be true. \z + npcHandler:say( + "To be honest, I fear the omen in my dreams may be true. \z Perhaps Fugio is unable to see the danger down there. \z - Perhaps ... you are willing to investigate this matter?', npc, creature) + Perhaps ... you are willing to investigate this matter?", + npc, + creature + ) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'diary') then + elseif MsgContains(message, "diary") then if player:getStorageValue(Storage.WhiteRavenMonastery.Diary) == 1 then - npcHandler:say('Do you want me to inspect a diary?', npc, creature) + npcHandler:say("Do you want me to inspect a diary?", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif MsgContains(message, 'holy water') then + elseif MsgContains(message, "holy water") then local cStorage = player:getStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline) if cStorage == 1 then - npcHandler:say('Who are you to demand holy water from the White Raven Monastery? Who sent you??', npc, creature) + npcHandler:say("Who are you to demand holy water from the White Raven Monastery? Who sent you??", npc, creature) npcHandler:setTopic(playerId, 3) elseif cStorage == 2 then - npcHandler:say('I already filled your vial with holy water.', npc, creature) + npcHandler:say("I already filled your vial with holy water.", npc, creature) end - elseif MsgContains(message, 'amanda') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "amanda") and npcHandler:getTopic(playerId) == 0 then if player:getStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline) == 1 then - npcHandler:say('Ahh, Amanda from Edron sent you! I hope she\'s doing well. So why did she send you here?', npc, creature) + npcHandler:say("Ahh, Amanda from Edron sent you! I hope she's doing well. So why did she send you here?", npc, creature) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Thank you very much! From now on you may open the warded doors to the catacombs.', npc, creature) + npcHandler:say("Thank you very much! From now on you may open the warded doors to the catacombs.", npc, creature) player:setStorageValue(Storage.WhiteRavenMonastery.Diary, 1) player:setStorageValue(Storage.WhiteRavenMonastery.Door, 1) elseif npcHandler:getTopic(playerId) == 2 then if not player:removeItem(3212, 1) then - npcHandler:say('Uhm, as you wish.', npc, creature) + npcHandler:say("Uhm, as you wish.", npc, creature) return true end - npcHandler:say('By the gods! This is brother Fugio\'s handwriting and what I read is horrible indeed! You have done our order a great favour by giving this diary to me! Take this blessed Ankh. May it protect you in even your darkest hours.', npc, creature) + npcHandler:say("By the gods! This is brother Fugio's handwriting and what I read is horrible indeed! You have done our order a great favour by giving this diary to me! Take this blessed Ankh. May it protect you in even your darkest hours.", npc, creature) player:addItem(3214, 1) player:setStorageValue(Storage.WhiteRavenMonastery.Diary, 2) end elseif npcHandler:getTopic(playerId) == 3 then - if not MsgContains(message, 'amanda') then - npcHandler:say('I never heard that name and you won\'t get holy water for some stranger.', npc, creature) + if not MsgContains(message, "amanda") then + npcHandler:say("I never heard that name and you won't get holy water for some stranger.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:addItem(133, 1) player:setStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline, 2) - npcHandler:say('Ohh, why didn\'t you tell me before? Sure you get some holy water if it\'s for Amanda! Here you are.', npc, creature) + npcHandler:say("Ohh, why didn't you tell me before? Sure you get some holy water if it's for Amanda! Here you are.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') and table.contains({ 1, 2 }, npcHandler:getTopic(playerId)) then - npcHandler:say('Uhm, as you wish.', npc, creature) + elseif MsgContains(message, "no") and table.contains({ 1, 2 }, npcHandler:getTopic(playerId)) then + npcHandler:say("Uhm, as you wish.", npc, creature) npcHandler:setTopic(playerId, 0) end return true diff --git a/data-otservbr-global/npc/cranky_lizard_crone.lua b/data-otservbr-global/npc/cranky_lizard_crone.lua index 87cdeb1c694..6d71f873f54 100644 --- a/data-otservbr-global/npc/cranky_lizard_crone.lua +++ b/data-otservbr-global/npc/cranky_lizard_crone.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 339 + lookType = 339, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -42,9 +42,9 @@ npcType.onThink = function(npc, interval) end -- Messages -local newaddon = 'Here you are, enjoy your brand new addon!' -local noItems = 'You do not have all the required items.' -local already = 'It seems you already have this addon, don\'t you try to mock me son!' +local newaddon = "Here you are, enjoy your brand new addon!" +local noItems = "You do not have all the required items." +local already = "It seems you already have this addon, don't you try to mock me son!" --WAYFARER START -- function WayfarerFirst(npc, creature, message, keywords, parameters, node) @@ -89,23 +89,23 @@ function WayfarerSecond(npc, creature, message, keywords, parameters, node) end -- WAYFARER END -- -keywordHandler:addKeyword({ 'addons' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "I can offer you first & second addons of the following outfit: {Wayfarer}." }) +keywordHandler:addKeyword({ "addons" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "I can offer you first & second addons of the following outfit: {Wayfarer}." }) -keywordHandler:addKeyword({ 'storage' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Ask about {first addon} or {second addon}." }) +keywordHandler:addKeyword({ "storage" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Ask about {first addon} or {second addon}." }) -keywordHandler:addKeyword({ 'outfit' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Ask about {first addon} or {second addon}." }) +keywordHandler:addKeyword({ "outfit" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Ask about {first addon} or {second addon}." }) -keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Ask about {first addon} or {second addon}." }) +keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Ask about {first addon} or {second addon}." }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "llected all the required pieces, say 'yes' and voila - you got yourself an addon!" }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "llected all the required pieces, say 'yes' and voila - you got yourself an addon!" }) -local node1 = keywordHandler:addKeyword({ 'first addon' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'To achieve the first storage addon you need to give me the Old Cape. Do you have them with you?' }) -node1:addChildKeyword({ 'yes' }, WayfarerFirst, {}) -node1:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'Alright then. Come back when you got all neccessary items.', reset = true }) +local node1 = keywordHandler:addKeyword({ "first addon" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "To achieve the first storage addon you need to give me the Old Cape. Do you have them with you?" }) +node1:addChildKeyword({ "yes" }, WayfarerFirst, {}) +node1:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Alright then. Come back when you got all neccessary items.", reset = true }) -local node2 = keywordHandler:addKeyword({ 'second addon' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'To achieve the second storage addon you need to give me the Sedge Hat. Do you have them with you?' }) -node2:addChildKeyword({ 'yes' }, WayfarerSecond, {}) -node2:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'Alright then. Come back when you got all neccessary items.', reset = true }) +local node2 = keywordHandler:addKeyword({ "second addon" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "To achieve the second storage addon you need to give me the Sedge Hat. Do you have them with you?" }) +node2:addChildKeyword({ "yes" }, WayfarerSecond, {}) +node2:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Alright then. Come back when you got all neccessary items.", reset = true }) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) -- npcType registering the npcConfig table diff --git a/data-otservbr-global/npc/crowned_tree.lua b/data-otservbr-global/npc/crowned_tree.lua index b91b0b6a0ca..b6789822e47 100644 --- a/data-otservbr-global/npc/crowned_tree.lua +++ b/data-otservbr-global/npc/crowned_tree.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 3634 + lookTypeEx = 3634, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/cruleo.lua b/data-otservbr-global/npc/cruleo.lua index 45304ffb75a..ee83ce41a37 100644 --- a/data-otservbr-global/npc/cruleo.lua +++ b/data-otservbr-global/npc/cruleo.lua @@ -15,19 +15,19 @@ npcConfig.outfit = { lookHead = 94, lookBody = 115, lookLegs = 97, - lookFeet = 97 + lookFeet = 97, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = '' }, - { text = 'This will earn me some handsome amount of gold!' }, - { text = 'Muhahaha!' } + { text = "" }, + { text = "This will earn me some handsome amount of gold!" }, + { text = "Muhahaha!" }, } local keywordHandler = KeywordHandler:new() @@ -60,7 +60,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "white deer antlers", clientId = 12544, sell = 400 }, - { itemName = "white deer skin", clientId = 12545, sell = 245 } + { itemName = "white deer skin", clientId = 12545, sell = 245 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -71,7 +71,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/curos.lua b/data-otservbr-global/npc/curos.lua index ea9dda03c2f..d17f36937f1 100644 --- a/data-otservbr-global/npc/curos.lua +++ b/data-otservbr-global/npc/curos.lua @@ -11,14 +11,13 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 29 + lookType = 29, } npcConfig.flags = { - floorchange = false + floorchange = false, } - local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -56,15 +55,15 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "mission")) then - if (player:getStorageValue(TheNewFrontier.Questline) == 16) then + if MsgContains(message, "mission") then + if player:getStorageValue(TheNewFrontier.Questline) == 16 then npcHandler:say("You come here to ask us to spare your people? This land has no tolerance for the weak, we have it neither. If you want us to consider you as useful for us, you'll have to prove it in a {test} of strength and courage. ", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(TheNewFrontier.Questline) == 18) then + elseif player:getStorageValue(TheNewFrontier.Questline) == 18 then npcHandler:say({ "We have seen that you can fight and survive. Yet, it will also need cleverness and courage to survive in these lands. We might see later if you've got what it takes. ...", "However, I stand to my word - our hordes will spare your insignificant piece of rock for now. Time will tell if you are worthy living next to us. ...", - "Still, it will take years until we might consider you as an ally, but this is a start at least." + "Still, it will take years until we might consider you as an ally, but this is a start at least.", }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 19) player:setStorageValue(TheNewFrontier.Mission06, 4) --Questlog, The New Frontier Quest "Mission 06: Days Of Doom" @@ -77,7 +76,7 @@ local function creatureSayCallback(npc, creature, type, message) "Right now, some coward from our midst, who is too afraid to face us in single combat, has gathered a group of followers, hoping more will follow and change sides. ...", "With your help, his defeat will not only be deadly but also humiliating and so discourage others to follow his example. ...", "You will seek out this rebel commander in his hideout and kill him. We will show them that not even a Mooh'Tah master is needed to get rid of such wannabe leaders but that a mere human can handle them. ...", - "Find him in the mountain north-west of here and kill him. If you find any loot, you can keep it." + "Find him in the mountain north-west of here and kill him. If you find any loot, you can keep it.", }, npc, creature) player:setStorageValue(AnUneasyAlliance.Questline, 1) player:setStorageValue(AnUneasyAlliance.QuestDoor, 0) @@ -90,22 +89,22 @@ local function creatureSayCallback(npc, creature, type, message) "In this tower, there must be some accessory used for magical scrying. Some pond, a crystal ball, or a mirror maybe - it has to be something shiny. ...", "Usually we would send one of our youngsters on such a mission, but we are few and there is little new blood in our ranks. ...", "We can't send a Mooh'Tah master on such a trivial assignment, neither can we use orcs for an infiltration mission. ...", - "This is your chance to show us your potential. Infiltrate this tower and destroy their scrying device. Once you have blinded our enemy, we might respect you somewhat more." + "This is your chance to show us your potential. Infiltrate this tower and destroy their scrying device. Once you have blinded our enemy, we might respect you somewhat more.", }, npc, creature) player:setStorageValue(AnUneasyAlliance.Questline, 3) elseif player:getStorageValue(AnUneasyAlliance.Questline) == 4 then npcHandler:say({ "Finally, our enemy's vision is obscured. Now we can move in for some more daring raids until they replace their scrying device. You have proven yourself brave and useful so far. With that, you bought your allies some more days to live. ...", - "Here is a reward. It's a strange tome that we've found in the lizard ruins. Maybe it is of some value for you or your allies." + "Here is a reward. It's a strange tome that we've found in the lizard ruins. Maybe it is of some value for you or your allies.", }, npc, creature) player:setStorageValue(AnUneasyAlliance.Questline, 5) player:addItem(10217) end - elseif (MsgContains(message, "test")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "test") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "First we will test your strength and endurance. You'll have to face one of the most experienced Mooh'Tah masters. As you don't stand a chance to beat such an opponent, your test will be simply to survive. ...", - "Face him in a battle and survive for two minutes. If you do, we will be willing to assume that your are prepared for the life in these lands. Enter the ring of battle, close to my quarter. Return to me after you have passed this test." + "Face him in a battle and survive for two minutes. If you do, we will be willing to assume that your are prepared for the life in these lands. Enter the ring of battle, close to my quarter. Return to me after you have passed this test.", }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(TheNewFrontier.Questline, 17) diff --git a/data-otservbr-global/npc/dabui.lua b/data-otservbr-global/npc/dabui.lua index dd29725cd2c..72c1003ffa0 100644 --- a/data-otservbr-global/npc/dabui.lua +++ b/data-otservbr-global/npc/dabui.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 9, lookLegs = 27, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/dagomir.lua b/data-otservbr-global/npc/dagomir.lua index a664755621a..86757c0253d 100644 --- a/data-otservbr-global/npc/dagomir.lua +++ b/data-otservbr-global/npc/dagomir.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 2, lookLegs = 4, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/dalbrect.lua b/data-otservbr-global/npc/dalbrect.lua index e51f25a7c8b..9fc3053b60c 100644 --- a/data-otservbr-global/npc/dalbrect.lua +++ b/data-otservbr-global/npc/dalbrect.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 97, lookLegs = 67, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "brooch") then if player:getStorageValue(Storage.WhiteRavenMonastery.Passage) == 1 then npcHandler:say("You have recovered my brooch! I shall forever be in your debt, my friend!", npc, creature) @@ -75,8 +74,12 @@ local function creatureSayCallback(npc, creature, type, message) return true end - npcHandler:say("Can it be? I recognise my family's arms! You have found a treasure indeed! \z - I am poor and all I can offer you is my friendship, but ... please ... give that brooch to me?", npc, creature) + npcHandler:say( + "Can it be? I recognise my family's arms! You have found a treasure indeed! \z + I am poor and all I can offer you is my friendship, but ... please ... give that brooch to me?", + npc, + creature + ) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then npcHandler:setTopic(playerId, 0) @@ -85,8 +88,12 @@ local function creatureSayCallback(npc, creature, type, message) return true end - npcHandler:say("Thank you! I shall consider you my friend from now on! \z - Just let me know if you {need} something!", npc, creature) + npcHandler:say( + "Thank you! I shall consider you my friend from now on! \z + Just let me know if you {need} something!", + npc, + creature + ) player:setStorageValue(Storage.WhiteRavenMonastery.QuestLog, 1) -- Quest log player:setStorageValue(Storage.WhiteRavenMonastery.Passage, 1) end @@ -101,108 +108,78 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ "passage" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I have only sailed to the isle of the kings once or twice. \z - I dare not anger the monks by bringing travelers there without their permission." - }, - - function(player) - return player:getStorageValue(Storage.WhiteRavenMonastery.Passage) ~= 1 - end) - -local travelNode = keywordHandler:addKeyword({ "passage" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Do you seek a passage to the isle of the kings for 10 gold coins?" - } -) -travelNode:addChildKeyword({ "yes" }, StdModule.travel, - { - npcHandler = npcHandler, - premium = false, - text = "Have a nice trip!", - cost = 10, - destination = Position(32190, 31957, 6) - } -) -travelNode:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - reset = true, - text = "Well, I'll be here if you change your mind." - } -) - -keywordHandler:addKeyword({ "name" }, StdModule.say, - { - npcHandler = npcHandler, - text = "My name is Dalbrect Windtrouser, of the once proud Windtrouser family." - } -) -keywordHandler:addKeyword({ "hut" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I am merely a humble fisher now that nothing is left of my noble {legacy}." - } -) -keywordHandler:addKeyword({ "legacy" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Once my family was once noble and wealthy, but {fate} turned against us and threw us into poverty." - - } -) -keywordHandler:addKeyword({ "poverty" }, StdModule.say, - { - npcHandler = npcHandler, - text = "When Carlin tried to colonize the region now known as the ghostlands, \z - my ancestors put their fortune in that {project}." - } -) -keywordHandler:addKeyword({ "fate" }, StdModule.say, - { - npcHandler = npcHandler, - text = "When Carlin tried to colonize the region now known as the ghostlands, \z - my ancestors put their fortune in that {project}." - } -) -keywordHandler:addKeyword({ "ghostlands" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Our family fortune was lost when the colonization of those cursed lands failed. \z +keywordHandler:addKeyword({ "passage" }, StdModule.say, { + npcHandler = npcHandler, + text = "I have only sailed to the isle of the kings once or twice. \z + I dare not anger the monks by bringing travelers there without their permission.", +}, function(player) + return player:getStorageValue(Storage.WhiteRavenMonastery.Passage) ~= 1 +end) + +local travelNode = keywordHandler:addKeyword({ "passage" }, StdModule.say, { + npcHandler = npcHandler, + text = "Do you seek a passage to the isle of the kings for 10 gold coins?", +}) +travelNode:addChildKeyword({ "yes" }, StdModule.travel, { + npcHandler = npcHandler, + premium = false, + text = "Have a nice trip!", + cost = 10, + destination = Position(32190, 31957, 6), +}) +travelNode:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + reset = true, + text = "Well, I'll be here if you change your mind.", +}) + +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "My name is Dalbrect Windtrouser, of the once proud Windtrouser family.", +}) +keywordHandler:addKeyword({ "hut" }, StdModule.say, { + npcHandler = npcHandler, + text = "I am merely a humble fisher now that nothing is left of my noble {legacy}.", +}) +keywordHandler:addKeyword({ "legacy" }, StdModule.say, { + npcHandler = npcHandler, + text = "Once my family was once noble and wealthy, but {fate} turned against us and threw us into poverty.", +}) +keywordHandler:addKeyword({ "poverty" }, StdModule.say, { + npcHandler = npcHandler, + text = "When Carlin tried to colonize the region now known as the ghostlands, \z + my ancestors put their fortune in that {project}.", +}) +keywordHandler:addKeyword({ "fate" }, StdModule.say, { + npcHandler = npcHandler, + text = "When Carlin tried to colonize the region now known as the ghostlands, \z + my ancestors put their fortune in that {project}.", +}) +keywordHandler:addKeyword({ "ghostlands" }, StdModule.say, { + npcHandler = npcHandler, + text = "Our family fortune was lost when the colonization of those cursed lands failed. \z Now nothing is left of our fame or our fortune. \z - If I only had something as a reminder of those better times. " - } -) -keywordHandler:addKeyword({ "project" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Our family fortune was lost when the colonization of those cursed lands failed. \z + If I only had something as a reminder of those better times. ", +}) +keywordHandler:addKeyword({ "project" }, StdModule.say, { + npcHandler = npcHandler, + text = "Our family fortune was lost when the colonization of those cursed lands failed. \z Now nothing is left of our fame or our fortune. \z - If I only had something as a reminder of those better times. " - } -) -keywordHandler:addKeyword({ "carlin" }, StdModule.say, - { - npcHandler = npcHandler, - text = "To think my family used to belong to the local nobility! And now those arrogant women are in charge!" - } -) -keywordHandler:addKeyword({ "need" }, StdModule.say, - { - npcHandler = npcHandler, - text = "There is little I can offer you but a trip with my boat. \z - Are you looking for a {passage} to the isle of kings perhaps?" - } -) -keywordHandler:addKeyword({ "ship" }, StdModule.say, - { - npcHandler = npcHandler, - text = "My ship is my only pride and joy." - } -) + If I only had something as a reminder of those better times. ", +}) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { + npcHandler = npcHandler, + text = "To think my family used to belong to the local nobility! And now those arrogant women are in charge!", +}) +keywordHandler:addKeyword({ "need" }, StdModule.say, { + npcHandler = npcHandler, + text = "There is little I can offer you but a trip with my boat. \z + Are you looking for a {passage} to the isle of kings perhaps?", +}) +keywordHandler:addKeyword({ "ship" }, StdModule.say, { + npcHandler = npcHandler, + text = "My ship is my only pride and joy.", +}) npcHandler:setMessage(MESSAGE_GREET, "Be greeted, traveller |PLAYERNAME|. Welcome to my {hut}.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. You are welcome.") diff --git a/data-otservbr-global/npc/dallheim.lua b/data-otservbr-global/npc/dallheim.lua index e63f5001908..8e5c7ca9b7a 100644 --- a/data-otservbr-global/npc/dallheim.lua +++ b/data-otservbr-global/npc/dallheim.lua @@ -16,21 +16,21 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 76, lookFeet = 95, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'The most dangerous monsters of Rookgaard are on the other side of this bridge.' }, - { text = 'Want to know what monsters are good for you at your level? Just ask me!' }, - { text = 'I\'ll crush all monsters who dare to attack our base.' }, - { text = 'Are you injured or poisoned? I can help you.' }, - { text = 'For Rookgaard! For Tibia!' } + { text = "The most dangerous monsters of Rookgaard are on the other side of this bridge." }, + { text = "Want to know what monsters are good for you at your level? Just ask me!" }, + { text = "I'll crush all monsters who dare to attack our base." }, + { text = "Are you injured or poisoned? I can help you." }, + { text = "For Rookgaard! For Tibia!" }, } local keywordHandler = KeywordHandler:new() @@ -60,161 +60,160 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - -- Greeting and Farewell -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = 'Greetings, |PLAYERNAME|! You\'re looking really bad. Let me heal your wounds.' }, - function(player) return player:getHealth() < 65 or player:getCondition(CONDITION_POISON) ~= nil end, - function(player) - local health = player:getHealth() - if health < 65 then player:addHealth(65 - health) end - player:removeCondition(CONDITION_POISON) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Greetings, |PLAYERNAME|! You're looking really bad. Let me heal your wounds." }, function(player) + return player:getHealth() < 65 or player:getCondition(CONDITION_POISON) ~= nil +end, function(player) + local health = player:getHealth() + if health < 65 then + player:addHealth(65 - health) end -) -keywordHandler:addAliasKeyword({ 'hello' }) + player:removeCondition(CONDITION_POISON) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +keywordHandler:addAliasKeyword({ "hello" }) -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = ' At your service, |PLAYERNAME|, protecting the {village} from {monsters}.' }, function(player) return player:getSex() == PLAYERSEX_FEMALE end) -keywordHandler:addAliasKeyword({ 'hello' }) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = " At your service, |PLAYERNAME|, protecting the {village} from {monsters}." }, function(player) + return player:getSex() == PLAYERSEX_FEMALE +end) +keywordHandler:addAliasKeyword({ "hello" }) -keywordHandler:addFarewellKeyword({ 'bye' }, { npcHandler = npcHandler, text = 'Bye, |PLAYERNAME|.' }) -keywordHandler:addAliasKeyword({ 'farewell' }) +keywordHandler:addFarewellKeyword({ "bye" }, { npcHandler = npcHandler, text = "Bye, |PLAYERNAME|." }) +keywordHandler:addAliasKeyword({ "farewell" }) local function addMonsterKeyword(level, text, marks) - local keyword = keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getLevel() >= level end, - function(player) - if marks then - for i = 1, #marks do - player:addMapMark(marks[i].position, marks[i].type, marks[i].description) - end + local keyword = keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getLevel() >= level + end, function(player) + if marks then + for i = 1, #marks do + player:addMapMark(marks[i].position, marks[i].type, marks[i].description) end end - ) + end) end -- Monster -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'Hmm, |PLAYERNAME|. I really don\'t know if you should go into the wilderness without a shield. You should earn some money by hunting rats under the village first until you can afford at least a wooden shield.' }, function(player) return not player:hasRookgaardShield() end) - -addMonsterKeyword(10, 'It looks like you have mastered the drill.') -addMonsterKeyword(8, 'It looks like you have mastered the drill. Talk to the {oracle} to travel to other places and start getting some real battle experience.') -addMonsterKeyword(7, 'You are almost strong enough to leave this island. If you\'d like to go somewhere new, why don\'t you try skeletons? I\'ll mark a cave on your map, but be careful, there are lots of other creatures on the way.', - { { position = Position(31972, 32130, 7), type = MAPMARK_GREENSOUTH, description = 'Skeleton Cave' } } -) -addMonsterKeyword(6, 'Nice job out there, |PLAYERNAME|. Have you already explored the whole North Ruin? If you are courageous enough, you could test your skills on wasps. But be careful, they are fast and poisonous! I\'ll mark them for you.', - { { position = Position(32000, 32139, 7), type = MAPMARK_GREENNORTH, description = 'Wasps\' Nest' }, { position = Position(32000, 32137, 6), type = MAPMARK_GREENNORTH, description = 'Wasp Hive' } } -) -addMonsterKeyword(5, 'Are you already tired of the North Ruin? You could try some bears, but be careful, they hit hard. I\'ll mark a cave on your map.', - { { position = Position(32146, 32207, 7), type = MAPMARK_GREENSOUTH, description = 'Bear Cave' } } +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Hmm, |PLAYERNAME|. I really don't know if you should go into the wilderness without a shield. You should earn some money by hunting rats under the village first until you can afford at least a wooden shield." }, function(player) + return not player:hasRookgaardShield() +end) + +addMonsterKeyword(10, "It looks like you have mastered the drill.") +addMonsterKeyword(8, "It looks like you have mastered the drill. Talk to the {oracle} to travel to other places and start getting some real battle experience.") +addMonsterKeyword(7, "You are almost strong enough to leave this island. If you'd like to go somewhere new, why don't you try skeletons? I'll mark a cave on your map, but be careful, there are lots of other creatures on the way.", { { position = Position(31972, 32130, 7), type = MAPMARK_GREENSOUTH, description = "Skeleton Cave" } }) +addMonsterKeyword( + 6, + "Nice job out there, |PLAYERNAME|. Have you already explored the whole North Ruin? If you are courageous enough, you could test your skills on wasps. But be careful, they are fast and poisonous! I'll mark them for you.", + { { position = Position(32000, 32139, 7), type = MAPMARK_GREENNORTH, description = "Wasps' Nest" }, { position = Position(32000, 32137, 6), type = MAPMARK_GREENNORTH, description = "Wasp Hive" } } ) -addMonsterKeyword(4, 'You\'re halfway on leaving this island. I guess you might be ready for some stronger monsters such as {trolls} or {orcs}. Check out the North Ruin which I\'ll mark on your map right now, but don\'t go too deep.', - { { position = Position(32094, 32137, 7), type = MAPMARK_GREENSOUTH, description = 'North Ruin' } } -) -addMonsterKeyword(3, 'Well, you can still stay with {spiders} or {snakes}, but maybe you\'d like to try fighting a {bug} or even a {wolf}? I\'ll mark a den that I know on your map right now. Don\'t forget torch and rope!', - { { position = Position(32155, 32122, 7), type = MAPMARK_GREENSOUTH, description = 'Wolf Den' } } -) -addMonsterKeyword(2, 'You still look a little wimpy. If you want to kill something other than {rats}, you may leave town to hunt {spiders} or {snakes}. I\'ll mark some spawns on your map right now. Don\'t forget torch and rope!', - { { position = Position(32027, 32171, 7), type = MAPMARK_GREENSOUTH, description = 'Snake Swamp' }, { position = Position(31967, 32169, 7), type = MAPMARK_GREENSOUTH, description = 'Spiderweb Hole' } } -) -addMonsterKeyword(1, 'You are much too young and inexperienced to cross the bridge. Stay in the sewers. I\'ll mark an entrance on your map right now.', - { { position = Position(32097, 32205, 7), type = MAPMARK_GREENSOUTH, description = 'Sewer Entrance' } } +addMonsterKeyword(5, "Are you already tired of the North Ruin? You could try some bears, but be careful, they hit hard. I'll mark a cave on your map.", { { position = Position(32146, 32207, 7), type = MAPMARK_GREENSOUTH, description = "Bear Cave" } }) +addMonsterKeyword(4, "You're halfway on leaving this island. I guess you might be ready for some stronger monsters such as {trolls} or {orcs}. Check out the North Ruin which I'll mark on your map right now, but don't go too deep.", { { position = Position(32094, 32137, 7), type = MAPMARK_GREENSOUTH, description = "North Ruin" } }) +addMonsterKeyword(3, "Well, you can still stay with {spiders} or {snakes}, but maybe you'd like to try fighting a {bug} or even a {wolf}? I'll mark a den that I know on your map right now. Don't forget torch and rope!", { { position = Position(32155, 32122, 7), type = MAPMARK_GREENSOUTH, description = "Wolf Den" } }) +addMonsterKeyword( + 2, + "You still look a little wimpy. If you want to kill something other than {rats}, you may leave town to hunt {spiders} or {snakes}. I'll mark some spawns on your map right now. Don't forget torch and rope!", + { { position = Position(32027, 32171, 7), type = MAPMARK_GREENSOUTH, description = "Snake Swamp" }, { position = Position(31967, 32169, 7), type = MAPMARK_GREENSOUTH, description = "Spiderweb Hole" } } ) +addMonsterKeyword(1, "You are much too young and inexperienced to cross the bridge. Stay in the sewers. I'll mark an entrance on your map right now.", { { position = Position(32097, 32205, 7), type = MAPMARK_GREENSOUTH, description = "Sewer Entrance" } }) -- Basic keywords -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'Dallheim, at your service.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the guard of this bridge. I defend Rookgaard against the beasts of the {wilderness} and the {dungeons}, and even of the stinking {sewers}.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'My duty is eternal. Time is of no importance.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'Before you fight monsters, deposit your money there. If you die, you won\'t lose it if it\'s save in the bank.' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine.' }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'I have to stay here, sorry. But I can heal you if you are wounded. I have also valuable information about {monsters}.' }) -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m an expert concerning the wildlife and {monsters} on this island.' }) -keywordHandler:addKeyword({ 'citizen' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'ll protect all citizens alike. That is my {job} and duty.' }) -keywordHandler:addKeyword({ 'rat' }, StdModule.say, { npcHandler = npcHandler, text = 'Did you know that rats are among the most dangerous animals in whole Tibia? Each day, they kill many people who are overestimating their powers. Don\'t be one of them!' }) -keywordHandler:addKeyword({ 'spider' }, StdModule.say, { npcHandler = npcHandler, text = 'There are two types of spiders on this island: normal spiders and poison spiders. As their name says, the latter ones can poison you which will cause a constant loss of your health. Beware of them!' }) -keywordHandler:addKeyword({ 'troll' }, StdModule.say, { npcHandler = npcHandler, text = 'Once you have upgraded your starter {equipment} a little - maybe leather stuff - and got a better weapon as well as a shield, you should be able to kill trolls.' }) -keywordHandler:addKeyword({ 'wolf' }, StdModule.say, { npcHandler = npcHandler, text = 'You need a stronger weapon than the starter club to kill wolves. Maybe a {sabre} or a short {sword} will do.' }) -keywordHandler:addAliasKeyword({ 'wolves' }) -keywordHandler:addKeyword({ 'orc' }, StdModule.say, { npcHandler = npcHandler, text = 'Orcs are a constant menace. There are even stronger species of orcs on the main continent.' }) -keywordHandler:addKeyword({ 'minotaur' }, StdModule.say, { npcHandler = npcHandler, text = 'Minotaurs are very strong. You will need a group of people or at least level 6 and good equipment to be able to kill them.' }) -keywordHandler:addKeyword({ 'bug' }, StdModule.say, { npcHandler = npcHandler, text = 'They are a little tougher than they look like, but they\'re still good beginner monsters.' }) -keywordHandler:addKeyword({ 'skeleton' }, StdModule.say, { npcHandler = npcHandler, text = 'The skeletons on this island are usually fairly hidden. They are often found near graves and always underground. Beware of their evil life drain.' }) -keywordHandler:addKeyword({ 'bear' }, StdModule.say, { npcHandler = npcHandler, text = 'A bear can easily kill you if you don\'t pay attention.' }) -keywordHandler:addKeyword({ 'wasp' }, StdModule.say, { npcHandler = npcHandler, text = 'Wasps are the fastest monsters on this island and they poison you. If you ever run into one and are already low of health, fear for your life!' }) -keywordHandler:addKeyword({ 'snake' }, StdModule.say, { npcHandler = npcHandler, text = 'Snakes can poison you, too, but their poison is usually not as dangerous as that of poison spiders. Just be careful and kill them fast.' }) -keywordHandler:addKeyword({ 'premium' }, StdModule.say, { npcHandler = npcHandler, text = 'Premium warriors pay. They gain many advantages this way.' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'HAIL TO THE KING!' }) -keywordHandler:addKeyword({ 'academy' }, StdModule.say, { npcHandler = npcHandler, text = 'All that theory won\'t help you without some real battle practice.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'A place of protection. Nothing can harm you there.' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'I can mark you some dungeons on your map if you ask me about {monsters} suited for your level.' }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { npcHandler = npcHandler, text = 'The sewers are crowded with {rats}. They make fine targets for young heroes.' }) -keywordHandler:addKeyword({ 'wilderness' }, StdModule.say, { npcHandler = npcHandler, text = 'There are {wolves}, {bears}, {snakes}, {deer}, and {spiders} in the wilderness past this bridge.' }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a follower of {Banor}.' }) -keywordHandler:addKeyword({ 'banor' }, StdModule.say, { npcHandler = npcHandler, text = 'The heavenly warrior! Hail to him!' }) -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m not interested in such party tricks.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'A nice place for a hero, but nothing for whelps.' }) - -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s my duty to protect this village and its {citizens}.' }) -keywordHandler:addAliasKeyword({ 'village' }) - -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'It looks like you have mastered the drill.' }) - -keywordHandler:addKeyword({ 'trade' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, I don\'t trade. Ask the shop owners for a trade instead.' }) -keywordHandler:addAliasKeyword({ 'offer' }) -keywordHandler:addAliasKeyword({ 'stuff' }) -keywordHandler:addAliasKeyword({ 'wares' }) -keywordHandler:addAliasKeyword({ 'sell' }) -keywordHandler:addAliasKeyword({ 'buy' }) -keywordHandler:addAliasKeyword({ 'sword' }) -keywordHandler:addAliasKeyword({ 'sabre' }) -keywordHandler:addAliasKeyword({ 'equip' }) -keywordHandler:addAliasKeyword({ 'weapon' }) -keywordHandler:addAliasKeyword({ 'armor' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addAliasKeyword({ 'food' }) -keywordHandler:addAliasKeyword({ 'potion' }) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Dallheim, at your service." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the guard of this bridge. I defend Rookgaard against the beasts of the {wilderness} and the {dungeons}, and even of the stinking {sewers}." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "My duty is eternal. Time is of no importance." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "Before you fight monsters, deposit your money there. If you die, you won't lose it if it's save in the bank." }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "Fine." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "I have to stay here, sorry. But I can heal you if you are wounded. I have also valuable information about {monsters}." }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "I'm an expert concerning the wildlife and {monsters} on this island." }) +keywordHandler:addKeyword({ "citizen" }, StdModule.say, { npcHandler = npcHandler, text = "I'll protect all citizens alike. That is my {job} and duty." }) +keywordHandler:addKeyword({ "rat" }, StdModule.say, { npcHandler = npcHandler, text = "Did you know that rats are among the most dangerous animals in whole Tibia? Each day, they kill many people who are overestimating their powers. Don't be one of them!" }) +keywordHandler:addKeyword({ "spider" }, StdModule.say, { npcHandler = npcHandler, text = "There are two types of spiders on this island: normal spiders and poison spiders. As their name says, the latter ones can poison you which will cause a constant loss of your health. Beware of them!" }) +keywordHandler:addKeyword({ "troll" }, StdModule.say, { npcHandler = npcHandler, text = "Once you have upgraded your starter {equipment} a little - maybe leather stuff - and got a better weapon as well as a shield, you should be able to kill trolls." }) +keywordHandler:addKeyword({ "wolf" }, StdModule.say, { npcHandler = npcHandler, text = "You need a stronger weapon than the starter club to kill wolves. Maybe a {sabre} or a short {sword} will do." }) +keywordHandler:addAliasKeyword({ "wolves" }) +keywordHandler:addKeyword({ "orc" }, StdModule.say, { npcHandler = npcHandler, text = "Orcs are a constant menace. There are even stronger species of orcs on the main continent." }) +keywordHandler:addKeyword({ "minotaur" }, StdModule.say, { npcHandler = npcHandler, text = "Minotaurs are very strong. You will need a group of people or at least level 6 and good equipment to be able to kill them." }) +keywordHandler:addKeyword({ "bug" }, StdModule.say, { npcHandler = npcHandler, text = "They are a little tougher than they look like, but they're still good beginner monsters." }) +keywordHandler:addKeyword({ "skeleton" }, StdModule.say, { npcHandler = npcHandler, text = "The skeletons on this island are usually fairly hidden. They are often found near graves and always underground. Beware of their evil life drain." }) +keywordHandler:addKeyword({ "bear" }, StdModule.say, { npcHandler = npcHandler, text = "A bear can easily kill you if you don't pay attention." }) +keywordHandler:addKeyword({ "wasp" }, StdModule.say, { npcHandler = npcHandler, text = "Wasps are the fastest monsters on this island and they poison you. If you ever run into one and are already low of health, fear for your life!" }) +keywordHandler:addKeyword({ "snake" }, StdModule.say, { npcHandler = npcHandler, text = "Snakes can poison you, too, but their poison is usually not as dangerous as that of poison spiders. Just be careful and kill them fast." }) +keywordHandler:addKeyword({ "premium" }, StdModule.say, { npcHandler = npcHandler, text = "Premium warriors pay. They gain many advantages this way." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "HAIL TO THE KING!" }) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { npcHandler = npcHandler, text = "All that theory won't help you without some real battle practice." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "A place of protection. Nothing can harm you there." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "I can mark you some dungeons on your map if you ask me about {monsters} suited for your level." }) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, text = "The sewers are crowded with {rats}. They make fine targets for young heroes." }) +keywordHandler:addKeyword({ "wilderness" }, StdModule.say, { npcHandler = npcHandler, text = "There are {wolves}, {bears}, {snakes}, {deer}, and {spiders} in the wilderness past this bridge." }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a follower of {Banor}." }) +keywordHandler:addKeyword({ "banor" }, StdModule.say, { npcHandler = npcHandler, text = "The heavenly warrior! Hail to him!" }) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "I'm not interested in such party tricks." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "A nice place for a hero, but nothing for whelps." }) + +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { npcHandler = npcHandler, text = "It's my duty to protect this village and its {citizens}." }) +keywordHandler:addAliasKeyword({ "village" }) + +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "It looks like you have mastered the drill." }) + +keywordHandler:addKeyword({ "trade" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, I don't trade. Ask the shop owners for a trade instead." }) +keywordHandler:addAliasKeyword({ "offer" }) +keywordHandler:addAliasKeyword({ "stuff" }) +keywordHandler:addAliasKeyword({ "wares" }) +keywordHandler:addAliasKeyword({ "sell" }) +keywordHandler:addAliasKeyword({ "buy" }) +keywordHandler:addAliasKeyword({ "sword" }) +keywordHandler:addAliasKeyword({ "sabre" }) +keywordHandler:addAliasKeyword({ "equip" }) +keywordHandler:addAliasKeyword({ "weapon" }) +keywordHandler:addAliasKeyword({ "armor" }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addAliasKeyword({ "food" }) +keywordHandler:addAliasKeyword({ "potion" }) -- Names -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t approve of her opening a bar. Those drunken adventurers stumbling over the bridge at nighttime are not especially helpful in improving the situation.' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'Zerbrus tells me such strange stories about him. Well, he sees him all day from the west bridge.' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'He dedicated his life to welcoming newcomers to this island.' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'Nice old lady.' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'He has been on this island as long as me.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t trust her.' }) -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = 'He guards the temple and can heal you if you are badly injured or poisoned, just like me.' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'She\'s {Obi\'s} granddaughter and deals with {armors} and {shields}. Her shop is south west of town, close to the temple.' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'Strange fellow, hides somewhere in the mountains of the isle.' }) -keywordHandler:addKeyword({ 'lee\'delle' }, StdModule.say, { npcHandler = npcHandler, text = 'Her shop is on the {premium} side of town. Best offers around.' }) -keywordHandler:addKeyword({ 'lily' }, StdModule.say, { npcHandler = npcHandler, text = 'Sometimes I wish I had an easy job like her, selling {potions} all day.' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'You can find the oracle on the top floor of the {academy}, just above Seymour. Go there when you are level 8.' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'The local bank clerk.' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'Leave me alone with this wimp.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s the local tanner. You could try selling fresh corpses or leather to him.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'At your service.' }) -keywordHandler:addKeyword({ 'zerbrus' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s guarding the west bridge. Not that a real threat would lurk on the other side.' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'He is a fine cook and farmer. He buys and sells {food}.' }) -keywordHandler:addAliasKeyword({ 'willie' }) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "I don't approve of her opening a bar. Those drunken adventurers stumbling over the bridge at nighttime are not especially helpful in improving the situation." }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "Zerbrus tells me such strange stories about him. Well, he sees him all day from the west bridge." }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "He dedicated his life to welcoming newcomers to this island." }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "Nice old lady." }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "He has been on this island as long as me." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "I don't trust her." }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = "He guards the temple and can heal you if you are badly injured or poisoned, just like me." }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "She's {Obi's} granddaughter and deals with {armors} and {shields}. Her shop is south west of town, close to the temple." }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "Strange fellow, hides somewhere in the mountains of the isle." }) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { npcHandler = npcHandler, text = "Her shop is on the {premium} side of town. Best offers around." }) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { npcHandler = npcHandler, text = "Sometimes I wish I had an easy job like her, selling {potions} all day." }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "You can find the oracle on the top floor of the {academy}, just above Seymour. Go there when you are level 8." }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "The local bank clerk." }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "Leave me alone with this wimp." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "He's the local tanner. You could try selling fresh corpses or leather to him." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "At your service." }) +keywordHandler:addKeyword({ "zerbrus" }, StdModule.say, { npcHandler = npcHandler, text = "He's guarding the west bridge. Not that a real threat would lurk on the other side." }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "He is a fine cook and farmer. He buys and sells {food}." }) +keywordHandler:addAliasKeyword({ "willie" }) -- Healing -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are poisoned. I will help you.' }, - function(player) return player:getCondition(CONDITION_POISON) ~= nil end, - function(player) - local health = player:getHealth() - if health < 65 then player:addHealth(65 - health) end - player:removeCondition(CONDITION_POISON) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are poisoned. I will help you." }, function(player) + return player:getCondition(CONDITION_POISON) ~= nil +end, function(player) + local health = player:getHealth() + if health < 65 then + player:addHealth(65 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are looking really bad. Let me heal your wounds.' }, - function(player) return player:getHealth() < 65 end, - function(player) - local health = player:getHealth() - if health < 65 then player:addHealth(65 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) + player:removeCondition(CONDITION_POISON) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are looking really bad. Let me heal your wounds." }, function(player) + return player:getHealth() < 65 +end, function(player) + local health = player:getHealth() + if health < 65 then + player:addHealth(65 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking really bad. Eat some food to regain strength.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking really bad. Eat some food to regain strength." }) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Hm.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Hm.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/dancing_fairy.lua b/data-otservbr-global/npc/dancing_fairy.lua index f4892b70e93..e9f95e0439b 100644 --- a/data-otservbr-global/npc/dancing_fairy.lua +++ b/data-otservbr-global/npc/dancing_fairy.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 25747 + lookTypeEx = 25747, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,18 +55,17 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "spell") then - if player:getStorageValue(ThreatenedDreams.Mission03[1]) == 1 - and player:getStorageValue(ThreatenedDreams.Mission03.UnlikelyCouple) == 1 then + if player:getStorageValue(ThreatenedDreams.Mission03[1]) == 1 and player:getStorageValue(ThreatenedDreams.Mission03.UnlikelyCouple) == 1 then npcHandler:say({ "So, you are searching for a way to transform Aurita's fishtail into legs temporarily. As you might already have figured out you need some magic for this purpose. There is a place on Feyrist where you can find the arcane energies you need. ...", "Northeast from here you'll discover a big lake with a small island. Take a swim there and you will find a magical fountain. If you play the panpipes while standing near this fountain, you will create some magical music notes. ...", - "Collect them and give them to Aurita. Each of those notes will grant her a walk on the beach with Taegen." + "Collect them and give them to Aurita. Each of those notes will grant her a walk on the beach with Taegen.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission03.UnlikelyCouple, 2) npcHandler:setTopic(playerId, 0) else npcHandler:say({ - "Each of those notes will grant her a walk on the beach with Taegen." + "Each of those notes will grant her a walk on the beach with Taegen.", }, npc, creature) npcHandler:setTopic(playerId, 0) end @@ -74,7 +73,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "That's very kind of you, my friend! Listen: I know there is a spell to transform my fishtail into legs. It is a temporary effect, so I could return to the ocean as soon as the spell ends. Unfortunately I don't know how to cast this spell. ...", - "But there is a fairy who once told me about it. Perhaps she will share her knowledge. You can find her in a small fairy village in the southwest of Feyrist." + "But there is a fairy who once told me about it. Perhaps she will share her knowledge. You can find her in a small fairy village in the southwest of Feyrist.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission03.UnlikelyCouple, 1) npcHandler:setTopic(playerId, 0) diff --git a/data-otservbr-global/npc/dane.lua b/data-otservbr-global/npc/dane.lua index ad436bda747..2722cea8f40 100644 --- a/data-otservbr-global/npc/dane.lua +++ b/data-otservbr-global/npc/dane.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 97, lookLegs = 86, lookFeet = 96, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,14 +50,14 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the owner of this place of relaxation." }) -keywordHandler:addKeyword({ 'wave cellar' }, StdModule.say, { npcHandler = npcHandler, text = "It's pretty, isn't it?" }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I am Dane." }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "It is exactly |TIME|." }) -keywordHandler:addKeyword({ 'offer' }, StdModule.say, { npcHandler = npcHandler, text = "I can offer you milk, water, and lemonade." }) -keywordHandler:addKeyword({ 'alcohol' }, StdModule.say, { npcHandler = npcHandler, text = "Alcohol makes people too aggressive. We don't need such stuff in Carlin." }) -keywordHandler:addKeyword({ 'beer' }, StdModule.say, { npcHandler = npcHandler, text = "Alcohol makes people too aggressive. We don't need such stuff in Carlin." }) -keywordHandler:addKeyword({ 'wine' }, StdModule.say, { npcHandler = npcHandler, text = "Alcohol makes people too aggressive. We don't need such stuff in Carlin." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the owner of this place of relaxation." }) +keywordHandler:addKeyword({ "wave cellar" }, StdModule.say, { npcHandler = npcHandler, text = "It's pretty, isn't it?" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am Dane." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It is exactly |TIME|." }) +keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "I can offer you milk, water, and lemonade." }) +keywordHandler:addKeyword({ "alcohol" }, StdModule.say, { npcHandler = npcHandler, text = "Alcohol makes people too aggressive. We don't need such stuff in Carlin." }) +keywordHandler:addKeyword({ "beer" }, StdModule.say, { npcHandler = npcHandler, text = "Alcohol makes people too aggressive. We don't need such stuff in Carlin." }) +keywordHandler:addKeyword({ "wine" }, StdModule.say, { npcHandler = npcHandler, text = "Alcohol makes people too aggressive. We don't need such stuff in Carlin." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to the wave cellar, |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_FAREWELL, "Please come back from time to time.") @@ -66,7 +66,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "bottle of lemonade", clientId = 2875, buy = 12, count = 12 }, { itemName = "bottle of milk", clientId = 2875, buy = 4, count = 9 }, - { itemName = "bottle of water", clientId = 2875, buy = 2, count = 1 } + { itemName = "bottle of water", clientId = 2875, buy = 2, count = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -77,7 +77,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/daniel_steelsoul.lua b/data-otservbr-global/npc/daniel_steelsoul.lua index acfc73fdeb0..88c652e9d51 100644 --- a/data-otservbr-global/npc/daniel_steelsoul.lua +++ b/data-otservbr-global/npc/daniel_steelsoul.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 73 + lookType = 73, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -123,7 +123,8 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.KillingInTheNameOf.TrollTask) < 0 then npcHandler:say({ "The trolls living west of our city have become quite a nuisance lately. Not that they are really dangerous to us, but still, we must show them that there's a line they shouldn't cross. ...", - "I want you to kill 100 of them. If you succeed, I'll provide you some pretty coins and experience. Are you willing to take on this task?" }, npc, creature) + "I want you to kill 100 of them. If you succeed, I'll provide you some pretty coins and experience. Are you willing to take on this task?", + }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.KillingInTheNameOf.TrollTask) == 1 and player:getStorageValue(Storage.KillingInTheNameOf.GoblinTask) == 1 then npcHandler:say("Currently there is no new task I could entrust you with. However, you can repeat killing {goblins} or {trolls}. Which would you prefer?", npc, creature) @@ -131,7 +132,8 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.KillingInTheNameOf.TrollTask) == 1 then npcHandler:say({ "It's not only the trolls invading from the west coast. Goblins also have a lair there where they constantly prepare for their next attack. ...", - "If you could kill 150 goblins for us, that'd be a good start. Would you be willing to help us in this matter?" }, npc, creature) + "If you could kill 150 goblins for us, that'd be a good start. Would you be willing to help us in this matter?", + }, npc, creature) npcHandler:setTopic(playerId, 3) end end @@ -139,7 +141,8 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.KillingInTheNameOf.CyclopsTask) < 0 or player:getStorageValue(Storage.KillingInTheNameOf.CyclopsTask) == 1 then npcHandler:say({ "We've successfully driven the minotaurs off this island, but the underground city of the cyclopes - Cyclopolis - is still standing. ...", - "We're always looking for adventurers who'd help us decimate the number of cyclopes. Will you assist the city of Edron by killing 500 of them?" }, npc, creature) + "We're always looking for adventurers who'd help us decimate the number of cyclopes. Will you assist the city of Edron by killing 500 of them?", + }, npc, creature) npcHandler:setTopic(playerId, 6) return true end @@ -174,7 +177,8 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.TibiaTales.AgainstTheSpiderCult, 1) npcHandler:say({ "Very well, maybe you know that the orcs here in Edron learnt to raise giant spiders. It is going to become a serious threat. ...", - "The mission is simple: go to the orcs and destroy all spider eggs that are hatched by the giant spider they have managed to catch. The orcs are located in the south of the western part of the island." }, npc, creature) + "The mission is simple: go to the orcs and destroy all spider eggs that are hatched by the giant spider they have managed to catch. The orcs are located in the south of the western part of the island.", + }, npc, creature) elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say("I'm pleased with your eagerness. To help you find the trolls' den, I mark both the entrance to the passage and their lair on your map. To reach your goal, you have to kill the normal brown trolls, but troll champions count too. Good luck!", npc, creature) player:setStorageValue(JOIN_STOR, 1) @@ -195,7 +199,8 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 5 then npcHandler:say({ "Great! You can find rotworms south of the city, for example. Take a rope and shovel and look for loose stone piles to dig open. ...", - "You can kill normal rotworms as well as their larger brothers, the carrion worms, to fulfil your task. Be careful and good luck!" }, npc, creature) + "You can kill normal rotworms as well as their larger brothers, the carrion worms, to fulfil your task. Be careful and good luck!", + }, npc, creature) player:setStorageValue(JOIN_STOR, 1) player:setStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.RotwormCount, 0) player:setStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.RotwormCount, 0) @@ -206,7 +211,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "I'm impressed with your dedication and courage. I can't show you the exact location of cyclopolis on the map though. It is somewhere north of Edron city. ...", "Exit the city and go through a mountain passage leading to the west, then keep on heading north. The entrance is marked by large, obelisk-like stones arranged in a circle. ...", - "You can kill normal cyclopes as well as drones and smiths to reach your goal. Good hunting!" }, npc, creature) + "You can kill normal cyclopes as well as drones and smiths to reach your goal. Good hunting!", + }, npc, creature) player:setStorageValue(JOIN_STOR, 1) player:setStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.CyclopsCount, 0) player:setStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.CyclopsCount, 0) @@ -237,8 +243,8 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the governor of this isle, Edron, and grandmaster of the Knights of Banor's Blood." }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = "LONG LIVE THE KING!" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the governor of this isle, Edron, and grandmaster of the Knights of Banor's Blood." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "LONG LIVE THE KING!" }) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setMessage(MESSAGE_GREET, "Greetings and {Banor} be with you, |PLAYERNAME|!") diff --git a/data-otservbr-global/npc/dankwart.lua b/data-otservbr-global/npc/dankwart.lua index c3d85de5b51..2f11b2edc66 100644 --- a/data-otservbr-global/npc/dankwart.lua +++ b/data-otservbr-global/npc/dankwart.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 58, lookLegs = 58, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,7 @@ npcConfig.shop = { { itemName = "ham", clientId = 3582, buy = 8 }, { itemName = "meat", clientId = 3577, buy = 5 }, { itemName = "mug of mead", clientId = 2880, buy = 5, count = 16 }, - { itemName = "mug of tea", clientId = 2880, buy = 3, count = 17 } + { itemName = "mug of tea", clientId = 2880, buy = 3, count = 17 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -69,7 +69,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/danlon.lua b/data-otservbr-global/npc/danlon.lua index ce837e84342..764131444b7 100644 --- a/data-otservbr-global/npc/danlon.lua +++ b/data-otservbr-global/npc/danlon.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 42, lookLegs = 40, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/dario.lua b/data-otservbr-global/npc/dario.lua index 54212f7e941..4a0368b4c88 100644 --- a/data-otservbr-global/npc/dario.lua +++ b/data-otservbr-global/npc/dario.lua @@ -15,18 +15,18 @@ npcConfig.outfit = { lookHead = 3, lookBody = 58, lookLegs = 41, - lookFeet = 115 + lookFeet = 115, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Increase your knowledge of spells here, young paladin.' }, - { text = 'Need ammunition, bows or crossbows? Have a look at my wares.' } + { text = "Increase your knowledge of spells here, young paladin." }, + { text = "Need ammunition, bows or crossbows? Have a look at my wares." }, } local keywordHandler = KeywordHandler:new() @@ -92,7 +92,7 @@ npcConfig.shop = { { itemName = "spectral bolt", clientId = 35902, buy = 70 }, { itemName = "tarsal arrow", clientId = 14251, buy = 6 }, { itemName = "throwing star", clientId = 3287, buy = 42 }, - { itemName = "vortex bolt", clientId = 14252, buy = 6 } + { itemName = "vortex bolt", clientId = 14252, buy = 6 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -103,7 +103,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/dark_percht_sleigh.lua b/data-otservbr-global/npc/dark_percht_sleigh.lua index 47a0fc2299a..3628f7dcb0e 100644 --- a/data-otservbr-global/npc/dark_percht_sleigh.lua +++ b/data-otservbr-global/npc/dark_percht_sleigh.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 1165 + lookType = 1165, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/dedoras.lua b/data-otservbr-global/npc/dedoras.lua index 0cc387f191f..79ac24a9678 100644 --- a/data-otservbr-global/npc/dedoras.lua +++ b/data-otservbr-global/npc/dedoras.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 78, lookFeet = 77, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,8 +57,7 @@ local function greetCallback(npc, creature) if player:getStorageValue(Storage.Kilmaresh.First.Access) < 1 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) - and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then + elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 15) elseif player:getStorageValue(Storage.Kilmaresh.First.Mission) == 4 then @@ -77,7 +76,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "report") and player:getStorageValue(Storage.TheSecretLibrary.PinkTel) == 1 then npcHandler:say({ "Talk to Captain Charles in Port Hope. He told me that he once ran ashore on a small island where he discovered a small ruin. The architecture was like nothing he had seen before." }, npc, creature) player:setStorageValue(Storage.TheSecretLibrary.PinkTel, 2) @@ -86,13 +84,15 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "check") and player:getStorageValue(Storage.TheSecretLibrary.HighDry) == 5 then - npcHandler:say({ "Marvellous! With this information combined we have all that's needed! ...", + npcHandler:say({ + "Marvellous! With this information combined we have all that's needed! ...", "So let me see. ...", "Hmm, interesting. And we shouldn't forget about the chant! Yes, excellent! ...", "So listen: To enter the veiled library, travel to the white raven monastery on the Isle of Kings and enter its main altar room. ...", "There, use an ordinary scythe on the right of the two monuments, while concentrating on this glyph here and chant the words: Chamek Athra Thull Zathroth ...", "Oh, and one other thing. For your efforts I want to reward you with one of my old outfits, back from my adventuring days. May it suit you well! ...", - "Hurry now my friend. Time is of essence!" }, npc, creature) + "Hurry now my friend. Time is of essence!", + }, npc, creature) player:setStorageValue(Storage.TheSecretLibrary.HighDry, 6) npcHandler:setTopic(playerId, 1) npcHandler:setTopic(playerId, 1) @@ -101,7 +101,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/demon_skeleton.lua b/data-otservbr-global/npc/demon_skeleton.lua index 2bbd8a29112..4d9e8948622 100644 --- a/data-otservbr-global/npc/demon_skeleton.lua +++ b/data-otservbr-global/npc/demon_skeleton.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 37 + lookType = 37, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/demonguard.lua b/data-otservbr-global/npc/demonguard.lua index dd6b1b52ba0..5093b46ae9b 100644 --- a/data-otservbr-global/npc/demonguard.lua +++ b/data-otservbr-global/npc/demonguard.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 94, lookFeet = 94, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/denominator.lua b/data-otservbr-global/npc/denominator.lua index 89570ee6323..e41ed2c051c 100644 --- a/data-otservbr-global/npc/denominator.lua +++ b/data-otservbr-global/npc/denominator.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 2025 + lookTypeEx = 2025, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -62,67 +62,91 @@ local function greetCallback(npc, creature) end local quiz1 = { - [1] = { p = "The sum of first and second digit?", r = function(player) - player:setStorageValue(Storage.CultsOfTibia.MotA.Answer, player:getStorageValue(Storage.CultsOfTibia.MotA.Stone1) + player:getStorageValue(Storage.CultsOfTibia.MotA.Stone2)) - return player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) - end }, - [2] = { p = "The sum of second and third digit?", r = function(player) - player:setStorageValue(Storage.CultsOfTibia.MotA.Answer, player:getStorageValue(Storage.CultsOfTibia.MotA.Stone2) + player:getStorageValue(Storage.CultsOfTibia.MotA.Stone3)) - return player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) - end }, - [3] = { p = "The sum of first and third digit?", r = function(player) - player:setStorageValue(Storage.CultsOfTibia.MotA.Answer, player:getStorageValue(Storage.CultsOfTibia.MotA.Stone1) + player:getStorageValue(Storage.CultsOfTibia.MotA.Stone3)) - return player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) - end }, - [4] = { p = "The digit sum?", r = function(player) - player:setStorageValue(Storage.CultsOfTibia.MotA.Answer, player:getStorageValue(Storage.CultsOfTibia.MotA.Stone1) + player:getStorageValue(Storage.CultsOfTibia.MotA.Stone2) + player:getStorageValue(Storage.CultsOfTibia.MotA.Stone3)) - return player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) - end } + [1] = { + p = "The sum of first and second digit?", + r = function(player) + player:setStorageValue(Storage.CultsOfTibia.MotA.Answer, player:getStorageValue(Storage.CultsOfTibia.MotA.Stone1) + player:getStorageValue(Storage.CultsOfTibia.MotA.Stone2)) + return player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) + end, + }, + [2] = { + p = "The sum of second and third digit?", + r = function(player) + player:setStorageValue(Storage.CultsOfTibia.MotA.Answer, player:getStorageValue(Storage.CultsOfTibia.MotA.Stone2) + player:getStorageValue(Storage.CultsOfTibia.MotA.Stone3)) + return player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) + end, + }, + [3] = { + p = "The sum of first and third digit?", + r = function(player) + player:setStorageValue(Storage.CultsOfTibia.MotA.Answer, player:getStorageValue(Storage.CultsOfTibia.MotA.Stone1) + player:getStorageValue(Storage.CultsOfTibia.MotA.Stone3)) + return player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) + end, + }, + [4] = { + p = "The digit sum?", + r = function(player) + player:setStorageValue(Storage.CultsOfTibia.MotA.Answer, player:getStorageValue(Storage.CultsOfTibia.MotA.Stone1) + player:getStorageValue(Storage.CultsOfTibia.MotA.Stone2) + player:getStorageValue(Storage.CultsOfTibia.MotA.Stone3)) + return player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) + end, + }, } local quiz2 = { - [1] = { p = "Is the number prime?", r = - function(player) - local stg = player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) - if stg < 1 then - return 0 - end - if stg == 1 or stg == 2 then - return 1 - end - local incr = 0 - for i = 1, stg do - if (stg % i == 0) then - incr = incr + 1 - end + [1] = { + p = "Is the number prime?", + r = function(player) + local stg = player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) + if stg < 1 then + return 0 + end + if stg == 1 or stg == 2 then + return 1 + end + local incr = 0 + for i = 1, stg do + if stg % i == 0 then + incr = incr + 1 end - return (incr == 2 and 1 or 0) end + return (incr == 2 and 1 or 0) + end, }, - [2] = { p = "Does the number belong to a prime twing?", r = - function(player) - local stg = player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) - if stg < 2 then - return 0 - end - if stg == 1 or stg == 2 then - return 1 - end - local incr = 0 - for i = 1, stg do - if (stg % i == 0) then - incr = incr + 1 - end + [2] = { + p = "Does the number belong to a prime twing?", + r = function(player) + local stg = player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) + if stg < 2 then + return 0 + end + if stg == 1 or stg == 2 then + return 1 + end + local incr = 0 + for i = 1, stg do + if stg % i == 0 then + incr = incr + 1 end - return (incr == 2 and 1 or 0) end + return (incr == 2 and 1 or 0) + end, }, -- [2] = {p = "", r = ""} } local quiz3 = { - [1] = { p = "Is the number divisible by 3?", r = function(player) return (player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) % 3 == 0 and 1 or 0) end }, - [2] = { p = "Is the number divisible by 2?", r = function(player) return (player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) % 2 == 0 and 1 or 0) end } + [1] = { + p = "Is the number divisible by 3?", + r = function(player) + return (player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) % 3 == 0 and 1 or 0) + end, + }, + [2] = { + p = "Is the number divisible by 2?", + r = function(player) + return (player:getStorageValue(Storage.CultsOfTibia.MotA.Answer) % 2 == 0 and 1 or 0) + end, + }, } local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -143,12 +167,12 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say(quiz1[perguntaid].p, npc, creature) npcHandler:setTopic(playerId, 3) npcHandler:setTopic(playerId, 3) - elseif (npcHandler:getTopic(playerId) == 3) then + elseif npcHandler:getTopic(playerId) == 3 then npcHandler:say(string.format("Your answer is %s, do you want to continue?", message), npc, creature) playerLastResp[playerId] = tonumber(message) npcHandler:setTopic(playerId, 4) npcHandler:setTopic(playerId, 4) - elseif (npcHandler:getTopic(playerId) == 4) then + elseif npcHandler:getTopic(playerId) == 4 then if MsgContains(message, "yes") then local resposta = quiz1[player:getStorageValue(Storage.CultsOfTibia.MotA.QuestionId)].r if playerLastResp[playerId] ~= (tonumber(resposta(player))) then @@ -248,7 +272,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/dermot.lua b/data-otservbr-global/npc/dermot.lua index b8dc1737234..3f66f7f89ec 100644 --- a/data-otservbr-global/npc/dermot.lua +++ b/data-otservbr-global/npc/dermot.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 49, lookLegs = 19, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -89,13 +89,13 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the magistrate of this isle." }) -keywordHandler:addKeyword({ 'magistrate' }, StdModule.say, { npcHandler = npcHandler, text = "Thats me." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I am Dermot, the magistrate of this isle." }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "Time is not important on Fibula." }) -keywordHandler:addKeyword({ 'fibula' }, StdModule.say, { npcHandler = npcHandler, text = "You are at Fibula. This isle is not very dangerous. Just the wolves bother outside the village." }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = "Oh, my god. In the dungeon of Fibula are a lot of monsters. That's why we have sealed it with a solid door." }) -keywordHandler:addKeyword({ 'monsters' }, StdModule.say, { npcHandler = npcHandler, text = "Oh, my god. In the dungeon of Fibula are a lot of monsters. That's why we have sealed it with a solid door." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the magistrate of this isle." }) +keywordHandler:addKeyword({ "magistrate" }, StdModule.say, { npcHandler = npcHandler, text = "Thats me." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am Dermot, the magistrate of this isle." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Time is not important on Fibula." }) +keywordHandler:addKeyword({ "fibula" }, StdModule.say, { npcHandler = npcHandler, text = "You are at Fibula. This isle is not very dangerous. Just the wolves bother outside the village." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, my god. In the dungeon of Fibula are a lot of monsters. That's why we have sealed it with a solid door." }) +keywordHandler:addKeyword({ "monsters" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, my god. In the dungeon of Fibula are a lot of monsters. That's why we have sealed it with a solid door." }) npcHandler:setMessage(MESSAGE_GREET, "Hello, traveller |PLAYERNAME|. How can I help you?") npcHandler:setMessage(MESSAGE_FAREWELL, "See you again.") diff --git a/data-otservbr-global/npc/digger.lua b/data-otservbr-global/npc/digger.lua index b7e72cdce81..e666267a498 100644 --- a/data-otservbr-global/npc/digger.lua +++ b/data-otservbr-global/npc/digger.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -64,7 +64,7 @@ npcConfig.shop = { { itemName = "strong health potion", clientId = 236, buy = 115 }, { itemName = "strong mana potion", clientId = 237, buy = 93 }, { itemName = "ultimate health potion", clientId = 7643, buy = 379 }, - { itemName = "vial", clientId = 2874, sell = 5 } + { itemName = "vial", clientId = 2874, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -75,7 +75,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/dixi.lua b/data-otservbr-global/npc/dixi.lua index 0ea53e4a597..a792b172e46 100644 --- a/data-otservbr-global/npc/dixi.lua +++ b/data-otservbr-global/npc/dixi.lua @@ -16,21 +16,21 @@ npcConfig.outfit = { lookBody = 99, lookLegs = 76, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = ' Get your armor and shields heeeeeeere! Upstairs!', yell = true }, - { text = 'Need some help? Just ask me, I can show you around!' }, - { text = 'Don\'t forget to protect yourself with a shield!' }, - { text = 'Selling the finest armors on Rookgaard!' }, - { text = 'Don\'t let these mean monsters hurt you - get better equipment now!' } + { text = " Get your armor and shields heeeeeeere! Upstairs!", yell = true }, + { text = "Need some help? Just ask me, I can show you around!" }, + { text = "Don't forget to protect yourself with a shield!" }, + { text = "Selling the finest armors on Rookgaard!" }, + { text = "Don't let these mean monsters hurt you - get better equipment now!" }, } local keywordHandler = KeywordHandler:new() @@ -60,86 +60,91 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - -- Greeting and Farewell -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = 'Good day, Ma\'am. How may I help you, |PLAYERNAME|? If you like to see my offers, simply ask me for a trade!' }, function(player) return player:getSex() == PLAYERSEX_FEMALE end) -keywordHandler:addAliasKeyword({ 'hello' }) -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = 'Good day, Sir. How may I help you, |PLAYERNAME|? If you like to see my offers, simply ask me for a trade!' }, function(player) return player:getSex() == PLAYERSEX_FEMALE end) -keywordHandler:addAliasKeyword({ 'hello' }) -keywordHandler:addFarewellKeyword({ 'bye' }, { npcHandler = npcHandler, text = 'Good bye, Ma\'am.' }, function(player) return player:getSex() == PLAYERSEX_FEMALE end) -keywordHandler:addAliasKeyword({ 'farewell' }) -keywordHandler:addFarewellKeyword({ 'bye' }, { npcHandler = npcHandler, text = 'Good bye, Sir.' }) -keywordHandler:addAliasKeyword({ 'farewell' }) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Good day, Ma'am. How may I help you, |PLAYERNAME|? If you like to see my offers, simply ask me for a trade!" }, function(player) + return player:getSex() == PLAYERSEX_FEMALE +end) +keywordHandler:addAliasKeyword({ "hello" }) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Good day, Sir. How may I help you, |PLAYERNAME|? If you like to see my offers, simply ask me for a trade!" }, function(player) + return player:getSex() == PLAYERSEX_FEMALE +end) +keywordHandler:addAliasKeyword({ "hello" }) +keywordHandler:addFarewellKeyword({ "bye" }, { npcHandler = npcHandler, text = "Good bye, Ma'am." }, function(player) + return player:getSex() == PLAYERSEX_FEMALE +end) +keywordHandler:addAliasKeyword({ "farewell" }) +keywordHandler:addFarewellKeyword({ "bye" }, { npcHandler = npcHandler, text = "Good bye, Sir." }) +keywordHandler:addAliasKeyword({ "farewell" }) -- Basic keywords -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m Dixi.' }) -keywordHandler:addKeyword({ 'citizen' }, StdModule.say, { npcHandler = npcHandler, text = ' I love gossiping - err, I mean providing valuable information of course, just tell me a name! ' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m helping my grandfather {Obi} with this shop. If you like to see my offers, simply ask me for a {trade}!' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s |TIME|.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'You can deposit your {money} there to keep it safe. However, you still need cash to buy something here.' }) -keywordHandler:addKeyword({ 'destiny' }, StdModule.say, { npcHandler = npcHandler, text = 'The Island of Destiny can be reached via the {oracle} once you are level 8. This trip will help you choose your {profession}!' }) -keywordHandler:addKeyword({ 'profession' }, StdModule.say, { npcHandler = npcHandler, text = 'You will learn everything you need to know about professions once you reach the {Island of Destiny}.' }) -keywordHandler:addKeyword({ 'premium' }, StdModule.say, { npcHandler = npcHandler, text = 'As a premium adventurer you can visit different regions on this island, trade with {Lee\'Delle} and much more.' }) -keywordHandler:addKeyword({ 'equipment' }, StdModule.say, { npcHandler = npcHandler, text = 'As an adventurer, you should always have at least a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}.' }) -keywordHandler:addKeyword({ 'torch' }, StdModule.say, { npcHandler = npcHandler, text = 'If you need a torch, go see {Al Dee}\'s store.' }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, I\'m sorry, but my grandfather {Obi} doesn\'t like seeing me waving around with pointy things. He sells weapons himself, just go downstairs!' }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = 'Are you hungry? Then you should visit {Willie} or {Billy} in the West of town. {Norma} also has yummy stuff! Oh, and you could pick {blueberries} or eat the food some {monsters} carry with them.' }) -keywordHandler:addKeyword({ 'potion' }, StdModule.say, { npcHandler = npcHandler, text = '{Lily} sells effective health potions and antidote potions against poison.' }) -keywordHandler:addKeyword({ 'academy' }, StdModule.say, { npcHandler = npcHandler, text = 'The big building in the centre of Rookgaard. They have a library, a training centre, a {bank} and the room of the {oracle}. {Seymore} is the teacher there.' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'King Tibianus is a wise and noble monarch. This island of {Rookgaard} belongs to his kingdom.' }) -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, { npcHandler = npcHandler, text = 'Our lovely village will provide shelter for you. Once you are level 8, you can travel to {mainland} and choose a {profession}.' }) -keywordHandler:addKeyword({ 'mainland' }, StdModule.say, { npcHandler = npcHandler, text = 'If you want to fight monsters in {dungeons}, you definitely need some good {equipment} such as a {weapon}, an {armor} and a {shield}.' }) -keywordHandler:addKeyword({ 'buy' }, StdModule.say, { npcHandler = npcHandler, text = 'Just ask me for a {trade} to check out my offers.' }) -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { npcHandler = npcHandler, text = 'Just ask me for a {trade} to see what I buy from you.' }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { npcHandler = npcHandler, text = 'To view the offers of a merchant, simply talk to him or her and ask for a {trade}.' }) -keywordHandler:addKeyword({ 'blueberr' }, StdModule.say, { npcHandler = npcHandler, text = 'There are many blueberry bushes in and around this village. Just use them to your liking!' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'You need to make sure you have some basic {equipment} before you head into dungeons such as the {sewers}.' }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { npcHandler = npcHandler, text = 'There is a sewer grate which you can use to enter the sewers just left of this building. Eww, this smell!' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m fine, thank you.' }) - -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'How can I help you? I can give you general {hints}, information about {citizens} or talk about many other topics. Just ask me!' }) -keywordHandler:addAliasKeyword({ 'information' }) - -keywordHandler:addKeyword({ 'money' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry honey, but I can\'t lend you gold. Earn it yourself by fighting {monsters} and picking up the things they carry. Sell it to {merchants} to make profit!' }) -keywordHandler:addAliasKeyword({ 'gold' }) - -keywordHandler:addKeyword({ 'backpack' }, StdModule.say, { npcHandler = npcHandler, text = 'You should never embark on an adventure without it. Ask {Al Dee} or {Lee\'Delle} for it!' }) -keywordHandler:addAliasKeyword({ 'rope' }) -keywordHandler:addAliasKeyword({ 'shovel' }) -keywordHandler:addAliasKeyword({ 'fishing' }) - -keywordHandler:addKeyword({ 'armor' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I can sell that to you. Just ask me for a {trade} to see what I buy from you.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addAliasKeyword({ 'helmet' }) - -keywordHandler:addKeyword({ 'offer' }, StdModule.say, { npcHandler = npcHandler, text = 'Me and my grandfather {Obi} sell {equipment} of all kinds. Just ask him or me for a {trade} if you like to see our offers.' }) -keywordHandler:addAliasKeyword({ 'stuff' }) -keywordHandler:addAliasKeyword({ 'wares' }) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Dixi." }) +keywordHandler:addKeyword({ "citizen" }, StdModule.say, { npcHandler = npcHandler, text = " I love gossiping - err, I mean providing valuable information of course, just tell me a name! " }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm helping my grandfather {Obi} with this shop. If you like to see my offers, simply ask me for a {trade}!" }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It's |TIME|." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "You can deposit your {money} there to keep it safe. However, you still need cash to buy something here." }) +keywordHandler:addKeyword({ "destiny" }, StdModule.say, { npcHandler = npcHandler, text = "The Island of Destiny can be reached via the {oracle} once you are level 8. This trip will help you choose your {profession}!" }) +keywordHandler:addKeyword({ "profession" }, StdModule.say, { npcHandler = npcHandler, text = "You will learn everything you need to know about professions once you reach the {Island of Destiny}." }) +keywordHandler:addKeyword({ "premium" }, StdModule.say, { npcHandler = npcHandler, text = "As a premium adventurer you can visit different regions on this island, trade with {Lee'Delle} and much more." }) +keywordHandler:addKeyword({ "equipment" }, StdModule.say, { npcHandler = npcHandler, text = "As an adventurer, you should always have at least a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}." }) +keywordHandler:addKeyword({ "torch" }, StdModule.say, { npcHandler = npcHandler, text = "If you need a torch, go see {Al Dee}'s store." }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, I'm sorry, but my grandfather {Obi} doesn't like seeing me waving around with pointy things. He sells weapons himself, just go downstairs!" }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "Are you hungry? Then you should visit {Willie} or {Billy} in the West of town. {Norma} also has yummy stuff! Oh, and you could pick {blueberries} or eat the food some {monsters} carry with them." }) +keywordHandler:addKeyword({ "potion" }, StdModule.say, { npcHandler = npcHandler, text = "{Lily} sells effective health potions and antidote potions against poison." }) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { npcHandler = npcHandler, text = "The big building in the centre of Rookgaard. They have a library, a training centre, a {bank} and the room of the {oracle}. {Seymore} is the teacher there." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "King Tibianus is a wise and noble monarch. This island of {Rookgaard} belongs to his kingdom." }) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { npcHandler = npcHandler, text = "Our lovely village will provide shelter for you. Once you are level 8, you can travel to {mainland} and choose a {profession}." }) +keywordHandler:addKeyword({ "mainland" }, StdModule.say, { npcHandler = npcHandler, text = "If you want to fight monsters in {dungeons}, you definitely need some good {equipment} such as a {weapon}, an {armor} and a {shield}." }) +keywordHandler:addKeyword({ "buy" }, StdModule.say, { npcHandler = npcHandler, text = "Just ask me for a {trade} to check out my offers." }) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, text = "Just ask me for a {trade} to see what I buy from you." }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, text = "To view the offers of a merchant, simply talk to him or her and ask for a {trade}." }) +keywordHandler:addKeyword({ "blueberr" }, StdModule.say, { npcHandler = npcHandler, text = "There are many blueberry bushes in and around this village. Just use them to your liking!" }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "You need to make sure you have some basic {equipment} before you head into dungeons such as the {sewers}." }) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, text = "There is a sewer grate which you can use to enter the sewers just left of this building. Eww, this smell!" }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "I'm fine, thank you." }) + +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "How can I help you? I can give you general {hints}, information about {citizens} or talk about many other topics. Just ask me!" }) +keywordHandler:addAliasKeyword({ "information" }) + +keywordHandler:addKeyword({ "money" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry honey, but I can't lend you gold. Earn it yourself by fighting {monsters} and picking up the things they carry. Sell it to {merchants} to make profit!" }) +keywordHandler:addAliasKeyword({ "gold" }) + +keywordHandler:addKeyword({ "backpack" }, StdModule.say, { npcHandler = npcHandler, text = "You should never embark on an adventure without it. Ask {Al Dee} or {Lee'Delle} for it!" }) +keywordHandler:addAliasKeyword({ "rope" }) +keywordHandler:addAliasKeyword({ "shovel" }) +keywordHandler:addAliasKeyword({ "fishing" }) + +keywordHandler:addKeyword({ "armor" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I can sell that to you. Just ask me for a {trade} to see what I buy from you." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addAliasKeyword({ "helmet" }) + +keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "Me and my grandfather {Obi} sell {equipment} of all kinds. Just ask him or me for a {trade} if you like to see our offers." }) +keywordHandler:addAliasKeyword({ "stuff" }) +keywordHandler:addAliasKeyword({ "wares" }) -- Names -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'Norma used to sell {equipment}, but she finally earned enough {money} to fulfil one of her dreams - her own bar!' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'I never understand what he\'s talking about.' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m glad that he\'s here. He does a great job!' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'Sometimes, I help Zirella collecting wood. Her old back aches all the time. It\'s a shame her son Tom doesn\'t help her.' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'In Al Dee\'s shop you will find important general equipment such as {ropes}, {shovels} and torches.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'One day, I want to become a brave adventurer like her and leave this town!' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'Billy can be kind of scary. He swears a lot and doesn\'t talk to everybody.' }) -keywordHandler:addKeyword({ 'willie' }, StdModule.say, { npcHandler = npcHandler, text = 'Uncle Willie and {Billy} are farmers, which means they are a good place to sell and buy {food}.' }) -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = 'He can heal you if you\'re injured or poisoned.' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'Did I hear my name somewhere?' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'I think he\'s a bit strange, living alone outside this village. How can he dislike to chat with everybody here?' }) -keywordHandler:addKeyword({ 'lee\'delle' }, StdModule.say, { npcHandler = npcHandler, text = 'Lee\'Delle\'s shop is on the {premium} side of the village. You should visit it!' }) -keywordHandler:addKeyword({ 'lily' }, StdModule.say, { npcHandler = npcHandler, text = 'I always give my cookies and blueberries to Lily. She loves them! Also, she sells {potions}.' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8 to find your {destiny}.' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'He is the local {bank} clerk.' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'Seymour is a loyal follower of the {king} and a teacher in the {academy}.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'I wish he would talk to his mother {Zirella} again. I feel so sorry for her. Anyway, as Tom is a tanner, you can sell leather and fresh corpses to him.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s one of our reliable guardsmen. Without them, many {monsters} would roam the village of {Rookgaard}!' }) -keywordHandler:addAliasKeyword({ 'zerbrus' }) - -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Um yeah, good day.') -npcHandler:setMessage(MESSAGE_SENDTRADE, 'Here, take a look and choose something nice for you!') +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "Norma used to sell {equipment}, but she finally earned enough {money} to fulfil one of her dreams - her own bar!" }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "I never understand what he's talking about." }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "I'm glad that he's here. He does a great job!" }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "Sometimes, I help Zirella collecting wood. Her old back aches all the time. It's a shame her son Tom doesn't help her." }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "In Al Dee's shop you will find important general equipment such as {ropes}, {shovels} and torches." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "One day, I want to become a brave adventurer like her and leave this town!" }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "Billy can be kind of scary. He swears a lot and doesn't talk to everybody." }) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { npcHandler = npcHandler, text = "Uncle Willie and {Billy} are farmers, which means they are a good place to sell and buy {food}." }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = "He can heal you if you're injured or poisoned." }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "Did I hear my name somewhere?" }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "I think he's a bit strange, living alone outside this village. How can he dislike to chat with everybody here?" }) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { npcHandler = npcHandler, text = "Lee'Delle's shop is on the {premium} side of the village. You should visit it!" }) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { npcHandler = npcHandler, text = "I always give my cookies and blueberries to Lily. She loves them! Also, she sells {potions}." }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8 to find your {destiny}." }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "He is the local {bank} clerk." }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "Seymour is a loyal follower of the {king} and a teacher in the {academy}." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "I wish he would talk to his mother {Zirella} again. I feel so sorry for her. Anyway, as Tom is a tanner, you can sell leather and fresh corpses to him." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "He's one of our reliable guardsmen. Without them, many {monsters} would roam the village of {Rookgaard}!" }) +keywordHandler:addAliasKeyword({ "zerbrus" }) + +npcHandler:setMessage(MESSAGE_WALKAWAY, "Um yeah, good day.") +npcHandler:setMessage(MESSAGE_SENDTRADE, "Here, take a look and choose something nice for you!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -163,7 +168,7 @@ npcConfig.shop = { { itemName = "studded legs", clientId = 3362, sell = 15 }, { itemName = "studded shield", clientId = 3426, buy = 50, sell = 16 }, { itemName = "viking helmet", clientId = 3367, sell = 25 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -174,7 +179,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/djema.lua b/data-otservbr-global/npc/djema.lua index 72087f5da01..edd55494d80 100644 --- a/data-otservbr-global/npc/djema.lua +++ b/data-otservbr-global/npc/djema.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 8, lookLegs = 86, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/doctor_gnomedix.lua b/data-otservbr-global/npc/doctor_gnomedix.lua index 3d74bf0a804..aaef536ddcd 100644 --- a/data-otservbr-global/npc/doctor_gnomedix.lua +++ b/data-otservbr-global/npc/doctor_gnomedix.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 85, lookLegs = 85, lookFeet = 85, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/donald_mcronald.lua b/data-otservbr-global/npc/donald_mcronald.lua index 48a4309b581..6a51bd09875 100644 --- a/data-otservbr-global/npc/donald_mcronald.lua +++ b/data-otservbr-global/npc/donald_mcronald.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 79, lookFeet = 117, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,7 +59,7 @@ npcConfig.shop = { { itemName = "cheese", clientId = 3607, buy = 5 }, { itemName = "corncob", clientId = 3597, buy = 3 }, { itemName = "cucumber", clientId = 8014, buy = 3 }, - { itemName = "dead spider", clientId = 3988, sell = 2 } + { itemName = "dead spider", clientId = 3988, sell = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -70,7 +70,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/dorbin.lua b/data-otservbr-global/npc/dorbin.lua index bfff55baf9d..5e596eba07c 100644 --- a/data-otservbr-global/npc/dorbin.lua +++ b/data-otservbr-global/npc/dorbin.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 61, lookLegs = 39, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -149,7 +149,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -160,7 +160,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/dorian.lua b/data-otservbr-global/npc/dorian.lua index 8b96bdacd9d..864bd955bb6 100644 --- a/data-otservbr-global/npc/dorian.lua +++ b/data-otservbr-global/npc/dorian.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 58, lookLegs = 77, lookFeet = 21, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,110 +58,109 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "mission") then if player:getStorageValue(Storage.ThievesGuild.Quest) == 1 and player:getStorageValue(Storage.ThievesGuild.Mission01) < 1 then player:setStorageValue(Storage.ThievesGuild.Mission01, 1) npcHandler:say({ - 'Your first job is quite easy. The Thaian officials are unwilling to share the wealth they\'ve accumulated in their new town Port Hope. ...', - 'They insist that most resources belong to the crown. This is quite sad, especially ivory is in high demand. Collect 10 elephant tusks and bring them to me.' + "Your first job is quite easy. The Thaian officials are unwilling to share the wealth they've accumulated in their new town Port Hope. ...", + "They insist that most resources belong to the crown. This is quite sad, especially ivory is in high demand. Collect 10 elephant tusks and bring them to me.", }, npc, creature) elseif player:getStorageValue(Storage.ThievesGuild.Mission01) == 1 then - npcHandler:say('Have you finished your mission?', npc, creature) + npcHandler:say("Have you finished your mission?", npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.ThievesGuild.Quest) == 2 and player:getStorageValue(Storage.ThievesGuild.Mission02) < 1 then player:setStorageValue(Storage.ThievesGuild.Mission02, 1) npcHandler:say({ - 'A client of our guild would like to get a certain vase. Unfortunately, it\'s not for sale. Well, by the original owner, that is. ...', - 'We, on the other hand, would gladly sell him the vase. Therefore, it would come in handy if we get this vase in our hands. ...', - 'Luckily, the walls of the owner\'s house are covered with vines, that will make a burglary quite easy. ...', - 'You\'ll still need some lock picks to get the chest open in which the vase is stored. Must be your lucky day, as I\'m selling lock picks for a fair price. ...', - 'You might need some of them to get that chest open. The soon to be ex-owner of that vase is Sarina, the proprietor of Carlin\'s general store.' + "A client of our guild would like to get a certain vase. Unfortunately, it's not for sale. Well, by the original owner, that is. ...", + "We, on the other hand, would gladly sell him the vase. Therefore, it would come in handy if we get this vase in our hands. ...", + "Luckily, the walls of the owner's house are covered with vines, that will make a burglary quite easy. ...", + "You'll still need some lock picks to get the chest open in which the vase is stored. Must be your lucky day, as I'm selling lock picks for a fair price. ...", + "You might need some of them to get that chest open. The soon to be ex-owner of that vase is Sarina, the proprietor of Carlin's general store.", }, npc, creature) elseif player:getStorageValue(Storage.ThievesGuild.Mission02) == 2 then - npcHandler:say('Have you finished your mission?', npc, creature) + npcHandler:say("Have you finished your mission?", npc, creature) npcHandler:setTopic(playerId, 3) elseif player:getStorageValue(Storage.ThievesGuild.Quest) == 3 and player:getStorageValue(Storage.ThievesGuild.Mission03) < 1 then player:setStorageValue(Storage.ThievesGuild.Mission03, 1) npcHandler:say({ - 'Our beloved king will hold a great festivity at the end of the month. Unfortunately he forgot to invite one of our guild\'s representatives. ...', - 'Of course it would be rude to point out this mistake to the king. It will be your job to get us an invitation to the ball. ...', - 'Moreover, It will be a great chance to check the castle for, well, opportunities. I\'m sure you understand. However, it\'s up to that pest Oswald to give out invitations, so he\'s the man you\'re looking for.' + "Our beloved king will hold a great festivity at the end of the month. Unfortunately he forgot to invite one of our guild's representatives. ...", + "Of course it would be rude to point out this mistake to the king. It will be your job to get us an invitation to the ball. ...", + "Moreover, It will be a great chance to check the castle for, well, opportunities. I'm sure you understand. However, it's up to that pest Oswald to give out invitations, so he's the man you're looking for.", }, npc, creature) elseif player:getStorageValue(Storage.ThievesGuild.Mission03) == 2 then - npcHandler:say('Have you finished your mission?', npc, creature) + npcHandler:say("Have you finished your mission?", npc, creature) npcHandler:setTopic(playerId, 4) elseif player:getStorageValue(Storage.ThievesGuild.Quest) == 4 and player:getStorageValue(Storage.ThievesGuild.Mission04) < 1 then player:setStorageValue(Storage.ThievesGuild.Mission04, 1) npcHandler:say({ - 'Your next mission is somewhat bigger and I\'m sure much fun for you. Some new-rich merchant is being a bit more greedy than it\'s good for him. ...', - 'The good thing is he\'s as stupid as greedy, so we have a little but cunning plan. We arranged the boring correspondence in advance, so you\'ll come in when the fun starts. ...', - 'You\'ll disguise yourself as the dwarven ambassador and sell that fool the old dwarven bridge, south of Kazordoon. ...', - 'Well, actually it is a bit more complicated than that. Firstly, you\'ll have to get forged documents. Ask around in the criminal camp to find a forger. ...', - 'Secondly, you\'ll need a disguise. Percybald in Carlin is an eccentric actor that might help you with that. ...', - 'As soon as you got both things, travel to Venore and find the merchant Nurik. Trade the false documents for the famous painting of Mina Losa and bring it to me.' + "Your next mission is somewhat bigger and I'm sure much fun for you. Some new-rich merchant is being a bit more greedy than it's good for him. ...", + "The good thing is he's as stupid as greedy, so we have a little but cunning plan. We arranged the boring correspondence in advance, so you'll come in when the fun starts. ...", + "You'll disguise yourself as the dwarven ambassador and sell that fool the old dwarven bridge, south of Kazordoon. ...", + "Well, actually it is a bit more complicated than that. Firstly, you'll have to get forged documents. Ask around in the criminal camp to find a forger. ...", + "Secondly, you'll need a disguise. Percybald in Carlin is an eccentric actor that might help you with that. ...", + "As soon as you got both things, travel to Venore and find the merchant Nurik. Trade the false documents for the famous painting of Mina Losa and bring it to me.", }, npc, creature) elseif player:getStorageValue(Storage.ThievesGuild.Mission04) == 7 then - npcHandler:say('Have you finished your mission?', npc, creature) + npcHandler:say("Have you finished your mission?", npc, creature) npcHandler:setTopic(playerId, 5) elseif player:getStorageValue(Storage.ThievesGuild.Quest) == 5 and player:getStorageValue(Storage.ThievesGuild.Mission05) < 1 then player:setStorageValue(Storage.ThievesGuild.Mission05, 1) - npcHandler:say('Some smugglers underneath Tiquanda, north west of Port Hope owe us some debts. Go there and steal their Golden Goblet and bring it to me.', npc, creature) + npcHandler:say("Some smugglers underneath Tiquanda, north west of Port Hope owe us some debts. Go there and steal their Golden Goblet and bring it to me.", npc, creature) elseif player:getStorageValue(Storage.ThievesGuild.Mission05) == 1 then - npcHandler:say('Have you finished your mission?', npc, creature) + npcHandler:say("Have you finished your mission?", npc, creature) npcHandler:setTopic(playerId, 6) elseif player:getStorageValue(Storage.ThievesGuild.Quest) == 6 and player:getStorageValue(Storage.ThievesGuild.Mission06) < 1 then player:setStorageValue(Storage.ThievesGuild.Mission06, 1) npcHandler:say({ - 'Your next job will be kidnapping. You\'ll get us the only creature that this scrupulous trader Theodore Loveless in Liberty Bay holds dear. ...', - 'His little goldfish! To get that fish, you\'ll have to get in his room somehow. ...', - 'As you might know I sell lock picks, but I fear unless you\'re extremely lucky, you won\'t crack this expensive masterpiece of a lock. However, get us that fish, regardless how.' + "Your next job will be kidnapping. You'll get us the only creature that this scrupulous trader Theodore Loveless in Liberty Bay holds dear. ...", + "His little goldfish! To get that fish, you'll have to get in his room somehow. ...", + "As you might know I sell lock picks, but I fear unless you're extremely lucky, you won't crack this expensive masterpiece of a lock. However, get us that fish, regardless how.", }, npc, creature) elseif player:getStorageValue(Storage.ThievesGuild.Mission06) == 3 then - npcHandler:say('Have you finished your mission?', npc, creature) + npcHandler:say("Have you finished your mission?", npc, creature) npcHandler:setTopic(playerId, 7) elseif player:getStorageValue(Storage.ThievesGuild.Quest) == 7 and player:getStorageValue(Storage.ThievesGuild.Mission07) < 1 then player:setStorageValue(Storage.ThievesGuild.Mission07, 1) npcHandler:say({ - 'We\'d like to ease our lives somewhat. Therefore, we would appreciate the cooperation with one of the Venore city guards. ...', - 'Find some dirt about one of them. It\'s unimportant what it is. As soon as we have a foothold, we\'ll convince him to cooperate. Bring me whatever you may find.' + "We'd like to ease our lives somewhat. Therefore, we would appreciate the cooperation with one of the Venore city guards. ...", + "Find some dirt about one of them. It's unimportant what it is. As soon as we have a foothold, we'll convince him to cooperate. Bring me whatever you may find.", }, npc, creature) elseif player:getStorageValue(Storage.ThievesGuild.Mission07) == 1 then - npcHandler:say('Have you finished your mission?', npc, creature) + npcHandler:say("Have you finished your mission?", npc, creature) npcHandler:setTopic(playerId, 8) elseif player:getStorageValue(Storage.ThievesGuild.Quest) == 8 and player:getStorageValue(Storage.ThievesGuild.Mission08) < 1 then player:setStorageValue(Storage.ThievesGuild.Mission08, 1) player:addItem(7873, 1) npcHandler:say({ - 'Competition might be an interesting challenge but our guild isn\'t really keen on competition. ...', - 'Unfortunately, we are lacking some good fighters, which is quite a disadvantage against certain other organisations. However, I think you\'re a really good fighter ...', - 'Travel to the Plains of Havoc and find the base of our competitors under the ruins of the dark cathedral ...', - 'On the lowest level, you\'ll find a wall with two trophies. Place a message of our guild on the wall, right between the trophies. On your way, get rid of as many of our competitors as you can.' + "Competition might be an interesting challenge but our guild isn't really keen on competition. ...", + "Unfortunately, we are lacking some good fighters, which is quite a disadvantage against certain other organisations. However, I think you're a really good fighter ...", + "Travel to the Plains of Havoc and find the base of our competitors under the ruins of the dark cathedral ...", + "On the lowest level, you'll find a wall with two trophies. Place a message of our guild on the wall, right between the trophies. On your way, get rid of as many of our competitors as you can.", }, npc, creature) elseif player:getStorageValue(Storage.ThievesGuild.Mission08) == 2 then - npcHandler:say('Have you finished your mission?', npc, creature) + npcHandler:say("Have you finished your mission?", npc, creature) npcHandler:setTopic(playerId, 9) end elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then player:setStorageValue(Storage.ThievesGuild.Quest, 1) npcHandler:say({ - 'Excellent. You\'ll learn this trade from scratch. Our operations cover many fields of work. Some aren\'t even illegal. ...', - 'Well, as long as you don\'t get caught at least. Ask me for a mission whenever you\'re ready.' + "Excellent. You'll learn this trade from scratch. Our operations cover many fields of work. Some aren't even illegal. ...", + "Well, as long as you don't get caught at least. Ask me for a mission whenever you're ready.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then if player:removeItem(3044, 10) then player:setStorageValue(Storage.ThievesGuild.Mission01, 2) player:setStorageValue(Storage.ThievesGuild.Quest, 2) - npcHandler:say('What a fine material. That will be worth a coin or two. So far, so good. Ask me for another mission if you\'re ready for it.', npc, creature) + npcHandler:say("What a fine material. That will be worth a coin or two. So far, so good. Ask me for another mission if you're ready for it.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 3 then if player:removeItem(227, 1) then player:setStorageValue(Storage.ThievesGuild.Mission02, 3) player:setStorageValue(Storage.ThievesGuild.Quest, 3) - npcHandler:say('What an ugly vase. But who am I to question the taste of our customers? Anyway, I might have another mission in store for you.', npc, creature) + npcHandler:say("What an ugly vase. But who am I to question the taste of our customers? Anyway, I might have another mission in store for you.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 4 then @@ -169,8 +168,8 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ThievesGuild.Mission03, 3) player:setStorageValue(Storage.ThievesGuild.Quest, 4) npcHandler:say({ - 'Ah, the key to untold riches. Don\'t worry, we\'ll make sure that no one will connect you to the disappearance of certain royal possessions. ...', - 'You\'re too valuable to us. Speaking about your value, I might have some other mission for you.' + "Ah, the key to untold riches. Don't worry, we'll make sure that no one will connect you to the disappearance of certain royal possessions. ...", + "You're too valuable to us. Speaking about your value, I might have some other mission for you.", }, npc, creature) npcHandler:setTopic(playerId, 0) end @@ -178,21 +177,21 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeItem(7871, 1) then player:setStorageValue(Storage.ThievesGuild.Mission04, 8) player:setStorageValue(Storage.ThievesGuild.Quest, 5) - npcHandler:say('Excellent, that serves this fool right. I fear in your next mission, you\'ll have to get your hands dirty. Just ask me to learn more about it.', npc, creature) + npcHandler:say("Excellent, that serves this fool right. I fear in your next mission, you'll have to get your hands dirty. Just ask me to learn more about it.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 6 then if player:removeItem(7369, 1) then player:setStorageValue(Storage.ThievesGuild.Mission05, 2) player:setStorageValue(Storage.ThievesGuild.Quest, 6) - npcHandler:say('That goblet is hardly worth all this trouble but we had to insist on our payment. However, I assume you are eager for more missions, so just ask.', npc, creature) + npcHandler:say("That goblet is hardly worth all this trouble but we had to insist on our payment. However, I assume you are eager for more missions, so just ask.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 7 then if player:removeItem(7936, 1) then player:setStorageValue(Storage.ThievesGuild.Mission06, 4) player:setStorageValue(Storage.ThievesGuild.Quest, 7) - npcHandler:say('This little goldfish will bring us a hefty ransom! Just ask me if you\'re ready for another mission.', npc, creature) + npcHandler:say("This little goldfish will bring us a hefty ransom! Just ask me if you're ready for another mission.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 8 then @@ -200,8 +199,8 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ThievesGuild.Mission07, 2) player:setStorageValue(Storage.ThievesGuild.Quest, 8) npcHandler:say({ - 'Excellent, that little letter will do the trick for sure ...', - 'I think you\'re really capable and if you finish another mission, I\'ll allow you full access to our black market of lost and found items. Just ask me to learn more about that mission.' + "Excellent, that little letter will do the trick for sure ...", + "I think you're really capable and if you finish another mission, I'll allow you full access to our black market of lost and found items. Just ask me to learn more about that mission.", }, npc, creature) npcHandler:setTopic(playerId, 0) end @@ -210,30 +209,30 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ThievesGuild.Quest, 9) player:setStorageValue(Storage.ThievesGuild.Door, 1) npcHandler:say({ - 'Once again you\'ve finished your job, and I\'ll keep my promise. From now on, you can trade with old Black Bert somewhere upstairs to get access to certain items that mightbe of value to someone like you. ...', - 'If you like, you can also enter the room to the left and pick one item of your choice.' + "Once again you've finished your job, and I'll keep my promise. From now on, you can trade with old Black Bert somewhere upstairs to get access to certain items that mightbe of value to someone like you. ...", + "If you like, you can also enter the room to the left and pick one item of your choice.", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'thieves') or MsgContains(message, 'join') then + elseif MsgContains(message, "thieves") or MsgContains(message, "join") then if player:getStorageValue(Storage.ThievesGuild.Quest) < 1 then - npcHandler:say('Hm. Well, we could use some fresh blood. Ahum. Do you want to join the thieves guild, |PLAYERNAME|?', npc, creature) + npcHandler:say("Hm. Well, we could use some fresh blood. Ahum. Do you want to join the thieves guild, |PLAYERNAME|?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'lock pick') then - npcHandler:say('Yes, I sell lock picks. Ask me for a trade.', npc, creature) + elseif MsgContains(message, "lock pick") then + npcHandler:say("Yes, I sell lock picks. Ask me for a trade.", npc, creature) end return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye, |PLAYERNAME|!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|!') -npcHandler:setMessage(MESSAGE_GREET, 'Greetings, |PLAYERNAME|!') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye, |PLAYERNAME|!") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|!") +npcHandler:setMessage(MESSAGE_GREET, "Greetings, |PLAYERNAME|!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "lock pick", clientId = 7889, buy = 50 } + { itemName = "lock pick", clientId = 7889, buy = 50 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -244,7 +243,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/doubleday.lua b/data-otservbr-global/npc/doubleday.lua index 9ee60e0f9ce..ff57ada9c76 100644 --- a/data-otservbr-global/npc/doubleday.lua +++ b/data-otservbr-global/npc/doubleday.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 39, lookFeet = 20, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/doug.lua b/data-otservbr-global/npc/doug.lua index ff2f13e28a4..369e54f7e3a 100644 --- a/data-otservbr-global/npc/doug.lua +++ b/data-otservbr-global/npc/doug.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 37, lookLegs = 116, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/dove.lua b/data-otservbr-global/npc/dove.lua index 1e614b40c88..6785c0b8d4a 100644 --- a/data-otservbr-global/npc/dove.lua +++ b/data-otservbr-global/npc/dove.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 106, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -74,7 +74,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.Postman.MeasurementsDove, 1) npcHandler:setTopic(playerId, 0) else - npcHandler:say("Oh, you don\'t have it.", npc, creature) + npcHandler:say("Oh, you don't have it.", npc, creature) npcHandler:setTopic(playerId, 0) end end @@ -88,7 +88,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -99,7 +99,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/dr_merlay.lua b/data-otservbr-global/npc/dr_merlay.lua index 6b332f1495d..b3594f69499 100644 --- a/data-otservbr-global/npc/dr_merlay.lua +++ b/data-otservbr-global/npc/dr_merlay.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 285 + lookType = 285, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/dreadeye.lua b/data-otservbr-global/npc/dreadeye.lua index 3518f962394..adbf3491099 100644 --- a/data-otservbr-global/npc/dreadeye.lua +++ b/data-otservbr-global/npc/dreadeye.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 256 + lookType = 256, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/dream_butterfly.lua b/data-otservbr-global/npc/dream_butterfly.lua index 09aa44633f6..c085263b7a0 100644 --- a/data-otservbr-global/npc/dream_butterfly.lua +++ b/data-otservbr-global/npc/dream_butterfly.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/dregor.lua b/data-otservbr-global/npc/dregor.lua index d1ad5cc5e6a..432d0716082 100644 --- a/data-otservbr-global/npc/dregor.lua +++ b/data-otservbr-global/npc/dregor.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 38, lookFeet = 57, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/drog.lua b/data-otservbr-global/npc/drog.lua index f06ade24a93..a36b7a578e1 100644 --- a/data-otservbr-global/npc/drog.lua +++ b/data-otservbr-global/npc/drog.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 114, lookBody = 39, lookLegs = 119, - lookFeet = 113 + lookFeet = 113, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/dronk.lua b/data-otservbr-global/npc/dronk.lua index 6a1a29e1b33..f52b19c5be4 100644 --- a/data-otservbr-global/npc/dronk.lua +++ b/data-otservbr-global/npc/dronk.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 85, lookLegs = 9, lookFeet = 85, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/druid_yandur.lua b/data-otservbr-global/npc/druid_yandur.lua index 0b4ffdaec98..cc1357070bb 100644 --- a/data-otservbr-global/npc/druid_yandur.lua +++ b/data-otservbr-global/npc/druid_yandur.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/drystan_wildweed.lua b/data-otservbr-global/npc/drystan_wildweed.lua index 69208cb6571..1dc395e7136 100644 --- a/data-otservbr-global/npc/drystan_wildweed.lua +++ b/data-otservbr-global/npc/drystan_wildweed.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 62, lookLegs = 97, lookFeet = 118, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/dukosch.lua b/data-otservbr-global/npc/dukosch.lua index 84bbd98e68c..2c4cb501cd3 100644 --- a/data-otservbr-global/npc/dukosch.lua +++ b/data-otservbr-global/npc/dukosch.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 70 + lookType = 70, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,7 +54,7 @@ local function creatureSayCallback(npc, creature, type, message) end -- WAGON TICKET - if (MsgContains(message, "ticket")) then + if MsgContains(message, "ticket") then if player:getStorageValue(Storage.WagonTicket) < os.time() then npcHandler:say("Do you want to purchase a weekly ticket for the ore wagons? With it you can travel freely and swiftly through Kazordoon for one week. 250 gold only. Deal?", npc, creature) npcHandler:setTopic(playerId, 1) @@ -62,8 +62,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Your weekly ticket is still valid. Would be a waste of money to purchase a second one", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then if player:getMoney() + player:getBankBalance() >= 250 then player:removeMoneyBank(250) player:setStorageValue(Storage.WagonTicket, os.time() + 7 * 24 * 60 * 60) @@ -73,8 +73,8 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 1) then - if (MsgContains(message, "no")) then + elseif npcHandler:getTopic(playerId) == 1 then + if MsgContains(message, "no") then npcHandler:say("No then.", npc, creature) npcHandler:setTopic(playerId, 0) end diff --git a/data-otservbr-global/npc/duncan.lua b/data-otservbr-global/npc/duncan.lua index 3dbb9586bc9..3b9f623fdbc 100644 --- a/data-otservbr-global/npc/duncan.lua +++ b/data-otservbr-global/npc/duncan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 23, lookLegs = 0, lookFeet = 116, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -60,76 +60,78 @@ local function creatureSayCallback(npc, creature, type, message) local storage = Storage.OutfitQuest.PirateSabreAddon - if table.contains({ 'outfit', 'addon' }, message) and player:getStorageValue(Storage.OutfitQuest.PirateBaseOutfit) == 1 then + if table.contains({ "outfit", "addon" }, message) and player:getStorageValue(Storage.OutfitQuest.PirateBaseOutfit) == 1 then npcHandler:say( "You're talking about my sabre? Well, even though you earned our trust, \z you'd have to fulfill a task first before you are granted to wear such a sabre.", - npc, creature) - elseif MsgContains(message, 'mission') then + npc, + creature + ) + elseif MsgContains(message, "mission") then if player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 6 then npcHandler:say( - 'I need a new quality atlas for our captains. Only one of the best will do it. \z + "I need a new quality atlas for our captains. Only one of the best will do it. \z I heard the explorers society sells the best, but only to members of a certain rank. \z - You will have to get this rank or ask a high ranking member to buy it for you.', - npc, creature) + You will have to get this rank or ask a high ranking member to buy it for you.", + npc, + creature + ) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 7) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 7 then - npcHandler:say('Did you get an atlas of the explorers society as I requested?', npc, creature) + npcHandler:say("Did you get an atlas of the explorers society as I requested?", npc, creature) npcHandler:setTopic(playerId, 6) - elseif - player:getStorageValue(Storage.TheShatteredIsles.RaysMission2) > 0 and - player:getStorageValue(Storage.TheShatteredIsles.TortoiseEggNargorDoor) < 0 - then + elseif player:getStorageValue(Storage.TheShatteredIsles.RaysMission2) > 0 and player:getStorageValue(Storage.TheShatteredIsles.TortoiseEggNargorDoor) < 0 then npcHandler:say( - 'You did some impressive things. I think people here start considering you as one of us. \z + "You did some impressive things. I think people here start considering you as one of us. \z But these are dire times and everyone of us is expected to give his best and even exceed himself. \z - Do you think you can handle that?', npc, creature) + Do you think you can handle that?", + npc, + creature + ) npcHandler:setTopic(playerId, 7) elseif player:getStorageValue(Storage.TheShatteredIsles.TortoiseEggNargorDoor) == 1 then - npcHandler:say('Did you rescue one of those poor soon-to-be baby tortoises from Nargor?', npc, creature) + npcHandler:say("Did you rescue one of those poor soon-to-be baby tortoises from Nargor?", npc, creature) npcHandler:setTopic(playerId, 8) end - elseif MsgContains(message, 'task') then + elseif MsgContains(message, "task") then if player:getStorageValue(storage) < 1 then - npcHandler:say( - "Are you up to the task which I'm going to give you and willing to prove you're worthy of wearing such a sabre?", - npc, creature) + npcHandler:say("Are you up to the task which I'm going to give you and willing to prove you're worthy of wearing such a sabre?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'eye patches') then + elseif MsgContains(message, "eye patches") then if player:getStorageValue(storage) == 1 then - npcHandler:say('Have you gathered 100 eye patches?', npc, creature) + npcHandler:say("Have you gathered 100 eye patches?", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif MsgContains(message, 'peg legs') then + elseif MsgContains(message, "peg legs") then if player:getStorageValue(storage) == 2 then - npcHandler:say('Have you gathered 100 peg legs?', npc, creature) + npcHandler:say("Have you gathered 100 peg legs?", npc, creature) npcHandler:setTopic(playerId, 4) end - elseif MsgContains(message, 'hooks') then + elseif MsgContains(message, "hooks") then if player:getStorageValue(storage) == 3 then - npcHandler:say('Have you gathered 100 hooks?', npc, creature) + npcHandler:say("Have you gathered 100 hooks?", npc, creature) npcHandler:setTopic(playerId, 5) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - 'Listen, the task is not that hard. Simply prove that you are with us and not with the \z - pirates from Nargor by bringingme some of their belongings. ...', - 'Bring me 100 of their eye patches, 100 of their peg legs and 100 of their hooks, in that order. ...', - 'Have you understood everything I told you and are willing to handle this task?' + "Listen, the task is not that hard. Simply prove that you are with us and not with the \z + pirates from Nargor by bringingme some of their belongings. ...", + "Bring me 100 of their eye patches, 100 of their peg legs and 100 of their hooks, in that order. ...", + "Have you understood everything I told you and are willing to handle this task?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then player:setStorageValue(storage, 1) player:setStorageValue(Storage.OutfitQuest.DefaultStart, 1) --this for default start of Outfit and Addon Quests - npcHandler:say('Good! Come back to me once you have gathered 100 eye patches.', npc, creature) + npcHandler:say("Good! Come back to me once you have gathered 100 eye patches.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then if player:removeItem(6098, 100) then player:setStorageValue(storage, 2) - npcHandler:say('Good job. Alright, now bring me 100 peg legs.', npc, creature) + npcHandler:say("Good job. Alright, now bring me 100 peg legs.", npc, creature) npcHandler:setTopic(playerId, 0) else npcHandler:say("You don't have it...", npc, creature) @@ -137,7 +139,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 4 then if player:removeItem(6126, 100) then player:setStorageValue(storage, 3) - npcHandler:say('Nice. Lastly, bring me 100 pirate hooks. That should be enough to earn your sabre.', npc, creature) + npcHandler:say("Nice. Lastly, bring me 100 pirate hooks. That should be enough to earn your sabre.", npc, creature) npcHandler:setTopic(playerId, 0) else npcHandler:say("You don't have it...", npc, creature) @@ -145,9 +147,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 5 then if player:removeItem(6097, 100) then player:setStorageValue(storage, 4) - npcHandler:say( - "I see, I see. Well done. Go to Morgan and tell him this codeword: 'firebird'. He'll know what to do.", - creature) + npcHandler:say("I see, I see. Well done. Go to Morgan and tell him this codeword: 'firebird'. He'll know what to do.", creature) npcHandler:setTopic(playerId, 0) else npcHandler:say("You don't have it...", npc, creature) @@ -155,7 +155,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 6 then if player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 7 then if player:removeItem(6108, 1) then - npcHandler:say('Indeed, what a fine work... the book I mean. Your work was acceptable all in all.', npc, creature) + npcHandler:say("Indeed, what a fine work... the book I mean. Your work was acceptable all in all.", npc, creature) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 8) npcHandler:setTopic(playerId, 0) else @@ -165,29 +165,32 @@ local function creatureSayCallback(npc, creature, type, message) end elseif npcHandler:getTopic(playerId) == 7 then if player:getStorageValue(Storage.TheShatteredIsles.TortoiseEggNargorDoor) < 0 then - npcHandler:say( - { - 'I am glad to hear this. Please listen. The pirates on Nargor are breeding tortoises. \ - They think eating tortoises makes a hard man even harder. ...', - "However I am quite fond of tortoises and can't stand the thought of them being eaten. \ + npcHandler:say({ + "I am glad to hear this. Please listen. The pirates on Nargor are breeding tortoises. \ + They think eating tortoises makes a hard man even harder. ...", + "However I am quite fond of tortoises and can't stand the thought of them being eaten. \ So I convinced Captain Striker that I can train them to help us. As a substitute for rafts and such ...", - 'All I need is one tortoise egg from Nargor. \ - This is the opportunity to save a tortoise from a gruesome fate! ...', - 'I will ask Sebastian to bring you there. \ - Travel to Nargor, find their tortoise eggs and bring me at least one of them.' - }, npc, creature) + "All I need is one tortoise egg from Nargor. \ + This is the opportunity to save a tortoise from a gruesome fate! ...", + "I will ask Sebastian to bring you there. \ + Travel to Nargor, find their tortoise eggs and bring me at least one of them.", + }, npc, creature) player:setStorageValue(Storage.TheShatteredIsles.TortoiseEggNargorDoor, 1) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 8 then if player:getStorageValue(Storage.TheShatteredIsles.TortoiseEggNargorDoor) == 1 then if player:removeItem(6125, 1) then - npcHandler:say('A real tortoise egg ... I guess you are more accustomed to rescue some \z - noblewoman in distress but you did something goodtoday.', npc, creature) + npcHandler:say( + "A real tortoise egg ... I guess you are more accustomed to rescue some \z + noblewoman in distress but you did something goodtoday.", + npc, + creature + ) player:setStorageValue(Storage.TheShatteredIsles.TortoiseEggNargorDoor, 2) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 16) if player:getStorageValue(Storage.TheIceIslands.Questline) >= 9 then - player:addAchievement('Animal Activist') + player:addAchievement("Animal Activist") end npcHandler:setTopic(playerId, 0) else @@ -196,9 +199,9 @@ local function creatureSayCallback(npc, creature, type, message) end end end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) >= 1 then - npcHandler:say('Then no.', npc, creature) + npcHandler:say("Then no.", npc, creature) npcHandler:setTopic(playerId, 0) end end @@ -209,7 +212,7 @@ npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "pirate tapestry", clientId = 5615, buy = 40 } + { itemName = "pirate tapestry", clientId = 5615, buy = 40 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -220,7 +223,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/duria.lua b/data-otservbr-global/npc/duria.lua index 6ce3fe995fc..23ce778a856 100644 --- a/data-otservbr-global/npc/duria.lua +++ b/data-otservbr-global/npc/duria.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 70 + lookType = 70, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,19 +45,19 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addSpellKeyword({ 'find', 'person' }, { npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation = VOCATION.BASE_ID.KNIGHT }) -keywordHandler:addSpellKeyword({ 'light' }, { npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation = VOCATION.BASE_ID.KNIGHT }) -keywordHandler:addSpellKeyword({ 'cure', 'poison' }, { npcHandler = npcHandler, spellName = 'Cure Poison', price = 150, level = 10, vocation = VOCATION.BASE_ID.KNIGHT }) -keywordHandler:addSpellKeyword({ 'wound', 'cleansing' }, { npcHandler = npcHandler, spellName = 'Wound Cleansing', price = 0, level = 8, vocation = VOCATION.BASE_ID.KNIGHT }) -keywordHandler:addSpellKeyword({ 'great', 'light' }, { npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation = VOCATION.BASE_ID.KNIGHT }) +keywordHandler:addSpellKeyword({ "find", "person" }, { npcHandler = npcHandler, spellName = "Find Person", price = 80, level = 8, vocation = VOCATION.BASE_ID.KNIGHT }) +keywordHandler:addSpellKeyword({ "light" }, { npcHandler = npcHandler, spellName = "Light", price = 0, level = 8, vocation = VOCATION.BASE_ID.KNIGHT }) +keywordHandler:addSpellKeyword({ "cure", "poison" }, { npcHandler = npcHandler, spellName = "Cure Poison", price = 150, level = 10, vocation = VOCATION.BASE_ID.KNIGHT }) +keywordHandler:addSpellKeyword({ "wound", "cleansing" }, { npcHandler = npcHandler, spellName = "Wound Cleansing", price = 0, level = 8, vocation = VOCATION.BASE_ID.KNIGHT }) +keywordHandler:addSpellKeyword({ "great", "light" }, { npcHandler = npcHandler, spellName = "Great Light", price = 500, level = 13, vocation = VOCATION.BASE_ID.KNIGHT }) -keywordHandler:addKeyword({ 'healing', 'spells' }, StdModule.say, { npcHandler = npcHandler, text = "In this category I have '{Wound Cleansing}' and '{Cure Poison}'." }) -keywordHandler:addKeyword({ 'support', 'spells' }, StdModule.say, { npcHandler = npcHandler, text = "In this category I have '{Light}', '{Find Person}' and '{Great Light}'." }) -keywordHandler:addKeyword({ 'spells' }, StdModule.say, { npcHandler = npcHandler, text = 'I can teach you {healing spells} and {support spells}. What kind of spell do you wish to learn? You can also tell me for which level you would like to learn a spell, if you prefer that.' }) +keywordHandler:addKeyword({ "healing", "spells" }, StdModule.say, { npcHandler = npcHandler, text = "In this category I have '{Wound Cleansing}' and '{Cure Poison}'." }) +keywordHandler:addKeyword({ "support", "spells" }, StdModule.say, { npcHandler = npcHandler, text = "In this category I have '{Light}', '{Find Person}' and '{Great Light}'." }) +keywordHandler:addKeyword({ "spells" }, StdModule.say, { npcHandler = npcHandler, text = "I can teach you {healing spells} and {support spells}. What kind of spell do you wish to learn? You can also tell me for which level you would like to learn a spell, if you prefer that." }) -npcHandler:setMessage(MESSAGE_GREET, 'Hiho, fellow knight |PLAYERNAME|!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Goodbye.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Be carefull out there, jawoll.') +npcHandler:setMessage(MESSAGE_GREET, "Hiho, fellow knight |PLAYERNAME|!") +npcHandler:setMessage(MESSAGE_FAREWELL, "Goodbye.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Be carefull out there, jawoll.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/dustrunner.lua b/data-otservbr-global/npc/dustrunner.lua index a322d8ee299..a329c571040 100644 --- a/data-otservbr-global/npc/dustrunner.lua +++ b/data-otservbr-global/npc/dustrunner.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 30, lookLegs = 40, lookFeet = 50, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/eathar.lua b/data-otservbr-global/npc/eathar.lua index c962c59aec4..3a0a15eea78 100644 --- a/data-otservbr-global/npc/eathar.lua +++ b/data-otservbr-global/npc/eathar.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 104, lookLegs = 104, lookFeet = 104, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/ebenizer.lua b/data-otservbr-global/npc/ebenizer.lua index 4b7e941d86a..1d4f2063e11 100644 --- a/data-otservbr-global/npc/ebenizer.lua +++ b/data-otservbr-global/npc/ebenizer.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 95, lookLegs = 87, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/eclesius.lua b/data-otservbr-global/npc/eclesius.lua index 7f7b4ca330e..11125408321 100644 --- a/data-otservbr-global/npc/eclesius.lua +++ b/data-otservbr-global/npc/eclesius.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 91, lookLegs = 12, lookFeet = 95, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -31,7 +31,7 @@ npcConfig.voices = { { text = "Do come in! Mind the step of the magical door, though." }, { text = "I'm so sorry... I promise it won't happen again. Problem is, I can't remember where I made the error..." }, { text = "Actually, I STILL prefer inexperienced assistants. They're easier to keep an eye on and don't tend to backstab you." }, - { text = "So much to do, so much to do... uh... where should I start?" } + { text = "So much to do, so much to do... uh... where should I start?" }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/edala.lua b/data-otservbr-global/npc/edala.lua index dd45774847a..ac2278f6130 100644 --- a/data-otservbr-global/npc/edala.lua +++ b/data-otservbr-global/npc/edala.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 63 + lookType = 63, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -46,13 +46,13 @@ npcType.onCloseChannel = function(npc, creature) end local config = { - [1] = 'Ashari, |PLAYERNAME|. How... nice to see a human taking interest in a beautiful art such as music.', - [2] = 'Ashari, |PLAYERNAME|... that sound was.. interesting.', - [3] = 'Ashari, |PLAYERNAME|. You\'ve made some... progress playing the lyre, haven\'t you..? I want to believe you have.', - [4] = '|PLAYERNAME|. My regular visitor. I certainly... appreciate your efforts to entertain me, but let me assure you, I\'m quite comfortable up here by myself. Alone. In silence.', - [5] = 'Ashari, |PLAYERNAME|. I\'m starting to feel a little sorry... for your lyre. Being forced to produce such noise must be a tragic fate.', - [6] = '|PLAYERNAME|! You\'re driving me insane! I beg you, take your lyre away from this sacred and peaceful place.', - [7] = '|PLAYERNAME|! My ears! I\'d prefer listening to drunken dwarves rambling all day to the sound of your lyre! Please, at least get it tuned. Here, you can have this elvish diapason.' + [1] = "Ashari, |PLAYERNAME|. How... nice to see a human taking interest in a beautiful art such as music.", + [2] = "Ashari, |PLAYERNAME|... that sound was.. interesting.", + [3] = "Ashari, |PLAYERNAME|. You've made some... progress playing the lyre, haven't you..? I want to believe you have.", + [4] = "|PLAYERNAME|. My regular visitor. I certainly... appreciate your efforts to entertain me, but let me assure you, I'm quite comfortable up here by myself. Alone. In silence.", + [5] = "Ashari, |PLAYERNAME|. I'm starting to feel a little sorry... for your lyre. Being forced to produce such noise must be a tragic fate.", + [6] = "|PLAYERNAME|! You're driving me insane! I beg you, take your lyre away from this sacred and peaceful place.", + [7] = "|PLAYERNAME|! My ears! I'd prefer listening to drunken dwarves rambling all day to the sound of your lyre! Please, at least get it tuned. Here, you can have this elvish diapason.", } local function greetCallback(npc, creature) @@ -60,9 +60,7 @@ local function greetCallback(npc, creature) local player = Player(creature) local lyreProgress = player:getStorageValue(Storage.Diapason.Lyre) local greetMessage = config[lyreProgress] - if greetMessage - and player:getStorageValue(Storage.Diapason.Edala) == 1 - and player:getStorageValue(Storage.Diapason.EdalaTimer) < os.time() then + if greetMessage and player:getStorageValue(Storage.Diapason.Edala) == 1 and player:getStorageValue(Storage.Diapason.EdalaTimer) < os.time() then player:setStorageValue(Storage.Diapason.Edala, 0) player:setStorageValue(Storage.Diapason.EdalaTimer, os.time() + 86400) if lyreProgress == 7 then @@ -71,59 +69,67 @@ local function greetCallback(npc, creature) end npcHandler:setMessage(MESSAGE_GREET, greetMessage) else - npcHandler:setMessage(MESSAGE_GREET, 'Ashari, |PLAYERNAME|.') + npcHandler:setMessage(MESSAGE_GREET, "Ashari, |PLAYERNAME|.") end return true end -- Fire of the Suns -local blessKeyword = keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'Would you like to receive that protection for a sacrifice of |BLESSCOST| gold, child?' }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the fire of the suns, pilgrim.', cost = '|BLESSCOST|', bless = 4 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) -keywordHandler:addAliasKeyword({ 'fire' }) +local blessKeyword = keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "Would you like to receive that protection for a sacrifice of |BLESSCOST| gold, child?" }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the fire of the suns, pilgrim.", cost = "|BLESSCOST|", bless = 4 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) +keywordHandler:addAliasKeyword({ "fire" }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) -- Greeting message keywordHandler:addGreetKeyword({ "ashari" }, { npcHandler = npcHandler, text = "Greetings, |PLAYERNAME|." }) @@ -132,8 +138,8 @@ keywordHandler:addFarewellKeyword({ "asgha thrazi" }, { npcHandler = npcHandler, npcHandler:setCallback(CALLBACK_GREET, greetCallback) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Asha Thrazi, |PLAYERNAME|!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Asha Thrazi, |PLAYERNAME|!') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Asha Thrazi, |PLAYERNAME|!") +npcHandler:setMessage(MESSAGE_FAREWELL, "Asha Thrazi, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/eddy.lua b/data-otservbr-global/npc/eddy.lua index 3362da96864..2502f56ae02 100644 --- a/data-otservbr-global/npc/eddy.lua +++ b/data-otservbr-global/npc/eddy.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 63, lookLegs = 19, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Have you moved to a new home? I\'m the specialist for equipping it.' } + { text = "Have you moved to a new home? I'm the specialist for equipping it." }, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'furniture' }, StdModule.say, { npcHandler = npcHandler, text = "I have {beds}, {chairs}, {containers}, {decoration}, {flowers}, {instruments}, {pillows}, {pottery}, {statues}, {tapestries} and {tables}. Which of those would you like to see?" }) +keywordHandler:addKeyword({ "furniture" }, StdModule.say, { npcHandler = npcHandler, text = "I have {beds}, {chairs}, {containers}, {decoration}, {flowers}, {instruments}, {pillows}, {pottery}, {statues}, {tapestries} and {tables}. Which of those would you like to see?" }) npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|! Do you need some equipment for your house?") npcHandler:setMessage(MESSAGE_SENDTRADE, "Have a look. Most furniture comes in handy kits. Just use them in your house to assemble the furniture. Do you want to see only a certain {type} of furniture?") @@ -156,7 +156,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -167,7 +167,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/edgar-ellen.lua b/data-otservbr-global/npc/edgar-ellen.lua index 662ca7d84d9..4ac4c2e1952 100644 --- a/data-otservbr-global/npc/edgar-ellen.lua +++ b/data-otservbr-global/npc/edgar-ellen.lua @@ -16,36 +16,36 @@ npcConfig.outfit = { lookBody = 39, lookLegs = 99, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Orshabaal was out of his maze to make us suffer for many days. In Calmera, a knight with blue beard from his hideout appeared. He fought bravely supported by mages, the demon ran and is gone for ages.' }, - { text = 'A knight from Guardia needed Chayenne\'s key. His friend dropped the item on the floor, hoping no one would see. But, at the same moment, a man crossed their way and all the knight\'s dreams faded away.' }, - { text = 'A knight from Candia was dining at Frodo\'s hut, devouring plates full of meat and whatnot. Suddenly, he was called to fight. He wanted to put his armor on but it was too tight.' }, - { text = 'The druid entered a Premian pyramid intent on the kill, \'Oh, that djinn will die, it will!\' Down and up the stairs she hopped like a cat... When, Oops! She moved the wrong way, and died a drunk rat.' }, - { text = 'Hoping to find a strange orc in his spawn, a Zaneran knight logged on before dawn. A sudden heart attack left him surprised as Sam\'s old backpack he had recognised.' }, - { text = 'The world I shall save\', an Olympian knight proclaimed! But from a visit to the bar he could not abstain! He woke up in pain, it all was in vain. From Venorian beer he will forever refrain.' }, - { text = 'During the dark and scary night, when others sleep he goes to fight, banishing demons, that feels right, purging the evil on the sight, fearlessly waiting for daylight, Zeluna\'s bravest elite knight.' }, - { text = 'A druid from Celesta once talked with a girl, he even bought her a necklace with a huge white pearl. Every time he went home, without money and fame, I guess this girl is cursed, Aruda is the name.' }, - { text = 'A story of a knight untold, on Rowana the dice she rolled. She lured players from afar. Who could resist a shining star? She promised gold and many items, then stole their heart with cunning kindness.' }, - { text = 'Do you think it\'s just a game? Don\'t you fear the dragon\'s flame? If you are as brave as bright, if you do not stray from fight, you may want to hear tonight, the tale of Guardia\'s lonely knight.' }, - { text = 'For a knight from Yanara 10,000 gold were a lot. So he ventured with a team into the desert to win that pot. He solved all the riddles, strongly willed. But on his journey home he sadly was killed.' }, - { text = 'A great mage from Celesta went dungeon down deep, he was very brave but his wand was cheap. Among white skeletons one of them was red. Last what he saw were the words: \'You are dead!\'' }, - { text = 'A young sorcerer born and raised on Astera when dragons were scary, it was that kind of era. Walking all the way to the city of Venore, he stole from the dwarven bridge nothing less than an iron ore.' }, - { text = 'A druid from Eternia just bought his first boots of haste, to finally have his leather boots replaced. Catching a backpack of fish was now his dream, but he ended up swinging his new boots upstream.' }, - { text = 'A sorcerer from Efidia took his horse and got it saddled, and set out for battle. His horse lost control and threw him into a hole. Now his team lost all hope, because he forgot to bring a rope.' }, - { text = 'A knight in Guardia was feeling bored. He wanted to show a dragon lord the taste of his new carlin sword. To its lair then he did go. But before he saw his foe, he met his end by a one hit K.O.' }, - { text = 'On Secura a confident knight levelled to main, 840 rats he had slain. \'I am going to kill dragons,\' he said while pounding his breastplate. The next thing he saw was: \'You have met a sad fate.\'' }, - { text = 'One morning frosty fresh and nice, a knight was fishing on the ice. Catching some pikes for soup, but a dire penguin ate his loot. His angry wife said in the house: Now whole Beneva will laugh at us!' }, - { text = 'A paladin slaying dragons on Antica\'s soil, when a lord charges on to make the adventurer\'s blood boil. It puts up a strong fight, but to no avail. It gets slain and drops a dragon scale mail!' }, - { text = 'Through Rookgaard\'s sewer there swarmed no fewer than a hundred screeching rats. Wading through mud, and covered in blood, two young men fought back-to-back. To Trimera\'s end; a knight, and a friend.' } + { text = "Orshabaal was out of his maze to make us suffer for many days. In Calmera, a knight with blue beard from his hideout appeared. He fought bravely supported by mages, the demon ran and is gone for ages." }, + { text = "A knight from Guardia needed Chayenne's key. His friend dropped the item on the floor, hoping no one would see. But, at the same moment, a man crossed their way and all the knight's dreams faded away." }, + { text = "A knight from Candia was dining at Frodo's hut, devouring plates full of meat and whatnot. Suddenly, he was called to fight. He wanted to put his armor on but it was too tight." }, + { text = "The druid entered a Premian pyramid intent on the kill, 'Oh, that djinn will die, it will!' Down and up the stairs she hopped like a cat... When, Oops! She moved the wrong way, and died a drunk rat." }, + { text = "Hoping to find a strange orc in his spawn, a Zaneran knight logged on before dawn. A sudden heart attack left him surprised as Sam's old backpack he had recognised." }, + { text = "The world I shall save', an Olympian knight proclaimed! But from a visit to the bar he could not abstain! He woke up in pain, it all was in vain. From Venorian beer he will forever refrain." }, + { text = "During the dark and scary night, when others sleep he goes to fight, banishing demons, that feels right, purging the evil on the sight, fearlessly waiting for daylight, Zeluna's bravest elite knight." }, + { text = "A druid from Celesta once talked with a girl, he even bought her a necklace with a huge white pearl. Every time he went home, without money and fame, I guess this girl is cursed, Aruda is the name." }, + { text = "A story of a knight untold, on Rowana the dice she rolled. She lured players from afar. Who could resist a shining star? She promised gold and many items, then stole their heart with cunning kindness." }, + { text = "Do you think it's just a game? Don't you fear the dragon's flame? If you are as brave as bright, if you do not stray from fight, you may want to hear tonight, the tale of Guardia's lonely knight." }, + { text = "For a knight from Yanara 10,000 gold were a lot. So he ventured with a team into the desert to win that pot. He solved all the riddles, strongly willed. But on his journey home he sadly was killed." }, + { text = "A great mage from Celesta went dungeon down deep, he was very brave but his wand was cheap. Among white skeletons one of them was red. Last what he saw were the words: 'You are dead!'" }, + { text = "A young sorcerer born and raised on Astera when dragons were scary, it was that kind of era. Walking all the way to the city of Venore, he stole from the dwarven bridge nothing less than an iron ore." }, + { text = "A druid from Eternia just bought his first boots of haste, to finally have his leather boots replaced. Catching a backpack of fish was now his dream, but he ended up swinging his new boots upstream." }, + { text = "A sorcerer from Efidia took his horse and got it saddled, and set out for battle. His horse lost control and threw him into a hole. Now his team lost all hope, because he forgot to bring a rope." }, + { text = "A knight in Guardia was feeling bored. He wanted to show a dragon lord the taste of his new carlin sword. To its lair then he did go. But before he saw his foe, he met his end by a one hit K.O." }, + { text = "On Secura a confident knight levelled to main, 840 rats he had slain. 'I am going to kill dragons,' he said while pounding his breastplate. The next thing he saw was: 'You have met a sad fate.'" }, + { text = "One morning frosty fresh and nice, a knight was fishing on the ice. Catching some pikes for soup, but a dire penguin ate his loot. His angry wife said in the house: Now whole Beneva will laugh at us!" }, + { text = "A paladin slaying dragons on Antica's soil, when a lord charges on to make the adventurer's blood boil. It puts up a strong fight, but to no avail. It gets slain and drops a dragon scale mail!" }, + { text = "Through Rookgaard's sewer there swarmed no fewer than a hundred screeching rats. Wading through mud, and covered in blood, two young men fought back-to-back. To Trimera's end; a knight, and a friend." }, } local keywordHandler = KeywordHandler:new() @@ -75,11 +75,11 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = "Our world, our home, our very own plane of existence. We have to protect it, mind you. Underneath all the battles, challenges and monsters there still resides a majestic, yet vulnerable being. A mother to us all." }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = "A king and a beggar know more than a king alone... ahem, except for King Tibianus. He most certainly would. All hail King Tibianus etc. etc." }) -keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, text = "So, you're on a mission. Aren't we all? A quest to savour the important moments, the valuable memories? To fight for love and happiness, heroically and against all odds? Yes, we are indeed." }) -keywordHandler:addKeyword({ 'quest' }, StdModule.say, { npcHandler = npcHandler, text = "So, you're on a mission. Aren't we all? A quest to savour the important moments, the valuable memories? To fight for love and happiness, heroically and against all odds? Yes, we are indeed." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "Rather a calling. The weight of words is something not easily lifted by some, yet it can be a mighty weapon to others. ..." }) -- Need to add the rest in a second delayed message --It is my duty to see to it that the words of mighty poets all over Tibia are spread and carried with the heart and prowess they deserve. +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "Our world, our home, our very own plane of existence. We have to protect it, mind you. Underneath all the battles, challenges and monsters there still resides a majestic, yet vulnerable being. A mother to us all." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "A king and a beggar know more than a king alone... ahem, except for King Tibianus. He most certainly would. All hail King Tibianus etc. etc." }) +keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = "So, you're on a mission. Aren't we all? A quest to savour the important moments, the valuable memories? To fight for love and happiness, heroically and against all odds? Yes, we are indeed." }) +keywordHandler:addKeyword({ "quest" }, StdModule.say, { npcHandler = npcHandler, text = "So, you're on a mission. Aren't we all? A quest to savour the important moments, the valuable memories? To fight for love and happiness, heroically and against all odds? Yes, we are indeed." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Rather a calling. The weight of words is something not easily lifted by some, yet it can be a mighty weapon to others. ..." }) -- Need to add the rest in a second delayed message --It is my duty to see to it that the words of mighty poets all over Tibia are spread and carried with the heart and prowess they deserve. npcHandler:setMessage(MESSAGE_GREET, "This world is nothing without poetry, don't you think? It gives us hope, it envokes love. It's inciting and invigorating all the same.") npcHandler:setMessage(MESSAGE_FAREWELL, " Goodbye and farewell, my friend.") diff --git a/data-otservbr-global/npc/edmund.lua b/data-otservbr-global/npc/edmund.lua index fa646d22e3a..9478a876aeb 100644 --- a/data-otservbr-global/npc/edmund.lua +++ b/data-otservbr-global/npc/edmund.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 95, lookFeet = 78, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -105,7 +105,7 @@ npcConfig.shop = { { itemName = "violet crystal shard", clientId = 16120, sell = 1500 }, { itemName = "wedding ring", clientId = 3004, buy = 990 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -116,7 +116,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/edoch.lua b/data-otservbr-global/npc/edoch.lua index c3756786fe7..a832052f5fa 100644 --- a/data-otservbr-global/npc/edoch.lua +++ b/data-otservbr-global/npc/edoch.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 40, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -78,7 +78,7 @@ npcConfig.shop = { { itemName = "spectral bolt", clientId = 35902, buy = 70 }, { itemName = "tarsal arrow", clientId = 14251, buy = 6 }, { itemName = "throwing star", clientId = 3287, buy = 42 }, - { itemName = "vortex bolt", clientId = 14252, buy = 6 } + { itemName = "vortex bolt", clientId = 14252, buy = 6 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -89,7 +89,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/edowir.lua b/data-otservbr-global/npc/edowir.lua index 1c4427f2b0d..189bde552c4 100644 --- a/data-otservbr-global/npc/edowir.lua +++ b/data-otservbr-global/npc/edowir.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 58, lookLegs = 96, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'I\'m just an old man, but I know a lot about Tibia.' } + { text = "I'm just an old man, but I know a lot about Tibia." }, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I gather wisdom and knowledge. I am also an astrologer." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I gather wisdom and knowledge. I am also an astrologer." }) npcHandler:setMessage(MESSAGE_GREET, "Oh, hello |PLAYERNAME|! How nice of you to visit an old man like me.") npcHandler:setMessage(MESSAGE_FAREWELL, "Come back whenever you're in need of wisdom.") diff --git a/data-otservbr-global/npc/edron_guardsman.lua b/data-otservbr-global/npc/edron_guardsman.lua index 647e4959994..879e98d03da 100644 --- a/data-otservbr-global/npc/edron_guardsman.lua +++ b/data-otservbr-global/npc/edron_guardsman.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 57, lookFeet = 95, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,7 +52,7 @@ end local function greetCallback(npc, creature) local playerId = creature:getId() - npcHandler:say('Move on!', npc, creature) + npcHandler:say("Move on!", npc, creature) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) return false diff --git a/data-otservbr-global/npc/edvard.lua b/data-otservbr-global/npc/edvard.lua index 67179c3a391..7fc29d3dbf5 100644 --- a/data-otservbr-global/npc/edvard.lua +++ b/data-otservbr-global/npc/edvard.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 115, lookLegs = 96, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Have you moved to a new home? I\'m the specialist for equipping it.' } + { text = "Have you moved to a new home? I'm the specialist for equipping it." }, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'furniture' }, StdModule.say, { npcHandler = npcHandler, text = "Well, as you can see, I sell furniture. Ask me for a {trade} if you're interested to see my wares." }) +keywordHandler:addKeyword({ "furniture" }, StdModule.say, { npcHandler = npcHandler, text = "Well, as you can see, I sell furniture. Ask me for a {trade} if you're interested to see my wares." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to Edron Furniture Store, |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_SENDTRADE, "Have a look. Most furniture comes in handy kits. Just use them in your house to assemble the furniture. Do you want to see only a certain {type} of furniture?") @@ -158,7 +158,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -169,7 +169,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/eighty.lua b/data-otservbr-global/npc/eighty.lua index a1e4ba9d71b..16e6a206fc4 100644 --- a/data-otservbr-global/npc/eighty.lua +++ b/data-otservbr-global/npc/eighty.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 847 + lookTypeEx = 847, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/eirik.lua b/data-otservbr-global/npc/eirik.lua index 8966571cae1..5ef6699896b 100644 --- a/data-otservbr-global/npc/eirik.lua +++ b/data-otservbr-global/npc/eirik.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 116, lookFeet = 116, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/elane.lua b/data-otservbr-global/npc/elane.lua index 8f412435eac..02003b2d914 100644 --- a/data-otservbr-global/npc/elane.lua +++ b/data-otservbr-global/npc/elane.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 101, lookLegs = 120, lookFeet = 120, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -97,7 +97,7 @@ local function creatureSayCallback(npc, creature, type, message) "Secondly, we need a lot of leather for new quivers. 100 pieces of lizard leather and 100 pieces of red dragon leather should suffice. ...", "Third, since we are giving out tiaras, we are always in need of enchanted chicken wings. Please bring me 5, that would help us tremendously. ...", "Lastly, for our arrow heads we need a lot of steel. Best would be one piece of royal steel, one piece of draconian steel and one piece of hell steel. ...", - "Did you understand everything I told you and are willing to handle this task?" + "Did you understand everything I told you and are willing to handle this task?", }, npc, creature) npcHandler:setTopic(playerId, 3) elseif npcHandler:getTopic(playerId) == 3 then @@ -156,81 +156,88 @@ local function creatureSayCallback(npc, creature, type, message) end -- Sniper Gloves -keywordHandler:addKeyword({ 'sniper gloves' }, StdModule.say, { npcHandler = npcHandler, text = 'We are always looking for sniper gloves. They are supposed to raise accuracy. If you find a pair, bring them here. Maybe I can offer you a nice trade.' }, function(player) return player:getItemCount(5875) == 0 end) +keywordHandler:addKeyword({ "sniper gloves" }, StdModule.say, { npcHandler = npcHandler, text = "We are always looking for sniper gloves. They are supposed to raise accuracy. If you find a pair, bring them here. Maybe I can offer you a nice trade." }, function(player) + return player:getItemCount(5875) == 0 +end) local function addGloveKeyword(text, condition, action) - local gloveKeyword = keywordHandler:addKeyword({ 'sniper gloves' }, StdModule.say, { npcHandler = npcHandler, text = text[1] }, condition) - gloveKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = text[2], reset = true }, function(player) return player:getItemCount(5875) == 0 end) - gloveKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = text[3], reset = true }, nil, action) - gloveKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = text[2], reset = true }) + local gloveKeyword = keywordHandler:addKeyword({ "sniper gloves" }, StdModule.say, { npcHandler = npcHandler, text = text[1] }, condition) + gloveKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = text[2], reset = true }, function(player) + return player:getItemCount(5875) == 0 + end) + gloveKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = text[3], reset = true }, nil, action) + gloveKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = text[2], reset = true }) end -- Free Account addGloveKeyword({ - 'You found sniper gloves?! Incredible! I would love to grant you the sniper gloves accessory, but I can only do that for premium warriors. However, I would pay you 2000 gold pieces for them. How about it?', - 'Maybe another time.', - 'Alright! Here is your money, thank you very much.' -}, function(player) return not player:isPremium() end, function(player) + "You found sniper gloves?! Incredible! I would love to grant you the sniper gloves accessory, but I can only do that for premium warriors. However, I would pay you 2000 gold pieces for them. How about it?", + "Maybe another time.", + "Alright! Here is your money, thank you very much.", +}, function(player) + return not player:isPremium() +end, function(player) player:removeItem(5875, 1) player:addMoney(2000) -end -) +end) -- Premium account with addon addGloveKeyword({ - 'Did you find sniper gloves AGAIN?! Incredible! I cannot grant you other accessories, but would you like to sell them to me for 2000 gold pieces?', - 'Maybe another time.', - 'Alright! Here is your money, thank you very much.' -}, function(player) return player:getStorageValue(Storage.OutfitQuest.Hunter.AddonGlove) == 1 end, function(player) + "Did you find sniper gloves AGAIN?! Incredible! I cannot grant you other accessories, but would you like to sell them to me for 2000 gold pieces?", + "Maybe another time.", + "Alright! Here is your money, thank you very much.", +}, function(player) + return player:getStorageValue(Storage.OutfitQuest.Hunter.AddonGlove) == 1 +end, function(player) player:removeItem(5875, 1) player:addMoney(2000) -end -) +end) -- If you don't have the addon addGloveKeyword({ - 'You found sniper gloves?! Incredible! Listen, if you give them to me, I will grant you the right to wear the sniper gloves accessory. How about it?', - 'No problem, maybe another time.', - 'Great! I hereby grant you the right to wear the sniper gloves as an accessory. Congratulations!' -}, function(player) return player:getStorageValue(Storage.OutfitQuest.Hunter.AddonGlove) == -1 end, function(player) + "You found sniper gloves?! Incredible! Listen, if you give them to me, I will grant you the right to wear the sniper gloves accessory. How about it?", + "No problem, maybe another time.", + "Great! I hereby grant you the right to wear the sniper gloves as an accessory. Congratulations!", +}, function(player) + return player:getStorageValue(Storage.OutfitQuest.Hunter.AddonGlove) == -1 +end, function(player) player:removeItem(5875, 1) player:setStorageValue(Storage.OutfitQuest.Hunter.AddonGlove, 1) player:addOutfitAddon(129, 2) player:addOutfitAddon(137, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) -end -) +end) -- Basic -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = "I am the leader of the Paladins. I help our members." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the leader of the Paladins. I help our members." }) -keywordHandler:addKeyword({ 'paladins' }, StdModule.say, { npcHandler = npcHandler, text = "Paladins are great warriors and magicians. Besides that we are excellent missile fighters. Many people in Tibia want to join us." }) -keywordHandler:addKeyword({ 'warriors' }, StdModule.say, { npcHandler = npcHandler, text = "Of course, we aren't as strong as knights, but no druid or sorcerer will ever defeat a paladin with a sword." }) -keywordHandler:addKeyword({ 'magicians' }, StdModule.say, { npcHandler = npcHandler, text = "There are many magic spells and runes paladins can use." }) -keywordHandler:addKeyword({ 'missile' }, StdModule.say, { npcHandler = npcHandler, text = "Paladins are the best missile fighters in Tibia!" }) -keywordHandler:addKeyword({ 'news' }, StdModule.say, { npcHandler = npcHandler, text = "I am a paladin, not a storyteller." }) -keywordHandler:addKeyword({ 'members' }, StdModule.say, { npcHandler = npcHandler, text = "Every paladin profits from his vocation. It has many advantages to be a paladin." }) -keywordHandler:addKeyword({ 'advantages' }, StdModule.say, { npcHandler = npcHandler, text = "We will help you to improve your skills. Besides I offer spells for paladins." }) -keywordHandler:addKeyword({ 'general' }, StdModule.say, { npcHandler = npcHandler, text = "Harkath Bloodblade is the royal general." }) -keywordHandler:addKeyword({ 'army' }, StdModule.say, { npcHandler = npcHandler, text = "Some paladins serve in the kings army." }) -keywordHandler:addKeyword({ 'baxter' }, StdModule.say, { npcHandler = npcHandler, text = "He has some potential." }) -keywordHandler:addKeyword({ 'bozo' }, StdModule.say, { npcHandler = npcHandler, text = "How spineless do you have to be to become a jester?" }) -keywordHandler:addKeyword({ 'mcronald' }, StdModule.say, { npcHandler = npcHandler, text = "The McRonalds are simple farmers." }) -keywordHandler:addKeyword({ 'eclesius' }, StdModule.say, { npcHandler = npcHandler, text = "He must have been skilled before he became the way he is now. Such a pity." }) -keywordHandler:addKeyword({ 'elane' }, StdModule.say, { npcHandler = npcHandler, text = "Yes?" }) -keywordHandler:addKeyword({ 'frodo' }, StdModule.say, { npcHandler = npcHandler, text = "The alcohol he sells shrouds the mind and the eye." }) -keywordHandler:addKeyword({ 'galuna' }, StdModule.say, { npcHandler = npcHandler, text = "One of the most important members of our guild. She makes all the bows and arrows we need." }) -keywordHandler:addKeyword({ 'gorn' }, StdModule.say, { npcHandler = npcHandler, text = "He sells a lot of useful equipment." }) -keywordHandler:addKeyword({ 'gregor' }, StdModule.say, { npcHandler = npcHandler, text = "He and his guildfellows lack the grace of a true warrior." }) -keywordHandler:addKeyword({ 'harkath bloodblade' }, StdModule.say, { npcHandler = npcHandler, text = "A fine warrior and a skilled general." }) -keywordHandler:addKeyword({ 'king tibianus' }, StdModule.say, { npcHandler = npcHandler, text = "King Tibianus is a wise ruler." }) -keywordHandler:addKeyword({ 'lugri' }, StdModule.say, { npcHandler = npcHandler, text = "A follower of evil that will get what he deserves one day." }) -keywordHandler:addKeyword({ 'lynda' }, StdModule.say, { npcHandler = npcHandler, text = "Mhm, a little too nice for my taste. Still, it's amazing how she endures all those men stalking her, especially this creepy Oswald." }) -keywordHandler:addKeyword({ 'marvik' }, StdModule.say, { npcHandler = npcHandler, text = "A skilled healer, that's for sure." }) -keywordHandler:addKeyword({ 'muriel' }, StdModule.say, { npcHandler = npcHandler, text = "Just another arrogant sorcerer." }) -keywordHandler:addKeyword({ 'oswald' }, StdModule.say, { npcHandler = npcHandler, text = "If there wouldn't be higher powers to protect him..." }) -keywordHandler:addKeyword({ 'quentin' }, StdModule.say, { npcHandler = npcHandler, text = "A humble monk and a wise man." }) -keywordHandler:addKeyword({ 'sam' }, StdModule.say, { npcHandler = npcHandler, text = "Strong man. But a little shy." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "I am the leader of the Paladins. I help our members." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the leader of the Paladins. I help our members." }) +keywordHandler:addKeyword({ "paladins" }, StdModule.say, { npcHandler = npcHandler, text = "Paladins are great warriors and magicians. Besides that we are excellent missile fighters. Many people in Tibia want to join us." }) +keywordHandler:addKeyword({ "warriors" }, StdModule.say, { npcHandler = npcHandler, text = "Of course, we aren't as strong as knights, but no druid or sorcerer will ever defeat a paladin with a sword." }) +keywordHandler:addKeyword({ "magicians" }, StdModule.say, { npcHandler = npcHandler, text = "There are many magic spells and runes paladins can use." }) +keywordHandler:addKeyword({ "missile" }, StdModule.say, { npcHandler = npcHandler, text = "Paladins are the best missile fighters in Tibia!" }) +keywordHandler:addKeyword({ "news" }, StdModule.say, { npcHandler = npcHandler, text = "I am a paladin, not a storyteller." }) +keywordHandler:addKeyword({ "members" }, StdModule.say, { npcHandler = npcHandler, text = "Every paladin profits from his vocation. It has many advantages to be a paladin." }) +keywordHandler:addKeyword({ "advantages" }, StdModule.say, { npcHandler = npcHandler, text = "We will help you to improve your skills. Besides I offer spells for paladins." }) +keywordHandler:addKeyword({ "general" }, StdModule.say, { npcHandler = npcHandler, text = "Harkath Bloodblade is the royal general." }) +keywordHandler:addKeyword({ "army" }, StdModule.say, { npcHandler = npcHandler, text = "Some paladins serve in the kings army." }) +keywordHandler:addKeyword({ "baxter" }, StdModule.say, { npcHandler = npcHandler, text = "He has some potential." }) +keywordHandler:addKeyword({ "bozo" }, StdModule.say, { npcHandler = npcHandler, text = "How spineless do you have to be to become a jester?" }) +keywordHandler:addKeyword({ "mcronald" }, StdModule.say, { npcHandler = npcHandler, text = "The McRonalds are simple farmers." }) +keywordHandler:addKeyword({ "eclesius" }, StdModule.say, { npcHandler = npcHandler, text = "He must have been skilled before he became the way he is now. Such a pity." }) +keywordHandler:addKeyword({ "elane" }, StdModule.say, { npcHandler = npcHandler, text = "Yes?" }) +keywordHandler:addKeyword({ "frodo" }, StdModule.say, { npcHandler = npcHandler, text = "The alcohol he sells shrouds the mind and the eye." }) +keywordHandler:addKeyword({ "galuna" }, StdModule.say, { npcHandler = npcHandler, text = "One of the most important members of our guild. She makes all the bows and arrows we need." }) +keywordHandler:addKeyword({ "gorn" }, StdModule.say, { npcHandler = npcHandler, text = "He sells a lot of useful equipment." }) +keywordHandler:addKeyword({ "gregor" }, StdModule.say, { npcHandler = npcHandler, text = "He and his guildfellows lack the grace of a true warrior." }) +keywordHandler:addKeyword({ "harkath bloodblade" }, StdModule.say, { npcHandler = npcHandler, text = "A fine warrior and a skilled general." }) +keywordHandler:addKeyword({ "king tibianus" }, StdModule.say, { npcHandler = npcHandler, text = "King Tibianus is a wise ruler." }) +keywordHandler:addKeyword({ "lugri" }, StdModule.say, { npcHandler = npcHandler, text = "A follower of evil that will get what he deserves one day." }) +keywordHandler:addKeyword({ "lynda" }, StdModule.say, { npcHandler = npcHandler, text = "Mhm, a little too nice for my taste. Still, it's amazing how she endures all those men stalking her, especially this creepy Oswald." }) +keywordHandler:addKeyword({ "marvik" }, StdModule.say, { npcHandler = npcHandler, text = "A skilled healer, that's for sure." }) +keywordHandler:addKeyword({ "muriel" }, StdModule.say, { npcHandler = npcHandler, text = "Just another arrogant sorcerer." }) +keywordHandler:addKeyword({ "oswald" }, StdModule.say, { npcHandler = npcHandler, text = "If there wouldn't be higher powers to protect him..." }) +keywordHandler:addKeyword({ "quentin" }, StdModule.say, { npcHandler = npcHandler, text = "A humble monk and a wise man." }) +keywordHandler:addKeyword({ "sam" }, StdModule.say, { npcHandler = npcHandler, text = "Strong man. But a little shy." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to the paladins' guild, |PLAYERNAME|! How can I help you?") npcHandler:setMessage(MESSAGE_FAREWELL, "Bye, |PLAYERNAME|.") @@ -240,7 +247,7 @@ npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "sniper gloves", clientId = 5875, sell = 2000 } + { itemName = "sniper gloves", clientId = 5875, sell = 2000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -251,7 +258,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/elathriel.lua b/data-otservbr-global/npc/elathriel.lua index b5d45780b50..31fc97a3a6e 100644 --- a/data-otservbr-global/npc/elathriel.lua +++ b/data-otservbr-global/npc/elathriel.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 64 + lookType = 64, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,206 +45,142 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ "business" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I am the leader of the Kuridai and the Az'irel of Ab'Dendriel. \z - Humans would call it {sheriff}, executioner, or avenger." - } -) -keywordHandler:addKeyword({ "sheriff" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Sometimes people get imprisoned for some time. \z - True criminals will be cast out and for committing the worst crimes offenders are thrown into the hellgate." - } -) -keywordHandler:addKeyword({ "executioner" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Sometimes people get imprisoned for some time. \z - True criminals will be cast out and for committing the worst crimes offenders are thrown into the hellgate." - } -) -keywordHandler:addKeyword({ "avenger" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Sometimes people get imprisoned for some time. \z - True criminals will be cast out and for committing the worst crimes offenders are thrown into the hellgate." - } -) -keywordHandler:addKeyword({ "hellgate" }, StdModule.say, - { - npcHandler = npcHandler, - text = "It was here among other structures, like the depot tower, before our people came here. \z - It's secured by a sealed door." - } -) -keywordHandler:addKeyword({ "sealed" }, StdModule.say, - { - npcHandler = npcHandler, - text = "For safety we keep the door to the hellgate locked all times. I have the {keys} to open it when needed." - } -) -keywordHandler:addKeyword({ "door" }, StdModule.say, - { - npcHandler = npcHandler, - text = "For safety we keep the door to the hellgate locked all times. I have the {keys} to open it when needed." - } -) -keywordHandler:addKeyword({ "name" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Not that I like to talk to you, but I am Elathriel Shadowslayer." - } -) -keywordHandler:addKeyword({ "army" }, StdModule.say, - { - npcHandler = npcHandler, - text = "It's one of the more useful concepts we can learn from the other races." - } -) -keywordHandler:addKeyword({ "king" }, StdModule.say, - { - npcHandler = npcHandler, - text = "It's hard for some of my people to grasp the true concept of a strong leader." - } -) -keywordHandler:addKeyword({ "magic" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I mastered some battle spells." - } -) -keywordHandler:addKeyword({ "time" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I couldn't care less." - } -) -keywordHandler:addKeyword({ "eloise" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A human weakling, not much more." - } -) -keywordHandler:addKeyword({ "tibianus" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A human weakling, not much more." - } -) -keywordHandler:addKeyword({ "druid" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Druidic magic is too peaceful for my taste." - } -) -keywordHandler:addKeyword({ "sorcerer" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I have seen human sorcerers doing some impressive things ... before they died." - } -) -keywordHandler:addKeyword({ "dwarfs" }, StdModule.say, - { - npcHandler = npcHandler, - text = "We might use the shelter earth and hills provide us, but their obsession for metal is a waste of time." - } -) -keywordHandler:addKeyword({ "trolls" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Like all inferior races, they can be at least of use for something good. \z - The other castes are just jealous of us making use of them." - } -) -keywordHandler:addKeyword({ "excalibug" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I still doubt it exists." - } -) -keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Even if he'd walk through the town above, the other castes would not see the necessity to follow OUR way." - } -) -keywordHandler:addKeyword({ "elves" }, StdModule.say, - { - npcHandler = npcHandler, - text = "My people are divided in castes in these times, until they comprehend \z - that only the way of the Kuridai can save us all." - } -) -keywordHandler:addKeyword({ "cenath" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Arrogant bastards, but they wield quite powerful magic." - } -) -keywordHandler:addKeyword({ "teshial" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Dreamers are of no practical use. I don't mourn their demise." - } -) -keywordHandler:addKeyword({ "deraisim" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Confused cowards. For all their skill, they still tend to hide and run. What a waste." - } -) -keywordHandler:addKeyword({ "kuridai" }, StdModule.say, - { - npcHandler = npcHandler, - text = "We are the heart of the elven society. We forge, we build, and we don't allow our people to be pushed around." - } -) -keywordHandler:addKeyword({ "carlin" }, StdModule.say, - { - npcHandler = npcHandler, - text = "We watch this city and the actions of its inhabitants closely." - } -) -keywordHandler:addKeyword({ "venore" }, StdModule.say, - { - npcHandler = npcHandler, - text = "The merchants of venore provide us with some useful goods. \z - Still I an convinced that they get more out of our bargain then we do." - } -) -keywordHandler:addKeyword({ "thais" }, StdModule.say, - { - npcHandler = npcHandler, - text = "The Thaian kingdom and we share some enemies, so it's only logical to cooperate in a few areas." - } -) -keywordHandler:addKeyword({ "carlin" }, StdModule.say, - { - npcHandler = npcHandler, - text = "" - } -) -keywordHandler:addKeyword({ "offer" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I offer hardly anything except for knowledge of {spells}." - } -) -keywordHandler:addKeyword({ "buy" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I offer hardly anything except for knowledge of {spells}." - } -) -keywordHandler:addKeyword({ "sell" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I offer hardly anything except for knowledge of {spells}." - } -) +keywordHandler:addKeyword({ "business" }, StdModule.say, { + npcHandler = npcHandler, + text = "I am the leader of the Kuridai and the Az'irel of Ab'Dendriel. \z + Humans would call it {sheriff}, executioner, or avenger.", +}) +keywordHandler:addKeyword({ "sheriff" }, StdModule.say, { + npcHandler = npcHandler, + text = "Sometimes people get imprisoned for some time. \z + True criminals will be cast out and for committing the worst crimes offenders are thrown into the hellgate.", +}) +keywordHandler:addKeyword({ "executioner" }, StdModule.say, { + npcHandler = npcHandler, + text = "Sometimes people get imprisoned for some time. \z + True criminals will be cast out and for committing the worst crimes offenders are thrown into the hellgate.", +}) +keywordHandler:addKeyword({ "avenger" }, StdModule.say, { + npcHandler = npcHandler, + text = "Sometimes people get imprisoned for some time. \z + True criminals will be cast out and for committing the worst crimes offenders are thrown into the hellgate.", +}) +keywordHandler:addKeyword({ "hellgate" }, StdModule.say, { + npcHandler = npcHandler, + text = "It was here among other structures, like the depot tower, before our people came here. \z + It's secured by a sealed door.", +}) +keywordHandler:addKeyword({ "sealed" }, StdModule.say, { + npcHandler = npcHandler, + text = "For safety we keep the door to the hellgate locked all times. I have the {keys} to open it when needed.", +}) +keywordHandler:addKeyword({ "door" }, StdModule.say, { + npcHandler = npcHandler, + text = "For safety we keep the door to the hellgate locked all times. I have the {keys} to open it when needed.", +}) +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "Not that I like to talk to you, but I am Elathriel Shadowslayer.", +}) +keywordHandler:addKeyword({ "army" }, StdModule.say, { + npcHandler = npcHandler, + text = "It's one of the more useful concepts we can learn from the other races.", +}) +keywordHandler:addKeyword({ "king" }, StdModule.say, { + npcHandler = npcHandler, + text = "It's hard for some of my people to grasp the true concept of a strong leader.", +}) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { + npcHandler = npcHandler, + text = "I mastered some battle spells.", +}) +keywordHandler:addKeyword({ "time" }, StdModule.say, { + npcHandler = npcHandler, + text = "I couldn't care less.", +}) +keywordHandler:addKeyword({ "eloise" }, StdModule.say, { + npcHandler = npcHandler, + text = "A human weakling, not much more.", +}) +keywordHandler:addKeyword({ "tibianus" }, StdModule.say, { + npcHandler = npcHandler, + text = "A human weakling, not much more.", +}) +keywordHandler:addKeyword({ "druid" }, StdModule.say, { + npcHandler = npcHandler, + text = "Druidic magic is too peaceful for my taste.", +}) +keywordHandler:addKeyword({ "sorcerer" }, StdModule.say, { + npcHandler = npcHandler, + text = "I have seen human sorcerers doing some impressive things ... before they died.", +}) +keywordHandler:addKeyword({ "dwarfs" }, StdModule.say, { + npcHandler = npcHandler, + text = "We might use the shelter earth and hills provide us, but their obsession for metal is a waste of time.", +}) +keywordHandler:addKeyword({ "trolls" }, StdModule.say, { + npcHandler = npcHandler, + text = "Like all inferior races, they can be at least of use for something good. \z + The other castes are just jealous of us making use of them.", +}) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { + npcHandler = npcHandler, + text = "I still doubt it exists.", +}) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { + npcHandler = npcHandler, + text = "Even if he'd walk through the town above, the other castes would not see the necessity to follow OUR way.", +}) +keywordHandler:addKeyword({ "elves" }, StdModule.say, { + npcHandler = npcHandler, + text = "My people are divided in castes in these times, until they comprehend \z + that only the way of the Kuridai can save us all.", +}) +keywordHandler:addKeyword({ "cenath" }, StdModule.say, { + npcHandler = npcHandler, + text = "Arrogant bastards, but they wield quite powerful magic.", +}) +keywordHandler:addKeyword({ "teshial" }, StdModule.say, { + npcHandler = npcHandler, + text = "Dreamers are of no practical use. I don't mourn their demise.", +}) +keywordHandler:addKeyword({ "deraisim" }, StdModule.say, { + npcHandler = npcHandler, + text = "Confused cowards. For all their skill, they still tend to hide and run. What a waste.", +}) +keywordHandler:addKeyword({ "kuridai" }, StdModule.say, { + npcHandler = npcHandler, + text = "We are the heart of the elven society. We forge, we build, and we don't allow our people to be pushed around.", +}) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { + npcHandler = npcHandler, + text = "We watch this city and the actions of its inhabitants closely.", +}) +keywordHandler:addKeyword({ "venore" }, StdModule.say, { + npcHandler = npcHandler, + text = "The merchants of venore provide us with some useful goods. \z + Still I an convinced that they get more out of our bargain then we do.", +}) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { + npcHandler = npcHandler, + text = "The Thaian kingdom and we share some enemies, so it's only logical to cooperate in a few areas.", +}) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { + npcHandler = npcHandler, + text = "", +}) +keywordHandler:addKeyword({ "offer" }, StdModule.say, { + npcHandler = npcHandler, + text = "I offer hardly anything except for knowledge of {spells}.", +}) +keywordHandler:addKeyword({ "buy" }, StdModule.say, { + npcHandler = npcHandler, + text = "I offer hardly anything except for knowledge of {spells}.", +}) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { + npcHandler = npcHandler, + text = "I offer hardly anything except for knowledge of {spells}.", +}) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -255,8 +191,12 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "key") then - npcHandler:say("If you are that curious, do you want to buy a key for 5000 gold? \z - Don't blame me if you get sucked in.", npc, creature) + npcHandler:say( + "If you are that curious, do you want to buy a key for 5000 gold? \z + Don't blame me if you get sucked in.", + npc, + creature + ) npcHandler:setTopic(playerId, 1) elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then @@ -281,19 +221,15 @@ local function creatureSayCallback(npc, creature, type, message) return true end -- Greeting message -keywordHandler:addGreetKeyword({ "ashari" }, - { - npcHandler = npcHandler, - text = "Be greeted |PLAYERNAME|. What is your {business} near the {hellgate}?" - } -) +keywordHandler:addGreetKeyword({ "ashari" }, { + npcHandler = npcHandler, + text = "Be greeted |PLAYERNAME|. What is your {business} near the {hellgate}?", +}) --Farewell message -keywordHandler:addFarewellKeyword({ "asgha thrazi" }, - { - npcHandler = npcHandler, - text = "Asha Thrazi, |PLAYERNAME|." - } -) +keywordHandler:addFarewellKeyword({ "asgha thrazi" }, { + npcHandler = npcHandler, + text = "Asha Thrazi, |PLAYERNAME|.", +}) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/elbert.lua b/data-otservbr-global/npc/elbert.lua index 7ce965a03f1..dd14c3eb410 100644 --- a/data-otservbr-global/npc/elbert.lua +++ b/data-otservbr-global/npc/elbert.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 119, lookLegs = 120, lookFeet = 121, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/eleonore.lua b/data-otservbr-global/npc/eleonore.lua index b7694c43bcf..e152235d2a9 100644 --- a/data-otservbr-global/npc/eleonore.lua +++ b/data-otservbr-global/npc/eleonore.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 66, lookLegs = 34, lookFeet = 53, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -62,7 +62,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.TheShatteredIsles.TheGovernorDaughter) < 1 then npcHandler:say({ "My ring was stolen by a parrot, directly from my dressing table near the window. It flew to the nearby mountains and I fear my ring will be lost forever. Whoever returns it to me will be rewarded generously. ...", - "I guess that evil parrot hid the ring somewhere on a high tree or a rock so that you might need a rake to get it." + "I guess that evil parrot hid the ring somewhere on a high tree or a rock so that you might need a rake to get it.", }, npc, creature) player:setStorageValue(Storage.TheShatteredIsles.DefaultStart, 1) player:setStorageValue(Storage.TheShatteredIsles.TheGovernorDaughter, 1) @@ -107,7 +107,7 @@ local function creatureSayCallback(npc, creature, type, message) player:addMoney(150) npcHandler:say({ "Ahh, now I understand... One of my suitors - a real chicken-heart - just brought back my ring. I was really surprised. Suddenly he shows brave attitude. But... It seems you lost it and he tries to take advantage. ...", - "Thanks a lot anyways and take this gold as a reward. By the way, I would need some help in another matter. It is only a small errand. Are you interested?" + "Thanks a lot anyways and take this gold as a reward. By the way, I would need some help in another matter. It is only a small errand. Are you interested?", }, npc, creature) player:setStorageValue(Storage.TheShatteredIsles.TheGovernorDaughter, 3) npcHandler:setTopic(playerId, 2) @@ -127,7 +127,7 @@ local function creatureSayCallback(npc, creature, type, message) "However, recently we lost contact. I don't know what has happened to him and fear the worst ...", "We always have been aware that something terrible might happen to him due to his lifestyle. But perhaps there is a harmless explanation for the absence of messages . I have arranged a passage for you to Ray's hiding place ...", "Contact Captain Waverider, the old fisherman, and tell him the secret word 'peg leg'. He will make sure that you arrive safely ...", - "Please look for Ray and find out what happened to him and why he was not able to answer. Return to me as soon as you have found something out. I wish you a good journey." + "Please look for Ray and find out what happened to him and why he was not able to answer. Return to me as soon as you have found something out. I wish you a good journey.", }, npc, creature) player:setStorageValue(Storage.TheShatteredIsles.TheErrand, 4) player:setStorageValue(Storage.TheShatteredIsles.AccessToMeriana, 1) diff --git a/data-otservbr-global/npc/elf_guard.lua b/data-otservbr-global/npc/elf_guard.lua index 6165c72e9c8..c79d0cb32a2 100644 --- a/data-otservbr-global/npc/elf_guard.lua +++ b/data-otservbr-global/npc/elf_guard.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 63 + lookType = 63, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,14 +45,14 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'elf' }, StdModule.say, { npcHandler = npcHandler, text = "The elves of this city are the casts of the Cenath, the Kuridai, and the Deraisim." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am a guardian of this town. I have no time to chat!" }) -keywordHandler:addKeyword({ 'cenath' }, StdModule.say, { npcHandler = npcHandler, text = "The Cenath are magic users. Look for them on the upper levels of the town." }) -keywordHandler:addKeyword({ 'deraisim' }, StdModule.say, { npcHandler = npcHandler, text = "The Deraisim are scouts and hunters. You may find them on the groundlevel of the city." }) -keywordHandler:addKeyword({ 'teshial' }, StdModule.say, { npcHandler = npcHandler, text = "There are no Teshial." }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = "If you are looking for that kind of equipment you should ask a Kuridai." }) -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = "Ask around in Ab'Dendriel. Many elves can teach you something about magic. The Cenath love magic most of all." }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = "The city of the humans lies somewhere far to the south beyond the mountains of the dwarfs." }) +keywordHandler:addKeyword({ "elf" }, StdModule.say, { npcHandler = npcHandler, text = "The elves of this city are the casts of the Cenath, the Kuridai, and the Deraisim." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am a guardian of this town. I have no time to chat!" }) +keywordHandler:addKeyword({ "cenath" }, StdModule.say, { npcHandler = npcHandler, text = "The Cenath are magic users. Look for them on the upper levels of the town." }) +keywordHandler:addKeyword({ "deraisim" }, StdModule.say, { npcHandler = npcHandler, text = "The Deraisim are scouts and hunters. You may find them on the groundlevel of the city." }) +keywordHandler:addKeyword({ "teshial" }, StdModule.say, { npcHandler = npcHandler, text = "There are no Teshial." }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "If you are looking for that kind of equipment you should ask a Kuridai." }) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "Ask around in Ab'Dendriel. Many elves can teach you something about magic. The Cenath love magic most of all." }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "The city of the humans lies somewhere far to the south beyond the mountains of the dwarfs." }) -- Greeting message keywordHandler:addGreetKeyword({ "ashari" }, { npcHandler = npcHandler, text = "Ashari, |PLAYERNAME|." }) @@ -60,8 +60,8 @@ keywordHandler:addGreetKeyword({ "ashari" }, { npcHandler = npcHandler, text = " keywordHandler:addFarewellKeyword({ "asgha thrazi" }, { npcHandler = npcHandler, text = "Asha Thrazi, |PLAYERNAME|." }) npcHandler:setMessage(MESSAGE_GREET, "Ashari |PLAYERNAME|.") -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Asha Thrazi, |PLAYERNAME|!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Asha Thrazi, |PLAYERNAME|!') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Asha Thrazi, |PLAYERNAME|!") +npcHandler:setMessage(MESSAGE_FAREWELL, "Asha Thrazi, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/elgar.lua b/data-otservbr-global/npc/elgar.lua index f776dcaf0c2..f96ebf94fff 100644 --- a/data-otservbr-global/npc/elgar.lua +++ b/data-otservbr-global/npc/elgar.lua @@ -16,22 +16,22 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 116, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/eliyas.lua b/data-otservbr-global/npc/eliyas.lua index a570ca1393a..de799a95b1c 100644 --- a/data-otservbr-global/npc/eliyas.lua +++ b/data-otservbr-global/npc/eliyas.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 78, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,42 +58,41 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'outfit') then + if MsgContains(message, "outfit") then if player:getSex() == PLAYERSEX_MALE then - npcHandler:say('My jewelled belt? That\'s not very manly. Maybe you\'d prefer a scimitar like Habdel has.', npc, creature) + npcHandler:say("My jewelled belt? That's not very manly. Maybe you'd prefer a scimitar like Habdel has.", npc, creature) return true end if player:getStorageValue(Storage.OutfitQuest.firstOrientalAddon) < 1 then - npcHandler:say('My jewelled belt? Of course I could make one for you, but I have a small request. Would you fulfil a task for me?', npc, creature) + npcHandler:say("My jewelled belt? Of course I could make one for you, but I have a small request. Would you fulfil a task for me?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'comb') then + elseif MsgContains(message, "comb") then if player:getSex() == PLAYERSEX_MALE then - npcHandler:say('Comb? This is a jewellery shop.', npc, creature) + npcHandler:say("Comb? This is a jewellery shop.", npc, creature) return true end if player:getStorageValue(Storage.OutfitQuest.firstOrientalAddon) == 1 then - npcHandler:say('Have you brought me a mermaid\'s comb?', npc, creature) + npcHandler:say("Have you brought me a mermaid's comb?", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - 'Listen, um... I have been wanting a comb for a long time... not just any comb, but a mermaid\'s comb. Having a mermaid\'s comb means never having split ends again! ...', - 'You know what that means to a girl! Could you please bring me such a comb? I really would appreciate it.' + "Listen, um... I have been wanting a comb for a long time... not just any comb, but a mermaid's comb. Having a mermaid's comb means never having split ends again! ...", + "You know what that means to a girl! Could you please bring me such a comb? I really would appreciate it.", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then player:setStorageValue(Storage.OutfitQuest.DefaultStart, 1) player:setStorageValue(Storage.OutfitQuest.firstOrientalAddon, 1) - npcHandler:say('Yay! I will wait for you to return with a mermaid\'s comb then.', npc, creature) + npcHandler:say("Yay! I will wait for you to return with a mermaid's comb then.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then if not player:removeItem(5945, 1) then - npcHandler:say('No... that\'s not it.', npc, creature) + npcHandler:say("No... that's not it.", npc, creature) npcHandler:setTopic(playerId, 0) return true end @@ -102,24 +101,24 @@ local function creatureSayCallback(npc, creature, type, message) player:addOutfitAddon(150, 1) player:addOutfitAddon(146, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - npcHandler:say('Yeah! That\'s it! I can\'t wait to comb my hair! Oh - but first, I\'ll fulfil my promise: Here is your jewelled belt! Thanks again!', npc, creature) + npcHandler:say("Yeah! That's it! I can't wait to comb my hair! Oh - but first, I'll fulfil my promise: Here is your jewelled belt! Thanks again!", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) ~= 0 then - npcHandler:say('Oh... okay.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) ~= 0 then + npcHandler:say("Oh... okay.", npc, creature) npcHandler:setTopic(playerId, 0) end return true end -keywordHandler:addKeyword({ 'need' }, StdModule.say, { npcHandler = npcHandler, text = 'I am a jeweller. Maybe you want to have a look at my wonderful {offers}.' }) -keywordHandler:addKeyword({ 'offers' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, I sell gems and {goblets}. If you\'d like to see my offers, ask me for a {trade}.' }) -keywordHandler:addKeyword({ 'goblets' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, our newest import! We have golden goblets, silver goblets and bronze goblets. All of them have space for a hand-written dedication.' }) +keywordHandler:addKeyword({ "need" }, StdModule.say, { npcHandler = npcHandler, text = "I am a jeweller. Maybe you want to have a look at my wonderful {offers}." }) +keywordHandler:addKeyword({ "offers" }, StdModule.say, { npcHandler = npcHandler, text = "Well, I sell gems and {goblets}. If you'd like to see my offers, ask me for a {trade}." }) +keywordHandler:addKeyword({ "goblets" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, our newest import! We have golden goblets, silver goblets and bronze goblets. All of them have space for a hand-written dedication." }) -npcHandler:setMessage(MESSAGE_GREET, 'Be greeted, |PLAYERNAME|. Which of my fine gems do you {need}?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Daraman\'s blessings and good bye.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Daraman\'s blessings and good bye.') +npcHandler:setMessage(MESSAGE_GREET, "Be greeted, |PLAYERNAME|. Which of my fine gems do you {need}?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Daraman's blessings and good bye.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Daraman's blessings and good bye.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -150,7 +149,7 @@ npcConfig.shop = { { itemName = "spectral bolt", clientId = 35902, buy = 70 }, { itemName = "tarsal arrow", clientId = 14251, buy = 6 }, { itemName = "throwing star", clientId = 3287, buy = 42 }, - { itemName = "vortex bolt", clientId = 14252, buy = 6 } + { itemName = "vortex bolt", clientId = 14252, buy = 6 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -161,7 +160,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/eliza.lua b/data-otservbr-global/npc/eliza.lua index d9c4f4ca9b1..10be55d7fe3 100644 --- a/data-otservbr-global/npc/eliza.lua +++ b/data-otservbr-global/npc/eliza.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 58 + lookType = 58, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/elliott.lua b/data-otservbr-global/npc/elliott.lua index c4342de2303..ced6e923d8a 100644 --- a/data-otservbr-global/npc/elliott.lua +++ b/data-otservbr-global/npc/elliott.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 114, lookFeet = 114, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -115,7 +115,7 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:setMessage(MESSAGE_GREET, "") -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye!') -- Need revision +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye!") -- Need revision npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/elvith.lua b/data-otservbr-global/npc/elvith.lua index a67fad2c2bd..4e7b1d52b29 100644 --- a/data-otservbr-global/npc/elvith.lua +++ b/data-otservbr-global/npc/elvith.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 76, lookBody = 3, lookLegs = 0, - lookFeet = 76 + lookFeet = 76, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -48,22 +48,22 @@ end npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I sell musical instruments of many kinds.' }) -keywordHandler:addKeyword({ 'instruments' }, StdModule.say, { npcHandler = npcHandler, text = 'I sell lyres, lutes, drums, and simple fanfares.' }) -keywordHandler:addKeyword({ 'music' }, StdModule.say, { npcHandler = npcHandler, text = 'Music is an attempt to condensate emotions in harmonies and save them for the times to come.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'Time has its own song. Close your eyes and listen to the symphony of the seasons.' }) -keywordHandler:addKeyword({ 'song' }, StdModule.say, { npcHandler = npcHandler, text = 'Everything is a song. Life, death, history ... everything. To listen to the song of something is the first step to understand it.' }) -keywordHandler:addKeyword({ 'melody' }, StdModule.say, { npcHandler = npcHandler, text = 'Everything is a song. Life, death, history ... everything. To listen to the song of something is the first step to understand it.' }) -keywordHandler:addKeyword({ 'elf' }, StdModule.say, { npcHandler = npcHandler, text = 'We are the most graceful of all races. We feel the music of the universe in our hearts and souls.' }) -keywordHandler:addKeyword({ 'kuridai' }, StdModule.say, { npcHandler = npcHandler, text = 'They could dig some halls for a big musical event, but they won\'t listen to me about that matter.' }) -keywordHandler:addKeyword({ 'teshial' }, StdModule.say, { npcHandler = npcHandler, text = 'I bet they were great musicians.' }) -keywordHandler:addKeyword({ 'crunor' }, StdModule.say, { npcHandler = npcHandler, text = 'That is some god the humans worship. Our pople are not interested in this gods anymore.' }) -keywordHandler:addKeyword({ 'human' }, StdModule.say, { npcHandler = npcHandler, text = 'They are too loud and don\'t even understand the concept of a melody.' }) -keywordHandler:addKeyword({ 'deraisim' }, StdModule.say, { npcHandler = npcHandler, text = 'The other deraisim are too much concerned with mastering the nature so they don\'t listen to its music anymore.' }) -keywordHandler:addKeyword({ 'cenath' }, StdModule.say, { npcHandler = npcHandler, text = 'The Cenath think they know the \'art\' but the only true art is the music.' }) -keywordHandler:addKeyword({ 'troll' }, StdModule.say, { npcHandler = npcHandler, text = 'I went down to the mines and tried to lighten up their spirit, the foolish creatures did not listen to my songs, though.' }) -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, I don\'t feel like teaching magic today.' }) -keywordHandler:addKeyword({ 'hellgate' }, StdModule.say, { npcHandler = npcHandler, text = 'For the worst of crimes, criminals are cast into hellgate. It is said no one can return from there. Since it is not actually forbidden to enter hellgate, you might convince Elathriel to grant you entrance.' }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I sell musical instruments of many kinds." }) +keywordHandler:addKeyword({ "instruments" }, StdModule.say, { npcHandler = npcHandler, text = "I sell lyres, lutes, drums, and simple fanfares." }) +keywordHandler:addKeyword({ "music" }, StdModule.say, { npcHandler = npcHandler, text = "Music is an attempt to condensate emotions in harmonies and save them for the times to come." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Time has its own song. Close your eyes and listen to the symphony of the seasons." }) +keywordHandler:addKeyword({ "song" }, StdModule.say, { npcHandler = npcHandler, text = "Everything is a song. Life, death, history ... everything. To listen to the song of something is the first step to understand it." }) +keywordHandler:addKeyword({ "melody" }, StdModule.say, { npcHandler = npcHandler, text = "Everything is a song. Life, death, history ... everything. To listen to the song of something is the first step to understand it." }) +keywordHandler:addKeyword({ "elf" }, StdModule.say, { npcHandler = npcHandler, text = "We are the most graceful of all races. We feel the music of the universe in our hearts and souls." }) +keywordHandler:addKeyword({ "kuridai" }, StdModule.say, { npcHandler = npcHandler, text = "They could dig some halls for a big musical event, but they won't listen to me about that matter." }) +keywordHandler:addKeyword({ "teshial" }, StdModule.say, { npcHandler = npcHandler, text = "I bet they were great musicians." }) +keywordHandler:addKeyword({ "crunor" }, StdModule.say, { npcHandler = npcHandler, text = "That is some god the humans worship. Our pople are not interested in this gods anymore." }) +keywordHandler:addKeyword({ "human" }, StdModule.say, { npcHandler = npcHandler, text = "They are too loud and don't even understand the concept of a melody." }) +keywordHandler:addKeyword({ "deraisim" }, StdModule.say, { npcHandler = npcHandler, text = "The other deraisim are too much concerned with mastering the nature so they don't listen to its music anymore." }) +keywordHandler:addKeyword({ "cenath" }, StdModule.say, { npcHandler = npcHandler, text = "The Cenath think they know the 'art' but the only true art is the music." }) +keywordHandler:addKeyword({ "troll" }, StdModule.say, { npcHandler = npcHandler, text = "I went down to the mines and tried to lighten up their spirit, the foolish creatures did not listen to my songs, though." }) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, I don't feel like teaching magic today." }) +keywordHandler:addKeyword({ "hellgate" }, StdModule.say, { npcHandler = npcHandler, text = "For the worst of crimes, criminals are cast into hellgate. It is said no one can return from there. Since it is not actually forbidden to enter hellgate, you might convince Elathriel to grant you entrance." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -73,25 +73,25 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'songs of the forest') then + if MsgContains(message, "songs of the forest") then npcHandler:say({ - 'The last issue I had was bought by Randor Swiftfinger. He was banished through the hellgate and probably took the book with him ...', - 'I would not recommend seeking him or the book there, but of course it is possible.' + "The last issue I had was bought by Randor Swiftfinger. He was banished through the hellgate and probably took the book with him ...", + "I would not recommend seeking him or the book there, but of course it is possible.", }, npc, creature) - elseif MsgContains(message, 'love poem') then - npcHandler:say('Do you want to buy a poem scroll for 200 gold?', npc, creature) + elseif MsgContains(message, "love poem") then + npcHandler:say("Do you want to buy a poem scroll for 200 gold?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:setTopic(playerId, 0) local player = Player(creature) if not player:removeMoneyBank(200) then - npcHandler:say('You don\'t have enough money.', npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) return true end player:addItem(6119, 1) - npcHandler:say('Here it is.', npc, creature) + npcHandler:say("Here it is.", npc, creature) end end return true @@ -104,9 +104,9 @@ keywordHandler:addFarewellKeyword({ "asgha thrazi" }, { npcHandler = npcHandler, npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) -npcHandler:setMessage(MESSAGE_GREET, 'Ashari |PLAYERNAME|.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Asha Thrazi, |PLAYERNAME|!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Asha Thrazi, |PLAYERNAME|!') +npcHandler:setMessage(MESSAGE_GREET, "Ashari |PLAYERNAME|.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Asha Thrazi, |PLAYERNAME|!") +npcHandler:setMessage(MESSAGE_FAREWELL, "Asha Thrazi, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -115,7 +115,7 @@ npcConfig.shop = { { itemName = "lute", clientId = 2950, buy = 195 }, { itemName = "lyre", clientId = 2949, buy = 120 }, { itemName = "poem scroll", clientId = 6119, buy = 200 }, - { itemName = "simple fanfare", clientId = 2954, buy = 150 } + { itemName = "simple fanfare", clientId = 2954, buy = 150 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -126,7 +126,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/elyen_ravenlock.lua b/data-otservbr-global/npc/elyen_ravenlock.lua index 9ab42b6e035..51c8b0a4a92 100644 --- a/data-otservbr-global/npc/elyen_ravenlock.lua +++ b/data-otservbr-global/npc/elyen_ravenlock.lua @@ -11,19 +11,19 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 58 + lookType = 58, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = '' }, - { text = ' Re Ha, Omrah, Tan Ra...' }, - { text = 'The rats... the rats in the walls...' } + { text = "" }, + { text = " Re Ha, Omrah, Tan Ra..." }, + { text = "The rats... the rats in the walls..." }, } local keywordHandler = KeywordHandler:new() @@ -61,37 +61,37 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, 'scroll') or MsgContains(message, 'mission')) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission61) < 1 then + if (MsgContains(message, "scroll") or MsgContains(message, "mission")) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission61) < 1 then npcHandler:say("Hello, brother. You come with a question to me, I believe?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) == 1 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) == 1 then npcHandler:say("And what is it you want? Do you bring news from the undead, or do you seek a dark {artefact}?", npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission45, 1) npcHandler:setTopic(playerId, 2) - elseif (MsgContains(message, 'artefact') or MsgContains(message, 'yes')) and npcHandler:getTopic(playerId) == 2 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission61) < 1 then + elseif (MsgContains(message, "artefact") or MsgContains(message, "yes")) and npcHandler:getTopic(playerId) == 2 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission61) < 1 then npcHandler:say({ "The scroll piece there? The symbols look promising, but it is incomplete. ...", "It is of little use to us. But it seems to be of interest to you ...", - "In exchange for the scroll piece, you must assist me with something. {Agreed}?" + "In exchange for the scroll piece, you must assist me with something. {Agreed}?", }, npc, creature) npcHandler:setTopic(playerId, 3) - elseif (MsgContains(message, 'agreed') or MsgContains(message, 'yes')) and npcHandler:getTopic(playerId) == 3 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission61) < 1 then + elseif (MsgContains(message, "agreed") or MsgContains(message, "yes")) and npcHandler:getTopic(playerId) == 3 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission61) < 1 then npcHandler:say({ "I would have to sing to the Dark Shrines, but I cannot. ...", "I... cannot bear Urgith's breed. Everywhere, I hear them - scrabbling, squeaking ...", "Take this bone flute and play it in front of the five Dark Shrines so that they answer with song in return. You will find them in the Gardens of Night. ...", - "If you have done that, you may have the scroll piece. Now go." + "If you have done that, you may have the scroll piece. Now go.", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission61, 1) player:addItem(18932, 1) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'mission') and player:getStorageValue(Storage.GravediggerOfDrefia.Mission66) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission67) < 1 then + elseif MsgContains(message, "mission") and player:getStorageValue(Storage.GravediggerOfDrefia.Mission66) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission67) < 1 then npcHandler:say("Hello, brother. You have finished the dance?", npc, creature) npcHandler:setTopic(playerId, 4) - elseif (MsgContains(message, 'yes')) and npcHandler:getTopic(playerId) == 4 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission66) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission67) < 1 then + elseif (MsgContains(message, "yes")) and npcHandler:getTopic(playerId) == 4 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission66) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission67) < 1 then npcHandler:say({ "You have indeed. The shrines have sung back to you. Well done, brother. Not many men take such an interest in our art. ...", - "I will take the flute back. Our bargain stands. You may take the scroll." + "I will take the flute back. Our bargain stands. You may take the scroll.", }, npc, creature) player:removeItem(18932, 1) player:setStorageValue(Storage.GravediggerOfDrefia.Mission67, 1) diff --git a/data-otservbr-global/npc/emael.lua b/data-otservbr-global/npc/emael.lua index 03455c52c25..b2e27b43f77 100644 --- a/data-otservbr-global/npc/emael.lua +++ b/data-otservbr-global/npc/emael.lua @@ -17,17 +17,17 @@ npcConfig.outfit = { lookLegs = 75, lookFeet = 113, lookAddons = 1, - lookMount = 0 + lookMount = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Not enough space for all my trophies...' } + { text = "Not enough space for all my trophies..." }, } local keywordHandler = KeywordHandler:new() @@ -90,8 +90,7 @@ local function creatureSayCallback(npc, creature, type, message) end end -npcHandler:setMessage(MESSAGE_GREET, { "Hello! Ever asked yourself who killed all the monsters for the wall trophies? Yeah, that was me, Emael the Beasthunter! I am an expert in displaying trophies. ...", - "So if you have at least some dangerous monster to show off I strongly advise you to aquire a {podium} of vigour." }) +npcHandler:setMessage(MESSAGE_GREET, { "Hello! Ever asked yourself who killed all the monsters for the wall trophies? Yeah, that was me, Emael the Beasthunter! I am an expert in displaying trophies. ...", "So if you have at least some dangerous monster to show off I strongly advise you to aquire a {podium} of vigour." }) npcHandler:setMessage(MESSAGE_FAREWELL, "I wish you a good hunt. Goodbye!") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good hunting!") diff --git a/data-otservbr-global/npc/emberwing.lua b/data-otservbr-global/npc/emberwing.lua index ba91bb0c65b..b87c0df5416 100644 --- a/data-otservbr-global/npc/emberwing.lua +++ b/data-otservbr-global/npc/emberwing.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 992 + lookType = 992, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/emily.lua b/data-otservbr-global/npc/emily.lua index e7a63d59368..54b39a32094 100644 --- a/data-otservbr-global/npc/emily.lua +++ b/data-otservbr-global/npc/emily.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 76, lookFeet = 38, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/emma.lua b/data-otservbr-global/npc/emma.lua index 0bf39fcfff0..36a4a9f4e3e 100644 --- a/data-otservbr-global/npc/emma.lua +++ b/data-otservbr-global/npc/emma.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 90, lookLegs = 52, lookFeet = 15, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,60 +57,60 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then player:setStorageValue(Storage.SecretService.Quest, 1) player:addAchievement("Secret Agent") - npcHandler:say('I am still a bit sceptical, but well, welcome to the girls brigade.', npc, creature) + npcHandler:say("I am still a bit sceptical, but well, welcome to the girls brigade.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then if player:removeItem(648, 1) then player:setStorageValue(Storage.SecretService.CGBMission01, 2) player:setStorageValue(Storage.SecretService.Quest, 3) - npcHandler:say('How unnecessarily complicated, but that\'s the way those Thaians are. In the end we got what we wanted and they can\'t do anything about it.', npc, creature) + npcHandler:say("How unnecessarily complicated, but that's the way those Thaians are. In the end we got what we wanted and they can't do anything about it.", npc, creature) else - npcHandler:say('Bring me the spellbook.', npc, creature) + npcHandler:say("Bring me the spellbook.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then if player:removeItem(652, 1) then player:setStorageValue(Storage.SecretService.CGBMission02, 2) player:setStorageValue(Storage.SecretService.Quest, 5) - npcHandler:say('I think the druids will be pleased to hear that the immediate threat has been averted.', npc, creature) + npcHandler:say("I think the druids will be pleased to hear that the immediate threat has been averted.", npc, creature) else - npcHandler:say('Bring me the heart as proof.', npc, creature) + npcHandler:say("Bring me the heart as proof.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 4 then player:setStorageValue(Storage.SecretService.CGBMission03, 3) player:setStorageValue(Storage.SecretService.Quest, 7) - npcHandler:say('Great! This blow strikes them where it hurts most: profit.', npc, creature) + npcHandler:say("Great! This blow strikes them where it hurts most: profit.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 5 then if player:removeItem(399, 1) then player:setStorageValue(Storage.SecretService.CGBMission04, 2) player:setStorageValue(Storage.SecretService.Quest, 9) - npcHandler:say('I hope our craftsmen can do something with this stuff. For me it makes hardly any sense.', npc, creature) + npcHandler:say("I hope our craftsmen can do something with this stuff. For me it makes hardly any sense.", npc, creature) else - npcHandler:say('You need to bring me those plans!', npc, creature) + npcHandler:say("You need to bring me those plans!", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 6 then if player:removeItem(400, 1) then player:setStorageValue(Storage.SecretService.CGBMission05, 2) player:setStorageValue(Storage.SecretService.Quest, 11) - npcHandler:say('I will have this correspondence examined by our specialists. I am sure they are quite revealing.', npc, creature) + npcHandler:say("I will have this correspondence examined by our specialists. I am sure they are quite revealing.", npc, creature) else - npcHandler:say('Bring me back some hints or something!', npc, creature) + npcHandler:say("Bring me back some hints or something!", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 7 then if player:removeItem(401, 1) then player:setStorageValue(Storage.SecretService.CGBMission06, 2) player:setStorageValue(Storage.SecretService.Quest, 13) - npcHandler:say('I hope this old book will do those researches any good. Personally I see little use to proof some bloodlines after we cut all ties to Thais.', npc, creature) + npcHandler:say("I hope this old book will do those researches any good. Personally I see little use to proof some bloodlines after we cut all ties to Thais.", npc, creature) else - npcHandler:say('You need to bring us that book of family trees!', npc, creature) + npcHandler:say("You need to bring us that book of family trees!", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 8 then @@ -120,125 +120,125 @@ local function creatureSayCallback(npc, creature, type, message) player:addAchievement("Top CGB Agent") player:addItem(898, 1) npcHandler:say({ - 'Excellent. The queen was not amused about this threat. It\'s a good thing that you have saved the city ...', - 'Unfortunately, as we are secret agents we can\'t parade for you or something like that, but let me express our gratitude for everything you have done for our city ...', - 'Take this token of gratitude. You will know when to use it!' + "Excellent. The queen was not amused about this threat. It's a good thing that you have saved the city ...", + "Unfortunately, as we are secret agents we can't parade for you or something like that, but let me express our gratitude for everything you have done for our city ...", + "Take this token of gratitude. You will know when to use it!", }, npc, creature) else - npcHandler:say('Please bring me proof of the mad technomancers defeat!', npc, creature) + npcHandler:say("Please bring me proof of the mad technomancers defeat!", npc, creature) end npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') then - npcHandler:say('As you wish.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("As you wish.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'join') then + elseif MsgContains(message, "join") then if player:getStorageValue(Storage.SecretService.Quest) < 1 then if player:getSex() == PLAYERSEX_FEMALE then npcHandler:say({ "The girls brigade is the foremost front on which we fight the numerous enemies of our city ...", "It's a constant race to stay ahead of our enemies. Absolute loyalty and the willingness to put ones life at stake are attributes that are vital for this brigade ...", - "If you join, you dedicate your service to Carlin alone! Do you truly think that you are girl enough to join the brigade?" + "If you join, you dedicate your service to Carlin alone! Do you truly think that you are girl enough to join the brigade?", }, npc, creature) else npcHandler:say({ "A man in the girls brigade? Come on this is hilarious, this is outright stupid, this is ...", "exactly what no one would expect. Mhm, on second thought the element of surprise might offset your male inferiority. The girls brigade is the foremost front on which we fight the numerous enemies of our city ...", "It's a constant race to stay ahead of our enemies. Absolute loyalty and the willingness to put ones life at stake are attributes that are vital for this brigade ...", - "If you join, you dedicate your service to Carlin alone! Do you truly think that you are girl enough to join the brigade?" + "If you join, you dedicate your service to Carlin alone! Do you truly think that you are girl enough to join the brigade?", }, npc, creature) end npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.SecretService.TBIMission01) > 0 or player:getStorageValue(Storage.SecretService.AVINMission01) > 0 then npcHandler:say("Don't try to fool me. We are perfectly aware to whom you are loyal.", npc, creature) end - elseif MsgContains(message, 'mission') then + elseif MsgContains(message, "mission") then if player:getStorageValue(Storage.SecretService.Quest) == 1 and player:getStorageValue(Storage.SecretService.TBIMission01) < 1 and player:getStorageValue(Storage.SecretService.CGBMission01) < 1 then player:setStorageValue(Storage.SecretService.Quest, 2) player:setStorageValue(Storage.SecretService.CGBMission01, 1) npcHandler:say({ - 'Our relations with Thais can be called strained at best. Therefore, it\'s not really astounding that the Thaian financed Edron\'s academy but refuse to share some knowledge with our druids ..', - 'But we won\'t accept this so easily. With the help of divination, we learnt that the knowledge our druids are looking for is found in a certain book ...', - 'It will be your task to enter the academy and to steal this book for us.' + "Our relations with Thais can be called strained at best. Therefore, it's not really astounding that the Thaian financed Edron's academy but refuse to share some knowledge with our druids ..", + "But we won't accept this so easily. With the help of divination, we learnt that the knowledge our druids are looking for is found in a certain book ...", + "It will be your task to enter the academy and to steal this book for us.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.CGBMission01) == 1 then - npcHandler:say('Have you been successful?', npc, creature) + npcHandler:say("Have you been successful?", npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.SecretService.CGBMission01) == 2 and player:getStorageValue(Storage.SecretService.Quest) == 3 then player:setStorageValue(Storage.SecretService.Quest, 4) player:setStorageValue(Storage.SecretService.CGBMission02, 1) npcHandler:say({ - 'The druids have asked the brigade for a favour. Given that we heavily rely on their resources and they are important supporters of our cities, we can\'t deny them the request ...', - 'A wandering druid has recently visited the Green Claw Swamp, located north west of that corrupted hell hole Venore. While gathering herbs, he noticed some malignant presence in the said area ...', - 'Searching for the source of evil there, he detected some old ruin. Suddenly, he was attacked by bonelords and their undead minions. He barely managed to escape alive ...', - 'The evidence he found let him conclude that the bonelords in the ruins were raising so-called death trees.These trees are full of negative energy and slowly but steadily corrupt their surrounding ...', - 'After the druid\'s return to Carlin, divination confirmed his upsetting assumptions about the existence of these trees ...', - 'Over the years, hundreds have fallen victim to the swamp, conserved by mud and water for eternity. With the help of the death trees, the bonelords strive for an army of undeads. This cannot be tolerated ...', - 'Travel to Green Claw Swamp and rip out the heart out of the master tree. Without it, the unnatural trees will wither soon. Bring me the heart as proof.' + "The druids have asked the brigade for a favour. Given that we heavily rely on their resources and they are important supporters of our cities, we can't deny them the request ...", + "A wandering druid has recently visited the Green Claw Swamp, located north west of that corrupted hell hole Venore. While gathering herbs, he noticed some malignant presence in the said area ...", + "Searching for the source of evil there, he detected some old ruin. Suddenly, he was attacked by bonelords and their undead minions. He barely managed to escape alive ...", + "The evidence he found let him conclude that the bonelords in the ruins were raising so-called death trees.These trees are full of negative energy and slowly but steadily corrupt their surrounding ...", + "After the druid's return to Carlin, divination confirmed his upsetting assumptions about the existence of these trees ...", + "Over the years, hundreds have fallen victim to the swamp, conserved by mud and water for eternity. With the help of the death trees, the bonelords strive for an army of undeads. This cannot be tolerated ...", + "Travel to Green Claw Swamp and rip out the heart out of the master tree. Without it, the unnatural trees will wither soon. Bring me the heart as proof.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.CGBMission02) == 1 then - npcHandler:say('Have you been successful?', npc, creature) + npcHandler:say("Have you been successful?", npc, creature) npcHandler:setTopic(playerId, 3) elseif player:getStorageValue(Storage.SecretService.CGBMission02) == 2 and player:getStorageValue(Storage.SecretService.Quest) == 5 then player:setStorageValue(Storage.SecretService.Quest, 6) player:setStorageValue(Storage.SecretService.CGBMission03, 1) player:addItem(350, 1) npcHandler:say({ - 'The scheming Venoreans are a constant thorn in our side. They supply our enemies with all kind of equipment to boost the threat they pose to our freedom. It will be your task to hinder future weapon deliveries significantly ...', - 'The druids have supplied us with some exotic bugs. They are called rust bugs and they did not receive this name for their colour ...', - 'Take this box of rust bugs and use them on the keyhole of the smithy in the Ironhouse. These \'pets\' will ruin all metal there and it will take them a while to get rid of them.' + "The scheming Venoreans are a constant thorn in our side. They supply our enemies with all kind of equipment to boost the threat they pose to our freedom. It will be your task to hinder future weapon deliveries significantly ...", + "The druids have supplied us with some exotic bugs. They are called rust bugs and they did not receive this name for their colour ...", + "Take this box of rust bugs and use them on the keyhole of the smithy in the Ironhouse. These 'pets' will ruin all metal there and it will take them a while to get rid of them.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.CGBMission03) == 2 then - npcHandler:say('Have you been successful?', npc, creature) + npcHandler:say("Have you been successful?", npc, creature) npcHandler:setTopic(playerId, 4) elseif player:getStorageValue(Storage.SecretService.CGBMission03) == 3 and player:getStorageValue(Storage.SecretService.Quest) == 7 then player:setStorageValue(Storage.SecretService.Quest, 8) player:setStorageValue(Storage.SecretService.CGBMission04, 1) npcHandler:say({ - 'Venore has plans for a new kind of ship. It will be faster and more resilient than any other known ship. It will surely improve their dominance over the sea trade. Unless we get those plans for ourselves ...', - 'And this is where you come into play. Find the ship plans in the Venorean shipyard or perhaps at the harbour and bring them here immediately.' + "Venore has plans for a new kind of ship. It will be faster and more resilient than any other known ship. It will surely improve their dominance over the sea trade. Unless we get those plans for ourselves ...", + "And this is where you come into play. Find the ship plans in the Venorean shipyard or perhaps at the harbour and bring them here immediately.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.CGBMission04) == 1 then - npcHandler:say('Have you been successful?', npc, creature) + npcHandler:say("Have you been successful?", npc, creature) npcHandler:setTopic(playerId, 5) elseif player:getStorageValue(Storage.SecretService.CGBMission04) == 2 and player:getStorageValue(Storage.SecretService.Quest) == 9 then player:setStorageValue(Storage.SecretService.Quest, 10) player:setStorageValue(Storage.SecretService.CGBMission05, 1) npcHandler:say({ - 'Ruins of some ancient cathedral are found south west of Venore. It was a project that the Thaians never finished. However, our scouts reported some suspicious activities there ...', - 'There is a continual coming and going which hints on something big hiding there. We ask you to enter the ruins of the cathedral and to find out what all these people are doing there ...', - 'You might find several hints there, but I am sure you will know exactly when you have found what we are looking for.' + "Ruins of some ancient cathedral are found south west of Venore. It was a project that the Thaians never finished. However, our scouts reported some suspicious activities there ...", + "There is a continual coming and going which hints on something big hiding there. We ask you to enter the ruins of the cathedral and to find out what all these people are doing there ...", + "You might find several hints there, but I am sure you will know exactly when you have found what we are looking for.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.CGBMission05) == 1 then - npcHandler:say('Have you been successful?', npc, creature) + npcHandler:say("Have you been successful?", npc, creature) npcHandler:setTopic(playerId, 6) elseif player:getStorageValue(Storage.SecretService.CGBMission05) == 2 and player:getStorageValue(Storage.SecretService.Quest) == 11 then player:setStorageValue(Storage.SecretService.Quest, 12) player:setStorageValue(Storage.SecretService.CGBMission06, 1) npcHandler:say({ - 'As you might know, once the old aristocracy of our city shared blood-ties with the noblemen of Thais. There are many unresolved claims for titles and family heirlooms and Thais does little to help in this matter ...', - 'Therefore, we will take matters into our own hands. There is a grave in the crypts on the Isle of the Kings in which we assume a book containing ancient family histories and family trees ...', - 'We need this book! We will not ask how you acquired it.' + "As you might know, once the old aristocracy of our city shared blood-ties with the noblemen of Thais. There are many unresolved claims for titles and family heirlooms and Thais does little to help in this matter ...", + "Therefore, we will take matters into our own hands. There is a grave in the crypts on the Isle of the Kings in which we assume a book containing ancient family histories and family trees ...", + "We need this book! We will not ask how you acquired it.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.CGBMission06) == 1 then - npcHandler:say('Have you been successful?', npc, creature) + npcHandler:say("Have you been successful?", npc, creature) npcHandler:setTopic(playerId, 7) elseif player:getStorageValue(Storage.SecretService.CGBMission06) == 2 and player:getStorageValue(Storage.SecretService.Quest) == 13 then player:setStorageValue(Storage.SecretService.Quest, 14) player:setStorageValue(Storage.SecretService.Mission07, 1) npcHandler:say({ - 'I have bad news: a mad dwarf threatens to destroy our beloved city. He claims to have invented some device that enables him to destroy the whole city ...', - 'He has a laboratory somewhere in Kazordoon, probably somewhere near the technomancer hall. Find him and kill him! Bring me his beard as a proof!' + "I have bad news: a mad dwarf threatens to destroy our beloved city. He claims to have invented some device that enables him to destroy the whole city ...", + "He has a laboratory somewhere in Kazordoon, probably somewhere near the technomancer hall. Find him and kill him! Bring me his beard as a proof!", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.CGBMission06) == 2 and player:getStorageValue(Storage.SecretService.Mission07) == 1 then - npcHandler:say('Have you been successful?', npc, creature) + npcHandler:say("Have you been successful?", npc, creature) npcHandler:setTopic(playerId, 8) end end @@ -255,19 +255,22 @@ keywordHandler:addKeyword({ "cgb" }, StdModule.say, { npcHandler = npcHandler, text = { "The CGB is a patriotic organisation that fights our numerous enemies with means that guards or army do not have at their disposal. ...", - "We work secretly and covertly. We uncover secret plots and we are both the first line of defence of our city and the last. We are joined only by the best of the best." } + "We work secretly and covertly. We uncover secret plots and we are both the first line of defence of our city and the last. We are joined only by the best of the best.", + }, }) keywordHandler:addKeyword({ "avin" }, StdModule.say, { npcHandler = npcHandler, text = { "The AVIN is rather a crime syndicate than anything else. If there is something dirty and illegal, they are most likely involved. ...", - "They are unscrupulous and also do not back away from blackmailing and assassination." } + "They are unscrupulous and also do not back away from blackmailing and assassination.", + }, }) keywordHandler:addKeyword({ "tbi" }, StdModule.say, { npcHandler = npcHandler, text = { "The TBI is as old-fashioned, stubborn and inflexible as only males can be. What makes this bureaucracy somewhat dangerous, is the money they have at their disposal. ...", - "They buy spies and traitors - all of them weak-willed or greedy individuals." } + "They buy spies and traitors - all of them weak-willed or greedy individuals.", + }, }) keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the head of Carlin's Girls Brigade, also known as CGB." }) keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am known as Emma." }) @@ -275,7 +278,8 @@ keywordHandler:addKeyword({ "ab'dendriel" }, StdModule.say, { npcHandler = npcHandler, text = { "The elves of Ab'Dendriel are our allies. Our druids contribute most to keeping such a good relation. ...", - "They seem to understand the elves a bit better than we ordinary people do." } + "They seem to understand the elves a bit better than we ordinary people do.", + }, }) keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "The Thaians never got over the fact that we gained our independence. They do everything they can to hinder the prospering of our city." }) keywordHandler:addKeyword({ "venore" }, StdModule.say, { npcHandler = npcHandler, text = "Venore is a hellhole of evil. The trade barons' greed lets them plot against all other cities and even against each other." }) @@ -286,7 +290,8 @@ keywordHandler:addKeyword({ "liberty bay" }, StdModule.say, { npcHandler = npcHandler, text = { "The name of the city is a cruel joke. The people there are oppressed by Thais and Venore who slowly bleed the isle and its people white. ...", - "It shows what would have happened to us if our rebellion had failed." } + "It shows what would have happened to us if our rebellion had failed.", + }, }) keywordHandler:addKeyword({ "port hope" }, StdModule.say, { npcHandler = npcHandler, text = "It's just another Thaian puppet. Still, it is distant enough to stand a fair chance to get rid of Thais's oppression one day." }) keywordHandler:addKeyword({ "kazordoon" }, StdModule.say, { npcHandler = npcHandler, text = "The dwarfs of Kazordoon usually mind their own business. I wish all other cities would do the same." }) diff --git a/data-otservbr-global/npc/emperor_kruzak.lua b/data-otservbr-global/npc/emperor_kruzak.lua index 303261aff1c..9aa681d756d 100644 --- a/data-otservbr-global/npc/emperor_kruzak.lua +++ b/data-otservbr-global/npc/emperor_kruzak.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,19 +61,15 @@ local function creatureSayCallback(npc, creature, type, message) if (MsgContains(message, "outfit")) or (MsgContains(message, "addon")) then npcHandler:say("In exchange for a truly generous donation, I will offer a special outfit. Do you want to make a donation?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "yes")) then + elseif MsgContains(message, "yes") then -- vamos tratar todas condições para YES aqui if npcHandler:getTopic(playerId) == 1 then -- para o primeiro Yes, o npc deve explicar como obter o outfit - npcHandler:say( - { - "Excellent! Now, let me explain. If you donate 1.000.000.000 gold pieces, you will be entitled to wear a unique outfit. ...", - "You will be entitled to wear the {armor} for 500.000.000 gold pieces, {helmet} for an additional 250.000.000 and the {boots} for another 250.000.000 gold pieces. ...", - "What will it be?" - }, - npc, - creature - ) + npcHandler:say({ + "Excellent! Now, let me explain. If you donate 1.000.000.000 gold pieces, you will be entitled to wear a unique outfit. ...", + "You will be entitled to wear the {armor} for 500.000.000 gold pieces, {helmet} for an additional 250.000.000 and the {boots} for another 250.000.000 gold pieces. ...", + "What will it be?", + }, npc, creature) npcHandler:setTopic(playerId, 2) -- O NPC só vai oferecer os addons se o player já tiver escolhido. elseif npcHandler:getTopic(playerId) == 2 then @@ -176,15 +172,15 @@ local function creatureSayCallback(npc, creature, type, message) end -- Promotion -local node1 = keywordHandler:addKeyword({ 'promot' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'I can promote you for 20000 gold coins. Do you want me to promote you?' }) -node1:addChildKeyword({ 'yes' }, StdModule.promotePlayer, { npcHandler = npcHandler, cost = 20000, level = 20, text = 'Congratulations! You are now promoted.' }) -node1:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'Alright then, come back when you are ready.', reset = true }) +local node1 = keywordHandler:addKeyword({ "promot" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "I can promote you for 20000 gold coins. Do you want me to promote you?" }) +node1:addChildKeyword({ "yes" }, StdModule.promotePlayer, { npcHandler = npcHandler, cost = 20000, level = 20, text = "Congratulations! You are now promoted." }) +node1:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Alright then, come back when you are ready.", reset = true }) -- Greeting message keywordHandler:addGreetKeyword({ "hail emperor" }, { npcHandler = npcHandler, text = "Hiho, may fire and earth bless you, my child. Are you looking for a promotion?" }) keywordHandler:addGreetKeyword({ "salutations emperor" }, { npcHandler = npcHandler, text = "Hiho, may fire and earth bless you, my child. Are you looking for a promotion?" }) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Farewell, |PLAYERNAME|, my child!') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Farewell, |PLAYERNAME|, my child!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/emperor_rehal.lua b/data-otservbr-global/npc/emperor_rehal.lua index abbabd5cb28..2f5411e7b84 100644 --- a/data-otservbr-global/npc/emperor_rehal.lua +++ b/data-otservbr-global/npc/emperor_rehal.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,14 +50,14 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'hi' }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true }) -keywordHandler:addKeyword({ 'hello' }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true }) +keywordHandler:addKeyword({ "hi" }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true }) +keywordHandler:addKeyword({ "hello" }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (MsgContains(message, "nokmir")) then + if MsgContains(message, "nokmir") then if player:getStorageValue(Storage.HiddenCityOfBeregar.JusticeForAll) == 1 then npcHandler:say("I always liked him and I still can't believe that he really stole that ring.", npc, creature) npcHandler:setTopic(playerId, 1) @@ -66,21 +66,21 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Let there be justice for all. Nokmir is innocent and acquitted from all charges! And Rerun... I want him in prison for this malicious act!", npc, creature) player:setStorageValue(Storage.HiddenCityOfBeregar.JusticeForAll, 5) end - elseif (MsgContains(message, "grombur")) then + elseif MsgContains(message, "grombur") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say("He's very ambitious and always volunteers for the long shifts.", npc, creature) player:setStorageValue(Storage.HiddenCityOfBeregar.JusticeForAll, 2) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "mission")) then + elseif MsgContains(message, "mission") then if player:getStorageValue(Storage.HiddenCityOfBeregar.RoyalRescue) < 1 and player:getStorageValue(Storage.HiddenCityOfBeregar.JusticeForAll) > 4 then - npcHandler:say("As you have proven yourself trustworthy I\'m going to assign you a special mission. Are you interested?", npc, creature) + npcHandler:say("As you have proven yourself trustworthy I'm going to assign you a special mission. Are you interested?", npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.HiddenCityOfBeregar.RoyalRescue) == 7 then - npcHandler:say("My son was captured by trolls? Doesn\'t sound like him, but if you say so. Now you want a reward, huh? ...", npc, creature) + npcHandler:say("My son was captured by trolls? Doesn't sound like him, but if you say so. Now you want a reward, huh? ...", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif (MsgContains(message, "yes")) then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 2 then npcHandler:say("Splendid! My son Rehon set off on an expedition to the deeper mines. He and a group of dwarfs were to search for new veins of crystal. Unfortunately they have been missing for 2 weeks now. ...", npc, creature) npcHandler:say("Find my son and if he's alive bring him back. You will find a reactivated ore wagon tunnel at the entrance of the great citadel which leades to the deeper mines. If you encounter problems within the tunnel go ask Xorlosh, he can help you.", npc, creature) @@ -92,7 +92,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.HiddenCityOfBeregar.RoyalRescue, 8) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "no")) then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 1 or npcHandler:getTopic(playerId) == 2 then npcHandler:say("Alright then, come back when you are ready.", npc, creature) npcHandler:setTopic(playerId, 0) @@ -101,9 +101,9 @@ local function creatureSayCallback(npc, creature, type, message) return true end -local node1 = keywordHandler:addKeyword({ 'promot' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'I can promote you for 20000 gold coins. Do you want me to promote you?' }) -node1:addChildKeyword({ 'yes' }, StdModule.promotePlayer, { npcHandler = npcHandler, cost = 20000, level = 20, promotion = 1, text = 'Congratulations! You are now promoted.' }) -node1:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'Alright then, come back when you are ready.', reset = true }) +local node1 = keywordHandler:addKeyword({ "promot" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "I can promote you for 20000 gold coins. Do you want me to promote you?" }) +node1:addChildKeyword({ "yes" }, StdModule.promotePlayer, { npcHandler = npcHandler, cost = 20000, level = 20, promotion = 1, text = "Congratulations! You are now promoted." }) +node1:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Alright then, come back when you are ready.", reset = true }) -- Greeting message keywordHandler:addGreetKeyword({ "hail emperor" }, { npcHandler = npcHandler, text = "May fire and earth bless you, stranger. What leads you to Beregar, the dwarven city?" }) diff --git a/data-otservbr-global/npc/eranth.lua b/data-otservbr-global/npc/eranth.lua index 3ccaa5611f4..e0a7a6a3fee 100644 --- a/data-otservbr-global/npc/eranth.lua +++ b/data-otservbr-global/npc/eranth.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 98, lookLegs = 97, lookFeet = 75, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/erayo.lua b/data-otservbr-global/npc/erayo.lua index 81cb9bf8ea6..96bb87cb5d3 100644 --- a/data-otservbr-global/npc/erayo.lua +++ b/data-otservbr-global/npc/erayo.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 125, lookLegs = 86, lookFeet = 87, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,14 +53,14 @@ end local topic = {} local config = { - ['blue cloth'] = { storageValue = 1, text = { 'Brought the 50 pieces of blue cloth?', 'Good. Get me 50 pieces of green cloth now.' }, itemId = 5912, count = 50 }, - ['green cloth'] = { storageValue = 2, text = { 'Brought the 50 pieces of green cloth?', 'Good. Get me 50 pieces of red cloth now.' }, itemId = 5910, count = 50 }, - ['red cloth'] = { storageValue = 3, text = { 'Brought the 50 pieces of red cloth?', 'Good. Get me 50 pieces of brown cloth now.' }, itemId = 5911, count = 50 }, - ['brown cloth'] = { storageValue = 4, text = { 'Brought the 50 pieces of brown cloth?', 'Good. Get me 50 pieces of yellow cloth now.' }, itemId = 5913, count = 50 }, - ['yellow cloth'] = { storageValue = 5, text = { 'Brought the 50 pieces of yellow cloth?', 'Good. Get me 50 pieces of white cloth now.' }, itemId = 5914, count = 50 }, - ['white cloth'] = { storageValue = 6, text = { 'Brought the 50 pieces of white cloth?', 'Good. Get me 10 spools of yarn now.' }, itemId = 5909, count = 50 }, - ['spools of yarn'] = { storageValue = 7, text = { 'Brought the 10 spools of yarn?', 'Thanks. That\'s it, you\'re done. Good job, |PLAYERNAME|. I keep my promise. Here\'s my old assassin head piece.' }, itemId = 5886, count = 10 }, - ['yarn'] = { storageValue = 7, text = { 'Brought the 10 spools of yarn?', 'Thanks. That\'s it, you\'re done. Good job, |PLAYERNAME|. I keep my promise. Here\'s my old assassin head piece.' }, itemId = 5886, count = 10 } + ["blue cloth"] = { storageValue = 1, text = { "Brought the 50 pieces of blue cloth?", "Good. Get me 50 pieces of green cloth now." }, itemId = 5912, count = 50 }, + ["green cloth"] = { storageValue = 2, text = { "Brought the 50 pieces of green cloth?", "Good. Get me 50 pieces of red cloth now." }, itemId = 5910, count = 50 }, + ["red cloth"] = { storageValue = 3, text = { "Brought the 50 pieces of red cloth?", "Good. Get me 50 pieces of brown cloth now." }, itemId = 5911, count = 50 }, + ["brown cloth"] = { storageValue = 4, text = { "Brought the 50 pieces of brown cloth?", "Good. Get me 50 pieces of yellow cloth now." }, itemId = 5913, count = 50 }, + ["yellow cloth"] = { storageValue = 5, text = { "Brought the 50 pieces of yellow cloth?", "Good. Get me 50 pieces of white cloth now." }, itemId = 5914, count = 50 }, + ["white cloth"] = { storageValue = 6, text = { "Brought the 50 pieces of white cloth?", "Good. Get me 10 spools of yarn now." }, itemId = 5909, count = 50 }, + ["spools of yarn"] = { storageValue = 7, text = { "Brought the 10 spools of yarn?", "Thanks. That's it, you're done. Good job, |PLAYERNAME|. I keep my promise. Here's my old assassin head piece." }, itemId = 5886, count = 10 }, + ["yarn"] = { storageValue = 7, text = { "Brought the 10 spools of yarn?", "Thanks. That's it, you're done. Good job, |PLAYERNAME|. I keep my promise. Here's my old assassin head piece." }, itemId = 5886, count = 10 }, } local function creatureSayCallback(npc, creature, type, message) @@ -71,10 +71,9 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'addon') then + if MsgContains(message, "addon") then if player:hasOutfit(player:getSex() == PLAYERSEX_FEMALE and 156 or 152) and player:getStorageValue(Storage.OutfitQuest.AssassinFirstAddon) < 1 then - npcHandler:say('Vescu gave you an assassin outfit? Haha. Noticed it lacks the head piece? You look a bit silly. Want my old head piece?', npc, creature) + npcHandler:say("Vescu gave you an assassin outfit? Haha. Noticed it lacks the head piece? You look a bit silly. Want my old head piece?", npc, creature) npcHandler:setTopic(playerId, 1) end elseif config[message] and npcHandler:getTopic(playerId) == 0 then @@ -83,13 +82,13 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 3) topic[playerId] = message end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - 'Thought so. Could use some help anyway. Listen, I need stuff. Someone gave me a strange assignment - sneak into Thais castle at night and shroud it with cloth without anyone noticing it. ...', - 'I wonder why anyone would want to shroud a castle, but as long as long as the guy pays, no problem, I\'ll do the sneaking part. Need a lot of cloth though. ...', - 'Gonna make it colourful. Bring me 50 pieces of {blue cloth}, 50 pieces of {green cloth}, 50 pieces of {red cloth}, 50 pieces of {brown cloth}, 50 pieces of {yellow cloth} and 50 pieces of {white cloth}. ...', - 'Besides, gonna need 10 {spools of yarn}. Understood?' + "Thought so. Could use some help anyway. Listen, I need stuff. Someone gave me a strange assignment - sneak into Thais castle at night and shroud it with cloth without anyone noticing it. ...", + "I wonder why anyone would want to shroud a castle, but as long as long as the guy pays, no problem, I'll do the sneaking part. Need a lot of cloth though. ...", + "Gonna make it colourful. Bring me 50 pieces of {blue cloth}, 50 pieces of {green cloth}, 50 pieces of {red cloth}, 50 pieces of {brown cloth}, 50 pieces of {yellow cloth} and 50 pieces of {white cloth}. ...", + "Besides, gonna need 10 {spools of yarn}. Understood?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then @@ -97,12 +96,12 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.DefaultStart, 1) end player:setStorageValue(Storage.OutfitQuest.AssassinFirstAddon, 1) - npcHandler:say('Good. Start with the blue cloth. I\'ll wait.', npc, creature) + npcHandler:say("Good. Start with the blue cloth. I'll wait.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then local targetMessage = config[topic[playerId]] if not player:removeItem(targetMessage.itemId, targetMessage.count) then - npcHandler:say('You don\'t have the required items.', npc, creature) + npcHandler:say("You don't have the required items.", npc, creature) npcHandler:setTopic(playerId, 0) return true end @@ -116,8 +115,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say(targetMessage.text[2], npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) > 0 then - npcHandler:say('Maybe another time.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) > 0 then + npcHandler:say("Maybe another time.", npc, creature) npcHandler:setTopic(playerId, 0) end return true @@ -128,7 +127,7 @@ local function onReleaseFocus(npc, creature) topic[playerId] = nil end -npcHandler:setMessage(MESSAGE_GREET, 'What the... I mean, of course I sensed you.') +npcHandler:setMessage(MESSAGE_GREET, "What the... I mean, of course I sensed you.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/eremo.lua b/data-otservbr-global/npc/eremo.lua index d658361867f..dfa4f1f28f2 100644 --- a/data-otservbr-global/npc/eremo.lua +++ b/data-otservbr-global/npc/eremo.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 109, lookLegs = 128, lookFeet = 128, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,14 +58,16 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'letter') then + if MsgContains(message, "letter") then if player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 4 then if player:getItemCount(3506) > 0 then if player:removeItem(3506, 1) then npcHandler:say( - 'A letter from that youngster Morgan? I believed him dead since years. \z - These news are good news indeed. Thank you very much, my friend.', - npc, creature) + "A letter from that youngster Morgan? I believed him dead since years. \z + These news are good news indeed. Thank you very much, my friend.", + npc, + creature + ) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 5) end end @@ -75,203 +77,152 @@ local function creatureSayCallback(npc, creature, type, message) end -- Wisdom of Solitude -local blessKeyword = keywordHandler:addKeyword({ 'solitude' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'Would you like to receive that protection for a sacrifice of |BLESSCOST| gold, child?' - } -) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, - { - npcHandler = npcHandler, - text = 'So receive the wisdom of solitude, pilgrim.', - cost = '|BLESSCOST|', - bless = 2 - } -) -blessKeyword:addChildKeyword({ '' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'Fine. You are free to decline my offer.', - reset = true - } -) -keywordHandler:addAliasKeyword({ 'wisdom' }) +local blessKeyword = keywordHandler:addKeyword({ "solitude" }, StdModule.say, { + npcHandler = npcHandler, + text = "Would you like to receive that protection for a sacrifice of |BLESSCOST| gold, child?", +}) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { + npcHandler = npcHandler, + text = "So receive the wisdom of solitude, pilgrim.", + cost = "|BLESSCOST|", + bless = 2, +}) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { + npcHandler = npcHandler, + text = "Fine. You are free to decline my offer.", + reset = true, +}) +keywordHandler:addAliasKeyword({ "wisdom" }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, - { - npcHandler = npcHandler, - text = text - }, - function(player) - return player:getCondition(condition) ~= nil - end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { + npcHandler = npcHandler, + text = text, + }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', - CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) - -keywordHandler:addKeyword({ 'heal' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'You are hurt, my child. I will heal your wounds.' - }, - function(player) - return player:getHealth() < 40 - end, - function(player) - local health = player:getHealth() - if health < 40 then - player:addHealth(40 - health) - end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) + +keywordHandler:addKeyword({ "heal" }, StdModule.say, { + npcHandler = npcHandler, + text = "You are hurt, my child. I will heal your wounds.", +}, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional \ - protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' - } -) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { + npcHandler = npcHandler, + text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional \ + protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.", +}) -- Teleport back -local teleportKeyword = keywordHandler:addKeyword({ 'cormaya' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'Should I teleport you back to Pemaret?' - } -) -teleportKeyword:addChildKeyword({ 'yes' }, StdModule.travel, - { - npcHandler = npcHandler, - text = 'Here you go!', - premium = false, - destination = Position(33288, 31956, 6) - } -) -teleportKeyword:addChildKeyword({ '' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'Maybe later.', - ungreet = true - } -) - -keywordHandler:addAliasKeyword({ 'back' }) -keywordHandler:addAliasKeyword({ 'passage' }) -keywordHandler:addAliasKeyword({ 'pemaret' }) +local teleportKeyword = keywordHandler:addKeyword({ "cormaya" }, StdModule.say, { + npcHandler = npcHandler, + text = "Should I teleport you back to Pemaret?", +}) +teleportKeyword:addChildKeyword({ "yes" }, StdModule.travel, { + npcHandler = npcHandler, + text = "Here you go!", + premium = false, + destination = Position(33288, 31956, 6), +}) +teleportKeyword:addChildKeyword({ "" }, StdModule.say, { + npcHandler = npcHandler, + text = "Maybe later.", + ungreet = true, +}) + +keywordHandler:addAliasKeyword({ "back" }) +keywordHandler:addAliasKeyword({ "passage" }) +keywordHandler:addAliasKeyword({ "pemaret" }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a \ +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { + npcHandler = npcHandler, + text = "Whenever you receive a lethal wound, your vital force is damaged and there is a \ chance that you lose some of your equipment. With every single of the five {blessings} you have, \ - this damage and chance of loss will be reduced.' - } -) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'There are five blessings available in five sacred places: the {spiritual} shielding, \ + this damage and chance of loss will be reduced.", +}) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { + npcHandler = npcHandler, + text = "There are five blessings available in five sacred places: the {spiritual} shielding, \ the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. \ - Additionally, you can receive the {twist of fate} here.' - } -) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' - }, - function(player) - return player:hasBlessing(1) - end -) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' - }, - function(player) - return player:hasBlessing(2) - end -) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' - }, - function(player) - return player:hasBlessing(3) - end -) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'I can sense that the spark of the phoenix already was given to you by \ - the dwarven priests of earth and fire in Kazordoon.' - }, - function(player) - return player:hasBlessing(4) - end -) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' - } -) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'The druids north of Carlin will provide you with the embrace of Tibia.' - } -) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' - } -) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' - } -) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'I teach some spells, provide one of the five blessings, and sell some amulets. \ - Ask me for a trade if you like.' - } -) -keywordHandler:addKeyword({ 'name' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'I am Eremo, an old man who has seen many things.' - } -) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome to my little garden, adventurer |PLAYERNAME|!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'It was a pleasure to help you, |PLAYERNAME|.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'It was a pleasure to help you, |PLAYERNAME|.') + Additionally, you can receive the {twist of fate} here.", +}) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { + npcHandler = npcHandler, + text = "I see you received the spiritual shielding in the whiteflower temple south of Thais.", +}, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.", +}, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel.", +}, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can sense that the spark of the phoenix already was given to you by \ + the dwarven priests of earth and fire in Kazordoon.", +}, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { + npcHandler = npcHandler, + text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.", +}) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { + npcHandler = npcHandler, + text = "The druids north of Carlin will provide you with the embrace of Tibia.", +}) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { + npcHandler = npcHandler, + text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel.", +}) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { + npcHandler = npcHandler, + text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.", +}) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "I teach some spells, provide one of the five blessings, and sell some amulets. \ + Ask me for a trade if you like.", +}) +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "I am Eremo, an old man who has seen many things.", +}) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome to my little garden, adventurer |PLAYERNAME|!") +npcHandler:setMessage(MESSAGE_FAREWELL, "It was a pleasure to help you, |PLAYERNAME|.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "It was a pleasure to help you, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) @@ -280,7 +231,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "amulet of loss", clientId = 3057, buy = 50000, sell = 45000 }, { itemName = "broken amulet", clientId = 3080, sell = 50000 }, - { itemName = "protection amulet", clientId = 3084, buy = 700, count = 250 } + { itemName = "protection amulet", clientId = 3084, buy = 700, count = 250 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -291,7 +242,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/eroth.lua b/data-otservbr-global/npc/eroth.lua index db5d1a34ee1..6e54910817a 100644 --- a/data-otservbr-global/npc/eroth.lua +++ b/data-otservbr-global/npc/eroth.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 63 + lookType = 63, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,13 +45,13 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the leader of the Cenath caste." }) -keywordHandler:addKeyword({ 'kuridai' }, StdModule.say, { npcHandler = npcHandler, text = "The Kuridai are aggressive and victims of their instincts. Without our help they would surely die in a foolish war." }) -keywordHandler:addKeyword({ 'crunor' }, StdModule.say, { npcHandler = npcHandler, text = "Gods are for the weak. We will master the world on our own. We need no gods." }) -keywordHandler:addKeyword({ 'deraisim' }, StdModule.say, { npcHandler = npcHandler, text = "They lack the understanding of unity. We are keeping them together and prevent them from being slaughtered one by one." }) -keywordHandler:addKeyword({ 'cenath' }, StdModule.say, { npcHandler = npcHandler, text = "We are the shepherds of our people. The other castes need our guidance." }) -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = "Magic comes almost naturally to the Cenath. We keep the secrets of ages." }) -keywordHandler:addKeyword({ 'spell' }, StdModule.say, { npcHandler = npcHandler, text = "I can teach the spells 'magic shield', 'destroy field', 'creature illusion', 'chameleon', 'convince creature', and 'summon creature'." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the leader of the Cenath caste." }) +keywordHandler:addKeyword({ "kuridai" }, StdModule.say, { npcHandler = npcHandler, text = "The Kuridai are aggressive and victims of their instincts. Without our help they would surely die in a foolish war." }) +keywordHandler:addKeyword({ "crunor" }, StdModule.say, { npcHandler = npcHandler, text = "Gods are for the weak. We will master the world on our own. We need no gods." }) +keywordHandler:addKeyword({ "deraisim" }, StdModule.say, { npcHandler = npcHandler, text = "They lack the understanding of unity. We are keeping them together and prevent them from being slaughtered one by one." }) +keywordHandler:addKeyword({ "cenath" }, StdModule.say, { npcHandler = npcHandler, text = "We are the shepherds of our people. The other castes need our guidance." }) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "Magic comes almost naturally to the Cenath. We keep the secrets of ages." }) +keywordHandler:addKeyword({ "spell" }, StdModule.say, { npcHandler = npcHandler, text = "I can teach the spells 'magic shield', 'destroy field', 'creature illusion', 'chameleon', 'convince creature', and 'summon creature'." }) -- Greeting message keywordHandler:addGreetKeyword({ "ashari" }, { npcHandler = npcHandler, text = "I greet thee, outsider." }) diff --git a/data-otservbr-global/npc/eruaran.lua b/data-otservbr-global/npc/eruaran.lua index 109ac3d69fa..51c5f17d4e0 100644 --- a/data-otservbr-global/npc/eruaran.lua +++ b/data-otservbr-global/npc/eruaran.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,26 +57,26 @@ local weapon = {} local weapon_sub = {} -- Messages -local newAddon = 'Here you are, enjoy your brand new addon!' -local noItems = 'You do not have all the required items.' -local alreadyHaveAddon = 'It seems you already have this addon, don\'t you try to mock me son!' +local newAddon = "Here you are, enjoy your brand new addon!" +local noItems = "You do not have all the required items." +local alreadyHaveAddon = "It seems you already have this addon, don't you try to mock me son!" local Config = { Create = { Clusters = 20, DreamMatter = 1, - Chance = 70 --70% + Chance = 70, --70% }, Improve = { Clusters = 75, Chance = 55, --55% - BreakChance = 50 --50% of chance that when failing the improvement, the weapons is destroyed but you keep the clusters. Else, you keep the weapon and lose the clusters + BreakChance = 50, --50% of chance that when failing the improvement, the weapons is destroyed but you keep the clusters. Else, you keep the weapon and lose the clusters }, Transform = { Clusters = 150, Chance = 45, --45% - BreakChance = 50 --50% of chance that when failing the transforming, the weapon is destroyed but you keep all the clusters. Else, the weapon is downgraded to crude piece and you lose half of clusters. - } + BreakChance = 50, --50% of chance that when failing the transforming, the weapon is destroyed but you keep all the clusters. Else, the weapon is downgraded to crude piece and you lose half of clusters. + }, } local IDS = { @@ -118,7 +118,7 @@ local IDS = { CRUDE_UMBRAL_SPELLBOOK = 20088, UMBRAL_SPELLBOOK = 20089, - UMBRAL_MASTER_SPELLBOOK = 20090 + UMBRAL_MASTER_SPELLBOOK = 20090, } local TYPES = { @@ -127,7 +127,7 @@ local TYPES = { CLUB = 3, BOW = 4, CROSSBOW = 5, - SPELLBOOK = 6 + SPELLBOOK = 6, } local SUB_TYPES = { @@ -139,13 +139,13 @@ local SUB_TYPES = { HAMMER = 6, BOW = 7, CROSSBOW = 8, - SPELLBOOK = 9 + SPELLBOOK = 9, } local ACTION = { CREATE = 1, IMPROVE = 2, - TRANSFORM = 3 + TRANSFORM = 3, } -- dream START -- @@ -197,7 +197,7 @@ local function greetCallback(npc, creature) if player:getStorageValue(Storage.EruaranGreeting) > 0 then npcHandler:setMessage(MESSAGE_GREET, "Ashari Lillithy, so we meet {again}! What brings you here this time, general {information}, {transform}, {improve}, {create}, {outfit}, or {talk}?") else - npcHandler:setMessage(MESSAGE_GREET, 'Welcome |PLAYERNAME|.') + npcHandler:setMessage(MESSAGE_GREET, "Welcome |PLAYERNAME|.") player:setStorageValue(Storage.EruaranGreeting, 1) end return true @@ -335,7 +335,15 @@ local function creatureSayCallback(npc, creature, type, message) if action[playerId] == ACTION.CREATE then --create if player:getItemCount(IDS.DREAM_MATTER) >= 1 and player:getItemCount(IDS.CLUSTER_OF_SOLACE) >= Config.Create.Clusters then if math.random(100) <= Config.Create.Chance then - local newItemId = (weapon[playerId] == TYPES.SWORD and (weapon_sub[playerId] == SUB_TYPES.BLADE and IDS.CRUDE_UMBRAL_BLADE or IDS.CRUDE_UMBRAL_SLAYER) or weapon[playerId] == TYPES.AXE and (weapon_sub[playerId] == SUB_TYPES.AXE and IDS.CRUDE_UMBRAL_AXE or IDS.CRUDE_UMBRAL_CHOPPER) or weapon[playerId] == TYPES.CLUB and (weapon_sub[playerId] == SUB_TYPES.MACE and IDS.CRUDE_UMBRAL_MACE or IDS.CRUDE_UMBRAL_HAMMER) or weapon[playerId] == TYPES.BOW and IDS.CRUDE_UMBRAL_BOW or weapon[playerId] == TYPES.CROSSBOW and IDS.CRUDE_UMBRAL_CROSSBOW or weapon[playerId] == TYPES.SPELLBOOK and IDS.CRUDE_UMBRAL_SPELLBOOK or false) + local newItemId = ( + weapon[playerId] == TYPES.SWORD and (weapon_sub[playerId] == SUB_TYPES.BLADE and IDS.CRUDE_UMBRAL_BLADE or IDS.CRUDE_UMBRAL_SLAYER) + or weapon[playerId] == TYPES.AXE and (weapon_sub[playerId] == SUB_TYPES.AXE and IDS.CRUDE_UMBRAL_AXE or IDS.CRUDE_UMBRAL_CHOPPER) + or weapon[playerId] == TYPES.CLUB and (weapon_sub[playerId] == SUB_TYPES.MACE and IDS.CRUDE_UMBRAL_MACE or IDS.CRUDE_UMBRAL_HAMMER) + or weapon[playerId] == TYPES.BOW and IDS.CRUDE_UMBRAL_BOW + or weapon[playerId] == TYPES.CROSSBOW and IDS.CRUDE_UMBRAL_CROSSBOW + or weapon[playerId] == TYPES.SPELLBOOK and IDS.CRUDE_UMBRAL_SPELLBOOK + or false + ) if newItemId then player:addItem(newItemId) player:removeItem(IDS.DREAM_MATTER, Config.Create.DreamMatter) @@ -352,7 +360,15 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Sorry, you don't have the required ingredients.", npc, creature) end elseif action[playerId] == ACTION.IMPROVE then --improve - local oldItemId = (weapon[playerId] == TYPES.SWORD and (weapon_sub[playerId] == SUB_TYPES.BLADE and IDS.CRUDE_UMBRAL_BLADE or IDS.CRUDE_UMBRAL_SLAYER) or weapon[playerId] == TYPES.AXE and (weapon_sub[playerId] == SUB_TYPES.AXE and IDS.CRUDE_UMBRAL_AXE or IDS.CRUDE_UMBRAL_CHOPPER) or weapon[playerId] == TYPES.CLUB and (weapon_sub[playerId] == SUB_TYPES.MACE and IDS.CRUDE_UMBRAL_MACE or IDS.CRUDE_UMBRAL_HAMMER) or weapon[playerId] == TYPES.BOW and IDS.CRUDE_UMBRAL_BOW or weapon[playerId] == TYPES.CROSSBOW and IDS.CRUDE_UMBRAL_CROSSBOW or weapon[playerId] == TYPES.SPELLBOOK and IDS.CRUDE_UMBRAL_SPELLBOOK or false) + local oldItemId = ( + weapon[playerId] == TYPES.SWORD and (weapon_sub[playerId] == SUB_TYPES.BLADE and IDS.CRUDE_UMBRAL_BLADE or IDS.CRUDE_UMBRAL_SLAYER) + or weapon[playerId] == TYPES.AXE and (weapon_sub[playerId] == SUB_TYPES.AXE and IDS.CRUDE_UMBRAL_AXE or IDS.CRUDE_UMBRAL_CHOPPER) + or weapon[playerId] == TYPES.CLUB and (weapon_sub[playerId] == SUB_TYPES.MACE and IDS.CRUDE_UMBRAL_MACE or IDS.CRUDE_UMBRAL_HAMMER) + or weapon[playerId] == TYPES.BOW and IDS.CRUDE_UMBRAL_BOW + or weapon[playerId] == TYPES.CROSSBOW and IDS.CRUDE_UMBRAL_CROSSBOW + or weapon[playerId] == TYPES.SPELLBOOK and IDS.CRUDE_UMBRAL_SPELLBOOK + or false + ) local newItemId = (oldItemId and oldItemId + 1 or false) if player:getItemCount(IDS.CLUSTER_OF_SOLACE) >= Config.Improve.Clusters then if newItemId and oldItemId then @@ -375,7 +391,15 @@ local function creatureSayCallback(npc, creature, type, message) end end elseif action[playerId] == ACTION.TRANSFORM then --transform - local oldItemId = (weapon[playerId] == TYPES.SWORD and (weapon_sub[playerId] == SUB_TYPES.BLADE and IDS.UMBRAL_BLADE or IDS.UMBRAL_SLAYER) or weapon[playerId] == TYPES.AXE and (weapon_sub[playerId] == SUB_TYPES.AXE and IDS.UMBRAL_AXE or IDS.UMBRAL_CHOPPER) or weapon[playerId] == TYPES.CLUB and (weapon_sub[playerId] == SUB_TYPES.MACE and IDS.UMBRAL_MACE or IDS.UMBRAL_HAMMER) or weapon[playerId] == TYPES.BOW and IDS.UMBRAL_BOW or weapon[playerId] == TYPES.CROSSBOW and IDS.UMBRAL_CROSSBOW or weapon[playerId] == TYPES.SPELLBOOK and IDS.UMBRAL_SPELLBOOK or false) + local oldItemId = ( + weapon[playerId] == TYPES.SWORD and (weapon_sub[playerId] == SUB_TYPES.BLADE and IDS.UMBRAL_BLADE or IDS.UMBRAL_SLAYER) + or weapon[playerId] == TYPES.AXE and (weapon_sub[playerId] == SUB_TYPES.AXE and IDS.UMBRAL_AXE or IDS.UMBRAL_CHOPPER) + or weapon[playerId] == TYPES.CLUB and (weapon_sub[playerId] == SUB_TYPES.MACE and IDS.UMBRAL_MACE or IDS.UMBRAL_HAMMER) + or weapon[playerId] == TYPES.BOW and IDS.UMBRAL_BOW + or weapon[playerId] == TYPES.CROSSBOW and IDS.UMBRAL_CROSSBOW + or weapon[playerId] == TYPES.SPELLBOOK and IDS.UMBRAL_SPELLBOOK + or false + ) local newItemId = (oldItemId and oldItemId + 1 or false) if player:getItemCount(IDS.CLUSTER_OF_SOLACE) >= Config.Transform.Clusters then if newItemId and oldItemId then @@ -409,14 +433,14 @@ local function creatureSayCallback(npc, creature, type, message) end end -keywordHandler:addKeyword({ 'outfit' }, StdModule.say, { npcHandler = npcHandler, text = 'What addon you are looking? I need for first addon: {dream warden mask} and for second {dream warden claw}.' }) -local node1 = keywordHandler:addKeyword({ 'dream warden mask' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'To achieve the first dream addon you need to give me 1 dream warden mask. Do you have them with you?' }) -node1:addChildKeyword({ 'yes' }, dreamFirst, {}) -node1:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'Alright then. Come back when you got all neccessary items.', reset = true }) +keywordHandler:addKeyword({ "outfit" }, StdModule.say, { npcHandler = npcHandler, text = "What addon you are looking? I need for first addon: {dream warden mask} and for second {dream warden claw}." }) +local node1 = keywordHandler:addKeyword({ "dream warden mask" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "To achieve the first dream addon you need to give me 1 dream warden mask. Do you have them with you?" }) +node1:addChildKeyword({ "yes" }, dreamFirst, {}) +node1:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Alright then. Come back when you got all neccessary items.", reset = true }) -local node2 = keywordHandler:addKeyword({ 'dream warden claw' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'To achieve the second dream addon you need to give me 1 dream warden claw. Do you have them with you?' }) -node2:addChildKeyword({ 'yes' }, dreamSecond, {}) -node2:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'Alright then. Come back when you got all neccessary items.', reset = true }) +local node2 = keywordHandler:addKeyword({ "dream warden claw" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "To achieve the second dream addon you need to give me 1 dream warden claw. Do you have them with you?" }) +node2:addChildKeyword({ "yes" }, dreamSecond, {}) +node2:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Alright then. Come back when you got all neccessary items.", reset = true }) -- Greeting message keywordHandler:addGreetKeyword({ "ashari" }, { npcHandler = npcHandler, text = "Greetings, |PLAYERNAME|." }) diff --git a/data-otservbr-global/npc/eshaya.lua b/data-otservbr-global/npc/eshaya.lua index 5ca99eb1551..20f39c50dd8 100644 --- a/data-otservbr-global/npc/eshaya.lua +++ b/data-otservbr-global/npc/eshaya.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 79, lookFeet = 0, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -28,7 +28,7 @@ npcConfig.voices = { chance = 50, { text = "Praised be Suon and Bastesh." }, { text = "I should talk to Kallimae soon." }, - { text = "Issavi\'s safety is my first concern." } + { text = "Issavi's safety is my first concern." }, } local keywordHandler = KeywordHandler:new() @@ -60,90 +60,87 @@ end -- First -local firstMission = keywordHandler:addKeyword( - { "mission" }, StdModule.say, { - npcHandler = npcHandler, - text = "I\'m willing to admit that I need help. And the help of someone who is not from {Issavi} at that. But the task could be dangerous and you would become embroiled in the politics and court intrigues of {Kilmaresh}. Will you help me anyhow?" - }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Second.Investigating) == -1 end, - function(player) player:setStorageValue(Storage.Kilmaresh.First.Title, 1) end -) +local firstMission = keywordHandler:addKeyword({ "mission" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm willing to admit that I need help. And the help of someone who is not from {Issavi} at that. But the task could be dangerous and you would become embroiled in the politics and court intrigues of {Kilmaresh}. Will you help me anyhow?", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Second.Investigating) == -1 +end, function(player) + player:setStorageValue(Storage.Kilmaresh.First.Title, 1) +end) firstMission:addChildKeyword( - { "yes" }, StdModule.say, { + { "yes" }, + StdModule.say, + { npcHandler = npcHandler, text = { "You are a noble soul! So listen: for many decades, over a century actually, the city of {Rathleton} had an Ambassador here in {Issavi}. ...", "Kilmaresh and Oramond maintain important commercial relations, and for this reason Rathleton has an envoy here. In the past, the relations were good but now ...", "I hate to admit it but I heavily suspect that the current Ambassador is a traitor and consorts with the forbidden cult of Fafnar. I have several hints and Kallimae saw it in one of her visions ...", - "But the vision of a Kilmareshian seer is no proof they will ever accept in Rathleton. And without proof we can\'t banish the Ambassador, this would cause major diplomatic fallout or even a war. I can\'t risk that. ...", - "I need unequivocal evidence that the Ambassador conspires with the Fafnar cultists. Please go to his residence in the eastern part of the city and search for letters, journals ... anything that could prove him guilty." - } + "But the vision of a Kilmareshian seer is no proof they will ever accept in Rathleton. And without proof we can't banish the Ambassador, this would cause major diplomatic fallout or even a war. I can't risk that. ...", + "I need unequivocal evidence that the Ambassador conspires with the Fafnar cultists. Please go to his residence in the eastern part of the city and search for letters, journals ... anything that could prove him guilty.", + }, }, nil, - function(player) player:setStorageValue(Storage.Kilmaresh.Second.Investigating, 1) end + function(player) + player:setStorageValue(Storage.Kilmaresh.Second.Investigating, 1) + end ) -- Second -keywordHandler:addKeyword( - { "mission" }, StdModule.say, { - npcHandler = npcHandler, - text = { - "It seems that he destroyed every visible evidence of his treason. That\'s very unfortunate and I see only one remaining possibility: You need to see the {Ambassador}\'s memories. ...", - "But there is only one way to achieve this: You have to find a Ring of {Secret Thoughts}. Legend has it that a monstrous being called {Urmahlullu} has such a ring. If the myths are true you can find this creature in a subterranean tomb south of Issavi." - } +keywordHandler:addKeyword({ "mission" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "It seems that he destroyed every visible evidence of his treason. That's very unfortunate and I see only one remaining possibility: You need to see the {Ambassador}'s memories. ...", + "But there is only one way to achieve this: You have to find a Ring of {Secret Thoughts}. Legend has it that a monstrous being called {Urmahlullu} has such a ring. If the myths are true you can find this creature in a subterranean tomb south of Issavi.", }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Second.Investigating) == 5 end, - function(player) - player:setStorageValue(Storage.Kilmaresh.Second.Investigating, 6) - player:setStorageValue(Storage.Kilmaresh.Third.Recovering, 1) - end -) - -keywordHandler:addKeyword( - { "mission" }, StdModule.say, { - npcHandler = npcHandler, - text = "You haven\'t investigated all the evidence." - }, - function(player) - return player:getStorageValue(Storage.Kilmaresh.Second.Investigating) >= 0 and - player:getStorageValue(Storage.Kilmaresh.Second.Investigating) < 5 - end -) +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Second.Investigating) == 5 +end, function(player) + player:setStorageValue(Storage.Kilmaresh.Second.Investigating, 6) + player:setStorageValue(Storage.Kilmaresh.Third.Recovering, 1) +end) + +keywordHandler:addKeyword({ "mission" }, StdModule.say, { + npcHandler = npcHandler, + text = "You haven't investigated all the evidence.", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Second.Investigating) >= 0 and player:getStorageValue(Storage.Kilmaresh.Second.Investigating) < 5 +end) -- Third -keywordHandler:addKeyword( - { "ring" }, StdModule.say, { - npcHandler = npcHandler, - text = "You found the Ring of {Secret Thoughts}! Well done! Now give it to the {Ambassador} as a present. He\'s a peacock and will accept such a precious gift for sure. As soon as he wears it, his memories will be stored in the ring." - }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Third.Recovering) == 1 and player:getItemById(31263, true) end, - function(player) player:setStorageValue(Storage.Kilmaresh.Third.Recovering, 2) end -) - -keywordHandler:addKeyword( - { "ring" }, StdModule.say, { - npcHandler = npcHandler, - text = "You don't have the ring I need." - }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Third.Recovering) == 1 end -) +keywordHandler:addKeyword({ "ring" }, StdModule.say, { + npcHandler = npcHandler, + text = "You found the Ring of {Secret Thoughts}! Well done! Now give it to the {Ambassador} as a present. He's a peacock and will accept such a precious gift for sure. As soon as he wears it, his memories will be stored in the ring.", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Third.Recovering) == 1 and player:getItemById(31263, true) +end, function(player) + player:setStorageValue(Storage.Kilmaresh.Third.Recovering, 2) +end) + +keywordHandler:addKeyword({ "ring" }, StdModule.say, { + npcHandler = npcHandler, + text = "You don't have the ring I need.", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Third.Recovering) == 1 +end) -- Fifth -keywordHandler:addKeyword( - { "mission" }, StdModule.say, { - npcHandler = npcHandler, - text = "This is the proof we need! Very well done! You have to report this to our {Empress}. She will grant you an audience now." - }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Fifth.Memories) == 4 end, - function(player) player:setStorageValue(Storage.Kilmaresh.Fifth.Memories, 5) end -) - -npcHandler:setMessage(MESSAGE_GREET, "Suon\'s and Bastesh\'s blessing, dear guest!") -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +keywordHandler:addKeyword({ "mission" }, StdModule.say, { + npcHandler = npcHandler, + text = "This is the proof we need! Very well done! You have to report this to our {Empress}. She will grant you an audience now.", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Fifth.Memories) == 4 +end, function(player) + player:setStorageValue(Storage.Kilmaresh.Fifth.Memories, 5) +end) + +npcHandler:setMessage(MESSAGE_GREET, "Suon's and Bastesh's blessing, dear guest!") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/esrik.lua b/data-otservbr-global/npc/esrik.lua index 6e75b8535cd..b585a505aa8 100644 --- a/data-otservbr-global/npc/esrik.lua +++ b/data-otservbr-global/npc/esrik.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 71 + lookType = 71, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -164,11 +164,10 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end -npcHandler:setMessage(MESSAGE_GREET, 'Hello, |PLAYERNAME| and welcome to my little forge.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Bye.') +npcHandler:setMessage(MESSAGE_GREET, "Hello, |PLAYERNAME| and welcome to my little forge.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Bye.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/ethan.lua b/data-otservbr-global/npc/ethan.lua index 83c4b63f0f7..2544c2e225f 100644 --- a/data-otservbr-global/npc/ethan.lua +++ b/data-otservbr-global/npc/ethan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 41, lookLegs = 60, lookFeet = 41, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/etzel.lua b/data-otservbr-global/npc/etzel.lua index 35dad4fc915..9dce780d9d2 100644 --- a/data-otservbr-global/npc/etzel.lua +++ b/data-otservbr-global/npc/etzel.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/eustacio.lua b/data-otservbr-global/npc/eustacio.lua index c46acb8f32c..5b73fd5859c 100644 --- a/data-otservbr-global/npc/eustacio.lua +++ b/data-otservbr-global/npc/eustacio.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 110, lookLegs = 71, lookFeet = 116, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,7 +55,7 @@ local function greetCallback(npc, creature) if player:getStorageValue(Storage.Quest.U12_60.APiratesTail.RascacoonShortcut) == 1 then npcHandler:setMessage(MESSAGE_GREET, { - "Hello my friend. What a delight to see you, even on a {busy} day. I see you already talked to my agent. I'm willing to lend you my boat if you want to take a {shortcut}. ..." + "Hello my friend. What a delight to see you, even on a {busy} day. I see you already talked to my agent. I'm willing to lend you my boat if you want to take a {shortcut}. ...", }) else npcHandler:setMessage(MESSAGE_GREET, "Hello my friend. What a delight to see you, even on a busy day. You can check your status or ask me about the location of ongoing raids.") @@ -79,7 +79,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "shortcut") then if player:getStorageValue(Storage.Quest.U12_60.APiratesTail.RascacoonShortcut) == 1 then npcHandler:say({ - "You are trustworthy enough to take my boat. My agent made sure it takes me to their island. Do you want to take it?" + "You are trustworthy enough to take my boat. My agent made sure it takes me to their island. Do you want to take it?", }, npc, creature) npcHandler:setTopic(playerId, 1) end diff --git a/data-otservbr-global/npc/eva.lua b/data-otservbr-global/npc/eva.lua index ad3a4f7d7a7..3adcd8c94d2 100644 --- a/data-otservbr-global/npc/eva.lua +++ b/data-otservbr-global/npc/eva.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 98, lookLegs = 95, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/evan.lua b/data-otservbr-global/npc/evan.lua index 56d7384908d..6b25dab205d 100644 --- a/data-otservbr-global/npc/evan.lua +++ b/data-otservbr-global/npc/evan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 107, lookLegs = 63, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,7 +53,7 @@ end npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "fire bug", clientId = 5467, buy = 100 } + { itemName = "fire bug", clientId = 5467, buy = 100 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -64,7 +64,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/ezean.lua b/data-otservbr-global/npc/ezean.lua index e20946d24f6..7f2a7dccb29 100644 --- a/data-otservbr-global/npc/ezean.lua +++ b/data-otservbr-global/npc/ezean.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 0, lookBody = 0, lookLegs = 0, - lookFeet = 0 + lookFeet = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,7 +54,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -65,7 +65,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/ezebeth.lua b/data-otservbr-global/npc/ezebeth.lua index ab007024de4..2a3bff1ae45 100644 --- a/data-otservbr-global/npc/ezebeth.lua +++ b/data-otservbr-global/npc/ezebeth.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 31, lookLegs = 34, lookFeet = 94, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/fa_hradin.lua b/data-otservbr-global/npc/fa_hradin.lua index 0ab59bddd11..28e05610a81 100644 --- a/data-otservbr-global/npc/fa_hradin.lua +++ b/data-otservbr-global/npc/fa_hradin.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 80 + lookType = 80, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,47 +54,47 @@ local function creatureSayCallback(npc, creature, type, message) end local missionProgress = player:getStorageValue(Storage.DjinnWar.MaridFaction.Mission02) - if MsgContains(message, 'spy report') or MsgContains(message, 'mission') then + if MsgContains(message, "spy report") or MsgContains(message, "mission") then if player:getStorageValue(Storage.DjinnWar.MaridFaction.Mission01) ~= 2 then - npcHandler:say('Looking for work, are you? Well, it\'s very tempting, you know, but I\'m afraid we do not really employ beginners. Perhaps our cook could need a helping hand in the kitchen.', npc, creature) + npcHandler:say("Looking for work, are you? Well, it's very tempting, you know, but I'm afraid we do not really employ beginners. Perhaps our cook could need a helping hand in the kitchen.", npc, creature) elseif missionProgress < 1 then npcHandler:say({ - 'I have heard some good things about you from Bo\'ques. But I don\'t know. ...', - 'Well, all right. I do have a job for you. ...', - 'In order to stay informed about our enemy\'s doings, we have managed to plant a spy in Mal\'ouquah. ...', - 'He has kept the Efreet and Malor under surveillance for quite some time. ...', - 'But unfortunately, I have lost contact with him months ago. ...', - 'I do not fear for his safety because his cover is foolproof, but I cannot contact him either. This is where you come in. ...', - 'I need you to infiltrate Mal\'ouqhah, contact our man there and get his latest spyreport. The password is {PIEDPIPER}. Remember it well! ...', - 'I do not have to add that this is a dangerous mission, do I? If you are discovered expect to be attacked! So goodluck, human!' + "I have heard some good things about you from Bo'ques. But I don't know. ...", + "Well, all right. I do have a job for you. ...", + "In order to stay informed about our enemy's doings, we have managed to plant a spy in Mal'ouquah. ...", + "He has kept the Efreet and Malor under surveillance for quite some time. ...", + "But unfortunately, I have lost contact with him months ago. ...", + "I do not fear for his safety because his cover is foolproof, but I cannot contact him either. This is where you come in. ...", + "I need you to infiltrate Mal'ouqhah, contact our man there and get his latest spyreport. The password is {PIEDPIPER}. Remember it well! ...", + "I do not have to add that this is a dangerous mission, do I? If you are discovered expect to be attacked! So goodluck, human!", }, npc, creature) player:setStorageValue(Storage.DjinnWar.MaridFaction.Mission02, 1) player:setStorageValue(Storage.DjinnWar.MaridFaction.DoorToEfreetTerritory, 1) elseif missionProgress == 1 then - npcHandler:say('Did you already retrieve the spyreport?', npc, creature) + npcHandler:say("Did you already retrieve the spyreport?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('Did you already talk to Gabel about the report? I think he will have further instructions for you.', npc, creature) + npcHandler:say("Did you already talk to Gabel about the report? I think he will have further instructions for you.", npc, creature) end elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if player:getStorageValue(Storage.DjinnWar.MaridFaction.RataMari) ~= 2 or not player:removeItem(3232, 1) then npcHandler:say({ - 'Don\'t waste any more time. We need the spyreport of our man in Mal\'ouquah as soon as possible! ...', - 'Also don\'t forget the password to contact our man: PIEDPIPER!' + "Don't waste any more time. We need the spyreport of our man in Mal'ouquah as soon as possible! ...", + "Also don't forget the password to contact our man: PIEDPIPER!", }, npc, creature) else npcHandler:say({ - 'You really have made it? You have the report? How come you did not get slaughtered? I must say I\'m impressed. Your race will never cease to surprise me. ...', - 'Well, let\'s see. ...', - 'I think I need to talk to Gabel about this. I am sure he will know what to do. Perhaps you should have a word with him, too.' + "You really have made it? You have the report? How come you did not get slaughtered? I must say I'm impressed. Your race will never cease to surprise me. ...", + "Well, let's see. ...", + "I think I need to talk to Gabel about this. I am sure he will know what to do. Perhaps you should have a word with him, too.", }, npc, creature) player:setStorageValue(Storage.DjinnWar.MaridFaction.Mission02, 2) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then npcHandler:say({ - 'Don\'t waste any more time. We need the spyreport of our man in Mal\'ouquah as soon as possible! ...', - 'Also don\'t forget the password to contact our man: PIEDPIPER!' + "Don't waste any more time. We need the spyreport of our man in Mal'ouquah as soon as possible! ...", + "Also don't forget the password to contact our man: PIEDPIPER!", }, npc, creature) end end @@ -104,8 +104,8 @@ end -- Greeting keywordHandler:addGreetKeyword({ "djanni'hah" }, { npcHandler = npcHandler, text = "Aaaah... what have we here. A human - interesting. And such an ugly specimen, too... All right, human |PLAYERNAME|. How can I help you?" }) -npcHandler:setMessage(MESSAGE_FAREWELL, 'Farewell, human. I will always remember you. Unless I forget you, of course.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Farewell, human. I will always remember you. Unless I forget you, of course.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell, human. I will always remember you. Unless I forget you, of course.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Farewell, human. I will always remember you. Unless I forget you, of course.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/fadil.lua b/data-otservbr-global/npc/fadil.lua index 2b67288f416..06c3cc5dd4d 100644 --- a/data-otservbr-global/npc/fadil.lua +++ b/data-otservbr-global/npc/fadil.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 0, lookFeet = 94, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -79,7 +79,7 @@ npcConfig.shop = { { itemName = "sparkion stings", clientId = 23505, sell = 280 }, { itemName = "sparkion tail", clientId = 23503, sell = 300 }, { itemName = "strange proto matter", clientId = 23513, sell = 300 }, - { itemName = "volatile proto matter", clientId = 23514, sell = 300 } + { itemName = "volatile proto matter", clientId = 23514, sell = 300 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -90,7 +90,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/falk.lua b/data-otservbr-global/npc/falk.lua index 458b504a242..06dd8029802 100644 --- a/data-otservbr-global/npc/falk.lua +++ b/data-otservbr-global/npc/falk.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 11, lookLegs = 11, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/falonzo.lua b/data-otservbr-global/npc/falonzo.lua index e8b7e764735..2aa936befeb 100644 --- a/data-otservbr-global/npc/falonzo.lua +++ b/data-otservbr-global/npc/falonzo.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,99 +50,77 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword( - { "name" }, StdModule.say, { - npcHandler = npcHandler, - text = "I\'m professor Falonzo from the mage\'s guild." - } -) - -keywordHandler:addKeyword( - { "job" }, StdModule.say, { - npcHandler = npcHandler, - text = "I\'m a researcher of scientific council of the mage guild and I came to that {place} to study this {anomaly}." - } -) - -keywordHandler:addKeyword( - { "place" }, StdModule.say, { - npcHandler = npcHandler, - text = { - "This {plane} is now inhabited by {intruders} and creatures that accidentally became {dragged} in. ...", - "It is neither completely of our world nor is it still that disconnected and unreachable as it used to be. I fear it\'s only a harbinger of something more dangerous and more {sinister}." - } - } -) - -keywordHandler:addKeyword( - { "anomaly" }, StdModule.say, { - npcHandler = npcHandler, - text = { - "Well, the whole place here is an anomaly so to say. You can hardly have missed the fact that you arrived here through a mystical gate. ...", - "Well actually it\'s no gate at all but a rift in the fabric of nature. It is this minor {plane} trying to reconnect to our world." - } - } -) - -keywordHandler:addKeyword( - { "plane" }, StdModule.say, { - npcHandler = npcHandler, - text = "This is a lesser plane of tarnished, elemental fire that once belonged to the world that we know. It was despoiled in the wars of the gods and broke loose from our world. {Lost} and drifting through the void, without a connection to our plane." - } -) - -keywordHandler:addKeyword( - { "intruders" }, StdModule.say, { - npcHandler = npcHandler, - text = "Infernalists were the first who found their way into this sphere. Hoping to tap its rotten power somehow. Yet this sphere created creatures of its own and draw others here from other planes." - } -) - -keywordHandler:addKeyword( - { "dragged" }, StdModule.say, { - npcHandler = npcHandler, - text = { - "This place became a fiery trap to certain beings with an affinity to fire. Somehow it reconnects randomly with the known world, to which it once belonged ...", - "but also to other places that it shares some affinity with like hellish places of unspeakable evil that spawn infernal creatures." - } - } -) - -keywordHandler:addKeyword( - { "sinister" }, StdModule.say, { - npcHandler = npcHandler, - text = { - "Something is tearing at the fabric of reality. I can\'t tell what is it but the {boundaries} between worlds are fading. ...", - "A process that what watched for over a century but which has extremely grown in momentum over the last few years. Something is happening and it\'s for sure nothing good. ...", - "Be it as it may, the plane trying to reconnect was only a side effect. It still might teach us about what is happening and it has for sure attracted some {attention} already." - } - } -) -keywordHandler:addAliasKeyword({ 'changed' }) - -keywordHandler:addKeyword( - { "lost" }, StdModule.say, { - npcHandler = npcHandler, - text = "Well, that was how it used to be. Lost and without any connection to our world. But that was before things ... have {changed}." - } -) - -keywordHandler:addKeyword( - { "boundaries" }, StdModule.say, { - npcHandler = npcHandler, - text = { - "We know about other planes of existence but in all history it has never been as easy to reach them as it is now. ...", - "Sometimes world seem to overlap and we can identify more and more such planes and worlds. More then we ever had imagined. All we can tell is, that something is changing. And not for the good." - } - } -) - -keywordHandler:addKeyword( - { "attention" }, StdModule.say, { - npcHandler = npcHandler, - text = "Such an anomaly can\'t go unnoticed for long. That lead to the presence to unwanted {intruders} and other entities were {dragged} into by the nature of the sphere." - } -) +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm professor Falonzo from the mage's guild.", +}) + +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm a researcher of scientific council of the mage guild and I came to that {place} to study this {anomaly}.", +}) + +keywordHandler:addKeyword({ "place" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "This {plane} is now inhabited by {intruders} and creatures that accidentally became {dragged} in. ...", + "It is neither completely of our world nor is it still that disconnected and unreachable as it used to be. I fear it's only a harbinger of something more dangerous and more {sinister}.", + }, +}) + +keywordHandler:addKeyword({ "anomaly" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Well, the whole place here is an anomaly so to say. You can hardly have missed the fact that you arrived here through a mystical gate. ...", + "Well actually it's no gate at all but a rift in the fabric of nature. It is this minor {plane} trying to reconnect to our world.", + }, +}) + +keywordHandler:addKeyword({ "plane" }, StdModule.say, { + npcHandler = npcHandler, + text = "This is a lesser plane of tarnished, elemental fire that once belonged to the world that we know. It was despoiled in the wars of the gods and broke loose from our world. {Lost} and drifting through the void, without a connection to our plane.", +}) + +keywordHandler:addKeyword({ "intruders" }, StdModule.say, { + npcHandler = npcHandler, + text = "Infernalists were the first who found their way into this sphere. Hoping to tap its rotten power somehow. Yet this sphere created creatures of its own and draw others here from other planes.", +}) + +keywordHandler:addKeyword({ "dragged" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "This place became a fiery trap to certain beings with an affinity to fire. Somehow it reconnects randomly with the known world, to which it once belonged ...", + "but also to other places that it shares some affinity with like hellish places of unspeakable evil that spawn infernal creatures.", + }, +}) + +keywordHandler:addKeyword({ "sinister" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Something is tearing at the fabric of reality. I can't tell what is it but the {boundaries} between worlds are fading. ...", + "A process that what watched for over a century but which has extremely grown in momentum over the last few years. Something is happening and it's for sure nothing good. ...", + "Be it as it may, the plane trying to reconnect was only a side effect. It still might teach us about what is happening and it has for sure attracted some {attention} already.", + }, +}) +keywordHandler:addAliasKeyword({ "changed" }) + +keywordHandler:addKeyword({ "lost" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, that was how it used to be. Lost and without any connection to our world. But that was before things ... have {changed}.", +}) + +keywordHandler:addKeyword({ "boundaries" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "We know about other planes of existence but in all history it has never been as easy to reach them as it is now. ...", + "Sometimes world seem to overlap and we can identify more and more such planes and worlds. More then we ever had imagined. All we can tell is, that something is changing. And not for the good.", + }, +}) + +keywordHandler:addKeyword({ "attention" }, StdModule.say, { + npcHandler = npcHandler, + text = "Such an anomaly can't go unnoticed for long. That lead to the presence to unwanted {intruders} and other entities were {dragged} into by the nature of the sphere.", +}) npcHandler:setMessage(MESSAGE_GREET, "Greetings, adventurer!") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye!") diff --git a/data-otservbr-global/npc/faloriel.lua b/data-otservbr-global/npc/faloriel.lua index 253af3c4c5f..fd8a1856bdb 100644 --- a/data-otservbr-global/npc/faloriel.lua +++ b/data-otservbr-global/npc/faloriel.lua @@ -16,18 +16,18 @@ npcConfig.outfit = { lookBody = 100, lookLegs = 29, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, { text = "Health potions! Mana potions! Buy them here!" }, - { text = "All kinds of potions available here!" } + { text = "All kinds of potions available here!" }, } local keywordHandler = KeywordHandler:new() @@ -57,36 +57,32 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -local potionTalk = keywordHandler:addKeyword( - { "ring" }, StdModule.say, { - npcHandler = npcHandler, - text = "So, the Librarian sent you. Well, yes, I have a vial of the hallucinogen you need. I'll give it to you for 1000 gold. Do you agree?" - }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Fifth.Memories) == 1 end -) - -potionTalk:addChildKeyword( - { "yes" }, StdModule.say, { - npcHandler = npcHandler, - text = "Great. Here, take it." - }, - function(player) return player:getMoney() + player:getBankBalance() >= 1000 end, - function(player) - player:removeMoneyBank(1000) - player:addItem(31350, 1) -- flask of hallucinogen - end -) - -potionTalk:addChildKeyword( - { "yes" }, StdModule.say, { - npcHandler = npcHandler, - text = "You do not have enough money." - }, - function(player) return player:getMoney() + player:getBankBalance() < 1000 end -) - -npcHandler:setMessage(MESSAGE_GREET, 'Greetings, dear guest and welcome to my {potion} shop.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +local potionTalk = keywordHandler:addKeyword({ "ring" }, StdModule.say, { + npcHandler = npcHandler, + text = "So, the Librarian sent you. Well, yes, I have a vial of the hallucinogen you need. I'll give it to you for 1000 gold. Do you agree?", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Fifth.Memories) == 1 +end) + +potionTalk:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Great. Here, take it.", +}, function(player) + return player:getMoney() + player:getBankBalance() >= 1000 +end, function(player) + player:removeMoneyBank(1000) + player:addItem(31350, 1) -- flask of hallucinogen +end) + +potionTalk:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "You do not have enough money.", +}, function(player) + return player:getMoney() + player:getBankBalance() < 1000 +end) + +npcHandler:setMessage(MESSAGE_GREET, "Greetings, dear guest and welcome to my {potion} shop.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) @@ -109,7 +105,7 @@ npcConfig.shop = { { itemName = "ultimate health potion", clientId = 7643, buy = 379 }, { itemName = "ultimate mana potion", clientId = 23373, buy = 438 }, { itemName = "ultimate spirit potion", clientId = 23374, buy = 438 }, - { itemName = "vial", clientId = 2874, sell = 5 } + { itemName = "vial", clientId = 2874, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -120,7 +116,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/faluae.lua b/data-otservbr-global/npc/faluae.lua index 67b4eeee2e0..ac496c88b86 100644 --- a/data-otservbr-global/npc/faluae.lua +++ b/data-otservbr-global/npc/faluae.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 62 + lookType = 62, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/fayla.lua b/data-otservbr-global/npc/fayla.lua index ee9b1cdb7ef..a792b3fb76e 100644 --- a/data-otservbr-global/npc/fayla.lua +++ b/data-otservbr-global/npc/fayla.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 117, lookLegs = 113, lookFeet = 2, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,7 @@ npcConfig.shop = { { itemName = "lute", clientId = 2950, buy = 195 }, { itemName = "lyre", clientId = 2949, buy = 120 }, { itemName = "piano kit", clientId = 2807, buy = 200 }, - { itemName = "simple fanfare", clientId = 2954, buy = 150 } + { itemName = "simple fanfare", clientId = 2954, buy = 150 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -69,7 +69,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/feizuhl.lua b/data-otservbr-global/npc/feizuhl.lua index ba95ec01f80..983c03a1dd8 100644 --- a/data-otservbr-global/npc/feizuhl.lua +++ b/data-otservbr-global/npc/feizuhl.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 62, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'I sell furniture both to the mourned and the enlightened.' } + { text = "I sell furniture both to the mourned and the enlightened." }, } local keywordHandler = KeywordHandler:new() @@ -156,7 +156,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -167,7 +167,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/fenbala.lua b/data-otservbr-global/npc/fenbala.lua index 6c746d4a7ac..004129a5dd8 100644 --- a/data-otservbr-global/npc/fenbala.lua +++ b/data-otservbr-global/npc/fenbala.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 71, lookLegs = 100, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,8 +50,8 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'hi' }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the queen greet with her title!" }) -keywordHandler:addKeyword({ 'hello' }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the queen greet with her title!" }) +keywordHandler:addKeyword({ "hi" }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the queen greet with her title!" }) +keywordHandler:addKeyword({ "hello" }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the queen greet with her title!" }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -61,7 +61,7 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if table.contains({ 'fuck', 'idiot', 'asshole', 'ass', 'fag', 'stupid', 'tyrant', 'shit', 'lunatic' }, message) then + if table.contains({ "fuck", "idiot", "asshole", "ass", "fag", "stupid", "tyrant", "shit", "lunatic" }, message) then local player = Player(creature) local conditions = { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_PARALYZE, CONDITION_DROWN, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED } for i = 1, #conditions do @@ -71,18 +71,18 @@ local function creatureSayCallback(npc, creature, type, message) end player:getPosition():sendMagicEffect(CONST_ME_EXPLOSIONAREA) player:addHealth(1 - player:getHealth()) - npcHandler:say('Take this!', npc, creature) + npcHandler:say("Take this!", npc, creature) npc:getPosition():sendMagicEffect(CONST_ME_YELLOW_RINGS) end return true end -- Greeting -keywordHandler:addGreetKeyword({ 'hail queen' }, { npcHandler = npcHandler, text = 'HAIL TO THE QUEEN!' }) -keywordHandler:addGreetKeyword({ 'salutations queen' }, { npcHandler = npcHandler, text = 'HAIL TO THE QUEEN!' }) +keywordHandler:addGreetKeyword({ "hail queen" }, { npcHandler = npcHandler, text = "HAIL TO THE QUEEN!" }) +keywordHandler:addGreetKeyword({ "salutations queen" }, { npcHandler = npcHandler, text = "HAIL TO THE QUEEN!" }) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'LONG LIVE THE QUEEN!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'LONG LIVE THE QUEEN! You may leave now!') +npcHandler:setMessage(MESSAGE_WALKAWAY, "LONG LIVE THE QUEEN!") +npcHandler:setMessage(MESSAGE_FAREWELL, "LONG LIVE THE QUEEN! You may leave now!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/fenech.lua b/data-otservbr-global/npc/fenech.lua index 153fce88c1f..9427983b9ba 100644 --- a/data-otservbr-global/npc/fenech.lua +++ b/data-otservbr-global/npc/fenech.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 40, lookLegs = 49, lookFeet = 117, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Offering all sorts of magic equipment.' } + { text = "Offering all sorts of magic equipment." }, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,7 @@ end local items = { [VOCATION.BASE_ID.SORCERER] = 3074, - [VOCATION.BASE_ID.DRUID] = 3066 + [VOCATION.BASE_ID.DRUID] = 3066, } local function creatureSayCallback(npc, creature, type, message) @@ -70,26 +70,26 @@ local function creatureSayCallback(npc, creature, type, message) end local itemId = items[player:getVocation():getBaseId()] - if MsgContains(message, 'first rod') or MsgContains(message, 'first wand') then + if MsgContains(message, "first rod") or MsgContains(message, "first wand") then if player:isMage() then if player:getStorageValue(Storage.FirstMageWeapon) == -1 then - npcHandler:say('So you ask me for a {' .. ItemType(itemId):getName() .. '} to begin your adventure?', npc, creature) + npcHandler:say("So you ask me for a {" .. ItemType(itemId):getName() .. "} to begin your adventure?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('What? I have already gave you one {' .. ItemType(itemId):getName() .. '}!', npc, creature) + npcHandler:say("What? I have already gave you one {" .. ItemType(itemId):getName() .. "}!", npc, creature) end else - npcHandler:say('Sorry, you aren\'t a druid either a sorcerer.', npc, creature) + npcHandler:say("Sorry, you aren't a druid either a sorcerer.", npc, creature) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then player:addItem(itemId, 1) - npcHandler:say('Here you are young adept, take care yourself.', npc, creature) + npcHandler:say("Here you are young adept, take care yourself.", npc, creature) player:setStorageValue(Storage.FirstMageWeapon, 1) end npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 1 then + npcHandler:say("Ok then.", npc, creature) npcHandler:setTopic(playerId, 0) end return true @@ -147,7 +147,7 @@ npcConfig.shop = { { itemName = "wand of inferno", clientId = 3071, buy = 15000 }, { itemName = "wand of starstorm", clientId = 8092, buy = 18000 }, { itemName = "wand of voodoo", clientId = 8094, buy = 22000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -158,7 +158,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/fergus.lua b/data-otservbr-global/npc/fergus.lua index 296a3352566..50d47db0d3a 100644 --- a/data-otservbr-global/npc/fergus.lua +++ b/data-otservbr-global/npc/fergus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 36, lookLegs = 116, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/ferks.lua b/data-otservbr-global/npc/ferks.lua index 4251a463855..1e195eba587 100644 --- a/data-otservbr-global/npc/ferks.lua +++ b/data-otservbr-global/npc/ferks.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 71, lookLegs = 119, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/ferryman_kamil.lua b/data-otservbr-global/npc/ferryman_kamil.lua index 131e658e932..97b5eb78084 100644 --- a/data-otservbr-global/npc/ferryman_kamil.lua +++ b/data-otservbr-global/npc/ferryman_kamil.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 71, lookLegs = 76, lookFeet = 115, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,9 +51,9 @@ npcType.onCloseChannel = function(npc, creature) end -- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! -local travelNode = keywordHandler:addKeyword({ 'meluna' }, StdModule.say, { npcHandler = npcHandler, text = 'You want me to transport you and your spouse to Honeymoon Island {Meluna}?' }) -travelNode:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, level = 0, cost = 0, destination = Position(32088, 32470, 7) }) -travelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'You shouldn\'t miss the experience.' }) +local travelNode = keywordHandler:addKeyword({ "meluna" }, StdModule.say, { npcHandler = npcHandler, text = "You want me to transport you and your spouse to Honeymoon Island {Meluna}?" }) +travelNode:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, level = 0, cost = 0, destination = Position(32088, 32470, 7) }) +travelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "You shouldn't miss the experience." }) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/ferryman_kamil_meluna.lua b/data-otservbr-global/npc/ferryman_kamil_meluna.lua index ffb74e8bd21..bb790333150 100644 --- a/data-otservbr-global/npc/ferryman_kamil_meluna.lua +++ b/data-otservbr-global/npc/ferryman_kamil_meluna.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 71, lookLegs = 76, lookFeet = 115, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,9 +50,9 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! -local travelNode = keywordHandler:addKeyword({ 'fibula' }, StdModule.say, { npcHandler = npcHandler, text = 'You want me to transport you and your spouse back to {Fibula}?' }) -travelNode:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, level = 0, cost = 0, destination = Position(32153, 32457, 7) }) -travelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'You shouldn\'t miss the experience.' }) +local travelNode = keywordHandler:addKeyword({ "fibula" }, StdModule.say, { npcHandler = npcHandler, text = "You want me to transport you and your spouse back to {Fibula}?" }) +travelNode:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, level = 0, cost = 0, destination = Position(32153, 32457, 7) }) +travelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "You shouldn't miss the experience." }) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/ferus.lua b/data-otservbr-global/npc/ferus.lua index ea43334b2a2..549005d8da9 100644 --- a/data-otservbr-global/npc/ferus.lua +++ b/data-otservbr-global/npc/ferus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,86 +51,103 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Alia) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Alia) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Alia, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/fillias.lua b/data-otservbr-global/npc/fillias.lua index 6d9c41a6aea..e2b13e9bb74 100644 --- a/data-otservbr-global/npc/fillias.lua +++ b/data-otservbr-global/npc/fillias.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 49, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/finarfin.lua b/data-otservbr-global/npc/finarfin.lua index 82aac611193..452103ce0ca 100644 --- a/data-otservbr-global/npc/finarfin.lua +++ b/data-otservbr-global/npc/finarfin.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 63 + lookType = 63, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/fiona.lua b/data-otservbr-global/npc/fiona.lua index ff8f7f81b39..006a4f50fb7 100644 --- a/data-otservbr-global/npc/fiona.lua +++ b/data-otservbr-global/npc/fiona.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 100, lookLegs = 95, lookFeet = 38, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'The Edron academy is always in need of magical ingredients!' } + { text = "The Edron academy is always in need of magical ingredients!" }, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'magical ingredients' }, StdModule.say, { npcHandler = npcHandler, text = "Oof, there are too many to list. Magical ingredients can sometimes be found when you defeat a monster, for example bat wings. I buy many of these things if you don't want to use them for quests, just ask me for a {trade}." }) +keywordHandler:addKeyword({ "magical ingredients" }, StdModule.say, { npcHandler = npcHandler, text = "Oof, there are too many to list. Magical ingredients can sometimes be found when you defeat a monster, for example bat wings. I buy many of these things if you don't want to use them for quests, just ask me for a {trade}." }) npcHandler:setMessage(MESSAGE_GREET, "Good day, |PLAYERNAME|. I hope you bring a lot of {magical ingredients} with you.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye and please come back soon.") @@ -145,7 +145,7 @@ npcConfig.shop = { { itemName = "weaver's wandtip", clientId = 10397, sell = 250 }, { itemName = "wimp tooth chain", clientId = 17847, sell = 120 }, { itemName = "wyrm scale", clientId = 9665, sell = 400 }, - { itemName = "wyvern talisman", clientId = 9644, sell = 265 } + { itemName = "wyvern talisman", clientId = 9644, sell = 265 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -156,7 +156,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/flint.lua b/data-otservbr-global/npc/flint.lua index 08f1727489d..75ed473c1ec 100644 --- a/data-otservbr-global/npc/flint.lua +++ b/data-otservbr-global/npc/flint.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 76, lookFeet = 39, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -146,7 +146,7 @@ npcConfig.shop = { { itemName = "viking helmet", clientId = 3367, buy = 265 }, { itemName = "viking shield", clientId = 3431, buy = 260 }, { itemName = "war hammer", clientId = 3279, buy = 10000 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -157,7 +157,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/flora.lua b/data-otservbr-global/npc/flora.lua index 6bc38750351..a184b6ce23c 100644 --- a/data-otservbr-global/npc/flora.lua +++ b/data-otservbr-global/npc/flora.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 81, lookLegs = 20, lookFeet = 3, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,10 +52,12 @@ end local function greetCallback(npc, creature) local playerId = creature:getId() - npcHandler:setMessage(MESSAGE_GREET, - "Greetings, " .. - Player(creature):getName() .. - ". Well, we all know what time it is. Always when we meet, the citizens of rathleton voted for the {Glooth Fairy}! ... Well, the rules are as simples as always. Ask me for a {fight} and I\'ll teleport you into the room with the lever, therefore I\'ll charge one voting right. ... From this room there is no way back to me. Pull the trigger and after one minute you and your buddies will face the {Glooth Fairy}.") + npcHandler:setMessage( + MESSAGE_GREET, + "Greetings, " + .. Player(creature):getName() + .. ". Well, we all know what time it is. Always when we meet, the citizens of rathleton voted for the {Glooth Fairy}! ... Well, the rules are as simples as always. Ask me for a {fight} and I'll teleport you into the room with the lever, therefore I'll charge one voting right. ... From this room there is no way back to me. Pull the trigger and after one minute you and your buddies will face the {Glooth Fairy}." + ) npcHandler:setTopic(playerId, 0) return true end @@ -68,19 +70,19 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "fight")) then - npcHandler:say("Do you really want to enter the Glooth Fairy\'s hideout. There is no chickening out and I also have to charge one voting right! {Yes} or {no}?", npc, creature) + if MsgContains(message, "fight") then + npcHandler:say("Do you really want to enter the Glooth Fairy's hideout. There is no chickening out and I also have to charge one voting right! {Yes} or {no}?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say("Here you go!", npc, creature) local pos = { x = 33660, y = 31936, z = 9 } doTeleportThing(creature, pos) doSendMagicEffect(pos, CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "no")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "no") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say("Okay...", npc, creature) npcHandler:setTopic(playerId, 0) end @@ -88,8 +90,8 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_FAREWELL, 'Come back soon.') -npcHandler:setMessage(MESSAGE_WALKAWAY, '') +npcHandler:setMessage(MESSAGE_FAREWELL, "Come back soon.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/florentine.lua b/data-otservbr-global/npc/florentine.lua index fc05c97874d..19526578aee 100644 --- a/data-otservbr-global/npc/florentine.lua +++ b/data-otservbr-global/npc/florentine.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 91, lookLegs = 77, lookFeet = 2, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Embellish your home with flowers!' } + { text = "Embellish your home with flowers!" }, } local keywordHandler = KeywordHandler:new() @@ -66,7 +66,7 @@ npcConfig.shop = { { itemName = "god flowers", clientId = 2981, buy = 5 }, { itemName = "honey flower", clientId = 2984, buy = 5 }, { itemName = "indoor plant kit", clientId = 2803, buy = 8 }, - { itemName = "potted flower", clientId = 2985, buy = 5 } + { itemName = "potted flower", clientId = 2985, buy = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -77,7 +77,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/frafnar.lua b/data-otservbr-global/npc/frafnar.lua index 69f0c877de1..21824471796 100644 --- a/data-otservbr-global/npc/frafnar.lua +++ b/data-otservbr-global/npc/frafnar.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 58, lookBody = 119, lookLegs = 81, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/frank_the_plank.lua b/data-otservbr-global/npc/frank_the_plank.lua index 77f26b67a21..6978a53dfe9 100644 --- a/data-otservbr-global/npc/frank_the_plank.lua +++ b/data-otservbr-global/npc/frank_the_plank.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 87, lookLegs = 108, lookFeet = 0, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/frans.lua b/data-otservbr-global/npc/frans.lua index 0ff427d2f9c..a765815e597 100644 --- a/data-otservbr-global/npc/frans.lua +++ b/data-otservbr-global/npc/frans.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 3114 + lookTypeEx = 3114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -84,7 +84,7 @@ npcConfig.shop = { { itemName = "wand of cosmic energy", clientId = 3073, buy = 10000 }, { itemName = "wand of decay", clientId = 3072, buy = 5000 }, { itemName = "wand of dragonbreath", clientId = 3075, buy = 1000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -95,7 +95,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/frederik.lua b/data-otservbr-global/npc/frederik.lua index 6df133a4328..e19513213ab 100644 --- a/data-otservbr-global/npc/frederik.lua +++ b/data-otservbr-global/npc/frederik.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 85, lookLegs = 96, lookFeet = 91, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -112,7 +112,7 @@ npcConfig.shop = { { itemName = "wand of inferno", clientId = 3071, buy = 15000 }, { itemName = "wand of starstorm", clientId = 8092, buy = 18000 }, { itemName = "wand of voodoo", clientId = 8094, buy = 22000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -123,7 +123,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/freezhild.lua b/data-otservbr-global/npc/freezhild.lua index baad60d4174..f1fde236040 100644 --- a/data-otservbr-global/npc/freezhild.lua +++ b/data-otservbr-global/npc/freezhild.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 47, lookLegs = 105, lookFeet = 105, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "weapons") then if player:getStorageValue(Storage.SecretService.AVINMission06) == 1 then npcHandler:say("Crate of weapons you say.. for me?", npc, creature) diff --git a/data-otservbr-global/npc/frodo.lua b/data-otservbr-global/npc/frodo.lua index ee0ceeab761..e92d9418e1e 100644 --- a/data-otservbr-global/npc/frodo.lua +++ b/data-otservbr-global/npc/frodo.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 68, lookLegs = 109, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Come into my tavern and share some stories!' } + { text = "Come into my tavern and share some stories!" }, } local keywordHandler = KeywordHandler:new() @@ -57,52 +57,52 @@ npcType.onCloseChannel = function(npc, creature) end -- Basic -keywordHandler:addKeyword({ 'hut' }, StdModule.say, { npcHandler = npcHandler, text = "I hope you like it. Would you like some {food}?" }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the owner of this saloon. I call it Frodo's Hut. I am also {selling} food." }) -keywordHandler:addAliasKeyword({ 'saloon' }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = "I can offer you bread, cheese, ham, or meat. If you'd like to see my offers, ask me for a trade." }) -keywordHandler:addKeyword({ 'news' }, StdModule.say, { npcHandler = npcHandler, text = "Some travelers from Edron told about a great treasure guarded by cruel demons in the dungeons there." }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = "Oh, our beloved king! Thanks to him, alcohol is so cheap." }) -keywordHandler:addAliasKeyword({ 'tibianus' }) -keywordHandler:addKeyword({ 'general' }, StdModule.say, { npcHandler = npcHandler, text = "Harkath Bloodblade is the royal general." }) -keywordHandler:addKeyword({ 'army' }, StdModule.say, { npcHandler = npcHandler, text = "Hehe. Great customers." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "Just call me Frodo." }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "It is exactly |TIME|." }) -keywordHandler:addKeyword({ 'dungeons' }, StdModule.say, { npcHandler = npcHandler, text = "Ah yes, the graveyard dungeon. All I know is this riddle: His Grave to the south, the tree above, his soul in the shade. No idea what that means, though!" }) -keywordHandler:addAliasKeyword({ 'graveyard' }) -keywordHandler:addKeyword({ 'riddle' }, StdModule.say, { npcHandler = npcHandler, text = " I heard it when I was a child." }) -keywordHandler:addKeyword({ 'one eyed stranger' }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I remember him. His name was Berfasmur." }) -keywordHandler:addKeyword({ 'berfasmur' }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, he spoke only very little. I know nothing more about him." }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = "Come on! You know that our world is called Tibia." }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = "Nothing more than a tale for warriors." }) -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { npcHandler = npcHandler, text = "Uhm, do not mention him. It may scare customers away." }) -keywordHandler:addKeyword({ 'cropwell' }, StdModule.say, { npcHandler = npcHandler, text = "No idea who that is, but maybe you'll find something in the Royal Archives..." }) -keywordHandler:addKeyword({ 'royal archives' }, StdModule.say, { npcHandler = npcHandler, text = "Oh, the Royal Archives are in Rain Castle!" }) -keywordHandler:addKeyword({ 'rain castle' }, StdModule.say, { npcHandler = npcHandler, text = "The king's residence has been renovated lately." }) -keywordHandler:addKeyword({ 'carlin' }, StdModule.say, { npcHandler = npcHandler, text = "Many travellers tell funny stories about all the emancipated women in this northern town." }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = "Here in Thais is the center of Tibia." }) -keywordHandler:addKeyword({ 'donald' }, StdModule.say, { npcHandler = npcHandler, text = "He is a little shy. In his youth he dreamed to become a druid." }) -keywordHandler:addKeyword({ 'baxter' }, StdModule.say, { npcHandler = npcHandler, text = "He's able to drink a bottle or two." }) -keywordHandler:addKeyword({ 'bozo' }, StdModule.say, { npcHandler = npcHandler, text = "I am trying to hire him for an evening or two." }) -keywordHandler:addKeyword({ 'eclesius' }, StdModule.say, { npcHandler = npcHandler, text = "Oh, that old guy! He's a good customer, that's for sure." }) -keywordHandler:addKeyword({ 'elane' }, StdModule.say, { npcHandler = npcHandler, text = "Can you believe that she actually told her guildfellows that alcohol is a bad thing?" }) -keywordHandler:addKeyword({ 'galuna' }, StdModule.say, { npcHandler = npcHandler, text = "She makes excellent arrows and bows." }) -keywordHandler:addKeyword({ 'gorn' }, StdModule.say, { npcHandler = npcHandler, text = "Many of his customers visit my Hut, too." }) -keywordHandler:addKeyword({ 'gregor' }, StdModule.say, { npcHandler = npcHandler, text = "The knights have sometimes parties here after some arena fights." }) -keywordHandler:addKeyword({ 'harkath bloodblade' }, StdModule.say, { npcHandler = npcHandler, text = "Too disciplined to enjoy life." }) -keywordHandler:addKeyword({ 'hugo' }, StdModule.say, { npcHandler = npcHandler, text = "I think some time ago a stranger from Fibula with that name stayed here for some nights." }) -keywordHandler:addKeyword({ 'lugri' }, StdModule.say, { npcHandler = npcHandler, text = "I overheard some conversations about his evilness. That's enough to hope, that I never ever meet him." }) -keywordHandler:addKeyword({ 'lungelen' }, StdModule.say, { npcHandler = npcHandler, text = "A sorceress, you can find her in their guild sitting befor a book - always!" }) -keywordHandler:addKeyword({ 'lynda' }, StdModule.say, { npcHandler = npcHandler, text = "Just between you and me: What a babe!" }) -keywordHandler:addKeyword({ 'marvik' }, StdModule.say, { npcHandler = npcHandler, text = "Marvik seldom leaves his guildhall at all." }) -keywordHandler:addKeyword({ 'mcronald' }, StdModule.say, { npcHandler = npcHandler, text = "The McRonalds are a nice couple. Donald is a dear friend of mine." }) -keywordHandler:addAliasKeyword({ 'sherry' }) -keywordHandler:addKeyword({ 'muriel' }, StdModule.say, { npcHandler = npcHandler, text = "Muriel has never visited this place." }) -keywordHandler:addKeyword({ 'oswald' }, StdModule.say, { npcHandler = npcHandler, text = "I hate him. Each of his visits here ends with a bar brawl." }) -keywordHandler:addKeyword({ 'quentin' }, StdModule.say, { npcHandler = npcHandler, text = "He hardly visits my humble tavern." }) -keywordHandler:addKeyword({ 'samuel' }, StdModule.say, { npcHandler = npcHandler, text = "A loud neighbour, I get a lot of complaints about him." }) -keywordHandler:addKeyword({ 'todd' }, StdModule.say, { npcHandler = npcHandler, text = "That fellow is filthy rich. He rented a room upstairs for months in advance and always orders the best beer and wine i serve." }) -keywordHandler:addKeyword({ 'xodet' }, StdModule.say, { npcHandler = npcHandler, text = "I don't know where he gets these fluids. If I could sell them here, the hut would be crowded." }) +keywordHandler:addKeyword({ "hut" }, StdModule.say, { npcHandler = npcHandler, text = "I hope you like it. Would you like some {food}?" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the owner of this saloon. I call it Frodo's Hut. I am also {selling} food." }) +keywordHandler:addAliasKeyword({ "saloon" }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "I can offer you bread, cheese, ham, or meat. If you'd like to see my offers, ask me for a trade." }) +keywordHandler:addKeyword({ "news" }, StdModule.say, { npcHandler = npcHandler, text = "Some travelers from Edron told about a great treasure guarded by cruel demons in the dungeons there." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, our beloved king! Thanks to him, alcohol is so cheap." }) +keywordHandler:addAliasKeyword({ "tibianus" }) +keywordHandler:addKeyword({ "general" }, StdModule.say, { npcHandler = npcHandler, text = "Harkath Bloodblade is the royal general." }) +keywordHandler:addKeyword({ "army" }, StdModule.say, { npcHandler = npcHandler, text = "Hehe. Great customers." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Just call me Frodo." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It is exactly |TIME|." }) +keywordHandler:addKeyword({ "dungeons" }, StdModule.say, { npcHandler = npcHandler, text = "Ah yes, the graveyard dungeon. All I know is this riddle: His Grave to the south, the tree above, his soul in the shade. No idea what that means, though!" }) +keywordHandler:addAliasKeyword({ "graveyard" }) +keywordHandler:addKeyword({ "riddle" }, StdModule.say, { npcHandler = npcHandler, text = " I heard it when I was a child." }) +keywordHandler:addKeyword({ "one eyed stranger" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I remember him. His name was Berfasmur." }) +keywordHandler:addKeyword({ "berfasmur" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, he spoke only very little. I know nothing more about him." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "Come on! You know that our world is called Tibia." }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "Nothing more than a tale for warriors." }) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, text = "Uhm, do not mention him. It may scare customers away." }) +keywordHandler:addKeyword({ "cropwell" }, StdModule.say, { npcHandler = npcHandler, text = "No idea who that is, but maybe you'll find something in the Royal Archives..." }) +keywordHandler:addKeyword({ "royal archives" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, the Royal Archives are in Rain Castle!" }) +keywordHandler:addKeyword({ "rain castle" }, StdModule.say, { npcHandler = npcHandler, text = "The king's residence has been renovated lately." }) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { npcHandler = npcHandler, text = "Many travellers tell funny stories about all the emancipated women in this northern town." }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "Here in Thais is the center of Tibia." }) +keywordHandler:addKeyword({ "donald" }, StdModule.say, { npcHandler = npcHandler, text = "He is a little shy. In his youth he dreamed to become a druid." }) +keywordHandler:addKeyword({ "baxter" }, StdModule.say, { npcHandler = npcHandler, text = "He's able to drink a bottle or two." }) +keywordHandler:addKeyword({ "bozo" }, StdModule.say, { npcHandler = npcHandler, text = "I am trying to hire him for an evening or two." }) +keywordHandler:addKeyword({ "eclesius" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, that old guy! He's a good customer, that's for sure." }) +keywordHandler:addKeyword({ "elane" }, StdModule.say, { npcHandler = npcHandler, text = "Can you believe that she actually told her guildfellows that alcohol is a bad thing?" }) +keywordHandler:addKeyword({ "galuna" }, StdModule.say, { npcHandler = npcHandler, text = "She makes excellent arrows and bows." }) +keywordHandler:addKeyword({ "gorn" }, StdModule.say, { npcHandler = npcHandler, text = "Many of his customers visit my Hut, too." }) +keywordHandler:addKeyword({ "gregor" }, StdModule.say, { npcHandler = npcHandler, text = "The knights have sometimes parties here after some arena fights." }) +keywordHandler:addKeyword({ "harkath bloodblade" }, StdModule.say, { npcHandler = npcHandler, text = "Too disciplined to enjoy life." }) +keywordHandler:addKeyword({ "hugo" }, StdModule.say, { npcHandler = npcHandler, text = "I think some time ago a stranger from Fibula with that name stayed here for some nights." }) +keywordHandler:addKeyword({ "lugri" }, StdModule.say, { npcHandler = npcHandler, text = "I overheard some conversations about his evilness. That's enough to hope, that I never ever meet him." }) +keywordHandler:addKeyword({ "lungelen" }, StdModule.say, { npcHandler = npcHandler, text = "A sorceress, you can find her in their guild sitting befor a book - always!" }) +keywordHandler:addKeyword({ "lynda" }, StdModule.say, { npcHandler = npcHandler, text = "Just between you and me: What a babe!" }) +keywordHandler:addKeyword({ "marvik" }, StdModule.say, { npcHandler = npcHandler, text = "Marvik seldom leaves his guildhall at all." }) +keywordHandler:addKeyword({ "mcronald" }, StdModule.say, { npcHandler = npcHandler, text = "The McRonalds are a nice couple. Donald is a dear friend of mine." }) +keywordHandler:addAliasKeyword({ "sherry" }) +keywordHandler:addKeyword({ "muriel" }, StdModule.say, { npcHandler = npcHandler, text = "Muriel has never visited this place." }) +keywordHandler:addKeyword({ "oswald" }, StdModule.say, { npcHandler = npcHandler, text = "I hate him. Each of his visits here ends with a bar brawl." }) +keywordHandler:addKeyword({ "quentin" }, StdModule.say, { npcHandler = npcHandler, text = "He hardly visits my humble tavern." }) +keywordHandler:addKeyword({ "samuel" }, StdModule.say, { npcHandler = npcHandler, text = "A loud neighbour, I get a lot of complaints about him." }) +keywordHandler:addKeyword({ "todd" }, StdModule.say, { npcHandler = npcHandler, text = "That fellow is filthy rich. He rented a room upstairs for months in advance and always orders the best beer and wine i serve." }) +keywordHandler:addKeyword({ "xodet" }, StdModule.say, { npcHandler = npcHandler, text = "I don't know where he gets these fluids. If I could sell them here, the hut would be crowded." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to Frodo's Hut. You heard about the {news}?") npcHandler:setMessage(MESSAGE_FAREWELL, "Please come back from time to time.") @@ -114,7 +114,7 @@ npcConfig.shop = { { itemName = "bread", clientId = 3600, buy = 4 }, { itemName = "cheese", clientId = 3607, buy = 6 }, { itemName = "ham", clientId = 3582, buy = 8 }, - { itemName = "meat", clientId = 3577, buy = 5 } + { itemName = "meat", clientId = 3577, buy = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -125,7 +125,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/frok_the_guard.lua b/data-otservbr-global/npc/frok_the_guard.lua index 8c685adc9a2..d4455bf4c36 100644 --- a/data-otservbr-global/npc/frok_the_guard.lua +++ b/data-otservbr-global/npc/frok_the_guard.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 70 + lookType = 70, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/frosty.lua b/data-otservbr-global/npc/frosty.lua index ae91c4c74f5..31b73c3ea8e 100644 --- a/data-otservbr-global/npc/frosty.lua +++ b/data-otservbr-global/npc/frosty.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 1159 + lookType = 1159, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -44,60 +44,60 @@ npcType.onThink = function(npc, interval) end local sleightInfo = { - ['bright percht sleigh'] = { cost = 0, items = { { 30192, 1 } }, mount = 133, storageID = Storage.Percht1 }, - ['cold percht sleigh'] = { cost = 0, items = { { 30192, 1 } }, mount = 132, storageID = Storage.Percht2 }, - ['dark percht sleigh'] = { cost = 0, items = { { 30192, 1 } }, mount = 134, storageID = Storage.Percht3 } + ["bright percht sleigh"] = { cost = 0, items = { { 30192, 1 } }, mount = 133, storageID = Storage.Percht1 }, + ["cold percht sleigh"] = { cost = 0, items = { { 30192, 1 } }, mount = 132, storageID = Storage.Percht2 }, + ["dark percht sleigh"] = { cost = 0, items = { { 30192, 1 } }, mount = 134, storageID = Storage.Percht3 }, } -local monsterName = { 'bright percht sleigh', 'cold percht sleigh', 'dark percht sleigh' } +local monsterName = { "bright percht sleigh", "cold percht sleigh", "dark percht sleigh" } local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() if sleightInfo[message] ~= nil then - if (getPlayerStorageValue(creature, sleightInfo[message].storageID) ~= -1) then - npcHandler:say('You already have this sleigh!', npc, creature) + if getPlayerStorageValue(creature, sleightInfo[message].storageID) ~= -1 then + npcHandler:say("You already have this sleigh!", npc, creature) npcHandler:resetNpc() else local itemsTable = sleightInfo[message].items - local items_list = '' + local items_list = "" if table.maxn(itemsTable) > 0 then for i = 1, table.maxn(itemsTable) do local item = itemsTable[i] - items_list = items_list .. item[2] .. ' ' .. ItemType(item[1]):getName() + items_list = items_list .. item[2] .. " " .. ItemType(item[1]):getName() if i ~= table.maxn(itemsTable) then - items_list = items_list .. ', ' + items_list = items_list .. ", " end end end - local text = '' - if (sleightInfo[message].cost > 0) then - text = sleightInfo[message].cost .. ' gp' + local text = "" + if sleightInfo[message].cost > 0 then + text = sleightInfo[message].cost .. " gp" elseif table.maxn(sleightInfo[message].items) then text = items_list elseif (sleightInfo[message].cost > 0) and table.maxn(sleightInfo[message].items) then - text = items_list .. ' and ' .. sleightInfo[message].cost .. ' gp' + text = items_list .. " and " .. sleightInfo[message].cost .. " gp" end - npcHandler:say('For a ' .. message .. ' you will need ' .. text .. '. Do you have it with you?', npc, creature) + npcHandler:say("For a " .. message .. " you will need " .. text .. ". Do you have it with you?", npc, creature) rtnt[playerId] = message talkState[playerId] = sleightInfo[message].storageID return true end - elseif message:lower() == 'percht' then - npcHandler:say('Nasty creatures especially their queen that sits frozzen on her throne beneath this island.', npc, creature) + elseif message:lower() == "percht" then + npcHandler:say("Nasty creatures especially their queen that sits frozzen on her throne beneath this island.", npc, creature) elseif MsgContains(message, "yes") then - if (talkState[playerId] >= Storage.Percht1 and talkState[playerId] <= Storage.Percht3) then + if talkState[playerId] >= Storage.Percht1 and talkState[playerId] <= Storage.Percht3 then local items_number = 0 if table.maxn(sleightInfo[rtnt[playerId]].items) > 0 then for i = 1, table.maxn(sleightInfo[rtnt[playerId]].items) do local item = sleightInfo[rtnt[playerId]].items[i] - if (getPlayerItemCount(creature, item[1]) >= item[2]) then + if getPlayerItemCount(creature, item[1]) >= item[2] then items_number = items_number + 1 end end end - if (player:removeMoneyBank(sleightInfo[rtnt[playerId]].cost) and (items_number == table.maxn(sleightInfo[rtnt[playerId]].items))) then + if player:removeMoneyBank(sleightInfo[rtnt[playerId]].cost) and (items_number == table.maxn(sleightInfo[rtnt[playerId]].items)) then if table.maxn(sleightInfo[rtnt[playerId]].items) > 0 then for i = 1, table.maxn(sleightInfo[rtnt[playerId]].items) do local item = sleightInfo[rtnt[playerId]].items[i] @@ -106,9 +106,9 @@ local function creatureSayCallback(npc, creature, type, message) end doPlayerAddMount(creature, sleightInfo[rtnt[playerId]].mount) setPlayerStorageValue(creature, sleightInfo[rtnt[playerId]].storageID, 1) - npcHandler:say('Here you are.', npc, creature) + npcHandler:say("Here you are.", npc, creature) else - npcHandler:say('You do not have needed items!', npc, creature) + npcHandler:say("You do not have needed items!", npc, creature) end rtnt[playerId] = nil talkState[playerId] = 0 @@ -116,13 +116,13 @@ local function creatureSayCallback(npc, creature, type, message) return true end elseif MsgContains(message, "mount") or MsgContains(message, "mounts") or MsgContains(message, "sleigh") or MsgContains(message, "sleighs") then - npcHandler:say('I can give you one of the following sleighs: {' .. table.concat(monsterName, "}, {") .. '}.', npc, creature) + npcHandler:say("I can give you one of the following sleighs: {" .. table.concat(monsterName, "}, {") .. "}.", npc, creature) rtnt[playerId] = nil talkState[playerId] = 0 npcHandler:resetNpc() return true elseif MsgContains(message, "help") then - npcHandler:say('Just tell me which {sleigh} you want to know more about.', npc, creature) + npcHandler:say("Just tell me which {sleigh} you want to know more about.", npc, creature) rtnt[playerId] = nil talkState[playerId] = 0 npcHandler:resetNpc() @@ -130,7 +130,7 @@ local function creatureSayCallback(npc, creature, type, message) else if talkState[playerId] ~= nil then if talkState[playerId] > 0 then - npcHandler:say('Come back when you get these items.', npc, creature) + npcHandler:say("Come back when you get these items.", npc, creature) rtnt[playerId] = nil talkState[playerId] = 0 npcHandler:resetNpc() @@ -141,9 +141,9 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'carrot' }, StdModule.say, { npcHandler = npcHandler, text = "What about 'no' do you not understand, hrm? You are more annoying than any {percht} around here! Not to mention those bothersome {bunnies} who try to graw away my nose!" }) -keywordHandler:addKeyword({ 'percht skull' }, StdModule.say, { npcHandler = npcHandler, text = "Well why didn't you say that rightaway, if you give me such a skull I can give you one of my {sleighs}." }) -keywordHandler:addKeyword({ 'bunnies' }, StdModule.say, { npcHandler = npcHandler, text = "Always trying to eat my nose!" }) +keywordHandler:addKeyword({ "carrot" }, StdModule.say, { npcHandler = npcHandler, text = "What about 'no' do you not understand, hrm? You are more annoying than any {percht} around here! Not to mention those bothersome {bunnies} who try to graw away my nose!" }) +keywordHandler:addKeyword({ "percht skull" }, StdModule.say, { npcHandler = npcHandler, text = "Well why didn't you say that rightaway, if you give me such a skull I can give you one of my {sleighs}." }) +keywordHandler:addKeyword({ "bunnies" }, StdModule.say, { npcHandler = npcHandler, text = "Always trying to eat my nose!" }) npcHandler:setMessage(MESSAGE_GREET, "No, you can't have my nose! If you're in need of a {carrot}, go to the market or just dig up one! Or did you come to bring me a {percht skull}?") diff --git a/data-otservbr-global/npc/fynn.lua b/data-otservbr-global/npc/fynn.lua index 5c8b5c17109..8fca759876f 100644 --- a/data-otservbr-global/npc/fynn.lua +++ b/data-otservbr-global/npc/fynn.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 116, lookFeet = 116, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/fyodor.lua b/data-otservbr-global/npc/fyodor.lua index 250159953d9..13a980b0995 100644 --- a/data-otservbr-global/npc/fyodor.lua +++ b/data-otservbr-global/npc/fyodor.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 60, lookFeet = 78, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,7 +55,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -66,7 +66,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gabel.lua b/data-otservbr-global/npc/gabel.lua index 0c6f79f41b4..0ff9c104a03 100644 --- a/data-otservbr-global/npc/gabel.lua +++ b/data-otservbr-global/npc/gabel.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 80 + lookType = 80, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,69 +54,71 @@ local function creatureSayCallback(npc, creature, type, message) end local missionProgress = player:getStorageValue(Storage.DjinnWar.MaridFaction.Mission03) - if MsgContains(message, 'mission') then + if MsgContains(message, "mission") then if player:getStorageValue(Storage.DjinnWar.MaridFaction.Mission02) ~= 2 then npcHandler:say({ - 'So you would like to fight for us, would you. Hmm. ...', - 'That is a noble resolution you have made there, human, but I\'m afraid I cannot accept your generous offer at this point of time. ...', - 'Do not get me wrong, but I am not the kind of guy to send an inexperienced soldier into certain death! So you might ask around here for a more suitable mission.' + "So you would like to fight for us, would you. Hmm. ...", + "That is a noble resolution you have made there, human, but I'm afraid I cannot accept your generous offer at this point of time. ...", + "Do not get me wrong, but I am not the kind of guy to send an inexperienced soldier into certain death! So you might ask around here for a more suitable mission.", }, npc, creature) elseif missionProgress < 1 then npcHandler:say({ - 'Sooo. Fa\'hradin has told me about your extraordinary exploit, and I must say I am impressed. ...', - 'Your fragile human form belies your courage and your fighting spirit. ...', - 'I hardly dare to ask you because you have already done so much for us, but there is a task to be done, and I cannot think of anybody else who would be better suited to fulfill it than you. ...', - 'Think carefully, human, for this mission will bring you into real danger. Are you prepared to do us that final favour?' + "Sooo. Fa'hradin has told me about your extraordinary exploit, and I must say I am impressed. ...", + "Your fragile human form belies your courage and your fighting spirit. ...", + "I hardly dare to ask you because you have already done so much for us, but there is a task to be done, and I cannot think of anybody else who would be better suited to fulfill it than you. ...", + "Think carefully, human, for this mission will bring you into real danger. Are you prepared to do us that final favour?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif missionProgress == 1 then - npcHandler:say('You haven\'t finished your final mission yet. Shall I explain it again to you?', npc, creature) + npcHandler:say("You haven't finished your final mission yet. Shall I explain it again to you?", npc, creature) npcHandler:setTopic(playerId, 1) elseif missionProgress == 2 then - npcHandler:say('Have you found Fa\'hradin\'s lamp and placed it in Malor\'s personal chambers?', npc, creature) + npcHandler:say("Have you found Fa'hradin's lamp and placed it in Malor's personal chambers?", npc, creature) npcHandler:setTopic(playerId, 2) else - npcHandler:say('There\'s no mission left for you, friend of the Marid. However, I have a task for you.', npc, creature) + npcHandler:say("There's no mission left for you, friend of the Marid. However, I have a task for you.", npc, creature) end elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then npcHandler:say({ - 'All right. Listen! Thanks to Rata\'mari\'s report we now know what Malor is up to: he wants to do to me what I have done to him - he wants to imprison me in Fa\'hradin\'s lamp! ...', - 'Of course, that won\'t happen. Now, we know his plans. ...', - 'But I am aiming at something different. We have learnt one important thing: At this point of time, Malor does not have the lamp yet, which means it is still where he left it. We need that lamp! If we get it back we can imprison him again! ...', - 'From all we know the lamp is still in the Orc King\'s possession! Therefore I want to ask you to enter thewell guarded halls over at Ulderek\'s Rock and find the lamp. ...', - 'Once you have acquired the lamp you must enter Mal\'ouquah again. Sneak into Malor\'s personal chambersand exchange his sleeping lamp with Fa\'hradin\'s lamp! ...', - 'If you succeed, the war could be over one night later! I and all djinn will be in your debt forever! May Daraman watch over you!' + "All right. Listen! Thanks to Rata'mari's report we now know what Malor is up to: he wants to do to me what I have done to him - he wants to imprison me in Fa'hradin's lamp! ...", + "Of course, that won't happen. Now, we know his plans. ...", + "But I am aiming at something different. We have learnt one important thing: At this point of time, Malor does not have the lamp yet, which means it is still where he left it. We need that lamp! If we get it back we can imprison him again! ...", + "From all we know the lamp is still in the Orc King's possession! Therefore I want to ask you to enter thewell guarded halls over at Ulderek's Rock and find the lamp. ...", + "Once you have acquired the lamp you must enter Mal'ouquah again. Sneak into Malor's personal chambersand exchange his sleeping lamp with Fa'hradin's lamp! ...", + "If you succeed, the war could be over one night later! I and all djinn will be in your debt forever! May Daraman watch over you!", }, npc, creature) player:setStorageValue(Storage.DjinnWar.MaridFaction.Mission03, 1) - elseif MsgContains(message, 'no') then - npcHandler:say('As you wish.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("As you wish.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then npcHandler:say({ - 'Daraman shall bless you and all humans! You have done us all a huge service! Soon, this awful war will be over! ...', - 'Know, that from now on you are considered one of us and are welcome to trade with Haroun and Nah\'bob whenever you want to!' + "Daraman shall bless you and all humans! You have done us all a huge service! Soon, this awful war will be over! ...", + "Know, that from now on you are considered one of us and are welcome to trade with Haroun and Nah'bob whenever you want to!", }, npc, creature) player:setStorageValue(Storage.DjinnWar.MaridFaction.Mission03, 3) player:setStorageValue(Storage.DjinnWar.MaridFaction.DoorToEfreetTerritory, 1) - player:addAchievement('Marid Ally') - elseif MsgContains(message, 'no') then - npcHandler:say('Don\'t give up! May Daraman watch over you!', npc, creature) + player:addAchievement("Marid Ally") + elseif MsgContains(message, "no") then + npcHandler:say("Don't give up! May Daraman watch over you!", npc, creature) end npcHandler:setTopic(playerId, 0) elseif MsgContains(message, "task") and player:getStorageValue(Storage.DjinnWar.MaridFaction.Mission03) == 3 then if player:getStorageValue(Storage.KillingInTheNameOf.GreenDjinnTask) < 0 or player:getStorageValue(Storage.KillingInTheNameOf.GreenDjinnTask) == 3 then npcHandler:say({ "You've proven to be an experienced soldier, human. Though I still hope the war to be over soon, the Efreet are still threatening our tower. ...", - "Thus we need your help in killing the green ones. If you kill 500 green djinns or Efreet for us, I'll reward you with bonus experience and some extra gold pieces. Do you agree?" }, npc, creature) + "Thus we need your help in killing the green ones. If you kill 500 green djinns or Efreet for us, I'll reward you with bonus experience and some extra gold pieces. Do you agree?", + }, npc, creature) npcHandler:setTopic(playerId, 3) elseif player:getStorageValue(Storage.KillingInTheNameOf.GreenDjinnTask) == 0 then if player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.GreenDjinnCount) >= 500 then npcHandler:say({ "You've done it, human! Daraman be praised! Take this for your efforts. ...", - "What's left to do now is seek out Merikh the Slaughterer, an especially cruel Efreet. He hides somewhere in Yalahar. I don't know if you can kill him, but you should at least try." }, npc, creature) + "What's left to do now is seek out Merikh the Slaughterer, an especially cruel Efreet. He hides somewhere in Yalahar. I don't know if you can kill him, but you should at least try.", + }, npc, creature) player:setStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.MerikhCount, 0) player:setStorageValue(Storage.KillingInTheNameOf.GreenDjinnTask, 1) else @@ -125,7 +127,8 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.KillingInTheNameOf.GreenDjinnTask) == 2 then npcHandler:say({ "So you've been there and faced Merikh the Slaughterer! Whether you killed him or not, I hope your presence at least scared him. He is so mighty that we can only hope to truly defeat him one day. ...", - "When you've recovered from your fight and would like to kill green djinns in our service again, just talk to me about that task." }, npc, creature) + "When you've recovered from your fight and would like to kill green djinns in our service again, just talk to me about that task.", + }, npc, creature) player:setStorageValue(Storage.KillingInTheNameOf.GreenDjinnTask, 3) player:addExperience(10000, true) player:addMoney(5000) diff --git a/data-otservbr-global/npc/gail.lua b/data-otservbr-global/npc/gail.lua index 730d94cbb90..5478419dc04 100644 --- a/data-otservbr-global/npc/gail.lua +++ b/data-otservbr-global/npc/gail.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 82, lookLegs = 71, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,8 +57,7 @@ local function greetCallback(npc, creature) if player:getStorageValue(Storage.Kilmaresh.First.Access) < 1 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) - and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then + elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 15) elseif player:getStorageValue(Storage.Kilmaresh.First.Mission) == 4 then @@ -77,7 +76,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "daughter") and player:getStorageValue(Storage.TheSecretLibrary.Peacock) == 1 then npcHandler:say({ "I always feared that I lost her. And yet, all those years, I still had a gleam of hope. I'm devastated to learn about her fate - but at least I have certainty now. Thank you for telling me." }, npc, creature) player:setStorageValue(Storage.TheSecretLibrary.Peacock, 2) @@ -88,7 +86,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) npcHandler:setCallback(CALLBACK_GREET, greetCallback) @@ -148,7 +146,7 @@ npcConfig.shop = { { itemName = "violet crystal shard", clientId = 16120, sell = 1500 }, { itemName = "wedding ring", clientId = 3004, buy = 990 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -159,7 +157,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/galuna.lua b/data-otservbr-global/npc/galuna.lua index 53a72d448e8..0defc491aee 100644 --- a/data-otservbr-global/npc/galuna.lua +++ b/data-otservbr-global/npc/galuna.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 96, lookLegs = 95, lookFeet = 96, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Bows, crossbows and ammunition on special sale today.' } + { text = "Bows, crossbows and ammunition on special sale today." }, } local keywordHandler = KeywordHandler:new() @@ -70,7 +70,7 @@ npcConfig.shop = { { itemName = "crossbow", clientId = 3349, buy = 500 }, { itemName = "quiver", clientId = 35562, buy = 400 }, { itemName = "red quiver", clientId = 35849, buy = 400 }, - { itemName = "spear", clientId = 3277, buy = 10 } + { itemName = "spear", clientId = 3277, buy = 10 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -81,7 +81,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gamel.lua b/data-otservbr-global/npc/gamel.lua index 6776a0f9d8f..8917fc23083 100644 --- a/data-otservbr-global/npc/gamel.lua +++ b/data-otservbr-global/npc/gamel.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 115, lookLegs = 115, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Pssst!' } + { text = "Pssst!" }, } local keywordHandler = KeywordHandler:new() @@ -81,7 +81,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "letter") then if player:getStorageValue(Storage.SecretService.AVINMission01) == 2 then npcHandler:say("You have a letter for me?", npc, creature) @@ -156,7 +155,7 @@ npcConfig.shop = { { itemName = "throwing knife", clientId = 3298, buy = 25 }, { itemName = "two handed sword", clientId = 3265, buy = 950 }, { itemName = "viking helmet", clientId = 3367, buy = 265 }, - { itemName = "war hammer", clientId = 3279, buy = 10000 } + { itemName = "war hammer", clientId = 3279, buy = 10000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -167,7 +166,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gamon.lua b/data-otservbr-global/npc/gamon.lua index c208d6259f3..7db22eea054 100644 --- a/data-otservbr-global/npc/gamon.lua +++ b/data-otservbr-global/npc/gamon.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 58, lookLegs = 67, lookFeet = 120, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Any time\'s a good time to buy some furniture!' } + { text = "Any time's a good time to buy some furniture!" }, } local keywordHandler = KeywordHandler:new() @@ -57,26 +57,25 @@ npcType.onCloseChannel = function(npc, creature) end -- Wooden Stake -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Making a stake from a chair? Are you insane??! I won\'t waste my chairs on you for free! You will have to pay for it, but since I consider your plan a blasphemy, it will cost 5000 gold pieces. Okay?' }, - function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) ~= -1 end -) +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Making a stake from a chair? Are you insane??! I won't waste my chairs on you for free! You will have to pay for it, but since I consider your plan a blasphemy, it will cost 5000 gold pieces. Okay?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) ~= -1 +end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Argh... my heart aches! Alright... a promise is a promise. Here - take this wooden stake, and now get lost.', ungreet = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 5000 end, - function(player) - player:removeMoneyBank(5000) - player:addItem(5941, 1) - end -) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Argh... my heart aches! Alright... a promise is a promise. Here - take this wooden stake, and now get lost.", ungreet = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 5000 +end, function(player) + player:removeMoneyBank(5000) + player:addItem(5941, 1) +end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'You can\'t even pay for that.', reset = true }) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Phew. No chair-killing.', reset = true }) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "You can't even pay for that.", reset = true }) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Phew. No chair-killing.", reset = true }) -- Others -npcHandler:setMessage(MESSAGE_GREET, 'Nice to meet you, Mister |PLAYERNAME|! Looking for furniture? You\'ve come to the right place!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'You\'ll come back. They all do.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye.') -npcHandler:setMessage(MESSAGE_SENDTRADE, 'Have a look. Most furniture comes in handy kits. Just use them in your house to assemble the furniture. Do you want to see only a certain type of furniture?') +npcHandler:setMessage(MESSAGE_GREET, "Nice to meet you, Mister |PLAYERNAME|! Looking for furniture? You've come to the right place!") +npcHandler:setMessage(MESSAGE_FAREWELL, "You'll come back. They all do.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") +npcHandler:setMessage(MESSAGE_SENDTRADE, "Have a look. Most furniture comes in handy kits. Just use them in your house to assemble the furniture. Do you want to see only a certain type of furniture?") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -173,7 +172,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -184,7 +183,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/garamond.lua b/data-otservbr-global/npc/garamond.lua index 4053b051b6b..0b6fd5334e3 100644 --- a/data-otservbr-global/npc/garamond.lua +++ b/data-otservbr-global/npc/garamond.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 109, lookFeet = 107, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,373 +51,295 @@ npcType.onCloseChannel = function(npc, creature) end -- spells for druid and sorcerer -keywordHandler:addSpellKeyword({ "findperson" }, - { - npcHandler = npcHandler, - spellName = "Find Person", - price = 0, - level = 8, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "apprenticesstrike" }, - { - npcHandler = npcHandler, - spellName = "Apprentice's Strike", - price = 0, - level = 8, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "lighthealing" }, - { - npcHandler = npcHandler, - spellName = "Light Healing", - price = 0, - level = 8, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "light" }, - { - npcHandler = npcHandler, - spellName = "Light", - price = 0, - level = 8, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "magicrope" }, - { - npcHandler = npcHandler, - spellName = "Magic Rope", - price = 0, - level = 9, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "curepoison" }, - { - npcHandler = npcHandler, - spellName = "Cure Poison", - price = 0, - level = 10, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "energystrike" }, - { - npcHandler = npcHandler, - spellName = "Energy Strike", - price = 0, - level = 12, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "levitate" }, - { - npcHandler = npcHandler, - spellName = "Levitate", - price = 0, - level = 12, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "greatlight" }, - { - npcHandler = npcHandler, - spellName = "Great Light", - price = 0, - level = 13, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "terrastrike" }, - { - npcHandler = npcHandler, - spellName = "Terra Strike", - price = 0, - level = 13, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "haste" }, - { - npcHandler = npcHandler, - spellName = "Haste", - price = 0, - level = 14, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "flamestrike" }, - { - npcHandler = npcHandler, - spellName = "Flame Strike", - price = 0, - level = 14, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "icestrike" }, - { - npcHandler = npcHandler, - spellName = "Ice Strike", - price = 0, - level = 15, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "poisonfield" }, - { - npcHandler = npcHandler, - spellName = "Poison Field", - price = 0, - level = 14, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "firefield" }, - { - npcHandler = npcHandler, - spellName = "Fire Field", - price = 0, - level = 15, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "lightmagicmissile" }, - { - npcHandler = npcHandler, - spellName = "Light Magic Missile", - price = 0, - level = 15, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) -keywordHandler:addSpellKeyword({ "energyfield" }, - { - npcHandler = npcHandler, - spellName = "Energy Field", - price = 0, - level = 18, - vocation = { - VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID - } - } -) +keywordHandler:addSpellKeyword({ "findperson" }, { + npcHandler = npcHandler, + spellName = "Find Person", + price = 0, + level = 8, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "apprenticesstrike" }, { + npcHandler = npcHandler, + spellName = "Apprentice's Strike", + price = 0, + level = 8, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "lighthealing" }, { + npcHandler = npcHandler, + spellName = "Light Healing", + price = 0, + level = 8, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "light" }, { + npcHandler = npcHandler, + spellName = "Light", + price = 0, + level = 8, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "magicrope" }, { + npcHandler = npcHandler, + spellName = "Magic Rope", + price = 0, + level = 9, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "curepoison" }, { + npcHandler = npcHandler, + spellName = "Cure Poison", + price = 0, + level = 10, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "energystrike" }, { + npcHandler = npcHandler, + spellName = "Energy Strike", + price = 0, + level = 12, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "levitate" }, { + npcHandler = npcHandler, + spellName = "Levitate", + price = 0, + level = 12, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "greatlight" }, { + npcHandler = npcHandler, + spellName = "Great Light", + price = 0, + level = 13, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "terrastrike" }, { + npcHandler = npcHandler, + spellName = "Terra Strike", + price = 0, + level = 13, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "haste" }, { + npcHandler = npcHandler, + spellName = "Haste", + price = 0, + level = 14, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "flamestrike" }, { + npcHandler = npcHandler, + spellName = "Flame Strike", + price = 0, + level = 14, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "icestrike" }, { + npcHandler = npcHandler, + spellName = "Ice Strike", + price = 0, + level = 15, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "poisonfield" }, { + npcHandler = npcHandler, + spellName = "Poison Field", + price = 0, + level = 14, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "firefield" }, { + npcHandler = npcHandler, + spellName = "Fire Field", + price = 0, + level = 15, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "lightmagicmissile" }, { + npcHandler = npcHandler, + spellName = "Light Magic Missile", + price = 0, + level = 15, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) +keywordHandler:addSpellKeyword({ "energyfield" }, { + npcHandler = npcHandler, + spellName = "Energy Field", + price = 0, + level = 18, + vocation = { + VOCATION.BASE_ID.SORCERER, + VOCATION.BASE_ID.DRUID, + }, +}) -- spells for sorcerer -keywordHandler:addSpellKeyword({ "deathstrike" }, - { - npcHandler = npcHandler, - spellName = "Death Strike", - price = 0, - level = 16, - vocation = VOCATION.BASE_ID.SORCERER - } -) -keywordHandler:addSpellKeyword({ "firewave" }, - { - npcHandler = npcHandler, - spellName = "Fire Wave", - price = 0, - level = 18, - vocation = VOCATION.BASE_ID.SORCERER - } -) +keywordHandler:addSpellKeyword({ "deathstrike" }, { + npcHandler = npcHandler, + spellName = "Death Strike", + price = 0, + level = 16, + vocation = VOCATION.BASE_ID.SORCERER, +}) +keywordHandler:addSpellKeyword({ "firewave" }, { + npcHandler = npcHandler, + spellName = "Fire Wave", + price = 0, + level = 18, + vocation = VOCATION.BASE_ID.SORCERER, +}) -- spells for druid -keywordHandler:addSpellKeyword({ "icewave" }, - { - npcHandler = npcHandler, - spellName = "Ice Wave", - price = 0, - level = 18, - vocation = VOCATION.BASE_ID.DRUID - } -) -keywordHandler:addSpellKeyword({ "physicalstrike" }, - { - npcHandler = npcHandler, - spellName = "Physical Strike", - price = 0, - level = 16, - vocation = VOCATION.BASE_ID.DRUID - } -) -keywordHandler:addSpellKeyword({ "healfriend" }, - { - npcHandler = npcHandler, - spellName = "Heal Friend", - price = 0, - level = 18, - vocation = VOCATION.BASE_ID.DRUID - } -) +keywordHandler:addSpellKeyword({ "icewave" }, { + npcHandler = npcHandler, + spellName = "Ice Wave", + price = 0, + level = 18, + vocation = VOCATION.BASE_ID.DRUID, +}) +keywordHandler:addSpellKeyword({ "physicalstrike" }, { + npcHandler = npcHandler, + spellName = "Physical Strike", + price = 0, + level = 16, + vocation = VOCATION.BASE_ID.DRUID, +}) +keywordHandler:addSpellKeyword({ "healfriend" }, { + npcHandler = npcHandler, + spellName = "Heal Friend", + price = 0, + level = 18, + vocation = VOCATION.BASE_ID.DRUID, +}) -keywordHandler:addKeyword({ "healing spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Lighthealing}', '{Healfriend}', and '{Curepoison}'." - } -) -keywordHandler:addKeyword({ "support spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Findperson}', '{Magicrope}', '{Levitate}', '{Light}', \z - '{Greatlight}', '{Haste}', '{Poisonfield}', '{Firefield}', '{Lightmagicmissile}' and '{Energyfield}'." - } -) -keywordHandler:addKeyword({ "attack spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Deathstrike}', '{Firewave}', '{Apprenticesstrike}', '{Energystrike}', \z - '{Terrastrike}', '{Flamestrike}', '{Icestrike}', '{Physicalstrike}', '{Icewave}'." - } -) -keywordHandler:addKeyword({ "spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I can teach you {healing spells}, {support spells} and {attack spells}. \z - What kind of spell do you wish to learn?" - } -) +keywordHandler:addKeyword({ "healing spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Lighthealing}', '{Healfriend}', and '{Curepoison}'.", +}) +keywordHandler:addKeyword({ "support spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Findperson}', '{Magicrope}', '{Levitate}', '{Light}', \z + '{Greatlight}', '{Haste}', '{Poisonfield}', '{Firefield}', '{Lightmagicmissile}' and '{Energyfield}'.", +}) +keywordHandler:addKeyword({ "attack spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Deathstrike}', '{Firewave}', '{Apprenticesstrike}', '{Energystrike}', \z + '{Terrastrike}', '{Flamestrike}', '{Icestrike}', '{Physicalstrike}', '{Icewave}'.", +}) +keywordHandler:addKeyword({ "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can teach you {healing spells}, {support spells} and {attack spells}. \z + What kind of spell do you wish to learn?", +}) -keywordHandler:addKeyword({ "name" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I am Garamond Starstream." - } -) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Did you not listen? I am the teacher of druid and sorcerer spells for level 8 to 18. \z - I teach young adventurers spells they can use once they have the proper vocation - druid or sorcerer." - } -) -keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I have an old friend there. Haven't heard from him in a while." - } -) -keywordHandler:addKeyword({ "dawnport" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Oh, it's not too bad here, believe me. At least I always get young and enthusiast disciples! \z - Though I must confess I miss the vastness of the Tibian plains. " - } -) -keywordHandler:addKeyword({ "inigo" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A kind old hunter. He loves to see young life around, taking on the ways and lays of the land. \z - If you have any question, ask Inigo for help." - } -) -keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Roughened and toughened by life's tragedies. A good man, but somber." - } -) -keywordHandler:addKeyword({ "garamond" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Yes, child. If you wish to learn a spell, tell me." - } -) -keywordHandler:addKeyword({ "hamish" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A very headstrong young man, though I appreciate his devotion to the craft of potion-making. \z - No respect for senior authority or age at all! Except maybe for a little soft spot for Mr Morris." - } -) -keywordHandler:addKeyword({ "mr morris" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A strange young man. He seems driven, to my mind. By what force, I do not know. \z - I take it the world needs adventurers such as him." - } -) -keywordHandler:addKeyword({ "plunderpurse" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Redeeming one's soul by becoming a clerk? Not very likely. Once a pirate, always a pirate. \z - But he's a charming old rogue." - } -) -keywordHandler:addKeyword({ "richard" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Not a half bad cook, truly. Must have been that squirrel diet, it seems to have lead him to \z - discover a new cuisine - everything to forget the bad taste of squirrels, he said." - } -) -keywordHandler:addKeyword({ "ser tybald" }, StdModule.say, - { - npcHandler = npcHandler, - text = "He is proficient in the martial arts. A very skilled teacher of spells for knights and paladins. \z - If that is your vocation, you should talk to Ser Tybald." - } -) -keywordHandler:addKeyword({ "wentworth" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ah, yes. Travelled with Plunderpurse a lot as I recall. Captain Plunderpurse, then. \z - Got his head full of numbers and statistics, that boy." - } -) +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "I am Garamond Starstream.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "Did you not listen? I am the teacher of druid and sorcerer spells for level 8 to 18. \z + I teach young adventurers spells they can use once they have the proper vocation - druid or sorcerer.", +}) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { + npcHandler = npcHandler, + text = "I have an old friend there. Haven't heard from him in a while.", +}) +keywordHandler:addKeyword({ "dawnport" }, StdModule.say, { + npcHandler = npcHandler, + text = "Oh, it's not too bad here, believe me. At least I always get young and enthusiast disciples! \z + Though I must confess I miss the vastness of the Tibian plains. ", +}) +keywordHandler:addKeyword({ "inigo" }, StdModule.say, { + npcHandler = npcHandler, + text = "A kind old hunter. He loves to see young life around, taking on the ways and lays of the land. \z + If you have any question, ask Inigo for help.", +}) +keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, { + npcHandler = npcHandler, + text = "Roughened and toughened by life's tragedies. A good man, but somber.", +}) +keywordHandler:addKeyword({ "garamond" }, StdModule.say, { + npcHandler = npcHandler, + text = "Yes, child. If you wish to learn a spell, tell me.", +}) +keywordHandler:addKeyword({ "hamish" }, StdModule.say, { + npcHandler = npcHandler, + text = "A very headstrong young man, though I appreciate his devotion to the craft of potion-making. \z + No respect for senior authority or age at all! Except maybe for a little soft spot for Mr Morris.", +}) +keywordHandler:addKeyword({ "mr morris" }, StdModule.say, { + npcHandler = npcHandler, + text = "A strange young man. He seems driven, to my mind. By what force, I do not know. \z + I take it the world needs adventurers such as him.", +}) +keywordHandler:addKeyword({ "plunderpurse" }, StdModule.say, { + npcHandler = npcHandler, + text = "Redeeming one's soul by becoming a clerk? Not very likely. Once a pirate, always a pirate. \z + But he's a charming old rogue.", +}) +keywordHandler:addKeyword({ "richard" }, StdModule.say, { + npcHandler = npcHandler, + text = "Not a half bad cook, truly. Must have been that squirrel diet, it seems to have lead him to \z + discover a new cuisine - everything to forget the bad taste of squirrels, he said.", +}) +keywordHandler:addKeyword({ "ser tybald" }, StdModule.say, { + npcHandler = npcHandler, + text = "He is proficient in the martial arts. A very skilled teacher of spells for knights and paladins. \z + If that is your vocation, you should talk to Ser Tybald.", +}) +keywordHandler:addKeyword({ "wentworth" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ah, yes. Travelled with Plunderpurse a lot as I recall. Captain Plunderpurse, then. \z + Got his head full of numbers and statistics, that boy.", +}) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -428,63 +350,56 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "magic") then - npcHandler:say( - { - "Spells are very useful in combat - not only for mages, though of course we particularly \z + npcHandler:say({ + "Spells are very useful in combat - not only for mages, though of course we particularly \z rely on them for much of our damage output. ...", - "There's a broad variety of what spells can do, as you will see as you progress further. \z + "There's a broad variety of what spells can do, as you will see as you progress further. \z The next spells you can buy with level 8 and on. ...", - "Some attack spells can be directed at a single target while others affect an area, having \z + "Some attack spells can be directed at a single target while others affect an area, having \z an effect either over time or instantaneous. Even other spells protect you, or can be used to create runes. ...", - "Each vocation has its own individual spells that none of the other vocations can use. \z + "Each vocation has its own individual spells that none of the other vocations can use. \z You can only learn spells at a spell trainer of your vocation. ...", - "The spells here on Dawnport are for trying out only, and you will forget them once \z + "The spells here on Dawnport are for trying out only, and you will forget them once \z you choose your definite vocation and leave for the Mainland. ...", - "There, you can go to a spell teacher in a city to permanently learn a spell." - }, - creature) + "There, you can go to a spell teacher in a city to permanently learn a spell.", + }, creature) elseif MsgContains(message, "mainland") then - npcHandler:say( - { - "The Mainland offers many more adventures, dangers and quests than this small isle, \z + npcHandler:say({ + "The Mainland offers many more adventures, dangers and quests than this small isle, \z and also has spell teachers where you can permanently learn a spell for your vocation. ...", - "Once you reach level 8 you may choose your definite vocation and leave for Main. Go to a city \z + "Once you reach level 8 you may choose your definite vocation and leave for Main. Go to a city \z and seek out the spell trainer of your vocation to learn a spell. And make sure you have enough gold! ...", - "The art of spell teaching is complex and dangerous, and we will only impart our valuable \z - knowledge of a spell to a novice if they can pay the price." - }, - creature) + "The art of spell teaching is complex and dangerous, and we will only impart our valuable \z + knowledge of a spell to a novice if they can pay the price.", + }, creature) elseif MsgContains(message, "tibian") then - npcHandler:say( - { - "Ah, the beauty of our world! It is vast and extraordinarily diverse. Strange islands, beautiful cities \z + npcHandler:say({ + "Ah, the beauty of our world! It is vast and extraordinarily diverse. Strange islands, beautiful cities \z and fierce monsters that roam the wildernesses. Mysteries, adventures, danger around every corner. ...", - "Once you have reached level 8, you are ready to choose a vocation and go to the Tibian Mainland." - }, - creature) + "Once you have reached level 8, you are ready to choose a vocation and go to the Tibian Mainland.", + }, creature) elseif MsgContains(message, "vocation") then - npcHandler:say( - { - "Your choice of vocation will determine your life in Tibia, and the skills and fighting techniques you may use. ...", - "There are four vocation: knight, druid, paladin and sorcerer. If you want to know more about them, \z + npcHandler:say({ + "Your choice of vocation will determine your life in Tibia, and the skills and fighting techniques you may use. ...", + "There are four vocation: knight, druid, paladin and sorcerer. If you want to know more about them, \z talk to Oressa in the temple. ...", - "I myself teach try-out spells for both the magical classes, \z - whereas Tybald in the next room specialises in knight and paladin spells." - }, - creature) + "I myself teach try-out spells for both the magical classes, \z + whereas Tybald in the next room specialises in knight and paladin spells.", + }, creature) elseif MsgContains(message, "oressa") then - npcHandler:say( - { - "A very intelligent girl. Prefers to listen to wild animals' noises instead of humans', \z + npcHandler:say({ + "A very intelligent girl. Prefers to listen to wild animals' noises instead of humans', \z which is quite understandable when you think about it. ...", - "However, she's also a very apt healer and can give you advice on your choice of vocation." - }, - creature) + "However, she's also a very apt healer and can give you advice on your choice of vocation.", + }, creature) end end -npcHandler:setMessage(MESSAGE_GREET, "Welcome, child. Have you come to learn about {magic}? \z - Then you are in the right place. I can teach you many useful {spells}.") +npcHandler:setMessage( + MESSAGE_GREET, + "Welcome, child. Have you come to learn about {magic}? \z + Then you are in the right place. I can teach you many useful {spells}." +) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) -- npcType registering the npcConfig table diff --git a/data-otservbr-global/npc/gareth.lua b/data-otservbr-global/npc/gareth.lua index c68071e9938..d50f86f11ae 100644 --- a/data-otservbr-global/npc/gareth.lua +++ b/data-otservbr-global/npc/gareth.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 120, lookFeet = 38, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -83,8 +83,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 2) elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 2 then if (player:getMoney() + player:getBankBalance()) >= valor then - npcHandler:say({ "This is a very wise decision. You won't regret it. Congratulations! As your first task I like you to investigate the crime scene of a theft wich occurred last night. ...", - "A very varuable artefact has been stolen. I open the door for you. You can find the room on the same floor as we are right now." }, npc, creature) + npcHandler:say({ "This is a very wise decision. You won't regret it. Congratulations! As your first task I like you to investigate the crime scene of a theft wich occurred last night. ...", "A very varuable artefact has been stolen. I open the door for you. You can find the room on the same floor as we are right now." }, npc, creature) npcHandler:setTopic(playerId, 3) player:removeMoneyBank(valor) player:addItem(25689, 1) @@ -107,9 +106,11 @@ local function creatureSayCallback(npc, creature, type, message) -- Depois de ter pago o Iwar elseif MsgContains(message, "mission") and player:getStorageValue(Storage.CultsOfTibia.MotA.Mission) == 5 then - npcHandler:say({ "Nice! I'm really happy to have the picture back. First of all I have to check if everything's fine. Then I'll put it back on its place. For now, I'd like you to find out if some rumours about fake pictures in the MOTA are true. ...", + npcHandler:say({ + "Nice! I'm really happy to have the picture back. First of all I have to check if everything's fine. Then I'll put it back on its place. For now, I'd like you to find out if some rumours about fake pictures in the MOTA are true. ...", "Some say one of the small pictures in the entrance hall here is fake. For this reason you have to go to my friend {Angelo} and ask him to get a {magnifier} for the investigation.", - "Then do your job here in the museum and come back." }, npc, creature) + "Then do your job here in the museum and come back.", + }, npc, creature) player:setStorageValue(Storage.CultsOfTibia.MotA.Mission, 6) npcHandler:setTopic(playerId, 1) @@ -118,8 +119,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "So the rumours are true. How could this happen? I'll keep the picture at its place until we've got a replacement. Please fo to {Angelo} and ask him if he has a new artefact for our museum." }, npc, creature) player:setStorageValue(Storage.CultsOfTibia.MotA.Mission, 10) elseif MsgContains(message, "mission") and player:getStorageValue(Storage.CultsOfTibia.MotA.Mission) == 11 then - npcHandler:say({ "You're back, nice. Angelo's team hasn't found an artefact yet? I thought the progress would be faster. Anyway thanks for you efforts. ...", - "I have no work for you right now. If you like to, you can have a look at the last floor. I open the door for you." }, npc, creature) + npcHandler:say({ "You're back, nice. Angelo's team hasn't found an artefact yet? I thought the progress would be faster. Anyway thanks for you efforts. ...", "I have no work for you right now. If you like to, you can have a look at the last floor. I open the door for you." }, npc, creature) player:setStorageValue(Storage.CultsOfTibia.MotA.Mission, 12) player:setStorageValue(Storage.CultsOfTibia.MotA.AccessDoorGareth, 1) @@ -136,8 +136,10 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "problem") and npcHandler:getTopic(playerId) == 11 then if npcHandler:getTopic(playerId) == 11 then - npcHandler:say({ "Well, the situation is this: We have explored a portal, I would say a very aggressive, capriciously and dangerous one. Through this gate monsters entered the construction site and attacked our workers. ...", - "With enormous effort they could have been dispersed. When my fellows tried to fill up the portal, it appeared again and again. So the only thing they could do was to stop working for the moment. Are you eventually interested in further investigations?" }, npc, creature) + npcHandler:say({ + "Well, the situation is this: We have explored a portal, I would say a very aggressive, capriciously and dangerous one. Through this gate monsters entered the construction site and attacked our workers. ...", + "With enormous effort they could have been dispersed. When my fellows tried to fill up the portal, it appeared again and again. So the only thing they could do was to stop working for the moment. Are you eventually interested in further investigations?", + }, npc, creature) npcHandler:setTopic(playerId, 12) end elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 12 then @@ -150,16 +152,17 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "bone") and player:getStorageValue(Storage.TheSecretLibrary.Mota) == 2 then - npcHandler:say({ "Hmm, interesting. Several years ago I have read some books dealing with strange locking mechanisms. I think what you have found here is a bone lever of category 3. ...", - "Normally this is not used because it is not secure. The production failed and the lever can always be activated as follows: back, back, up, right, left. Just have a try, it should work." }, npc, creature) + npcHandler:say({ "Hmm, interesting. Several years ago I have read some books dealing with strange locking mechanisms. I think what you have found here is a bone lever of category 3. ...", "Normally this is not used because it is not secure. The production failed and the lever can always be activated as follows: back, back, up, right, left. Just have a try, it should work." }, npc, creature) player:setStorageValue(Storage.TheSecretLibrary.Mota, 3) npcHandler:setTopic(playerId, 14) end if MsgContains(message, "extension") and player:getStorageValue(Storage.TheSecretLibrary.Mota) == 11 then - npcHandler:say({ "You have found an inscription I would like to translate for you. The tibianus cipher was used: ...", - "Those who are accorded the honour to visit this exclusive place will smash their blindness and face the truth. ...", - "Astonishingly, Dedoras from Cormaya has recently asked me for these kinds of inscriptions. For sure he is able to bring light into the darkness. You should visit him. " }, npc, creature) + npcHandler:say( + { "You have found an inscription I would like to translate for you. The tibianus cipher was used: ...", "Those who are accorded the honour to visit this exclusive place will smash their blindness and face the truth. ...", "Astonishingly, Dedoras from Cormaya has recently asked me for these kinds of inscriptions. For sure he is able to bring light into the darkness. You should visit him. " }, + npc, + creature + ) player:setStorageValue(Storage.TheSecretLibrary.Mota, 12) player:setStorageValue(Storage.TheSecretLibrary.TheLament, 1) npcHandler:setTopic(playerId, 15) @@ -167,7 +170,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/gate_guardian.lua b/data-otservbr-global/npc/gate_guardian.lua index 2124412e13c..026db634934 100644 --- a/data-otservbr-global/npc/gate_guardian.lua +++ b/data-otservbr-global/npc/gate_guardian.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 334 + lookType = 334, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/gederas.lua b/data-otservbr-global/npc/gederas.lua index 67b0f3372fc..9aafe6730a4 100644 --- a/data-otservbr-global/npc/gederas.lua +++ b/data-otservbr-global/npc/gederas.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 21, lookFeet = 20, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/gelagos.lua b/data-otservbr-global/npc/gelagos.lua index 1457e33ebff..46ecf3d2828 100644 --- a/data-otservbr-global/npc/gelagos.lua +++ b/data-otservbr-global/npc/gelagos.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 91, lookLegs = 85, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,13 +50,13 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "Barbarians are stupid." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "Bronbronbronbronbron. Bronnnn!" }) -keywordHandler:addKeyword({ 'outfit' }, StdModule.say, { npcHandler = npcHandler, text = "Can I have free outfits?" }) -keywordHandler:addKeyword({ 'gelagos' }, StdModule.say, { npcHandler = npcHandler, text = "That's me." }) -keywordHandler:addKeyword({ 'brother' }, StdModule.say, { npcHandler = npcHandler, text = "Ajax is even more stupid." }) -keywordHandler:addKeyword({ 'savage' }, StdModule.say, { npcHandler = npcHandler, text = "You are as stupid as Bron." }) -keywordHandler:addKeyword({ 'cyclops' }, StdModule.say, { npcHandler = npcHandler, text = "Any cyclops is smarter than Bron." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Barbarians are stupid." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Bronbronbronbronbron. Bronnnn!" }) +keywordHandler:addKeyword({ "outfit" }, StdModule.say, { npcHandler = npcHandler, text = "Can I have free outfits?" }) +keywordHandler:addKeyword({ "gelagos" }, StdModule.say, { npcHandler = npcHandler, text = "That's me." }) +keywordHandler:addKeyword({ "brother" }, StdModule.say, { npcHandler = npcHandler, text = "Ajax is even more stupid." }) +keywordHandler:addKeyword({ "savage" }, StdModule.say, { npcHandler = npcHandler, text = "You are as stupid as Bron." }) +keywordHandler:addKeyword({ "cyclops" }, StdModule.say, { npcHandler = npcHandler, text = "Any cyclops is smarter than Bron." }) npcHandler:setMessage(MESSAGE_GREET, "Hehehe.") npcHandler:setMessage(MESSAGE_FAREWELL, "Hope you die and lose it.") diff --git a/data-otservbr-global/npc/gelidrazahs_thirst.lua b/data-otservbr-global/npc/gelidrazahs_thirst.lua index 52379eb4ee9..a051dfb791e 100644 --- a/data-otservbr-global/npc/gelidrazahs_thirst.lua +++ b/data-otservbr-global/npc/gelidrazahs_thirst.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 100000 npcConfig.walkRadius = 0 npcConfig.outfit = { - lookTypeEx = 10031 + lookTypeEx = 10031, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,11 +54,10 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "There are three questions. First: What is the name of the princess who fell in love with a Thaian nobleman during the regency of pharaoh Uthemath? Second: Who is the author of the book ,The Language of the Wolves'? ...", - "Third: Which ancient Tibian race reportedly travelled the sky in cloud ships? Can you answer these questions?" + "Third: Which ancient Tibian race reportedly travelled the sky in cloud ships? Can you answer these questions?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 then @@ -75,7 +74,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.FirstDragon.GelidrazahAccess, 1) else - npcHandler:say('I don\'t know what you are talking about.', npc, creature) + npcHandler:say("I don't know what you are talking about.", npc, creature) end return true end diff --git a/data-otservbr-global/npc/george_the_boyscout.lua b/data-otservbr-global/npc/george_the_boyscout.lua index 3509b99932a..b01890538eb 100644 --- a/data-otservbr-global/npc/george_the_boyscout.lua +++ b/data-otservbr-global/npc/george_the_boyscout.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 59, lookBody = 21, lookLegs = 118, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/gerimor.lua b/data-otservbr-global/npc/gerimor.lua index 054f2a270a6..1c7d4c8443e 100644 --- a/data-otservbr-global/npc/gerimor.lua +++ b/data-otservbr-global/npc/gerimor.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 22, lookLegs = 24, lookFeet = 32, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,306 +55,257 @@ local function greetCallback(npc, creature) local playerId = player:getId() if player then - npcHandler:setMessage(MESSAGE_GREET, "Greeting, |PLAYERNAME|! I welcome you to this sacred {place}. \z - If you are interested in {missions} just ask.") + npcHandler:setMessage( + MESSAGE_GREET, + "Greeting, |PLAYERNAME|! I welcome you to this sacred {place}. \z + If you are interested in {missions} just ask." + ) end return true end -- Keywords -keywordHandler:addKeyword({ "place" }, StdModule.say, - { - npcHandler = npcHandler, - text = "This place is a sanctuary of Crunor and provides me with a opportunity of spiritual contemplation." - } -) - -keywordHandler:addKeyword({ "me" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "I'm a member of a circle of persons, that joined wisdom and resources for a common purpose. \z +keywordHandler:addKeyword({ "place" }, StdModule.say, { + npcHandler = npcHandler, + text = "This place is a sanctuary of Crunor and provides me with a opportunity of spiritual contemplation.", +}) + +keywordHandler:addKeyword({ "me" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "I'm a member of a circle of persons, that joined wisdom and resources for a common purpose. \z Let's say, we have an eye on the greater picture in the matters of our world. ...", - "We are watching and evaluating what is happening in our world. \z + "We are watching and evaluating what is happening in our world. \z Trying to avert the worst and offering a helping hand where we deem it needed. ...", - "We usually avoid to interfere directly in the affairs of the world and vain politics are not our concern at all." - } - } -) - -keywordHandler:addKeyword({ "circle" }, StdModule.say, - { - npcHandler = npcHandler, - text = "We focus our interest on this we see as threatening for live and the laws of nature itself." - } -) - -keywordHandler:addKeyword({ "persons" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Well, while I focus more on the matters of life, some of my peers have different approaches \z + "We usually avoid to interfere directly in the affairs of the world and vain politics are not our concern at all.", + }, +}) + +keywordHandler:addKeyword({ "circle" }, StdModule.say, { + npcHandler = npcHandler, + text = "We focus our interest on this we see as threatening for live and the laws of nature itself.", +}) + +keywordHandler:addKeyword({ "persons" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Well, while I focus more on the matters of life, some of my peers have different approaches \z and emphasize other aspects of the world more in their observations. ...", - "Regardless we share a common goal of balance and harmony." - } - } -) - -keywordHandler:addKeyword({ "approaches" }, StdModule.say, - { - npcHandler = npcHandler, - text = "We might not be many but we are diverse. \z - Our rather informal order came together in the dawn of time, when the wars of the gods ravaged the world." - } -) - -keywordHandler:addKeyword({ "dawn" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Even we know the individual that was somewhat of our funder, only as the wise man. ...", - "He was the first to bring bright and dedicated minds together, \z + "Regardless we share a common goal of balance and harmony.", + }, +}) + +keywordHandler:addKeyword({ "approaches" }, StdModule.say, { + npcHandler = npcHandler, + text = "We might not be many but we are diverse. \z + Our rather informal order came together in the dawn of time, when the wars of the gods ravaged the world.", +}) + +keywordHandler:addKeyword({ "dawn" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Even we know the individual that was somewhat of our funder, only as the wise man. ...", + "He was the first to bring bright and dedicated minds together, \z to bring at least a little order and guidance into troubled and chaotic times. ...", - "The order predates mankind and never bothered to give itself a name. \z - Such assumptions of pretence and vanity have no place in our mindset." - } - } -) - -keywordHandler:addKeyword({ "guidance" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Most times we are silent watchers and keeper of knowledge that share what they have learned with each other. \z + "The order predates mankind and never bothered to give itself a name. \z + Such assumptions of pretence and vanity have no place in our mindset.", + }, +}) + +keywordHandler:addKeyword({ "guidance" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Most times we are silent watchers and keeper of knowledge that share what they have learned with each other. \z We are more concerned about knowledge and wisdom and power means little to us. ...", - "To solve problems we usually try to convince the right people to do the right thing. \z - We usually even lack the means for a more direct interference." - } - } -) - -keywordHandler:addKeyword({ "direct" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Sometimes it's necessary to do something about a situation that became threatening to the world itself. ...", - "It is gladly a rare occurrence and usually it is sufficient to somewhat offer a guiding hand to \z - avert a course that would lead to more dire consequences. Nonetheless sometimes we have to interfere." - } - } -) - -keywordHandler:addKeyword({ "interfere" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Interference comes in different forms. \z - In this particular case there is sadly little time for subtlety and a more direct approach is necessary." - } -) - -keywordHandler:addKeyword({ "feyrist" }, StdModule.say, - { - npcHandler = npcHandler, - text = "The fae granted me permission to enter their hidden realm. \z + "To solve problems we usually try to convince the right people to do the right thing. \z + We usually even lack the means for a more direct interference.", + }, +}) + +keywordHandler:addKeyword({ "direct" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Sometimes it's necessary to do something about a situation that became threatening to the world itself. ...", + "It is gladly a rare occurrence and usually it is sufficient to somewhat offer a guiding hand to \z + avert a course that would lead to more dire consequences. Nonetheless sometimes we have to interfere.", + }, +}) + +keywordHandler:addKeyword({ "interfere" }, StdModule.say, { + npcHandler = npcHandler, + text = "Interference comes in different forms. \z + In this particular case there is sadly little time for subtlety and a more direct approach is necessary.", +}) + +keywordHandler:addKeyword({ "feyrist" }, StdModule.say, { + npcHandler = npcHandler, + text = "The fae granted me permission to enter their hidden realm. \z As a druid I'm in close touch with nature so I could gain their trust. \z - The nature spirits are inhabiting this peninsula for ages." - } -) - -keywordHandler:addKeyword({ "fae" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "The fae vary greatly in size and appearance. \z + The nature spirits are inhabiting this peninsula for ages.", +}) + +keywordHandler:addKeyword({ "fae" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "The fae vary greatly in size and appearance. \z There are different kinds of fae like fauns, pixies, pookas, swan maidens, nymphs and boogies. \z Those mystical creatures are wielding power in magic and elementals. ...", - "Most of them are rather reclusive and live peaceful lives in their secret realm. \z + "Most of them are rather reclusive and live peaceful lives in their secret realm. \z Sometimes they are called the 'children of dreams' or 'the dream born' \z - because the fae are born from the mortals' dreams." - } - } -) - -keywordHandler:addKeyword({ "fauns" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Fauns are half-human, half-beast nature spirits inhabiting the woods and mountains of Feyrist. \z + because the fae are born from the mortals' dreams.", + }, +}) + +keywordHandler:addKeyword({ "fauns" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Fauns are half-human, half-beast nature spirits inhabiting the woods and mountains of Feyrist. \z They are a slightly roguish but cheerful folk, lovers of wine and dancing. ...", - "Fauns show a youthful and graceful aspect but they are also brave and fearless \z + "Fauns show a youthful and graceful aspect but they are also brave and fearless \z when it comes to defend themselves. As Maelyrra told me, they emerge from mortals' \z dreams about celebrations, music and dancing. ...", - "Lately, some fauns on Feyrist are tainted by the mysterious, sinister force that is \z - threatening Feyrist as well as the rest of Tibia." - } - } -) - -keywordHandler:addKeyword({ "pixies" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Pixies are small nature spirits and mythical creatures inhabiting the forests and plains of Feyrist. \z + "Lately, some fauns on Feyrist are tainted by the mysterious, sinister force that is \z + threatening Feyrist as well as the rest of Tibia.", + }, +}) + +keywordHandler:addKeyword({ "pixies" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Pixies are small nature spirits and mythical creatures inhabiting the forests and plains of Feyrist. \z They are generally benign, but at times, they may also display mischievous traits. ...", - "Like most of the fae, pixies love dancing and are often gathering in larger groups \z + "Like most of the fae, pixies love dancing and are often gathering in larger groups \z to dance on secluded glades. Pixies love flowers, butterflies, shimmering beetles, \z gems and other colourful things. ...", - "They also love the taste of honey, sweetened oat and ripe grapes. \z - As Maelyrra told me, pixies emerge from mortals' dreams about friends and family." - } - } -) - -keywordHandler:addKeyword({ "pookas" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Pookas are nature spirits in animal form, looking like big hares with a faintly glittering fur. \z + "They also love the taste of honey, sweetened oat and ripe grapes. \z + As Maelyrra told me, pixies emerge from mortals' dreams about friends and family.", + }, +}) + +keywordHandler:addKeyword({ "pookas" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Pookas are nature spirits in animal form, looking like big hares with a faintly glittering fur. \z They are benign but mischievous, for sure with good reason regarded as the tricksters among the fae. ...", - "Pookas love to play pranks on others, snitching and hiding things or telling made-up stories. \z + "Pookas love to play pranks on others, snitching and hiding things or telling made-up stories. \z They are capricious and fickle creatures. \z Pookas emerge from mortals' dreams about gems, treasures and gold. ...", - "Lately, some pookas on Feyrist are tainted by a mysterious, sinister force that is \z - threatening Feyrist as well as the rest of Tibia." - } - } -) - -keywordHandler:addKeyword({ "swan maidens" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Swan maidens are fae who can shapeshift from human form to swan form. \z + "Lately, some pookas on Feyrist are tainted by a mysterious, sinister force that is \z + threatening Feyrist as well as the rest of Tibia.", + }, +}) + +keywordHandler:addKeyword({ "swan maidens" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Swan maidens are fae who can shapeshift from human form to swan form. \z The magical item allowing this transformation is a swan feather cloak, a garment with swan feathers attached. ...", - "Here on Feyrist it is always hard to tell whether a swan swimming on a lake \z + "Here on Feyrist it is always hard to tell whether a swan swimming on a lake \z is an ordinary animal or a swan maiden in her bird shape. ...", - "They protect the wilds of their secret realm from every intruder and live in small \z - flocks along secluded lakeshores. As Maelyrra told me, swan maidens emerge from mortals' dreams about flying." - } - } -) - -keywordHandler:addKeyword({ "nymphs" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Nymphs are female nature spirits and usually take the form of beautiful, \z + "They protect the wilds of their secret realm from every intruder and live in small \z + flocks along secluded lakeshores. As Maelyrra told me, swan maidens emerge from mortals' dreams about flying.", + }, +}) + +keywordHandler:addKeyword({ "nymphs" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Nymphs are female nature spirits and usually take the form of beautiful, \z young maidens who love to dance and sing. They dwell in the hills and forests of Feyrist, \z often near lakes and streams and they can't die of old age nor illness. ...", - "They have a special, strong bond to the plants and animals of their domain and are very \z - protective of Feyrist's flora and fauna. As Maelyrra told me, nymphs emerge from mortals' dreams about love." - } - } -) - -keywordHandler:addKeyword({ "boogies" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Boogies are a rather twisted kind of fae. Other than pixies, nymphs or fauns they favour \z + "They have a special, strong bond to the plants and animals of their domain and are very \z + protective of Feyrist's flora and fauna. As Maelyrra told me, nymphs emerge from mortals' dreams about love.", + }, +}) + +keywordHandler:addKeyword({ "boogies" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Boogies are a rather twisted kind of fae. Other than pixies, nymphs or fauns they favour \z underground caves and tunnels over forests or lush meadows. ...", - "Only at night, they are roaming the surface, chasing other fae and visitors to Feyrist alike. \z - They were once clumsy yet peaceful fae, but they are now twisted and tainted by a mysterious, sinister force." - } - } -) - -keywordHandler:addKeyword({ "maelyrra" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "She's the queen of a fae court. You can find her on a glade in the deep forest. \z + "Only at night, they are roaming the surface, chasing other fae and visitors to Feyrist alike. \z + They were once clumsy yet peaceful fae, but they are now twisted and tainted by a mysterious, sinister force.", + }, +}) + +keywordHandler:addKeyword({ "maelyrra" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "She's the queen of a fae court. You can find her on a glade in the deep forest. \z It was queen Maelyrra who granted me permission to stay here in Feyrist. ...", - "I promised to inform her about anything I find out about the abominable force that threatens this world." - } - } -) - -keywordHandler:addKeyword({ "fae court" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "The fae vary greatly in size and appearance. \z + "I promised to inform her about anything I find out about the abominable force that threatens this world.", + }, +}) + +keywordHandler:addKeyword({ "fae court" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "The fae vary greatly in size and appearance. \z There are different kinds of fae like fauns, pixies, pookas, swan maidens, nymphs and boogies. \z Those mystical creatures are wielding power in magic and elementals. ...", - "Most of them are rather reclusive and live peaceful lives in their secret realm. \z + "Most of them are rather reclusive and live peaceful lives in their secret realm. \z Sometimes they are called the ,children of dreams' or ,the dream born' \z - because the fae are born from the mortals' dreams." - } - } -) - -keywordHandler:addKeyword({ "cults" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "It doesn't seem that the cults share a common theme or object of reverence but there has to \z + because the fae are born from the mortals' dreams.", + }, +}) + +keywordHandler:addKeyword({ "cults" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "It doesn't seem that the cults share a common theme or object of reverence but there has to \z be some connection beyond being at the centre of culminations of disruptive power from beyond. ...", - "The connection is of second thought though. Connected or not, they further the death of our world. \z + "The connection is of second thought though. Connected or not, they further the death of our world. \z That alone makes it imperative to dig those cults out and destroy their cores. ...", - "We won't be able to rout our each and any movement but if we manage to neutralize the worst, \z - we gain some time and deny the enemy much of its leverage on the future of our world." - } - } -) - -keywordHandler:addKeyword({ "worst" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "We have located some of the worst culminations of otherworldly presence and our sources \z + "We won't be able to rout our each and any movement but if we manage to neutralize the worst, \z + we gain some time and deny the enemy much of its leverage on the future of our world.", + }, +}) + +keywordHandler:addKeyword({ "worst" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "We have located some of the worst culminations of otherworldly presence and our sources \z returned information about them with different results of success. ...", - "Some information I can provide you will be rather sparse and much is left to speculation \z - but you should have at least some lead where to go and investigate." - } - } -) - -keywordHandler:addKeyword({ "investigate" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Those cults have to be stopped by any means possible. \z - These are desperate times and they demand desperate actions." - } -) -keywordHandler:addKeyword({ "actions" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Spare lives where you see it fit but the cults may not be allowed to exist and disrupt \z - the fabric of the world even more." - } -) -keywordHandler:addKeyword({ "fabric" }, StdModule.say, - { - npcHandler = npcHandler, - text = "The weakened fabric of our reality still repels the unnatural intruder. The cults provide the \z - thing a hold and supply it with more power, even if we couldn't figure out yet, how this works at all." - } -) - -keywordHandler:addKeyword({ "works" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "We haven't completely figured out what our enemy exactly is. \z + "Some information I can provide you will be rather sparse and much is left to speculation \z + but you should have at least some lead where to go and investigate.", + }, +}) + +keywordHandler:addKeyword({ "investigate" }, StdModule.say, { + npcHandler = npcHandler, + text = "Those cults have to be stopped by any means possible. \z + These are desperate times and they demand desperate actions.", +}) +keywordHandler:addKeyword({ "actions" }, StdModule.say, { + npcHandler = npcHandler, + text = "Spare lives where you see it fit but the cults may not be allowed to exist and disrupt \z + the fabric of the world even more.", +}) +keywordHandler:addKeyword({ "fabric" }, StdModule.say, { + npcHandler = npcHandler, + text = "The weakened fabric of our reality still repels the unnatural intruder. The cults provide the \z + thing a hold and supply it with more power, even if we couldn't figure out yet, how this works at all.", +}) + +keywordHandler:addKeyword({ "works" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "We haven't completely figured out what our enemy exactly is. \z For one, this thing defies all laws of nature and comprehension, ...", - "that understanding it is either impossible or twist a mind in ways that are not meant to be. \z + "that understanding it is either impossible or twist a mind in ways that are not meant to be. \z Also the Yalahari who figured out way too much about the thing, became tainted and changed by this knowledge ...", - "And ultimately not only fell and became his, they also provided the thing with something of their own, \z + "And ultimately not only fell and became his, they also provided the thing with something of their own, \z be it knowledge, understanding or even direction, purpose. ...", - "In some way their tainted knowledge brought the unthinkable into a resemblance of existence. ...", - "That is why we cant dabble too much in figuring this out and rather concentrate on our \z - fight to severe its ties to our world." - } - } -) - -keywordHandler:addKeyword({ "ties" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I have several missions available that deal with servering the ties of the corrupting influence on our world." - } -) + "In some way their tainted knowledge brought the unthinkable into a resemblance of existence. ...", + "That is why we cant dabble too much in figuring this out and rather concentrate on our \z + fight to severe its ties to our world.", + }, +}) + +keywordHandler:addKeyword({ "ties" }, StdModule.say, { + npcHandler = npcHandler, + text = "I have several missions available that deal with servering the ties of the corrupting influence on our world.", +}) local config = { missions = { @@ -362,25 +313,24 @@ local config = { text = { "This is an animal-like cult. Only minotaurs can be found there, \z but no idea what there are expecting and what they are worshipping. ...", - "Maybe they are a bit different to the creatures you already know. Would you like to dinf out more for me?" + "Maybe they are a bit different to the creatures you already know. Would you like to dinf out more for me?", }, completeText = { - "Then you got it. Thank you. Here is your reward." + "Then you got it. Thank you. Here is your reward.", }, storage = Storage.CultsOfTibia.Minotaurs.Mission, value = 5, rewardExp = 25000, - }, ["prosperity"] = { text = { "The alleged incentive to follow this cult is infinite prosperity. \z Therefore most of the worshippers are already very rich citizens of Tibia. ...", "This cult is abandoned in the recently opened new museum in Thais. \z - This can be entered in the Thais exhibition. Would you like to have a look at this cult?" + This can be entered in the Thais exhibition. Would you like to have a look at this cult?", }, completeText = { - "Then you got it. Thank you. Here is your reward." + "Then you got it. Thank you. Here is your reward.", }, storage = Storage.CultsOfTibia.MotA.Mission, value = 14, @@ -390,10 +340,10 @@ local config = { text = { "However, recently they became more prominent as their leader seems to hava taken a turn for the worse. \z Rumors of violent acts and disappearing people are linked to this cult. ...", - "Someone... Should look into that, don't you think?" + "Someone... Should look into that, don't you think?", }, completeText = { - "Then you got it. Thank you. Here is your reward." + "Then you got it. Thank you. Here is your reward.", }, storage = Storage.CultsOfTibia.Barkless.Mission, value = 6, @@ -403,11 +353,11 @@ local config = { text = { "Several Edron orcs have taken to a dangerous idol it seems. \z It may not be too late to stop them if you act quickly. \z - A powerful cult of orcs with a broad following could prove unsurmountable in the end. ..." + A powerful cult of orcs with a broad following could prove unsurmountable in the end. ...", }, completeText = { "Then you got it. Thank you. Here is your reward.", - "Are you prepared to investigate?" + "Are you prepared to investigate?", }, storage = Storage.CultsOfTibia.Orcs.Mission, value = 2, @@ -416,25 +366,24 @@ local config = { ["life"] = { text = { "Its worshippers wish for eternal, life free of pain and sorrow. \z - The entrance to this cult can be found in the dark pyramid. Would you life to investigate it for me?" + The entrance to this cult can be found in the dark pyramid. Would you life to investigate it for me?", }, completeText = { - "Then you got it. Thank you. Here is your reward." + "Then you got it. Thank you. Here is your reward.", }, storage = Storage.CultsOfTibia.Life.Mission, value = 9, rewardExp = 50000, - }, ["misguided"] = { text = { "There's a camp of outlaws to the east of Thais. \z Rumour has it that people are going missing but it's not linked to the bandits. ...", "Lights have been seen at night in the abandoned ruin in the vicinity of the camp, \z - somewhere to the south-west. Brave enough to check it out?" + somewhere to the south-west. Brave enough to check it out?", }, completeText = { - "Then you got it. Thank you. Here is your reward." + "Then you got it. Thank you. Here is your reward.", }, storage = Storage.CultsOfTibia.Misguided.Mission, value = 4, @@ -445,16 +394,16 @@ local config = { "It's a forbidden and abandoned place but... There is an ancient temple of Zathroth beneath Carlin. \z Some say it's not that abandoned anymore. ...", "Voices, flickering lights in the dead of night, and even a strange gate like sphere wich leads to \z - who knows where. I can't really request this from you but... Someone should take a look, or not?" + who knows where. I can't really request this from you but... Someone should take a look, or not?", }, completeText = { - "Then you got it. Thank you. Here is your reward." + "Then you got it. Thank you. Here is your reward.", }, storage = Storage.CultsOfTibia.Humans.Mission, value = 2, rewardExp = 25000, - } - } + }, + }, } local storage = {} @@ -472,21 +421,31 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "missions") then -- Final boss check if player:getStorageValue(Storage.CultsOfTibia.FinalBoss.Mission) > 2 then - npcHandler:say("You have already fulfilled your job to my full satisfaction. \z + npcHandler:say( + "You have already fulfilled your job to my full satisfaction. \z The cults are investigated and the final boss is eliminated. \z - I have nothing more for you to do. Fare you well!", npc, creature) + I have nothing more for you to do. Fare you well!", + npc, + creature + ) npcHandler:setTopic(playerId, 0) - elseif player:getStorageValue(Storage.CultsOfTibia.Minotaurs.Mission) == 6 - and player:getStorageValue(Storage.CultsOfTibia.Life.Mission) == 10 - and player:getStorageValue(Storage.CultsOfTibia.MotA.Mission) == 15 - and player:getStorageValue(Storage.CultsOfTibia.Barkless.Mission) == 7 - and player:getStorageValue(Storage.CultsOfTibia.Misguided.Mission) == 5 - and player:getStorageValue(Storage.CultsOfTibia.Orcs.Mission) == 3 - and player:getStorageValue(Storage.CultsOfTibia.Humans.Mission) == 3 - and player:getStorageValue(Storage.CultsOfTibia.FinalBoss.Mission) < 2 then - npcHandler:say("It seems to me that you have done all the missions I gave you. \z + elseif + player:getStorageValue(Storage.CultsOfTibia.Minotaurs.Mission) == 6 + and player:getStorageValue(Storage.CultsOfTibia.Life.Mission) == 10 + and player:getStorageValue(Storage.CultsOfTibia.MotA.Mission) == 15 + and player:getStorageValue(Storage.CultsOfTibia.Barkless.Mission) == 7 + and player:getStorageValue(Storage.CultsOfTibia.Misguided.Mission) == 5 + and player:getStorageValue(Storage.CultsOfTibia.Orcs.Mission) == 3 + and player:getStorageValue(Storage.CultsOfTibia.Humans.Mission) == 3 + and player:getStorageValue(Storage.CultsOfTibia.FinalBoss.Mission) < 2 + then + npcHandler:say( + "It seems to me that you have done all the missions I gave you. \z All the cults have been revealed and now you can kill their leader, the final boss, \z - to save the world from a possible catastrophe.", npc, creature) + to save the world from a possible catastrophe.", + npc, + creature + ) npcHandler:setTopic(playerId, 0) if player:getStorageValue(Storage.CultsOfTibia.FinalBoss.Mission) < 1 then player:setStorageValue(Storage.CultsOfTibia.FinalBoss.Mission, 1) @@ -519,9 +478,13 @@ local function creatureSayCallback(npc, creature, type, message) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You gained a mystery box.") player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You gained a " .. item .. ".") else - npcHandler:say("In wich of the following topics are you interested in? Cult of {Life}, \z + npcHandler:say( + "In wich of the following topics are you interested in? Cult of {Life}, \z Cult of {Prosperity}, Cult of the {Minotaurs}, Cult of the {Barkless}, Cult of the {Misguided}, \z - Cult of {Orcs} or Cult of the {Humans}?", npc, creature) + Cult of {Orcs} or Cult of the {Humans}?", + npc, + creature + ) npcHandler:setTopic(playerId, 2) end -- General diff --git a/data-otservbr-global/npc/gewen.lua b/data-otservbr-global/npc/gewen.lua index 15013a0c754..5c41ad28cb6 100644 --- a/data-otservbr-global/npc/gewen.lua +++ b/data-otservbr-global/npc/gewen.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 86, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Nothing beats the feeling of flying with a carpet!' } + { text = "Nothing beats the feeling of flying with a carpet!" }, } local keywordHandler = KeywordHandler:new() @@ -64,25 +64,25 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'ticket') then + if MsgContains(message, "ticket") then if player:getStorageValue(Storage.WagonTicket) >= os.time() then - npcHandler:say('Your weekly ticket is still valid. Would be a waste of money to purchase a second one', npc, creature) + npcHandler:say("Your weekly ticket is still valid. Would be a waste of money to purchase a second one", npc, creature) return true end - npcHandler:say('Do you want to purchase a weekly ticket for the ore wagons? With it you can travel freely and swiftly through Kazordoon for one week. 250 gold only. Deal?', npc, creature) + npcHandler:say("Do you want to purchase a weekly ticket for the ore wagons? With it you can travel freely and swiftly through Kazordoon for one week. 250 gold only. Deal?", npc, creature) npcHandler:setTopic(playerId, 1) elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not player:removeMoneyBank(250) then - npcHandler:say('You don\'t have enough money.', npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) return true end player:setStorageValue(Storage.WagonTicket, os.time() + 7 * 24 * 60 * 60) - npcHandler:say('Here is your stamp. It can\'t be transferred to another person and will last one week from now. You\'ll get notified upon using an ore wagon when it isn\'t valid anymore.', npc, creature) - elseif MsgContains(message, 'no') then - npcHandler:say('No then.', npc, creature) + npcHandler:say("Here is your stamp. It can't be transferred to another person and will last one week from now. You'll get notified upon using an ore wagon when it isn't valid anymore.", npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("No then.", npc, creature) end npcHandler:setTopic(playerId, 0) end @@ -93,25 +93,29 @@ end local TheNewFrontier = Storage.Quest.U8_54.TheNewFrontier local function addTravelKeyword(keyword, text, cost, destination, condition, action) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Never heard about a place like this.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Never heard about a place like this." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a ride to ' .. text .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = 'Hold on!', cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'You shouldn\'t miss the experience.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a ride to " .. text .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = "Hold on!", cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) end -addTravelKeyword('farmine', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('zao', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('darashia', 'Darashia on Darama', 40, Position(33270, 32441, 6)) -addTravelKeyword('svargrond', 'Svargrond', 60, Position(32253, 31097, 4)) -addTravelKeyword('femor hills', 'the Femor Hills', 60, Position(32536, 31837, 4)) -addTravelKeyword('edron', 'Edron', 40, Position(33193, 31784, 3)) -addTravelKeyword('hills', 'the Femor Hills', 60, Position(32536, 31837, 4)) -addTravelKeyword('issavi', 'Issavi', 100, Position(33957, 31515, 0)) -addTravelKeyword('marapur', 'Marapur', 70, Position(33805, 32767, 2)) - -keywordHandler:addKeyword({ 'fly' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, {Svargrond}, {Edron}, {Issavi}, {Zao}, {Femor Hills} or to {Marapur} if you like. Where do you want to go?' }) +addTravelKeyword("farmine", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("zao", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("darashia", "Darashia on Darama", 40, Position(33270, 32441, 6)) +addTravelKeyword("svargrond", "Svargrond", 60, Position(32253, 31097, 4)) +addTravelKeyword("femor hills", "the Femor Hills", 60, Position(32536, 31837, 4)) +addTravelKeyword("edron", "Edron", 40, Position(33193, 31784, 3)) +addTravelKeyword("hills", "the Femor Hills", 60, Position(32536, 31837, 4)) +addTravelKeyword("issavi", "Issavi", 100, Position(33957, 31515, 0)) +addTravelKeyword("marapur", "Marapur", 70, Position(33805, 32767, 2)) + +keywordHandler:addKeyword({ "fly" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, {Svargrond}, {Edron}, {Issavi}, {Zao}, {Femor Hills} or to {Marapur} if you like. Where do you want to go?" }) npcHandler:setMessage(MESSAGE_GREET, "Greetings, traveller |PLAYERNAME|. Where do you want me to {fly} you? Or do you need a weekly ticket for the Kazordoon public lorry transport?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye!") diff --git a/data-otservbr-global/npc/ghorza.lua b/data-otservbr-global/npc/ghorza.lua index 6f408ec8aff..fcd7f2949af 100644 --- a/data-otservbr-global/npc/ghorza.lua +++ b/data-otservbr-global/npc/ghorza.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -97,7 +97,7 @@ npcConfig.shop = { { itemName = "ultimate mana potion", clientId = 23373, buy = 438 }, { itemName = "ultimate spirit potion", clientId = 23374, buy = 438 }, { itemName = "vial", clientId = 2874, sell = 5 }, - { itemName = "wild growth rune", clientId = 3156, buy = 160 } + { itemName = "wild growth rune", clientId = 3156, buy = 160 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -108,7 +108,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/ghost_of_a_priest.lua b/data-otservbr-global/npc/ghost_of_a_priest.lua index 61fad0f8593..b73a40fbea1 100644 --- a/data-otservbr-global/npc/ghost_of_a_priest.lua +++ b/data-otservbr-global/npc/ghost_of_a_priest.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 355 + lookType = 355, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,25 +59,25 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Although we are willing to hand this item to you, there is something you have to understand: There is no such thing as 'the' sceptre. ...", "Those sceptres are created for special purposes each time anew. Therefore you will have to create one on your own. It will be your {mission} to find us three keepers and to get the three parts of the holy sceptre. ...", - "Then go to the holy altar and create a new one." + "Then go to the holy altar and create a new one.", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Even though we are spirits, we can't create anything out of thin air. You will have to donate some precious metal which we can drain for energy and substance. ...", - "The equivalent of 5000 gold will do. Are you willing to make such a donation?" + "The equivalent of 5000 gold will do. Are you willing to make such a donation?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getPosition().z == 13 and player:getStorageValue(Storage.WrathoftheEmperor.GhostOfAPriest02) < 1 then npcHandler:say({ "Even though we are spirits, we can't create anything out of thin air. You will have to donate some precious metal which we can drain for energy and substance. ...", - "The equivalent of 5000 gold will do. Are you willing to make such a donation?" + "The equivalent of 5000 gold will do. Are you willing to make such a donation?", }, npc, creature) npcHandler:setTopic(playerId, 3) elseif player:getPosition().z == 14 and player:getStorageValue(Storage.WrathoftheEmperor.GhostOfAPriest03) < 1 then npcHandler:say({ "Even though we are spirits, we can't create anything out of thin air. You will have to donate some precious metal which we can drain for energy and substance. ...", - "The equivalent of 5000 gold will do. Are you willing to make such a donation?" + "The equivalent of 5000 gold will do. Are you willing to make such a donation?", }, npc, creature) npcHandler:setTopic(playerId, 4) end @@ -124,7 +124,8 @@ keywordHandler:addKeyword({ "left" }, StdModule.say, { npcHandler = npcHandler, text = { "Some of the relics are still left in this world. They are insignia of the snake god's power. We know that you came for one of those insignia. ...", - "The Great {Snake} approves that you acquire its holy {sceptre}. We will not question the wisdom of the god to hand this relic to one of the false-born." } + "The Great {Snake} approves that you acquire its holy {sceptre}. We will not question the wisdom of the god to hand this relic to one of the false-born.", + }, }) keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "We are the guardians. We are all what is left from the glory of the past." }) keywordHandler:addKeyword({ "banuta" }, StdModule.say, { npcHandler = npcHandler, text = "What you call Banuta was once a centre of our civilisation and culture. We gave those {apes} so much, but they wanted more. In the end, the Great {Snake} used them as a tool to teach our people a painful but necessary lesson." }) @@ -134,7 +135,8 @@ keywordHandler:addKeyword({ "redeem" }, StdModule.say, { text = { "We have failed our god and paid a high price. But all tragedies and obstacles are just a test of the Great Snake. We will have to prove we are worthy to be its first true-born. ...", "Only in the face of seemingly impossible odds, we can prove what we are capable of. If we overcome all obstacles, the favour of the Great {Snake} will return to us. ...", - "The god has cast us down only to elevate us to new heights if we are worthy." } + "The god has cast us down only to elevate us to new heights if we are worthy.", + }, }) keywordHandler:addKeyword({ "dragon" }, StdModule.say, { npcHandler = npcHandler, text = "Dragons are one of the greatest creations of the Great {Snake}. Yet, they are still distanced from the Great {Snake} and susceptible for {corruption} and the lies of the egg stealers." }) keywordHandler:addKeyword({ "corruption" }, StdModule.say, { npcHandler = npcHandler, text = "There are many forms of corruption in this world. All of it is the work of the egg stealers who spread their taint. The creation hatched by the Great {Snake} was perfect without even the option of corruption." }) @@ -142,13 +144,15 @@ keywordHandler:addKeyword({ "zalamon" }, StdModule.say, { npcHandler = npcHandler, text = { "We understand what he is and what he has become. We were not aware there were others like us left in the world. ...", - "Perhaps there is still a chance our race can redeem itself in the eyes of the Great {Snake}." } + "Perhaps there is still a chance our race can redeem itself in the eyes of the Great {Snake}.", + }, }) keywordHandler:addKeyword({ "snake" }, StdModule.say, { npcHandler = npcHandler, text = { "The father and mother of everything. Its first egg hatched the world. Its second egg hatched life itself. The lizard people were of its third litter. ...", - "Of the third litter but the first true-born, we became its keepers. As its first true children, we inherited the earth but it was taken from us by the {egg stealers}." } + "Of the third litter but the first true-born, we became its keepers. As its first true children, we inherited the earth but it was taken from us by the {egg stealers}.", + }, }) keywordHandler:addAliasKeyword({ "gods" }) keywordHandler:addKeyword({ "egg stealers" }, StdModule.say, { npcHandler = npcHandler, text = "Creatures from beyond. Greedy and traitorous, they stole parts of the world and of life for themselves. They corrupted the world by their deceptions and stole our {birthright}." }) @@ -156,7 +160,8 @@ keywordHandler:addKeyword({ "birthright" }, StdModule.say, { npcHandler = npcHandler, text = { "We were the rulers of the world. We overlooked the world in the name of the Great {Snake}. The egg stealers and their creatures stole it from our claws. ...", - "We have failed the Great {Snake} and our {decline} is its punishment." } + "We have failed the Great {Snake} and our {decline} is its punishment.", + }, }) keywordHandler:addKeyword({ "decline" }, StdModule.say, { npcHandler = npcHandler, text = "We were overthrown by those of who we vainly thought we could use for our advantage, even though we knew about the foulness of the false-born." }) keywordHandler:addKeyword({ "false born" }, StdModule.say, { npcHandler = npcHandler, text = "Everything that lacks scales is no true litter of the Great Snake. They are the corrupted kin of the egg stealers." }) @@ -167,7 +172,8 @@ keywordHandler:addKeyword({ "worthy" }, StdModule.say, { npcHandler = npcHandler, text = { "The Great Snake deserves that we try to use the best of our abilities and capabilities to serve it. Our existence is a test in this world corrupted by the egg stealers. ...", - "Only when we overcome all obstacles cast into our way, we will become worthy to serve the Great Snake in all eternity." } + "Only when we overcome all obstacles cast into our way, we will become worthy to serve the Great Snake in all eternity.", + }, }) keywordHandler:addKeyword({ "creatures" }, StdModule.say, { npcHandler = npcHandler, text = "They are the false-born. They hatched from foul eggs - poisoned by the egg stealers. They are numerous and like a plague for the world." }) keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "This was once the centre of power of our religion. From here we ruled Tiquanda in the name of the snake god." }) @@ -176,13 +182,15 @@ keywordHandler:addKeyword({ "left" }, StdModule.say, { npcHandler = npcHandler, text = { "Some of the relics are still left in this world. They are insignia of the snake god's power. We know that you came for one of those insignia. ...", - "The Great Snake approves that you acquire its holy sceptre. We will not question the wisdom of the god to hand this relic to one of the false-born." } + "The Great Snake approves that you acquire its holy sceptre. We will not question the wisdom of the god to hand this relic to one of the false-born.", + }, }) keywordHandler:addKeyword({ "slumber" }, StdModule.say, { npcHandler = npcHandler, text = { "We were once the heigh priests of the Great Snake. We willingly left our mortal existence behind to become bound to this temple. ...", - "In this state we can serve the Great Snake in a more suitable way. You have to understand that it is an honour and a privilege, not a sacrifice." } + "In this state we can serve the Great Snake in a more suitable way. You have to understand that it is an honour and a privilege, not a sacrifice.", + }, }) npcHandler:setMessage(MESSAGE_FAREWELL, "Bye.") npcHandler:setMessage(MESSAGE_GREET, "Greetings {mortal}.") diff --git a/data-otservbr-global/npc/ghostly_wolf.lua b/data-otservbr-global/npc/ghostly_wolf.lua index d2bbf92996c..930b0724cda 100644 --- a/data-otservbr-global/npc/ghostly_wolf.lua +++ b/data-otservbr-global/npc/ghostly_wolf.lua @@ -16,16 +16,16 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.respawnType = { period = RESPAWNPERIOD_NIGHT, - underground = false + underground = false, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -68,7 +68,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 5 then npcHandler:say({ "I'm heartbroken, traveler. Some months ago, I was taking care of my three newborn whelps. They just opened their eyes and started exploring the wilderness as a hunter came by. ...", - "He shot me and took my three puppies with him. I have no idea where he brought them or whether they are still alive. This uncertainty harrows me and thus I'm unable to find peace. Will you help me?" + "He shot me and took my three puppies with him. I have no idea where he brought them or whether they are still alive. This uncertainty harrows me and thus I'm unable to find peace. Will you help me?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(ThreatenedDreams.Mission01[1]) == 9 then @@ -86,7 +86,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "I didn't dare hope for it! The man told something about selling my babies to the orcs so they could train them as war wolves. ...", - "I guess he mentioned Ulderek's Rock. Please search for them and - be they alive or not - return and tell me what happened to them." + "I guess he mentioned Ulderek's Rock. Please search for them and - be they alive or not - return and tell me what happened to them.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission01[1], 6) npcHandler:setTopic(playerId, 0) diff --git a/data-otservbr-global/npc/giri.lua b/data-otservbr-global/npc/giri.lua index 6757276b596..92947372d08 100644 --- a/data-otservbr-global/npc/giri.lua +++ b/data-otservbr-global/npc/giri.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 61, lookLegs = 10, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -107,7 +107,7 @@ npcConfig.shop = { { itemName = "watermelon tourmaline", clientId = 33780, sell = 230000 }, { itemName = "wedding ring", clientId = 3004, buy = 990, sell = 100 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, - { itemName = "white pearl", clientId = 3026, buy = 320, sell = 160 } + { itemName = "white pearl", clientId = 3026, buy = 320, sell = 160 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -118,7 +118,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gladys.lua b/data-otservbr-global/npc/gladys.lua index 446ea1f6cbd..06a49dc7aad 100644 --- a/data-otservbr-global/npc/gladys.lua +++ b/data-otservbr-global/npc/gladys.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 78, lookFeet = 114, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -82,7 +82,7 @@ npcConfig.shop = { { itemName = "werewolf fang", clientId = 22052, sell = 180 }, { itemName = "werewolf fur", clientId = 10317, sell = 380 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -93,7 +93,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gnomad.lua b/data-otservbr-global/npc/gnomad.lua index fb50b5e51f6..57b2eed7c7d 100644 --- a/data-otservbr-global/npc/gnomad.lua +++ b/data-otservbr-global/npc/gnomad.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 94, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,32 +58,26 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "tactical")) then - npcHandler:say( - { "You will encounter quite a lot of beasties in the area ahead of us. The end of the cave-system is where the trouble begins though. The monsters here all serve some massive creature only known as Deathstrike. ...", - "The creature is hidden in a well protected chamber. The good news is, we've managed to erect a crystal structure close to the cave that is able to breach its defence and teleport someone into the chamber. ...", - "The bad new is that the crystals need a specific charge before they can work. As soon as the crystals begin to charge up, Deathstrikes' minions will frenzy and spawn in waves to crush all opposition. ...", - "You will have to kill them quite fast, to not be overwhelmed by their numbers! Our own tries to breach the defence has proven that you'll have to endure six waves until the teleporter to Deathtstrikes' cave opens for a short 30 seconds. ...", - "Use the GREEN command crystal in the cave to begin the charging of the teleport! Good luck." }, npc, - creature) + if MsgContains(message, "tactical") then + npcHandler:say({ + "You will encounter quite a lot of beasties in the area ahead of us. The end of the cave-system is where the trouble begins though. The monsters here all serve some massive creature only known as Deathstrike. ...", + "The creature is hidden in a well protected chamber. The good news is, we've managed to erect a crystal structure close to the cave that is able to breach its defence and teleport someone into the chamber. ...", + "The bad new is that the crystals need a specific charge before they can work. As soon as the crystals begin to charge up, Deathstrikes' minions will frenzy and spawn in waves to crush all opposition. ...", + "You will have to kill them quite fast, to not be overwhelmed by their numbers! Our own tries to breach the defence has proven that you'll have to endure six waves until the teleporter to Deathtstrikes' cave opens for a short 30 seconds. ...", + "Use the GREEN command crystal in the cave to begin the charging of the teleport! Good luck.", + }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif (MsgContains(message, "job")) then + elseif MsgContains(message, "job") then npcHandler:say("I'm the gnomish tactical advisor for this area!", npc, creature) npcHandler:setTopic(playerId, 0) - elseif (MsgContains(message, "crystals")) then - npcHandler:say( - "Ah you are amazed by our crystals, aren't you? Well, you have only seen a tiny fraction of what they are able to do.", - npc, creature) + elseif MsgContains(message, "crystals") then + npcHandler:say("Ah you are amazed by our crystals, aren't you? Well, you have only seen a tiny fraction of what they are able to do.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif (MsgContains(message, "mushrooms")) then - npcHandler:say( - "In the last century mushrooms have become more and more important for producing raw materials and tools and less important for sustenance.", - npc, creature) + elseif MsgContains(message, "mushrooms") then + npcHandler:say("In the last century mushrooms have become more and more important for producing raw materials and tools and less important for sustenance.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif (MsgContains(message, "gnomes")) then - npcHandler:say( - "We gnomes are masters of growing and working crystals and we also mastered the raising of a variety of mushrooms for different purposes.", - npc, creature) + elseif MsgContains(message, "gnomes") then + npcHandler:say("We gnomes are masters of growing and working crystals and we also mastered the raising of a variety of mushrooms for different purposes.", npc, creature) npcHandler:setTopic(playerId, 0) end return true diff --git a/data-otservbr-global/npc/gnomadness.lua b/data-otservbr-global/npc/gnomadness.lua index d56ee14e629..f3dc522c51b 100644 --- a/data-otservbr-global/npc/gnomadness.lua +++ b/data-otservbr-global/npc/gnomadness.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 65, lookLegs = 110, lookFeet = 110, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -91,10 +91,10 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = "Hello and welcome in the Gnomprona Gardens. If you want to change your {hazard} level, I 'm who you're looking for." }) -keywordHandler:addAliasKeyword({ 'hello' }) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Hello and welcome in the Gnomprona Gardens. If you want to change your {hazard} level, I 'm who you're looking for." }) +keywordHandler:addAliasKeyword({ "hello" }) -npcHandler:setMessage(MESSAGE_GREET, 'Hello and welcome in the Gnomprona Gardens') +npcHandler:setMessage(MESSAGE_GREET, "Hello and welcome in the Gnomprona Gardens") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnomailion.lua b/data-otservbr-global/npc/gnomailion.lua index e94cda9e86b..709330e0dbd 100644 --- a/data-otservbr-global/npc/gnomailion.lua +++ b/data-otservbr-global/npc/gnomailion.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 88, lookLegs = 88, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,7 +55,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -66,7 +66,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gnomally.lua b/data-otservbr-global/npc/gnomally.lua index 29ceb528244..07680193ed2 100644 --- a/data-otservbr-global/npc/gnomally.lua +++ b/data-otservbr-global/npc/gnomally.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 90, lookLegs = 90, lookFeet = 90, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { @@ -29,7 +29,7 @@ npcConfig.shop = { { itemName = "gnomish extraction crystal", clientId = 15696, buy = 50 }, { itemName = "gnomish repair crystal", clientId = 15703, buy = 50 }, { itemName = "gnomish spore gatherer", clientId = 15821, buy = 50 }, - { itemName = "little pig", clientId = 15828, buy = 150 } + { itemName = "little pig", clientId = 15828, buy = 150 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -40,8 +40,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -74,26 +73,26 @@ local topic = {} local renown = {} local config = { - ['supply'] = { itemid = 15698, token = { type = 'minor', id = 16128, count = 2 } }, - ['muck'] = { itemid = 16101, token = { type = 'minor', id = 16128, count = 8 } }, - ['mission'] = { itemid = 16242, token = { type = 'minor', id = 16128, count = 10 } }, - ['lamp'] = { itemid = 16094, token = { type = 'minor', id = 16128, count = 15 } }, - ['backpack'] = { itemid = 16099, token = { type = 'minor', id = 16128, count = 15 } }, - ['addition to the soil guardian outfit'] = { itemid = 16253, token = { type = 'minor', id = 16128, count = 70 } }, - ['addition to the crystal warlord armor outfit'] = { itemid = 16256, token = { type = 'minor', id = 16128, count = 70 } }, - ['gill gugel'] = { itemid = 16104, token = { type = 'major', id = 16129, count = 10 } }, - ['gill coat'] = { itemid = 16105, token = { type = 'major', id = 16129, count = 10 } }, - ['gill legs'] = { itemid = 16106, token = { type = 'major', id = 16129, count = 10 } }, - ['spellbook'] = { itemid = 16107, token = { type = 'major', id = 16129, count = 10 } }, - ['prismatic helmet'] = { itemid = 16109, token = { type = 'major', id = 16129, count = 10 } }, - ['prismatic armor'] = { itemid = 16110, token = { type = 'major', id = 16129, count = 10 } }, - ['prismatic legs'] = { itemid = 16111, token = { type = 'major', id = 16129, count = 10 } }, - ['prismatic boots'] = { itemid = 16112, token = { type = 'major', id = 16129, count = 10 } }, - ['prismatic shield'] = { itemid = 16116, token = { type = 'major', id = 16129, count = 10 } }, - ['basic soil guardian outfit'] = { itemid = 16252, token = { type = 'major', id = 16129, count = 20 } }, - ['basic crystal warlord outfit'] = { itemid = 16255, token = { type = 'major', id = 16129, count = 20 } }, - ['iron loadstone'] = { itemid = 16153, token = { type = 'major', id = 16129, count = 20 } }, - ['glow wine'] = { itemid = 16154, token = { type = 'major', id = 16129, count = 20 } } + ["supply"] = { itemid = 15698, token = { type = "minor", id = 16128, count = 2 } }, + ["muck"] = { itemid = 16101, token = { type = "minor", id = 16128, count = 8 } }, + ["mission"] = { itemid = 16242, token = { type = "minor", id = 16128, count = 10 } }, + ["lamp"] = { itemid = 16094, token = { type = "minor", id = 16128, count = 15 } }, + ["backpack"] = { itemid = 16099, token = { type = "minor", id = 16128, count = 15 } }, + ["addition to the soil guardian outfit"] = { itemid = 16253, token = { type = "minor", id = 16128, count = 70 } }, + ["addition to the crystal warlord armor outfit"] = { itemid = 16256, token = { type = "minor", id = 16128, count = 70 } }, + ["gill gugel"] = { itemid = 16104, token = { type = "major", id = 16129, count = 10 } }, + ["gill coat"] = { itemid = 16105, token = { type = "major", id = 16129, count = 10 } }, + ["gill legs"] = { itemid = 16106, token = { type = "major", id = 16129, count = 10 } }, + ["spellbook"] = { itemid = 16107, token = { type = "major", id = 16129, count = 10 } }, + ["prismatic helmet"] = { itemid = 16109, token = { type = "major", id = 16129, count = 10 } }, + ["prismatic armor"] = { itemid = 16110, token = { type = "major", id = 16129, count = 10 } }, + ["prismatic legs"] = { itemid = 16111, token = { type = "major", id = 16129, count = 10 } }, + ["prismatic boots"] = { itemid = 16112, token = { type = "major", id = 16129, count = 10 } }, + ["prismatic shield"] = { itemid = 16116, token = { type = "major", id = 16129, count = 10 } }, + ["basic soil guardian outfit"] = { itemid = 16252, token = { type = "major", id = 16129, count = 20 } }, + ["basic crystal warlord outfit"] = { itemid = 16255, token = { type = "major", id = 16129, count = 20 } }, + ["iron loadstone"] = { itemid = 16153, token = { type = "major", id = 16129, count = 20 } }, + ["glow wine"] = { itemid = 16154, token = { type = "major", id = 16129, count = 20 } }, } local function creatureSayCallback(npc, creature, type, message) @@ -104,50 +103,50 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'equipment') then + if MsgContains(message, "equipment") then npcHandler:say({ - 'You can buy different equipment for minor or for major tokens. So, which is the equipment you are interested in, the one for {minor} or {major} tokens? ...', - 'By the way, if you want to have a look on the prismatic and gill items first, just head over to the depot and check the market.' + "You can buy different equipment for minor or for major tokens. So, which is the equipment you are interested in, the one for {minor} or {major} tokens? ...", + "By the way, if you want to have a look on the prismatic and gill items first, just head over to the depot and check the market.", }, npc, creature) - elseif MsgContains(message, 'major') then + elseif MsgContains(message, "major") then npcHandler:say({ - 'For ten major tokens, I can offer you a {gill gugel}, a {gill coat}, {gill legs}, a {spellbook} of vigilance, a {prismatic helmet}, a {prismatic armor}, {prismatic legs}, {prismatic boots} or a {prismatic shield} ...', - 'For twenty major tokens, I can offer you a {basic soil guardian outfit}, a {basic crystal warlord outfit}, an {iron loadstone} or a {glow wine}.' + "For ten major tokens, I can offer you a {gill gugel}, a {gill coat}, {gill legs}, a {spellbook} of vigilance, a {prismatic helmet}, a {prismatic armor}, {prismatic legs}, {prismatic boots} or a {prismatic shield} ...", + "For twenty major tokens, I can offer you a {basic soil guardian outfit}, a {basic crystal warlord outfit}, an {iron loadstone} or a {glow wine}.", }, npc, creature) - elseif MsgContains(message, 'minor') then + elseif MsgContains(message, "minor") then npcHandler:say({ - 'For two minor tokens, you can buy one gnomish {supply} package! For eight tokens, you can buy a {muck} remover! For ten tokens, you can buy a {mission} crystal. For fifteen tokens, you can buy a crystal {lamp} or a mushroom {backpack}. ...', - 'For seventy tokens, I can offer you a voucher for an {addition to the soil guardian outfit}, or a voucher for an {addition to the crystal warlord armor outfit}.' + "For two minor tokens, you can buy one gnomish {supply} package! For eight tokens, you can buy a {muck} remover! For ten tokens, you can buy a {mission} crystal. For fifteen tokens, you can buy a crystal {lamp} or a mushroom {backpack}. ...", + "For seventy tokens, I can offer you a voucher for an {addition to the soil guardian outfit}, or a voucher for an {addition to the crystal warlord armor outfit}.", }, npc, creature) elseif config[message] then local itemType = ItemType(config[message].itemid) - npcHandler:say(string.format('Do you want to trade %s %s for %d %s tokens?', (itemType:getArticle() ~= "" and itemType:getArticle() or ""), itemType:getName(), config[message].token.count, config[message].token.type), npc, creature) + npcHandler:say(string.format("Do you want to trade %s %s for %d %s tokens?", (itemType:getArticle() ~= "" and itemType:getArticle() or ""), itemType:getName(), config[message].token.count, config[message].token.type), npc, creature) npcHandler:setTopic(playerId, 1) topic[playerId] = message - elseif MsgContains(message, 'relations') then + elseif MsgContains(message, "relations") then local player = Player(creature) if player:getStorageValue(Storage.BigfootBurden.QuestLine) >= 25 then - npcHandler:say('Our relations improve with every mission you undertake on our behalf. Another way to improve your relations with us gnomes is to trade in minor crystal tokens. ...', npc, creature) - npcHandler:say('Your renown amongst us gnomes is currently {' .. math.max(0, player:getStorageValue(Storage.BigfootBurden.Rank)) .. '}. Do you want to improve your standing by sacrificing tokens? One token will raise your renown by 5 points. ', npc, creature) + npcHandler:say("Our relations improve with every mission you undertake on our behalf. Another way to improve your relations with us gnomes is to trade in minor crystal tokens. ...", npc, creature) + npcHandler:say("Your renown amongst us gnomes is currently {" .. math.max(0, player:getStorageValue(Storage.BigfootBurden.Rank)) .. "}. Do you want to improve your standing by sacrificing tokens? One token will raise your renown by 5 points. ", npc, creature) npcHandler:setTopic(playerId, 2) else - npcHandler:say('You are not even a recruit of the Bigfoots. Sorry I can\'t help you.', npc, creature) + npcHandler:say("You are not even a recruit of the Bigfoots. Sorry I can't help you.", npc, creature) end elseif npcHandler:getTopic(playerId) == 3 then local amount = getMoneyCount(message) if amount > 0 then - npcHandler:say('Do you really want to trade ' .. amount .. ' minor tokens for ' .. amount * 5 .. ' renown?', npc, creature) + npcHandler:say("Do you really want to trade " .. amount .. " minor tokens for " .. amount * 5 .. " renown?", npc, creature) renown[playerId] = amount npcHandler:setTopic(playerId, 4) end - elseif MsgContains(message, 'items') then - npcHandler:say('Do you need to buy any mission items?', npc, creature) + elseif MsgContains(message, "items") then + npcHandler:say("Do you need to buy any mission items?", npc, creature) npcHandler:setTopic(playerId, 5) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then local player, targetTable = Player(creature), config[topic[playerId]] if player:getItemCount(targetTable.token.id) < targetTable.token.count then - npcHandler:say('Sorry, you don\'t have enough ' .. targetTable.token.type .. ' tokens with you.', npc, creature) + npcHandler:say("Sorry, you don't have enough " .. targetTable.token.type .. " tokens with you.", npc, creature) npcHandler:setTopic(playerId, 0) return true end @@ -158,16 +157,16 @@ local function creatureSayCallback(npc, creature, type, message) if player:addItemEx(item) ~= RETURNVALUE_NOERROR then if player:getFreeCapacity() < weight then - npcHandler:say('First make sure you have enough capacity to hold it.', npc, creature) + npcHandler:say("First make sure you have enough capacity to hold it.", npc, creature) else - npcHandler:say('First make sure you have enough space in your inventory.', npc, creature) + npcHandler:say("First make sure you have enough space in your inventory.", npc, creature) end npcHandler:setTopic(playerId, 0) return true end player:removeItem(targetTable.token.id, targetTable.token.count) - npcHandler:say('Here have one of our ' .. item:getPluralName() .. '.', npc, creature) + npcHandler:say("Here have one of our " .. item:getPluralName() .. ".", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say("How many tokens do you want to trade?", npc, creature) @@ -177,18 +176,18 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeItem(16128, renown[playerId]) then player:setStorageValue(Storage.BigfootBurden.Rank, math.max(0, player:getStorageValue(Storage.BigfootBurden.Rank)) + renown[playerId] * 5) player:checkGnomeRank() - npcHandler:say('As you wish! Your new renown is {' .. player:getStorageValue(Storage.BigfootBurden.Rank) .. '}.', npc, creature) + npcHandler:say("As you wish! Your new renown is {" .. player:getStorageValue(Storage.BigfootBurden.Rank) .. "}.", npc, creature) else - npcHandler:say('You don\'t have these many tokens.', npc, creature) + npcHandler:say("You don't have these many tokens.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 5 then npc:openShopWindow(creature) - npcHandler:say('Let us see if I have what you need.', npc, creature) + npcHandler:say("Let us see if I have what you need.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') and table.contains({ 1, 3, 4, 5 }, npcHandler:getTopic(playerId)) then - npcHandler:say('As you like.', npc, creature) + elseif MsgContains(message, "no") and table.contains({ 1, 3, 4, 5 }, npcHandler:getTopic(playerId)) then + npcHandler:say("As you like.", npc, creature) npcHandler:setTopic(playerId, 0) end return true @@ -199,7 +198,7 @@ local function onReleaseFocus(npc, creature) topic[playerId], renown[playerId] = nil, nil end -npcHandler:setMessage(MESSAGE_GREET, 'Oh, hello! I\'m the gnome-human relations assistant. I am here for you to trade your tokens for {equipment}, resupply you with mission {items} and talk to you about your {relations} to us gnomes! ...') +npcHandler:setMessage(MESSAGE_GREET, "Oh, hello! I'm the gnome-human relations assistant. I am here for you to trade your tokens for {equipment}, resupply you with mission {items} and talk to you about your {relations} to us gnomes! ...") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnomargery.lua b/data-otservbr-global/npc/gnomargery.lua index a7a3eb6779b..85998c3288b 100644 --- a/data-otservbr-global/npc/gnomargery.lua +++ b/data-otservbr-global/npc/gnomargery.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 92, lookLegs = 96, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,93 +52,93 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if MsgContains(message, 'job') then - return npcHandler:say('I\'m the officer responsible for this area. I give out missions, accept mission reports and oversee our defences.', npc, creature) + if MsgContains(message, "job") then + return npcHandler:say("I'm the officer responsible for this area. I give out missions, accept mission reports and oversee our defences.", npc, creature) end - if MsgContains(message, 'gnome') then - return npcHandler:say('It\'s good to be a gnome for sure!', npc, creature) + if MsgContains(message, "gnome") then + return npcHandler:say("It's good to be a gnome for sure!", npc, creature) end - if MsgContains(message, 'area') then + if MsgContains(message, "area") then return npcHandler:say({ "On the levels outside, we encountered the first serious resistance of our true enemy. As evidenced by the unnatural heat in an area with little volcanic activity, there is 'something' strange going on here. ...", "Even the lava pools we have found here are not actually lava, but rock that was molten pretty much recently without any reasonable connection to some natural heat source. And for all we can tell, the heat is growing, slowly but steadily. ...", "This is the first time ever that we can witness our enemy at work. Here we can learn a lot about its operations. ...", "How they work, and possibly how to stop them. But therefore expeditions into the depths are necessary. The areas around us are highly dangerous, and a lethal threat to us and the Spike as a whole. ... ", - "Our first object is to divert the forces of the enemy and weaken them as good as we can while gathering as much information as possible about them and their movements. Only highly skilled adventurers stand a chance to help us down here. ..." + "Our first object is to divert the forces of the enemy and weaken them as good as we can while gathering as much information as possible about them and their movements. Only highly skilled adventurers stand a chance to help us down here. ...", }, npc, creature) end - if MsgContains(message, 'spike') then - return npcHandler:say('Now that\'s gnomish ingenuity given shape! Who but a gnome would come up with such a plan to defeat our enemies. ', npc, creature) + if MsgContains(message, "spike") then + return npcHandler:say("Now that's gnomish ingenuity given shape! Who but a gnome would come up with such a plan to defeat our enemies. ", npc, creature) end - if MsgContains(message, 'mission') then + if MsgContains(message, "mission") then if player:getLevel() < level then - npcHandler:say('Sorry, but no! Your expertise could be put to better use elsewhere. You are desperately needed in the upper levels of the Spike. Report there immediately. ', npc, creature) + npcHandler:say("Sorry, but no! Your expertise could be put to better use elsewhere. You are desperately needed in the upper levels of the Spike. Report there immediately. ", npc, creature) else - npcHandler:say('I can offer you several missions: to {deliver} parcels to our boys and girls in the battlefield, to get reports from our {undercover} gnomes, to do some {temperature} measuring and to {kill} some drillworms.', npc, creature) + npcHandler:say("I can offer you several missions: to {deliver} parcels to our boys and girls in the battlefield, to get reports from our {undercover} gnomes, to do some {temperature} measuring and to {kill} some drillworms.", npc, creature) end return end - if MsgContains(message, 'report') then - talkState[playerId] = 'report' - return npcHandler:say(' What mission do you want to report about: the {delivery} of parcels, the {undercover} reports, the {temperature} measuring or {kill} of drillworms?', npc, creature) + if MsgContains(message, "report") then + talkState[playerId] = "report" + return npcHandler:say(" What mission do you want to report about: the {delivery} of parcels, the {undercover} reports, the {temperature} measuring or {kill} of drillworms?", npc, creature) end - if talkState[playerId] == 'report' then - if MsgContains(message, 'delivery') then + if talkState[playerId] == "report" then + if MsgContains(message, "delivery") then if player:getStorageValue(SPIKE_LOWER_PARCEL_MAIN) == -1 then - npcHandler:say('You have not started that mission.', npc, creature) + npcHandler:say("You have not started that mission.", npc, creature) elseif player:getStorageValue(SPIKE_LOWER_PARCEL_MAIN) == 4 then - npcHandler:say('You have done well. Here, take your reward.', npc, creature) + npcHandler:say("You have done well. Here, take your reward.", npc, creature) player:addFamePoint() player:addExperience(1589, true) player:setStorageValue(SPIKE_LOWER_PARCEL_MAIN, -1) player:setStorageValue(SPIKE_LOWER_PARCEL_DAILY, 86400) else - npcHandler:say('Gnowful! Deliver the four parcels to some of our far away outposts in the caverns.', npc, creature) + npcHandler:say("Gnowful! Deliver the four parcels to some of our far away outposts in the caverns.", npc, creature) end - elseif MsgContains(message, 'undercover') then + elseif MsgContains(message, "undercover") then if player:getStorageValue(SPIKE_LOWER_UNDERCOVER_MAIN) == -1 then - npcHandler:say('You have not started that mission.', npc, creature) + npcHandler:say("You have not started that mission.", npc, creature) elseif player:getStorageValue(SPIKE_LOWER_UNDERCOVER_MAIN) == 3 then - npcHandler:say('You have done well. Here, take your reward.', npc, creature) + npcHandler:say("You have done well. Here, take your reward.", npc, creature) player:addFamePoint() player:addExperience(1589, true) player:setStorageValue(SPIKE_LOWER_UNDERCOVER_MAIN, -1) player:setStorageValue(SPIKE_LOWER_UNDERCOVER_DAILY, 86400) else - npcHandler:say('Gnowful! Get three reports from our undercover agents posing as monsters in the caves around us.', npc, creature) + npcHandler:say("Gnowful! Get three reports from our undercover agents posing as monsters in the caves around us.", npc, creature) end - elseif MsgContains(message, 'temperature') then + elseif MsgContains(message, "temperature") then if player:getStorageValue(SPIKE_LOWER_LAVA_MAIN) == -1 then - npcHandler:say('You have not started that mission.', npc, creature) + npcHandler:say("You have not started that mission.", npc, creature) elseif player:getStorageValue(SPIKE_LOWER_LAVA_MAIN) == 1 then - npcHandler:say('You have done well. Here, take your reward.', npc, creature) + npcHandler:say("You have done well. Here, take your reward.", npc, creature) player:addFamePoint() player:addExperience(1589, true) player:setStorageValue(SPIKE_LOWER_LAVA_MAIN, -1) player:setStorageValue(SPIKE_LOWER_LAVA_DAILY, 86400) else - npcHandler:say('Gnowful! Use the gnomish temperature measurement device to locate the hottest spot at the lava pools in the cave.', npc, creature) + npcHandler:say("Gnowful! Use the gnomish temperature measurement device to locate the hottest spot at the lava pools in the cave.", npc, creature) end - elseif MsgContains(message, 'kill') then + elseif MsgContains(message, "kill") then if player:getStorageValue(SPIKE_LOWER_KILL_MAIN) == -1 then - npcHandler:say('You have not started that mission.', npc, creature) + npcHandler:say("You have not started that mission.", npc, creature) elseif player:getStorageValue(SPIKE_LOWER_KILL_MAIN) == 7 then - npcHandler:say('You have done well. Here, take your reward.', npc, creature) + npcHandler:say("You have done well. Here, take your reward.", npc, creature) player:addFamePoint() player:addExperience(1589, true) player:setStorageValue(SPIKE_LOWER_KILL_MAIN, -1) player:setStorageValue(SPIKE_LOWER_KILL_DAILY, 86400) else - npcHandler:say('Gnowful! Just go out to the caves and kill at least seven drillworms.', npc, creature) + npcHandler:say("Gnowful! Just go out to the caves and kill at least seven drillworms.", npc, creature) end else - npcHandler:say('That\'s not a valid mission name.', npc, creature) + npcHandler:say("That's not a valid mission name.", npc, creature) end talkState[playerId] = nil return @@ -147,31 +147,31 @@ local function creatureSayCallback(npc, creature, type, message) --[[/////////////////// ////PARCEL DELIVERY//// /////////////////////]] - if MsgContains(message, 'deliver') then + if MsgContains(message, "deliver") then if player:getStorageValue(SPIKE_LOWER_PARCEL_DAILY) >= os.time() then - return npcHandler:say('Sorry, you have to wait ' .. string.diff(player:getStorageValue(SPIKE_LOWER_PARCEL_DAILY) - os.time()) .. ' before this task gets available again.', npc, creature) + return npcHandler:say("Sorry, you have to wait " .. string.diff(player:getStorageValue(SPIKE_LOWER_PARCEL_DAILY) - os.time()) .. " before this task gets available again.", npc, creature) end if player:getLevel() < level then - return npcHandler:say('Sorry, you are not on the required minimum level [' .. level .. '].', npc, creature) + return npcHandler:say("Sorry, you are not on the required minimum level [" .. level .. "].", npc, creature) end if player:getStorageValue(SPIKE_LOWER_PARCEL_MAIN) == -1 then - npcHandler:say('We need someone to bring four parcels to some of our far away outposts in the caverns. If you are interested, I can give you some more {information} about it. Are you willing to accept this mission?', npc, creature) - talkState[playerId] = 'delivery' + npcHandler:say("We need someone to bring four parcels to some of our far away outposts in the caverns. If you are interested, I can give you some more {information} about it. Are you willing to accept this mission?", npc, creature) + talkState[playerId] = "delivery" else - npcHandler:say('You have already started that mission.', npc, creature) + npcHandler:say("You have already started that mission.", npc, creature) end end - if talkState[playerId] == 'delivery' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "delivery" then + if MsgContains(message, "yes") then player:addItem(19219, 4) player:setStorageValue(SPIKE_LOWER_PARCEL_MAIN, 0) - npcHandler:say({ 'Gnometastic! Here are the parcels. Regrettably, the labels got lost during transport; but I guess those lonely gnomes won\'t mind as long as they get ANY parcel at all.', 'If you lose the parcels, you\'ll have to get new ones. Gnomux sells all the equipment that is required for our missions.' }, npc, creature) + npcHandler:say({ "Gnometastic! Here are the parcels. Regrettably, the labels got lost during transport; but I guess those lonely gnomes won't mind as long as they get ANY parcel at all.", "If you lose the parcels, you'll have to get new ones. Gnomux sells all the equipment that is required for our missions." }, npc, creature) talkState[playerId] = nil - elseif MsgContains(message, 'no') then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Ok then.", npc, creature) talkState[playerId] = nil end end @@ -179,30 +179,30 @@ local function creatureSayCallback(npc, creature, type, message) --[[////////////// ////UNDERCOVER//// ////////////////]] - if MsgContains(message, 'undercover') then + if MsgContains(message, "undercover") then if player:getStorageValue(SPIKE_LOWER_UNDERCOVER_DAILY) >= os.time() then - return npcHandler:say('Sorry, you have to wait ' .. string.diff(player:getStorageValue(SPIKE_LOWER_UNDERCOVER_DAILY) - os.time()) .. ' before this task gets available again.', npc, creature) + return npcHandler:say("Sorry, you have to wait " .. string.diff(player:getStorageValue(SPIKE_LOWER_UNDERCOVER_DAILY) - os.time()) .. " before this task gets available again.", npc, creature) end if player:getLevel() < level then - return npcHandler:say('Sorry, you are not on the required minimum level [' .. level .. '].', npc, creature) + return npcHandler:say("Sorry, you are not on the required minimum level [" .. level .. "].", npc, creature) end if player:getStorageValue(SPIKE_LOWER_UNDERCOVER_MAIN) == -1 then - npcHandler:say('Someone is needed to get three reports from our undercover agents posing as monsters in the caves around us. If you are interested, I can give you some more {information} about it. Are you willing to accept this mission?', npc, creature) - talkState[playerId] = 'undercover' + npcHandler:say("Someone is needed to get three reports from our undercover agents posing as monsters in the caves around us. If you are interested, I can give you some more {information} about it. Are you willing to accept this mission?", npc, creature) + talkState[playerId] = "undercover" else - npcHandler:say('You have already started that mission.', npc, creature) + npcHandler:say("You have already started that mission.", npc, creature) end end - if talkState[playerId] == 'undercover' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "undercover" then + if MsgContains(message, "yes") then player:setStorageValue(SPIKE_LOWER_UNDERCOVER_MAIN, 0) - npcHandler:say('Gnometastic! Get three reports from our agents. You can find them anywhere in the caves around us. Just keep looking for monsters that behave strangely and give you a wink.', npc, creature) + npcHandler:say("Gnometastic! Get three reports from our agents. You can find them anywhere in the caves around us. Just keep looking for monsters that behave strangely and give you a wink.", npc, creature) talkState[playerId] = nil - elseif MsgContains(message, 'no') then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Ok then.", npc, creature) talkState[playerId] = nil end end @@ -210,31 +210,31 @@ local function creatureSayCallback(npc, creature, type, message) --[[//////////////// ////TEMPERATURE///// //////////////////]] - if MsgContains(message, 'temperature') then + if MsgContains(message, "temperature") then if player:getStorageValue(SPIKE_LOWER_LAVA_DAILY) >= os.time() then - return npcHandler:say('Sorry, you have to wait ' .. string.diff(player:getStorageValue(SPIKE_LOWER_LAVA_DAILY) - os.time()) .. ' before this task gets available again.', npc, creature) + return npcHandler:say("Sorry, you have to wait " .. string.diff(player:getStorageValue(SPIKE_LOWER_LAVA_DAILY) - os.time()) .. " before this task gets available again.", npc, creature) end if player:getLevel() < level then - return npcHandler:say('Sorry, you are not on the required minimum level [' .. level .. '].', npc, creature) + return npcHandler:say("Sorry, you are not on the required minimum level [" .. level .. "].", npc, creature) end if player:getStorageValue(SPIKE_LOWER_LAVA_MAIN) == -1 then - npcHandler:say('Your task would be to use a gnomish temperature measurement device - short GTMD - to locate the hottest spot at the lava pools in the caves. If you are interested, I can give you some more information about it. Are you willing to accept this mission?', npc, creature) - talkState[playerId] = 'temperature' + npcHandler:say("Your task would be to use a gnomish temperature measurement device - short GTMD - to locate the hottest spot at the lava pools in the caves. If you are interested, I can give you some more information about it. Are you willing to accept this mission?", npc, creature) + talkState[playerId] = "temperature" else - npcHandler:say('You have already started that mission.', npc, creature) + npcHandler:say("You have already started that mission.", npc, creature) end end - if talkState[playerId] == 'temperature' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "temperature" then + if MsgContains(message, "yes") then player:addItem(19206, 1) player:setStorageValue(SPIKE_LOWER_LAVA_MAIN, 0) - npcHandler:say('Gnometastic! Find the hottest spot of the lava pools in the caves. If you lose the GTMD before you find the hot spot, you\'ll have to get yourself a new one. Gnomux sells all the equipment that is required for our missions.', npc, creature) + npcHandler:say("Gnometastic! Find the hottest spot of the lava pools in the caves. If you lose the GTMD before you find the hot spot, you'll have to get yourself a new one. Gnomux sells all the equipment that is required for our missions.", npc, creature) talkState[playerId] = nil - elseif MsgContains(message, 'no') then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Ok then.", npc, creature) talkState[playerId] = nil end end @@ -242,30 +242,30 @@ local function creatureSayCallback(npc, creature, type, message) --[[///////// ////KILL///// ///////////]] - if MsgContains(message, 'kill') then + if MsgContains(message, "kill") then if player:getStorageValue(SPIKE_LOWER_KILL_DAILY) >= os.time() then - return npcHandler:say('Sorry, you have to wait ' .. string.diff(player:getStorageValue(SPIKE_LOWER_KILL_DAILY) - os.time()) .. ' before this task gets available again.', npc, creature) + return npcHandler:say("Sorry, you have to wait " .. string.diff(player:getStorageValue(SPIKE_LOWER_KILL_DAILY) - os.time()) .. " before this task gets available again.", npc, creature) end if player:getLevel() < level then - return npcHandler:say('Sorry, you are not on the required minimum level [' .. level .. '].', npc, creature) + return npcHandler:say("Sorry, you are not on the required minimum level [" .. level .. "].", npc, creature) end if player:getStorageValue(SPIKE_LOWER_KILL_MAIN) == -1 then - npcHandler:say('This mission will require you to kill some drillworms for us. If you are interested, I can give you some more {information} about it. Are you willing to accept this mission?', npc, creature) - talkState[playerId] = 'kill' + npcHandler:say("This mission will require you to kill some drillworms for us. If you are interested, I can give you some more {information} about it. Are you willing to accept this mission?", npc, creature) + talkState[playerId] = "kill" else - npcHandler:say('You have already started that mission.', npc, creature) + npcHandler:say("You have already started that mission.", npc, creature) end end - if talkState[playerId] == 'kill' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "kill" then + if MsgContains(message, "yes") then player:setStorageValue(SPIKE_LOWER_KILL_MAIN, 0) - npcHandler:say('Gnometastic! You should have no trouble finding enough drillworms.', npc, creature) + npcHandler:say("Gnometastic! You should have no trouble finding enough drillworms.", npc, creature) talkState[playerId] = nil - elseif MsgContains(message, 'no') then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Ok then.", npc, creature) talkState[playerId] = nil end end diff --git a/data-otservbr-global/npc/gnomaticus.lua b/data-otservbr-global/npc/gnomaticus.lua index b63c1b68f0c..501dc49e5a2 100644 --- a/data-otservbr-global/npc/gnomaticus.lua +++ b/data-otservbr-global/npc/gnomaticus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 1, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -62,7 +62,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.BigfootBurden.QuestLine) == 11 then npcHandler:say({ "To the left you see our shooting range. Grab a cannon and shoot at the targets. You need five hits to succeed. ...", - "Shoot at the villain targets that will pop up. DON'T shoot innocent civilians since this will reset your score and you have to start all over. Report to me afterwards." + "Shoot at the villain targets that will pop up. DON'T shoot innocent civilians since this will reset your score and you have to start all over. Report to me afterwards.", }, npc, creature) player:setStorageValue(Storage.BigfootBurden.QuestLine, 13) player:setStorageValue(Storage.BigfootBurden.Shooting, 0) @@ -83,7 +83,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_GREET, 'Hi there! Are you here for the {shooting} test or to {report} your success?') +npcHandler:setMessage(MESSAGE_GREET, "Hi there! Are you here for the {shooting} test or to {report} your success?") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnombold.lua b/data-otservbr-global/npc/gnombold.lua index ccb2615fdae..9bc16b2d293 100644 --- a/data-otservbr-global/npc/gnombold.lua +++ b/data-otservbr-global/npc/gnombold.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 81, lookLegs = 101, lookFeet = 57, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,15 +52,15 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if MsgContains(message, 'job') then - return npcHandler:say('I\'m the officer responsible for this area. I give out missions, accept mission reports and oversee our defences.', npc, creature) + if MsgContains(message, "job") then + return npcHandler:say("I'm the officer responsible for this area. I give out missions, accept mission reports and oversee our defences.", npc, creature) end - if MsgContains(message, 'gnome') then - return npcHandler:say('Gnomes have lived autonomous for so long that it still feels odd to work with strangers for many of us.', npc, creature) + if MsgContains(message, "gnome") then + return npcHandler:say("Gnomes have lived autonomous for so long that it still feels odd to work with strangers for many of us.", npc, creature) end - if MsgContains(message, 'area') then + if MsgContains(message, "area") then return npcHandler:say({ "The levels around us are... well, they are strange. We are still not entirely sure how they were created. It seems obvious that they are artificial, but they seem not to be burrowed or the like. ... ", "We found strange stone formations that were not found on other layers around the Spike, but there is no clue at all if they are as natural as they look. It seems someone used some geomantic force to move the earth. ...", @@ -72,71 +72,71 @@ local function creatureSayCallback(npc, creature, type, message) }, npc, creature) end - if MsgContains(message, 'mission') then + if MsgContains(message, "mission") then if player:getLevel() > levels[2] then - npcHandler:say('Sorry, but no! Your expertise could be put to better use elsewhere. Here awaits you no challenge. You are desperately needed in the deeper levels of the Spike. Report there immediately. ', npc, creature) + npcHandler:say("Sorry, but no! Your expertise could be put to better use elsewhere. Here awaits you no challenge. You are desperately needed in the deeper levels of the Spike. Report there immediately. ", npc, creature) else - npcHandler:say(' I can offer you several missions: to gather geomantic {charges}, to {fertilise} the mushroom caves, to destroy monster {nests} and to {kill} some crystal crushers.', npc, creature) + npcHandler:say(" I can offer you several missions: to gather geomantic {charges}, to {fertilise} the mushroom caves, to destroy monster {nests} and to {kill} some crystal crushers.", npc, creature) end return end - if MsgContains(message, 'report') then - talkState[playerId] = 'report' - return npcHandler:say('What mission do you want to report about: gathering the geomantic {charges}, the {fertilisation} of the mushroom caves, about destroying monster {nests} and the {killing} of crystal crushers?', npc, creature) + if MsgContains(message, "report") then + talkState[playerId] = "report" + return npcHandler:say("What mission do you want to report about: gathering the geomantic {charges}, the {fertilisation} of the mushroom caves, about destroying monster {nests} and the {killing} of crystal crushers?", npc, creature) end - if talkState[playerId] == 'report' then - if MsgContains(message, 'charges') then + if talkState[playerId] == "report" then + if MsgContains(message, "charges") then if player:getStorageValue(SPIKE_MIDDLE_CHARGE_MAIN) == -1 then - npcHandler:say('You have not started that mission.', npc, creature) + npcHandler:say("You have not started that mission.", npc, creature) elseif player:getStorageValue(SPIKE_MIDDLE_CHARGE_MAIN) == 2 then - npcHandler:say('You have done well. Here, take your reward.', npc, creature) + npcHandler:say("You have done well. Here, take your reward.", npc, creature) player:addFamePoint() player:addExperience(2000, true) player:setStorageValue(SPIKE_MIDDLE_CHARGE_MAIN, -1) player:setStorageValue(SPIKE_MIDDLE_CHARGE_DAILY, 86400) else - npcHandler:say('Gnowful! Charge this magnet at three monoliths in the cave system. With three charges, the magnet will disintegrate and charge you with its gathered energies. Step on the magnetic extractor here to deliver the charge to us, then report to me.', npc, creature) + npcHandler:say("Gnowful! Charge this magnet at three monoliths in the cave system. With three charges, the magnet will disintegrate and charge you with its gathered energies. Step on the magnetic extractor here to deliver the charge to us, then report to me.", npc, creature) end - elseif MsgContains(message, 'fertilisation') then + elseif MsgContains(message, "fertilisation") then if player:getStorageValue(SPIKE_MIDDLE_MUSHROOM_MAIN) == -1 then - npcHandler:say('You have not started that mission.', npc, creature) + npcHandler:say("You have not started that mission.", npc, creature) elseif player:getStorageValue(SPIKE_MIDDLE_MUSHROOM_MAIN) == 4 then - npcHandler:say('You have done well. Here, take your reward.', npc, creature) + npcHandler:say("You have done well. Here, take your reward.", npc, creature) player:addFamePoint() player:addExperience(2000, true) player:setStorageValue(SPIKE_MIDDLE_MUSHROOM_MAIN, -1) player:setStorageValue(SPIKE_MIDDLE_MUSHROOM_DAILY, 86400) else - npcHandler:say('Gnowful! Use the fertiliser on four gardener mushroom in the caves.', npc, creature) + npcHandler:say("Gnowful! Use the fertiliser on four gardener mushroom in the caves.", npc, creature) end - elseif MsgContains(message, 'nests') then + elseif MsgContains(message, "nests") then if player:getStorageValue(SPIKE_MIDDLE_NEST_MAIN) == -1 then - npcHandler:say('You have not started that mission.', npc, creature) + npcHandler:say("You have not started that mission.", npc, creature) elseif player:getStorageValue(SPIKE_MIDDLE_NEST_MAIN) == 8 then - npcHandler:say('You have done well. Here, take your reward.', npc, creature) + npcHandler:say("You have done well. Here, take your reward.", npc, creature) player:addFamePoint() player:addExperience(2000, true) player:setStorageValue(SPIKE_MIDDLE_NEST_MAIN, -1) player:setStorageValue(SPIKE_MIDDLE_NEST_DAILY, 86400) else - npcHandler:say('Gnowful! Step into the transformer and destroy eight monster nests.', npc, creature) + npcHandler:say("Gnowful! Step into the transformer and destroy eight monster nests.", npc, creature) end - elseif MsgContains(message, 'killing') then + elseif MsgContains(message, "killing") then if player:getStorageValue(SPIKE_MIDDLE_KILL_MAIN) == -1 then - npcHandler:say('You have not started that mission.', npc, creature) + npcHandler:say("You have not started that mission.", npc, creature) elseif player:getStorageValue(SPIKE_MIDDLE_KILL_MAIN) == 7 then - npcHandler:say('You have done well. Here, take your reward.', npc, creature) + npcHandler:say("You have done well. Here, take your reward.", npc, creature) player:addFamePoint() player:addExperience(2000, true) player:setStorageValue(SPIKE_MIDDLE_KILL_MAIN, -1) player:setStorageValue(SPIKE_MIDDLE_KILL_DAILY, 86400) else - npcHandler:say('Gnowful! Just go out to the caves and kill at least seven crystalcrushers.', npc, creature) + npcHandler:say("Gnowful! Just go out to the caves and kill at least seven crystalcrushers.", npc, creature) end else - npcHandler:say('That\'s not a valid mission name.', npc, creature) + npcHandler:say("That's not a valid mission name.", npc, creature) end talkState[playerId] = nil return @@ -145,32 +145,35 @@ local function creatureSayCallback(npc, creature, type, message) --[[///////////////////// ////GEOMANTIC CHARGES//// ///////////////////////]] - if MsgContains(message, 'charges') then + if MsgContains(message, "charges") then if player:getStorageValue(SPIKE_MIDDLE_CHARGE_DAILY) >= os.time() then - return npcHandler:say('Sorry, you have to wait ' .. string.diff(player:getStorageValue(SPIKE_MIDDLE_CHARGE_DAILY) - os.time()) .. ' before this task gets available again.', npc, creature) + return npcHandler:say("Sorry, you have to wait " .. string.diff(player:getStorageValue(SPIKE_MIDDLE_CHARGE_DAILY) - os.time()) .. " before this task gets available again.", npc, creature) end if (player:getLevel() < levels[1]) or (player:getLevel() > levels[2]) then - return npcHandler:say('Sorry, you are not on the required range of levels [' .. levels[1] .. '-' .. levels[2] .. '].', npc, creature) + return npcHandler:say("Sorry, you are not on the required range of levels [" .. levels[1] .. "-" .. levels[2] .. "].", npc, creature) end if player:getStorageValue(SPIKE_MIDDLE_CHARGE_MAIN) == -1 then - npcHandler:say({ 'Our mission for you is to use a magnet on three different monoliths in the cave system here. After the magnet evaporates on the last charge, enter the magnetic extractor here to deliver your charge.', 'If you are interested, I can give you some more {information} about it. Are you willing to accept this mission?' }, npc, creature) - talkState[playerId] = 'charges' + npcHandler:say({ "Our mission for you is to use a magnet on three different monoliths in the cave system here. After the magnet evaporates on the last charge, enter the magnetic extractor here to deliver your charge.", "If you are interested, I can give you some more {information} about it. Are you willing to accept this mission?" }, npc, creature) + talkState[playerId] = "charges" else - npcHandler:say('You have already started that mission.', npc, creature) + npcHandler:say("You have already started that mission.", npc, creature) end end - if talkState[playerId] == 'charges' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "charges" then + if MsgContains(message, "yes") then player:addItem(19207, 1) player:setStorageValue(SPIKE_MIDDLE_CHARGE_MAIN, 0) - npcHandler:say({ 'Gnometastic! Charge this magnet at three monoliths in the cave system. With three charges, the magnet will disintegrate and charge you with its gathered energies. Step on the magnetic extractor here to deliver the charge to us, then report to me.', 'If you lose the magnet you\'ll have to bring your own. Gnomux sells all the equipment that is required for our missions.' }, - npc, creature) + npcHandler:say( + { "Gnometastic! Charge this magnet at three monoliths in the cave system. With three charges, the magnet will disintegrate and charge you with its gathered energies. Step on the magnetic extractor here to deliver the charge to us, then report to me.", "If you lose the magnet you'll have to bring your own. Gnomux sells all the equipment that is required for our missions." }, + npc, + creature + ) talkState[playerId] = nil - elseif MsgContains(message, 'no') then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Ok then.", npc, creature) talkState[playerId] = nil end end @@ -178,31 +181,31 @@ local function creatureSayCallback(npc, creature, type, message) --[[///////////// ////FERTILISE//// ///////////////]] - if MsgContains(message, 'fertilise') then + if MsgContains(message, "fertilise") then if player:getStorageValue(SPIKE_MIDDLE_MUSHROOM_DAILY) >= os.time() then - return npcHandler:say('Sorry, you have to wait ' .. string.diff(player:getStorageValue(SPIKE_MIDDLE_MUSHROOM_DAILY) - os.time()) .. ' before this task gets available again.', npc, creature) + return npcHandler:say("Sorry, you have to wait " .. string.diff(player:getStorageValue(SPIKE_MIDDLE_MUSHROOM_DAILY) - os.time()) .. " before this task gets available again.", npc, creature) end if (player:getLevel() < levels[1]) or (player:getLevel() > levels[2]) then - return npcHandler:say('Sorry, you are not on the required range of levels [' .. levels[1] .. '-' .. levels[2] .. '].', npc, creature) + return npcHandler:say("Sorry, you are not on the required range of levels [" .. levels[1] .. "-" .. levels[2] .. "].", npc, creature) end if player:getStorageValue(SPIKE_MIDDLE_MUSHROOM_MAIN) == -1 then - npcHandler:say('Your mission would be to seek out gardener mushrooms in the caves and use some fertiliser on them. If you are interested, I can give you some more information about it. Are you willing to accept this mission?', npc, creature) - talkState[playerId] = 'fertilise' + npcHandler:say("Your mission would be to seek out gardener mushrooms in the caves and use some fertiliser on them. If you are interested, I can give you some more information about it. Are you willing to accept this mission?", npc, creature) + talkState[playerId] = "fertilise" else - npcHandler:say('You have already started that mission.', npc, creature) + npcHandler:say("You have already started that mission.", npc, creature) end end - if talkState[playerId] == 'fertilise' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "fertilise" then + if MsgContains(message, "yes") then player:addItem(19214) player:setStorageValue(SPIKE_MIDDLE_MUSHROOM_MAIN, 0) - npcHandler:say('Gnometastic! And here is your fertiliser - use it on four gardener mushroom in the caves. If you lose the fertiliser you\'ll have to bring your own. Gnomux sells all the equipment that is required for our missions.', npc, creature) + npcHandler:say("Gnometastic! And here is your fertiliser - use it on four gardener mushroom in the caves. If you lose the fertiliser you'll have to bring your own. Gnomux sells all the equipment that is required for our missions.", npc, creature) talkState[playerId] = nil - elseif MsgContains(message, 'no') then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Ok then.", npc, creature) talkState[playerId] = nil end end @@ -210,30 +213,30 @@ local function creatureSayCallback(npc, creature, type, message) --[[////////////////// ////DESTROY NESTS///// ////////////////////]] - if MsgContains(message, 'nests') then + if MsgContains(message, "nests") then if player:getStorageValue(SPIKE_MIDDLE_NEST_DAILY) >= os.time() then - return npcHandler:say('Sorry, you have to wait ' .. string.diff(player:getStorageValue(SPIKE_MIDDLE_NEST_DAILY) - os.time()) .. ' before this task gets available again.', npc, creature) + return npcHandler:say("Sorry, you have to wait " .. string.diff(player:getStorageValue(SPIKE_MIDDLE_NEST_DAILY) - os.time()) .. " before this task gets available again.", npc, creature) end if (player:getLevel() < levels[1]) or (player:getLevel() > levels[2]) then - return npcHandler:say('Sorry, you are not on the required range of levels [' .. levels[1] .. '-' .. levels[2] .. '].', npc, creature) + return npcHandler:say("Sorry, you are not on the required range of levels [" .. levels[1] .. "-" .. levels[2] .. "].", npc, creature) end if player:getStorageValue(SPIKE_MIDDLE_NEST_MAIN) == -1 then - npcHandler:say('Our mission for you is to step into the gnomish transformer and then destroy eight monster nests in the caves. If you are interested, I can give you some more information about it. Are you willing to accept this mission?', npc, creature) - talkState[playerId] = 'nests' + npcHandler:say("Our mission for you is to step into the gnomish transformer and then destroy eight monster nests in the caves. If you are interested, I can give you some more information about it. Are you willing to accept this mission?", npc, creature) + talkState[playerId] = "nests" else - npcHandler:say('You have already started that mission.', npc, creature) + npcHandler:say("You have already started that mission.", npc, creature) end end - if talkState[playerId] == 'nests' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "nests" then + if MsgContains(message, "yes") then player:setStorageValue(SPIKE_MIDDLE_NEST_MAIN, 0) - npcHandler:say('Gnometastic! Don\'t forget to step into the transformer before you go out and destroy five monster nests. If your transformation runs out, return to the transformer to get another illusion.', npc, creature) + npcHandler:say("Gnometastic! Don't forget to step into the transformer before you go out and destroy five monster nests. If your transformation runs out, return to the transformer to get another illusion.", npc, creature) talkState[playerId] = nil - elseif MsgContains(message, 'no') then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Ok then.", npc, creature) talkState[playerId] = nil end end @@ -241,30 +244,30 @@ local function creatureSayCallback(npc, creature, type, message) --[[///////// ////KILL///// ///////////]] - if MsgContains(message, 'kill') then + if MsgContains(message, "kill") then if player:getStorageValue(SPIKE_MIDDLE_KILL_DAILY) >= os.time() then - return npcHandler:say('Sorry, you have to wait ' .. string.diff(player:getStorageValue(SPIKE_MIDDLE_KILL_DAILY) - os.time()) .. ' before this task gets available again.', npc, creature) + return npcHandler:say("Sorry, you have to wait " .. string.diff(player:getStorageValue(SPIKE_MIDDLE_KILL_DAILY) - os.time()) .. " before this task gets available again.", npc, creature) end if (player:getLevel() < levels[1]) or (player:getLevel() > levels[2]) then - return npcHandler:say('Sorry, you are not on the required range of levels [' .. levels[1] .. '-' .. levels[2] .. '].', npc, creature) + return npcHandler:say("Sorry, you are not on the required range of levels [" .. levels[1] .. "-" .. levels[2] .. "].", npc, creature) end if player:getStorageValue(SPIKE_MIDDLE_KILL_MAIN) == -1 then - npcHandler:say('This mission will require you to kill some crystal crushers for us. If you are interested, I can give you some more information about it. Are you willing to accept this mission?', npc, creature) - talkState[playerId] = 'kill' + npcHandler:say("This mission will require you to kill some crystal crushers for us. If you are interested, I can give you some more information about it. Are you willing to accept this mission?", npc, creature) + talkState[playerId] = "kill" else - npcHandler:say('You have already started that mission.', npc, creature) + npcHandler:say("You have already started that mission.", npc, creature) end end - if talkState[playerId] == 'kill' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "kill" then + if MsgContains(message, "yes") then player:setStorageValue(SPIKE_MIDDLE_KILL_MAIN, 0) - npcHandler:say('Gnometastic! You should have no trouble to find enough crystal crushers. Killing seven of them should be enough.', npc, creature) + npcHandler:say("Gnometastic! You should have no trouble to find enough crystal crushers. Killing seven of them should be enough.", npc, creature) talkState[playerId] = nil - elseif MsgContains(message, 'no') then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Ok then.", npc, creature) talkState[playerId] = nil end end diff --git a/data-otservbr-global/npc/gnome.lua b/data-otservbr-global/npc/gnome.lua index 0c83bf74263..da29461dd6d 100644 --- a/data-otservbr-global/npc/gnome.lua +++ b/data-otservbr-global/npc/gnome.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 493 + lookType = 493, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/gnome_trooper.lua b/data-otservbr-global/npc/gnome_trooper.lua index 3ed9f4e0d6d..198557c2e40 100644 --- a/data-otservbr-global/npc/gnome_trooper.lua +++ b/data-otservbr-global/npc/gnome_trooper.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 20, lookLegs = 39, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -30,7 +30,7 @@ local response = { [0] = "It's a pipe! What can be more relaxing for a gnome than to smoke his pipe after a day of duty at the front. At least it's a chance to do something really dangerous after all!", [1] = "Ah, a letter from home! Oh - I had no idea she felt that way! This is most interesting!", [2] = "It's a model of the gnomebase Alpha! For self-assembly! With toothpicks...! Yeeaah...! I guess.", - [3] = "A medal of honour! At last they saw my true worth!" + [3] = "A medal of honour! At last they saw my true worth!", } if not DELIVERED_PARCELS then @@ -77,7 +77,7 @@ local function creatureSayCallback(npc, creature, type, message) DELIVERED_PARCELS[player:getGuid()] = {} end - if MsgContains(message, 'something') and not table.contains({ -1, 4 }, status) then + if MsgContains(message, "something") and not table.contains({ -1, 4 }, status) then if table.contains(DELIVERED_PARCELS[player:getGuid()], npc:getId()) then return true end diff --git a/data-otservbr-global/npc/gnomegica.lua b/data-otservbr-global/npc/gnomegica.lua index 9b1b3e12091..2f264240b3d 100644 --- a/data-otservbr-global/npc/gnomegica.lua +++ b/data-otservbr-global/npc/gnomegica.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 94, lookFeet = 52, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -101,7 +101,7 @@ npcConfig.shop = { { itemName = "wand of cosmic energy", clientId = 3073, buy = 10000 }, { itemName = "wand of decay", clientId = 3072, buy = 5000 }, { itemName = "wand of dragonbreath", clientId = 3075, buy = 1000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -112,7 +112,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gnomejam.lua b/data-otservbr-global/npc/gnomejam.lua index 141bd1309ca..fafcc745cfb 100644 --- a/data-otservbr-global/npc/gnomejam.lua +++ b/data-otservbr-global/npc/gnomejam.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 58, lookLegs = 58, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ npcConfig.shop = { { itemName = "bread", clientId = 3600, buy = 4 }, { itemName = "cheese", clientId = 3607, buy = 6 }, { itemName = "ham", clientId = 3582, buy = 8 }, - { itemName = "meat", clientId = 3577, buy = 5 } + { itemName = "meat", clientId = 3577, buy = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -67,7 +67,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gnomelvis.lua b/data-otservbr-global/npc/gnomelvis.lua index 6b6b400ecff..7385fdb5a1b 100644 --- a/data-otservbr-global/npc/gnomelvis.lua +++ b/data-otservbr-global/npc/gnomelvis.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 76, lookLegs = 105, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "looking") then if player:getStorageValue(Storage.BigfootBurden.QuestLine) >= 19 or player:getStorageValue(Storage.BigfootBurden.QuestLine) <= 22 then npcHandler:say("I'm the gnomish {musical} supervisor!", npc, creature) @@ -68,7 +67,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Ah well. Everyone has a very personal melody in his soul. Only if you know your soul melody then you know yourself. And only if you know yourself will you be admitted to the Bigfoot company. ...", "So what you have to do is to find your soul melody. Do you see the huge crystals in this room? Those are harmonic crystals. Use them to deduce your soul melody. Simply use them to create a sound sequence. ...", - "Every soul melody consists of seven sound sequences. You will have to figure out your correct soul melody by trial and error. If you hit a wrong note, you will have to start over." + "Every soul melody consists of seven sound sequences. You will have to figure out your correct soul melody by trial and error. If you hit a wrong note, you will have to start over.", }, npc, creature) player:setStorageValue(Storage.BigfootBurden.QuestLine, 21) player:setStorageValue(Storage.BigfootBurden.MelodyStatus, 1) @@ -83,12 +82,12 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.BigfootBurden.QuestLine) == 22 then npcHandler:say({ "Congratulations on finding your soul melody. And a pretty one as far as I can tell. Now you are a true recruit of the Bigfoot company! Commander Stone might have some tasks for you to do! ...", - "Look for him in the central chamber. I marked your map where you will find him." + "Look for him in the central chamber. I marked your map where you will find him.", }, npc, creature) player:setStorageValue(Storage.BigfootBurden.QuestLine, 25) player:setStorageValue(Storage.BigfootBurden.QuestLineComplete, 2) player:setStorageValue(Storage.BigfootBurden.Rank) - player:addAchievement('Becoming a Bigfoot') + player:addAchievement("Becoming a Bigfoot") elseif player:getStorageValue(Storage.BigfootBurden.QuestLine) == 25 then npcHandler:say("Congratulations on finding your soul melody.", npc, creature) end diff --git a/data-otservbr-global/npc/gnomenursey.lua b/data-otservbr-global/npc/gnomenursey.lua index 8e943079be6..316a356dad2 100644 --- a/data-otservbr-global/npc/gnomenursey.lua +++ b/data-otservbr-global/npc/gnomenursey.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 47, lookLegs = 66, lookFeet = 46, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/gnomeral.lua b/data-otservbr-global/npc/gnomeral.lua index c650b19c622..250681ffa97 100644 --- a/data-otservbr-global/npc/gnomeral.lua +++ b/data-otservbr-global/npc/gnomeral.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 78, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -62,7 +62,7 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "mission") and player:getStorageValue(Storage.BigfootBurden.QuestLineComplete) >= 2) then + if MsgContains(message, "mission") and player:getStorageValue(Storage.BigfootBurden.QuestLineComplete) >= 2 then if player:getStorageValue(Storage.BigfootBurden.Rank) >= 120 and player:getStorageValue(Storage.BigfootBurden.Rank) < 480 then npcHandler:say("For your rank there are two missions available: {matchmaker} and golem {repair}. You can undertake each mission, but you can turn in a specific mission only once every 20 hours. ", npc, creature) npcHandler:setTopic(playerId, 0) @@ -78,7 +78,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "You will have to find a lonely crystal a perfect match. I don't understand the specifics but the gnomes told me that even crystals need a mate to produce offspring. ...", "Be that as it may, in this package you'll find a crystal. Take it out of the package and go to the crystal caves to find it a mate. Just look out for huge red crystals and try your luck. ...", - "They should look like one of those seen in your soul melody test. You will find them in the crystal grounds. {Report} back to me when you are done." + "They should look like one of those seen in your soul melody test. You will find them in the crystal grounds. {Report} back to me when you are done.", }, npc, creature) player:setStorageValue(Storage.BigfootBurden.MissionMatchmaker, 1) player:setStorageValue(Storage.BigfootBurden.MatchmakerStatus, 0) @@ -95,7 +95,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.BigfootBurden.MatchmakerStatus, -1) player:setStorageValue(Storage.BigfootBurden.MatchmakerIdNeeded, -1) player:setStorageValue(Storage.BigfootBurden.MatchmakerTimeout, os.time() + 72000) - player:addAchievement('Crystals in Love') + player:addAchievement("Crystals in Love") player:checkGnomeRank() npcHandler:say("Gnomo arigato |PLAYERNAME|! You did well. That will help us a lot. Take your tokens and this gnomish supply package as a reward. ", npc, creature) npcHandler:setTopic(playerId, 0) @@ -121,7 +121,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "I'm no expert on how those golems work, but it seems that when the crystals of the golems get out of harmony, they do as they please and even sometimes become violent. The violent ones are lost. ...", "Don't bother with them, though you may decide to kill some to get rid of them. The others can be repaired, but to recall them to the workshops, the golems have to be put into a specific resonance. ...", - "Use the bell I gave you on the golems, so the gnomes can recall them to their workshops. Getting four of them should be enough for now. Report back when you are ready." + "Use the bell I gave you on the golems, so the gnomes can recall them to their workshops. Getting four of them should be enough for now. Report back when you are ready.", }, npc, creature) player:setStorageValue(Storage.BigfootBurden.MissionTinkersBell, 1) player:setStorageValue(Storage.BigfootBurden.GolemCount, 0) @@ -137,7 +137,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.BigfootBurden.MissionTinkersBell, 0) player:setStorageValue(Storage.BigfootBurden.GolemCount, -1) player:setStorageValue(Storage.BigfootBurden.TinkerBellTimeout, os.time() + 72000) - player:addAchievement('Substitute Tinker') + player:addAchievement("Substitute Tinker") player:checkGnomeRank() npcHandler:say("Gnomo arigato |PLAYERNAME|! You did well. That will help us a lot. Take your tokens and this gnomish supply package as a reward. ", npc, creature) npcHandler:setTopic(playerId, 0) @@ -162,7 +162,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "We gnomes want you to gather a special collection of spores. All you have to do is use a puffball mushroom and use the spore gathering kit I gave you to gather the spores. ...", "There is a catch though. You need to collect different spores in a specific sequence to fill your gathering kit. If you mix the spores in the wrong way, you ruin your collection and have to start over. ...", - "You have to gather them in this sequence: red, green, blue and yellow. You can see on your kit what is required next." + "You have to gather them in this sequence: red, green, blue and yellow. You can see on your kit what is required next.", }, npc, creature) player:setStorageValue(Storage.BigfootBurden.MissionSporeGathering, 1) player:setStorageValue(Storage.BigfootBurden.SporeCount, 0) @@ -179,7 +179,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.BigfootBurden.MissionSporeGathering, 0) player:setStorageValue(Storage.BigfootBurden.SporeCount, -1) player:setStorageValue(Storage.BigfootBurden.SporeGatheringTimeout, os.time() + 72000) - player:addAchievement('Spore Hunter') + player:addAchievement("Spore Hunter") player:checkGnomeRank() npcHandler:say("Gnomo arigato |PLAYERNAME|! You did well. That will help us a lot. Take your tokens and this gnomish supply package as a reward. ", npc, creature) npcHandler:setTopic(playerId, 0) @@ -203,7 +203,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.BigfootBurden.MissionGrindstoneHunt) < 1 and player:getStorageValue(Storage.BigfootBurden.GrindstoneTimeout) < os.time() then npcHandler:say({ "We gnomes need some special grindstones to cut and polish specific crystals. The thing is, they can only be found in a quite dangerous lava cave full of vile monsters. You'll reach it via the hot spot teleporter. ...", - "It will be your task to get one such grindstone and bring it back to me." + "It will be your task to get one such grindstone and bring it back to me.", }, npc, creature) player:setStorageValue(Storage.BigfootBurden.MissionGrindstoneHunt, 1) player:setStorageValue(Storage.BigfootBurden.GrindstoneStatus, 0) @@ -219,7 +219,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.BigfootBurden.MissionGrindstoneHunt, 0) player:setStorageValue(Storage.BigfootBurden.GrindstoneStatus, -1) player:setStorageValue(Storage.BigfootBurden.GrindstoneTimeout, os.time() + 72000) - player:addAchievement('Grinding Again') + player:addAchievement("Grinding Again") player:checkGnomeRank() npcHandler:say("Gnomo arigato |PLAYERNAME|! You did well. That will help us a lot. Take your tokens and this gnomish supply package as a reward. ", npc, creature) npcHandler:setTopic(playerId, 0) @@ -236,7 +236,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Sorry, you do have not have the required rank to undertake this mission.", npc, creature) end -- Grindstone Hunt - elseif (MsgContains(message, "report")) then + elseif MsgContains(message, "report") then if player:getStorageValue(Storage.BigfootBurden.Rank) >= 120 and player:getStorageValue(Storage.BigfootBurden.Rank) < 480 then npcHandler:say("Which mission do you want to report: {matchmaker}, golem {repair}?", npc, creature) npcHandler:setTopic(playerId, 1) @@ -248,7 +248,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_GREET, 'Hello there recruit!') +npcHandler:setMessage(MESSAGE_GREET, "Hello there recruit!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnomercy.lua b/data-otservbr-global/npc/gnomercy.lua index b67c04e1037..844bd9698b6 100644 --- a/data-otservbr-global/npc/gnomercy.lua +++ b/data-otservbr-global/npc/gnomercy.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 94, lookBody = 114, lookLegs = 98, - lookFeet = 115 + lookFeet = 115, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,18 +57,18 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "tactical")) then - npcHandler:say( - { "With your help and efforts we finally cornered what we think is one of 'those below'! For all you have done and endured you are granted the privilege to be one of the first to fight the true enemy. ...", - "For all we know your successes have brought some unrest to our enemies and they sent one of their observers to punish their slaves and force them to more fierce attacks. ...", - "This is our chance to deal the enemy the first blow in this conflict. With reinforcements from Gnomehome we are attacking the troops of the enemy and binding a great deal of their forces in battle. ...", - "Now it is up to you to fight your way to the heart of the enemy's defences and kill the observer. ...", - "Our first tries were met with no success though. The observer has brought with him one of his creatures or lieutenants, the lost call the thing Versperoth. I am not sure if it is a name or a race. ...", - "However Versperoth itself is protected by hoards of minions. Sometimes this thing will withdraw into the ground and let all hell loose in form of its' slaves. ...", - "You'd better be finished with them before Versperoth re-emerges. ...", - "Only when you manage to kill Versperoth, will you be able to enter the portal behind him and face the true evil of the observer. ...", - "Use the GREEN command crystal in the cave to begin the charging of the teleport! Good luck." }, npc, - creature) + if MsgContains(message, "tactical") then + npcHandler:say({ + "With your help and efforts we finally cornered what we think is one of 'those below'! For all you have done and endured you are granted the privilege to be one of the first to fight the true enemy. ...", + "For all we know your successes have brought some unrest to our enemies and they sent one of their observers to punish their slaves and force them to more fierce attacks. ...", + "This is our chance to deal the enemy the first blow in this conflict. With reinforcements from Gnomehome we are attacking the troops of the enemy and binding a great deal of their forces in battle. ...", + "Now it is up to you to fight your way to the heart of the enemy's defences and kill the observer. ...", + "Our first tries were met with no success though. The observer has brought with him one of his creatures or lieutenants, the lost call the thing Versperoth. I am not sure if it is a name or a race. ...", + "However Versperoth itself is protected by hoards of minions. Sometimes this thing will withdraw into the ground and let all hell loose in form of its' slaves. ...", + "You'd better be finished with them before Versperoth re-emerges. ...", + "Only when you manage to kill Versperoth, will you be able to enter the portal behind him and face the true evil of the observer. ...", + "Use the GREEN command crystal in the cave to begin the charging of the teleport! Good luck.", + }, npc, creature) npcHandler:setTopic(playerId, 0) end return true diff --git a/data-otservbr-global/npc/gnomerik.lua b/data-otservbr-global/npc/gnomerik.lua index e31b20d33c4..f4994d2e585 100644 --- a/data-otservbr-global/npc/gnomerik.lua +++ b/data-otservbr-global/npc/gnomerik.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 60, lookLegs = 3, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,14 +50,12 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = 'Hello and welcome in the gnomish {recruitment} office.' }, - function(player) - if player:getStorageValue(Storage.BigfootBurden.QuestLine) == 1 then - player:setStorageValue(Storage.BigfootBurden.QuestLine, 3) - end +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Hello and welcome in the gnomish {recruitment} office." }, function(player) + if player:getStorageValue(Storage.BigfootBurden.QuestLine) == 1 then + player:setStorageValue(Storage.BigfootBurden.QuestLine, 3) end -) -keywordHandler:addAliasKeyword({ 'hello' }) +end) +keywordHandler:addAliasKeyword({ "hello" }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -67,7 +65,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if player:getStorageValue(Storage.BigfootBurden.NeedsBeer) == 1 then if MsgContains(message, "recruit") or MsgContains(message, "test") or MsgContains(message, "result") then npcHandler:say({ "I suggest you relax a bit with a fresh mushroom beer and we can talk after that. ...", "Gnominus... He is the one you need right now, find him." }, npc, creature) @@ -90,31 +87,31 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.BigfootBurden.Test, 0) npcHandler:say({ "Imagine, during your travels you come upon a rare and unknown mushroom. Would you {A}) note down its specifics and location and look for a gnome to take care of it. ...", - "Or would you {B}) smash it to an unrecognisable pulp. Or would you {C}) pluck it to take it with you for further examination. Or would you {D}) try to become friends with the mushroom by singing questionable bar-room songs?" + "Or would you {B}) smash it to an unrecognisable pulp. Or would you {C}) pluck it to take it with you for further examination. Or would you {D}) try to become friends with the mushroom by singing questionable bar-room songs?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 3 then npcHandler:say({ "Imagine you wake up one morning and discover you have forgotten how to knot your shoelaces. Would you {A}) admit defeat and go to bed once more. ...", - "{B}) look for a gnome that can remind you how to do it. {C}) Despite the risk of injuring yourself, try to figure it out on your own. {D}) Use some pottery instead of shoes." + "{B}) look for a gnome that can remind you how to do it. {C}) Despite the risk of injuring yourself, try to figure it out on your own. {D}) Use some pottery instead of shoes.", }, npc, creature) npcHandler:setTopic(playerId, 4) elseif npcHandler:getTopic(playerId) == 5 then npcHandler:say({ "Now let us assume you see a gnome in danger. Would you {A}) not care because you must be imagining things. {B}) Save the gnome despite all odds and risk to your own life. ...", - "{C}) Inspire the gnome by singing the gnomish national anthem. {D}) Hide and loot his corpse if he dies." + "{C}) Inspire the gnome by singing the gnomish national anthem. {D}) Hide and loot his corpse if he dies.", }, npc, creature) npcHandler:setTopic(playerId, 6) elseif npcHandler:getTopic(playerId) == 7 then npcHandler:say({ "Imagine you were participating in a gnome-throwing competition. Would you {A}) do some physical calculations in advance to increase your chances of winning. ...", - "{B}) throw the gnome as safely as you can to ensure his safety. {C}) Sabotage the throwing gnomes of your competitors. {D}) Never participate in such an abominable competition." + "{B}) throw the gnome as safely as you can to ensure his safety. {C}) Sabotage the throwing gnomes of your competitors. {D}) Never participate in such an abominable competition.", }, npc, creature) npcHandler:setTopic(playerId, 8) elseif npcHandler:getTopic(playerId) == 9 then npcHandler:say({ "Now imagine you were given the order to guard a valuable and unique mushroom. You guard it for days and no one shows up to release you and you grow hungry. ...", - "Would you {A}) eat your boots. {B}) eat the mushroom. {C}) eat a bit of the mushroom. {D}) stick to your duty and continue starving." + "Would you {A}) eat your boots. {B}) eat the mushroom. {C}) eat a bit of the mushroom. {D}) stick to your duty and continue starving.", }, npc, creature) npcHandler:setTopic(playerId, 10) elseif npcHandler:getTopic(playerId) == 11 then @@ -123,19 +120,19 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 13 then npcHandler:say({ "How many bigfoot does it take to change a light crystal? {A}) Only one since it's a piece of mushroom cake. {B}) Light crystals are delicate products of gnomish science and should only be handled by certified gnomish experts. ...", - "{C}) Three. One to hold the crystal and two to turn him around. {D}) Five. A light crystal turner, a light crystal picker, a light crystal exchanger, a light crystal changing manager and finally a light crystal changing manager assistant." + "{C}) Three. One to hold the crystal and two to turn him around. {D}) Five. A light crystal turner, a light crystal picker, a light crystal exchanger, a light crystal changing manager and finally a light crystal changing manager assistant.", }, npc, creature) npcHandler:setTopic(playerId, 14) elseif npcHandler:getTopic(playerId) == 15 then npcHandler:say({ "What is a pollyfluxed quantumresonator? {A}) Something funny. {B}) Something important. {C}) Something to be destroyed. ...", - "{D}) Sadly I am not a gnome and lack the intelligence and education to know about even the simplest of gnomish inventions." + "{D}) Sadly I am not a gnome and lack the intelligence and education to know about even the simplest of gnomish inventions.", }, npc, creature) npcHandler:setTopic(playerId, 16) elseif npcHandler:getTopic(playerId) == 17 then npcHandler:say({ "If your mushroom patch is infested with cave worms, would you {A}) place some green light crystals to drive them away. {B}) place some disharmonic crystals to drive them away. ...", - "{C}) burn everything down. {D}) switch your diet to cave worms." + "{C}) burn everything down. {D}) switch your diet to cave worms.", }, npc, creature) npcHandler:setTopic(playerId, 18) elseif npcHandler:getTopic(playerId) == 19 then @@ -144,7 +141,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 21 then npcHandler:say({ "On a military campaign what piece of equipment would you need most? ...", - "Is it {A}) some tasty mushroom beer to keep the morale high. {B}) A large backpack to carry all the loot. {C}) A mighty weapon to vanquish the foes. {D}) Mushroom earplugs to be spared of the cries of agony of your opponents?" + "Is it {A}) some tasty mushroom beer to keep the morale high. {B}) A large backpack to carry all the loot. {C}) A mighty weapon to vanquish the foes. {D}) Mushroom earplugs to be spared of the cries of agony of your opponents?", }, npc, creature) npcHandler:setTopic(playerId, 22) elseif npcHandler:getTopic(playerId) == 23 then @@ -292,7 +289,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.BigfootBurden.NeedsBeer, 1) npcHandler:say({ "You have failed the test with " .. player:getStorageValue(Storage.BigfootBurden.Test) .. " of 112 possible points. You probably were just too nervous. ...", - "I suggest you relax a bit with a fresh mushroom beer and we'll start over after that. Gnominus sells some beer. You should find him somewhere in the central chamber." + "I suggest you relax a bit with a fresh mushroom beer and we'll start over after that. Gnominus sells some beer. You should find him somewhere in the central chamber.", }, npc, creature) else npcHandler:say("You have passed the test with " .. player:getStorageValue(Storage.BigfootBurden.Test) .. " of 112 possible points. Congratulations. You are ready to proceed with the more physical parts of your examination! Go and talk to Gnomespector about it.", npc, creature) @@ -309,7 +306,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_GREET, 'Hello and welcome in the gnomish {recruitment} office.') +npcHandler:setMessage(MESSAGE_GREET, "Hello and welcome in the gnomish {recruitment} office.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnomerrow.lua b/data-otservbr-global/npc/gnomerrow.lua index 94f436b0ebf..15c2679fb20 100644 --- a/data-otservbr-global/npc/gnomerrow.lua +++ b/data-otservbr-global/npc/gnomerrow.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 131, lookLegs = 131, lookFeet = 132, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -60,7 +60,7 @@ npcConfig.shop = { { itemName = "crossbow", clientId = 3349, buy = 500 }, { itemName = "quiver", clientId = 35562, buy = 400 }, { itemName = "red quiver", clientId = 35849, buy = 400 }, - { itemName = "spear", clientId = 3277, buy = 10 } + { itemName = "spear", clientId = 3277, buy = 10 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -71,7 +71,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gnomespector.lua b/data-otservbr-global/npc/gnomespector.lua index a5514c597e0..7d5fb54cea9 100644 --- a/data-otservbr-global/npc/gnomespector.lua +++ b/data-otservbr-global/npc/gnomespector.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 59, lookLegs = 59, lookFeet = 58, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -66,7 +66,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.BigfootBurden.QuestLine) == 6 then npcHandler:say({ "Your examination is quite easy. Just step through the green crystal {apparatus} in the south! We will examine you with what we call g-rays. Where g stands for gnome of course ...", - "Afterwards walk up to Gnomedix for your ear examination." + "Afterwards walk up to Gnomedix for your ear examination.", }, npc, creature) player:setStorageValue(Storage.BigfootBurden.QuestLine, 8) npcHandler:setTopic(playerId, 1) @@ -78,7 +78,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_GREET, 'Hello fearless {recruit}.') +npcHandler:setMessage(MESSAGE_GREET, "Hello fearless {recruit}.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnomette.lua b/data-otservbr-global/npc/gnomette.lua index ff3b4f26a02..c805f0a7e68 100644 --- a/data-otservbr-global/npc/gnomette.lua +++ b/data-otservbr-global/npc/gnomette.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 94, lookBody = 72, lookLegs = 115, - lookFeet = 115 + lookFeet = 115, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,7 +52,7 @@ end npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "teleport crystal", clientId = 16167, buy = 150 } + { itemName = "teleport crystal", clientId = 16167, buy = 150 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -63,7 +63,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gnomewart.lua b/data-otservbr-global/npc/gnomewart.lua index 6a9b91b1cb9..1e50d429fcf 100644 --- a/data-otservbr-global/npc/gnomewart.lua +++ b/data-otservbr-global/npc/gnomewart.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 100, lookLegs = 100, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -63,7 +63,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Ah, the test is a piece of mushroomcake! Just take the teleporter over there in the south and follow the hallway. ...", "You'll need to run quite a bit. It is important that you don't give up! Just keep running and running and running and ... I guess you got the idea. ...", - "At the end of the hallway you'll find a teleporter. Step on it and you are done! I'm sure you'll do a true gnomerun! Afterwards talk to me." + "At the end of the hallway you'll find a teleporter. Step on it and you are done! I'm sure you'll do a true gnomerun! Afterwards talk to me.", }, npc, creature) player:setStorageValue(Storage.BigfootBurden.QuestLine, 17) elseif player:getStorageValue(Storage.BigfootBurden.QuestLine) == 17 then @@ -80,7 +80,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_GREET, 'Oh! Hi there! I guess you are here for the {endurance} test!') +npcHandler:setMessage(MESSAGE_GREET, "Oh! Hi there! I guess you are here for the {endurance} test!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnomfurry.lua b/data-otservbr-global/npc/gnomfurry.lua index 567e0459967..f7b0076461c 100644 --- a/data-otservbr-global/npc/gnomfurry.lua +++ b/data-otservbr-global/npc/gnomfurry.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 100, lookLegs = 96, lookFeet = 115, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -63,7 +63,7 @@ npcConfig.shop = { { itemName = "mug of lemonade", clientId = 2880, buy = 2, count = 12 }, { itemName = "mug of water", clientId = 2880, buy = 2, count = 1 }, { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 }, - { itemName = "tomato", clientId = 3596, buy = 3 } + { itemName = "tomato", clientId = 3596, buy = 3 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -74,7 +74,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gnomillion.lua b/data-otservbr-global/npc/gnomillion.lua index dfba88e610b..4fbf37eb04c 100644 --- a/data-otservbr-global/npc/gnomillion.lua +++ b/data-otservbr-global/npc/gnomillion.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 98, lookLegs = 98, lookFeet = 60, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/gnomilly.lua b/data-otservbr-global/npc/gnomilly.lua index 86d4188da91..62244c6f635 100644 --- a/data-otservbr-global/npc/gnomilly.lua +++ b/data-otservbr-global/npc/gnomilly.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 15, lookLegs = 91, lookFeet = 92, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,90 +52,90 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if MsgContains(message, 'job') then - return npcHandler:say('I\'m the officer responsible for this area. I give out missions, accept mission reports and oversee our defences.', npc, creature) + if MsgContains(message, "job") then + return npcHandler:say("I'm the officer responsible for this area. I give out missions, accept mission reports and oversee our defences.", npc, creature) end - if MsgContains(message, 'gnome') then - return npcHandler:say('We are the only protectors of the world against the enemies below. With small stature comes great responsibilities, as they say.', npc, creature) + if MsgContains(message, "gnome") then + return npcHandler:say("We are the only protectors of the world against the enemies below. With small stature comes great responsibilities, as they say.", npc, creature) end - if MsgContains(message, 'area') then + if MsgContains(message, "area") then return npcHandler:say({ "On these levels we found evidence of some monumental battle that has taken place here centuries ago. We also found some grave sites, but oddly enough no clues of any form of settlement. ...", "Some evidence we have found suggests that at least one of the battles here was fought for many, many years. People came here, lived here, fought here and died here. ...", "The battles continued until someone or something literally ploughed through the battlefields, turning everything upside down. All this killing and death soaked the area with negative energy. ...", "Necromantic forces are running wild all over the place and we are hard-pressed to drive all these undead, spirits and ghosts, away from the Spike. ...", "Unless we can secure that area somehow, the Spike operation is threatened to become crippled by the constant attacks of the undead. ...", - "The whole growing downwards could come to a halt, leaving us exposed to even more attacks, counter attacks, and giving the enemy time to prepare their defences. There's a lot to do for aspiring adventurers." + "The whole growing downwards could come to a halt, leaving us exposed to even more attacks, counter attacks, and giving the enemy time to prepare their defences. There's a lot to do for aspiring adventurers.", }, npc, creature) end - if MsgContains(message, 'mission') then + if MsgContains(message, "mission") then if player:getLevel() > levels[2] then - npcHandler:say('Sorry, but no! Your expertise could be put to better use elsewhere. Here awaits you no challenge. You are desperately needed in the deeper levels of the Spike. Report there immediately. ', npc, creature) + npcHandler:say("Sorry, but no! Your expertise could be put to better use elsewhere. Here awaits you no challenge. You are desperately needed in the deeper levels of the Spike. Report there immediately. ", npc, creature) else - npcHandler:say('I can offer you several missions: to recharge our ghost {pacifiers}, to {release} the spiritual anger, to {track} an evil presence and to {kill} some demon skeletons.', npc, creature) + npcHandler:say("I can offer you several missions: to recharge our ghost {pacifiers}, to {release} the spiritual anger, to {track} an evil presence and to {kill} some demon skeletons.", npc, creature) end return end - if MsgContains(message, 'report') then - talkState[playerId] = 'report' - return npcHandler:say('What mission do you want to report about: recharging the ghost {pacifiers}, the {release} of the spiritual anger, about {tracking} an evil presence and the {killing} of demon skeletons?', npc, creature) + if MsgContains(message, "report") then + talkState[playerId] = "report" + return npcHandler:say("What mission do you want to report about: recharging the ghost {pacifiers}, the {release} of the spiritual anger, about {tracking} an evil presence and the {killing} of demon skeletons?", npc, creature) end - if talkState[playerId] == 'report' then - if MsgContains(message, 'pacifiers') then + if talkState[playerId] == "report" then + if MsgContains(message, "pacifiers") then if player:getStorageValue(SPIKE_UPPER_PACIFIER_MAIN) == -1 then - npcHandler:say('You have not started that mission.', npc, creature) + npcHandler:say("You have not started that mission.", npc, creature) elseif player:getStorageValue(SPIKE_UPPER_PACIFIER_MAIN) == 7 then - npcHandler:say('You have done well. Here, take your reward.', npc, creature) + npcHandler:say("You have done well. Here, take your reward.", npc, creature) player:addFamePoint() player:addExperience(1000, true) player:setStorageValue(SPIKE_UPPER_PACIFIER_MAIN, -1) player:setStorageValue(SPIKE_UPPER_PACIFIER_DAILY, 86400) else - npcHandler:say('Gnowful! Take the resonance charger and use it on seven of the pacifiers in the cave.', npc, creature) + npcHandler:say("Gnowful! Take the resonance charger and use it on seven of the pacifiers in the cave.", npc, creature) end - elseif MsgContains(message, 'release') then + elseif MsgContains(message, "release") then if player:getStorageValue(SPIKE_UPPER_MOUND_MAIN) == -1 then - npcHandler:say('You have not started that mission.', npc, creature) + npcHandler:say("You have not started that mission.", npc, creature) elseif player:getStorageValue(SPIKE_UPPER_MOUND_MAIN) == 4 then - npcHandler:say('You have done well. Here, take your reward.', npc, creature) + npcHandler:say("You have done well. Here, take your reward.", npc, creature) player:addFamePoint() player:addExperience(1000, true) player:setStorageValue(SPIKE_UPPER_MOUND_MAIN, -1) player:setStorageValue(SPIKE_UPPER_MOUND_DAILY, 86400) else - npcHandler:say('Gnowful! Take the spirit shovel use it on four graves in the cave system.', npc, creature) + npcHandler:say("Gnowful! Take the spirit shovel use it on four graves in the cave system.", npc, creature) end - elseif MsgContains(message, 'tracking') then + elseif MsgContains(message, "tracking") then if player:getStorageValue(SPIKE_UPPER_TRACK_MAIN) == -1 then - npcHandler:say('You have not started that mission.', npc, creature) + npcHandler:say("You have not started that mission.", npc, creature) elseif player:getStorageValue(SPIKE_UPPER_TRACK_MAIN) == 3 then - npcHandler:say('You have done well. Here, take your reward.', npc, creature) + npcHandler:say("You have done well. Here, take your reward.", npc, creature) player:addFamePoint() player:addExperience(1000, true) player:setStorageValue(SPIKE_UPPER_TRACK_MAIN, -1) player:setStorageValue(SPIKE_UPPER_TRACK_DAILY, 86400) else - npcHandler:say('Gnowful! Take the tracking device in the caves and locate the residual spirit energy.', npc, creature) + npcHandler:say("Gnowful! Take the tracking device in the caves and locate the residual spirit energy.", npc, creature) end - elseif MsgContains(message, 'killing') then + elseif MsgContains(message, "killing") then if player:getStorageValue(SPIKE_UPPER_KILL_MAIN) == -1 then - npcHandler:say('You have not started that mission.', npc, creature) + npcHandler:say("You have not started that mission.", npc, creature) elseif player:getStorageValue(SPIKE_UPPER_KILL_MAIN) == 7 then - npcHandler:say('You have done well. Here, take your reward.', npc, creature) + npcHandler:say("You have done well. Here, take your reward.", npc, creature) player:addFamePoint() player:addExperience(1000, true) player:setStorageValue(SPIKE_UPPER_KILL_MAIN, -1) player:setStorageValue(SPIKE_UPPER_KILL_DAILY, 86400) else - npcHandler:say('Gnowful! Just go out to the caves and kill at least seven demon skeletons.', npc, creature) + npcHandler:say("Gnowful! Just go out to the caves and kill at least seven demon skeletons.", npc, creature) end else - npcHandler:say('That\'s not a valid mission name.', npc, creature) + npcHandler:say("That's not a valid mission name.", npc, creature) end talkState[playerId] = nil return @@ -144,31 +144,31 @@ local function creatureSayCallback(npc, creature, type, message) --[[/////////////////// ////GHOST PACIFIERS//// /////////////////////]] - if MsgContains(message, 'pacifiers') then + if MsgContains(message, "pacifiers") then if player:getStorageValue(SPIKE_UPPER_PACIFIER_DAILY) >= os.time() then - return npcHandler:say('Sorry, you have to wait ' .. string.diff(player:getStorageValue(SPIKE_UPPER_PACIFIER_DAILY) - os.time()) .. ' before this task gets available again.', npc, creature) + return npcHandler:say("Sorry, you have to wait " .. string.diff(player:getStorageValue(SPIKE_UPPER_PACIFIER_DAILY) - os.time()) .. " before this task gets available again.", npc, creature) end if (player:getLevel() < levels[1]) or (player:getLevel() > levels[2]) then - return npcHandler:say('Sorry, you are not on the required range of levels [' .. levels[1] .. '-' .. levels[2] .. '].', npc, creature) + return npcHandler:say("Sorry, you are not on the required range of levels [" .. levels[1] .. "-" .. levels[2] .. "].", npc, creature) end if player:getStorageValue(SPIKE_UPPER_PACIFIER_MAIN) == -1 then - npcHandler:say({ 'We need you to recharge our ghost pacifiers. They are placed at several strategic points in the caves around us and should be easy to find. Your mission would be to charge seven of them.', 'If you are interested, I can give you some more {information} about it. Are you willing to accept this mission?' }, npc, creature) - talkState[playerId] = 'pacifiers' + npcHandler:say({ "We need you to recharge our ghost pacifiers. They are placed at several strategic points in the caves around us and should be easy to find. Your mission would be to charge seven of them.", "If you are interested, I can give you some more {information} about it. Are you willing to accept this mission?" }, npc, creature) + talkState[playerId] = "pacifiers" else - npcHandler:say('You have already started that mission.', npc, creature) + npcHandler:say("You have already started that mission.", npc, creature) end end - if talkState[playerId] == 'pacifiers' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "pacifiers" then + if MsgContains(message, "yes") then player:addItem(19204, 1) player:setStorageValue(SPIKE_UPPER_PACIFIER_MAIN, 0) - npcHandler:say('Gnometastic! Take this resonance charger and use it on seven of the pacifiers in the cave. If you lose the charger, you\'ll have to bring your own. Gnomux sells all the equipment that is required for our missions.', npc, creature) + npcHandler:say("Gnometastic! Take this resonance charger and use it on seven of the pacifiers in the cave. If you lose the charger, you'll have to bring your own. Gnomux sells all the equipment that is required for our missions.", npc, creature) talkState[playerId] = nil - elseif MsgContains(message, 'no') then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Ok then.", npc, creature) talkState[playerId] = nil end end @@ -176,31 +176,31 @@ local function creatureSayCallback(npc, creature, type, message) --[[/////////////////// ////SPIRIT RELEASE///// /////////////////////]] - if MsgContains(message, 'release') then + if MsgContains(message, "release") then if player:getStorageValue(SPIKE_UPPER_MOUND_DAILY) >= os.time() then - return npcHandler:say('Sorry, you have to wait ' .. string.diff(player:getStorageValue(SPIKE_UPPER_MOUND_DAILY) - os.time()) .. ' before this task gets available again.', npc, creature) + return npcHandler:say("Sorry, you have to wait " .. string.diff(player:getStorageValue(SPIKE_UPPER_MOUND_DAILY) - os.time()) .. " before this task gets available again.", npc, creature) end if (player:getLevel() < levels[1]) or (player:getLevel() > levels[2]) then - return npcHandler:say('Sorry, you are not on the required range of levels [' .. levels[1] .. '-' .. levels[2] .. '].', npc, creature) + return npcHandler:say("Sorry, you are not on the required range of levels [" .. levels[1] .. "-" .. levels[2] .. "].", npc, creature) end if player:getStorageValue(SPIKE_UPPER_MOUND_MAIN) == -1 then - npcHandler:say('Your task would be to use a spirit shovel to release some spirit\'s anger from graves that can be found all around here. If you are interested, I can give you some more information about it. Are you willing to accept this mission?', npc, creature) - talkState[playerId] = 'release' + npcHandler:say("Your task would be to use a spirit shovel to release some spirit's anger from graves that can be found all around here. If you are interested, I can give you some more information about it. Are you willing to accept this mission?", npc, creature) + talkState[playerId] = "release" else - npcHandler:say('You have already started that mission.', npc, creature) + npcHandler:say("You have already started that mission.", npc, creature) end end - if talkState[playerId] == 'release' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "release" then + if MsgContains(message, "yes") then player:addItem(19203, 1) player:setStorageValue(SPIKE_UPPER_MOUND_MAIN, 0) - npcHandler:say('Gnometastic! Take this spirit shovel and use it on four graves in the cave system. If you lose the shovel you\'ll have to bring your own. Gnomux sells all the equipment that is required for our missions.', npc, creature) + npcHandler:say("Gnometastic! Take this spirit shovel and use it on four graves in the cave system. If you lose the shovel you'll have to bring your own. Gnomux sells all the equipment that is required for our missions.", npc, creature) talkState[playerId] = nil - elseif MsgContains(message, 'no') then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Ok then.", npc, creature) talkState[playerId] = nil end end @@ -208,34 +208,36 @@ local function creatureSayCallback(npc, creature, type, message) --[[///////////////// ////TRACK GHOSTS///// ///////////////////]] - if MsgContains(message, 'track') then + if MsgContains(message, "track") then if player:getStorageValue(SPIKE_UPPER_TRACK_DAILY) >= os.time() then - return npcHandler:say('Sorry, you have to wait ' .. string.diff(player:getStorageValue(SPIKE_UPPER_TRACK_DAILY) - os.time()) .. ' before this task gets available again.', npc, creature) + return npcHandler:say("Sorry, you have to wait " .. string.diff(player:getStorageValue(SPIKE_UPPER_TRACK_DAILY) - os.time()) .. " before this task gets available again.", npc, creature) end if (player:getLevel() < levels[1]) or (player:getLevel() > levels[2]) then - return npcHandler:say('Sorry, you are not on the required range of levels [' .. levels[1] .. '-' .. levels[2] .. '].', npc, creature) + return npcHandler:say("Sorry, you are not on the required range of levels [" .. levels[1] .. "-" .. levels[2] .. "].", npc, creature) end if player:getStorageValue(SPIKE_UPPER_TRACK_MAIN) == -1 then npcHandler:say( - { 'You\'d be given the highly important task to track down an enormously malevolent spiritual presence in the cave system. Use your tracking device to find out how close you are to the presence.', 'Use that information to find the residual energy and use the tracker there. If you are interested, I can give you some more information about it. Are you willing to accept this mission?' }, npc, - creature) - talkState[playerId] = 'track' + { "You'd be given the highly important task to track down an enormously malevolent spiritual presence in the cave system. Use your tracking device to find out how close you are to the presence.", "Use that information to find the residual energy and use the tracker there. If you are interested, I can give you some more information about it. Are you willing to accept this mission?" }, + npc, + creature + ) + talkState[playerId] = "track" else - npcHandler:say('You have already started that mission.', npc, creature) + npcHandler:say("You have already started that mission.", npc, creature) end end - if talkState[playerId] == 'track' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "track" then + if MsgContains(message, "yes") then GHOST_DETECTOR_MAP[player:getGuid()] = Position.getFreeSand() player:addItem(19205, 1) player:setStorageValue(SPIKE_UPPER_TRACK_MAIN, 0) - npcHandler:say('Gnometastic! Use this tracking device in the caves and locate the residual spirit energy. If you lose the tracking device, you\'ll have to bring your own. Gnomux sells all the equipment that is required for our missions.', npc, creature) + npcHandler:say("Gnometastic! Use this tracking device in the caves and locate the residual spirit energy. If you lose the tracking device, you'll have to bring your own. Gnomux sells all the equipment that is required for our missions.", npc, creature) talkState[playerId] = nil - elseif MsgContains(message, 'no') then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Ok then.", npc, creature) talkState[playerId] = nil end end @@ -243,30 +245,30 @@ local function creatureSayCallback(npc, creature, type, message) --[[///////// ////KILL///// ///////////]] - if MsgContains(message, 'kill') then + if MsgContains(message, "kill") then if player:getStorageValue(SPIKE_UPPER_KILL_DAILY) >= os.time() then - return npcHandler:say('Sorry, you have to wait ' .. string.diff(player:getStorageValue(SPIKE_UPPER_KILL_DAILY) - os.time()) .. ' before this task gets available again.', npc, creature) + return npcHandler:say("Sorry, you have to wait " .. string.diff(player:getStorageValue(SPIKE_UPPER_KILL_DAILY) - os.time()) .. " before this task gets available again.", npc, creature) end if (player:getLevel() < levels[1]) or (player:getLevel() > levels[2]) then - return npcHandler:say('Sorry, you are not on the required range of levels [' .. levels[1] .. '-' .. levels[2] .. '].', npc, creature) + return npcHandler:say("Sorry, you are not on the required range of levels [" .. levels[1] .. "-" .. levels[2] .. "].", npc, creature) end if player:getStorageValue(SPIKE_UPPER_KILL_MAIN) == -1 then - npcHandler:say('We need someone to reduce the steadily growing number of demon skeletons in the caves. If you are interested, I can give you some more information about it. Are you willing to accept this mission?', npc, creature) - talkState[playerId] = 'kill' + npcHandler:say("We need someone to reduce the steadily growing number of demon skeletons in the caves. If you are interested, I can give you some more information about it. Are you willing to accept this mission?", npc, creature) + talkState[playerId] = "kill" else - npcHandler:say('You have already started that mission.', npc, creature) + npcHandler:say("You have already started that mission.", npc, creature) end end - if talkState[playerId] == 'kill' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "kill" then + if MsgContains(message, "yes") then player:setStorageValue(SPIKE_UPPER_KILL_MAIN, 0) - npcHandler:say('Gnometastic! Just go out and kill them. You should find more of them than you like.', npc, creature) + npcHandler:say("Gnometastic! Just go out and kill them. You should find more of them than you like.", npc, creature) talkState[playerId] = nil - elseif MsgContains(message, 'no') then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Ok then.", npc, creature) talkState[playerId] = nil end end diff --git a/data-otservbr-global/npc/gnomincia.lua b/data-otservbr-global/npc/gnomincia.lua index 02c5514a948..6c4bb022622 100644 --- a/data-otservbr-global/npc/gnomincia.lua +++ b/data-otservbr-global/npc/gnomincia.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 94, lookFeet = 52, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,7 +53,7 @@ end npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "teleport crystal", clientId = 16167, buy = 150 } + { itemName = "teleport crystal", clientId = 16167, buy = 150 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -64,7 +64,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gnominer.lua b/data-otservbr-global/npc/gnominer.lua index 97dceb78845..4fe4656927b 100644 --- a/data-otservbr-global/npc/gnominer.lua +++ b/data-otservbr-global/npc/gnominer.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 81, lookLegs = 81, lookFeet = 94, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,11 +50,11 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = 'Hello and welcome in the Gnomprona Gardens' }) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Hello and welcome in the Gnomprona Gardens" }) -keywordHandler:addAliasKeyword({ 'hello' }) +keywordHandler:addAliasKeyword({ "hello" }) -npcHandler:setMessage(MESSAGE_GREET, 'Hello and welcome in the Gnomprona Gardens') +npcHandler:setMessage(MESSAGE_GREET, "Hello and welcome in the Gnomprona Gardens") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnominus.lua b/data-otservbr-global/npc/gnominus.lua index 8759ec0d7b7..8e69e64fb53 100644 --- a/data-otservbr-global/npc/gnominus.lua +++ b/data-otservbr-global/npc/gnominus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 85, lookLegs = 85, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,44 +59,44 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'recruitment') then + if MsgContains(message, "recruitment") then if player:getStorageValue(Storage.BigfootBurden.QuestLine) == 3 then - npcHandler:say('Your examination is quite easy. Just step through the green crystal apparatus in the south! We will examine you with what we call g-rays. Where g stands for gnome of course ...', npc, creature) - npcHandler:say('Afterwards walk up to Gnomedix for your ear examination.', npc, creature) + npcHandler:say("Your examination is quite easy. Just step through the green crystal apparatus in the south! We will examine you with what we call g-rays. Where g stands for gnome of course ...", npc, creature) + npcHandler:say("Afterwards walk up to Gnomedix for your ear examination.", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'tavern') then - npcHandler:say('I provide the population with some fresh alcohol-free mushroom {beer}!', npc, creature) - elseif MsgContains(message, 'beer') then - npcHandler:say('Do you want some mushroom beer for 10 gold?', npc, creature) + elseif MsgContains(message, "tavern") then + npcHandler:say("I provide the population with some fresh alcohol-free mushroom {beer}!", npc, creature) + elseif MsgContains(message, "beer") then + npcHandler:say("Do you want some mushroom beer for 10 gold?", npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'apparatus') then - npcHandler:say('Don\'t be afraid. It won\'t hurt! Just step in!', npc, creature) + if MsgContains(message, "apparatus") then + npcHandler:say("Don't be afraid. It won't hurt! Just step in!", npc, creature) player:setStorageValue(Storage.BigfootBurden.QuestLine, 4) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if player:getMoney() + player:getBankBalance() >= 10 then - npcHandler:say('And here it is! Drink it quick, it gets stale quite fast!', npc, creature) + npcHandler:say("And here it is! Drink it quick, it gets stale quite fast!", npc, creature) player:removeMoneyBank(10) local beerItem = player:addItem(15794) if beerItem then beerItem:decay() end else - npcHandler:say('You do not have enough money.', npc, creature) + npcHandler:say("You do not have enough money.", npc, creature) end else - npcHandler:say('Come back later.', npc, creature) + npcHandler:say("Come back later.", npc, creature) end npcHandler:setTopic(playerId, 0) end return true end -npcHandler:setMessage(MESSAGE_GREET, 'Hi there! Welcome to my little {tavern}.') +npcHandler:setMessage(MESSAGE_GREET, "Hi there! Welcome to my little {tavern}.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnomish_operative_cathing.lua b/data-otservbr-global/npc/gnomish_operative_cathing.lua index 73241ec9bd7..ea2d4c681db 100644 --- a/data-otservbr-global/npc/gnomish_operative_cathing.lua +++ b/data-otservbr-global/npc/gnomish_operative_cathing.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 104, lookLegs = 76, lookFeet = 38, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,10 +50,10 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = 'Hello and welcome in the Gnomprona Gardens' }) -keywordHandler:addAliasKeyword({ 'hello' }) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Hello and welcome in the Gnomprona Gardens" }) +keywordHandler:addAliasKeyword({ "hello" }) -npcHandler:setMessage(MESSAGE_GREET, 'Hello and welcome in the Gnomprona Gardens') +npcHandler:setMessage(MESSAGE_GREET, "Hello and welcome in the Gnomprona Gardens") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnomish_operative_gt-m-01.lua b/data-otservbr-global/npc/gnomish_operative_gt-m-01.lua index 79bfa4e065a..3dd5e51b5c2 100644 --- a/data-otservbr-global/npc/gnomish_operative_gt-m-01.lua +++ b/data-otservbr-global/npc/gnomish_operative_gt-m-01.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 78, lookLegs = 76, lookFeet = 113, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,10 +50,10 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = 'Hello and welcome in the Gnomprona Gardens' }) -keywordHandler:addAliasKeyword({ 'hello' }) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Hello and welcome in the Gnomprona Gardens" }) +keywordHandler:addAliasKeyword({ "hello" }) -npcHandler:setMessage(MESSAGE_GREET, 'Hello and welcome in the Gnomprona Gardens') +npcHandler:setMessage(MESSAGE_GREET, "Hello and welcome in the Gnomprona Gardens") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnomish_operative_raiders.lua b/data-otservbr-global/npc/gnomish_operative_raiders.lua index abe054a1854..51a63125994 100644 --- a/data-otservbr-global/npc/gnomish_operative_raiders.lua +++ b/data-otservbr-global/npc/gnomish_operative_raiders.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 58, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,10 +50,10 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = 'Hello and welcome in the Gnomprona Gardens' }) -keywordHandler:addAliasKeyword({ 'hello' }) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Hello and welcome in the Gnomprona Gardens" }) +keywordHandler:addAliasKeyword({ "hello" }) -npcHandler:setMessage(MESSAGE_GREET, 'Hello and welcome in the Gnomprona Gardens') +npcHandler:setMessage(MESSAGE_GREET, "Hello and welcome in the Gnomprona Gardens") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnomish_operative_resonating.lua b/data-otservbr-global/npc/gnomish_operative_resonating.lua index 13cdac6afa4..da19f8d046b 100644 --- a/data-otservbr-global/npc/gnomish_operative_resonating.lua +++ b/data-otservbr-global/npc/gnomish_operative_resonating.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 66, lookFeet = 121, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,10 +50,10 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = 'Hello and welcome in the Gnomprona Gardens' }) -keywordHandler:addAliasKeyword({ 'hello' }) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Hello and welcome in the Gnomprona Gardens" }) +keywordHandler:addAliasKeyword({ "hello" }) -npcHandler:setMessage(MESSAGE_GREET, 'Hello and welcome in the Gnomprona Gardens') +npcHandler:setMessage(MESSAGE_GREET, "Hello and welcome in the Gnomprona Gardens") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnomish_operative_volcano.lua b/data-otservbr-global/npc/gnomish_operative_volcano.lua index dfb99cf340a..1472ee0cdd6 100644 --- a/data-otservbr-global/npc/gnomish_operative_volcano.lua +++ b/data-otservbr-global/npc/gnomish_operative_volcano.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 79, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,10 +50,10 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = 'Hello and welcome in the Gnomprona Gardens' }) -keywordHandler:addAliasKeyword({ 'hello' }) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Hello and welcome in the Gnomprona Gardens" }) +keywordHandler:addAliasKeyword({ "hello" }) -npcHandler:setMessage(MESSAGE_GREET, 'Hello and welcome in the Gnomprona Gardens') +npcHandler:setMessage(MESSAGE_GREET, "Hello and welcome in the Gnomprona Gardens") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/gnomission.lua b/data-otservbr-global/npc/gnomission.lua index 3f74a5d90ef..06544edc59a 100644 --- a/data-otservbr-global/npc/gnomission.lua +++ b/data-otservbr-global/npc/gnomission.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 115, lookLegs = 100, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,27 +58,26 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if (MsgContains(message, "warzones")) then + if MsgContains(message, "warzones") then npcHandler:say({ "There are three warzones. In each warzone you will find fearsome foes. At the end you'll find their mean master. The masters is well protected though. ...", "Make sure to talk to our gnomish agent in there for specifics of its' protection. ...", "Oh, and to be able to enter the second warzone you have to best the first. To enter the third you have to best the second. ...", - "And you can enter each one only once every twenty hours. Your normal teleport crystals won't work on these teleporters. You will have to get {mission} crystals from Gnomally." + "And you can enter each one only once every twenty hours. Your normal teleport crystals won't work on these teleporters. You will have to get {mission} crystals from Gnomally.", }, npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "job")) then + elseif MsgContains(message, "job") then npcHandler:say("I am responsible for our war {missions}, to {trade} with seasoned soldiers and rewarding war {heroes}. You have to be rank 4 to enter the {warzones}.", npc, creature) npcHandler:setTopic(playerId, 2) - elseif (MsgContains(message, "heroes")) then + elseif MsgContains(message, "heroes") then if npcHandler:getTopic(playerId) == 2 then npcHandler:say({ "You can trade special spoils of war to get a permission to use the war teleporters to the area of the corresponding boss without need of mission crystals. ...", - "Which one would you like to trade: the deathstrike's {snippet}, gnomevil's {hat} or the abyssador {lash}?" + "Which one would you like to trade: the deathstrike's {snippet}, gnomevil's {hat} or the abyssador {lash}?", }, npc, creature) npcHandler:setTopic(playerId, 3) end - elseif (MsgContains(message, "snippet")) then + elseif MsgContains(message, "snippet") then if npcHandler:getTopic(playerId) == 3 then if player:getStorageValue(Storage.BigfootBurden.Rank) < 1440 then npcHandler:say("It seems you did not even set one big foot into the warzone, I am sorry.") @@ -96,7 +95,7 @@ local function creatureSayCallback(npc, creature, type, message) end end end - elseif (MsgContains(message, "lash")) then + elseif MsgContains(message, "lash") then if npcHandler:getTopic(playerId) == 3 then if player:getStorageValue(Storage.BigfootBurden.Rank) < 1440 then npcHandler:say("It seems you did not even set one big foot into the warzone, I am sorry.") @@ -118,7 +117,7 @@ local function creatureSayCallback(npc, creature, type, message) end end end - elseif (MsgContains(message, "hat")) then + elseif MsgContains(message, "hat") then if npcHandler:getTopic(playerId) == 3 then if player:getStorageValue(Storage.BigfootBurden.Rank) < 1440 then npcHandler:say("It seems you did not even set one big foot into the warzone, I am sorry.") @@ -140,7 +139,7 @@ local function creatureSayCallback(npc, creature, type, message) end end end - elseif (MsgContains(message, "mission")) then + elseif MsgContains(message, "mission") then if npcHandler:getTopic(playerId) == 1 then if player:getStorageValue(Storage.BigfootBurden.Rank) >= 1440 then if player:getStorageValue(Storage.BigfootBurden.WarzoneStatus) < 1 then @@ -159,11 +158,11 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_GREET, 'Hello |PLAYERNAME|. You are probably eager to enter the {warzones}.') +npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|. You are probably eager to enter the {warzones}.") local function onTradeRequest(npc, creature) if Player(creature):getStorageValue(Storage.BigfootBurden.BossKills) < 20 then - npcHandler:say('Only if you have killed 20 of our major enemies in the warzones I am allowed to trade with you.', npc, creature) + npcHandler:say("Only if you have killed 20 of our major enemies in the warzones I am allowed to trade with you.", npc, creature) return false end return true @@ -228,7 +227,7 @@ npcConfig.shop = { { itemName = "trophy of obujos", clientId = 14002, sell = 3000 }, { itemName = "trophy of tanjis", clientId = 14004, sell = 2000 }, { itemName = "unholy book", clientId = 6103, sell = 30000 }, - { itemName = "windborn colossus armor", clientId = 8055, sell = 50000 } + { itemName = "windborn colossus armor", clientId = 8055, sell = 50000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -239,7 +238,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gnommander.lua b/data-otservbr-global/npc/gnommander.lua index 11fd2846aa3..cdcfe7127c0 100644 --- a/data-otservbr-global/npc/gnommander.lua +++ b/data-otservbr-global/npc/gnommander.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 39, lookFeet = 38, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -34,7 +34,7 @@ local speech = { "At first it was conceived as a fast growing resource node. Then it was planned to become the prototype of a new type of high security base.", "Now it has become a military base and a weapon. With our foes occupied elsewhere, we can prepare our strike into the depths of the earth.", "This crystal can withstand extreme pressure and temperature, and it's growing deeper and deeper even as we speak.", - "The times of the fastest growth have come to an end, however, and we have to slow down in order not to risk the structural integrity of the Spike. But we are on our way and have to do everything possible to defend the Spike." + "The times of the fastest growth have come to an end, however, and we have to slow down in order not to risk the structural integrity of the Spike. But we are on our way and have to do everything possible to defend the Spike.", } npcType.onAppear = function(npc, creature) npcHandler:onAppear(npc, creature) @@ -60,113 +60,113 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if MsgContains(message, 'commander') then - return npcHandler:say('I\'m responsible for the security and reward heroes to our cause. If you are looking for missions, talk to Gnomilly, Gnombold and Gnomagery.', npc, creature) + if MsgContains(message, "commander") then + return npcHandler:say("I'm responsible for the security and reward heroes to our cause. If you are looking for missions, talk to Gnomilly, Gnombold and Gnomagery.", npc, creature) end - if MsgContains(message, 'reward') then - return npcHandler:say('I can sell special outfit parts. If your fame is high enough, you might be {worthy} of such a reward.', npc, creature) + if MsgContains(message, "reward") then + return npcHandler:say("I can sell special outfit parts. If your fame is high enough, you might be {worthy} of such a reward.", npc, creature) end - if MsgContains(message, 'spike') then + if MsgContains(message, "spike") then return npcHandler:say(speech, npc, creature) end - if MsgContains(message, 'worthy') then + if MsgContains(message, "worthy") then if player:getFamePoints() < 100 then - return npcHandler:say('You are not worthy of a special reward yet.', npc, creature) + return npcHandler:say("You are not worthy of a special reward yet.", npc, creature) end - talkState[playerId] = 'worthy' - return npcHandler:say('You can acquire the {basic} outfit for 1000 Gold, the {first} addon for 2000 gold and the {second} addon for 3000 gold. Which do you want to buy?', npc, creature) + talkState[playerId] = "worthy" + return npcHandler:say("You can acquire the {basic} outfit for 1000 Gold, the {first} addon for 2000 gold and the {second} addon for 3000 gold. Which do you want to buy?", npc, creature) end - if talkState[playerId] == 'worthy' then - if MsgContains(message, 'basic') then + if talkState[playerId] == "worthy" then + if MsgContains(message, "basic") then if getPlayerLevel(creature) < 25 then talkState[playerId] = nil - return npcHandler:say('You do not have enough level yet.', npc, creature) + return npcHandler:say("You do not have enough level yet.", npc, creature) end if player:hasOutfit(player:getSex() == 0 and 575 or 574) then talkState[playerId] = nil - return npcHandler:say('You already have that outfit.', npc, creature) + return npcHandler:say("You already have that outfit.", npc, creature) end - talkState[playerId] = 'basic' - return npcHandler:say('Do you want to buy the basic outfit for 1000 Gold?', npc, creature) - elseif MsgContains(message, 'first') then + talkState[playerId] = "basic" + return npcHandler:say("Do you want to buy the basic outfit for 1000 Gold?", npc, creature) + elseif MsgContains(message, "first") then if getPlayerLevel(creature) < 50 then talkState[playerId] = nil - return npcHandler:say('You do not have enough level yet.', npc, creature) + return npcHandler:say("You do not have enough level yet.", npc, creature) end if not player:hasOutfit(player:getSex() == 0 and 575 or 574) then talkState[playerId] = nil - return npcHandler:say('You do not have the Cave Explorer outfit.', npc, creature) + return npcHandler:say("You do not have the Cave Explorer outfit.", npc, creature) end if player:hasOutfit(player:getSex() == 0 and 575 or 574, 1) then talkState[playerId] = nil - return npcHandler:say('You already have that addon.', npc, creature) + return npcHandler:say("You already have that addon.", npc, creature) end - talkState[playerId] = 'first' - return npcHandler:say('Do you want to buy the first addon for 2000 Gold?', npc, creature) - elseif MsgContains(message, 'second') then + talkState[playerId] = "first" + return npcHandler:say("Do you want to buy the first addon for 2000 Gold?", npc, creature) + elseif MsgContains(message, "second") then if getPlayerLevel(creature) < 80 then talkState[playerId] = nil - return npcHandler:say('You do not have enough level yet.', npc, creature) + return npcHandler:say("You do not have enough level yet.", npc, creature) end if not player:hasOutfit(player:getSex() == 0 and 575 or 574) then talkState[playerId] = nil - return npcHandler:say('You do not have the Cave Explorer outfit.', npc, creature) + return npcHandler:say("You do not have the Cave Explorer outfit.", npc, creature) end if player:hasOutfit(player:getSex() == 0 and 575 or 574, 2) then talkState[playerId] = nil - return npcHandler:say('You already have that addon.', npc, creature) + return npcHandler:say("You already have that addon.", npc, creature) end - talkState[playerId] = 'second' - return npcHandler:say('Do you want to buy the second addon for 3000 Gold?', npc, creature) + talkState[playerId] = "second" + return npcHandler:say("Do you want to buy the second addon for 3000 Gold?", npc, creature) end end - if talkState[playerId] == 'basic' then - if MsgContains(message, 'yes') then + if talkState[playerId] == "basic" then + if MsgContains(message, "yes") then if not player:removeMoney(1000) then talkState[playerId] = nil - return npcHandler:say('You do not have that money.', npc, creature) + return npcHandler:say("You do not have that money.", npc, creature) end end player:removeFamePoints(100) player:addOutfit(player:getSex() == 0 and 575 or 574) talkState[playerId] = nil - return npcHandler:say('Here it is.', npc, creature) - elseif talkState[playerId] == 'first' then - if MsgContains(message, 'yes') then + return npcHandler:say("Here it is.", npc, creature) + elseif talkState[playerId] == "first" then + if MsgContains(message, "yes") then if not player:removeMoney(2000) then talkState[playerId] = nil - return npcHandler:say('You do not have that money.', npc, creature) + return npcHandler:say("You do not have that money.", npc, creature) end end player:removeFamePoints(100) player:addOutfitAddon(player:getSex() == 0 and 575 or 574, 1) talkState[playerId] = nil - return npcHandler:say('Here it is.', npc, creature) - elseif talkState[playerId] == 'second' then - if MsgContains(message, 'yes') then + return npcHandler:say("Here it is.", npc, creature) + elseif talkState[playerId] == "second" then + if MsgContains(message, "yes") then if not player:removeMoney(3000) then talkState[playerId] = nil - return npcHandler:say('You do not have that money.', npc, creature) + return npcHandler:say("You do not have that money.", npc, creature) end end player:removeFamePoints(100) player:addOutfitAddon(player:getSex() == 0 and 575 or 574, 2) talkState[playerId] = nil - return npcHandler:say('Here it is.', npc, creature) + return npcHandler:say("Here it is.", npc, creature) end return true end diff --git a/data-otservbr-global/npc/gnomole.lua b/data-otservbr-global/npc/gnomole.lua index ffb3759552b..3dd303ef097 100644 --- a/data-otservbr-global/npc/gnomole.lua +++ b/data-otservbr-global/npc/gnomole.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 95, lookBody = 57, lookLegs = 57, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,18 +57,18 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "tactical")) then - npcHandler:say( - { "Since you are seasoned adventurers I'll skip the basics and jump right to the important part! This cave system is overrun by the minions of ... ah well, the greatest shame of gnomekind. ...", - "That traitorous gnome, known as Gnomevil, who was my pupil before his changeover to the dark side of gnomedom, has abandoned all gnomish ethics and joined forces with our enemies. ...", - "It's hard to tell what led to his downfall. In the end he seems to have forgotten the principle that with small stature comes great responsibility. ...", - "He became tainted and corrupted by evil, obviously enough to grow in size, which is always an indicator for evil of course. ...", - "Now he commands his armies in the name of those below and hides in his lair protected by layers of thick crystal that only he can form and change due to his corrupted powers! ...", - "There is one thing though that could cause his downfall! His corruption has spread to his minions and in his lair there are some infected weepers that are full of parasites. ...", - "These parasites will spread a fluid that will weaken the integrity of the crystals in front of Gnomevils lair when they die. The entrance is marked with crystal columns, so you can't miss it. ...", - "You have to kill enough of the parasites DIRECTLY in front of the crystals. Eventually the columns will collapse and allow you entrance to Gnomevils lair. ...", - "Take care though, due to Gnomevils power the crystals will grow back quite fast. Better manage the parasites in quick succession or everything will be for naught. ...”, “Enter his lair and bring an end to his despicable reign!" }, npc, - creature) + if MsgContains(message, "tactical") then + npcHandler:say({ + "Since you are seasoned adventurers I'll skip the basics and jump right to the important part! This cave system is overrun by the minions of ... ah well, the greatest shame of gnomekind. ...", + "That traitorous gnome, known as Gnomevil, who was my pupil before his changeover to the dark side of gnomedom, has abandoned all gnomish ethics and joined forces with our enemies. ...", + "It's hard to tell what led to his downfall. In the end he seems to have forgotten the principle that with small stature comes great responsibility. ...", + "He became tainted and corrupted by evil, obviously enough to grow in size, which is always an indicator for evil of course. ...", + "Now he commands his armies in the name of those below and hides in his lair protected by layers of thick crystal that only he can form and change due to his corrupted powers! ...", + "There is one thing though that could cause his downfall! His corruption has spread to his minions and in his lair there are some infected weepers that are full of parasites. ...", + "These parasites will spread a fluid that will weaken the integrity of the crystals in front of Gnomevils lair when they die. The entrance is marked with crystal columns, so you can't miss it. ...", + "You have to kill enough of the parasites DIRECTLY in front of the crystals. Eventually the columns will collapse and allow you entrance to Gnomevils lair. ...", + "Take care though, due to Gnomevils power the crystals will grow back quite fast. Better manage the parasites in quick succession or everything will be for naught. ...”, “Enter his lair and bring an end to his despicable reign!", + }, npc, creature) npcHandler:setTopic(playerId, 0) end return true diff --git a/data-otservbr-global/npc/gnomus.lua b/data-otservbr-global/npc/gnomus.lua index 1c0abacca99..f12104ca8e0 100644 --- a/data-otservbr-global/npc/gnomus.lua +++ b/data-otservbr-global/npc/gnomus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 67, lookLegs = 67, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -63,26 +63,25 @@ local function greetCallback(npc, creature) return true end -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'If you\'re willing to help us, we could need an escort for arriving {ordnance}, help with {charting} the cave system and someone needs to get some heat {measurements} fast.' }) -keywordHandler:addKeyword({ 'worthy' }, StdModule.say, { +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "If you're willing to help us, we could need an escort for arriving {ordnance}, help with {charting} the cave system and someone needs to get some heat {measurements} fast." }) +keywordHandler:addKeyword({ "worthy" }, StdModule.say, { npcHandler = npcHandler, - text = { 'You\'re already known amongst the gnomes, member of the Bigfoot Brigade. I will make sure that the alliance learns of your deeds but you\'ll still need to help the dwarves and gnomes of this outpost to show your worth. ...', - 'We also found {suspicious devices} carried by all kinds of creatures down here. Down here, they are of extreme worth to us since they could contain the key to what\'s happening all around us. ...', - 'If you can aquire any, return them to me and I make sure to tell the others of your generosity. Return to me afterwards to check on your current {status}.' } + text = { + "You're already known amongst the gnomes, member of the Bigfoot Brigade. I will make sure that the alliance learns of your deeds but you'll still need to help the dwarves and gnomes of this outpost to show your worth. ...", + "We also found {suspicious devices} carried by all kinds of creatures down here. Down here, they are of extreme worth to us since they could contain the key to what's happening all around us. ...", + "If you can aquire any, return them to me and I make sure to tell the others of your generosity. Return to me afterwards to check on your current {status}.", + }, }) -keywordHandler:addKeyword({ 'base' }, StdModule.say, { +keywordHandler:addKeyword({ "base" }, StdModule.say, { npcHandler = npcHandler, - text = { 'Gnomish supplies and ingenuity have helped to establish and fortify this outpost. ...', - 'Our knowledge of the enemy and it\'s tactics would be of more use if the dwarves would listen to us somewhat more. But gnomes have learned to live with the imperfection of the other races.' } + text = { "Gnomish supplies and ingenuity have helped to establish and fortify this outpost. ...", "Our knowledge of the enemy and it's tactics would be of more use if the dwarves would listen to us somewhat more. But gnomes have learned to live with the imperfection of the other races." }, }) -keywordHandler:addKeyword({ 'efforts' }, StdModule.say, { +keywordHandler:addKeyword({ "efforts" }, StdModule.say, { npcHandler = npcHandler, - text = { 'Our surveys of the area showed us some spikes in heat and seismic activity at very specific places. ...', - 'We conclude this is no coincidence and the enemy is using devices to pump up the lava to flood the area. We have seen it before and had to retreat each time. ...', - 'This time though we might have a counter prepared - given me manage to pierce their defences.' } + text = { "Our surveys of the area showed us some spikes in heat and seismic activity at very specific places. ...", "We conclude this is no coincidence and the enemy is using devices to pump up the lava to flood the area. We have seen it before and had to retreat each time. ...", "This time though we might have a counter prepared - given me manage to pierce their defences." }, }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Gnomus.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the main gnomish contact for this base. I coordinate our efforts with those of the dwarves to ensure everything is running smoothly.' }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Gnomus." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the main gnomish contact for this base. I coordinate our efforts with those of the dwarves to ensure everything is running smoothly." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -101,22 +100,25 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) end if player:getStorageValue(Storage.DangerousDepths.Gnomes.Measurements) == 2 and player:getStorageValue(Storage.DangerousDepths.Gnomes.TimeTaskMeasurements) <= 0 then -- Vai fazer a missão após 20h - npcHandler:say({ "The heat down here is not the only problem we have but one of our greatest concerns. Not only is it almost unbearable for us, it also seems to be rising. ...", + npcHandler:say({ + "The heat down here is not the only problem we have but one of our greatest concerns. Not only is it almost unbearable for us, it also seems to be rising. ...", "We need to find out if this is true and what that means for this place - and for us gnomes. You can help us do this by grabbing one of our trignometres and collecting as much as data from the heat in this area as possible. ...", - "We'd need at least 5 measurements. Are you willing to do this?" }, npc, creature) + "We'd need at least 5 measurements. Are you willing to do this?", + }, npc, creature) npcHandler:setTopic(playerId, 2) end if player:getStorageValue(Storage.DangerousDepths.Gnomes.Measurements) < 1 then -- Não possuía a missão, agora possui! - npcHandler:say({ "The heat down here is not the only problem we have but one of our greatest concerns. Not only is it almost unbearable for us, it also seems to be rising. ...", + npcHandler:say({ + "The heat down here is not the only problem we have but one of our greatest concerns. Not only is it almost unbearable for us, it also seems to be rising. ...", "We need to find out if this is true and what that means for this place - and for us gnomes. You can help us do this by grabbing one of our trignometres and collecting as much as data from the heat in this area as possible. ...", - "We'd need at least 5 measurements. Are you willing to do this?" }, npc, creature) + "We'd need at least 5 measurements. Are you willing to do this?", + }, npc, creature) npcHandler:setTopic(playerId, 2) elseif (player:getStorageValue(Storage.DangerousDepths.Gnomes.Measurements) == 1) and (player:getStorageValue(Storage.DangerousDepths.Gnomes.LocationCount) < 5) then -- Está na missão porém não terminou a task! npcHandler:say({ "Come back when you have finished your job." }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.DangerousDepths.Gnomes.Measurements) == 1 and player:getStorageValue(Storage.DangerousDepths.Gnomes.LocationCount) == 5 then -- Não possuía a missão, agora possui! - npcHandler:say({ "Excellent, you returned with more data! Let me see... hmm. ...", - "Well, we need more data on this but first I will have to show this to our grand horticulturist. Thank you for getting this for us!" }, npc, creature) + npcHandler:say({ "Excellent, you returned with more data! Let me see... hmm. ...", "Well, we need more data on this but first I will have to show this to our grand horticulturist. Thank you for getting this for us!" }, npc, creature) player:setStorageValue(Storage.DangerousDepths.Gnomes.TimeTaskMeasurements, os.time() + time) player:addItem(27654, 1) player:setStorageValue(Storage.DangerousDepths.Gnomes.Status, player:getStorageValue(Storage.DangerousDepths.Gnomes.Status) + 1) @@ -124,9 +126,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) end elseif npcHandler:getTopic(playerId) == 2 and MsgContains(message, "yes") then - npcHandler:say({ "How fortunate! There are some trignometres lying around next to that device behind me. Take one and hold it next to high temperature heat sources. ...", - "If you gathered enough data, you will actually smell it from the device. ...", - "Return to me with the results afterwards. Best of luck, we count on you!" }, npc, creature) + npcHandler:say({ "How fortunate! There are some trignometres lying around next to that device behind me. Take one and hold it next to high temperature heat sources. ...", "If you gathered enough data, you will actually smell it from the device. ...", "Return to me with the results afterwards. Best of luck, we count on you!" }, npc, creature) if player:getStorageValue(Storage.DangerousDepths.Questline) < 1 then player:setStorageValue(Storage.DangerousDepths.Questline, 1) end @@ -148,27 +148,30 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) end if player:getStorageValue(Storage.DangerousDepths.Gnomes.Ordnance) == 3 and player:getStorageValue(Storage.DangerousDepths.Gnomes.TimeTaskOrdnance) <= 0 then -- Vai fazer a missão após 20h - npcHandler:say({ "I am constantly waiting for ordnance to arrive. A lot of gnomes intend to travel out here to help us but the main access path to our base is not safe anymore. ...", + npcHandler:say({ + "I am constantly waiting for ordnance to arrive. A lot of gnomes intend to travel out here to help us but the main access path to our base is not safe anymore. ...", "Tragically we lost several gnomes after an outbreak of what I can only describe as a force from below. We were completely surprised by their onslaught and retreated to this outpost. ...", "All our reinforcements arrive at the crystal teleporter to the east of the cave system. We need someone to navigate the new arrivals through the hazards of the dangerous caves. ...", "Hideous creatures and hot lava makes travelling extremely dangerous. And on top of that there is also the constant danger from falling rocks in the area. ...", - "Are you willing to help?" }, npc, creature) + "Are you willing to help?", + }, npc, creature) npcHandler:setTopic(playerId, 22) end if player:getStorageValue(Storage.DangerousDepths.Gnomes.Ordnance) < 1 then -- Não possuía a missão, agora possui! - npcHandler:say({ "I am constantly waiting for ordnance to arrive. A lot of gnomes intend to travel out here to help us but the main access path to our base is not safe anymore. ...", + npcHandler:say({ + "I am constantly waiting for ordnance to arrive. A lot of gnomes intend to travel out here to help us but the main access path to our base is not safe anymore. ...", "Tragically we lost several gnomes after an outbreak of what I can only describe as a force from below. We were completely surprised by their onslaught and retreated to this outpost. ...", "All our reinforcements arrive at the crystal teleporter to the east of the cave system. We need someone to navigate the new arrivals through the hazards of the dangerous caves. ...", "Hideous creatures and hot lava makes travelling extremely dangerous. And on top of that there is also the constant danger from falling rocks in the area. ...", - "Are you willing to help?" }, npc, creature) + "Are you willing to help?", + }, npc, creature) npcHandler:setTopic(playerId, 22) elseif (player:getStorageValue(Storage.DangerousDepths.Gnomes.Ordnance) == 1) or (player:getStorageValue(Storage.DangerousDepths.Gnomes.Ordnance) == 2 and player:getStorageValue(Storage.DangerousDepths.Gnomes.GnomesCount) < 5) then -- Está na missão porém não terminou a task! npcHandler:say({ "Come back when you have finished your job." }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.DangerousDepths.Gnomes.Ordnance) == 2 and player:getStorageValue(Storage.DangerousDepths.Gnomes.GnomesCount) >= 5 then -- Não possuía a missão, agora possui! if player:getStorageValue(Storage.DangerousDepths.Gnomes.CrawlersCount) >= 3 then - npcHandler:say({ "AMAZING! Not only did you salve all our friends - you also rescued the animals! Here is your reward and bonus! ...", - "The other are already telling stories about you. Please return to me later if you want to help out some more!" }, npc, creature) + npcHandler:say({ "AMAZING! Not only did you salve all our friends - you also rescued the animals! Here is your reward and bonus! ...", "The other are already telling stories about you. Please return to me later if you want to help out some more!" }, npc, creature) player:setStorageValue(Storage.DangerousDepths.Gnomes.TimeTaskOrdnance, os.time() + time) player:addItem(27654, 2) player:setStorageValue(Storage.DangerousDepths.Gnomes.Status, player:getStorageValue(Storage.DangerousDepths.Gnomes.Status) + 2) @@ -183,8 +186,11 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) end elseif npcHandler:getTopic(playerId) == 22 and MsgContains(message, "yes") then - npcHandler:say({ "Excellent, just follow the path to east until you reach a dead end, there is a hole that leads to a small cave underneath which will bring you right to the old trail. ...", - "Help whoever you can and return them to the save cave exit - oh, and while you're at it... some of them will have pack animals. If you can rescue those as well, I'll hand you a bonus. Good luck!" }, npc, creature) + npcHandler:say( + { "Excellent, just follow the path to east until you reach a dead end, there is a hole that leads to a small cave underneath which will bring you right to the old trail. ...", "Help whoever you can and return them to the save cave exit - oh, and while you're at it... some of them will have pack animals. If you can rescue those as well, I'll hand you a bonus. Good luck!" }, + npc, + creature + ) if player:getStorageValue(Storage.DangerousDepths.Questline) < 1 then player:setStorageValue(Storage.DangerousDepths.Questline, 1) end @@ -201,17 +207,21 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) end if player:getStorageValue(Storage.DangerousDepths.Gnomes.Charting) == 2 and player:getStorageValue(Storage.DangerousDepths.Gnomes.TimeTaskCharting) <= 0 then -- Vai fazer a missão após 20h - npcHandler:say({ "While exploring these caves to find places to collect spores and grow mushrooms, we found several strange structures. I am convinced that this system was once home to intelligent beings. ...", + npcHandler:say({ + "While exploring these caves to find places to collect spores and grow mushrooms, we found several strange structures. I am convinced that this system was once home to intelligent beings. ...", "However, the creatures from below are now disturbing our research as well as some particularly pesky dwarves who just would not leave us alone. ...", "As we have our hands full with a lot of things right now, we could need someone to chart the unknown parts of this underground labyrinth ...", - "I am especially interested in the scattered dark structures around these parts. Would you do that?" }, npc, creature) + "I am especially interested in the scattered dark structures around these parts. Would you do that?", + }, npc, creature) npcHandler:setTopic(playerId, 33) end if player:getStorageValue(Storage.DangerousDepths.Gnomes.Charting) < 1 then -- Não possuía a missão, agora possui! - npcHandler:say({ "While exploring these caves to find places to collect spores and grow mushrooms, we found several strange structures. I am convinced that this system was once home to intelligent beings. ...", + npcHandler:say({ + "While exploring these caves to find places to collect spores and grow mushrooms, we found several strange structures. I am convinced that this system was once home to intelligent beings. ...", "However, the creatures from below are now disturbing our research as well as some particularly pesky dwarves who just would not leave us alone. ...", "As we have our hands full with a lot of things right now, we could need someone to chart the unknown parts of this underground labyrinth ...", - "I am especially interested in the scattered dark structures around these parts. Would you do that?" }, npc, creature) + "I am especially interested in the scattered dark structures around these parts. Would you do that?", + }, npc, creature) npcHandler:setTopic(playerId, 33) elseif (player:getStorageValue(Storage.DangerousDepths.Gnomes.Charting) == 1) and (player:getStorageValue(Storage.DangerousDepths.Gnomes.ChartingCount) < 3) then -- Está na missão porém não terminou a task! npcHandler:say({ "Come back when you have finished your job." }, npc, creature) @@ -231,9 +241,11 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) end elseif npcHandler:getTopic(playerId) == 33 and MsgContains(message, "yes") then - npcHandler:say({ "Very good. We prepared a lot of maps as the complete mapping of this system will probably take a lot of research. ...", + npcHandler:say({ + "Very good. We prepared a lot of maps as the complete mapping of this system will probably take a lot of research. ...", "Take one from the stack here next to me and map as many structures as possible. However, we need at least three locations to make any sense of this ancient layout at all. ...", - "If you manage to map one of each structure around these parts - I assume there must be at least two times as many around here - I will hand you a bonus!" }, npc, creature) + "If you manage to map one of each structure around these parts - I assume there must be at least two times as many around here - I will hand you a bonus!", + }, npc, creature) if player:getStorageValue(Storage.DangerousDepths.Questline) < 1 then player:setStorageValue(Storage.DangerousDepths.Questline, 1) end @@ -307,19 +319,19 @@ local function creatureSayCallback(npc, creature, type, message) -- Início checagem de pontos de tasks!! if MsgContains(message, "status") then - npcHandler:say({ "So you want to know what we all think about your deeds? What leader\'s opinion are you interested in, the {gnomes} (Gnomus), the {dwarves} (Klom Stonecutter) or the {scouts} (Lardoc Bashsmite)?" }, npc, creature) + npcHandler:say({ "So you want to know what we all think about your deeds? What leader's opinion are you interested in, the {gnomes} (Gnomus), the {dwarves} (Klom Stonecutter) or the {scouts} (Lardoc Bashsmite)?" }, npc, creature) npcHandler:setTopic(playerId, 5) elseif MsgContains(message, "gnomes") and npcHandler:getTopic(playerId) == 5 then - npcHandler:say({ 'The gnomes are still in need of your help, member of Bigfoot\'s Brigade. Prove your worth by answering their calls! (' .. math.max(player:getStorageValue(Storage.DangerousDepths.Gnomes.Status), 0) .. '/10)' }, npc, creature) + npcHandler:say({ "The gnomes are still in need of your help, member of Bigfoot's Brigade. Prove your worth by answering their calls! (" .. math.max(player:getStorageValue(Storage.DangerousDepths.Gnomes.Status), 0) .. "/10)" }, npc, creature) elseif MsgContains(message, "dwarves") and npcHandler:getTopic(playerId) == 5 then - npcHandler:say({ 'The dwarves are still in need of your help, member of Bigfoot\'s Brigade. Prove your worth by answering their calls! (' .. math.max(player:getStorageValue(Storage.DangerousDepths.Dwarves.Status), 0) .. '/10)' }, npc, creature) + npcHandler:say({ "The dwarves are still in need of your help, member of Bigfoot's Brigade. Prove your worth by answering their calls! (" .. math.max(player:getStorageValue(Storage.DangerousDepths.Dwarves.Status), 0) .. "/10)" }, npc, creature) elseif MsgContains(message, "scouts") and npcHandler:getTopic(playerId) == 5 then - npcHandler:say({ 'The scouts are still in need of your help, member of Bigfoot\'s Brigade. Prove your worth by answering their calls! (' .. math.max(player:getStorageValue(Storage.DangerousDepths.Scouts.Status), 0) .. '/10)' }, npc, creature) + npcHandler:say({ "The scouts are still in need of your help, member of Bigfoot's Brigade. Prove your worth by answering their calls! (" .. math.max(player:getStorageValue(Storage.DangerousDepths.Scouts.Status), 0) .. "/10)" }, npc, creature) end return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/gnomux.lua b/data-otservbr-global/npc/gnomux.lua index f8a667b6251..68c90e47016 100644 --- a/data-otservbr-global/npc/gnomux.lua +++ b/data-otservbr-global/npc/gnomux.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 82, lookLegs = 39, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { @@ -30,7 +30,7 @@ npcConfig.shop = { { clientId = 19207, buy = 250, storageKey = SPIKE_MIDDLE_CHARGE_MAIN, storageValue = 1 }, { clientId = 19203, buy = 150, storageKey = SPIKE_UPPER_MOUND_MAIN, storageValue = 4 }, { clientId = 19206, buy = 500, storageKey = SPIKE_LOWER_LAVA_MAIN, storageValue = 1 }, - { clientId = 19204, buy = 150, storageKey = SPIKE_UPPER_PACIFIER_MAIN, storageValue = 7 } + { clientId = 19204, buy = 150, storageKey = SPIKE_UPPER_PACIFIER_MAIN, storageValue = 7 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -41,8 +41,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -71,15 +70,15 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if MsgContains(message, 'job') then + if MsgContains(message, "job") then npcHandler:say("I'm responsible for resupplying foolish adventurers with equipment that they may have lost. If you're one of them, just ask me about a {trade}. ", npc, creature) end - if MsgContains(message, 'gnome') then + if MsgContains(message, "gnome") then npcHandler:say("What could I say about gnomes that anyone would not know? I mean, we're interesting if not fascinating, after all.", npc, creature) end - if MsgContains(message, 'spike') then + if MsgContains(message, "spike") then npcHandler:say({ "I came here as a crystal farmer and know the Spike all the way back to when it was a little baby crystal. I admit I feel a little fatherly pride in how big and healthy it has become.", "When most other crystal experts left for new assignments, I decided to stay and help here a bit." }, npc, creature) end return true diff --git a/data-otservbr-global/npc/golem_guardian.lua b/data-otservbr-global/npc/golem_guardian.lua index b9431a85bb8..2ebe8700bad 100644 --- a/data-otservbr-global/npc/golem_guardian.lua +++ b/data-otservbr-global/npc/golem_guardian.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 326 + lookType = 326, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/gordon.lua b/data-otservbr-global/npc/gordon.lua index 6d9e5bd1bc5..75d15cd1fcd 100644 --- a/data-otservbr-global/npc/gordon.lua +++ b/data-otservbr-global/npc/gordon.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 36, lookLegs = 116, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/gorn.lua b/data-otservbr-global/npc/gorn.lua index e929b07bb90..e87b4b200f5 100644 --- a/data-otservbr-global/npc/gorn.lua +++ b/data-otservbr-global/npc/gorn.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 68, lookLegs = 101, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'General goods and paperware for sale!' } + { text = "General goods and paperware for sale!" }, } local keywordHandler = KeywordHandler:new() @@ -84,28 +84,28 @@ local function creatureSayCallback(npc, creature, type, message) end -- Basic -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am selling equipment of all kinds. Do you need anything?" }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = "The king supports Tibia's economy a lot." }) -keywordHandler:addAliasKeyword({ 'tibianus' }) -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = "Magic? Ask a sorcerer or druid about that." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I am Gorn. My goods are known all over Tibia." }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "It is exactly |TIME|. Maybe you want to buy a watch?" }) -keywordHandler:addKeyword({ 'druids' }, StdModule.say, { npcHandler = npcHandler, text = "This druids are nice people, you will find them in the east of the town." }) -keywordHandler:addKeyword({ 'knights' }, StdModule.say, { npcHandler = npcHandler, text = "Even the strong knights need my equipment on their travels though Tibia." }) -keywordHandler:addKeyword({ 'sorcerers' }, StdModule.say, { npcHandler = npcHandler, text = "You can find him in the sorcerer guild." }) -keywordHandler:addKeyword({ 'elane' }, StdModule.say, { npcHandler = npcHandler, text = "She's the leader of the paladin guild." }) -keywordHandler:addKeyword({ 'baxter' }, StdModule.say, { npcHandler = npcHandler, text = "Old Baxter was a rowdy, once. In our youth we shared some adventures and women." }) -keywordHandler:addKeyword({ 'bozo' }, StdModule.say, { npcHandler = npcHandler, text = "Bah! Go away with this bozoguy." }) -keywordHandler:addKeyword({ 'frodo' }, StdModule.say, { npcHandler = npcHandler, text = "Frodo is a jolly fellow." }) -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { npcHandler = npcHandler, text = "We had a clash or two in the old days." }) -keywordHandler:addKeyword({ 'gregor' }, StdModule.say, { npcHandler = npcHandler, text = "Even the strong knights need my equipment on their travels though Tibia." }) -keywordHandler:addKeyword({ 'lynda' }, StdModule.say, { npcHandler = npcHandler, text = "That's a pretty one." }) -keywordHandler:addKeyword({ 'mcronald' }, StdModule.say, { npcHandler = npcHandler, text = "I hardly know the McRonalds." }) -keywordHandler:addKeyword({ 'muriel' }, StdModule.say, { npcHandler = npcHandler, text = "You can find him in the sorcerer guild." }) -keywordHandler:addKeyword({ 'oswald' }, StdModule.say, { npcHandler = npcHandler, text = "This Oswald has not enough to work and too much time to spread rumours." }) -keywordHandler:addKeyword({ 'quentin' }, StdModule.say, { npcHandler = npcHandler, text = "He advices newcomers to buy at my store. I love that guy!" }) -keywordHandler:addKeyword({ 'sam' }, StdModule.say, { npcHandler = npcHandler, text = "Strong as an ox, could armwrestle a minotaur, I bet." }) -keywordHandler:addKeyword({ 'xodet' }, StdModule.say, { npcHandler = npcHandler, text = "He owns the magic shop here. But be aware: The prices are enormous." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am selling equipment of all kinds. Do you need anything?" }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "The king supports Tibia's economy a lot." }) +keywordHandler:addAliasKeyword({ "tibianus" }) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "Magic? Ask a sorcerer or druid about that." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am Gorn. My goods are known all over Tibia." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It is exactly |TIME|. Maybe you want to buy a watch?" }) +keywordHandler:addKeyword({ "druids" }, StdModule.say, { npcHandler = npcHandler, text = "This druids are nice people, you will find them in the east of the town." }) +keywordHandler:addKeyword({ "knights" }, StdModule.say, { npcHandler = npcHandler, text = "Even the strong knights need my equipment on their travels though Tibia." }) +keywordHandler:addKeyword({ "sorcerers" }, StdModule.say, { npcHandler = npcHandler, text = "You can find him in the sorcerer guild." }) +keywordHandler:addKeyword({ "elane" }, StdModule.say, { npcHandler = npcHandler, text = "She's the leader of the paladin guild." }) +keywordHandler:addKeyword({ "baxter" }, StdModule.say, { npcHandler = npcHandler, text = "Old Baxter was a rowdy, once. In our youth we shared some adventures and women." }) +keywordHandler:addKeyword({ "bozo" }, StdModule.say, { npcHandler = npcHandler, text = "Bah! Go away with this bozoguy." }) +keywordHandler:addKeyword({ "frodo" }, StdModule.say, { npcHandler = npcHandler, text = "Frodo is a jolly fellow." }) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, text = "We had a clash or two in the old days." }) +keywordHandler:addKeyword({ "gregor" }, StdModule.say, { npcHandler = npcHandler, text = "Even the strong knights need my equipment on their travels though Tibia." }) +keywordHandler:addKeyword({ "lynda" }, StdModule.say, { npcHandler = npcHandler, text = "That's a pretty one." }) +keywordHandler:addKeyword({ "mcronald" }, StdModule.say, { npcHandler = npcHandler, text = "I hardly know the McRonalds." }) +keywordHandler:addKeyword({ "muriel" }, StdModule.say, { npcHandler = npcHandler, text = "You can find him in the sorcerer guild." }) +keywordHandler:addKeyword({ "oswald" }, StdModule.say, { npcHandler = npcHandler, text = "This Oswald has not enough to work and too much time to spread rumours." }) +keywordHandler:addKeyword({ "quentin" }, StdModule.say, { npcHandler = npcHandler, text = "He advices newcomers to buy at my store. I love that guy!" }) +keywordHandler:addKeyword({ "sam" }, StdModule.say, { npcHandler = npcHandler, text = "Strong as an ox, could armwrestle a minotaur, I bet." }) +keywordHandler:addKeyword({ "xodet" }, StdModule.say, { npcHandler = npcHandler, text = "He owns the magic shop here. But be aware: The prices are enormous." }) npcHandler:setMessage(MESSAGE_GREET, "Oh, please come in, |PLAYERNAME|. What do you need?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") @@ -153,7 +153,7 @@ npcConfig.shop = { { itemName = "valentine's card", clientId = 6538, buy = 30 }, { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -164,7 +164,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/graham.lua b/data-otservbr-global/npc/graham.lua index 016198526bf..2131bb3576d 100644 --- a/data-otservbr-global/npc/graham.lua +++ b/data-otservbr-global/npc/graham.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 60, lookFeet = 78, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/graubart.lua b/data-otservbr-global/npc/graubart.lua index d6de0d4c80b..6c02ff2b77e 100644 --- a/data-otservbr-global/npc/graubart.lua +++ b/data-otservbr-global/npc/graubart.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 107, lookLegs = 57, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,16 +50,16 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "My name is Graubart, captain of the great SeaHawk!" }) -keywordHandler:addKeyword({ 'ship' }, StdModule.say, { npcHandler = npcHandler, text = "Ah, my whole proud: My ship named SeaHawk. We rode out so many stormy nights together. I think I couldn't live without it." }) -keywordHandler:addKeyword({ 'seahawk' }, StdModule.say, { npcHandler = npcHandler, text = "Ah, my whole proud: My ship named SeaHawk. We rode out so many stormy nights together. I think I couldn't live without it." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I'm a merchant. I sail all over the world with my ship and trade with many different races!" }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { npcHandler = npcHandler, text = "A merchant is someone who trades goods with other people and tries to make a little profit. *laughs*" }) -keywordHandler:addKeyword({ 'trade' }, StdModule.say, { npcHandler = npcHandler, text = "I trade nearly everything, for example weapons, food, water, and even magic runes." }) -keywordHandler:addKeyword({ 'races' }, StdModule.say, { npcHandler = npcHandler, text = "You know; elves, dwarfs, lizardmen, minotaurs and many others." }) -keywordHandler:addKeyword({ 'water' }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, sold out." }) -keywordHandler:addKeyword({ 'marlene' }, StdModule.say, { npcHandler = npcHandler, text = "Pssst. Marlene is not near right now...? You know... she is a lovely woman, but she talks too much! So I always try to keep distance from her because she can't stop talking." }) -keywordHandler:addKeyword({ 'bruno' }, StdModule.say, { npcHandler = npcHandler, text = "Bruno is one of the best sailors I know. He is nearly as good as me. *laughs loudly*" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Graubart, captain of the great SeaHawk!" }) +keywordHandler:addKeyword({ "ship" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, my whole proud: My ship named SeaHawk. We rode out so many stormy nights together. I think I couldn't live without it." }) +keywordHandler:addKeyword({ "seahawk" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, my whole proud: My ship named SeaHawk. We rode out so many stormy nights together. I think I couldn't live without it." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a merchant. I sail all over the world with my ship and trade with many different races!" }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, text = "A merchant is someone who trades goods with other people and tries to make a little profit. *laughs*" }) +keywordHandler:addKeyword({ "trade" }, StdModule.say, { npcHandler = npcHandler, text = "I trade nearly everything, for example weapons, food, water, and even magic runes." }) +keywordHandler:addKeyword({ "races" }, StdModule.say, { npcHandler = npcHandler, text = "You know; elves, dwarfs, lizardmen, minotaurs and many others." }) +keywordHandler:addKeyword({ "water" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, sold out." }) +keywordHandler:addKeyword({ "marlene" }, StdModule.say, { npcHandler = npcHandler, text = "Pssst. Marlene is not near right now...? You know... she is a lovely woman, but she talks too much! So I always try to keep distance from her because she can't stop talking." }) +keywordHandler:addKeyword({ "bruno" }, StdModule.say, { npcHandler = npcHandler, text = "Bruno is one of the best sailors I know. He is nearly as good as me. *laughs loudly*" }) npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye and don't forget me!") npcHandler:setMessage(MESSAGE_GREET, "Ahoi, young man |PLAYERNAME|. Looking for work on my ship?") diff --git a/data-otservbr-global/npc/gree_dee.lua b/data-otservbr-global/npc/gree_dee.lua index a64d7d4d07a..b4e6cbf44ba 100644 --- a/data-otservbr-global/npc/gree_dee.lua +++ b/data-otservbr-global/npc/gree_dee.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 87, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -83,7 +83,7 @@ npcConfig.shop = { { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "waterskin of water", clientId = 2901, buy = 40, count = 1 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -94,7 +94,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/gregor.lua b/data-otservbr-global/npc/gregor.lua index 8b214eabdf0..1ec86e0e32d 100644 --- a/data-otservbr-global/npc/gregor.lua +++ b/data-otservbr-global/npc/gregor.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 38, lookFeet = 38, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Gather around me, young knights! I'm going to teach you some spells!" } + { text = "Gather around me, young knights! I'm going to teach you some spells!" }, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,6 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() @@ -84,8 +83,12 @@ local function creatureSayCallback(npc, creature, type, message) elseif addonProgress == 4 then npcHandler:say("Your current task is to bring me royal steel, |PLAYERNAME|.", npc, creature) elseif addonProgress == 5 then - npcHandler:say("Please talk to Sam and tell him I sent you. \z - I'm sure he will be glad to refine your helmet, |PLAYERNAME|.", npc, creature) + npcHandler:say( + "Please talk to Sam and tell him I sent you. \z + I'm sure he will be glad to refine your helmet, |PLAYERNAME|.", + npc, + creature + ) else npcHandler:say("You've already completed the task and can consider yourself a mighty warrior, |PLAYERNAME|.", npc, creature) end @@ -94,8 +97,12 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Have you really managed to fulfil the task and brought me 100 perfect behemoth fangs?", npc, creature) npcHandler:setTopic(playerId, 3) else - npcHandler:say("You're not serious asking that, are you? They come from behemoths, of course. \z - Unless there are behemoth rabbits. Duh.", npc, creature) + npcHandler:say( + "You're not serious asking that, are you? They come from behemoths, of course. \z + Unless there are behemoth rabbits. Duh.", + npc, + creature + ) end elseif MsgContains(message, "ramsay") then if addonProgress == 2 then @@ -109,8 +116,12 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Were you able to get hold of a flask with pure warrior's sweat?", npc, creature) npcHandler:setTopic(playerId, 5) else - npcHandler:say("Warrior's sweat can be magically extracted from headgear worn by a true warrior, \z - but only in small amounts. Djinns are said to be good at magical extractions.", npc, creature) + npcHandler:say( + "Warrior's sweat can be magically extracted from headgear worn by a true warrior, \z + but only in small amounts. Djinns are said to be good at magical extractions.", + npc, + creature + ) end elseif MsgContains(message, "royal steel") then if addonProgress == 4 then @@ -121,22 +132,24 @@ local function creatureSayCallback(npc, creature, type, message) end elseif npcHandler:getTopic(playerId) == 1 then if MsgContains(message, "yes") then - npcHandler:say( - { - "Well then, listen closely. First, you will have to prove that you are a fierce and \z + npcHandler:say({ + "Well then, listen closely. First, you will have to prove that you are a fierce and \z restless warrior by bringing me 100 perfect behemoth fangs. ...", - "Secondly, please retrieve a helmet for us which has been lost a long time ago. \z + "Secondly, please retrieve a helmet for us which has been lost a long time ago. \z The famous Ramsay the Reckless wore it when exploring an ape settlement. ...", - "Third, we need a new flask of warrior's sweat. We've run out of it recently, \z + "Third, we need a new flask of warrior's sweat. We've run out of it recently, \z but we need a small amount for the show battles in our arena. ...", - "Lastly, I will have our smith refine your helmet if you bring me royal steel, an especially noble metal. ...", - "Did you understand everything I told you and are willing to handle this task?" - }, - npc, creature, 100) + "Lastly, I will have our smith refine your helmet if you bring me royal steel, an especially noble metal. ...", + "Did you understand everything I told you and are willing to handle this task?", + }, npc, creature, 100) npcHandler:setTopic(playerId, 2) elseif MsgContains(message, "no") then - npcHandler:say("Bah. Then you will have to wait for the day these helmets are sold in shops, \z - but that will not happen before hell freezes over.", npc, creature) + npcHandler:say( + "Bah. Then you will have to wait for the day these helmets are sold in shops, \z + but that will not happen before hell freezes over.", + npc, + creature + ) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 2 then @@ -160,8 +173,12 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.Knight.AddonHelmet, 2) player:setStorageValue(Storage.OutfitQuest.Knight.MissionHelmet, 2) player:setStorageValue(Storage.OutfitQuest.Knight.RamsaysHelmetDoor, 1) - npcHandler:say("I'm deeply impressed, brave Knight |PLAYERNAME|. I expected nothing less from you. \z - Now, please retrieve Ramsay's helmet.", npc, creature) + npcHandler:say( + "I'm deeply impressed, brave Knight |PLAYERNAME|. I expected nothing less from you. \z + Now, please retrieve Ramsay's helmet.", + npc, + creature + ) elseif MsgContains(message, "no") then npcHandler:say("There is no need to rush anyway.", npc, creature) end @@ -175,8 +192,12 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.Knight.AddonHelmet, 3) player:setStorageValue(Storage.OutfitQuest.Knight.MissionHelmet, 3) - npcHandler:say("Good work, brave Knight |PLAYERNAME|! Even though it is damaged, \z - it has a lot of sentimental value. Now, please bring me warrior's sweat.", npc, creature) + npcHandler:say( + "Good work, brave Knight |PLAYERNAME|! Even though it is damaged, \z + it has a lot of sentimental value. Now, please bring me warrior's sweat.", + npc, + creature + ) elseif MsgContains(message, "no") then npcHandler:say("There is no need to rush anyway.", npc, creature) end @@ -190,8 +211,12 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.Knight.AddonHelmet, 4) player:setStorageValue(Storage.OutfitQuest.Knight.MissionHelmet, 4) - npcHandler:say("Now that is a pleasant surprise, brave Knight |PLAYERNAME|! \z - There is only one task left now: Obtain royal steel to have your helmet refined.", npc, creature) + npcHandler:say( + "Now that is a pleasant surprise, brave Knight |PLAYERNAME|! \z + There is only one task left now: Obtain royal steel to have your helmet refined.", + npc, + creature + ) elseif MsgContains(message, "no") then npcHandler:say("There is no need to rush anyway.", npc, creature) end @@ -205,8 +230,12 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.Knight.AddonHelmet, 5) player:setStorageValue(Storage.OutfitQuest.Knight.MissionHelmet, 5) - npcHandler:say("You truly deserve to wear an adorned helmet, brave Knight |PLAYERNAME|. \z - Please talk to Sam and tell him I sent you. I'm sure he will be glad to refine your helmet.", npc, creature) + npcHandler:say( + "You truly deserve to wear an adorned helmet, brave Knight |PLAYERNAME|. \z + Please talk to Sam and tell him I sent you. I'm sure he will be glad to refine your helmet.", + npc, + creature + ) elseif MsgContains(message, "no") then npcHandler:say("There is no need to rush anyway.", npc, creature) end @@ -215,214 +244,152 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addSpellKeyword({ "find", "person" }, - { - npcHandler = npcHandler, - spellName = "Find Person", - price = 80, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "light" }, - { - npcHandler = npcHandler, - spellName = "Light", - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "cure", "poison" }, - { - npcHandler = npcHandler, - spellName = "Cure Poison", - price = 150, - level = 10, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "wound", "cleansing" }, - { - npcHandler = npcHandler, - spellName = "Wound Cleansing", - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "great", "light" }, - { - npcHandler = npcHandler, - spellName = "Great Light", - price = 500, - level = 13, - vocation = VOCATION.BASE_ID.KNIGHT - } -) +keywordHandler:addSpellKeyword({ "find", "person" }, { + npcHandler = npcHandler, + spellName = "Find Person", + price = 80, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "light" }, { + npcHandler = npcHandler, + spellName = "Light", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "poison" }, { + npcHandler = npcHandler, + spellName = "Cure Poison", + price = 150, + level = 10, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Wound Cleansing", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "great", "light" }, { + npcHandler = npcHandler, + spellName = "Great Light", + price = 500, + level = 13, + vocation = VOCATION.BASE_ID.KNIGHT, +}) -keywordHandler:addKeyword({ "healing", "spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Wound Cleansing}' and '{Cure Poison}'." - } -) -keywordHandler:addKeyword({ "support", "spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Light}', '{Find Person}' and '{Great Light}'." - } -) -keywordHandler:addKeyword({ "spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I can teach you {healing spells} and {support spells}. \z +keywordHandler:addKeyword({ "healing", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Wound Cleansing}' and '{Cure Poison}'.", +}) +keywordHandler:addKeyword({ "support", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Light}', '{Find Person}' and '{Great Light}'.", +}) +keywordHandler:addKeyword({ "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can teach you {healing spells} and {support spells}. \z What kind of spell do you wish to learn? You can also tell me for which level \z - you would like to learn a spell, if you prefer that." - } -) + you would like to learn a spell, if you prefer that.", +}) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I am the first knight. I trained some of the greatest heroes of Tibia." - } -) -keywordHandler:addKeyword({ "heroes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Of course, you heard of them. Knights are the best fighters in Tibia." - } -) -keywordHandler:addKeyword({ "king" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Hail to our King!" - } -) -keywordHandler:addKeyword({ "name" }, StdModule.say, - { - npcHandler = npcHandler, - text = "You are joking, eh? Of course, you know me. I am Gregor, the first knight." - } -) -keywordHandler:addKeyword({ "gregor" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A great name, isn't it?" - } -) -keywordHandler:addKeyword({ "tibia" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Beautiful Tibia. And with our help everyone is save." - } -) -keywordHandler:addKeyword({ "time" }, StdModule.say, - { - npcHandler = npcHandler, - text = "It is time to join the Knights!" - } -) -keywordHandler:addKeyword({ "knights" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Knights are the warriors of Tibia. Without us, no one would be safe. \z - Every brave and strong man or woman can join us." - } -) -keywordHandler:addKeyword({ "bozo" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Some day someone will make something happen to him..." - } -) -keywordHandler:addKeyword({ "elane" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A bow might be a fine weapon for someone not strong enough to wield a REAL weapon." - } -) -keywordHandler:addKeyword({ "frodo" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I and my students often share a cask of beer or wine at Frodo's hut." - } -) -keywordHandler:addKeyword({ "gorn" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Always concerned with his profit. What a loss! He was adventuring with baxter in the old days." - } -) -keywordHandler:addKeyword({ "baxter" }, StdModule.say, - { - npcHandler = npcHandler, - text = "He was an adventurer once." - } -) -keywordHandler:addKeyword({ "lynda" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Before she became a priest she won the Miss Tibia contest three times in a row." - } -) -keywordHandler:addKeyword({ "mcronald" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Peaceful farmers." - } -) -keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A fine game to hunt. But be careful, he cheats!" - } -) -keywordHandler:addKeyword({ "muriel" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Bah, go away with these sorcerer tricks. Only cowards use tricks." - } -) -keywordHandler:addKeyword({ "oswald" }, StdModule.say, - { - npcHandler = npcHandler, - text = "What an idiot." - } -) -keywordHandler:addKeyword({ "quentin" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I will never understand this peaceful monks and priests." - } -) -keywordHandler:addKeyword({ "sam" }, StdModule.say, - { - npcHandler = npcHandler, - text = "He has the muscles, but lacks the guts." - } -) -keywordHandler:addKeyword({ "tibianus" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Hail to our King!" - } -) -keywordHandler:addKeyword({ "outfit" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Only the bravest warriors may wear adorned helmets. \z - They are traditionally awarded after having completed a difficult task for our guild." - } -) -keywordHandler:addKeyword({ "helmet" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Only the bravest warriors may wear adorned helmets. \z - They are traditionally awarded after having completed a difficult task for our guild." - } -) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "I am the first knight. I trained some of the greatest heroes of Tibia.", +}) +keywordHandler:addKeyword({ "heroes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Of course, you heard of them. Knights are the best fighters in Tibia.", +}) +keywordHandler:addKeyword({ "king" }, StdModule.say, { + npcHandler = npcHandler, + text = "Hail to our King!", +}) +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "You are joking, eh? Of course, you know me. I am Gregor, the first knight.", +}) +keywordHandler:addKeyword({ "gregor" }, StdModule.say, { + npcHandler = npcHandler, + text = "A great name, isn't it?", +}) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { + npcHandler = npcHandler, + text = "Beautiful Tibia. And with our help everyone is save.", +}) +keywordHandler:addKeyword({ "time" }, StdModule.say, { + npcHandler = npcHandler, + text = "It is time to join the Knights!", +}) +keywordHandler:addKeyword({ "knights" }, StdModule.say, { + npcHandler = npcHandler, + text = "Knights are the warriors of Tibia. Without us, no one would be safe. \z + Every brave and strong man or woman can join us.", +}) +keywordHandler:addKeyword({ "bozo" }, StdModule.say, { + npcHandler = npcHandler, + text = "Some day someone will make something happen to him...", +}) +keywordHandler:addKeyword({ "elane" }, StdModule.say, { + npcHandler = npcHandler, + text = "A bow might be a fine weapon for someone not strong enough to wield a REAL weapon.", +}) +keywordHandler:addKeyword({ "frodo" }, StdModule.say, { + npcHandler = npcHandler, + text = "I and my students often share a cask of beer or wine at Frodo's hut.", +}) +keywordHandler:addKeyword({ "gorn" }, StdModule.say, { + npcHandler = npcHandler, + text = "Always concerned with his profit. What a loss! He was adventuring with baxter in the old days.", +}) +keywordHandler:addKeyword({ "baxter" }, StdModule.say, { + npcHandler = npcHandler, + text = "He was an adventurer once.", +}) +keywordHandler:addKeyword({ "lynda" }, StdModule.say, { + npcHandler = npcHandler, + text = "Before she became a priest she won the Miss Tibia contest three times in a row.", +}) +keywordHandler:addKeyword({ "mcronald" }, StdModule.say, { + npcHandler = npcHandler, + text = "Peaceful farmers.", +}) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { + npcHandler = npcHandler, + text = "A fine game to hunt. But be careful, he cheats!", +}) +keywordHandler:addKeyword({ "muriel" }, StdModule.say, { + npcHandler = npcHandler, + text = "Bah, go away with these sorcerer tricks. Only cowards use tricks.", +}) +keywordHandler:addKeyword({ "oswald" }, StdModule.say, { + npcHandler = npcHandler, + text = "What an idiot.", +}) +keywordHandler:addKeyword({ "quentin" }, StdModule.say, { + npcHandler = npcHandler, + text = "I will never understand this peaceful monks and priests.", +}) +keywordHandler:addKeyword({ "sam" }, StdModule.say, { + npcHandler = npcHandler, + text = "He has the muscles, but lacks the guts.", +}) +keywordHandler:addKeyword({ "tibianus" }, StdModule.say, { + npcHandler = npcHandler, + text = "Hail to our King!", +}) +keywordHandler:addKeyword({ "outfit" }, StdModule.say, { + npcHandler = npcHandler, + text = "Only the bravest warriors may wear adorned helmets. \z + They are traditionally awarded after having completed a difficult task for our guild.", +}) +keywordHandler:addKeyword({ "helmet" }, StdModule.say, { + npcHandler = npcHandler, + text = "Only the bravest warriors may wear adorned helmets. \z + They are traditionally awarded after having completed a difficult task for our guild.", +}) npcHandler:setMessage(MESSAGE_GREET, "Greetings, |PLAYERNAME|. What do you want?") npcHandler:setMessage(MESSAGE_FAREWELL, "Be careful on your journeys.") diff --git a/data-otservbr-global/npc/grizzly_adams.lua b/data-otservbr-global/npc/grizzly_adams.lua index 2eb8044e121..709c1822f32 100644 --- a/data-otservbr-global/npc/grizzly_adams.lua +++ b/data-otservbr-global/npc/grizzly_adams.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 78, lookLegs = 94, lookFeet = 78, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { @@ -88,7 +88,7 @@ npcConfig.shop = { { clientId = 27706, sell = 9000, itemName = "werefox trophy", storageKey = POINTSSTORAGE, storageValue = 70 }, { clientId = 34219, sell = 12000, itemName = "werehyaena trophy", storageKey = POINTSSTORAGE, storageValue = 70 }, -- Buy offers - { clientId = 9601, buy = 1000, itemName = "demon backpack", storageKey = POINTSSTORAGE, storageValue = 70 } + { clientId = 9601, buy = 1000, itemName = "demon backpack", storageKey = POINTSSTORAGE, storageValue = 70 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -99,8 +99,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -135,11 +134,13 @@ local function greetCallback(npc, creature) if player:getStorageValue(Storage.KillingInTheNameOf.QuestLogEntry) ~= 0 then npcHandler:setMessage(MESSAGE_GREET, "Hi there, do you want to to {join} the 'Paw and Fur - Hunting Elite'?") - elseif player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) < 0 and player:getStorageValue(POINTSSTORAGE) >= 10 and player:getLevel() >= 6 or -- to Huntsman Rank - player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 0 and player:getStorageValue(POINTSSTORAGE) >= 20 and player:getLevel() >= 6 or -- to Ranger Rank - player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 2 and player:getStorageValue(POINTSSTORAGE) >= 40 and player:getLevel() >= 50 or -- to Big Game Hunter Rank - player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 4 and player:getStorageValue(POINTSSTORAGE) >= 70 and player:getLevel() >= 80 or -- to Trophy Hunter Rank - player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 6 and player:getStorageValue(POINTSSTORAGE) >= 100 and player:getLevel() >= 130 then -- to Elite Hunter Rank + elseif + player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) < 0 and player:getStorageValue(POINTSSTORAGE) >= 10 and player:getLevel() >= 6 -- to Huntsman Rank + or player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 0 and player:getStorageValue(POINTSSTORAGE) >= 20 and player:getLevel() >= 6 -- to Ranger Rank + or player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 2 and player:getStorageValue(POINTSSTORAGE) >= 40 and player:getLevel() >= 50 -- to Big Game Hunter Rank + or player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 4 and player:getStorageValue(POINTSSTORAGE) >= 70 and player:getLevel() >= 80 -- to Trophy Hunter Rank + or player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 6 and player:getStorageValue(POINTSSTORAGE) >= 100 and player:getLevel() >= 130 + then -- to Elite Hunter Rank npcHandler:setMessage(MESSAGE_GREET, "Good to see you again |PLAYERNAME|. You gained " .. player:getStorageValue(POINTSSTORAGE) .. " points for our society. Ask me for {promotion} to advance your rank!") else npcHandler:setMessage(MESSAGE_GREET, "Welcome to the 'Paw and Fur - Hunting Elite' |PLAYERNAME|. Feel free to do {tasks} for us.") @@ -165,55 +166,48 @@ local messageTask = { [1] = "Nice work, old chap. If you're up for another hunting mission, just ask me for a {task}.", [2] = "Jolly good job you did there, old chap. If you're up for another hunting mission, just ask me for a {task}.", [3] = "Well done! If you're up for another hunting mission, just ask me for a {task}.", - [4] = "That took some time, huh? Good hunting though. If you're up for another hunting mission, just ask me for a {task}." + [4] = "That took some time, huh? Good hunting though. If you're up for another hunting mission, just ask me for a {task}.", } local messageBoss = { - { "Spiffing work, old chap. Now I have a special task for you. Recently several citizens of Port Hope vanished. It is rumoured that they were killed by a crocodile. The people call it 'Snapper'. Hunt down and kill that evil man-eating beast. ...", - "Ask me about new {tasks} if you're up for a further hunting mission. Be aware that you can only have one 'Snapper' task active at the same time!" }, + { + "Spiffing work, old chap. Now I have a special task for you. Recently several citizens of Port Hope vanished. It is rumoured that they were killed by a crocodile. The people call it 'Snapper'. Hunt down and kill that evil man-eating beast. ...", + "Ask me about new {tasks} if you're up for a further hunting mission. Be aware that you can only have one 'Snapper' task active at the same time!", + }, "Nicely done! Now I shall assign you a special task. Rumour has it that there is an ancient and evil tarantula who preys on humans. She is called 'Hide'. Track her down and kill her! Good luck, old chap.", - { "Well done, old chap. Now i shall assign you a special task. Rumour has it that there is an old carniphila somewhere in the jungle. Find Deathbine's hideout and kill it! Good luck, old chap ...", - "Ask me about new {tasks} if you're up for further hunting mission. Be aware that you can only have one 'Deathbine' task active at the same time!" }, + { "Well done, old chap. Now i shall assign you a special task. Rumour has it that there is an old carniphila somewhere in the jungle. Find Deathbine's hideout and kill it! Good luck, old chap ...", "Ask me about new {tasks} if you're up for further hunting mission. Be aware that you can only have one 'Deathbine' task active at the same time!" }, "Jolly good job you did there, but now I have a special task for you. The citizens of Svargrond live in fear because of a frightfully bad-tempered mammoth they call 'Blood Tusk'. Go there and put an end to him. Happy hunting!", - { "As I see it, you need more of a challenge! I have heard that there is an ice golem the hunters in Svargrond call 'Shardhead'. It is an extremely dangerous example of its kind! ...", - "I believe you are equal to the task, |PLAYERNAME|! If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Shardhead' task active at the same time!" }, - { "Very good work, old chap. Lucky you are here - I have just been told of a task which is perfect for you. ...", - "The Yalaharians are having a spot of bother with a huge mutated rat. They call it 'Esmeralda' and you should find her somewhere in the sewers. Good hunting!" }, - { "Very good work, old chap. Lucky you are here - I have just been told of a task which is perfect for you. ...", + { "As I see it, you need more of a challenge! I have heard that there is an ice golem the hunters in Svargrond call 'Shardhead'. It is an extremely dangerous example of its kind! ...", "I believe you are equal to the task, |PLAYERNAME|! If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Shardhead' task active at the same time!" }, + { "Very good work, old chap. Lucky you are here - I have just been told of a task which is perfect for you. ...", "The Yalaharians are having a spot of bother with a huge mutated rat. They call it 'Esmeralda' and you should find her somewhere in the sewers. Good hunting!" }, + { + "Very good work, old chap. Lucky you are here - I have just been told of a task which is perfect for you. ...", "The people of Ankrahmun are having a spot of bother with a huge ancient scarab. They call it 'Fleshcrawler' and you should find and kill it. Good hunting! ...", - "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Fleshcrawler' task active at the same time!" }, - { "Very good work, old chap. Have you heard about 'Ribstride'? It must have a hideout. Try to find it and slay the beast. ...", - "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Ribstride' task active at the same time!" }, - { "Very good work, old chap. Have you heard about 'Bloodweb'? It must have a hideout. Try to find it and slay the beast. ...", - "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Bloodweb' task active at the same time!" }, - { "Superb work. However, there is something else I want you to do. It is said that there is a quara general named 'Thul' who is responsible for the attacks on Liberty Bay. Find and kill the general and bring peace back to Liberty Bay! ...", - "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Thul' task active at the same time!" }, + "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Fleshcrawler' task active at the same time!", + }, + { "Very good work, old chap. Have you heard about 'Ribstride'? It must have a hideout. Try to find it and slay the beast. ...", "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Ribstride' task active at the same time!" }, + { "Very good work, old chap. Have you heard about 'Bloodweb'? It must have a hideout. Try to find it and slay the beast. ...", "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Bloodweb' task active at the same time!" }, + { "Superb work. However, there is something else I want you to do. It is said that there is a quara general named 'Thul' who is responsible for the attacks on Liberty Bay. Find and kill the general and bring peace back to Liberty Bay! ...", "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Thul' task active at the same time!" }, "Well THAT was a hunt. Good job. Have you heard about the 'Old Widow'? It must have a hideout. Try to find it and slay the beast. You can ask about new {tasks} by the way. Be aware that you can only have one 'Old Widow' task active at the same time!", - { "What an impressive hunt. Nicely done. By the way there is still something I want you to do for me. 'Hemming' a furious werewolf is up to mischief. Find its hideout and bring it down! ...", - "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Hemming' task active at the same time!" }, - { "Thumbs up, nice performance. Have you heard about 'Tormentor'? Find it and slay the beast. ...", - "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Tormentor' task active at the same time!" }, + { "What an impressive hunt. Nicely done. By the way there is still something I want you to do for me. 'Hemming' a furious werewolf is up to mischief. Find its hideout and bring it down! ...", "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Hemming' task active at the same time!" }, + { "Thumbs up, nice performance. Have you heard about 'Tormentor'? Find it and slay the beast. ...", "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Tormentor' task active at the same time!" }, "Well THAT was a hunt. Good job. Have you heard about 'Flameborn'? It must have a hideout. Try to find it and slay the beast. You can ask about new {tasks} by the way. Be aware that you can only have one 'Flameborn' task active at the same time!", - { "What an impressive hunt. Nicely done. Have you heard about 'Fazzrah'? Try to find it and slay the beast. ...", - "You can ask about new {tasks} by the way. Be aware that you can only have one 'Fazzrah' task active at the same time!" }, - { "Nicely done. However, there is something else I want you to do. I have heard that there is a stampor the hunters in the Muggy Plains call 'Tromphonyte'. It is an extremely dangerous example of its kind! ...", + { "What an impressive hunt. Nicely done. Have you heard about 'Fazzrah'? Try to find it and slay the beast. ...", "You can ask about new {tasks} by the way. Be aware that you can only have one 'Fazzrah' task active at the same time!" }, + { + "Nicely done. However, there is something else I want you to do. I have heard that there is a stampor the hunters in the Muggy Plains call 'Tromphonyte'. It is an extremely dangerous example of its kind! ...", "I believe you are equal to the task, |PLAYERNAME|! Find and kill it and bring peace back! ...", - "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Tromphonyte' task active at the same time!" }, + "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Tromphonyte' task active at the same time!", + }, "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Sulphur Scuttler' task active at the same time!", "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Bruise Payne' task active at the same time!", "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Many' task active at the same time!", - { "My - you can be proud of yourself! However, you're not finished yet. There are rumours about a being called 'The Noxious Spawn' which was seen deep down in the ruins of Banuta. Try to find its hideout. ...", - "You can ask about new {tasks} bye the way. Be aware that you can only have one 'Noxious Spawn' task active at the same time!" }, + { "My - you can be proud of yourself! However, you're not finished yet. There are rumours about a being called 'The Noxious Spawn' which was seen deep down in the ruins of Banuta. Try to find its hideout. ...", "You can ask about new {tasks} bye the way. Be aware that you can only have one 'Noxious Spawn' task active at the same time!" }, "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Gorgo' task active at the same time!", - { "Such marvellous hunting skills! Perhaps you can help me with this one. Have you heard about 'Stonecracker'? ...", - "It's the oldest and most dangerous of all behemoths and was last seen under the Cyclopolis in Edron. What do you think? Are you hunter enough? I think you are!" }, - { "Good job, old chap! Are you up for a challenge? Have you heard of the legendary sea serpent called the 'Leviathan'? It must be somewhere near the spot you found. ...", - "This is a true test of your hunting skills - find it and kill it. Good hunting! ...", "You can ask about new {tasks} by the way. Be aware that you can only have one 'Leviathan' task active at the same time!" }, - { "Outstanding! You do have impressive hunting skills. Have you already heard about Kerberos the oldest and most dangerous of all hellhounds? He must have a hideout somewhere. Try to find him and slay the beast. ...", - "You can ask about new tasks by the way. Be aware that you can only have one Kerberos task active at the same time!" }, + { "Such marvellous hunting skills! Perhaps you can help me with this one. Have you heard about 'Stonecracker'? ...", "It's the oldest and most dangerous of all behemoths and was last seen under the Cyclopolis in Edron. What do you think? Are you hunter enough? I think you are!" }, + { "Good job, old chap! Are you up for a challenge? Have you heard of the legendary sea serpent called the 'Leviathan'? It must be somewhere near the spot you found. ...", "This is a true test of your hunting skills - find it and kill it. Good hunting! ...", "You can ask about new {tasks} by the way. Be aware that you can only have one 'Leviathan' task active at the same time!" }, + { "Outstanding! You do have impressive hunting skills. Have you already heard about Kerberos the oldest and most dangerous of all hellhounds? He must have a hideout somewhere. Try to find him and slay the beast. ...", "You can ask about new tasks by the way. Be aware that you can only have one Kerberos task active at the same time!" }, "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Ethershreck' task active at the same time!", "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Paiz the Pauperizer' task active at the same time!", "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Bretzecutioner' task active at the same time!", - "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Zanakeph' task active at the same time!" + "If you're up for another hunting mission, just ask me for a {task}. Be aware that you can only have one 'Zanakeph' task active at the same time!", } local messageBossStart = { "Okay. Go forth and kill him.", -- Snapper @@ -243,25 +237,25 @@ local messageBossStart = { "Okay. Go forth and kill him.", "Okay. Go forth and kill him.", "Okay. Go forth and kill him.", - "Okay. Go forth and kill him." + "Okay. Go forth and kill him.", } local tier = { { allName = { "crocodiles", "badgers", "tarantulas", "carniphilas", "stone golems", "mammoths", "gnarlhounds", "terramites", "apes", "thornback tortoises", "gargoyles", "crocodile", "badger", "tarantula", "carniphila", "stone golem", "mammoth", "gnarlhound", "terramite", "ape", "thornback tortoise", "gargoyle" }, - withsName = { "crocodiles", "badgers", "tarantulas", "carniphilas", "stone golems", "mammoths", "gnarlhounds", "terramites", "apes", "thornback tortoises", "gargoyles" } + withsName = { "crocodiles", "badgers", "tarantulas", "carniphilas", "stone golems", "mammoths", "gnarlhounds", "terramites", "apes", "thornback tortoises", "gargoyles" }, }, { allName = { "ice golems", "quara scouts", "mutated rats", "ancient scarabs", "wyverns", "lancer beetles", "wailing widows", "killer caimans", "bonebeasts", "crystal spiders", "mutated tigers", "ice golem", "quara scout", "mutated rat", "ancient scarab", "wyvern", "lancer beetle", "wailing widow", "killer caiman", "bonebeast", "crystal spider", "mutated tiger" }, - withsName = { "ice golems", "quara scouts", "mutated rats", "ancient scarabs", "wyverns", "lancer beetles", "wailing widows", "killer caimans", "bonebeasts", "crystal spiders", "mutated tigers" } + withsName = { "ice golems", "quara scouts", "mutated rats", "ancient scarabs", "wyverns", "lancer beetles", "wailing widows", "killer caimans", "bonebeasts", "crystal spiders", "mutated tigers" }, }, { allName = { "underwater quara", "giant spiders", "werewolves", "nightmares", "hellspawns", "high class lizards", "stampors", "brimstone bugs", "mutated bats", "giant spider", "werewolve", "nightmare", "hellspawn", "high class lizard", "stampor", "brimstone bug", "mutated bat" }, - withsName = { "underwater quara", "giant spiders", "werewolves", "nightmares", "hellspawns", "high class lizards", "stampors", "brimstone bugs", "mutated bats" } + withsName = { "underwater quara", "giant spiders", "werewolves", "nightmares", "hellspawns", "high class lizards", "stampors", "brimstone bugs", "mutated bats" }, }, { allName = { "hydras", "serpent spawns", "medusae", "behemoths", "sea serpents", "hellhounds", "ghastly dragons", "undead dragons", "drakens", "destroyers", "hydra", "serpent spawn", "medusa", "behemoth", "sea serpent", "hellhound", "ghastly dragon", "undead dragon", "draken", "destroyer" }, - withsName = { "hydras", "serpent spawns", "medusae", "behemoths", "sea serpents", "hellhounds", "ghastly dragons", "undead dragons", "drakens", "destroyers" } - } + withsName = { "hydras", "serpent spawns", "medusae", "behemoths", "sea serpents", "hellhounds", "ghastly dragons", "undead dragons", "drakens", "destroyers" }, + }, } local messageStartTask = { ["crocodiles"] = "They are a nuisance! You'll find them here in the jungle near the river. Hunt 300 crocodiles and you'll get a nice reward. Interested?", @@ -300,12 +294,13 @@ local messageStartTask = { ["behemoths"] = "Behemoths must be kept away from the settlements at all costs. You'll find them east of here in the taboo-area or under Cyclopolis in Edron. Go there and hunt a few of them - shall we say... 700? Are you up for that?", ["sea serpents"] = { "The sea serpent threat increases! Captain Haba knows where to find them. ...", - "Go to Svargrond and talk to him. 900 sea serpents, including the young ones, should be enough to reduce the threat. Got it?" }, + "Go to Svargrond and talk to him. 900 sea serpents, including the young ones, should be enough to reduce the threat. Got it?", + }, ["hellhounds"] = "These harbingers of darkness can be found in many deep dungeons all over Tibia. Kill 250 of them. Are you in?", ["ghastly dragons"] = "Ghastly dragons are devastating creatures which can be found in many dangerous places all over Tibia. Kill 500 of them. Are you in?", ["undead dragons"] = "You are a thrill seeker? Undead dragons belong to one of the most powerful races that can be found in Tibia. Kill 400 of them. Are you in?", ["drakens"] = "Go to the Zaoan landmass and reduce their number! Kill 900 drakens, I'll accept: draken abomination, draken elite, draken spellweaver and draken warmaster. Are you in?", - ["destroyers"] = "You can find those dark creatures on several places all over Tibia. For this task I want you to kill 650 destroyers. Are you in?" + ["destroyers"] = "You can find those dark creatures on several places all over Tibia. For this task I want you to kill 650 destroyers. Are you in?", } local messageStartTaskAlt = { ["crocodile"] = messageStartTask["crocodiles"], @@ -410,7 +405,9 @@ local function creatureSayCallback(npc, creature, type, message) return false end - message = message:gsub("(%l)(%w*)", function(a, b) return string.upper(a) .. b end) + message = message:gsub("(%l)(%w*)", function(a, b) + return string.upper(a) .. b + end) if (MsgContains("join", message) or MsgContains("yes", message)) and npcHandler:getTopic(playerId) == 0 and player:getStorageValue(Storage.KillingInTheNameOf.QuestLogEntry) ~= 0 then player:setStorageValue(JOIN_STOR, 1) @@ -431,11 +428,13 @@ local function creatureSayCallback(npc, creature, type, message) if checkZ(npc, player, message) == true then return true end - if player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) < 0 and player:getStorageValue(POINTSSTORAGE) >= 10 and player:getLevel() >= 6 or -- to Huntsman Rank - player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 0 and player:getStorageValue(POINTSSTORAGE) >= 20 and player:getLevel() >= 6 or -- to Ranger Rank - player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 2 and player:getStorageValue(POINTSSTORAGE) >= 40 and player:getLevel() >= 50 or -- to Big Game Hunter Rank - player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 4 and player:getStorageValue(POINTSSTORAGE) >= 70 and player:getLevel() >= 80 or -- to Trophy Hunter Rank - player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 6 and player:getStorageValue(POINTSSTORAGE) >= 100 and player:getLevel() >= 130 then -- to Elite Hunter Rank + if + player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) < 0 and player:getStorageValue(POINTSSTORAGE) >= 10 and player:getLevel() >= 6 -- to Huntsman Rank + or player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 0 and player:getStorageValue(POINTSSTORAGE) >= 20 and player:getLevel() >= 6 -- to Ranger Rank + or player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 2 and player:getStorageValue(POINTSSTORAGE) >= 40 and player:getLevel() >= 50 -- to Big Game Hunter Rank + or player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 4 and player:getStorageValue(POINTSSTORAGE) >= 70 and player:getLevel() >= 80 -- to Trophy Hunter Rank + or player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 6 and player:getStorageValue(POINTSSTORAGE) >= 100 and player:getLevel() >= 130 + then -- to Elite Hunter Rank npcHandler:say("You are ready to advance one rank in our society |PLAYERNAME|. Ask me for a {promotion} first.", npc, creature) return true end @@ -483,9 +482,7 @@ local function creatureSayCallback(npc, creature, type, message) end local pointsToReceive = reward.value[1] * ratePoints - if player:getStorageValue(POINTSSTORAGE) >= 40 and player:getLevel() < 50 or - player:getStorageValue(POINTSSTORAGE) >= 70 and player:getLevel() < 80 or - player:getStorageValue(POINTSSTORAGE) >= 100 and player:getLevel() < 130 then + if player:getStorageValue(POINTSSTORAGE) >= 40 and player:getLevel() < 50 or player:getStorageValue(POINTSSTORAGE) >= 70 and player:getLevel() < 80 or player:getStorageValue(POINTSSTORAGE) >= 100 and player:getLevel() < 130 then messageAltPoints = true elseif player:getLevel() >= 130 and player:getStorageValue(POINTSSTORAGE) <= 20 then player:setStorageValue(POINTSSTORAGE, getPlayerTasksPoints(creature) + pointsToReceive + 3) @@ -534,7 +531,8 @@ local function creatureSayCallback(npc, creature, type, message) if messageAltExtra == true then npcHandler:say({ "Such brave deed deserves a special reward! Take this holy icon. It neutralises great evil and gives you access to areas which are protected by those forces. But remember ...", - "This is a one-time opportunity! You won't get the holy icon twice." }, npc, creature) + "This is a one-time opportunity! You won't get the holy icon twice.", + }, npc, creature) return true end if finished > 0 then @@ -544,7 +542,8 @@ local function creatureSayCallback(npc, creature, type, message) if messageAltPoints == true then npcHandler:say({ "Ah, okay. This time you'll just get an experience reward, no points for our society as you already gained enough points for your level range. Ask me for a {boss} and the choice is yours. ...", - "Level up and new tasks and thus points will be available." }, npc, creature) + "Level up and new tasks and thus points will be available.", + }, npc, creature) elseif messageAltExtraPoints == true then npcHandler:say("You're lucky today. This time you'll get an experience reward and " .. extraValue .. " extra points for our societ.", npc, creature) else @@ -568,7 +567,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "You may not advance in your rank anymore until you've levelled up. But you can accept tasks without getting Paw & Fur points, just for an experience reward and the possibility to fight a boss from the range lower than level 50. ...", "You can try {crocodiles}, {badgers}, {tarantulas}, {carniphilas}, {stone golems}, {mammoths}, {gnarlhounds}, ...", - "as well as {terramites}, {apes}, {thornback tortoises} and {gargoyles}." }, npc, creature) + "as well as {terramites}, {apes}, {thornback tortoises} and {gargoyles}.", + }, npc, creature) else npcHandler:say("Alright, what would you like to hunt? {Crocodiles}, {badgers}, {tarantulas}, {carniphilas}, {stone golems}, {mammoths}, {gnarlhounds}, {terramites}, {apes}, {thornback tortoises} or {gargoyles}.", npc, creature) end @@ -577,32 +577,38 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "You may not advance in your rank anymore until you've levelled up. But you can accept tasks without getting Paw & Fur points, just for an experience reward and the possibility to fight a boss from the range lower than level 80. ...", "You can try {ice golems}, {quara scouts}, {mutated rats}, {ancient scarabs}, {wyverns}, {lancer beetles}, {wailing widows}, ...", - "as well as {killer caimans}, {bonebeasts}, {crystal spiders} and {mutated tigers}." }, npc, creature) + "as well as {killer caimans}, {bonebeasts}, {crystal spiders} and {mutated tigers}.", + }, npc, creature) else npcHandler:say({ "Alright, what would you like to hunt? {Ice golems}, {quara scouts}, {mutated rats}, {ancient scarabs}, {wyverns}, {lancer beetles}, ...", - "or {wailing widows}, {killer caimans}, {bonebeasts}, {crystal spiders} or {mutated tigers}." }, npc, creature) + "or {wailing widows}, {killer caimans}, {bonebeasts}, {crystal spiders} or {mutated tigers}.", + }, npc, creature) end elseif player:getLevel() >= 80 and player:getLevel() < 130 then if player:getStorageValue(POINTSSTORAGE) >= 100 then npcHandler:say({ "You may not advance in your rank anymore until you've levelled up. But you can accept tasks without getting Paw & Fur points, just for an experience reward and the possibility to fight a boss from the range lower than level 130. ...", "You can try {underwater quara}, {giant spiders}, {werewolves}, {nightmares}, {hellspawns}, {high class lizards}, {stampors}, ...", - "as well as {brimstone bugs} and {mutated bats}." }, npc, creature) + "as well as {brimstone bugs} and {mutated bats}.", + }, npc, creature) else npcHandler:say({ "Alright, what would you like to hunt? {Underwater quara}, {giant spiders}, {werewolves}, {nightmares}, {hellspawns}, ...", - "as well as {high class lizards}, {stampors}, {brimstone bugs}, {mutated bats}." }, npc, creature) + "as well as {high class lizards}, {stampors}, {brimstone bugs}, {mutated bats}.", + }, npc, creature) end elseif player:getLevel() >= 130 and player:getStorageValue(POINTSSTORAGE) < 100 then npcHandler:say({ "Alright, what would you like to hunt? You can try {hydras}, {serpent spawns}, {medusae}, {behemoths}, {sea serpents}, ...", - "as well as {hellhounds}, {ghastly dragons}, {undead dragons}, {draken} and {destroyers}." }, npc, creature) + "as well as {hellhounds}, {ghastly dragons}, {undead dragons}, {draken} and {destroyers}.", + }, npc, creature) else npcHandler:say({ "Alright, what would you like to hunt? Be aware you won't gain any paw and fur points as you already achieved the highest rank, but you'll get an experience reward and can face bosses. ...", "You can try {hydras}, {serpent spawns}, {medusae}, {behemoths}, {sea serpents}, ...", - "as well as {hellhounds}, {ghastly dragons}, {undead dragons}, {draken} and {destroyers} or maybe {demons}." }, npc, creature) + "as well as {hellhounds}, {ghastly dragons}, {undead dragons}, {draken} and {destroyers} or maybe {demons}.", + }, npc, creature) end npcHandler:setTopic(playerId, 0) elseif message ~= "" and player:canStartTask(message) then @@ -623,7 +629,7 @@ local function creatureSayCallback(npc, creature, type, message) local chanceX = math.random(2) local messageCarniphilas = { [1] = "Interesting kind and not so easy to find. The fun begins when you want to hunt {Tiquanda's Revenge}. It's strong and smart like no other carniphila.", - [2] = "Damn walking weed-thingies! You'll find them deeper in the jungle. Weed out 150 carniphilas for our society. Alright?" + [2] = "Damn walking weed-thingies! You'll find them deeper in the jungle. Weed out 150 carniphilas for our society. Alright?", } npcHandler:say(messageCarniphilas[chanceX], npc, creature) elseif table.contains(tier[1].withsName, message:lower()) then @@ -718,14 +724,15 @@ local function creatureSayCallback(npc, creature, type, message) local started = player:getStartedTasks() if started and #started > 0 then local text = "" - table.sort(started, (function(a, b) return (a < b) end)) + table.sort(started, function(a, b) + return (a < b) + end) local t = 0 local id for i = 1, #started do id = started[i] t = t + 1 - text = text .. "Task name: " .. tasks.GrizzlyAdams[id].raceName .. ". " .. - "Current kills: " .. player:getStorageValue(KillCounter + id) .. ".\n" + text = text .. "Task name: " .. tasks.GrizzlyAdams[id].raceName .. ". " .. "Current kills: " .. player:getStorageValue(KillCounter + id) .. ".\n" end npcHandler:say({ "The status of your current tasks is:\n" .. text }, npc, creature) else @@ -735,22 +742,26 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) < 0 and player:getStorageValue(POINTSSTORAGE) >= 10 and player:getLevel() >= 6 then -- to Huntsman Rank npcHandler:say({ "You gained 10 points! Let me promote you to the first rank: 'Huntsman'. Congratulations! ...", - "If you find any trophies - either monster heads or other parts of monsters that you don't need - feel free to ask me for a trade." }, npc, creature) + "If you find any trophies - either monster heads or other parts of monsters that you don't need - feel free to ask me for a trade.", + }, npc, creature) player:setStorageValue(Storage.KillingInTheNameOf.PawAndFurRank, 0) elseif player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 0 and player:getStorageValue(POINTSSTORAGE) >= 20 and player:getLevel() >= 6 then -- to Ranger Rank npcHandler:say({ "You gained 20 points. It's time for a promotion. You advance to the rank of a 'Ranger'. Congratulations! ...", - "Oh, I made a deal with Lorek. He ships Rangers from our society - and higher ranks of course - to Banuta, Chor or near the mountain pass to Darama. Just ask him for a passage." }, npc, creature) + "Oh, I made a deal with Lorek. He ships Rangers from our society - and higher ranks of course - to Banuta, Chor or near the mountain pass to Darama. Just ask him for a passage.", + }, npc, creature) player:setStorageValue(Storage.KillingInTheNameOf.PawAndFurRank, 2) elseif player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 2 and player:getStorageValue(POINTSSTORAGE) >= 40 and player:getLevel() >= 50 then -- to Big Game Hunter Rank npcHandler:say({ "Good show! You gained 40 points for the 'Paw and Fur - Hunting Elite'. You have earned the right to join the ranks of those known as 'Big game hunter'. Congratulations! ...", - "From now on I'll buy more trophies from you!" }, npc, creature) + "From now on I'll buy more trophies from you!", + }, npc, creature) player:setStorageValue(Storage.KillingInTheNameOf.PawAndFurRank, 4) elseif player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 4 and player:getStorageValue(POINTSSTORAGE) >= 70 and player:getLevel() >= 80 then -- to Trophy Hunter Rank npcHandler:say({ "Spiffing! You gained 70 hunting points! From now on you can call yourself a 'Trophy hunter'. As a reward I have this special backpack for you and in addition, you can sell some more rare trophies to me. ...", - "Ask me for {special} tasks from time to time." }, npc, creature) + "Ask me for {special} tasks from time to time.", + }, npc, creature) player:setStorageValue(Storage.KillingInTheNameOf.PawAndFurRank, 6) elseif player:getStorageValue(Storage.KillingInTheNameOf.PawAndFurRank) == 6 and player:getStorageValue(POINTSSTORAGE) >= 100 and player:getLevel() >= 130 then -- to Elite Hunter Rank npcHandler:say("Congratulations, |PLAYERNAME|! You have gained the highest rank: 'Elite hunter'. If you haven't done yet, ask me for the {special} task.", npc, creature) @@ -768,18 +779,21 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 4) elseif player:getLevel() >= 50 and player:getLevel() < 80 then npcHandler:say({ - "You can choose between the {Snapper}, {Hide}, {Deathbine}, the {Bloodtusk}, {Shardhead}, {Fleshcrawler}, {Ribstride}, {Bloodweb} and {Esmeralda}" }, npc, creature) + "You can choose between the {Snapper}, {Hide}, {Deathbine}, the {Bloodtusk}, {Shardhead}, {Fleshcrawler}, {Ribstride}, {Bloodweb} and {Esmeralda}", + }, npc, creature) npcHandler:setTopic(playerId, 5) elseif player:getLevel() >= 80 and player:getLevel() < 130 then npcHandler:say({ "You can choose between the {Snapper}, {Hide}, {Deathbine}, the {Bloodtusk}, {Shardhead}, {Fleshcrawler}, {Ribstride}, {Bloodweb}, {Esmeralda}, ...", - "{Thul}, {Flameborn}, {Sulphur Scuttler}, the {Old Widow}, {Hemming}, {Tormentor}, {Fazzrah}, {Tromphonyte} and {Bruise Payne}." }, npc, creature) + "{Thul}, {Flameborn}, {Sulphur Scuttler}, the {Old Widow}, {Hemming}, {Tormentor}, {Fazzrah}, {Tromphonyte} and {Bruise Payne}.", + }, npc, creature) npcHandler:setTopic(playerId, 6) else npcHandler:say({ "You can choose between the {Snapper}, {Hide}, {Deathbine}, the {Bloodtusk}, {Shardhead}, {Fleshcrawler}, {Ribstride}, {Bloodweb}, {Esmeralda}, ...", "{Thul}, {Flameborn}, {Sulphur Scuttler}, the {Old Widow}, {Hemming}, {Tormentor}, {Fazzrah}, {Tromphonyte}, {Bruise Payne}, ...", - "the {Many}, the {Noxious Spawn}, {Stonecracker}, {Gorgo}, {Kerberos}, {Ethershreck}, {Zanakeph}, {Paiz the Pauperizer}, {Bretzecutioner} and {Leviathan}." }, npc, creature) + "the {Many}, the {Noxious Spawn}, {Stonecracker}, {Gorgo}, {Kerberos}, {Ethershreck}, {Zanakeph}, {Paiz the Pauperizer}, {Bretzecutioner} and {Leviathan}.", + }, npc, creature) npcHandler:setTopic(playerId, 7) end else @@ -816,7 +830,9 @@ local function creatureSayCallback(npc, creature, type, message) if started and #started > 0 then local text = "" local sep = ", " - table.sort(started, (function(a, b) return (a < b) end)) + table.sort(started, function(a, b) + return (a < b) + end) local t = 0 local id for i = 1, #started do @@ -830,8 +846,7 @@ local function creatureSayCallback(npc, creature, type, message) text = text .. "{" .. (tasks.GrizzlyAdams[id].name or tasks.GrizzlyAdams[id].raceName) .. "}" .. sep end - npcHandler:say("The current task" .. (#started > 1 and "s" or "") .. " that you started" .. - " " .. (#started > 1 and "are" or "is") .. " " .. text, npc, creature) + npcHandler:say("The current task" .. (#started > 1 and "s" or "") .. " that you started" .. " " .. (#started > 1 and "are" or "is") .. " " .. text, npc, creature) else npcHandler:say("You haven't started any task yet.", npc, creature) end @@ -839,7 +854,9 @@ local function creatureSayCallback(npc, creature, type, message) local started = player:getStartedTasks() local text = "" local sep = ", " - table.sort(started, (function(a, b) return (a < b) end)) + table.sort(started, function(a, b) + return (a < b) + end) local t = 0 local id for i = 1, #started do @@ -853,35 +870,24 @@ local function creatureSayCallback(npc, creature, type, message) text = text .. "{" .. (tasks.GrizzlyAdams[id].name or tasks.GrizzlyAdams[id].raceName) .. "}" .. sep end if started and #started > 0 then - npcHandler:say("Canceling a task will make the counter restart. " .. - "Which of these tasks you want cancel?" .. (#started > 1 and "" or "") .. " " .. text, npc, creature) + npcHandler:say("Canceling a task will make the counter restart. " .. "Which of these tasks you want cancel?" .. (#started > 1 and "" or "") .. " " .. text, npc, creature) npcHandler:setTopic(playerId, 2) else npcHandler:say("You haven't started any task yet.", npc, creature) end - elseif ((getTaskByName(message)) and - (npcHandler:getTopic(playerId) == 2) and - (table.contains(getPlayerStartedTasks(creature), getTaskByName(message)))) then + elseif (getTaskByName(message)) and (npcHandler:getTopic(playerId) == 2) and (table.contains(getPlayerStartedTasks(creature), getTaskByName(message))) then local task = getTaskByName(message) if player:getStorageValue(KillCounter + task) > 0 then - npcHandler:say("You currently killed " .. player:getStorageValue(KillCounter + task) .. "/" .. - tasks.GrizzlyAdams[task].killsRequired .. " " .. tasks.GrizzlyAdams[task].raceName .. "." .. - " " .. "Canceling this task will restart the count." .. - " " .. "Are you sure you want to cancel this task?", npc, creature) + npcHandler:say("You currently killed " .. player:getStorageValue(KillCounter + task) .. "/" .. tasks.GrizzlyAdams[task].killsRequired .. " " .. tasks.GrizzlyAdams[task].raceName .. "." .. " " .. "Canceling this task will restart the count." .. " " .. "Are you sure you want to cancel this task?", npc, creature) else npcHandler:say("Are you sure you want to cancel this task?", npc, creature) end npcHandler:setTopic(playerId, 3) cancel[playerId] = task - elseif ((getTaskByName(message)) and - (npcHandler:getTopic(playerId) == 1) and - (table.contains(getPlayerStartedTasks(creature), getTaskByName(message)))) then + elseif (getTaskByName(message)) and (npcHandler:getTopic(playerId) == 1) and (table.contains(getPlayerStartedTasks(creature), getTaskByName(message))) then local task = getTaskByName(message) if player:getStorageValue(KillCounter + task) > 0 then - npcHandler:say("You currently killed " .. - player:getStorageValue(KillCounter + task) .. "/" .. - tasks.GrizzlyAdams[task].killsRequired .. " " .. - tasks.GrizzlyAdams[task].raceName .. ".", npc, creature) + npcHandler:say("You currently killed " .. player:getStorageValue(KillCounter + task) .. "/" .. tasks.GrizzlyAdams[task].killsRequired .. " " .. tasks.GrizzlyAdams[task].raceName .. ".", npc, creature) else npcHandler:say("You currently killed 0/" .. tasks.GrizzlyAdams[task].killsRequired .. " " .. tasks.GrizzlyAdams[task].raceName .. ".", npc, creature) end @@ -890,18 +896,18 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(QUESTSTORAGE_BASE + cancel[playerId], -1) player:setStorageValue(KILLSSTORAGE_BASE + cancel[playerId], player:getStorageValue(KILLSSTORAGE_BASE + cancel[playerId]) - 1) player:setStorageValue(KillCounter + cancel[playerId], 0) - npcHandler:say("You have canceled the task " .. - (tasks.GrizzlyAdams[cancel[playerId]].name or tasks.GrizzlyAdams[cancel[playerId]].raceName) .. ".", npc, creature) + npcHandler:say("You have canceled the task " .. (tasks.GrizzlyAdams[cancel[playerId]].name or tasks.GrizzlyAdams[cancel[playerId]].raceName) .. ".", npc, creature) npcHandler:setTopic(playerId, 0) elseif table.contains({ "points", "rank" }, message:lower()) then - npcHandler:say("At this time, you have " .. player:getPawAndFurPoints() .. " Paw & Fur points. You " .. - (player:getPawAndFurRank() == 6 and "are an Elite Hunter" or - player:getPawAndFurRank() == 5 and "are a Trophy Hunter" or - player:getPawAndFurRank() == 4 and "are a Big Game Hunter" or - player:getPawAndFurRank() == 3 and "are a Ranger" or - player:getPawAndFurRank() == 2 and "are a Huntsman" or - player:getPawAndFurRank() == 1 and "are a Member" or - "haven't been ranked yet") .. ".", npc, creature) + npcHandler:say( + "At this time, you have " + .. player:getPawAndFurPoints() + .. " Paw & Fur points. You " + .. (player:getPawAndFurRank() == 6 and "are an Elite Hunter" or player:getPawAndFurRank() == 5 and "are a Trophy Hunter" or player:getPawAndFurRank() == 4 and "are a Big Game Hunter" or player:getPawAndFurRank() == 3 and "are a Ranger" or player:getPawAndFurRank() == 2 and "are a Huntsman" or player:getPawAndFurRank() == 1 and "are a Member" or "haven't been ranked yet") + .. ".", + npc, + creature + ) npcHandler:setTopic(playerId, 0) elseif message:lower() == "no" and npcHandler:getTopic(playerId) == 10 then npcHandler:say("Speak to me again when you are done hunting", npc, creature) @@ -911,7 +917,8 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.KillingInTheNameOf.MissionTiquandasRevenge) < 1 then npcHandler:say({ "Have you heard about {Tiquanda's Revenge}? It is said that the jungle itself is alive and takes revenge for all the bad things people have done to it. ...", - "I myself believe that there is some truth in this clap-trap. Something 'real' which must have a hideout somewhere. Go find it and take revenge yourself! Ask me about the {special} task when you're done." }, npc, creature) + "I myself believe that there is some truth in this clap-trap. Something 'real' which must have a hideout somewhere. Go find it and take revenge yourself! Ask me about the {special} task when you're done.", + }, npc, creature) player:setStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.TiquandasCount, 0) player:setStorageValue(Storage.KillingInTheNameOf.MissionTiquandasRevenge, 1) elseif player:getStorageValue(Storage.KillingInTheNameOf.MissionTiquandasRevenge) <= 2 and player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.TiquandasCount) == 0 then diff --git a/data-otservbr-global/npc/grodrik.lua b/data-otservbr-global/npc/grodrik.lua index 378c7ae69da..afb0c359e71 100644 --- a/data-otservbr-global/npc/grodrik.lua +++ b/data-otservbr-global/npc/grodrik.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 96, lookBody = 120, lookLegs = 60, - lookFeet = 116 + lookFeet = 116, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/grof_the_guard.lua b/data-otservbr-global/npc/grof_the_guard.lua index a3a2ceed0c9..95dd3e1969a 100644 --- a/data-otservbr-global/npc/grof_the_guard.lua +++ b/data-otservbr-global/npc/grof_the_guard.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 19, lookFeet = 19, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -75,7 +75,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "It's my duty to protect the city." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "It's my duty to protect the city." }) npcHandler:setMessage(MESSAGE_GREET, "LONG LIVE THE KING!") npcHandler:setMessage(MESSAGE_FAREWELL, "LONG LIVE THE KING!") diff --git a/data-otservbr-global/npc/grombur.lua b/data-otservbr-global/npc/grombur.lua index 1da3efd1503..1501463f1d8 100644 --- a/data-otservbr-global/npc/grombur.lua +++ b/data-otservbr-global/npc/grombur.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 114, lookBody = 77, lookLegs = 79, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,7 +57,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "nokmir") then if player:getStorageValue(Storage.HiddenCityOfBeregar.JusticeForAll) == 2 then npcHandler:say("Oh well, I liked Nokmir. He used to be a good dwarf until that day on which he stole the ring from {Rerun}.", npc, creature) diff --git a/data-otservbr-global/npc/grubokk.lua b/data-otservbr-global/npc/grubokk.lua index 3675c0275b3..3d5eb3cb0fe 100644 --- a/data-otservbr-global/npc/grubokk.lua +++ b/data-otservbr-global/npc/grubokk.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 857 + lookType = 857, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/grumpy_stone.lua b/data-otservbr-global/npc/grumpy_stone.lua index 31a2054a9fd..e343e1db296 100644 --- a/data-otservbr-global/npc/grumpy_stone.lua +++ b/data-otservbr-global/npc/grumpy_stone.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/guard_bazaya.lua b/data-otservbr-global/npc/guard_bazaya.lua index a619d75d44a..310f877383e 100644 --- a/data-otservbr-global/npc/guard_bazaya.lua +++ b/data-otservbr-global/npc/guard_bazaya.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 3, lookFeet = 105, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/guard_inurta.lua b/data-otservbr-global/npc/guard_inurta.lua index 56901431604..e666497f1fa 100644 --- a/data-otservbr-global/npc/guard_inurta.lua +++ b/data-otservbr-global/npc/guard_inurta.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 29, lookLegs = 68, lookFeet = 78, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/guard_saros.lua b/data-otservbr-global/npc/guard_saros.lua index a501c2253e3..9b47bbbe84d 100644 --- a/data-otservbr-global/npc/guard_saros.lua +++ b/data-otservbr-global/npc/guard_saros.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Praised be Suon, the Benevolent King!' } + { text = "Praised be Suon, the Benevolent King!" }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/guard_senet.lua b/data-otservbr-global/npc/guard_senet.lua index 71dfbbf748c..ce6a442c11c 100644 --- a/data-otservbr-global/npc/guard_senet.lua +++ b/data-otservbr-global/npc/guard_senet.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 3, lookFeet = 105, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/guardian_of_the_deep_seas.lua b/data-otservbr-global/npc/guardian_of_the_deep_seas.lua index fe5599d6457..ebe123ccb36 100644 --- a/data-otservbr-global/npc/guardian_of_the_deep_seas.lua +++ b/data-otservbr-global/npc/guardian_of_the_deep_seas.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/guide_alexena.lua b/data-otservbr-global/npc/guide_alexena.lua index 07c6fa955b9..e4d9ebbe7de 100644 --- a/data-otservbr-global/npc/guide_alexena.lua +++ b/data-otservbr-global/npc/guide_alexena.lua @@ -16,21 +16,21 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 78, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Free escort to the depot for newcomers!' }, - { text = 'Hello, is this your first visit to Carlin? I can show you around a little.' }, - { text = 'I can tell you all about the status this world is in.' }, - { text = 'Talk to me if you need directions.' }, - { text = 'Need some help finding your way through Carlin?' } + { text = "Free escort to the depot for newcomers!" }, + { text = "Hello, is this your first visit to Carlin? I can show you around a little." }, + { text = "I can tell you all about the status this world is in." }, + { text = "Talk to me if you need directions." }, + { text = "Need some help finding your way through Carlin?" }, } local keywordHandler = KeywordHandler:new() @@ -63,7 +63,7 @@ end local configMarks = { { mark = "shops", position = Position(32335, 31803, 7), markId = MAPMARK_BAG, description = "Shops" }, { mark = "depot", position = Position(32331, 31782, 7), markId = MAPMARK_LOCK, description = "Depot" }, - { mark = "temple", position = Position(32360, 31782, 7), markId = MAPMARK_TEMPLE, description = "Temple" } + { mark = "temple", position = Position(32360, 31782, 7), markId = MAPMARK_TEMPLE, description = "Temple" }, } local function creatureSayCallback(npc, creature, type, message) @@ -92,14 +92,14 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple can be found in one of the uptown districts. Look for stairs up from the lower city, you\'ll find the temple in the northwest of the upper city.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'The bank is on the left side of the depot. Eva will be at your service there.' }) -keywordHandler:addKeyword({ 'shops' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy weapons, armor, tools, gems, magical equipment, furniture, spells and food here.' }) -keywordHandler:addKeyword({ 'depot' }, StdModule.say, { npcHandler = npcHandler, text = 'The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'ll help you find your way through Carlin, the amazon town. I can mark important locations on your map and give you some information about the town and the world status.' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'This city is ruled by Queen Eloise with the help of her female brigade. We have a lot of shops here as well as the usual facilities like depot, temple and so on.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m Alexena, at your service!' }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple can be found in one of the uptown districts. Look for stairs up from the lower city, you'll find the temple in the northwest of the upper city." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "The bank is on the left side of the depot. Eva will be at your service there." }) +keywordHandler:addKeyword({ "shops" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy weapons, armor, tools, gems, magical equipment, furniture, spells and food here." }) +keywordHandler:addKeyword({ "depot" }, StdModule.say, { npcHandler = npcHandler, text = "The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'll help you find your way through Carlin, the amazon town. I can mark important locations on your map and give you some information about the town and the world status." }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "This city is ruled by Queen Eloise with the help of her female brigade. We have a lot of shops here as well as the usual facilities like depot, temple and so on." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Alexena, at your service!" }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to Carlin, |PLAYERNAME| Would you like some information and a map guide?") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") diff --git a/data-otservbr-global/npc/guide_behil.lua b/data-otservbr-global/npc/guide_behil.lua index 44274b94343..2cc401a9f59 100644 --- a/data-otservbr-global/npc/guide_behil.lua +++ b/data-otservbr-global/npc/guide_behil.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 87, lookLegs = 85, lookFeet = 126, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Hello, is this your first visit to Darashia? I can show you around a little.' }, - { text = 'I\'m well informed about the status of the world despite all the recent changes.' }, - { text = 'Need some help finding your way through Darashia? Let me assist you.' }, - { text = 'Free escort to the depot for newcomers!' } + { text = "Hello, is this your first visit to Darashia? I can show you around a little." }, + { text = "I'm well informed about the status of the world despite all the recent changes." }, + { text = "Need some help finding your way through Darashia? Let me assist you." }, + { text = "Free escort to the depot for newcomers!" }, } local keywordHandler = KeywordHandler:new() @@ -61,7 +61,7 @@ end local configMarks = { { mark = "shops", position = Position(33223, 32422, 7), markId = MAPMARK_BAG, description = "Shops" }, - { mark = "depottp", position = Position(33214, 32453, 7), markId = MAPMARK_LOCK, description = "Depot and Temple" } + { mark = "depottp", position = Position(33214, 32453, 7), markId = MAPMARK_LOCK, description = "Depot and Temple" }, } local function creatureSayCallback(npc, creature, type, message) @@ -90,14 +90,14 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is a few floors over the depot. Just walk up the numerous stairs there.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'Muzir takes care of our bank business. His office is in the north-western part of the caliph\'s palace.' }) -keywordHandler:addKeyword({ 'shops' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy weapons, armor, tools, gems, magical equipment, furniture, spells and food here.' }) -keywordHandler:addKeyword({ 'depot' }, StdModule.say, { npcHandler = npcHandler, text = 'The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'ll show you around Darashia if you like. I can mark important locations on your map and give you some information about the town and the world status.' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'Darashia is an oriental settlement ruled by Caliph Kazzan Ibn Gadral. We have a lot of shops, carpet travel and a rotworm plague, that sums it about up.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Behil. Glad to be your guide.' }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is a few floors over the depot. Just walk up the numerous stairs there." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "Muzir takes care of our bank business. His office is in the north-western part of the caliph's palace." }) +keywordHandler:addKeyword({ "shops" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy weapons, armor, tools, gems, magical equipment, furniture, spells and food here." }) +keywordHandler:addKeyword({ "depot" }, StdModule.say, { npcHandler = npcHandler, text = "The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'll show you around Darashia if you like. I can mark important locations on your map and give you some information about the town and the world status." }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "Darashia is an oriental settlement ruled by Caliph Kazzan Ibn Gadral. We have a lot of shops, carpet travel and a rotworm plague, that sums it about up." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Behil. Glad to be your guide." }) npcHandler:setMessage(MESSAGE_GREET, "Daraman's blessings, Black Sabbatth, welcome to Darashia! Would you like some information and a map guide?") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") diff --git a/data-otservbr-global/npc/guide_davina.lua b/data-otservbr-global/npc/guide_davina.lua index e2c0d280ba5..06af82a410f 100644 --- a/data-otservbr-global/npc/guide_davina.lua +++ b/data-otservbr-global/npc/guide_davina.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 97, lookLegs = 116, lookFeet = 114, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'I\'m informed about the status the world is in. If you have questions, let me know.' }, - { text = 'Need some help finding your way through Liberty Bay? Let me assist you.' }, - { text = 'Free escort to the depot for newcomers!' }, - { text = 'Hello, is this your first visit to Liberty Bay? I can show you around the town.' } + { text = "I'm informed about the status the world is in. If you have questions, let me know." }, + { text = "Need some help finding your way through Liberty Bay? Let me assist you." }, + { text = "Free escort to the depot for newcomers!" }, + { text = "Hello, is this your first visit to Liberty Bay? I can show you around the town." }, } local keywordHandler = KeywordHandler:new() @@ -62,7 +62,7 @@ end local configMarks = { { mark = "shops", position = Position(32293, 32824, 7), markId = MAPMARK_BAG, description = "Shops" }, { mark = "depot", position = Position(32336, 32838, 7), markId = MAPMARK_LOCK, description = "Depot" }, - { mark = "temple", position = Position(32317, 32826, 7), markId = MAPMARK_TEMPLE, description = "Temple" } + { mark = "temple", position = Position(32317, 32826, 7), markId = MAPMARK_TEMPLE, description = "Temple" }, } local function creatureSayCallback(npc, creature, type, message) @@ -91,14 +91,14 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is just north west of the depot. You can\'t miss it.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'Jefrey, our bank clerk, can be found inside the depot. Easy to find.' }) -keywordHandler:addKeyword({ 'shops' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy weapons, armor, tools, gems, magical equipment, furniture and food here.' }) -keywordHandler:addKeyword({ 'depot' }, StdModule.say, { npcHandler = npcHandler, text = 'The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, I\'m a guide. I can mark important locations on your map and give you some information about the town. I do this for free, but I\'m always happy about a small donation if you can spare some money.' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'This city has three main districts - a noble district, a merchant district and the slums. The class difference is clearly visible here. Most shops are in the merchant district. There are also large sugarcane plantations.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m Davina. Glad to help you today.' }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is just north west of the depot. You can't miss it." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "Jefrey, our bank clerk, can be found inside the depot. Easy to find." }) +keywordHandler:addKeyword({ "shops" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy weapons, armor, tools, gems, magical equipment, furniture and food here." }) +keywordHandler:addKeyword({ "depot" }, StdModule.say, { npcHandler = npcHandler, text = "The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Well, I'm a guide. I can mark important locations on your map and give you some information about the town. I do this for free, but I'm always happy about a small donation if you can spare some money." }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "This city has three main districts - a noble district, a merchant district and the slums. The class difference is clearly visible here. Most shops are in the merchant district. There are also large sugarcane plantations." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Davina. Glad to help you today." }) npcHandler:setMessage(MESSAGE_GREET, "Hello there, |PLAYERNAME| and welcome to Liberty Bay! Would you like some information and a map guide?") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") diff --git a/data-otservbr-global/npc/guide_edna.lua b/data-otservbr-global/npc/guide_edna.lua index 74d50051998..be29fffb1c6 100644 --- a/data-otservbr-global/npc/guide_edna.lua +++ b/data-otservbr-global/npc/guide_edna.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Want to know the status of all the world changes? Ask me.' } + { text = "Want to know the status of all the world changes? Ask me." }, } local keywordHandler = KeywordHandler:new() @@ -59,7 +59,7 @@ end local configMarks = { { mark = "shops", position = Position(32827, 31239, 7), markId = MAPMARK_BAG, description = "Weapons and Amror" }, { mark = "depot", position = Position(32786, 31248, 7), markId = MAPMARK_LOCK, description = "Depot" }, - { mark = "temple", position = Position(32786, 31276, 7), markId = MAPMARK_TEMPLE, description = "Temple" } + { mark = "temple", position = Position(32786, 31276, 7), markId = MAPMARK_TEMPLE, description = "Temple" }, } local function creatureSayCallback(npc, creature, type, message) @@ -88,14 +88,14 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is just south west of here. Actually, it\'s a temple raft and the priestess is somewhat... meow... you\'ll see what I mean.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'Our bank clerk Znozel is somewhat... special. You can find him north of this harbour and then to the right, past the tavern.' }) -keywordHandler:addKeyword({ 'shops' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy weapons, armor, tools, gems, magical equipment, furniture, spells and food here.' }) -keywordHandler:addKeyword({ 'depot' }, StdModule.say, { npcHandler = npcHandler, text = 'The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there, but it\'s just north of here.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the only feline guide in Tibia. I might not have fingers anymore, but with my paw I can still mark important locations on your map and give you some information about the town and the world status.' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'Yalahar is a very old city of gigantic size, consisting of a city centre and eight quarters. The beings that are closest to be called rulers of the city are the Yalahari.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m Jonathan. Pleased to meet you.' }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is just south west of here. Actually, it's a temple raft and the priestess is somewhat... meow... you'll see what I mean." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "Our bank clerk Znozel is somewhat... special. You can find him north of this harbour and then to the right, past the tavern." }) +keywordHandler:addKeyword({ "shops" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy weapons, armor, tools, gems, magical equipment, furniture, spells and food here." }) +keywordHandler:addKeyword({ "depot" }, StdModule.say, { npcHandler = npcHandler, text = "The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there, but it's just north of here." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the only feline guide in Tibia. I might not have fingers anymore, but with my paw I can still mark important locations on your map and give you some information about the town and the world status." }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "Yalahar is a very old city of gigantic size, consisting of a city centre and eight quarters. The beings that are closest to be called rulers of the city are the Yalahari." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Jonathan. Pleased to meet you." }) npcHandler:setMessage(MESSAGE_GREET, "Meow, welcome to Yalahar |PLAYERNAME|! Even though I might not look like it, I can give you {information} and a {map} guide. Need some?") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") diff --git a/data-otservbr-global/npc/guide_elena.lua b/data-otservbr-global/npc/guide_elena.lua index 48b166e2db0..9e47874e8e0 100644 --- a/data-otservbr-global/npc/guide_elena.lua +++ b/data-otservbr-global/npc/guide_elena.lua @@ -16,21 +16,21 @@ npcConfig.outfit = { lookBody = 8, lookLegs = 13, lookFeet = 58, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'I can inform you about the status of this world, if you\'re interested.' }, - { text = 'Hello, is this your first visit to Venore? I can show you around a little.' }, - { text = 'Talk to me if you need directions.' }, - { text = 'Need some help finding your way through Venore? Let me assist you.' }, - { text = 'Free escort to the depot for newcomers!' } + { text = "I can inform you about the status of this world, if you're interested." }, + { text = "Hello, is this your first visit to Venore? I can show you around a little." }, + { text = "Talk to me if you need directions." }, + { text = "Need some help finding your way through Venore? Let me assist you." }, + { text = "Free escort to the depot for newcomers!" }, } local keywordHandler = KeywordHandler:new() @@ -66,7 +66,7 @@ local configMarks = { { mark = "temple", position = Position(32958, 32078, 6), markId = MAPMARK_TEMPLE, description = "Temple" }, { mark = "shop2", position = Position(32908, 32123, 6), markId = MAPMARK_TEMPLE, description = "Armors and Weapons" }, { mark = "bank", position = Position(33011, 32053, 6), markId = MAPMARK_TEMPLE, description = "Bank" }, - { mark = "shop3", position = Position(32976, 32045, 6), markId = MAPMARK_TEMPLE, description = "Foods and Plants" } + { mark = "shop3", position = Position(32976, 32045, 6), markId = MAPMARK_TEMPLE, description = "Foods and Plants" }, } local function creatureSayCallback(npc, creature, type, message) @@ -95,14 +95,14 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'Currently, I can tell you all about the town, its temple, the bank, shops - well, warehouses - spell trainers and the depot, as well as about the adventurer\'s guild, hunting grounds, quests and the world status.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is pretty much in the middle of Venore. If you go south from this harbour, you can\'t miss it.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'The bank as well as jewel stores can be found in the House of Wealth, in the north-eastern part of Venore. I can mark it on your map if you want.' }) -keywordHandler:addKeyword({ 'shops' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy almost everything here! Visit one of our warehouses for weapons, armors, magical equipment, spells, gems, tools, furniture and everything else you can imagine.' }) -keywordHandler:addKeyword({ 'depot' }, StdModule.say, { npcHandler = npcHandler, text = 'The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I will help you find your way in the buzzing city of Venore. I can mark important locations on your map and give you some information about the town and the world status.' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'This trading city has been built directly over a swamp and basically stands on stone pillars. We have many large warehouses here. To speak of \'shops\' would be an understatement.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m Elena, sweetheart. I love your name, |PLAYERNAME|.' }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "Currently, I can tell you all about the town, its temple, the bank, shops - well, warehouses - spell trainers and the depot, as well as about the adventurer's guild, hunting grounds, quests and the world status." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is pretty much in the middle of Venore. If you go south from this harbour, you can't miss it." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "The bank as well as jewel stores can be found in the House of Wealth, in the north-eastern part of Venore. I can mark it on your map if you want." }) +keywordHandler:addKeyword({ "shops" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy almost everything here! Visit one of our warehouses for weapons, armors, magical equipment, spells, gems, tools, furniture and everything else you can imagine." }) +keywordHandler:addKeyword({ "depot" }, StdModule.say, { npcHandler = npcHandler, text = "The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I will help you find your way in the buzzing city of Venore. I can mark important locations on your map and give you some information about the town and the world status." }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "This trading city has been built directly over a swamp and basically stands on stone pillars. We have many large warehouses here. To speak of 'shops' would be an understatement." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Elena, sweetheart. I love your name, |PLAYERNAME|." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to Venore, |PLAYERNAME| Would you like some information and a map guide?") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") diff --git a/data-otservbr-global/npc/guide_jonathan.lua b/data-otservbr-global/npc/guide_jonathan.lua index 4f6104d93e4..07e97a92eeb 100644 --- a/data-otservbr-global/npc/guide_jonathan.lua +++ b/data-otservbr-global/npc/guide_jonathan.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 3, lookLegs = 0, lookFeet = 117, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Free escort to the depot for newcomers!' }, - { text = 'Hello, is this your first visit to Thais? I can show you around a little.' }, - { text = 'Need some help finding your way through Thais? Let me assist you.' }, - { text = 'Talk to me if you need directions.' } + { text = "Free escort to the depot for newcomers!" }, + { text = "Hello, is this your first visit to Thais? I can show you around a little." }, + { text = "Need some help finding your way through Thais? Let me assist you." }, + { text = "Talk to me if you need directions." }, } local keywordHandler = KeywordHandler:new() @@ -62,7 +62,7 @@ end local configMarks = { { mark = "shops", position = Position(33210, 31818, 7), markId = MAPMARK_BAG, description = "Shops" }, { mark = "depot", position = Position(33173, 31812, 7), markId = MAPMARK_LOCK, description = "Depot" }, - { mark = "temple", position = Position(33210, 31814, 7), markId = MAPMARK_TEMPLE, description = "Temple" } + { mark = "temple", position = Position(33210, 31814, 7), markId = MAPMARK_TEMPLE, description = "Temple" }, } local function creatureSayCallback(npc, creature, type, message) @@ -91,13 +91,13 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is near the shop area in the eastern part of the castle. Just go downstairs.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'Our local bank clerk is called Ebenizer. You can find him north of the depot, near the food shop.' }) -keywordHandler:addKeyword({ 'shops' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy weapons, armor, tools, gems, magical equipment, furniture, spells and food here.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m your guide to the beautiful town Edron. I can mark important locations on your map and give you some information about the town and the world status.' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'The town of Edron with its shops and facilities is built inside strong castle walls. Another remarkable building is the magic academy.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m Jonathan. Pleased to meet you.' }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is near the shop area in the eastern part of the castle. Just go downstairs." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "Our local bank clerk is called Ebenizer. You can find him north of the depot, near the food shop." }) +keywordHandler:addKeyword({ "shops" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy weapons, armor, tools, gems, magical equipment, furniture, spells and food here." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm your guide to the beautiful town Edron. I can mark important locations on your map and give you some information about the town and the world status." }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "The town of Edron with its shops and facilities is built inside strong castle walls. Another remarkable building is the magic academy." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Jonathan. Pleased to meet you." }) npcHandler:setMessage(MESSAGE_GREET, "Hello there, |PLAYERNAME| and welcome to Edron! Would you like some {information} and a {map} guide?") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") diff --git a/data-otservbr-global/npc/guide_kroak.lua b/data-otservbr-global/npc/guide_kroak.lua index a8dcdde35ec..e5454c168b8 100644 --- a/data-otservbr-global/npc/guide_kroak.lua +++ b/data-otservbr-global/npc/guide_kroak.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 46, lookLegs = 68, lookFeet = 29, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/guide_kunibert.lua b/data-otservbr-global/npc/guide_kunibert.lua index f2096800bf9..5505a4f5807 100644 --- a/data-otservbr-global/npc/guide_kunibert.lua +++ b/data-otservbr-global/npc/guide_kunibert.lua @@ -16,19 +16,19 @@ npcConfig.outfit = { lookBody = 46, lookLegs = 68, lookFeet = 29, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Talk to me if you need directions.' }, - { text = 'Hello, is this your first visit to Rathleton? I can show you around a little.' }, - { text = 'Free escort to the depot for newcomers!' } + { text = "Talk to me if you need directions." }, + { text = "Hello, is this your first visit to Rathleton? I can show you around a little." }, + { text = "Free escort to the depot for newcomers!" }, } local keywordHandler = KeywordHandler:new() @@ -60,7 +60,7 @@ end local configMarks = { { mark = "depot", position = Position(33625, 31894, 6), markId = MAPMARK_LOCK, description = "Depot" }, - { mark = "temple", position = Position(33594, 31899, 6), markId = MAPMARK_TEMPLE, description = "Temple" } + { mark = "temple", position = Position(33594, 31899, 6), markId = MAPMARK_TEMPLE, description = "Temple" }, } local function creatureSayCallback(npc, creature, type, message) @@ -89,14 +89,14 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple can be found in one of the uptown districts. Look for stairs up from the lower city, you\'ll find the temple in the northwest of the upper city.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'The First Oramond Bank is an important part of Rathleton, and is situated in the centre of the upper city. I can mark it on your map if you want.' }) -keywordHandler:addKeyword({ 'shops' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy almost everything here! Visit one of our shops for weapons, armors, magical equipment, spells, gems, tools, furnitureand everything else you can imagine.' }) -keywordHandler:addKeyword({ 'depot' }, StdModule.say, { npcHandler = npcHandler, text = 'The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = ' I will help you find your way in the marvellous city of Rathleton. I can mark important locations on your map and give you someinformation about the town and the world status.' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'This city is a modern marvel of progress. The city\'s wealth and industry is based on the famous glooth. The magistrate runs the city according to the wishes of its inhabitants.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m Kunibert, of course.' }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple can be found in one of the uptown districts. Look for stairs up from the lower city, you'll find the temple in the northwest of the upper city." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "The First Oramond Bank is an important part of Rathleton, and is situated in the centre of the upper city. I can mark it on your map if you want." }) +keywordHandler:addKeyword({ "shops" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy almost everything here! Visit one of our shops for weapons, armors, magical equipment, spells, gems, tools, furnitureand everything else you can imagine." }) +keywordHandler:addKeyword({ "depot" }, StdModule.say, { npcHandler = npcHandler, text = "The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = " I will help you find your way in the marvellous city of Rathleton. I can mark important locations on your map and give you someinformation about the town and the world status." }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "This city is a modern marvel of progress. The city's wealth and industry is based on the famous glooth. The magistrate runs the city according to the wishes of its inhabitants." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Kunibert, of course." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to Rathleton, |PLAYERNAME|! Looking for a transport to the main isle of Oramond or would you like some information and a mapguide?") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") diff --git a/data-otservbr-global/npc/guide_luke.lua b/data-otservbr-global/npc/guide_luke.lua index 77d87a3510a..67e31f5a4e6 100644 --- a/data-otservbr-global/npc/guide_luke.lua +++ b/data-otservbr-global/npc/guide_luke.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 39, lookLegs = 38, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Free escort to the depot for newcomers!' }, - { text = 'Hello, is this your first visit to Thais? I can show you around a little.' }, - { text = 'Need some help finding your way through Thais? Let me assist you.' }, - { text = 'Talk to me if you need directions.' } + { text = "Free escort to the depot for newcomers!" }, + { text = "Hello, is this your first visit to Thais? I can show you around a little." }, + { text = "Need some help finding your way through Thais? Let me assist you." }, + { text = "Talk to me if you need directions." }, } local keywordHandler = KeywordHandler:new() @@ -62,7 +62,7 @@ end local configMarks = { { mark = "shops", position = Position(32367, 32197, 7), markId = MAPMARK_BAG, description = "Shops" }, { mark = "depot", position = Position(32321, 32212, 7), markId = MAPMARK_LOCK, description = "Depot" }, - { mark = "temple", position = Position(32369, 32241, 7), markId = MAPMARK_TEMPLE, description = "Temple" } + { mark = "temple", position = Position(32369, 32241, 7), markId = MAPMARK_TEMPLE, description = "Temple" }, } local function creatureSayCallback(npc, creature, type, message) @@ -91,14 +91,14 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'I can tell you all about the {town}, its {temple}, the {bank}, {shops}, {spell trainers} and the {depot}, as well as about the {world status}.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is in the centre of Thais. Walk east from the harbour and pass by the {depot} until you reach the infamous crossroads, then turn south.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'We have two bankers, Suzy and Naji. Naji is right in the depot. For Suzi, exit the {depot} to the west and walk south-west. Don\'t forget that I can {mark} important locations on your map.' }) -keywordHandler:addKeyword({ 'shops' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy {weapons}, {armor}, {tools}, {gems}, {magical} equipment, {furniture} and {food} here.' }) -keywordHandler:addKeyword({ 'depot' }, StdModule.say, { npcHandler = npcHandler, text = 'The depot is a place where you can safely store your belongings. You are also protected against attacks there. I {escort} newcomers there.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a guide, overworked and underpaid. I can mark important locations on your map and give you some information about the town and the world status.' }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = 'Thais is the oldest settlement in Tibia. You can hear its history whisper when walking through the streets. Beware of criminals, but else it\'s a fine city.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m Luke. No jokes, please, I heard them all!' }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "I can tell you all about the {town}, its {temple}, the {bank}, {shops}, {spell trainers} and the {depot}, as well as about the {world status}." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is in the centre of Thais. Walk east from the harbour and pass by the {depot} until you reach the infamous crossroads, then turn south." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "We have two bankers, Suzy and Naji. Naji is right in the depot. For Suzi, exit the {depot} to the west and walk south-west. Don't forget that I can {mark} important locations on your map." }) +keywordHandler:addKeyword({ "shops" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy {weapons}, {armor}, {tools}, {gems}, {magical} equipment, {furniture} and {food} here." }) +keywordHandler:addKeyword({ "depot" }, StdModule.say, { npcHandler = npcHandler, text = "The depot is a place where you can safely store your belongings. You are also protected against attacks there. I {escort} newcomers there." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a guide, overworked and underpaid. I can mark important locations on your map and give you some information about the town and the world status." }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "Thais is the oldest settlement in Tibia. You can hear its history whisper when walking through the streets. Beware of criminals, but else it's a fine city." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Luke. No jokes, please, I heard them all!" }) npcHandler:setMessage(MESSAGE_GREET, "Hello there, |PLAYERNAME| and welcome to Thais! Would you like some {information} and a {map} guide?") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") diff --git a/data-otservbr-global/npc/guide_meruka.lua b/data-otservbr-global/npc/guide_meruka.lua index cfc0b6ce89e..707f37f0f36 100644 --- a/data-otservbr-global/npc/guide_meruka.lua +++ b/data-otservbr-global/npc/guide_meruka.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 10, lookLegs = 74, lookFeet = 3, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/guide_rahlkora.lua b/data-otservbr-global/npc/guide_rahlkora.lua index 577ea986e1e..b62a19d94be 100644 --- a/data-otservbr-global/npc/guide_rahlkora.lua +++ b/data-otservbr-global/npc/guide_rahlkora.lua @@ -16,21 +16,21 @@ npcConfig.outfit = { lookBody = 97, lookLegs = 78, lookFeet = 96, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Need some help finding your way through Ankrahmun? Let me assist you.' }, - { text = 'Free escort to the depot for newcomers!' }, - { text = 'Need to know something about the status of this world? Let me answer your questions.' }, - { text = 'Hello, is this your first visit to Ankrahmun? I can show you around a little.' }, - { text = 'Talk to me if you need directions.' } + { text = "Need some help finding your way through Ankrahmun? Let me assist you." }, + { text = "Free escort to the depot for newcomers!" }, + { text = "Need to know something about the status of this world? Let me answer your questions." }, + { text = "Hello, is this your first visit to Ankrahmun? I can show you around a little." }, + { text = "Talk to me if you need directions." }, } local keywordHandler = KeywordHandler:new() @@ -63,7 +63,7 @@ end local configMarks = { { mark = "shops", position = Position(33130, 32815, 7), markId = MAPMARK_BAG, description = "Shops" }, { mark = "depot", position = Position(33126, 32841, 7), markId = MAPMARK_LOCK, description = "Depot" }, - { mark = "temple", position = Position(33195, 32852, 7), markId = MAPMARK_TEMPLE, description = "Temple" } + { mark = "temple", position = Position(33195, 32852, 7), markId = MAPMARK_TEMPLE, description = "Temple" }, } local function creatureSayCallback(npc, creature, type, message) @@ -92,14 +92,14 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is in the south-eastern part of town. If you exit the depot to the south and walk east - slightly south-east - you can\'t miss it.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'Tesha is in charge of both the bank and the gem store. You can find her on the market pyramid. Just exit the depot on the north side and walk up the next pyramid.' }) -keywordHandler:addKeyword({ 'shops' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy weapons, armor, tools, gems, magical equipment, furniture, spells and food here.' }) -keywordHandler:addKeyword({ 'depot' }, StdModule.say, { npcHandler = npcHandler, text = 'The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I will help you to find your way around Ankrahmun. I can mark important locations on your map and give you some information about the town.' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'Ankrahmun consists almost completely of pyramids. You can walk up and down those pyramids just like you\'d climb up stairs. Most shops are on the upper floors.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Rahlkora. I\'m a guide.' }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is in the south-eastern part of town. If you exit the depot to the south and walk east - slightly south-east - you can't miss it." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "Tesha is in charge of both the bank and the gem store. You can find her on the market pyramid. Just exit the depot on the north side and walk up the next pyramid." }) +keywordHandler:addKeyword({ "shops" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy weapons, armor, tools, gems, magical equipment, furniture, spells and food here." }) +keywordHandler:addKeyword({ "depot" }, StdModule.say, { npcHandler = npcHandler, text = "The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I will help you to find your way around Ankrahmun. I can mark important locations on your map and give you some information about the town." }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "Ankrahmun consists almost completely of pyramids. You can walk up and down those pyramids just like you'd climb up stairs. Most shops are on the upper floors." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Rahlkora. I'm a guide." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to Ankrahmun, |PLAYERNAME| This city can be a bit confusing at first. Would you like some information and a map guide?") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") diff --git a/data-otservbr-global/npc/guide_thelandil.lua b/data-otservbr-global/npc/guide_thelandil.lua index 6a2295321bc..18e5fac3957 100644 --- a/data-otservbr-global/npc/guide_thelandil.lua +++ b/data-otservbr-global/npc/guide_thelandil.lua @@ -15,20 +15,20 @@ npcConfig.outfit = { lookHead = 78, lookBody = 80, lookLegs = 101, - lookFeet = 96 + lookFeet = 96, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Hello, is this your first visit to Ab\'Dendriel? I can show you around a little.' }, - { text = 'Talk to me if you need directions.' }, - { text = 'Free escort to the depot for newcomers!' }, - { text = 'If you want to know something about the status of this world, talk to me.' } + { text = "Hello, is this your first visit to Ab'Dendriel? I can show you around a little." }, + { text = "Talk to me if you need directions." }, + { text = "Free escort to the depot for newcomers!" }, + { text = "If you want to know something about the status of this world, talk to me." }, } local keywordHandler = KeywordHandler:new() @@ -60,7 +60,7 @@ end local configMarks = { { mark = "depot", position = Position(32681, 31686, 7), markId = MAPMARK_LOCK, description = "Depot and Shops" }, - { mark = "temple", position = Position(32732, 31634, 7), markId = MAPMARK_TEMPLE, description = "Temple" } + { mark = "temple", position = Position(32732, 31634, 7), markId = MAPMARK_TEMPLE, description = "Temple" }, } local function creatureSayCallback(npc, creature, type, message) @@ -89,12 +89,12 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is built around the elves\' holy tree. You can find it north of this harbour.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'Finarfin is in charge of the bank. You can find him on the lowest floor of the depot.' }) -keywordHandler:addKeyword({ 'shops' }, StdModule.say, { npcHandler = npcHandler, text = 'You can buy weapons, armor, tools, gems, magical equipment, instruments, furniture, spells and food here.' }) -keywordHandler:addKeyword({ 'depot' }, StdModule.say, { npcHandler = npcHandler, text = 'The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there.' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'The elves have constructed Ab\'Dendriel mainly in and on trees. There is also a large underground cave system with shops, a prison and troll caves.' }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is built around the elves' holy tree. You can find it north of this harbour." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "Finarfin is in charge of the bank. You can find him on the lowest floor of the depot." }) +keywordHandler:addKeyword({ "shops" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy weapons, armor, tools, gems, magical equipment, instruments, furniture, spells and food here." }) +keywordHandler:addKeyword({ "depot" }, StdModule.say, { npcHandler = npcHandler, text = "The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there." }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "The elves have constructed Ab'Dendriel mainly in and on trees. There is also a large underground cave system with shops, a prison and troll caves." }) npcHandler:setMessage(MESSAGE_GREET, "Hello there, |PLAYERNAME| and welcome to Ab'Dendriel! Would you like some information and a map guide?") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") diff --git a/data-otservbr-global/npc/guide_tiko.lua b/data-otservbr-global/npc/guide_tiko.lua index adcd3b5662a..81f95de9d4a 100644 --- a/data-otservbr-global/npc/guide_tiko.lua +++ b/data-otservbr-global/npc/guide_tiko.lua @@ -16,21 +16,21 @@ npcConfig.outfit = { lookBody = 78, lookLegs = 101, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Free escort to the depot for newcomers!' }, - { text = 'Hello, is this your first visit to Port Hope? I can show you around a little.' }, - { text = 'Talk to me if you need directions.' }, - { text = 'Ask me if you want to know something about the world status!' }, - { text = 'Need some help finding your way through Port Hope? Let me assist you.' } + { text = "Free escort to the depot for newcomers!" }, + { text = "Hello, is this your first visit to Port Hope? I can show you around a little." }, + { text = "Talk to me if you need directions." }, + { text = "Ask me if you want to know something about the world status!" }, + { text = "Need some help finding your way through Port Hope? Let me assist you." }, } local keywordHandler = KeywordHandler:new() @@ -62,7 +62,7 @@ end local configMarks = { { mark = "depot", position = Position(32631, 32742, 7), markId = MAPMARK_LOCK, description = "Depot" }, - { mark = "temple", position = Position(32594, 32745, 7), markId = MAPMARK_TEMPLE, description = "Temple" } + { mark = "temple", position = Position(32594, 32745, 7), markId = MAPMARK_TEMPLE, description = "Temple" }, } local function creatureSayCallback(npc, creature, type, message) @@ -91,14 +91,14 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is in the north-eastern part of town, left of the depot. The priest there has a little alcohol problem, though. It\'s sad.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'Our bank can be found one floor above the depot. Just talk to Ferks.' }) -keywordHandler:addKeyword({ 'shops' }, StdModule.say, { npcHandler = npcHandler, text = 'The shops here are very close to one another. I can mark them for you if you\'d like.' }) -keywordHandler:addKeyword({ 'depot' }, StdModule.say, { npcHandler = npcHandler, text = 'The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'ll help you not to get lost in Port Hope. I can mark important locations on your map and give you some information about the town and the world status.' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'The inhabitants of Port Hope are bravely facing the constant threat from the jungle. The town is built on pile dwellings and most shops are close to each other.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m Tiko and your guide today. Have a good day!' }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "Currently, I can tell you all about the town, its temple, the bank, shops, spell trainers and the depot, as well as about the world status." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is in the north-eastern part of town, left of the depot. The priest there has a little alcohol problem, though. It's sad." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "Our bank can be found one floor above the depot. Just talk to Ferks." }) +keywordHandler:addKeyword({ "shops" }, StdModule.say, { npcHandler = npcHandler, text = "The shops here are very close to one another. I can mark them for you if you'd like." }) +keywordHandler:addKeyword({ "depot" }, StdModule.say, { npcHandler = npcHandler, text = "The depot is a place where you can safely store your belongings. You are also protected against attacks there. I escort newcomers there." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'll help you not to get lost in Port Hope. I can mark important locations on your map and give you some information about the town and the world status." }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "The inhabitants of Port Hope are bravely facing the constant threat from the jungle. The town is built on pile dwellings and most shops are close to each other." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Tiko and your guide today. Have a good day!" }) npcHandler:setMessage(MESSAGE_GREET, "Hello there, and welcome to Port Hope! Would you like some information and a map guide?") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") diff --git a/data-otservbr-global/npc/gundralph.lua b/data-otservbr-global/npc/gundralph.lua index 46b6c999566..6c4c7a1f5ba 100644 --- a/data-otservbr-global/npc/gundralph.lua +++ b/data-otservbr-global/npc/gundralph.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 9 + lookType = 9, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Utevo vis lux!' } + { text = "Utevo vis lux!" }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/gurbasch.lua b/data-otservbr-global/npc/gurbasch.lua index b41a47a5963..dea6b734d51 100644 --- a/data-otservbr-global/npc/gurbasch.lua +++ b/data-otservbr-global/npc/gurbasch.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 66 + lookType = 66, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passages to Kazordoon! Gotta try the beer there.' } + { text = "Passages to Kazordoon! Gotta try the beer there." }, } local keywordHandler = KeywordHandler:new() @@ -57,42 +57,42 @@ local function addTravelKeyword(keyword, text, cost, discount, destination, cond if condition then keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, - text = { 'Well, you might be just the hero they need there. To tell you the truth, some our most reliable ore mines have started to run low. ...', - 'This is why we developed new steamship technologies to be able to further explore and cartograph the great subterraneous rivers. Our brothers have established a base on a continent far, far away. ...', - 'We call that the far, far away base. But since it will hopefully become a flourishing mine one day, most of us started to call it {Farmine}. The dwarfs there could really use some help right now.' - } + text = { + "Well, you might be just the hero they need there. To tell you the truth, some our most reliable ore mines have started to run low. ...", + "This is why we developed new steamship technologies to be able to further explore and cartograph the great subterraneous rivers. Our brothers have established a base on a continent far, far away. ...", + "We call that the far, far away base. But since it will hopefully become a flourishing mine one day, most of us started to call it {Farmine}. The dwarfs there could really use some help right now.", + }, }, condition, action) end local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = { text[1] }, cost = cost, discount = discount }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = text[2], cost = cost, discount = discount, destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = text[3], reset = true }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = text[2], cost = cost, discount = discount, destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = text[3], reset = true }) end -addTravelKeyword('farmine', { 'Do you seek a ride to Farmine for |TRAVELCOST|?', 'Hold on!', 'You shouldn\'t miss the experience.' }, 110, { 'postman', 'new frontier' }, - function(player) - local destination = Position(33025, 31553, 14) - if player:getStorageValue(TheNewFrontier.Mission05[1]) == 2 then --if The New Frontier Quest 'Mission 05: Getting Things Busy' complete then Stage 3 - destination.z = 10 - elseif player:getStorageValue(TheNewFrontier.Mission03) >= 2 then --if The New Frontier Quest 'Mission 03: Strangers in the Night' complete then Stage 2 - destination.z = 12 - end - return destination - end, function(player) return player:getStorageValue(TheNewFrontier.FarmineFirstTravel) < 1 end, - function(player) - if player:getStorageValue(TheNewFrontier.FarmineFirstTravel) < 1 then - player:setStorageValue(TheNewFrontier.FarmineFirstTravel, 1) - end +addTravelKeyword("farmine", { "Do you seek a ride to Farmine for |TRAVELCOST|?", "Hold on!", "You shouldn't miss the experience." }, 110, { "postman", "new frontier" }, function(player) + local destination = Position(33025, 31553, 14) + if player:getStorageValue(TheNewFrontier.Mission05[1]) == 2 then --if The New Frontier Quest 'Mission 05: Getting Things Busy' complete then Stage 3 + destination.z = 10 + elseif player:getStorageValue(TheNewFrontier.Mission03) >= 2 then --if The New Frontier Quest 'Mission 03: Strangers in the Night' complete then Stage 2 + destination.z = 12 end -) + return destination +end, function(player) + return player:getStorageValue(TheNewFrontier.FarmineFirstTravel) < 1 +end, function(player) + if player:getStorageValue(TheNewFrontier.FarmineFirstTravel) < 1 then + player:setStorageValue(TheNewFrontier.FarmineFirstTravel, 1) + end +end) -addTravelKeyword('kazordoon', { 'Do you want to go to Kazordoon to try the beer there? |TRAVELCOST|?', 'Set the sails!', 'Then not.' }, 160, 'postman', Position(32660, 31957, 15)) -addTravelKeyword('gnomprona', { 'Would you like to travel to Gnomprona for |TRAVELCOST|?', 'Full steam ahead!', 'Then not.' }, 200, 'postman', Position(33516, 32856, 14)) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want me to take you? To {Kazordoon}, {Farmine} or {Gnomprona}?' }) +addTravelKeyword("kazordoon", { "Do you want to go to Kazordoon to try the beer there? |TRAVELCOST|?", "Set the sails!", "Then not." }, 160, "postman", Position(32660, 31957, 15)) +addTravelKeyword("gnomprona", { "Would you like to travel to Gnomprona for |TRAVELCOST|?", "Full steam ahead!", "Then not." }, 200, "postman", Position(33516, 32856, 14)) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want me to take you? To {Kazordoon}, {Farmine} or {Gnomprona}?" }) -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, |PLAYERNAME|! Lovely steamboat, ain\'t it? I can even offer you a {passage} if you like.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Until next time.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Until next time.') +npcHandler:setMessage(MESSAGE_GREET, "Welcome, |PLAYERNAME|! Lovely steamboat, ain't it? I can even offer you a {passage} if you like.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Until next time.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Until next time.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/h.l..lua b/data-otservbr-global/npc/h.l..lua index c0c7ec9ad72..2f55f2bcc20 100644 --- a/data-otservbr-global/npc/h.l..lua +++ b/data-otservbr-global/npc/h.l..lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 19, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -176,7 +176,7 @@ npcConfig.shop = { { itemName = "warlord sword", clientId = 3296, sell = 360 }, { itemName = "warrior helmet", clientId = 3369, sell = 75 }, { itemName = "winged helmet", clientId = 3368, sell = 320 }, - { itemName = "wooden shield", clientId = 3412, sell = 1 } + { itemName = "wooden shield", clientId = 3412, sell = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -187,7 +187,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/haani.lua b/data-otservbr-global/npc/haani.lua index 9d31217fbf7..638fee26b28 100644 --- a/data-otservbr-global/npc/haani.lua +++ b/data-otservbr-global/npc/haani.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 93, lookLegs = 66, lookFeet = 19, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -155,7 +155,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -166,7 +166,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/habdel.lua b/data-otservbr-global/npc/habdel.lua index e10bc98b597..4b6b8d2bc6a 100644 --- a/data-otservbr-global/npc/habdel.lua +++ b/data-otservbr-global/npc/habdel.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 1, lookLegs = 0, lookFeet = 58, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,39 +58,39 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'outfit') then + if MsgContains(message, "outfit") then if player:getSex() == PLAYERSEX_FEMALE then - npcHandler:say('My scimitar? Well, mylady, I do not want to sound rude, but I don\'t think a scimitar would fit to your beautiful outfit. If you are looking for an accessory, why don\'t you talk to Ishina?', npc, creature) + npcHandler:say("My scimitar? Well, mylady, I do not want to sound rude, but I don't think a scimitar would fit to your beautiful outfit. If you are looking for an accessory, why don't you talk to Ishina?", npc, creature) return true end if player:getStorageValue(Storage.OutfitQuest.firstOrientalAddon) < 1 then - npcHandler:say('My scimitar? Yes, that is a true masterpiece. Of course I could make one for you, but I have a small request. Would you fulfil a task for me?', npc, creature) + npcHandler:say("My scimitar? Yes, that is a true masterpiece. Of course I could make one for you, but I have a small request. Would you fulfil a task for me?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'comb') then + elseif MsgContains(message, "comb") then if player:getSex() == PLAYERSEX_FEMALE then - npcHandler:say('Comb? This is a weapon shop.', npc, creature) + npcHandler:say("Comb? This is a weapon shop.", npc, creature) return true end if player:getStorageValue(Storage.OutfitQuest.firstOrientalAddon) == 1 then - npcHandler:say('Have you brought a mermaid\'s comb for Ishina?', npc, creature) + npcHandler:say("Have you brought a mermaid's comb for Ishina?", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - 'Listen, um... I know that Ishina has been wanting a comb for a long time... not just any comb, but a mermaid\'s comb. She said it prevents split ends... or something. ...', - 'Do you think you could get one for me so I can give it to her? I really would appreciate it.' + "Listen, um... I know that Ishina has been wanting a comb for a long time... not just any comb, but a mermaid's comb. She said it prevents split ends... or something. ...", + "Do you think you could get one for me so I can give it to her? I really would appreciate it.", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then player:setStorageValue(Storage.OutfitQuest.DefaultStart, 1) player:setStorageValue(Storage.OutfitQuest.firstOrientalAddon, 1) - npcHandler:say('Brilliant! I will wait for you to return with a mermaid\'s comb then.', npc, creature) + npcHandler:say("Brilliant! I will wait for you to return with a mermaid's comb then.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then if not player:removeItem(5945, 1) then - npcHandler:say('No... that\'s not it.', npc, creature) + npcHandler:say("No... that's not it.", npc, creature) npcHandler:setTopic(playerId, 0) return true end @@ -98,21 +98,21 @@ local function creatureSayCallback(npc, creature, type, message) player:addOutfitAddon(150, 1) player:addOutfitAddon(146, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - npcHandler:say('Yeah! That\'s it! I can\'t wait to give it to her! Oh - but first, I\'ll fulfil my promise: Here is your scimitar! Thanks again!', npc, creature) + npcHandler:say("Yeah! That's it! I can't wait to give it to her! Oh - but first, I'll fulfil my promise: Here is your scimitar! Thanks again!", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) ~= 0 then - npcHandler:say('Ah well. Doesn\'t matter.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) ~= 0 then + npcHandler:say("Ah well. Doesn't matter.", npc, creature) npcHandler:setTopic(playerId, 0) end return true end -keywordHandler:addKeyword({ 'weapons' }, StdModule.say, { npcHandler = npcHandler, text = 'I sell the finest weapons in town. If you\'d like to see my offers, ask me for a {trade}.' }) +keywordHandler:addKeyword({ "weapons" }, StdModule.say, { npcHandler = npcHandler, text = "I sell the finest weapons in town. If you'd like to see my offers, ask me for a {trade}." }) -npcHandler:setMessage(MESSAGE_GREET, 'Welcome |PLAYERNAME|! See the fine {weapons} I sell.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Come back soon.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye. Come back soon.') +npcHandler:setMessage(MESSAGE_GREET, "Welcome |PLAYERNAME|! See the fine {weapons} I sell.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Come back soon.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye. Come back soon.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -158,7 +158,7 @@ npcConfig.shop = { { itemName = "throwing knife", clientId = 3298, buy = 25 }, { itemName = "throwing star", clientId = 3287, buy = 42 }, { itemName = "two handed sword", clientId = 3265, buy = 950 }, - { itemName = "war hammer", clientId = 3279, buy = 10000 } + { itemName = "war hammer", clientId = 3279, buy = 10000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -169,7 +169,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/hagor.lua b/data-otservbr-global/npc/hagor.lua index 4b656c14497..65d160081f9 100644 --- a/data-otservbr-global/npc/hagor.lua +++ b/data-otservbr-global/npc/hagor.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 63, lookFeet = 1156, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/hairycles.lua b/data-otservbr-global/npc/hairycles.lua index 21f1675baa5..d0a6ccecdcd 100644 --- a/data-otservbr-global/npc/hairycles.lua +++ b/data-otservbr-global/npc/hairycles.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 20, lookLegs = 30, lookFeet = 40, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,9 +53,9 @@ end local function greetCallback(npc, creature) local playerId = creature:getId() if Player(creature):getStorageValue(Storage.TheApeCity.Questline) < 12 then - npcHandler:setMessage(MESSAGE_GREET, 'Oh! Hello! Hello! Did not notice! So {busy}.') + npcHandler:setMessage(MESSAGE_GREET, "Oh! Hello! Hello! Did not notice! So {busy}.") else - npcHandler:setMessage(MESSAGE_GREET, 'Be greeted, friend of the ape people. If you want to {trade}, just ask for my offers. If you are injured, ask for healing.') + npcHandler:setMessage(MESSAGE_GREET, "Be greeted, friend of the ape people. If you want to {trade}, just ask for my offers. If you are injured, ask for healing.") end return true end @@ -78,145 +78,144 @@ local function creatureSayCallback(npc, creature, type, message) end local questProgress = player:getStorageValue(Storage.TheApeCity.Questline) - if MsgContains(message, 'mission') then + if MsgContains(message, "mission") then if questProgress < 1 then - npcHandler:say('These are dire times for our people. Problems plenty are in this times. But me people not grant trust easy. Are you willing to prove you friend of ape people?', npc, creature) + npcHandler:say("These are dire times for our people. Problems plenty are in this times. But me people not grant trust easy. Are you willing to prove you friend of ape people?", npc, creature) npcHandler:setTopic(playerId, 1) elseif questProgress == 1 then if player:getStorageValue(Storage.QuestChests.WhisperMoss) == 1 then - npcHandler:say('Oh, you brought me whisper moss? Good hairless ape you are! Can me take it?', npc, creature) + npcHandler:say("Oh, you brought me whisper moss? Good hairless ape you are! Can me take it?", npc, creature) npcHandler:setTopic(playerId, 3) else - npcHandler:say('Please hurry. Bring me whisper moss from dworc lair. Make sure it is from dworc lair! Take it yourself only! If you need to hear background of all again, ask Hairycles for {background}.', npc, creature) + npcHandler:say("Please hurry. Bring me whisper moss from dworc lair. Make sure it is from dworc lair! Take it yourself only! If you need to hear background of all again, ask Hairycles for {background}.", npc, creature) end elseif questProgress == 2 then npcHandler:say({ - 'Whisper moss strong is, but me need liquid that humans have to make it work ...', - 'Our raiders brought it from human settlement, it\'s called cough syrup. Go ask healer there for it.' + "Whisper moss strong is, but me need liquid that humans have to make it work ...", + "Our raiders brought it from human settlement, it's called cough syrup. Go ask healer there for it.", }, npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 3) elseif questProgress == 3 then - npcHandler:say('You brought me that cough syrup from human healer me asked for?', npc, creature) + npcHandler:say("You brought me that cough syrup from human healer me asked for?", npc, creature) npcHandler:setTopic(playerId, 4) elseif questProgress == 4 then - npcHandler:say('Little ape should be healthy soon. Me so happy is. Thank you again! But me suspect we in more trouble than we thought. Will you help us again?', npc, creature) + npcHandler:say("Little ape should be healthy soon. Me so happy is. Thank you again! But me suspect we in more trouble than we thought. Will you help us again?", npc, creature) npcHandler:setTopic(playerId, 5) elseif questProgress == 5 then - npcHandler:say('You got scroll from lizard village in south east?', npc, creature) + npcHandler:say("You got scroll from lizard village in south east?", npc, creature) npcHandler:setTopic(playerId, 7) elseif questProgress == 6 then npcHandler:say({ - 'Ah yes that scroll. Sadly me not could read it yet. But the holy banana me insight gave! In dreams Hairycles saw where to find solution. ...', - 'Me saw a stone with lizard signs and other signs at once. If you read signs and tell Hairycles, me will know how to read signs. ...', - 'You go east to big desert. In desert there city. East of city under sand hidden tomb is. You will have to dig until you find it, so take shovel. ...', - 'Go down in tomb until come to big level and then go down another. There you find a stone with signs between two huge red stones. ...', - 'Read it and return to me. Are you up to that challenge?' + "Ah yes that scroll. Sadly me not could read it yet. But the holy banana me insight gave! In dreams Hairycles saw where to find solution. ...", + "Me saw a stone with lizard signs and other signs at once. If you read signs and tell Hairycles, me will know how to read signs. ...", + "You go east to big desert. In desert there city. East of city under sand hidden tomb is. You will have to dig until you find it, so take shovel. ...", + "Go down in tomb until come to big level and then go down another. There you find a stone with signs between two huge red stones. ...", + "Read it and return to me. Are you up to that challenge?", }, npc, creature) npcHandler:setTopic(playerId, 8) elseif questProgress == 7 then if player:getStorageValue(Storage.TheApeCity.ParchmentDecyphering) == 1 then - npcHandler:say('Ah yes, you read the signs in tomb? Good! May me look into your mind to see what you saw?', npc, creature) + npcHandler:say("Ah yes, you read the signs in tomb? Good! May me look into your mind to see what you saw?", npc, creature) npcHandler:setTopic(playerId, 9) else - npcHandler:say('You still don\'t know signs on stone, go and look for it in tomb east in desert.', npc, creature) + npcHandler:say("You still don't know signs on stone, go and look for it in tomb east in desert.", npc, creature) end elseif questProgress == 8 then npcHandler:say({ - 'So much there is to do for Hairycles to prepare charm that will protect all ape people. ...', - 'You can help more. To create charm of life me need mighty token of life! Best is egg of a regenerating beast as a hydra is. ...', - 'Bring me egg of hydra please. You may find it in lair of Hydra at little lake south east of our lovely city Banuta! You think you can do?' + "So much there is to do for Hairycles to prepare charm that will protect all ape people. ...", + "You can help more. To create charm of life me need mighty token of life! Best is egg of a regenerating beast as a hydra is. ...", + "Bring me egg of hydra please. You may find it in lair of Hydra at little lake south east of our lovely city Banuta! You think you can do?", }, npc, creature) npcHandler:setTopic(playerId, 10) elseif questProgress == 9 then - npcHandler:say('You bring Hairycles egg of hydra?', npc, creature) + npcHandler:say("You bring Hairycles egg of hydra?", npc, creature) npcHandler:setTopic(playerId, 11) elseif questProgress == 10 then npcHandler:say({ - 'Last ingredient for charm of life is thing to lure magic. Only thing me know like that is mushroom called witches\' cap. Me was told it be found in isle called Fibula, where humans live. ...', - 'Hidden under Fibula is a secret dungeon. There you will find witches\' cap. Are you willing to go there for good ape people?' + "Last ingredient for charm of life is thing to lure magic. Only thing me know like that is mushroom called witches' cap. Me was told it be found in isle called Fibula, where humans live. ...", + "Hidden under Fibula is a secret dungeon. There you will find witches' cap. Are you willing to go there for good ape people?", }, npc, creature) npcHandler:setTopic(playerId, 12) elseif questProgress == 11 then - npcHandler:say('You brought Hairycles witches\' cap from Fibula?', npc, creature) + npcHandler:say("You brought Hairycles witches' cap from Fibula?", npc, creature) npcHandler:setTopic(playerId, 13) elseif questProgress == 12 then npcHandler:say({ - 'Mighty life charm is protecting us now! But my people are still in danger. Danger from within. ...', - 'Some of my people try to mimic lizards to become strong. Like lizards did before, this cult drinks strange fluid that lizards left when fled. ...', - 'Under the city still the underground temple of lizards is. There you find casks with red fluid. Take crowbar and destroy three of them to stop this madness. Are you willing to do that?' + "Mighty life charm is protecting us now! But my people are still in danger. Danger from within. ...", + "Some of my people try to mimic lizards to become strong. Like lizards did before, this cult drinks strange fluid that lizards left when fled. ...", + "Under the city still the underground temple of lizards is. There you find casks with red fluid. Take crowbar and destroy three of them to stop this madness. Are you willing to do that?", }, npc, creature) npcHandler:setTopic(playerId, 14) elseif questProgress == 13 then if player:getStorageValue(Storage.TheApeCity.Casks) == 3 then - npcHandler:say('You do please Hairycles again, friend. Me hope madness will not spread further now. Perhaps you are ready for other mission.', npc, creature) + npcHandler:say("You do please Hairycles again, friend. Me hope madness will not spread further now. Perhaps you are ready for other mission.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 14) else - npcHandler:say('Please destroy three casks in the complex beneath Banuta, so my people will come to senses again.', npc, creature) + npcHandler:say("Please destroy three casks in the complex beneath Banuta, so my people will come to senses again.", npc, creature) end elseif questProgress == 14 then npcHandler:say({ - 'Now that the false cult was stopped, we need to strengthen the spirit of my people. We need a symbol of our faith that ape people can see and touch. ...', - 'Since you have proven a friend of the ape people I will grant you permission to enter the forbidden land. ...', - 'To enter the forbidden land in the north-east of the jungle, look for a cave in the mountains east of it. There you will find the blind prophet. ...', - 'Tell him Hairycles you sent and he will grant you entrance. ...', - 'Forbidden land is home of Bong. Holy giant ape big as mountain. Don\'t annoy him in any way but look for a hair of holy ape. ...', - 'You might find at places he has been, should be easy to see them since Bong is big. ...', - 'Return a hair of the holy ape to me. Will you do this for Hairycles?' + "Now that the false cult was stopped, we need to strengthen the spirit of my people. We need a symbol of our faith that ape people can see and touch. ...", + "Since you have proven a friend of the ape people I will grant you permission to enter the forbidden land. ...", + "To enter the forbidden land in the north-east of the jungle, look for a cave in the mountains east of it. There you will find the blind prophet. ...", + "Tell him Hairycles you sent and he will grant you entrance. ...", + "Forbidden land is home of Bong. Holy giant ape big as mountain. Don't annoy him in any way but look for a hair of holy ape. ...", + "You might find at places he has been, should be easy to see them since Bong is big. ...", + "Return a hair of the holy ape to me. Will you do this for Hairycles?", }, npc, creature) npcHandler:setTopic(playerId, 15) elseif questProgress == 15 then if player:getStorageValue(Storage.TheApeCity.HolyApeHair) == 1 then - npcHandler:say('You brought hair of holy ape?', npc, creature) + npcHandler:say("You brought hair of holy ape?", npc, creature) npcHandler:setTopic(playerId, 16) else - npcHandler:say('Get a hair of holy ape from forbidden land in east. Speak with blind prophet in cave.', npc, creature) + npcHandler:say("Get a hair of holy ape from forbidden land in east. Speak with blind prophet in cave.", npc, creature) end elseif questProgress == 16 then npcHandler:say({ - 'You have proven yourself a friend, me will grant you permission to enter the deepest catacombs under Banuta which we have sealed in the past. ...', - 'Me still can sense the evil presence there. We did not dare to go deeper and fight creatures of evil there. ...', - 'You may go there, fight the evil and find the monument of the serpent god and destroy it with hammer me give to you. ...', - 'Only then my people will be safe. Please tell Hairycles, will you go there?' + "You have proven yourself a friend, me will grant you permission to enter the deepest catacombs under Banuta which we have sealed in the past. ...", + "Me still can sense the evil presence there. We did not dare to go deeper and fight creatures of evil there. ...", + "You may go there, fight the evil and find the monument of the serpent god and destroy it with hammer me give to you. ...", + "Only then my people will be safe. Please tell Hairycles, will you go there?", }, npc, creature) npcHandler:setTopic(playerId, 17) elseif questProgress == 17 then if player:getStorageValue(Storage.TheApeCity.SnakeDestroyer) == 1 then npcHandler:say({ - 'Finally my people are safe! You have done incredible good for ape people and one day even me brethren will recognise that. ...', - 'I wish I could speak for all when me call you true friend but my people need time to get accustomed to change. ...', - 'Let us hope one day whole Banuta will greet you as a friend. Perhaps you want to check me offers for special friends... or shamanic powers.' + "Finally my people are safe! You have done incredible good for ape people and one day even me brethren will recognise that. ...", + "I wish I could speak for all when me call you true friend but my people need time to get accustomed to change. ...", + "Let us hope one day whole Banuta will greet you as a friend. Perhaps you want to check me offers for special friends... or shamanic powers.", }, npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 18) - player:addAchievement('Friend of the Apes') + player:addAchievement("Friend of the Apes") else - npcHandler:say('Me know its much me asked for but go into the deepest catacombs under Banuta and destroy the monument of the serpent god.', npc, creature) + npcHandler:say("Me know its much me asked for but go into the deepest catacombs under Banuta and destroy the monument of the serpent god.", npc, creature) end else - npcHandler:say('No more missions await you right now, friend. Perhaps you want to check me offers for special friends... or shamanic powers.', npc, creature) + npcHandler:say("No more missions await you right now, friend. Perhaps you want to check me offers for special friends... or shamanic powers.", npc, creature) end - elseif MsgContains(message, 'background') then - if questProgress == 1 - and player:getStorageValue(Storage.QuestChests.WhisperMoss) ~= 1 then + elseif MsgContains(message, "background") then + if questProgress == 1 and player:getStorageValue(Storage.QuestChests.WhisperMoss) ~= 1 then npcHandler:say({ - 'So listen, little ape was struck by plague. Hairycles not does know what plague it is. That is strange. Hairycles should know. But Hairycles learnt lots and lots ...', - 'Me sure to make cure so strong to drive away all plague. But to create great cure me need powerful components ...', - 'Me need whisper moss. Whisper moss growing south of human settlement is. Problem is, evil little dworcs harvest all whisper moss immediately ...', - 'Me know they hoard some in their underground lair. My people raided dworcs often before humans came. So we know the moss is hidden in east of upper level of dworc lair ...', - 'You go there and take good moss from evil dworcs. Talk with me about mission when having moss.' + "So listen, little ape was struck by plague. Hairycles not does know what plague it is. That is strange. Hairycles should know. But Hairycles learnt lots and lots ...", + "Me sure to make cure so strong to drive away all plague. But to create great cure me need powerful components ...", + "Me need whisper moss. Whisper moss growing south of human settlement is. Problem is, evil little dworcs harvest all whisper moss immediately ...", + "Me know they hoard some in their underground lair. My people raided dworcs often before humans came. So we know the moss is hidden in east of upper level of dworc lair ...", + "You go there and take good moss from evil dworcs. Talk with me about mission when having moss.", }, npc, creature) end - elseif MsgContains(message, 'outfit') or MsgContains(message, 'shamanic') then + elseif MsgContains(message, "outfit") or MsgContains(message, "shamanic") then if questProgress == 18 then if player:getStorageValue(Storage.TheApeCity.ShamanOutfit) ~= 1 then - npcHandler:say('Me truly proud of you, friend. You learn many about plants, charms and ape people. Me want grant you shamanic power now. You ready?', npc, creature) + npcHandler:say("Me truly proud of you, friend. You learn many about plants, charms and ape people. Me want grant you shamanic power now. You ready?", npc, creature) npcHandler:setTopic(playerId, 18) else - npcHandler:say('You already are shaman and doctor. Me proud of you.', npc, creature) + npcHandler:say("You already are shaman and doctor. Me proud of you.", npc, creature) end else - npcHandler:say('You not have finished journey for wisdom yet, young human.', npc, creature) + npcHandler:say("You not have finished journey for wisdom yet, young human.", npc, creature) end - elseif MsgContains(message, 'heal') then + elseif MsgContains(message, "heal") then if questProgress > 11 then if player:getHealth() < 50 then player:addHealth(50 - player:getHealth()) @@ -228,267 +227,267 @@ local function creatureSayCallback(npc, creature, type, message) player:removeCondition(CONDITION_POISON) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) else - npcHandler:say('You look for food and rest.', npc, creature) + npcHandler:say("You look for food and rest.", npc, creature) end else - npcHandler:say('You look for food and rest.', npc, creature) + npcHandler:say("You look for food and rest.", npc, creature) end elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then - npcHandler:say('To become friend of ape people a long and difficult way is. We do not trust easy but help is needed. Will you listen to story of Hairycles?', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("To become friend of ape people a long and difficult way is. We do not trust easy but help is needed. Will you listen to story of Hairycles?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif MsgContains(message, 'no') then - npcHandler:say('Hairycles sad is now. But perhaps you will change mind one day.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Hairycles sad is now. But perhaps you will change mind one day.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then npcHandler:say({ - 'So listen, little ape was struck by plague. Hairycles not does know what plague it is. That is strange. Hairycles should know. But Hairycles learnt lots and lots ...', - 'Me sure to make cure so strong to drive away all plague. But to create great cure me need powerful components ...', - 'Me need whisper moss. Whisper moss growing south of human settlement is. Problem is, evil little dworcs harvest all whisper moss immediately ...', - 'Me know they hoard some in their underground lair. My people raided dworcs often before humans came. So we know the moss is hidden in east of upper level of dworc lair ...', - 'You go there and take good moss from evil dworcs. Talk with me about mission when having moss.' + "So listen, little ape was struck by plague. Hairycles not does know what plague it is. That is strange. Hairycles should know. But Hairycles learnt lots and lots ...", + "Me sure to make cure so strong to drive away all plague. But to create great cure me need powerful components ...", + "Me need whisper moss. Whisper moss growing south of human settlement is. Problem is, evil little dworcs harvest all whisper moss immediately ...", + "Me know they hoard some in their underground lair. My people raided dworcs often before humans came. So we know the moss is hidden in east of upper level of dworc lair ...", + "You go there and take good moss from evil dworcs. Talk with me about mission when having moss.", }, npc, creature) player:setStorageValue(Storage.TheApeCity.Started, 1) player:setStorageValue(Storage.TheApeCity.Questline, 1) player:setStorageValue(Storage.TheApeCity.DworcDoor, 1) - elseif MsgContains(message, 'no') then - npcHandler:say('Hairycles thought better of you.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Hairycles thought better of you.", npc, creature) addEvent(function() releasePlayer(npc, creature) end, 1000) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not player:removeItem(4827, 1) then - npcHandler:say('Stupid, you no have the moss me need. Go get it. It\'s somewhere in dworc lair. If you lost it, they might restocked it meanwhile. If you need to hear background of all again, ask Hairycles for {background}.', npc, creature) + npcHandler:say("Stupid, you no have the moss me need. Go get it. It's somewhere in dworc lair. If you lost it, they might restocked it meanwhile. If you need to hear background of all again, ask Hairycles for {background}.", npc, creature) player:setStorageValue(Storage.QuestChests.WhisperMoss, -1) return true end - npcHandler:say('Ah yes! That\'s it. Thank you for bringing mighty whisper moss to Hairycles. It will help but still much is to be done. Just ask for other mission if you ready.', npc, creature) + npcHandler:say("Ah yes! That's it. Thank you for bringing mighty whisper moss to Hairycles. It will help but still much is to be done. Just ask for other mission if you ready.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 2) - elseif MsgContains(message, 'no') then - npcHandler:say('Strange being you are! Our people need help!', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Strange being you are! Our people need help!", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 4 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not player:removeItem(4828, 1) then - npcHandler:say('No no, not right syrup you have. Go get other, get right health syrup.', npc, creature) + npcHandler:say("No no, not right syrup you have. Go get other, get right health syrup.", npc, creature) return true end - npcHandler:say('You so good! Brought syrup to me! Thank you, will prepare cure now. Just ask for {mission} if you want help again.', npc, creature) + npcHandler:say("You so good! Brought syrup to me! Thank you, will prepare cure now. Just ask for {mission} if you want help again.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 4) - elseif MsgContains(message, 'no') then - npcHandler:say('Please hurry, urgent it is!', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Please hurry, urgent it is!", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 5 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then npcHandler:say({ - 'So listen, please. Plague was not ordinary plague. That\'s why Hairycles could not heal at first. It is new curse of evil lizard people ...', - 'I think curse on little one was only a try. We have to be prepared for big strike ...', - 'Me need papers of lizard magician! For sure you find it in his hut in their dwelling. It\'s south east of jungle. Go look there please! Are you willing to go?' + "So listen, please. Plague was not ordinary plague. That's why Hairycles could not heal at first. It is new curse of evil lizard people ...", + "I think curse on little one was only a try. We have to be prepared for big strike ...", + "Me need papers of lizard magician! For sure you find it in his hut in their dwelling. It's south east of jungle. Go look there please! Are you willing to go?", }, npc, creature) npcHandler:setTopic(playerId, 6) - elseif MsgContains(message, 'no') then - npcHandler:say('Me sad. Me expected better from you!', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Me sad. Me expected better from you!", npc, creature) addEvent(function() releasePlayer(npc, creature) end, 1000) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 6 then - if MsgContains(message, 'yes') then - npcHandler:say('Good thing that is! Report about your mission when have scroll.', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("Good thing that is! Report about your mission when have scroll.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 5) player:setStorageValue(Storage.TheApeCity.ChorDoor, 1) - elseif MsgContains(message, 'no') then - npcHandler:say('Me sad. Me expected better from you!', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Me sad. Me expected better from you!", npc, creature) addEvent(function() releasePlayer(npc, creature) end, 1000) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 7 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not player:removeItem(4831, 1) then if player:getStorageValue(Storage.QuestChests.OldParchment) == 1 then - npcHandler:say('That\'s bad news. If you lost it, only way to get other is to kill holy serpents. But you can\'t go there so you must ask adventurers who can.', npc, creature) + npcHandler:say("That's bad news. If you lost it, only way to get other is to kill holy serpents. But you can't go there so you must ask adventurers who can.", npc, creature) else - npcHandler:say('No! That not scroll me looking for. Silly hairless ape you are. Go to village of lizards and get it there on your own!', npc, creature) + npcHandler:say("No! That not scroll me looking for. Silly hairless ape you are. Go to village of lizards and get it there on your own!", npc, creature) end return true end - npcHandler:say('You brought scroll with lizard text? Good! I will see what text tells me! Come back when ready for other mission.', npc, creature) + npcHandler:say("You brought scroll with lizard text? Good! I will see what text tells me! Come back when ready for other mission.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 6) - elseif MsgContains(message, 'no') then - npcHandler:say('That\'s bad news. If you lost it, only way to get other is to kill holy serpents. But you can\'t go there so you must ask adventurers who can.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("That's bad news. If you lost it, only way to get other is to kill holy serpents. But you can't go there so you must ask adventurers who can.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 8 then - if MsgContains(message, 'yes') then - npcHandler:say('Good thing that is! Report about mission when you have read those signs.', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("Good thing that is! Report about mission when you have read those signs.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 7) - elseif MsgContains(message, 'no') then - npcHandler:say('Me sad. Me expected better from you!', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Me sad. Me expected better from you!", npc, creature) addEvent(function() releasePlayer(npc, creature) end, 1000) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 9 then - if MsgContains(message, 'yes') then - npcHandler:say('Oh, so clear is all now! Easy it will be to read the signs now! Soon we will know what to do! Thank you again! Ask for mission if you feel ready.', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("Oh, so clear is all now! Easy it will be to read the signs now! Soon we will know what to do! Thank you again! Ask for mission if you feel ready.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 8) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - elseif MsgContains(message, 'no') then - npcHandler:say('Me need to see it in your mind, other there is no way to proceed.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Me need to see it in your mind, other there is no way to proceed.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 10 then - if MsgContains(message, 'yes') then - npcHandler:say('You brave hairless ape! Get me hydra egg. If you lose egg, you probably have to fight many, many hydras to get another.', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("You brave hairless ape! Get me hydra egg. If you lose egg, you probably have to fight many, many hydras to get another.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 9) - elseif MsgContains(message, 'no') then - npcHandler:say('Me sad. Me expected better from you!', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Me sad. Me expected better from you!", npc, creature) addEvent(function() releasePlayer(npc, creature) end, 1000) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 11 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not player:removeItem(4839, 1) then - npcHandler:say('You not have egg of hydra. Please get one!', npc, creature) + npcHandler:say("You not have egg of hydra. Please get one!", npc, creature) return true end - npcHandler:say('Ah, the egg! Mighty warrior you be! Thank you. Hairycles will put it at safe place immediately.', npc, creature) + npcHandler:say("Ah, the egg! Mighty warrior you be! Thank you. Hairycles will put it at safe place immediately.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 10) - elseif MsgContains(message, 'no') then - npcHandler:say('Please hurry. Hairycles not knows when evil lizards strike again.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Please hurry. Hairycles not knows when evil lizards strike again.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 12 then - if MsgContains(message, 'yes') then - npcHandler:say('Long journey it will take, good luck to you.', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("Long journey it will take, good luck to you.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 11) player:setStorageValue(Storage.TheApeCity.FibulaDoor, 1) - elseif MsgContains(message, 'no') then - npcHandler:say('Me sad. Me expected better from you!', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Me sad. Me expected better from you!", npc, creature) addEvent(function() releasePlayer(npc, creature) end, 1000) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 13 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not player:removeItem(4829, 1) then - npcHandler:say('Not right mushroom you have. Find me a witches\' cap on Fibula!', npc, creature) + npcHandler:say("Not right mushroom you have. Find me a witches' cap on Fibula!", npc, creature) return true end - npcHandler:say('Incredible, you brought a witches\' cap! Now me can prepare mighty charm of life. Yet still other {missions} will await you, friend.', npc, creature) + npcHandler:say("Incredible, you brought a witches' cap! Now me can prepare mighty charm of life. Yet still other {missions} will await you, friend.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 12) player:setStorageValue(Storage.TheApeCity.FibulaDoor, -1) - elseif MsgContains(message, 'no') then - npcHandler:say('Please try to find me a witches\' cap on Fibula.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Please try to find me a witches' cap on Fibula.", npc, creature) addEvent(function() releasePlayer(npc, creature) end, 1000) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 14 then - if MsgContains(message, 'yes') then - npcHandler:say('Hairycles sure you will make it. Good luck, friend.', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("Hairycles sure you will make it. Good luck, friend.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 13) player:setStorageValue(Storage.TheApeCity.CasksDoor, 1) - elseif MsgContains(message, 'no') then - npcHandler:say('Me sad. Please reconsider.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Me sad. Please reconsider.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 15 then - if MsgContains(message, 'yes') then - npcHandler:say('Hairycles proud of you. Go and find holy hair. Good luck, friend.', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("Hairycles proud of you. Go and find holy hair. Good luck, friend.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 15) - elseif MsgContains(message, 'no') then - npcHandler:say('Me sad. Please reconsider.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Me sad. Please reconsider.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 16 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not player:removeItem(4832, 1) then - npcHandler:say('You no have hair. You lost it? Go and look again.', npc, creature) + npcHandler:say("You no have hair. You lost it? Go and look again.", npc, creature) player:setStorageValue(Storage.TheApeCity.HolyApeHair, -1) return true end - npcHandler:say('Incredible! You got a hair of holy Bong! This will raise the spirit of my people. You are truly a friend. But one last mission awaits you.', npc, creature) + npcHandler:say("Incredible! You got a hair of holy Bong! This will raise the spirit of my people. You are truly a friend. But one last mission awaits you.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 16) - elseif MsgContains(message, 'no') then - npcHandler:say('You no have hair. You lost it? Go and look again.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("You no have hair. You lost it? Go and look again.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 17 then - if MsgContains(message, 'yes') then - npcHandler:say('Hairycles sure you will make it. Just use hammer on all that looks like snake or lizard. Tell Hairycles if you succeed with mission.', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("Hairycles sure you will make it. Just use hammer on all that looks like snake or lizard. Tell Hairycles if you succeed with mission.", npc, creature) player:setStorageValue(Storage.TheApeCity.Questline, 17) player:addItem(4835, 1) - elseif MsgContains(message, 'no') then - npcHandler:say('Me sad. Please reconsider.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Me sad. Please reconsider.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 18 then - if MsgContains(message, 'yes') then - npcHandler:say('Friend of the ape people! Take my gift and become me apprentice! Here is shaman clothing for you!', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("Friend of the ape people! Take my gift and become me apprentice! Here is shaman clothing for you!", npc, creature) player:addOutfit(154) player:addOutfit(158) player:setStorageValue(Storage.TheApeCity.ShamanOutfit, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - elseif MsgContains(message, 'no') then - npcHandler:say('Come back if change mind.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Come back if change mind.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 19 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not player:removeItem(130, 1) then - npcHandler:say('You have no cookie that I\'d like.', npc, creature) + npcHandler:say("You have no cookie that I'd like.", npc, creature) return true end player:setStorageValue(Storage.WhatAFoolish.CookieDelivery.Hairycles, 1) if player:getCookiesDelivered() == 10 then - player:addAchievement('Allow Cookies?') + player:addAchievement("Allow Cookies?") end npc:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) - npcHandler:say('Thank you, you are ... YOU SON OF LIZARD!', npc, creature) + npcHandler:say("Thank you, you are ... YOU SON OF LIZARD!", npc, creature) addEvent(function() releasePlayer(npc, creature) end, 1000) - elseif MsgContains(message, 'no') then - npcHandler:say('I see.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("I see.", npc, creature) end npcHandler:setTopic(playerId, 0) end return true end -keywordHandler:addKeyword({ 'busy' }, StdModule.say, { npcHandler = npcHandler, text = 'Me great {wizard}. Me great doctor of {ape people}. Me know many plants. Me old and me have seen many things.' }) -keywordHandler:addKeyword({ 'wizard' }, StdModule.say, { npcHandler = npcHandler, text = 'We see many things and learning quick. Merlkin magic learn quick, quick. We just watch and learn. Sometimes we try and learn.' }) -keywordHandler:addKeyword({ 'things' }, StdModule.say, { npcHandler = npcHandler, text = 'Things not good now. Need helper to do {mission} for me people.' }) -keywordHandler:addKeyword({ 'ape people' }, StdModule.say, { npcHandler = npcHandler, text = 'We be {kongra}, {sibang} and {merlkin}. Strange hairless ape people live in city called Port Hope.' }) -keywordHandler:addKeyword({ 'kongra' }, StdModule.say, { npcHandler = npcHandler, text = 'Kongra verry strong. Kongra verry angry verry fast. Take care when kongra comes. Better climb on highest tree.' }) -keywordHandler:addKeyword({ 'sibang' }, StdModule.say, { npcHandler = npcHandler, text = 'Sibang verry fast and funny. Sibang good gather food. Sibang know {jungle} well.' }) -keywordHandler:addKeyword({ 'merlkin' }, StdModule.say, { npcHandler = npcHandler, text = 'Merlkin we are. Merlkin verry wise, merlkin learn many things quick. Teach other apes things a lot. Making {heal} and making {magic}.' }) -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = 'We see many things and learning quick. Merlkin magic learn quick, quick. We just watch and learn. Sometimes we try and learn.' }) -keywordHandler:addKeyword({ 'jungle' }, StdModule.say, { npcHandler = npcHandler, text = 'Jungle is dangerous. Jungle also provides us food. Take care when in jungle and safe you be.' }) +keywordHandler:addKeyword({ "busy" }, StdModule.say, { npcHandler = npcHandler, text = "Me great {wizard}. Me great doctor of {ape people}. Me know many plants. Me old and me have seen many things." }) +keywordHandler:addKeyword({ "wizard" }, StdModule.say, { npcHandler = npcHandler, text = "We see many things and learning quick. Merlkin magic learn quick, quick. We just watch and learn. Sometimes we try and learn." }) +keywordHandler:addKeyword({ "things" }, StdModule.say, { npcHandler = npcHandler, text = "Things not good now. Need helper to do {mission} for me people." }) +keywordHandler:addKeyword({ "ape people" }, StdModule.say, { npcHandler = npcHandler, text = "We be {kongra}, {sibang} and {merlkin}. Strange hairless ape people live in city called Port Hope." }) +keywordHandler:addKeyword({ "kongra" }, StdModule.say, { npcHandler = npcHandler, text = "Kongra verry strong. Kongra verry angry verry fast. Take care when kongra comes. Better climb on highest tree." }) +keywordHandler:addKeyword({ "sibang" }, StdModule.say, { npcHandler = npcHandler, text = "Sibang verry fast and funny. Sibang good gather food. Sibang know {jungle} well." }) +keywordHandler:addKeyword({ "merlkin" }, StdModule.say, { npcHandler = npcHandler, text = "Merlkin we are. Merlkin verry wise, merlkin learn many things quick. Teach other apes things a lot. Making {heal} and making {magic}." }) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "We see many things and learning quick. Merlkin magic learn quick, quick. We just watch and learn. Sometimes we try and learn." }) +keywordHandler:addKeyword({ "jungle" }, StdModule.say, { npcHandler = npcHandler, text = "Jungle is dangerous. Jungle also provides us food. Take care when in jungle and safe you be." }) local function onTradeRequest(npc, creature) if Player(creature):getStorageValue(Storage.TheApeCity.Questline) < 18 then @@ -507,7 +506,7 @@ npcConfig.shop = { { itemName = "banana", clientId = 3587, buy = 2 }, { itemName = "monkey statue 'hear' kit", clientId = 5087, buy = 65 }, { itemName = "monkey statue 'see' kit", clientId = 5086, buy = 65 }, - { itemName = "monkey statue 'speak' kit", clientId = 5088, buy = 65 } + { itemName = "monkey statue 'speak' kit", clientId = 5088, buy = 65 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -518,7 +517,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/hal.lua b/data-otservbr-global/npc/hal.lua index 35e2c50e346..334db27203d 100644 --- a/data-otservbr-global/npc/hal.lua +++ b/data-otservbr-global/npc/hal.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,25 +58,25 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "report")) then - if (player:getStorageValue(Storage.InServiceofYalahar.Questline) == 8 or player:getStorageValue(Storage.InServiceofYalahar.Questline) == 12) then + if MsgContains(message, "report") then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 8 or player:getStorageValue(Storage.InServiceofYalahar.Questline) == 12 then npcHandler:say("Hicks! I... I... . ", npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, player:getStorageValue(Storage.InServiceofYalahar.Questline) + 1) player:setStorageValue(Storage.InServiceofYalahar.Mission02, player:getStorageValue(Storage.InServiceofYalahar.Mission02) + 1) -- StorageValue for Questlog "Mission 02: Watching the Watchmen" npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "pass")) then + elseif MsgContains(message, "pass") then npcHandler:say("You can {pass} either to the {Arena Quarter} or {Alchemist Quarter}. Which one will it be?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "arena")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "arena") then + if npcHandler:getTopic(playerId) == 1 then local destination = Position(32688, 31193, 7) player:teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "alchemist")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "alchemist") then + if npcHandler:getTopic(playerId) == 1 then local destination = Position(32688, 31188, 7) player:teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/npc/halif.lua b/data-otservbr-global/npc/halif.lua index 1234997b14d..d3d49696307 100644 --- a/data-otservbr-global/npc/halif.lua +++ b/data-otservbr-global/npc/halif.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 3, lookLegs = 9, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -81,7 +81,7 @@ npcConfig.shop = { { itemName = "wooden hammer", clientId = 3459, sell = 15 }, { itemName = "worm", clientId = 3492, buy = 1 }, { itemName = "yellow backpack", clientId = 2866, buy = 10 }, - { itemName = "yellow bag", clientId = 2858, buy = 4 } + { itemName = "yellow bag", clientId = 2858, buy = 4 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -92,7 +92,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/halvar.lua b/data-otservbr-global/npc/halvar.lua index 7643662446b..1790b73657c 100644 --- a/data-otservbr-global/npc/halvar.lua +++ b/data-otservbr-global/npc/halvar.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 78, lookFeet = 39, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,18 +50,18 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'rules' }, StdModule.say, { npcHandler = npcHandler, text = 'What do you want to know? Something about the three different {difficulties}, the {general} rules or the {prices}? Maybe you also want to know what happens when you {die}?' }) -keywordHandler:addKeyword({ 'difficulties' }, StdModule.say, { npcHandler = npcHandler, text = 'There are three difficulties: Greenhorn, Scrapper and Warlord. On each challenge you will be confronted with ten monsters increasing in strength.' }) -keywordHandler:addKeyword({ 'levels' }, StdModule.say, { npcHandler = npcHandler, text = 'There are three difficulties: Greenhorn, Scrapper and Warlord. On each challenge you will be confronted with ten monsters increasing in strength.' }) -keywordHandler:addKeyword({ 'difficulty' }, StdModule.say, { npcHandler = npcHandler, text = 'There are three difficulties: Greenhorn, Scrapper and Warlord. On each challenge you will be confronted with ten monsters increasing in strength.' }) -keywordHandler:addKeyword({ 'greenhorn' }, StdModule.say, { npcHandler = npcHandler, text = 'That is the easiest way in our arena. The {fee} is 1000 gold. We were setting this up for of our children to challenge some easy monsters and train them for the future.' }) -keywordHandler:addKeyword({ 'scrapper' }, StdModule.say, { npcHandler = npcHandler, text = 'The most common difficulty for us. The {fee} is 5000 gold. So if you are experienced in fighting middle class monsters this is your challenge!' }) -keywordHandler:addKeyword({ 'warlord' }, StdModule.say, { npcHandler = npcHandler, text = 'Only the strongest among us will take this challenge. The {fee} is 10000 gold. If you pass that I promise you the respect of all citizens here. You will be a hero!' }) -keywordHandler:addKeyword({ 'fee' }, StdModule.say, { npcHandler = npcHandler, text = 'The fee is either 1000, 5000 or 10000 gold for one try. Remember that if you {die}, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack.' }) -keywordHandler:addKeyword({ 'die' }, StdModule.say, { npcHandler = npcHandler, text = 'It would be better not to die! In every pit there is an emergency exit, the portal to the south. If you die in a pit... well... your corpse and backpack are gone, so you enter the arena at your own risk.' }) -keywordHandler:addKeyword({ 'general' }, StdModule.say, { npcHandler = npcHandler, text = 'Basically you pay me a {fee}, and you are sent into an arena with 10 different stages. If you succeed you will be rewarded accordingly.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'My job is to explain about the rules and to get the fee from the competitors.' }) -keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, text = 'Well I would rather call it an {Ultimate Challenge} than a mission.' }) +keywordHandler:addKeyword({ "rules" }, StdModule.say, { npcHandler = npcHandler, text = "What do you want to know? Something about the three different {difficulties}, the {general} rules or the {prices}? Maybe you also want to know what happens when you {die}?" }) +keywordHandler:addKeyword({ "difficulties" }, StdModule.say, { npcHandler = npcHandler, text = "There are three difficulties: Greenhorn, Scrapper and Warlord. On each challenge you will be confronted with ten monsters increasing in strength." }) +keywordHandler:addKeyword({ "levels" }, StdModule.say, { npcHandler = npcHandler, text = "There are three difficulties: Greenhorn, Scrapper and Warlord. On each challenge you will be confronted with ten monsters increasing in strength." }) +keywordHandler:addKeyword({ "difficulty" }, StdModule.say, { npcHandler = npcHandler, text = "There are three difficulties: Greenhorn, Scrapper and Warlord. On each challenge you will be confronted with ten monsters increasing in strength." }) +keywordHandler:addKeyword({ "greenhorn" }, StdModule.say, { npcHandler = npcHandler, text = "That is the easiest way in our arena. The {fee} is 1000 gold. We were setting this up for of our children to challenge some easy monsters and train them for the future." }) +keywordHandler:addKeyword({ "scrapper" }, StdModule.say, { npcHandler = npcHandler, text = "The most common difficulty for us. The {fee} is 5000 gold. So if you are experienced in fighting middle class monsters this is your challenge!" }) +keywordHandler:addKeyword({ "warlord" }, StdModule.say, { npcHandler = npcHandler, text = "Only the strongest among us will take this challenge. The {fee} is 10000 gold. If you pass that I promise you the respect of all citizens here. You will be a hero!" }) +keywordHandler:addKeyword({ "fee" }, StdModule.say, { npcHandler = npcHandler, text = "The fee is either 1000, 5000 or 10000 gold for one try. Remember that if you {die}, it is YOUR problem and you won't be able to get back to your corpse and your backpack." }) +keywordHandler:addKeyword({ "die" }, StdModule.say, { npcHandler = npcHandler, text = "It would be better not to die! In every pit there is an emergency exit, the portal to the south. If you die in a pit... well... your corpse and backpack are gone, so you enter the arena at your own risk." }) +keywordHandler:addKeyword({ "general" }, StdModule.say, { npcHandler = npcHandler, text = "Basically you pay me a {fee}, and you are sent into an arena with 10 different stages. If you succeed you will be rewarded accordingly." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "My job is to explain about the rules and to get the fee from the competitors." }) +keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = "Well I would rather call it an {Ultimate Challenge} than a mission." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -72,9 +72,9 @@ local function creatureSayCallback(npc, creature, type, message) end local arenaId = player:getStorageValue(Storage.SvargrondArena.Arena) - if MsgContains(message, 'fight') or MsgContains(message, 'pit') or MsgContains(message, 'challenge') or MsgContains(message, 'arena') then + if MsgContains(message, "fight") or MsgContains(message, "pit") or MsgContains(message, "challenge") or MsgContains(message, "arena") then if player:getStorageValue(Storage.SvargrondArena.PitDoor) == 1 then - npcHandler:say('You already paid the fee, go and fight!', npc, creature) + npcHandler:say("You already paid the fee, go and fight!", npc, creature) return true end @@ -84,14 +84,14 @@ local function creatureSayCallback(npc, creature, type, message) end if ARENA[arenaId] then - npcHandler:say('So you agree with the {rules} and want to participate in the {challenge}? The {fee} for one try in {' .. ARENA[arenaId].name .. '} is ' .. ARENA[arenaId].price .. ' gold pieces. Do you really want to participate and pay the {fee}?', npc, creature) + npcHandler:say("So you agree with the {rules} and want to participate in the {challenge}? The {fee} for one try in {" .. ARENA[arenaId].name .. "} is " .. ARENA[arenaId].price .. " gold pieces. Do you really want to participate and pay the {fee}?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('You\'ve already completed the arena in all {difficulty levels}.', npc, creature) + npcHandler:say("You've already completed the arena in all {difficulty levels}.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not ARENA[arenaId] then npcHandler:setTopic(playerId, 0) return true @@ -99,24 +99,24 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeMoneyBank(ARENA[arenaId].price) then player:setStorageValue(Storage.SvargrondArena.PitDoor, 1) - npcHandler:say('As you wish! You can pass the door now and enter the teleporter to the pits.', npc, creature) + npcHandler:say("As you wish! You can pass the door now and enter the teleporter to the pits.", npc, creature) local cStorage = ARENA[arenaId].questLog if player:getStorageValue(cStorage) ~= 1 then player:setStorageValue(cStorage, 1) end else - npcHandler:say('You do not have enough money.', npc, creature) + npcHandler:say("You do not have enough money.", npc, creature) end else - npcHandler:say('Come back when you are ready then.', npc, creature) + npcHandler:say("Come back when you are ready then.", npc, creature) end npcHandler:setTopic(playerId, 0) end return true end -npcHandler:setMessage(MESSAGE_GREET, 'Hello competitor! Do you want to {fight} in the arena or shall I explain the {rules} first?') +npcHandler:setMessage(MESSAGE_GREET, "Hello competitor! Do you want to {fight} in the arena or shall I explain the {rules} first?") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/hamilton.lua b/data-otservbr-global/npc/hamilton.lua index 30df0f09dd0..567cf0815c6 100644 --- a/data-otservbr-global/npc/hamilton.lua +++ b/data-otservbr-global/npc/hamilton.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 36, lookLegs = 116, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/hamish.lua b/data-otservbr-global/npc/hamish.lua index 814f8952240..45b5ced3027 100644 --- a/data-otservbr-global/npc/hamish.lua +++ b/data-otservbr-global/npc/hamish.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 95, lookLegs = 87, lookFeet = 128, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -30,7 +30,7 @@ npcConfig.voices = { { text = "Potions! Wand! Runes! Get them here!" }, { text = "Pack of monsters give you trouble? Throw an area rune at them!" }, { text = "Careful with that! That's a highly reactive potion you have there!" }, - { text = "Run out of mana or a little kablooie? Come to me to resupply!" } + { text = "Run out of mana or a little kablooie? Come to me to resupply!" }, } local keywordHandler = KeywordHandler:new() @@ -60,82 +60,60 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'name' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Hamish MacGuffin, at your disposal." - } -) -keywordHandler:addKeyword({ 'job' }, StdModule.say, - { - npcHandler = npcHandler, - text = "I craft highly efficient runes, wands and potions - always handy when you're in a fight against monsters! \z - Ask me for a trade to browse through my stock." - } -) -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Nope. Doesn't sound familiar." - } -) -keywordHandler:addKeyword({ 'coltrayne' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Never asked about his past. Seems it's a pretty gloomy one. \z - But he's an excellent blacksmith and seems content enough with his work here." - } -) -keywordHandler:addKeyword({ 'inigo' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Inigo taught me a trick or two since I joined Mr Morris' little crowd. \z +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "Hamish MacGuffin, at your disposal.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "I craft highly efficient runes, wands and potions - always handy when you're in a fight against monsters! \z + Ask me for a trade to browse through my stock.", +}) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { + npcHandler = npcHandler, + text = "Nope. Doesn't sound familiar.", +}) +keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, { + npcHandler = npcHandler, + text = "Never asked about his past. Seems it's a pretty gloomy one. \z + But he's an excellent blacksmith and seems content enough with his work here.", +}) +keywordHandler:addKeyword({ "inigo" }, StdModule.say, { + npcHandler = npcHandler, + text = "Inigo taught me a trick or two since I joined Mr Morris' little crowd. \z Quite a nice old chap who's seen much of the world and knows his way around here. \z - You should definitely ask him if you need help." - } -) -keywordHandler:addKeyword({ 'garamond' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Can be quite feisty if you doubt his seniorship. \z - Knows a thing or two about spells, though. Useful knowledge." - } -) -keywordHandler:addKeyword({ 'wentworth' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Keeran? He's a bit like Plunderpurse's shadow, isn't he? \z - Loves numbers, but I believe underneath it all he always wanted to break out of his boring little job in the city." - } -) -keywordHandler:addKeyword({ 'richard' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Seems good-natured enough a guy. Nimble with his hands, be it cooking or carpentering. \z - Seems to want to keep his mind off something, so he's always busy fixing stuff or cooking something up." - } -) -keywordHandler:addKeyword({ 'mr morris' }, StdModule.say, - { - npcHandler = npcHandler, - text = "If it wasn't for Mr Morris, maybe none of us would be alive. Or at least, none of us would be here. \z - He's been everywhere and gathered some adventurers around him to investigate the secrets of Dawnport." - } -) -keywordHandler:addKeyword({ 'oressa' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Our druid, down in the temple. Just appeared out of the blue one day. Keeps to herself. \z - She must have some reason to stay with us rather than roam the bigger Mainland. Well, we all have our reasons." - } -) -keywordHandler:addKeyword({ 'plunderpurse' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Now there's someone who has lived life to the full! Don't know though \z - whether I should really believe that he's a clerk now." - } -) + You should definitely ask him if you need help.", +}) +keywordHandler:addKeyword({ "garamond" }, StdModule.say, { + npcHandler = npcHandler, + text = "Can be quite feisty if you doubt his seniorship. \z + Knows a thing or two about spells, though. Useful knowledge.", +}) +keywordHandler:addKeyword({ "wentworth" }, StdModule.say, { + npcHandler = npcHandler, + text = "Keeran? He's a bit like Plunderpurse's shadow, isn't he? \z + Loves numbers, but I believe underneath it all he always wanted to break out of his boring little job in the city.", +}) +keywordHandler:addKeyword({ "richard" }, StdModule.say, { + npcHandler = npcHandler, + text = "Seems good-natured enough a guy. Nimble with his hands, be it cooking or carpentering. \z + Seems to want to keep his mind off something, so he's always busy fixing stuff or cooking something up.", +}) +keywordHandler:addKeyword({ "mr morris" }, StdModule.say, { + npcHandler = npcHandler, + text = "If it wasn't for Mr Morris, maybe none of us would be alive. Or at least, none of us would be here. \z + He's been everywhere and gathered some adventurers around him to investigate the secrets of Dawnport.", +}) +keywordHandler:addKeyword({ "oressa" }, StdModule.say, { + npcHandler = npcHandler, + text = "Our druid, down in the temple. Just appeared out of the blue one day. Keeps to herself. \z + She must have some reason to stay with us rather than roam the bigger Mainland. Well, we all have our reasons.", +}) +keywordHandler:addKeyword({ "plunderpurse" }, StdModule.say, { + npcHandler = npcHandler, + text = "Now there's someone who has lived life to the full! Don't know though \z + whether I should really believe that he's a clerk now.", +}) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -146,39 +124,36 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "dawnport") then - npcHandler:say( - { - "Small and deceptively friendly-looking island. Well, I used to study the plants and herbs here for my potions.", - "Nowadays, I leave that to Oressa, she has a better way with that horrible wildlife here. \z + npcHandler:say({ + "Small and deceptively friendly-looking island. Well, I used to study the plants and herbs here for my potions.", + "Nowadays, I leave that to Oressa, she has a better way with that horrible wildlife here. \z I prefer to distil potions in the quiet of my lab. \z - If you need some potions, runes or other magic equipment, ask for a trade." - }, - npc, creature, 200) + If you need some potions, runes or other magic equipment, ask for a trade.", + }, npc, creature, 200) elseif MsgContains(message, "mainland") then - npcHandler:say( - { - "Dawnport is not far off from the coast of the Tibian Mainland. Lots of cities, monsters, bandits, \z + npcHandler:say({ + "Dawnport is not far off from the coast of the Tibian Mainland. Lots of cities, monsters, bandits, \z brigands, mean folk and people of low understanding with no sense of respect towards alchemical genius. \z ", - "Ahem. Once you're level 8, you should be experienced enough to choose your definite vocation and leave \z + "Ahem. Once you're level 8, you should be experienced enough to choose your definite vocation and leave \z Dawnport for Main - and Tibia definitely needs more skilled adventurers to keep those monsters in check \z - which roam our lands!" - }, - npc, creature, 200) + which roam our lands!", + }, npc, creature, 200) elseif MsgContains(message, "ser tybald") then - npcHandler:say( - { - "I wish I had thought of changing my name to that of a hero. Would have smoothed my way no end!", - "Anyway, whatever he was before he joined, Tybald now fits the bill of the legendary hero. \z - He even has a crush on lady Oressa. Cute. " - }, - npc, creature, 200) + npcHandler:say({ + "I wish I had thought of changing my name to that of a hero. Would have smoothed my way no end!", + "Anyway, whatever he was before he joined, Tybald now fits the bill of the legendary hero. \z + He even has a crush on lady Oressa. Cute. ", + }, npc, creature, 200) end return true end -npcHandler:setMessage(MESSAGE_GREET, "Hi there, fellow adventurer. \z - What's your need? Say {trade} and we'll soon get you fixed up. Or ask me about potions, wands, or runes.") +npcHandler:setMessage( + MESSAGE_GREET, + "Hi there, fellow adventurer. \z + What's your need? Say {trade} and we'll soon get you fixed up. Or ask me about potions, wands, or runes." +) npcHandler:setMessage(MESSAGE_FAREWELL, "Use your runes wisely!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) @@ -203,7 +178,7 @@ npcConfig.shop = { { itemName = "snakebite rod", clientId = 3066, buy = 500 }, { itemName = "wand of decay", clientId = 3072, buy = 5000 }, { itemName = "wand of dragonbreath", clientId = 3075, buy = 1000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -214,7 +189,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/hanna.lua b/data-otservbr-global/npc/hanna.lua index d81bc4e8ab8..5a062678829 100644 --- a/data-otservbr-global/npc/hanna.lua +++ b/data-otservbr-global/npc/hanna.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 65, lookLegs = 0, lookFeet = 96, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Gems and jewellery! Best prices in town!' } + { text = "Gems and jewellery! Best prices in town!" }, } local keywordHandler = KeywordHandler:new() @@ -73,31 +73,31 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Oh, you're back already? Did you bring a legion helmet, 100 chicken feathers and 50 honeycombs?", npc, creature) npcHandler:setTopic(playerId, 2) elseif addonProgress == 2 then - npcHandler:say('Pretty hat, isn\'t it?', npc, creature) + npcHandler:say("Pretty hat, isn't it?", npc, creature) end return true end if npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then player:setStorageValue(Storage.OutfitQuest.Ref, math.max(0, player:getStorageValue(Storage.OutfitQuest.Ref)) + 1) player:setStorageValue(Storage.OutfitQuest.Citizen.AddonHat, 1) player:setStorageValue(Storage.OutfitQuest.Citizen.MissionHat, 1) - npcHandler:say('Okay, here we go, listen closely! I need a few things... a basic hat of course, maybe a legion helmet would do. Then about 100 chicken feathers... and 50 honeycombs as glue. That\'s it, come back to me once you gathered it!', npc, creature) + npcHandler:say("Okay, here we go, listen closely! I need a few things... a basic hat of course, maybe a legion helmet would do. Then about 100 chicken feathers... and 50 honeycombs as glue. That's it, come back to me once you gathered it!", npc, creature) else - npcHandler:say('Aw, I guess you don\'t like feather hats. No big deal.', npc, creature) + npcHandler:say("Aw, I guess you don't like feather hats. No big deal.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if player:getItemCount(3374) < 1 then - npcHandler:say('Sorry, but I can\'t see a legion helmet.', npc, creature) + npcHandler:say("Sorry, but I can't see a legion helmet.", npc, creature) elseif player:getItemCount(5890) < 100 then - npcHandler:say('Sorry, but you don\'t enough chicken feathers.', npc, creature) + npcHandler:say("Sorry, but you don't enough chicken feathers.", npc, creature) elseif player:getItemCount(5902) < 50 then - npcHandler:say('Sorry, but you don\'t have enough honeycombs.', npc, creature) + npcHandler:say("Sorry, but you don't have enough honeycombs.", npc, creature) else - npcHandler:say('Great job! That must have taken a lot of work. Okay, you put it like this... then glue like this... here!', npc, creature) + npcHandler:say("Great job! That must have taken a lot of work. Okay, you put it like this... then glue like this... here!", npc, creature) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) player:removeItem(3374, 1) @@ -112,7 +112,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.Citizen.AddonHat, 2) end else - npcHandler:say('Maybe another time.', npc, creature) + npcHandler:say("Maybe another time.", npc, creature) end npcHandler:setTopic(playerId, 0) end @@ -120,12 +120,12 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am a jeweler. Maybe you want to have a look at my wonderful offers.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I am Hanna.' }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am a jeweler. Maybe you want to have a look at my wonderful offers." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am Hanna." }) -npcHandler:setMessage(MESSAGE_GREET, 'Oh, please come in, |PLAYERNAME|. What do you need? Have a look at my wonderful {offers} in gems and jewellery.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye.') +npcHandler:setMessage(MESSAGE_GREET, "Oh, please come in, |PLAYERNAME|. What do you need? Have a look at my wonderful {offers} in gems and jewellery.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -183,7 +183,7 @@ npcConfig.shop = { { itemName = "violet crystal shard", clientId = 16120, sell = 1500 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, { itemName = "wedding ring", clientId = 3004, buy = 990, sell = 100 }, - { itemName = "white pearl", clientId = 3026, buy = 320, sell = 160 } + { itemName = "white pearl", clientId = 3026, buy = 320, sell = 160 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -194,7 +194,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/hardek.lua b/data-otservbr-global/npc/hardek.lua index a48a1b362b6..ba476f7b28d 100644 --- a/data-otservbr-global/npc/hardek.lua +++ b/data-otservbr-global/npc/hardek.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 101, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Buying and selling all sorts of weapons and armors!' } + { text = "Buying and selling all sorts of weapons and armors!" }, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am buying some weapons and armors." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am buying some weapons and armors." }) npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|! Do you need my services?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Visit me whenever you want to sell something.") @@ -138,7 +138,7 @@ npcConfig.shop = { { itemName = "viking helmet", clientId = 3367, buy = 265 }, { itemName = "viking shield", clientId = 3431, buy = 260 }, { itemName = "war hammer", clientId = 3279, buy = 10000 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -149,7 +149,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/harkath_bloodblade.lua b/data-otservbr-global/npc/harkath_bloodblade.lua index 98d1d47c86d..b3619652cfe 100644 --- a/data-otservbr-global/npc/harkath_bloodblade.lua +++ b/data-otservbr-global/npc/harkath_bloodblade.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/harlow.lua b/data-otservbr-global/npc/harlow.lua index 5a9c1630e15..b39b00600fe 100644 --- a/data-otservbr-global/npc/harlow.lua +++ b/data-otservbr-global/npc/harlow.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 113, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,19 +59,22 @@ local function creatureSayCallback(npc, creature, type, message) end end --Travel -local travelNode = keywordHandler:addKeyword({ 'vengoth' }, StdModule.say, { npcHandler = npcHandler, text = "So you are saying you're looking for someone to take you to Vengoth?" }, function(player) return player:getStorageValue(BloodBrothers.VengothAccess) == 1 end) -travelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'Oh well.' }) -local travelNodeYes = travelNode:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = "I could do that, it's not far from here. I don't run a charity organisation, though. Tell you what. Give me 100 gold pieces, and me and my boat are yours for the trip. Okay?" }) -travelNodeYes:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, text = "Okay. Enjoy.", premium = false, cost = 100, destination = Position(32858, 31549, 7) }) -travelNodeYes:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'Oh well.' }) -travelNode = keywordHandler:addKeyword({ "transportation" }, StdModule.say, { npcHandler = npcHandler, text = "Want me to bring you to Vengoth again for 100 gold?" }, function(player) return player:getStorageValue(BloodBrothers.VengothAccess) == 1 end) -travelNode:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, text = "Okay. Enjoy.", premium = false, cost = 100, destination = Position(32858, 31549, 7) }) -travelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'Oh well.' }) +local travelNode = keywordHandler:addKeyword({ "vengoth" }, StdModule.say, { npcHandler = npcHandler, text = "So you are saying you're looking for someone to take you to Vengoth?" }, function(player) + return player:getStorageValue(BloodBrothers.VengothAccess) == 1 +end) +travelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "Oh well." }) +local travelNodeYes = travelNode:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "I could do that, it's not far from here. I don't run a charity organisation, though. Tell you what. Give me 100 gold pieces, and me and my boat are yours for the trip. Okay?" }) +travelNodeYes:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, text = "Okay. Enjoy.", premium = false, cost = 100, destination = Position(32858, 31549, 7) }) +travelNodeYes:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "Oh well." }) +travelNode = keywordHandler:addKeyword({ "transportation" }, StdModule.say, { npcHandler = npcHandler, text = "Want me to bring you to Vengoth again for 100 gold?" }, function(player) + return player:getStorageValue(BloodBrothers.VengothAccess) == 1 +end) +travelNode:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, text = "Okay. Enjoy.", premium = false, cost = 100, destination = Position(32858, 31549, 7) }) +travelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "Oh well." }) --Basic keywordHandler:addKeyword({ "busy" }, StdModule.say, { npcHandler = npcHandler, text = "I have a {job}, you know?" }) keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Well, I'm kind of a delivery man I guess. I take on small {transportation} jobs with my boat." }) - npcHandler:setMessage(MESSAGE_GREET, "What do you want, |PLAYERNAME|? I'm a {busy} man.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") diff --git a/data-otservbr-global/npc/harlow_trade.lua b/data-otservbr-global/npc/harlow_trade.lua index 261716d6717..22d18182551 100644 --- a/data-otservbr-global/npc/harlow_trade.lua +++ b/data-otservbr-global/npc/harlow_trade.lua @@ -16,12 +16,11 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 94, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } - npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/harlow_vengoth.lua b/data-otservbr-global/npc/harlow_vengoth.lua index 1d0b9bb97de..d37a6c4fbc2 100644 --- a/data-otservbr-global/npc/harlow_vengoth.lua +++ b/data-otservbr-global/npc/harlow_vengoth.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 94, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,9 +50,9 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -local travelNode = keywordHandler:addKeyword({ 'yalahar' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to Yalahar for |TRAVELCOST|?', cost = 0 }) -travelNode:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 0, destination = Position(32837, 31366, 7) }) -travelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'Oh well.' }) +local travelNode = keywordHandler:addKeyword({ "yalahar" }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to Yalahar for |TRAVELCOST|?", cost = 0 }) +travelNode:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 0, destination = Position(32837, 31366, 7) }) +travelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "Oh well." }) npcHandler:setMessage(MESSAGE_GREET, "Want to go back to {Yalahar} for 50 gold? Just ask me.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") diff --git a/data-otservbr-global/npc/harog.lua b/data-otservbr-global/npc/harog.lua index cac810fd43c..d5943de3805 100644 --- a/data-otservbr-global/npc/harog.lua +++ b/data-otservbr-global/npc/harog.lua @@ -15,17 +15,17 @@ npcConfig.outfit = { lookHead = 37, lookBody = 16, lookLegs = 54, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { { name = "metal fitting", clientId = 9115, buy = 500 }, { name = "nail", clientId = 953, sell = 10 }, - { name = "flask of rust remover", clientId = 9016, buy = 50, storageKey = Storage.HiddenCityOfBeregar.JusticeForAll, storageValue = 6 } + { name = "flask of rust remover", clientId = 9016, buy = 50, storageKey = Storage.HiddenCityOfBeregar.JusticeForAll, storageValue = 6 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -36,8 +36,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -66,8 +65,8 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -npcHandler:setMessage(MESSAGE_GREET, 'Hello.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'It was a pleasure to help you, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_GREET, "Hello.") +npcHandler:setMessage(MESSAGE_FAREWELL, "It was a pleasure to help you, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setMessage(MESSAGE_SENDTRADE, "Keep in mind you won't find better offers here. Just browse through my wares.") diff --git a/data-otservbr-global/npc/haroun.lua b/data-otservbr-global/npc/haroun.lua index 33dcc08e9c5..18e0aae2936 100644 --- a/data-otservbr-global/npc/haroun.lua +++ b/data-otservbr-global/npc/haroun.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 80 + lookType = 80, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,36 +54,36 @@ local function creatureSayCallback(npc, creature, type, message) end if table.contains({ "enchanted chicken wing", "boots of haste" }, message) then - npcHandler:say('Do you want to trade Boots of haste for Enchanted Chicken Wing?', npc, creature) + npcHandler:say("Do you want to trade Boots of haste for Enchanted Chicken Wing?", npc, creature) npcHandler:setTopic(playerId, 1) elseif table.contains({ "warrior sweat", "warrior helmet" }, message) then - npcHandler:say('Do you want to trade 4 Warrior Helmet for Warrior Sweat?', npc, creature) + npcHandler:say("Do you want to trade 4 Warrior Helmet for Warrior Sweat?", npc, creature) npcHandler:setTopic(playerId, 2) elseif table.contains({ "fighting spirit", "royal helmet" }, message) then - npcHandler:say('Do you want to trade 2 Royal Helmet for Fighting Spirit', npc, creature) + npcHandler:say("Do you want to trade 2 Royal Helmet for Fighting Spirit", npc, creature) npcHandler:setTopic(playerId, 3) elseif table.contains({ "magic sulphur", "fire sword" }, message) then - npcHandler:say('Do you want to trade 3 Fire Sword for Magic Sulphur', npc, creature) + npcHandler:say("Do you want to trade 3 Fire Sword for Magic Sulphur", npc, creature) npcHandler:setTopic(playerId, 4) elseif table.contains({ "job", "items" }, message) then - npcHandler:say('I trade Enchanted Chicken Wing for Boots of Haste, Warrior Sweat for 4 Warrior Helmets, Fighting Spirit for 2 Royal Helmet Magic Sulphur for 3 Fire Swords', npc, creature) + npcHandler:say("I trade Enchanted Chicken Wing for Boots of Haste, Warrior Sweat for 4 Warrior Helmets, Fighting Spirit for 2 Royal Helmet Magic Sulphur for 3 Fire Swords", npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) <= 4 and npcHandler:getTopic(playerId) >= 1 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) <= 4 and npcHandler:getTopic(playerId) >= 1 then local trade = { { NeedItem = 3079, Ncount = 1, GiveItem = 5891, Gcount = 1 }, -- Enchanted Chicken Wing { NeedItem = 3369, Ncount = 4, GiveItem = 5885, Gcount = 1 }, -- Flask of Warrior's Sweat { NeedItem = 3392, Ncount = 2, GiveItem = 5884, Gcount = 1 }, -- Spirit Container - { NeedItem = 3280, Ncount = 3, GiveItem = 5904, Gcount = 1 } -- Magic Sulphur + { NeedItem = 3280, Ncount = 3, GiveItem = 5904, Gcount = 1 }, -- Magic Sulphur } if player:getItemCount(trade[npcHandler:getTopic(playerId)].NeedItem) >= trade[npcHandler:getTopic(playerId)].Ncount then player:removeItem(trade[npcHandler:getTopic(playerId)].NeedItem, trade[npcHandler:getTopic(playerId)].Ncount) player:addItem(trade[npcHandler:getTopic(playerId)].GiveItem, trade[npcHandler:getTopic(playerId)].Gcount) - return npcHandler:say('Here you are.', npc, creature) + return npcHandler:say("Here you are.", npc, creature) else - npcHandler:say('Sorry but you don\'t have the item.', npc, creature) + npcHandler:say("Sorry but you don't have the item.", npc, creature) end - elseif MsgContains(message, 'no') and (npcHandler:getTopic(playerId) >= 1 and npcHandler:getTopic(playerId) <= 5) then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") and (npcHandler:getTopic(playerId) >= 1 and npcHandler:getTopic(playerId) <= 5) then + npcHandler:say("Ok then.", npc, creature) npcHandler:setTopic(playerId, 0) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) @@ -95,7 +95,7 @@ local function onTradeRequest(npc, creature) local player = Player(creature) if player:getStorageValue(Storage.DjinnWar.MaridFaction.Mission03) ~= 3 then - npcHandler:say('I\'m sorry, human. But you need Gabel\'s permission to trade with me.', npc, creature) + npcHandler:say("I'm sorry, human. But you need Gabel's permission to trade with me.", npc, creature) return false end @@ -105,7 +105,7 @@ end npcHandler:setMessage(MESSAGE_GREET, "Be greeted, human |PLAYERNAME|. How can a humble djinn be of service?") npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell! May the serene light of the enlightened one rest shine on your travels.") npcHandler:setMessage(MESSAGE_WALKAWAY, "Farewell, human.") -npcHandler:setMessage(MESSAGE_SENDTRADE, 'At your service, just browse through my wares.') +npcHandler:setMessage(MESSAGE_SENDTRADE, "At your service, just browse through my wares.") npcHandler:setCallback(CALLBACK_ON_TRADE_REQUEST, onTradeRequest) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) @@ -134,7 +134,7 @@ npcConfig.shop = { { itemName = "wand of inferno", clientId = 3071, sell = 3000 }, { itemName = "wand of starstorm", clientId = 8092, sell = 3600 }, { itemName = "wand of voodoo", clientId = 8094, sell = 4400 }, - { itemName = "wand of vortex", clientId = 3074, sell = 100 } + { itemName = "wand of vortex", clientId = 3074, sell = 100 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -145,7 +145,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/harsky.lua b/data-otservbr-global/npc/harsky.lua index e2cfe70da4c..00fa11f874c 100644 --- a/data-otservbr-global/npc/harsky.lua +++ b/data-otservbr-global/npc/harsky.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 79, lookLegs = 79, lookFeet = 79, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,8 +50,8 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'hi' }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the king greet with his title!" }) -keywordHandler:addKeyword({ 'hello' }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the king greet with his title!" }) +keywordHandler:addKeyword({ "hi" }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the king greet with his title!" }) +keywordHandler:addKeyword({ "hello" }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the king greet with his title!" }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -61,7 +61,7 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if table.contains({ 'fuck', 'idiot', 'asshole', 'ass', 'fag', 'stupid', 'tyrant', 'shit', 'lunatic' }, message) then + if table.contains({ "fuck", "idiot", "asshole", "ass", "fag", "stupid", "tyrant", "shit", "lunatic" }, message) then local player = Player(creature) local conditions = { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_PARALYZE, CONDITION_DROWN, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED } for i = 1, #conditions do @@ -71,18 +71,18 @@ local function creatureSayCallback(npc, creature, type, message) end player:getPosition():sendMagicEffect(CONST_ME_EXPLOSIONAREA) player:addHealth(1 - player:getHealth()) - npcHandler:say('Take this!', npc, creature) + npcHandler:say("Take this!", npc, creature) npc:getPosition():sendMagicEffect(CONST_ME_YELLOW_RINGS) end return true end -- Greeting -keywordHandler:addGreetKeyword({ 'hail king' }, { npcHandler = npcHandler, text = 'HAIL TO THE KING!' }) -keywordHandler:addGreetKeyword({ 'salutations king' }, { npcHandler = npcHandler, text = 'HAIL TO THE KING!' }) +keywordHandler:addGreetKeyword({ "hail king" }, { npcHandler = npcHandler, text = "HAIL TO THE KING!" }) +keywordHandler:addGreetKeyword({ "salutations king" }, { npcHandler = npcHandler, text = "HAIL TO THE KING!" }) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'LONG LIVE THE KING!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'LONG LIVE THE KING! You may leave now!') +npcHandler:setMessage(MESSAGE_WALKAWAY, "LONG LIVE THE KING!") +npcHandler:setMessage(MESSAGE_FAREWELL, "LONG LIVE THE KING! You may leave now!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/hawkyr.lua b/data-otservbr-global/npc/hawkyr.lua index 750fbfcf844..ad50e75b49a 100644 --- a/data-otservbr-global/npc/hawkyr.lua +++ b/data-otservbr-global/npc/hawkyr.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 82, lookFeet = 121, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/heavenly_messenger.lua b/data-otservbr-global/npc/heavenly_messenger.lua index c02d115887f..7c2e8194a26 100644 --- a/data-otservbr-global/npc/heavenly_messenger.lua +++ b/data-otservbr-global/npc/heavenly_messenger.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 30, lookLegs = 40, lookFeet = 50, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/helor.lua b/data-otservbr-global/npc/helor.lua index fd31761a62a..53c7ea788e0 100644 --- a/data-otservbr-global/npc/helor.lua +++ b/data-otservbr-global/npc/helor.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 60, lookLegs = 114, lookFeet = 41, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/hemor_the_guard.lua b/data-otservbr-global/npc/hemor_the_guard.lua index 36ec3d55901..8b910fc2560 100644 --- a/data-otservbr-global/npc/hemor_the_guard.lua +++ b/data-otservbr-global/npc/hemor_the_guard.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 30, lookLegs = 40, lookFeet = 50, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/henricus.lua b/data-otservbr-global/npc/henricus.lua index ccb1dc1dd4d..bbbb0fd1b69 100644 --- a/data-otservbr-global/npc/henricus.lua +++ b/data-otservbr-global/npc/henricus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 96, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -92,7 +92,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.TheInquisition.Questline) == 1 then npcHandler:say({ "Let's see if you are worthy. Take an inquisitor's field guide from the box in the back room. ...", - "Follow the instructions in the guide to talk to the Thaian guards that protect the walls and gates of the city and test their loyalty. Then report to me about your {mission}." + "Follow the instructions in the guide to talk to the Thaian guards that protect the walls and gates of the city and test their loyalty. Then report to me about your {mission}.", }, npc, creature) player:setStorageValue(Storage.TheInquisition.Questline, 2) player:setStorageValue(Storage.TheInquisition.Mission01, 1) -- The Inquisition Questlog- "Mission 1: Interrogation" @@ -105,7 +105,7 @@ local function creatureSayCallback(npc, creature, type, message) "Listen, we have information about a heretic coven that hides in a mountain called the Big Old One. The witches reach this cursed place on flying brooms and think they are safe there. ...", "I've arranged a flying carpet that will bring you to their hideout. Travel to Femor Hills and tell the carpet pilot the codeword 'eclipse' ...", "He'll bring you to your destination. At their meeting place, you'll find a cauldron in which they cook some forbidden brew ...", - "Use this vial of holy water to destroy the brew. Also steal their grimoire and bring it to me." + "Use this vial of holy water to destroy the brew. Also steal their grimoire and bring it to me.", }, npc, creature) player:setStorageValue(Storage.TheInquisition.Questline, 4) player:setStorageValue(Storage.TheInquisition.Mission02, 1) -- The Inquisition Questlog- "Mission 2: Eclipse" @@ -117,7 +117,7 @@ local function creatureSayCallback(npc, creature, type, message) "I think it's time to truly test your abilities. One of our allies has requested assistance. I think you are just the right person to help him ...", "Storkus is an old and grumpy dwarf who works as a vampire hunter since many, many decades. He's quite successful but even hehas his limits. ...", "So occasionally, we send him help. In return he trains and tests our recruits. It's an advantageous agreement for both sides ...", - "You'll find him in his cave at the mountain outside of Kazordoon. He'll tell you about your next mission." + "You'll find him in his cave at the mountain outside of Kazordoon. He'll tell you about your next mission.", }, npc, creature) player:setStorageValue(Storage.TheInquisition.Questline, 6) player:setStorageValue(Storage.TheInquisition.Mission02, 3) -- The Inquisition Questlog- "Mission 2: Eclipse" @@ -132,7 +132,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.TheInquisition.Questline) == 11 then npcHandler:say({ "We've got a report about an abandoned and haunted house in Liberty Bay. I want you to examine this house. It's the only ruin in Liberty Bay so you should have no trouble finding it. ...", - "There's an evil being somewhere. I assume that it will be easier to find the right spot at night. Use this vial of holy water on that spot to drive out the evil being." + "There's an evil being somewhere. I assume that it will be easier to find the right spot at night. Use this vial of holy water on that spot to drive out the evil being.", }, npc, creature) player:setStorageValue(Storage.TheInquisition.Questline, 12) player:setStorageValue(Storage.TheInquisition.Mission04, 1) -- The Inquisition Questlog- "Mission 4: The Haunted Ruin" @@ -144,7 +144,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.TheInquisition.Questline) == 14 then npcHandler:say({ "You've handled heretics, witches, vampires and ghosts. Now be prepared to face the most evil creatures we are fighting - demons. Your new task is extremely simple, though far from easy. ...", - "Go and slay demonic creatures wherever you find them. Bring me 20 of their essences as a proof of your accomplishments." + "Go and slay demonic creatures wherever you find them. Bring me 20 of their essences as a proof of your accomplishments.", }, npc, creature) player:setStorageValue(Storage.TheInquisition.Questline, 15) player:setStorageValue(Storage.TheInquisition.Mission05, 1) -- The Inquisition Questlog- "Mission 5: Essential Gathering" @@ -153,7 +153,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeItem(6499, 20) then npcHandler:say({ "You're indeed a dedicated protector of the true believers. Don't stop now. Kill as many of these creatures as you can. ...", - "I also have a reward for your great efforts. Talk to me about your {demon hunter outfit} anytime from now on. Afterwards, let's talk about the next mission that's awaiting you." + "I also have a reward for your great efforts. Talk to me about your {demon hunter outfit} anytime from now on. Afterwards, let's talk about the next mission that's awaiting you.", }, npc, creature) player:setStorageValue(Storage.TheInquisition.Questline, 16) player:setStorageValue(Storage.TheInquisition.Mission05, 2) -- The Inquisition Questlog- "Mission 5: Essential Gathering" @@ -165,7 +165,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "We've got information about something very dangerous going on on the isle of Edron. The demons are preparing something there ...", "Something that is a threat to all of us. Our investigators were able to acquire vital information before some of them were slain by a demon named Ungreez. ...", - "It'll be your task to take revenge and to kill that demon. You'll find him in the depths of Edron. Good luck." + "It'll be your task to take revenge and to kill that demon. You'll find him in the depths of Edron. Good luck.", }, npc, creature) player:setStorageValue(Storage.TheInquisition.Questline, 18) player:setStorageValue(Storage.TheInquisition.Mission06, 1) -- The Inquisition Questlog- "Mission 6: The Demon Ungreez" @@ -173,7 +173,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.TheInquisition.Questline) == 19 then npcHandler:say({ "So the beast is finally dead! Thank the gods. At least some things work out in our favour ...", - "Our other operatives were not that lucky, though. But you will learn more about that in your next {mission}." + "Our other operatives were not that lucky, though. But you will learn more about that in your next {mission}.", }, npc, creature) player:setStorageValue(Storage.TheInquisition.Questline, 20) player:setStorageValue(Storage.TheInquisition.Mission06, 3) -- The Inquisition Questlog- "Mission 6: The Demon Ungreez" @@ -200,7 +200,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.TheInquisition.WalterGuard) == 1 and player:getStorageValue(Storage.TheInquisition.KulagGuard) == 1 and player:getStorageValue(Storage.TheInquisition.GrofGuard) == 1 and player:getStorageValue(Storage.TheInquisition.MilesGuard) == 1 and player:getStorageValue(Storage.TheInquisition.TimGuard) == 1 then npcHandler:say({ "Indeed, this is exactly what my other sources told me. Of course I knew the outcome of this investigation in advance. This was just a test. ...", - "Well, now that you've proven yourself as useful, you can ask me for another mission. Let's see if you can handle some field duty, too." + "Well, now that you've proven yourself as useful, you can ask me for another mission. Let's see if you can handle some field duty, too.", }, npc, creature) player:setStorageValue(Storage.TheInquisition.Questline, 3) player:setStorageValue(Storage.TheInquisition.Mission01, 7) -- The Inquisition Questlog- "Mission 1: Interrogation" @@ -230,11 +230,11 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.TheInquisition.Questline) == 22 then npcHandler:say({ "Incredible! You're a true defender of faith! I grant you the title of a High Inquisitor for your noble deeds. From now on you can obtain the blessing of the inquisition which makes the pilgrimage of ashes obsolete ...", - "The blessing of the inquisition will bestow upon you all available blessings for the price of 110000 gold. Also, don't forget to ask me about your {outfit} to receive the final addon as demon hunter." + "The blessing of the inquisition will bestow upon you all available blessings for the price of 110000 gold. Also, don't forget to ask me about your {outfit} to receive the final addon as demon hunter.", }, npc, creature) player:setStorageValue(Storage.TheInquisition.Questline, 23) player:setStorageValue(Storage.TheInquisition.Mission07, 3) -- The Inquisition Questlog- "Mission 7: The Shadow Nexus" - player:addAchievement('High Inquisitor') + player:addAchievement("High Inquisitor") else npcHandler:say("Come back when you have destroyed the shadow nexus.", npc, creature) end @@ -283,85 +283,85 @@ local function creatureSayCallback(npc, creature, type, message) player:addOutfitAddon(288, 2) player:addOutfitAddon(289, 2) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - player:addAchievement('Demonbane') + player:addAchievement("Demonbane") npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'dark') then + elseif MsgContains(message, "dark") then npcHandler:say({ - 'The dark powers are always present. If a human shows only the slightest weakness, they try to corrupt him and to lure him into their service. ...', - 'We must be constantly aware of evil that comes in many disguises.' + "The dark powers are always present. If a human shows only the slightest weakness, they try to corrupt him and to lure him into their service. ...", + "We must be constantly aware of evil that comes in many disguises.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'king') then + elseif MsgContains(message, "king") then npcHandler:say({ - 'The Thaian kings are crowned by a representative of the churches. This means they reign in the name of the gods of good and are part of the godly plan for humanity. ...', - 'As nominal head of the church of Banor, the kings aren\'t only worldly but also spiritual authorities. ...', - 'The kings fund the inquisition and sometimes provide manpower in matters of utmost importance. The inquisition, in return, protects the realm from heretics and individuals that aim to undermine the holy reign of the kings.' + "The Thaian kings are crowned by a representative of the churches. This means they reign in the name of the gods of good and are part of the godly plan for humanity. ...", + "As nominal head of the church of Banor, the kings aren't only worldly but also spiritual authorities. ...", + "The kings fund the inquisition and sometimes provide manpower in matters of utmost importance. The inquisition, in return, protects the realm from heretics and individuals that aim to undermine the holy reign of the kings.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'banor') then + elseif MsgContains(message, "banor") then npcHandler:say({ - 'In the past, the order of Banor was the only order of knighthood in existence. In the course of time, the order concentrated more and more on spiritual matters rather than on worldly ones. ...', - 'Nowadays, the order of Banor sanctions new orders and offers spiritual guidance to the fighters of good.' + "In the past, the order of Banor was the only order of knighthood in existence. In the course of time, the order concentrated more and more on spiritual matters rather than on worldly ones. ...", + "Nowadays, the order of Banor sanctions new orders and offers spiritual guidance to the fighters of good.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'fardos') then - npcHandler:say('The priests of Fardos are often mystics who have secluded themselves from worldly matters. Others provide guidance and healing to people in need in the temples.', npc, creature) + elseif MsgContains(message, "fardos") then + npcHandler:say("The priests of Fardos are often mystics who have secluded themselves from worldly matters. Others provide guidance and healing to people in need in the temples.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'uman') then + elseif MsgContains(message, "uman") then npcHandler:say({ - 'The church of Uman oversees the education of the masses as well as the doings of the sorcerer and druid guilds. It decides which lines of research are in accordance with the will of Uman and which are not. ...', - 'Concerned, the inquisition watches the attempts of these guilds to become more and more independent and to make own decisions. ...', - 'Unfortunately, the sorcerer guild has become dangerously influential and so the hands of our priests are tied due to political matters ...', - 'The druids lately claim that they are serving Crunor\'s will and not Uman\'s. Such heresy could only become possible with the independence of Carlin from the Thaian kingdom. ...', - 'The spiritual centre of the druids switched to Carlin where they have much influence and cannot be supervised by the inquisition.' + "The church of Uman oversees the education of the masses as well as the doings of the sorcerer and druid guilds. It decides which lines of research are in accordance with the will of Uman and which are not. ...", + "Concerned, the inquisition watches the attempts of these guilds to become more and more independent and to make own decisions. ...", + "Unfortunately, the sorcerer guild has become dangerously influential and so the hands of our priests are tied due to political matters ...", + "The druids lately claim that they are serving Crunor's will and not Uman's. Such heresy could only become possible with the independence of Carlin from the Thaian kingdom. ...", + "The spiritual centre of the druids switched to Carlin where they have much influence and cannot be supervised by the inquisition.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'fafnar') then + elseif MsgContains(message, "fafnar") then npcHandler:say({ - 'Fafnar is mostly worshipped by the peasants and farmers in rural areas. ...', - 'The inquisition has a close eye on these activities. Simply people tend to mix local superstitions with the teachings of the gods. This again may lead to heretical subcults.' + "Fafnar is mostly worshipped by the peasants and farmers in rural areas. ...", + "The inquisition has a close eye on these activities. Simply people tend to mix local superstitions with the teachings of the gods. This again may lead to heretical subcults.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'edron') then + elseif MsgContains(message, "edron") then npcHandler:say({ - 'Edron illustrates perfectly why the inquisition is needed and why we need more funds and manpower. ...', - 'Our agents were on their way to investigate certain occurrences there when some faithless knights fled to some unholy ruins. ...', - 'We were unable to wipe them out and the local order of knighthood was of little help. ...', - 'It\'s almost sure that something dangerous is going on there, so we have to continue our efforts.' + "Edron illustrates perfectly why the inquisition is needed and why we need more funds and manpower. ...", + "Our agents were on their way to investigate certain occurrences there when some faithless knights fled to some unholy ruins. ...", + "We were unable to wipe them out and the local order of knighthood was of little help. ...", + "It's almost sure that something dangerous is going on there, so we have to continue our efforts.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'ankrahmun') then + elseif MsgContains(message, "ankrahmun") then npcHandler:say({ - 'Even though they claim differently, this city is in the firm grip of Zathroth and his evil minions. Their whole twisted religion is a mockery of the teachings of our gods ...', - 'As soon as we have gathered the strength, we should crush this city once and for all.' + "Even though they claim differently, this city is in the firm grip of Zathroth and his evil minions. Their whole twisted religion is a mockery of the teachings of our gods ...", + "As soon as we have gathered the strength, we should crush this city once and for all.", }, npc, creature) npcHandler:setTopic(playerId, 0) end return true end -keywordHandler:addKeyword({ 'paladin' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s a shame that only a few paladins still use their abilities to further the cause of the gods of good. Too many paladins have become selfish and greedy.' }) -keywordHandler:addKeyword({ 'knight' }, StdModule.say, { npcHandler = npcHandler, text = 'Nowadays, most knights seem to have forgotten the noble cause to which all knights were bound in the past. Only a few have remained pious, serve the gods and follow their teachings.' }) -keywordHandler:addKeyword({ 'sorcerer' }, StdModule.say, { npcHandler = npcHandler, text = 'Those who wield great power have to resist great temptations. We have the burden to eliminate all those who give in to the temptations.' }) -keywordHandler:addKeyword({ 'druid' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids here still follow the old rules. Sadly, the druids of Carlin have left the right path in the last years.' }) -keywordHandler:addKeyword({ 'dwarf' }, StdModule.say, { npcHandler = npcHandler, text = 'The dwarfs are allied with Thais but follow their own obscure religion. Although dwarfs keep mostly to themselves, we have to observe this alliance closely.' }) -keywordHandler:addKeyword({ 'kazordoon' }, StdModule.say, { npcHandler = npcHandler, text = 'The dwarfs are allied with Thais but follow their own obscure religion. Although dwarfs keep mostly to themselves, we have to observe this alliance closely.' }) -keywordHandler:addKeyword({ 'elves' }, StdModule.say, { npcHandler = npcHandler, text = 'Those elves are hardly any more civilised than orcs. They can become a threat to mankind at any time.' }) -keywordHandler:addKeyword({ 'ab\'dendriel' }, StdModule.say, { npcHandler = npcHandler, text = 'Those elves are hardly any more civilised than orcs. They can become a threat to mankind at any time.' }) -keywordHandler:addKeyword({ 'venore' }, StdModule.say, { npcHandler = npcHandler, text = 'Venore is somewhat difficult to handle. The merchants have a close eye on our activities in their city and our authority is limited there. However, we will use all of our influence to prevent a second Carlin.' }) -keywordHandler:addKeyword({ 'drefia' }, StdModule.say, { npcHandler = npcHandler, text = 'Drefia used to be a city of sin and heresy, just like Carlin nowadays. One day, the gods decided to destroy this town and to erase all evil there.' }) -keywordHandler:addKeyword({ 'darashia' }, StdModule.say, { npcHandler = npcHandler, text = 'Darashia is a godless town full of mislead fools. One day, it will surely share the fate of its sister town Drefia.' }) -keywordHandler:addKeyword({ 'demon' }, StdModule.say, { npcHandler = npcHandler, text = 'Demons exist in many different shapes and levels of power. In general, they are servants of the dark gods and command great powers of destruction.' }) -keywordHandler:addKeyword({ 'carlin' }, StdModule.say, { npcHandler = npcHandler, text = 'Carlin is a city of sin and heresy. After the reunion of Carlin with the kingdom, the inquisition will have much work to purify the city and its inhabitants.' }) -keywordHandler:addKeyword({ 'zathroth' }, StdModule.say, { npcHandler = npcHandler, text = 'We can see his evil influence almost everywhere. Keep your eyes open or the dark one will lead you on the wrong way and destroy you.' }) -keywordHandler:addKeyword({ 'crunor' }, StdModule.say, { npcHandler = npcHandler, text = 'The church of Crunor works closely together with the druid guild. This makes a cooperation sometimes difficult.' }) -keywordHandler:addKeyword({ 'gods' }, StdModule.say, { npcHandler = npcHandler, text = 'We owe to the gods of good our creation and continuing existence. If it weren\'t for them, we would surely fall prey to the minions of the vile and dark gods.' }) -keywordHandler:addKeyword({ 'church' }, StdModule.say, { npcHandler = npcHandler, text = 'The churches of the gods united to fight heresy and dark magic. They are the shield of the true believers, while the inquisition is the sword that fights all enemies of virtuousness.' }) -keywordHandler:addKeyword({ 'inquisitor' }, StdModule.say, { npcHandler = npcHandler, text = 'The churches of the gods entrusted me with the enormous and responsible task to lead the inquisition. I leave the field work to inquisitors who I recruit from fitting people that cross my way.' }) -keywordHandler:addKeyword({ 'believer' }, StdModule.say, { npcHandler = npcHandler, text = 'Belive on the gods and they will show you the path.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'By edict of the churches I\'m the Lord Inquisitor.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m Henricus, the Lord Inquisitor.' }) +keywordHandler:addKeyword({ "paladin" }, StdModule.say, { npcHandler = npcHandler, text = "It's a shame that only a few paladins still use their abilities to further the cause of the gods of good. Too many paladins have become selfish and greedy." }) +keywordHandler:addKeyword({ "knight" }, StdModule.say, { npcHandler = npcHandler, text = "Nowadays, most knights seem to have forgotten the noble cause to which all knights were bound in the past. Only a few have remained pious, serve the gods and follow their teachings." }) +keywordHandler:addKeyword({ "sorcerer" }, StdModule.say, { npcHandler = npcHandler, text = "Those who wield great power have to resist great temptations. We have the burden to eliminate all those who give in to the temptations." }) +keywordHandler:addKeyword({ "druid" }, StdModule.say, { npcHandler = npcHandler, text = "The druids here still follow the old rules. Sadly, the druids of Carlin have left the right path in the last years." }) +keywordHandler:addKeyword({ "dwarf" }, StdModule.say, { npcHandler = npcHandler, text = "The dwarfs are allied with Thais but follow their own obscure religion. Although dwarfs keep mostly to themselves, we have to observe this alliance closely." }) +keywordHandler:addKeyword({ "kazordoon" }, StdModule.say, { npcHandler = npcHandler, text = "The dwarfs are allied with Thais but follow their own obscure religion. Although dwarfs keep mostly to themselves, we have to observe this alliance closely." }) +keywordHandler:addKeyword({ "elves" }, StdModule.say, { npcHandler = npcHandler, text = "Those elves are hardly any more civilised than orcs. They can become a threat to mankind at any time." }) +keywordHandler:addKeyword({ "ab'dendriel" }, StdModule.say, { npcHandler = npcHandler, text = "Those elves are hardly any more civilised than orcs. They can become a threat to mankind at any time." }) +keywordHandler:addKeyword({ "venore" }, StdModule.say, { npcHandler = npcHandler, text = "Venore is somewhat difficult to handle. The merchants have a close eye on our activities in their city and our authority is limited there. However, we will use all of our influence to prevent a second Carlin." }) +keywordHandler:addKeyword({ "drefia" }, StdModule.say, { npcHandler = npcHandler, text = "Drefia used to be a city of sin and heresy, just like Carlin nowadays. One day, the gods decided to destroy this town and to erase all evil there." }) +keywordHandler:addKeyword({ "darashia" }, StdModule.say, { npcHandler = npcHandler, text = "Darashia is a godless town full of mislead fools. One day, it will surely share the fate of its sister town Drefia." }) +keywordHandler:addKeyword({ "demon" }, StdModule.say, { npcHandler = npcHandler, text = "Demons exist in many different shapes and levels of power. In general, they are servants of the dark gods and command great powers of destruction." }) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { npcHandler = npcHandler, text = "Carlin is a city of sin and heresy. After the reunion of Carlin with the kingdom, the inquisition will have much work to purify the city and its inhabitants." }) +keywordHandler:addKeyword({ "zathroth" }, StdModule.say, { npcHandler = npcHandler, text = "We can see his evil influence almost everywhere. Keep your eyes open or the dark one will lead you on the wrong way and destroy you." }) +keywordHandler:addKeyword({ "crunor" }, StdModule.say, { npcHandler = npcHandler, text = "The church of Crunor works closely together with the druid guild. This makes a cooperation sometimes difficult." }) +keywordHandler:addKeyword({ "gods" }, StdModule.say, { npcHandler = npcHandler, text = "We owe to the gods of good our creation and continuing existence. If it weren't for them, we would surely fall prey to the minions of the vile and dark gods." }) +keywordHandler:addKeyword({ "church" }, StdModule.say, { npcHandler = npcHandler, text = "The churches of the gods united to fight heresy and dark magic. They are the shield of the true believers, while the inquisition is the sword that fights all enemies of virtuousness." }) +keywordHandler:addKeyword({ "inquisitor" }, StdModule.say, { npcHandler = npcHandler, text = "The churches of the gods entrusted me with the enormous and responsible task to lead the inquisition. I leave the field work to inquisitors who I recruit from fitting people that cross my way." }) +keywordHandler:addKeyword({ "believer" }, StdModule.say, { npcHandler = npcHandler, text = "Belive on the gods and they will show you the path." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "By edict of the churches I'm the Lord Inquisitor." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Henricus, the Lord Inquisitor." }) npcHandler:setMessage(MESSAGE_GREET, "Greetings, fellow {believer} |PLAYERNAME|!") npcHandler:setMessage(MESSAGE_FAREWELL, "Always be on guard, |PLAYERNAME|!") @@ -371,7 +371,7 @@ npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "holy water", clientId = 133, buy = 1000 } + { itemName = "holy water", clientId = 133, buy = 1000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -382,8 +382,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end -- npcType registering the npcConfig table npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/herbert.lua b/data-otservbr-global/npc/herbert.lua index 23bc44009dc..ff9d6dcc8b2 100644 --- a/data-otservbr-global/npc/herbert.lua +++ b/data-otservbr-global/npc/herbert.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 93, lookLegs = 36, lookFeet = 93, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,21 +58,21 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'letter') then + if MsgContains(message, "letter") then if player:getStorageValue(Storage.ThievesGuild.Mission06) == 1 then - npcHandler:say('You would like Chantalle\'s letter? only if you are willing to pay a price. {gold} maybe?', npc, creature) + npcHandler:say("You would like Chantalle's letter? only if you are willing to pay a price. {gold} maybe?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'gold') then + elseif MsgContains(message, "gold") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Are you willing to pay 1000 gold for this letter?', npc, creature) + npcHandler:say("Are you willing to pay 1000 gold for this letter?", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 2 then if player:removeMoneyBank(1000) then player:addItem(7940, 1) - npcHandler:say('Here you go kind sir.', npc, creature) + npcHandler:say("Here you go kind sir.", npc, creature) npcHandler:setTopic(playerId, 0) end end @@ -86,7 +86,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -97,7 +97,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/hexel.lua b/data-otservbr-global/npc/hexel.lua index 28de61b9938..81750f6503a 100644 --- a/data-otservbr-global/npc/hexel.lua +++ b/data-otservbr-global/npc/hexel.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/hireling.lua b/data-otservbr-global/npc/hireling.lua index d5a5f39a110..a22763aad6f 100644 --- a/data-otservbr-global/npc/hireling.lua +++ b/data-otservbr-global/npc/hireling.lua @@ -22,11 +22,11 @@ function createHirelingType(HirelingName) lookBody = 34, lookLegs = 3, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { @@ -308,7 +308,7 @@ function createHirelingType(HirelingName) { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -319,8 +319,7 @@ function createHirelingType(HirelingName) player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) - npcType.onCheckItem = function(npc, player, clientId, subType) - end + npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -364,17 +363,17 @@ function createHirelingType(HirelingName) SERVICES = 1100, BANK = 1200, FOOD = 1300, - GOODS = 1400 + GOODS = 1400, } local TOPIC_FOOD = { - SKILL_CHOOSE = 1301 + SKILL_CHOOSE = 1301, } local GREETINGS = { BANK = "Alright! What can I do for you and your bank business, |PLAYERNAME|?", FOOD = "Hmm, yes! A variety of fine food awaits! However, a small expense of 15000 gold is expected to make these delicious masterpieces happen. Shall I?", - STASH = "Of course, here is your stash! Well-maintained and neatly sorted for your convenience!" + STASH = "Of course, here is your stash! Well-maintained and neatly sorted for your convenience!", } local function getHirelingSkills() @@ -435,12 +434,7 @@ function createHirelingType(HirelingName) end if profession then - message = - string.format( - "I'm not a %s and would not know how to help you with that, sorry. I can start a %s apprenticeship if you buy it for me in the store!", - profession, - profession - ) + message = string.format("I'm not a %s and would not know how to help you with that, sorry. I can start a %s apprenticeship if you buy it for me in the store!", profession, profession) end npcHandler:say(message, npc, creature) @@ -462,14 +456,11 @@ function createHirelingType(HirelingName) elseif food_id == 29410 then message = "Magnifique! A tiger meat that has been marinated for several hours in magic spices." elseif food_id == 29411 then - message = - "Aaah, the beauty of the simple dishes! A delicate salad made of selected ingredients, capable of bring joy to the hearts of bravest warriors and their weapons." + message = "Aaah, the beauty of the simple dishes! A delicate salad made of selected ingredients, capable of bring joy to the hearts of bravest warriors and their weapons." elseif food_id == 29412 then - message = - "Oh yes, very spicy chilly combined with delicious minced carniphila meat and a side dish of fine salad!" + message = "Oh yes, very spicy chilly combined with delicious minced carniphila meat and a side dish of fine salad!" elseif food_id == 29413 then - message = - "Aaah, the northern cuisine! A catch of fresh salmon right from the coast Svargrond is the base of this extraordinary fish dish." + message = "Aaah, the northern cuisine! A catch of fresh salmon right from the coast Svargrond is the base of this extraordinary fish dish." elseif food_id == 29414 then message = "A traditional and classy meal. A beefy casserole which smells far better than it sounds!" elseif food_id == 29415 then @@ -508,11 +499,7 @@ function createHirelingType(HirelingName) if random == 6 then -- ask for preferred skill npcHandler:setTopic(playerId, TOPIC_FOOD.SKILL_CHOOSE) - npcHandler:say( - "Yay! I have the ingredients to make a skill boost dish. Would you rather like to boost your {magic}, {melee}, {shielding} or {distance} skill?", - npc, - creature - ) + npcHandler:say("Yay! I have the ingredients to make a skill boost dish. Would you rather like to boost your {magic}, {melee}, {shielding} or {distance} skill?", npc, creature) else -- deliver the random generated index deliverFood(npc, creature, HIRELING_FOODS[random]) end @@ -537,11 +524,7 @@ function createHirelingType(HirelingName) elseif MsgContains(message, "distance") then deliverFood(npc, creature, HIRELING_FOODS_BOOST.DISTANCE) else - npcHandler:say( - "Sorry, but you must choose a valid skill class. Would you like to boost your {magic}, {melee}, {shielding} or {distance} skill?", - npc, - creature - ) + npcHandler:say("Sorry, but you must choose a valid skill class. Would you like to boost your {magic}, {melee}, {shielding} or {distance} skill?", npc, creature) end end end @@ -561,17 +544,13 @@ function createHirelingType(HirelingName) -- roleplay if MsgContains(message, "sword of fury") then - npcHandler:say( - "In my youth I dreamt to wield it! Now I wield the broom of... brooming. I guess that's the next best thing!", - npc, - creature - ) + npcHandler:say("In my youth I dreamt to wield it! Now I wield the broom of... brooming. I guess that's the next best thing!", npc, creature) elseif MsgContains(message, "rookgaard") then npcHandler:say("What an uncivilised place without any culture.", npc, creature) elseif MsgContains(message, "excalibug") then -- end roleplay npcHandler:say("I'll keep an eye open for it when cleaning up the things you brought home!", npc, creature) - elseif (MsgContains(message, "service")) then + elseif MsgContains(message, "service") then npcHandler:setTopic(playerId, TOPIC.SERVICES) local servicesMsg = getHirelingServiceString(creature) npcHandler:say(servicesMsg, npc, creature) diff --git a/data-otservbr-global/npc/hjaern.lua b/data-otservbr-global/npc/hjaern.lua index 02c779e93b5..42dbd2bb9c8 100644 --- a/data-otservbr-global/npc/hjaern.lua +++ b/data-otservbr-global/npc/hjaern.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 95, lookFeet = 114, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "mission") then if player:getStorageValue(Storage.TheIceIslands.Questline) == 3 then if player:getStorageValue(Storage.TheIceIslands.Mission02) < 1 then @@ -66,7 +65,7 @@ local function creatureSayCallback(npc, creature, type, message) "We could indeed need some help. These are very cold times. The ice is growing and becoming thicker everywhere ...", "The problem is that the chakoyas may use the ice for a passage to the west and attack Svargrond ...", "We need you to get a pick and to destroy the ice at certain places to the east. You will quickly recognise those spots by their unstable look ...", - "Use the pickaxe on at least three of these places and the chakoyas probably won't be able to pass the ice. Once you are done, return here and report about your mission." + "Use the pickaxe on at least three of these places and the chakoyas probably won't be able to pass the ice. Once you are done, return here and report about your mission.", }, npc, creature) player:setStorageValue(Storage.TheIceIslands.Mission02, 1) -- Questlog The Ice Islands Quest, Nibelor 1: Breaking the Ice npcHandler:setTopic(playerId, 0) @@ -82,14 +81,14 @@ local function creatureSayCallback(npc, creature, type, message) "Everything we were able to find out leads to a place where none of our people is allowed to go. Just like we would never allow a stranger to go to that place ...", "But you, you are different. You are not one of our people, yet you have proven worthy to be one us. You are special, the child of two worlds ...", "We will grant you permission to travel to that isle of Helheim. Our legends say that this is the entrance to the dark world. The dark world is the place where the evil and lost souls roam in eternal torment ...", - "There you find for sure the cause for the unrest of the spirits. Find someone in Svargrond who can give you a passage to Helheim and seek for the cause. Are you willing to do that?" + "There you find for sure the cause for the unrest of the spirits. Find someone in Svargrond who can give you a passage to Helheim and seek for the cause. Are you willing to do that?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.TheIceIslands.Questline) == 31 then npcHandler:say({ "There is no need to report about your mission. To be honest, Ive sent a divination spirit with you as well as a couple of destruction spirits that were unleashed when you approached the altar ...", "Forgive me my secrecy but you are not familiar with the spirits and you might have get frightened. The spirits are at work now, destroying the magic with that those evil creatures have polluted Helheim ...", - "I cant thank you enough for what you have done for the spirits of my people. Still I have to ask: Would you do us another favour?" + "I cant thank you enough for what you have done for the spirits of my people. Still I have to ask: Would you do us another favour?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.TheIceIslands.Questline) == 38 then @@ -98,18 +97,14 @@ local function creatureSayCallback(npc, creature, type, message) "I can feel their resonance in the spirits world but we cant reach them with our magic yet. They have to get into contact with us in a spiritual way first ...", "This will help us to concentrate all our frost magic on this place. I am sure this will prevent to melt any significant number of demons from the ice ...", "Report about your mission when you are done. Then we can begin with the great ritual of summoning the children of Chyll ...", - "I will also inform Lurik about the events. Now go, fast!" + "I will also inform Lurik about the events. Now go, fast!", }, npc, creature) player:setStorageValue(Storage.TheIceIslands.Questline, 39) player:setStorageValue(Storage.TheIceIslands.Mission11, 2) -- Questlog The Ice Islands Quest, Formorgar Mines 3: The Secret player:setStorageValue(Storage.TheIceIslands.Mission12, 1) -- Questlog The Ice Islands Quest, Formorgar Mines 4: Retaliation player:addItem(7289, 1) npcHandler:setTopic(playerId, 0) - elseif player:getStorageValue(Storage.TheIceIslands.Questline) == 39 - and player:getStorageValue(Storage.TheIceIslands.Obelisk01) == 5 - and player:getStorageValue(Storage.TheIceIslands.Obelisk02) == 5 - and player:getStorageValue(Storage.TheIceIslands.Obelisk03) == 5 - and player:getStorageValue(Storage.TheIceIslands.Obelisk04) == 5 then + elseif player:getStorageValue(Storage.TheIceIslands.Questline) == 39 and player:getStorageValue(Storage.TheIceIslands.Obelisk01) == 5 and player:getStorageValue(Storage.TheIceIslands.Obelisk02) == 5 and player:getStorageValue(Storage.TheIceIslands.Obelisk03) == 5 and player:getStorageValue(Storage.TheIceIslands.Obelisk04) == 5 then if player:removeItem(7289, 1) then player:setStorageValue(Storage.TheIceIslands.Questline, 40) player:setStorageValue(Storage.TheIceIslands.yakchalDoor, 1) @@ -123,7 +118,7 @@ local function creatureSayCallback(npc, creature, type, message) "Yes, I can feel it! The spirits are in touch with the obelisks. We will begin to channel a spell of ice on the caves. That will prevent the melting of the ice there ...", "If you would like to help us, you can turn in frostheart shards from now on. We use them to fuel our spell with the power of ice. ...", "Oh, and before I forget it - since you have done a lot to help us and spent such a long time in this everlasting winter, I have a special present for you. ...", - "Take this outfit to keep your warm during your travels in this frozen realm!" + "Take this outfit to keep your warm during your travels in this frozen realm!", }, npc, creature) end npcHandler:setTopic(playerId, 0) @@ -164,16 +159,15 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.TheIceIslands.Questline) == 36 then npcHandler:say({ "You encountered the restless ghost of my apprentice Tylaf in the old mines? We must find out what has happened to him. I enable you to talk to his spirit ...", - "Talk to him and then report to me about your mission." + "Talk to him and then report to me about your mission.", }, npc, creature) player:setStorageValue(Storage.TheIceIslands.Questline, 37) player:setStorageValue(Storage.TheIceIslands.Mission10, 1) -- Questlog The Ice Islands Quest, Formorgar Mines 2: Ghostwhisperer npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'cookie') then - if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 - and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Hjaern) ~= 1 then - npcHandler:say('You want to sacrifice a cookie to the spirits?', npc, creature) + elseif MsgContains(message, "cookie") then + if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Hjaern) ~= 1 then + npcHandler:say("You want to sacrifice a cookie to the spirits?", npc, creature) npcHandler:setTopic(playerId, 6) end elseif MsgContains(message, "yes") then @@ -186,7 +180,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Thank you my friend. The local representative of the explorers society has asked for our help ...", "You know their ways better than my people do and are probably best suited to represent us in this matter.", - "Search for Lurik and talk to him about aprobable mission he might have for you." + "Search for Lurik and talk to him about aprobable mission he might have for you.", }, npc, creature) player:setStorageValue(Storage.TheIceIslands.Questline, 32) player:setStorageValue(Storage.TheIceIslands.Mission08, 1) -- Questlog The Ice Islands Quest, The Contact @@ -213,24 +207,24 @@ local function creatureSayCallback(npc, creature, type, message) end elseif npcHandler:getTopic(playerId) == 6 then if not player:removeItem(130, 1) then - npcHandler:say('You have no cookie that I\'d like.', npc, creature) + npcHandler:say("You have no cookie that I'd like.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:setStorageValue(Storage.WhatAFoolish.CookieDelivery.Hjaern, 1) if player:getCookiesDelivered() == 10 then - player:addAchievement('Allow Cookies?') + player:addAchievement("Allow Cookies?") end npc:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) - npcHandler:say('In the name of the spirits I accept this offer ... UHNGH ... The spirits are not amused!', npc, creature) + npcHandler:say("In the name of the spirits I accept this offer ... UHNGH ... The spirits are not amused!", npc, creature) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 6 then - npcHandler:say('I see.', npc, creature) + npcHandler:say("I see.", npc, creature) npcHandler:setTopic(playerId, 0) end end diff --git a/data-otservbr-global/npc/hofech.lua b/data-otservbr-global/npc/hofech.lua index 8046f8d92c6..b462a8d3f96 100644 --- a/data-otservbr-global/npc/hofech.lua +++ b/data-otservbr-global/npc/hofech.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 2, lookLegs = 2, lookFeet = 57, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { { itemName = "amphora", clientId = 2893, buy = 4 }, @@ -116,7 +116,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message @@ -128,8 +128,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) diff --git a/data-otservbr-global/npc/hoggle.lua b/data-otservbr-global/npc/hoggle.lua index df42c76ba6b..80d80c4d8be 100644 --- a/data-otservbr-global/npc/hoggle.lua +++ b/data-otservbr-global/npc/hoggle.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 46, lookLegs = 88, lookFeet = 94, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Oh, this misery...' } + { text = "Oh, this misery..." }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/hugo.lua b/data-otservbr-global/npc/hugo.lua index b248e1bf619..ee7f81337bd 100644 --- a/data-otservbr-global/npc/hugo.lua +++ b/data-otservbr-global/npc/hugo.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 81, lookLegs = 80, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,51 +51,51 @@ npcType.onCloseChannel = function(npc, creature) end local config = { - ['20 brown pieces of cloth'] = { + ["20 brown pieces of cloth"] = { itemId = 5913, count = 20, value = 1, messages = { - done = 'Ghouls sometimes carry it with them. My assistant Irmana can also fabricate cloth from secondhand clothing.', - deliever = 'Ah! Have you brought 20 pieces of brown cloth?', - notEnough = 'Uh, that is not even enough cloth for a poor dwarf\'s look.', - success = 'Yes, yes, that\'s it! Very well, now I need 50 pieces of minotaur leather to continue.' - } + done = "Ghouls sometimes carry it with them. My assistant Irmana can also fabricate cloth from secondhand clothing.", + deliever = "Ah! Have you brought 20 pieces of brown cloth?", + notEnough = "Uh, that is not even enough cloth for a poor dwarf's look.", + success = "Yes, yes, that's it! Very well, now I need 50 pieces of minotaur leather to continue.", + }, }, - ['50 minotaur leathers'] = { + ["50 minotaur leathers"] = { itemId = 5878, count = 50, value = 2, messages = { - done = 'If you don\'t know how to obtain minotaur leather, ask my apprentice Kalvin. I\'m far too busy for these trivial matters.', - deliever = 'Were you able to obtain 50 pieces of minotaur leather?', - notEnough = 'Uh, that is not even enough leather for a poor dwarf\'s look.', - success = 'Great! This leather will suffice. Now, please, the 10 bat wings.' - } + done = "If you don't know how to obtain minotaur leather, ask my apprentice Kalvin. I'm far too busy for these trivial matters.", + deliever = "Were you able to obtain 50 pieces of minotaur leather?", + notEnough = "Uh, that is not even enough leather for a poor dwarf's look.", + success = "Great! This leather will suffice. Now, please, the 10 bat wings.", + }, }, - ['10 bat wings'] = { + ["10 bat wings"] = { itemId = 5894, count = 10, value = 3, messages = { - done = 'Well, what do you expect? Bat wings come from bats, of course.', - deliever = 'Did you get me the 10 bat wings?', - notEnough = 'No, no. I need more bat wings! I said, 10!', - success = 'Hooray! These bat wings are ugly enough. Now the last thing: Please bring me 30 heaven blossoms to neutralise the ghoulish stench.' - } + done = "Well, what do you expect? Bat wings come from bats, of course.", + deliever = "Did you get me the 10 bat wings?", + notEnough = "No, no. I need more bat wings! I said, 10!", + success = "Hooray! These bat wings are ugly enough. Now the last thing: Please bring me 30 heaven blossoms to neutralise the ghoulish stench.", + }, }, - ['30 heaven blossoms'] = { + ["30 heaven blossoms"] = { itemId = 5921, count = 30, value = 4, messages = { - done = 'A flower favoured by almost all elves.', - deliever = 'Is this the lovely smell of 30 heaven blossoms?', - notEnough = 'These few flowers are not enough to neutralise the ghoulish stench.', - success = 'This is it! I will immediately start to work on this outfit. Come back in a day or something... then my new creation will be born!' + done = "A flower favoured by almost all elves.", + deliever = "Is this the lovely smell of 30 heaven blossoms?", + notEnough = "These few flowers are not enough to neutralise the ghoulish stench.", + success = "This is it! I will immediately start to work on this outfit. Come back in a day or something... then my new creation will be born!", }, - lastItem = true - } + lastItem = true, + }, } local topic = {} @@ -128,30 +128,30 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.Postman.Mission06, 12) end npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'outfit') then + elseif MsgContains(message, "outfit") then if not player:isPremium() then - npcHandler:say('Sorry, but my time is currently reserved for premium matters.', npc, creature) + npcHandler:say("Sorry, but my time is currently reserved for premium matters.", npc, creature) return true end if player:getStorageValue(Storage.OutfitQuest.BeggarOutfit) < 1 then npcHandler:say({ - 'I think I\'m having an innovative vision! I feel that people are getting tired of attempting to look wealthy and of displaying their treasures. ...', - 'A really new and innovative look would be - the \'poor man\'s look\'! I can already see it in front of me... yes... a little ragged... but not too shabby! ...', - 'I need material right now! Argh - the vision starts to fade... please hurry, can you bring me some stuff?' + "I think I'm having an innovative vision! I feel that people are getting tired of attempting to look wealthy and of displaying their treasures. ...", + "A really new and innovative look would be - the 'poor man's look'! I can already see it in front of me... yes... a little ragged... but not too shabby! ...", + "I need material right now! Argh - the vision starts to fade... please hurry, can you bring me some stuff?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.OutfitQuest.BeggarOutfit) > 0 and player:getStorageValue(Storage.OutfitQuest.BeggarOutfit) < 5 then - npcHandler:say('I am so excited! This poor man\'s look will be an outfit like the world has never seen before.', npc, creature) + npcHandler:say("I am so excited! This poor man's look will be an outfit like the world has never seen before.", npc, creature) elseif player:getStorageValue(Storage.OutfitQuest.BeggarOutfit) == 5 then if player:getStorageValue(Storage.OutfitQuest.BeggarOutfitTimer) > os.time() then - npcHandler:say('Sorry, but I am not done with the outfit yet. Venore wasn\'t built in a day.', npc, creature) + npcHandler:say("Sorry, but I am not done with the outfit yet. Venore wasn't built in a day.", npc, creature) elseif player:getStorageValue(Storage.OutfitQuest.BeggarOutfitTimer) > 0 and player:getStorageValue(Storage.OutfitQuest.BeggarOutfitTimer) < os.time() then - npcHandler:say('Eureka! Alas, the poor man\'s outfit is finished, but... to be honest... it turned out much less appealing than I expected. However, you can have it if you want, okay?', npc, creature) + npcHandler:say("Eureka! Alas, the poor man's outfit is finished, but... to be honest... it turned out much less appealing than I expected. However, you can have it if you want, okay?", npc, creature) npcHandler:setTopic(playerId, 5) end elseif player:getStorageValue(Storage.OutfitQuest.BeggarOutfit) == 6 then - npcHandler:say('I guess my vision wasn\'t that grand after all. I hope there are still people who enjoy it.', npc, creature) + npcHandler:say("I guess my vision wasn't that grand after all. I hope there are still people who enjoy it.", npc, creature) end elseif config[message:lower()] then local targetMessage = config[message:lower()] @@ -163,12 +163,12 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say(targetMessage.messages.deliever, npc, creature) npcHandler:setTopic(playerId, 4) topic[playerId] = targetMessage - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 2 then npcHandler:say({ - 'Good! Listen, I need the following material - first, 20 pieces of brown cloth, like the worn and ragged ghoul clothing. ...', - 'Secondly, 50 pieces of minotaur leather. Third, I need bat wings, maybe 10. And 30 heaven blossoms, the flowers elves cultivate. ...', - 'Have you noted down everything and will help me gather the material?' + "Good! Listen, I need the following material - first, 20 pieces of brown cloth, like the worn and ragged ghoul clothing. ...", + "Secondly, 50 pieces of minotaur leather. Third, I need bat wings, maybe 10. And 30 heaven blossoms, the flowers elves cultivate. ...", + "Have you noted down everything and will help me gather the material?", }, npc, creature) npcHandler:setTopic(playerId, 3) elseif npcHandler:getTopic(playerId) == 3 then @@ -176,7 +176,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.DefaultStart, 1) end player:setStorageValue(Storage.OutfitQuest.BeggarOutfit, 1) - npcHandler:say('Terrific! What are you waiting for?! Start right away gathering 20 pieces of brown cloth and come back once you have them!', npc, creature) + npcHandler:say("Terrific! What are you waiting for?! Start right away gathering 20 pieces of brown cloth and come back once you have them!", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 4 then local targetMessage = topic[playerId] @@ -196,21 +196,21 @@ local function creatureSayCallback(npc, creature, type, message) player:addOutfit(157) player:setStorageValue(Storage.OutfitQuest.BeggarOutfit, 6) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - npcHandler:say('Here you go. Maybe you enjoy if after all.', npc, creature) + npcHandler:say("Here you go. Maybe you enjoy if after all.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 2 then - npcHandler:say('Argh! I guess this awesome idea has to remain unimplemented. What a pity.', npc, creature) + npcHandler:say("Argh! I guess this awesome idea has to remain unimplemented. What a pity.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then - npcHandler:say('Do you want me to repeat the task requirements?', npc, creature) + npcHandler:say("Do you want me to repeat the task requirements?", npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 4 then - npcHandler:say('Hurry! I am at my creative peak right now!', npc, creature) + npcHandler:say("Hurry! I am at my creative peak right now!", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 5 then - npcHandler:say('Well, if you should change your mind, just ask me for the beggar outfit.', npc, creature) + npcHandler:say("Well, if you should change your mind, just ask me for the beggar outfit.", npc, creature) npcHandler:setTopic(playerId, 0) end end diff --git a/data-otservbr-global/npc/humgolf.lua b/data-otservbr-global/npc/humgolf.lua index 64905e50505..2f5351268f2 100644 --- a/data-otservbr-global/npc/humgolf.lua +++ b/data-otservbr-global/npc/humgolf.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 69 + lookType = 69, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,45 +57,31 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "farmine") then if player:getStorageValue(TheNewFrontier.Questline) == 14 then if player:getStorageValue(TheNewFrontier.Mission05.Humgolf) == 1 then - npcHandler:say( - "Bah, Farmine here, Farmine there. Is there nothing else than Farmine to talk about these days? Hrmpf, whatever. So what do you want?", - npc, creature) + npcHandler:say("Bah, Farmine here, Farmine there. Is there nothing else than Farmine to talk about these days? Hrmpf, whatever. So what do you want?", npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(TheNewFrontier.Mission05.Humgolf) == 2 then - npcHandler:say( - "You are here to apologise? Have you got anything that would make me reconsider my decision never to talk to you again about this subject?", - npc, creature) + npcHandler:say("You are here to apologise? Have you got anything that would make me reconsider my decision never to talk to you again about this subject?", npc, creature) npcHandler:setTopic(playerId, 2) end end elseif MsgContains(message, "flatter") and npcHandler:getTopic(playerId) == 1 then - if player:getStorageValue(TheNewFrontier.Mission05.Humgolf) == 1 and - player:getStorageValue(TheNewFrontier.Mission05.HumgolfKeyword) == 1 then - npcHandler:say( - "Yeah, of course they can't do without my worms. Mining and worms go hand in hand. Well, in the case of the worms it is only an imaginary hand of course. I'll send them some of my finest worms.", - npc, creature) + if player:getStorageValue(TheNewFrontier.Mission05.Humgolf) == 1 and player:getStorageValue(TheNewFrontier.Mission05.HumgolfKeyword) == 1 then + npcHandler:say("Yeah, of course they can't do without my worms. Mining and worms go hand in hand. Well, in the case of the worms it is only an imaginary hand of course. I'll send them some of my finest worms.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Humgolf, 3) end elseif MsgContains(message, "threaten") and npcHandler:getTopic(playerId) == 1 then - if player:getStorageValue(TheNewFrontier.Mission05.Humgolf) == 1 and - player:getStorageValue(TheNewFrontier.Mission05.HumgolfKeyword) == 2 then - npcHandler:say( - "Hah! Now you talk like a dwarf! That's the spirit! Of course you can have some of my worms. I'll send a bunch to Farmine as soon as possible.", - npc, creature) + if player:getStorageValue(TheNewFrontier.Mission05.Humgolf) == 1 and player:getStorageValue(TheNewFrontier.Mission05.HumgolfKeyword) == 2 then + npcHandler:say("Hah! Now you talk like a dwarf! That's the spirit! Of course you can have some of my worms. I'll send a bunch to Farmine as soon as possible.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Humgolf, 3) end elseif MsgContains(message, "yes") then - if npcHandler:getTopic(playerId) == 2 and player:getStorageValue(TheNewFrontier.Mission05.Humgolf) == 2 and - player:removeItem(10026, 1) then - npcHandler:say( - "Uh, how cute! Look how he's snapping for my fingers! You really know how to make an old dwarf happy! Well, so let's try again. Why do you think I should send my precious worms to Farmine?", - npc, creature) + if npcHandler:getTopic(playerId) == 2 and player:getStorageValue(TheNewFrontier.Mission05.Humgolf) == 2 and player:removeItem(10026, 1) then + npcHandler:say("Uh, how cute! Look how he's snapping for my fingers! You really know how to make an old dwarf happy! Well, so let's try again. Why do you think I should send my precious worms to Farmine?", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Humgolf, 1) npcHandler:setTopic(playerId, 1) end else - if player:getStorageValue(TheNewFrontier.Questline) == 14 and - player:getStorageValue(TheNewFrontier.Mission05.Humgolf) == 1 then + if player:getStorageValue(TheNewFrontier.Questline) == 14 and player:getStorageValue(TheNewFrontier.Mission05.Humgolf) == 1 then npcHandler:say("Wrong Word.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Humgolf, 2) end @@ -103,7 +89,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_GREET, '|PLAYERNAME|, good day .. or night, whatever.') +npcHandler:setMessage(MESSAGE_GREET, "|PLAYERNAME|, good day .. or night, whatever.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/humnog_the_guard.lua b/data-otservbr-global/npc/humnog_the_guard.lua index 0a609da4ed4..8acd41942bf 100644 --- a/data-otservbr-global/npc/humnog_the_guard.lua +++ b/data-otservbr-global/npc/humnog_the_guard.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 30, lookLegs = 40, lookFeet = 50, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/humphrey.lua b/data-otservbr-global/npc/humphrey.lua index fde532ec5f9..15c959bd6ed 100644 --- a/data-otservbr-global/npc/humphrey.lua +++ b/data-otservbr-global/npc/humphrey.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 115, lookLegs = 102, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,58 +51,66 @@ npcType.onCloseChannel = function(npc, creature) end -- Embrace of Tibia -local blessKeyword = keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'Would you like to receive that protection for a sacrifice of |BLESSCOST| gold, child?' }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the embrace of Tibia, pilgrim.', cost = '|BLESSCOST|', bless = 6 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +local blessKeyword = keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "Would you like to receive that protection for a sacrifice of |BLESSCOST| gold, child?" }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the embrace of Tibia, pilgrim.", cost = "|BLESSCOST|", bless = 6 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, noble |PLAYERNAME|') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good Bye, noble |PLAYERNAME|') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good Bye, noble |PLAYERNAME|') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, noble |PLAYERNAME|") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good Bye, noble |PLAYERNAME|") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good Bye, noble |PLAYERNAME|") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/huntsman.lua b/data-otservbr-global/npc/huntsman.lua index 911e2c8c0f5..4d4689c37df 100644 --- a/data-otservbr-global/npc/huntsman.lua +++ b/data-otservbr-global/npc/huntsman.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 40, lookLegs = 40, lookFeet = 57, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "huntsman") then npcHandler:say("I hunt game of all sorts to earn a living. I respect the {balance} of nature though and take only as much as I need.", npc, creature) npcHandler:setTopic(playerId, 1) @@ -67,7 +66,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "To be honest, I don't care too much about that spiritual balance thing. Better talk to {Benevola} about such things. ...", "As a matter of fact though, if too many animals are killed, things might rapidly change for the worse. ...", - "So it's only practical thinking to keep the balance in mind as long as I can afford it." + "So it's only practical thinking to keep the balance in mind as long as I can afford it.", }, npc, creature) npcHandler:setTopic(playerId, 2) end @@ -96,8 +95,8 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m just a simple {huntsman}.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, I don\'t think telling a stranger your name is a smart thing to do.' }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm just a simple {huntsman}." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, I don't think telling a stranger your name is a smart thing to do." }) npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye. Take care.") npcHandler:setMessage(MESSAGE_FAREWELL, "I can still see you.") diff --git a/data-otservbr-global/npc/hyacinth.lua b/data-otservbr-global/npc/hyacinth.lua index dad7f6648c9..6c551964071 100644 --- a/data-otservbr-global/npc/hyacinth.lua +++ b/data-otservbr-global/npc/hyacinth.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 123, lookLegs = 123, lookFeet = 94, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,7 +59,7 @@ local function greetCallback(npc, creature) elseif player:getStorageValue(Storage.TheRookieGuard.Mission04) == 3 or player:getStorageValue(Storage.TheRookieGuard.Mission04) == 4 then npcHandler:setMessage(MESSAGE_GREET, "Greetings, traveller |PLAYERNAME|. I still have a present for you! Would you like to have it now?") else - npcHandler:setMessage(MESSAGE_GREET, 'Greetings, traveller |PLAYERNAME|. As you have found the way to my hut, how can I {help} you?') + npcHandler:setMessage(MESSAGE_GREET, "Greetings, traveller |PLAYERNAME|. As you have found the way to my hut, how can I {help} you?") end return true end @@ -67,169 +67,158 @@ end -- The Rookie Guard Quest - Mission 04: Home-Brewed -- Mission 4: Confirm (Give herbs) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Thank you so much! I'm just too old to walk into the village each day, and the herbs must be fresh. Say, would you like to have a sample of my potions as reward?" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 2 and player:getItemCount(12671) >= 1 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission04, 3) - player:removeItem(12671, 1) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Thank you so much! I'm just too old to walk into the village each day, and the herbs must be fresh. Say, would you like to have a sample of my potions as reward?", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 2 and player:getItemCount(12671) >= 1 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission04, 3) + player:removeItem(12671, 1) +end) keywordHandler:addAliasKeyword({ "herbs" }) -- Mission 4: Decline (Give herbs) -local mission4LostHerbs = keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, then I must have mistaken you with someone else. Or did you lose it on the way?" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 2 end -) +local mission4LostHerbs = keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, then I must have mistaken you with someone else. Or did you lose it on the way?", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 2 +end) -- Mission 4: Confirm (Lost herbs) -mission4LostHerbs:addChildKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "That's too bad... but I'm sure Lily could give you another one. Just walk back and talk to her again.", - reset = true - }) +mission4LostHerbs:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "That's too bad... but I'm sure Lily could give you another one. Just walk back and talk to her again.", + reset = true, +}) -- Mission 4: Decline (Lost herbs) -mission4LostHerbs:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Alright then. Good luck on your travels.", - ungreet = true - }) +mission4LostHerbs:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Alright then. Good luck on your travels.", + ungreet = true, +}) -- Mission 4: Accept (First reward) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Here you go - two small health potions. If you use them on yourself, they will recover some of your hitpoints. ...", - "I recommend setting them on a hotkey so you don't have to search for them in a case of emergency. ...", - "Once you are a bit more experienced and have chosen a vocation, you'll have access to many different potions and also spells to restore your health. ...", - "Oh, and I also have another present for you! Do you still have some space in your inventory?" - } +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Here you go - two small health potions. If you use them on yourself, they will recover some of your hitpoints. ...", + "I recommend setting them on a hotkey so you don't have to search for them in a case of emergency. ...", + "Once you are a bit more experienced and have chosen a vocation, you'll have access to many different potions and also spells to restore your health. ...", + "Oh, and I also have another present for you! Do you still have some space in your inventory?", }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 3 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission04, 4) - player:addItemEx(Game.createItem(7876, 2), true, CONST_SLOT_BACKPACK) - end -) +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 3 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission04, 4) + player:addItemEx(Game.createItem(7876, 2), true, CONST_SLOT_BACKPACK) +end) -- Mission 4: Accept (Second reward) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Take this star ring. When you wear it in your ring slot, it will improve the effect of food that you have eaten for a limited time. So as long as you're not hungry, you will have increased hitpoint regeneration. ...", - "It makes sense to undress it when you have full hitpoints, so that the effect of the ring won't be wasted. ...", - "There are a lot of different rings in Tibia, but this one only works as long as you haven't learnt a vocation, so don't be afraid to use it. ...", - "Anyway, thanks so much for your help. I can brew a lot of potions from these herbs. If you're in the area and find yourself in need of potions, don't hesitate to drop by and ask me for a {trade}. ...", - "Anyway, this old man has taken enough of your time. Why don't you go back to the village and talk to Vascalir? If you stay on the path, you should be safe. Don't forget your potions!" - } +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Take this star ring. When you wear it in your ring slot, it will improve the effect of food that you have eaten for a limited time. So as long as you're not hungry, you will have increased hitpoint regeneration. ...", + "It makes sense to undress it when you have full hitpoints, so that the effect of the ring won't be wasted. ...", + "There are a lot of different rings in Tibia, but this one only works as long as you haven't learnt a vocation, so don't be afraid to use it. ...", + "Anyway, thanks so much for your help. I can brew a lot of potions from these herbs. If you're in the area and find yourself in need of potions, don't hesitate to drop by and ask me for a {trade}. ...", + "Anyway, this old man has taken enough of your time. Why don't you go back to the village and talk to Vascalir? If you stay on the path, you should be safe. Don't forget your potions!", }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 4 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission04, 5) - player:addItemEx(Game.createItem(12669, 1), true, CONST_SLOT_BACKPACK) - end -) +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 4 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission04, 5) + player:addItemEx(Game.createItem(12669, 1), true, CONST_SLOT_BACKPACK) +end) -- Mission 4: Decline (First reward) -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Oh, but I insist! After all you made the long way. Please, take my reward!" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 3 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Oh, but I insist! After all you made the long way. Please, take my reward!", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 3 +end) -- Mission 4: Decline (Second reward) -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, make some space and then talk to me again. I give you something really useful." - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 4 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, make some space and then talk to me again. I give you something really useful.", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 4 +end) -- Basic Keywords -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'Time doesn\'t matter to me.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m Hyacinth.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a {druid} and healer, a follower of {Crunor}.' }) -keywordHandler:addKeyword({ 'crunor' }, StdModule.say, { npcHandler = npcHandler, text = 'May Crunor bless you and protect you on your journeys!' }) -keywordHandler:addKeyword({ 'druid' }, StdModule.say, { npcHandler = npcHandler, text = 'There are only two other druids on Rookgaard, {Lily} and {Cipfried}.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'Storage for worldly wealth.' }) -keywordHandler:addKeyword({ 'destiny' }, StdModule.say, { npcHandler = npcHandler, text = 'Who knows what it will be? Only time will show.' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'Thank the gods, I\'m fine.' }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'What help do you seek? I sell health potions, ask me for a {trade} if you need one.' }) -keywordHandler:addKeyword({ 'spell' }, StdModule.say, { npcHandler = npcHandler, text = 'I can\'t teach you magic. On the {mainland} you will learn spells early enough.' }) -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m one of the few magic users on this isle. I can sense a follower of the dark path of magic hiding somewhere in the depths of the dungeons.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'It is shaped by the will of the gods, so we don\'t have to question it.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'I used to be there with my old friend Cipfried to heal adventurers. After all these years, I prefer solitude now.' }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = 'Teaching you about the gods would require too much time. But you can always read the books in the {library}.' }) -keywordHandler:addKeyword({ 'library' }, StdModule.say, { npcHandler = npcHandler, text = 'The library is in the {academy}, north of the {temple}.' }) -keywordHandler:addKeyword({ 'academy' }, StdModule.say, { npcHandler = npcHandler, text = 'A place to learn about {Tibia}.' }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = 'Are you hungry? I\'m sorry, I have no food here.' }) -keywordHandler:addKeyword({ 'potion' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I sell small health potions. Ask me for a trade if you need one.' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t care about kings, queens, and the like.' }) -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, { npcHandler = npcHandler, text = 'I rarely visit the town. It\'s much better here.' }) -keywordHandler:addKeyword({ 'main' }, StdModule.say, { npcHandler = npcHandler, text = 'There\'s a huge world waiting for you.' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'Most of the so-called monsters of this isle are only creatures of the gods. There are some beasts that are truly monstrous on the {mainland}.' }) -keywordHandler:addKeyword({ 'blueberr' }, StdModule.say, { npcHandler = npcHandler, text = 'Are you hungry? I\'m sorry, I have no food here.' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'The dungeons are dangerous for inexperienced adventurers.' }) - -keywordHandler:addKeyword({ 'offer' }, StdModule.say, { npcHandler = npcHandler, text = 'Just ask me for a {trade} to check out my offers. I have only small health potions for sale, though.' }) -keywordHandler:addAliasKeyword({ 'stuff' }) -keywordHandler:addAliasKeyword({ 'wares' }) -keywordHandler:addAliasKeyword({ 'buy' }) -keywordHandler:addAliasKeyword({ 'sell' }) - -keywordHandler:addKeyword({ 'equipment' }, StdModule.say, { npcHandler = npcHandler, text = 'You\'ll have to buy that from the merchants in town. I\'m just a simple druid and healer.' }) -keywordHandler:addAliasKeyword({ 'rope' }) -keywordHandler:addAliasKeyword({ 'backpack' }) -keywordHandler:addAliasKeyword({ 'shovel' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addAliasKeyword({ 'armor' }) -keywordHandler:addAliasKeyword({ 'helmet' }) - -keywordHandler:addKeyword({ 'deposit' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'ll pay you 5 gold for every empty vial and potion flask. Just ask me for a {trade}.' }) -keywordHandler:addAliasKeyword({ 'flask' }) -keywordHandler:addAliasKeyword({ 'vial' }) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Time doesn't matter to me." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Hyacinth." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a {druid} and healer, a follower of {Crunor}." }) +keywordHandler:addKeyword({ "crunor" }, StdModule.say, { npcHandler = npcHandler, text = "May Crunor bless you and protect you on your journeys!" }) +keywordHandler:addKeyword({ "druid" }, StdModule.say, { npcHandler = npcHandler, text = "There are only two other druids on Rookgaard, {Lily} and {Cipfried}." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "Storage for worldly wealth." }) +keywordHandler:addKeyword({ "destiny" }, StdModule.say, { npcHandler = npcHandler, text = "Who knows what it will be? Only time will show." }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "Thank the gods, I'm fine." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "What help do you seek? I sell health potions, ask me for a {trade} if you need one." }) +keywordHandler:addKeyword({ "spell" }, StdModule.say, { npcHandler = npcHandler, text = "I can't teach you magic. On the {mainland} you will learn spells early enough." }) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "I'm one of the few magic users on this isle. I can sense a follower of the dark path of magic hiding somewhere in the depths of the dungeons." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "It is shaped by the will of the gods, so we don't have to question it." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "I used to be there with my old friend Cipfried to heal adventurers. After all these years, I prefer solitude now." }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "Teaching you about the gods would require too much time. But you can always read the books in the {library}." }) +keywordHandler:addKeyword({ "library" }, StdModule.say, { npcHandler = npcHandler, text = "The library is in the {academy}, north of the {temple}." }) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { npcHandler = npcHandler, text = "A place to learn about {Tibia}." }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "Are you hungry? I'm sorry, I have no food here." }) +keywordHandler:addKeyword({ "potion" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I sell small health potions. Ask me for a trade if you need one." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "I don't care about kings, queens, and the like." }) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { npcHandler = npcHandler, text = "I rarely visit the town. It's much better here." }) +keywordHandler:addKeyword({ "main" }, StdModule.say, { npcHandler = npcHandler, text = "There's a huge world waiting for you." }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Most of the so-called monsters of this isle are only creatures of the gods. There are some beasts that are truly monstrous on the {mainland}." }) +keywordHandler:addKeyword({ "blueberr" }, StdModule.say, { npcHandler = npcHandler, text = "Are you hungry? I'm sorry, I have no food here." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "The dungeons are dangerous for inexperienced adventurers." }) + +keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "Just ask me for a {trade} to check out my offers. I have only small health potions for sale, though." }) +keywordHandler:addAliasKeyword({ "stuff" }) +keywordHandler:addAliasKeyword({ "wares" }) +keywordHandler:addAliasKeyword({ "buy" }) +keywordHandler:addAliasKeyword({ "sell" }) + +keywordHandler:addKeyword({ "equipment" }, StdModule.say, { npcHandler = npcHandler, text = "You'll have to buy that from the merchants in town. I'm just a simple druid and healer." }) +keywordHandler:addAliasKeyword({ "rope" }) +keywordHandler:addAliasKeyword({ "backpack" }) +keywordHandler:addAliasKeyword({ "shovel" }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addAliasKeyword({ "armor" }) +keywordHandler:addAliasKeyword({ "helmet" }) + +keywordHandler:addKeyword({ "deposit" }, StdModule.say, { npcHandler = npcHandler, text = "I'll pay you 5 gold for every empty vial and potion flask. Just ask me for a {trade}." }) +keywordHandler:addAliasKeyword({ "flask" }) +keywordHandler:addAliasKeyword({ "vial" }) -- Names -keywordHandler:addKeyword({ 'obi' }, StdModule.say, { npcHandler = npcHandler, text = 'A greedy and annoying person just like most people are.' }) -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'Now she has completely gotten out of her mind.' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'He was a promising young druid when something happened to his mind. It\'s a sad story.' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'He does a good job out there.' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'I know her since she was little.' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'One of these greedy merchants.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'I saw her stranding with her raft.' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s a farmer and behaves a little better than his cousin.' }) -keywordHandler:addKeyword({ 'willie' }, StdModule.say, { npcHandler = npcHandler, text = 'An unpleasant person.' }) -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = 'His healing powers equal mine.' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'I think she\'s under bad influence.' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s my name.' }) -keywordHandler:addKeyword({ 'lee\'delle' }, StdModule.say, { npcHandler = npcHandler, text = 'She\'s actually quite nice.' }) -keywordHandler:addKeyword({ 'lily' }, StdModule.say, { npcHandler = npcHandler, text = 'She\'s a druid. Since she started selling health potions, people visit me only rarely. Which is a good thing, but of course I\'ll help if I\'m needed.' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'The oracle will lead you to your {destiny} once you are level 8.' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'I think that guy is new. He\'s a {bank} clerk.' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'He has some inner devils that torture him.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'Tom is the local tanner. That means he always needs fresh corpses or leather.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'A man of the sword.' }) -keywordHandler:addAliasKeyword({ 'zerbrus' }) - -npcHandler:setMessage(MESSAGE_WALKAWAY, 'May Crunor bless you.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May Crunor bless you.') -npcHandler:setMessage(MESSAGE_SENDTRADE, 'Here. Don\'t forget, if you buy potions, there\'s a {deposit} of 5 gold on the empty flask.') +keywordHandler:addKeyword({ "obi" }, StdModule.say, { npcHandler = npcHandler, text = "A greedy and annoying person just like most people are." }) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "Now she has completely gotten out of her mind." }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "He was a promising young druid when something happened to his mind. It's a sad story." }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "He does a good job out there." }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "I know her since she was little." }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "One of these greedy merchants." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "I saw her stranding with her raft." }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "He's a farmer and behaves a little better than his cousin." }) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { npcHandler = npcHandler, text = "An unpleasant person." }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = "His healing powers equal mine." }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "I think she's under bad influence." }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "That's my name." }) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { npcHandler = npcHandler, text = "She's actually quite nice." }) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { npcHandler = npcHandler, text = "She's a druid. Since she started selling health potions, people visit me only rarely. Which is a good thing, but of course I'll help if I'm needed." }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "The oracle will lead you to your {destiny} once you are level 8." }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "I think that guy is new. He's a {bank} clerk." }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "He has some inner devils that torture him." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "Tom is the local tanner. That means he always needs fresh corpses or leather." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "A man of the sword." }) +keywordHandler:addAliasKeyword({ "zerbrus" }) + +npcHandler:setMessage(MESSAGE_WALKAWAY, "May Crunor bless you.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May Crunor bless you.") +npcHandler:setMessage(MESSAGE_SENDTRADE, "Here. Don't forget, if you buy potions, there's a {deposit} of 5 gold on the empty flask.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -239,7 +228,7 @@ npcConfig.shop = { { itemName = "empty potion flask", clientId = 284, sell = 5 }, { itemName = "empty potion flask", clientId = 285, sell = 5 }, { itemName = "small health potion", clientId = 7876, buy = 20 }, - { itemName = "vial", clientId = 2874, sell = 5 } + { itemName = "vial", clientId = 2874, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -250,7 +239,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/ikassis.lua b/data-otservbr-global/npc/ikassis.lua index f109d4bd34f..0b78fea52c1 100644 --- a/data-otservbr-global/npc/ikassis.lua +++ b/data-otservbr-global/npc/ikassis.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -64,7 +64,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "One of my sisters, in the disguise of a nightingale, told me that Alkestios would send you. There is a problem which is not concerning me but a wolf mother on the small island Cormaya. ...", "As we, the fae, consider ourselves guardians and protectors of plants and animals, it is important for me to help this wolf. Unfortunately, I can't do it myself because at the moment I'm bound to this vessel, this snake. ...", - "Thus I can't cross the ocean to reach Cormaya. Will you help me?" + "Thus I can't cross the ocean to reach Cormaya. Will you help me?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(ThreatenedDreams.Mission01[1]) == 10 then @@ -79,7 +79,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Nature's blessings! You may find the desperate wolf mother in the south of Cormaya. You will know the place because there is a big stone that looks like a grumpy face. ...", - "At night it will weep bloody tears and only at night you will meet the ghost there. Take this talisman so you may be able to talk with animals and even plants and stones. Just don't expect that all of them will answer you." + "At night it will weep bloody tears and only at night you will meet the ghost there. Take this talisman so you may be able to talk with animals and even plants and stones. Just don't expect that all of them will answer you.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission01[1], 5) npcHandler:setTopic(playerId, 0) diff --git a/data-otservbr-global/npc/imalas.lua b/data-otservbr-global/npc/imalas.lua index 4e39cab2cc3..e5c1bc8862a 100644 --- a/data-otservbr-global/npc/imalas.lua +++ b/data-otservbr-global/npc/imalas.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 9, lookLegs = 39, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,7 +50,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = "I offer quite a lot of food. Ask me for a {trade} if you're hungry" }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "I offer quite a lot of food. Ask me for a {trade} if you're hungry" }) npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|! What do you need? If it's {food}, you've come to the right place.") npcHandler:setMessage(MESSAGE_SENDTRADE, "Yep, take a good look.") @@ -68,7 +68,7 @@ npcConfig.shop = { { itemName = "melon", clientId = 3593, buy = 8 }, { itemName = "peas", clientId = 11683, buy = 2 }, { itemName = "pumpkin", clientId = 3594, buy = 10 }, - { itemName = "roll", clientId = 3601, buy = 2 } + { itemName = "roll", clientId = 3601, buy = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -79,7 +79,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/imbuement_assistant.lua b/data-otservbr-global/npc/imbuement_assistant.lua index 86c39abfb43..35ab1a282ea 100644 --- a/data-otservbr-global/npc/imbuement_assistant.lua +++ b/data-otservbr-global/npc/imbuement_assistant.lua @@ -17,17 +17,17 @@ npcConfig.outfit = { lookLegs = 39, lookFeet = 96, lookAddons = 3, - lookMount = 688 + lookMount = 688, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Hello adventurer, looking for Imbuement items? Just ask me!' } + { text = "Hello adventurer, looking for Imbuement items? Just ask me!" }, } local keywordHandler = KeywordHandler:new() @@ -59,7 +59,7 @@ end -- Basic -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "Currently I have been working selling items for imbuement." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Currently I have been working selling items for imbuement." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to Imbuement's shop!") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye and come again.") @@ -136,7 +136,7 @@ npcConfig.shop = { { itemName = "wereboar hooves", clientId = 22053, buy = 175 }, { itemName = "winter wolf fur", clientId = 10295, buy = 20 }, { itemName = "wyrm scale", clientId = 9665, buy = 400 }, - { itemName = "wyvern talisman", clientId = 9644, buy = 265 } + { itemName = "wyvern talisman", clientId = 9644, buy = 265 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -147,7 +147,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/imbul.lua b/data-otservbr-global/npc/imbul.lua index 0cdce1362fd..ad8e1058e03 100644 --- a/data-otservbr-global/npc/imbul.lua +++ b/data-otservbr-global/npc/imbul.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 2, lookLegs = 63, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,16 +52,16 @@ end -- Travel local function addTravelKeyword(keyword, text, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to the ' .. text .. ' for |TRAVELCOST|?', cost = cost }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Maybe another time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to the " .. text .. " for |TRAVELCOST|?", cost = cost }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Maybe another time.", reset = true }) end -addTravelKeyword('east', 'east end', 7, Position(32679, 32777, 7)) -addTravelKeyword('centre', 'centre', 7, Position(32628, 32771, 7)) +addTravelKeyword("east", "east end", 7, Position(32679, 32777, 7)) +addTravelKeyword("centre", "centre", 7, Position(32628, 32771, 7)) -- Basic -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I can bring you either to the {east} end of Port Hope or to the {centre} of the town, where would you like to go?' }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can bring you either to the {east} end of Port Hope or to the {centre} of the town, where would you like to go?" }) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/inigo.lua b/data-otservbr-global/npc/inigo.lua index ca1e64d4f90..e712582ea5e 100644 --- a/data-otservbr-global/npc/inigo.lua +++ b/data-otservbr-global/npc/inigo.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 0, lookFeet = 94, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local hints = { @@ -89,7 +89,7 @@ local hints = { 'Trade with ...', then click on the player with whom you want to trade.", [34] = "Send private messages to other {players} by right-clicking on the player or the player's name and select \z 'Message to ....'. You can also open a 'private message channel' and type in the name of the player.", - [35] = "There is nothing more I can tell you. If you are still in need of some {hints}, I can repeat them for you." + [35] = "There is nothing more I can tell you. If you are still in need of some {hints}, I can repeat them for you.", } npcConfig.voices = { interval = 15000, @@ -101,7 +101,7 @@ npcConfig.voices = { { text = "You came through the portal? Talk to me!" }, { text = "You're going out? Make sure you have a rope with you!" }, { text = "Buying all sorts of creature products!" }, - { text = "You're looking thoughtful. Maybe I can help you?" } + { text = "You're looking thoughtful. Maybe I can help you?" }, } local keywordHandler = KeywordHandler:new() @@ -130,126 +130,97 @@ end npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -npcHandler:setMessage(MESSAGE_GREET, "You came through the {portal}! \z - Though it must be different from where you came from, I'm sure you can help us. But first, I can {help} YOU.") - -keywordHandler:addKeyword({ "name" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ah, back in the old days, I was called Inigo Verasquiriz, but I doubt my family would acknowledge me. \z - Those that are still alive, that is." - } -) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I used to be a hunter and trapper, but these bones have grown weary. \z - I now tan furs and hides and {trade} in creature products. And I can help you find your way if you need directions." - } +npcHandler:setMessage( + MESSAGE_GREET, + "You came through the {portal}! \z + Though it must be different from where you came from, I'm sure you can help us. But first, I can {help} YOU." ) -keywordHandler:addKeyword({ "tibia" }, StdModule.say, - { - npcHandler = npcHandler, - text = "That's where we are - the world of Tibia. \z - We're on a small island called {Dawnport}, not far from the coast of the Tibian {Mainland}, to be precise." - } -) -keywordHandler:addKeyword({ "questing" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Oh, I can handle my tasks myself, thank you. \z + +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ah, back in the old days, I was called Inigo Verasquiriz, but I doubt my family would acknowledge me. \z + Those that are still alive, that is.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "I used to be a hunter and trapper, but these bones have grown weary. \z + I now tan furs and hides and {trade} in creature products. And I can help you find your way if you need directions.", +}) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { + npcHandler = npcHandler, + text = "That's where we are - the world of Tibia. \z + We're on a small island called {Dawnport}, not far from the coast of the Tibian {Mainland}, to be precise.", +}) +keywordHandler:addKeyword({ "questing" }, StdModule.say, { + npcHandler = npcHandler, + text = "Oh, I can handle my tasks myself, thank you. \z If you are looking for something to do, you should go to Morris and ask him for quests. \z - You can also help us fight {monsters}." - } -) -keywordHandler:addKeyword({ "people" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, the other fellows you see here, selling stuff and so forth. \z - Say a name and I'll tell you what I know of him or her." - } -) -keywordHandler:addKeyword({ "monsters" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Marvellous specimen we have here on {Dawnport}! \z + You can also help us fight {monsters}.", +}) +keywordHandler:addKeyword({ "people" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, the other fellows you see here, selling stuff and so forth. \z + Say a name and I'll tell you what I know of him or her.", +}) +keywordHandler:addKeyword({ "monsters" }, StdModule.say, { + npcHandler = npcHandler, + text = "Marvellous specimen we have here on {Dawnport}! \z Just be careful when you go hunting them, {dying} hurts in {Tibia}! \z - I will happily buy any creature products you may find." - } -) -keywordHandler:addKeyword({ "garamond" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Used to be a professor at the magic academy in Edron, I believe. \z + I will happily buy any creature products you may find.", +}) +keywordHandler:addKeyword({ "garamond" }, StdModule.say, { + npcHandler = npcHandler, + text = "Used to be a professor at the magic academy in Edron, I believe. \z Likes to see different places, so he joined our illustrous little group. \z - Sells {sorcerer} and {druid} {spells} to our trainees." - } -) -keywordHandler:addKeyword({ "tybald" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm not sure that's his actual name, but I guess he has good reasons to stay incognito here. \z - In any case, he's a formidable fighter and knows usefull {spells} for knights and paladins." - } -) -keywordHandler:addKeyword({ "richard" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Richard came here as a shipwrecked carpenter, and now sells {tools} and {food} to all adventurers. \z - If you need a {rope} or {shovel}, {fishing rod} or some provisions for a hunt, you should trade with him!" - } -) -keywordHandler:addKeyword({ "knight" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Knights are close combat fighters, the toughest vocation of all. \z - They usually wield melee weapons such as swords, axes or clubs." - } -) -keywordHandler:addKeyword({ "druid" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Druids are nature magicians. \z - Their speciality is casting ice and earth magic, as well as providing healing for others." - } -) -keywordHandler:addKeyword({ "paladin" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Paladins are well-trained distance fighters and can cast holy magic. \z - You will usually see them wearing bows or crossbows." - } -) -keywordHandler:addKeyword({ "sorcerer" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Sorcerers are elemental magicians. They have mastered fire, energy and death magic." - } -) -keywordHandler:addKeyword({ "tools" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In {Tibia}, you can use different tools with your environment, or for quests. \z + Sells {sorcerer} and {druid} {spells} to our trainees.", +}) +keywordHandler:addKeyword({ "tybald" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm not sure that's his actual name, but I guess he has good reasons to stay incognito here. \z + In any case, he's a formidable fighter and knows usefull {spells} for knights and paladins.", +}) +keywordHandler:addKeyword({ "richard" }, StdModule.say, { + npcHandler = npcHandler, + text = "Richard came here as a shipwrecked carpenter, and now sells {tools} and {food} to all adventurers. \z + If you need a {rope} or {shovel}, {fishing rod} or some provisions for a hunt, you should trade with him!", +}) +keywordHandler:addKeyword({ "knight" }, StdModule.say, { + npcHandler = npcHandler, + text = "Knights are close combat fighters, the toughest vocation of all. \z + They usually wield melee weapons such as swords, axes or clubs.", +}) +keywordHandler:addKeyword({ "druid" }, StdModule.say, { + npcHandler = npcHandler, + text = "Druids are nature magicians. \z + Their speciality is casting ice and earth magic, as well as providing healing for others.", +}) +keywordHandler:addKeyword({ "paladin" }, StdModule.say, { + npcHandler = npcHandler, + text = "Paladins are well-trained distance fighters and can cast holy magic. \z + You will usually see them wearing bows or crossbows.", +}) +keywordHandler:addKeyword({ "sorcerer" }, StdModule.say, { + npcHandler = npcHandler, + text = "Sorcerers are elemental magicians. They have mastered fire, energy and death magic.", +}) +keywordHandler:addKeyword({ "tools" }, StdModule.say, { + npcHandler = npcHandler, + text = "In {Tibia}, you can use different tools with your environment, or for quests. \z The most important tools are {rope} and {shovel}. \z - A {fishing rod}'s also good when you need to eat, and are near a river or the sea." - } -) -keywordHandler:addKeyword({ "food" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Food is very important for your health and mana. \z + A {fishing rod}'s also good when you need to eat, and are near a river or the sea.", +}) +keywordHandler:addKeyword({ "food" }, StdModule.say, { + npcHandler = npcHandler, + text = "Food is very important for your health and mana. \z If you are hurt in a fight with a monster, select 'USE' on food such as cheese, ham or meat to eat it. \z - This will slowly refill your health and mana. Here at the outpost, you can buy food from {Richard}." - } -) -keywordHandler:addKeyword({ "fishing rod" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Use a fishing rod on a patch of water to see if you can catch fish! \z + This will slowly refill your health and mana. Here at the outpost, you can buy food from {Richard}.", +}) +keywordHandler:addKeyword({ "fishing rod" }, StdModule.say, { + npcHandler = npcHandler, + text = "Use a fishing rod on a patch of water to see if you can catch fish! \z Eating is essential in {Tibia} - if you don't eat when you're hungry, you won't regenerate health or mana. \z - So you should aways have some {food} with you." - } -) + So you should aways have some {food} with you.", +}) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -260,344 +231,286 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "portal") then - npcHandler:say( - { - "It seems to emanate a magical call or pulse that draws all sorts of creatures to it - no offense meant. \z + npcHandler:say({ + "It seems to emanate a magical call or pulse that draws all sorts of creatures to it - no offense meant. \z When we first found it, we were flabbergasted - we thought maybe a mad sorcerer had built it, \z or a cult, to summon something evil. ...", - "But we didn't find any conclusive hints. \z + "But we didn't find any conclusive hints. \z {Menesto} and a few others volunteered to guard the portal from the {monsters} of this isle. \z You say you came through it from your world! Astounding. ...", - "You couldn't have chosen a better time. \z + "You couldn't have chosen a better time. \z We really need help against the monsters that swarm this island, and the whole world of {Tibia}. \z - If you're unsure on how to {help} exactly, I can give you directions." - }, - npc, creature, 10) + If you're unsure on how to {help} exactly, I can give you directions.", + }, npc, creature, 10) elseif MsgContains(message, "menesto") then - npcHandler:say( - { - "Hasn't been with us for very long. Very interested in all things mystical, \z + npcHandler:say({ + "Hasn't been with us for very long. Very interested in all things mystical, \z so Menesto was sent down to guard the strange crystal {portal} we found here. ...", - "... But of course, you met him. ... So it really is a portal, and you came through it \z + "... But of course, you met him. ... So it really is a portal, and you came through it \z from another plane of existence! I never quite believed the tales of old, not really. \z But now... it's wonderful, truly wonderful. ...", - "Well, if you have any questions as to THIS plane of existence, which we call {Tibia}, just ask me. \z - I can give directions, {hints}, you name it. " - }, - npc, creature, 10) + "Well, if you have any questions as to THIS plane of existence, which we call {Tibia}, just ask me. \z + I can give directions, {hints}, you name it. ", + }, npc, creature, 10) elseif MsgContains(message, "play") then - npcHandler:say( - { - "Our world {Tibia} is swarmed by many dangerous {monsters}, so {fighting} is something you will \z + npcHandler:say({ + "Our world {Tibia} is swarmed by many dangerous {monsters}, so {fighting} is something you will \z have to learn and master quickly. You can fight as a {sorcerer}, druid, {paladin} or {knight}. ...", - "We need your help in keeping the monsters at bay - walk out of one of the four gates here, \z + "We need your help in keeping the monsters at bay - walk out of one of the four gates here, \z and you will receive one of the four {vocations} and its gear to try out and fight monsters. ...", - "{Dawnport} is just a small, but dangerous island. You will have to reach level 8 at least and \z + "{Dawnport} is just a small, but dangerous island. You will have to reach level 8 at least and \z choose your definite vocation before you can leave for the {mainland}. To reach level 8, you \z will have to fight some monsters in order to progress. ... ", - "Fighting is essential in Tibia, and though Dawnport is quite safe in comparison to the mainland, \z + "Fighting is essential in Tibia, and though Dawnport is quite safe in comparison to the mainland, \z be careful not to die, as {dying} HURTS. ...", - "If you have any other questions, tell me." - }, - npc, creature, 10) + "If you have any other questions, tell me.", + }, npc, creature, 10) elseif MsgContains(message, "combat") then - npcHandler:say( - { - "There are many dangers in {Tibia}. You may have to defend yourself not only against {monsters}, \z + npcHandler:say({ + "There are many dangers in {Tibia}. You may have to defend yourself not only against {monsters}, \z but if {PvP} is allowed, against other {players}, too. ...", - "To attack, click on your chosen target in the battle list. \z + "To attack, click on your chosen target in the battle list. \z A red frame will show you which target you are currently attacking. ...", - "To automatically follow your target, click on 'Chase Opponent' in your combat controls - the top left button. ...", - "You can also define your attack and defense mode, by selecting {offensive}, {balanced} or {defensive} fighting." - }, - npc, creature, 10) + "To automatically follow your target, click on 'Chase Opponent' in your combat controls - the top left button. ...", + "You can also define your attack and defense mode, by selecting {offensive}, {balanced} or {defensive} fighting.", + }, npc, creature, 10) elseif MsgContains(message, "pvp") then - npcHandler:say( - { - "Depending on the world you chose in {Tibia}, {players} may attack you at all times or only if you consent. ...", - "On an Optional PvP world, PvP is only possible if both players consent to it; \z + npcHandler:say({ + "Depending on the world you chose in {Tibia}, {players} may attack you at all times or only if you consent. ...", + "On an Optional PvP world, PvP is only possible if both players consent to it; \z but on Open PvP or Hardcore PvP worlds, any player may always attack you, so be watchful. ...", - "A brown frame around a player indicates he or she is in a PvP situation. \z + "A brown frame around a player indicates he or she is in a PvP situation. \z A {skull} next to a player name means he or she attacked or killed another player. ...", - "Here on {Dawnport}, PvP is not allowed inside the outpost, \z - and not possible until you have reached level 8 at least. If you have any other questions, tell me." - }, - npc, creature, 10) + "Here on {Dawnport}, PvP is not allowed inside the outpost, \z + and not possible until you have reached level 8 at least. If you have any other questions, tell me.", + }, npc, creature, 10) elseif MsgContains(message, "players") then - npcHandler:say( - { - "To chat with other players, you can click on one of the chat channels and see who is posting in there. ...", - "If you want to message a specific player, right-click on his or her name and select \z - 'Message to '. This will open up a chat channel where you can type in your message to him or her." - }, - npc, creature, 10) + npcHandler:say({ + "To chat with other players, you can click on one of the chat channels and see who is posting in there. ...", + "If you want to message a specific player, right-click on his or her name and select \z + 'Message to '. This will open up a chat channel where you can type in your message to him or her.", + }, npc, creature, 10) elseif MsgContains(message, "npc") then - npcHandler:say( - { - "NPC means someone like me or {Hamish} or {Coltrayne}, for example. \z + npcHandler:say({ + "NPC means someone like me or {Hamish} or {Coltrayne}, for example. \z You can easily discern us from {players} like you, because there is a speech bubble next to our {name}. ...", - "We all have our different ways, but normally, addressing an NPC with 'hi' or \z + "We all have our different ways, but normally, addressing an NPC with 'hi' or \z 'hello' will open a conversation. ...", - "Some NPCs will have secret words that they react to that are not highlighted in their conversation. \z + "Some NPCs will have secret words that they react to that are not highlighted in their conversation. \z In that case, you need to type in your question. ...", - "To do so, open the NPC Chat Channel and click on the empty space below the NPCs dialogue, and start typing. ...", - "You can try this out by asking an NPC about their {job}, as this is a keyword most will react to. \z - If you have any other questions, tell me." - }, - npc, creature, 10) + "To do so, open the NPC Chat Channel and click on the empty space below the NPCs dialogue, and start typing. ...", + "You can try this out by asking an NPC about their {job}, as this is a keyword most will react to. \z + If you have any other questions, tell me.", + }, npc, creature, 10) elseif MsgContains(message, "spells") then - npcHandler:say( - { - "Every vocation has specific spells that can only be used if you have that vocation. \z + npcHandler:say({ + "Every vocation has specific spells that can only be used if you have that vocation. \z Sorcerers and druids of course rely heavily on spells, while knights only have a few at their disposal. ...", - "As an adventurer in training, you have a few spells at your disposal at the beginning, \z + "As an adventurer in training, you have a few spells at your disposal at the beginning, \z but more will become available as you progress. ...", - "Once you're level 8, new spells become available upstairs at the spell trainers {Garamond} and {Tybald}. \z - They can tell you more." - }, - npc, creature, 10) + "Once you're level 8, new spells become available upstairs at the spell trainers {Garamond} and {Tybald}. \z + They can tell you more.", + }, npc, creature, 10) elseif MsgContains(message, "shovel") then - npcHandler:say( - { - "Second best thing to a rope - a shovel will reveal secret entrances buried \z + npcHandler:say({ + "Second best thing to a rope - a shovel will reveal secret entrances buried \z under loose stone piles, or under sand, or earth... you will see! ...", - "Shovels can be bought at {Richard}'s, like the other equipment, or food. \z + "Shovels can be bought at {Richard}'s, like the other equipment, or food. \z If you don't have the money yet, go out and kill some {monsters} outside - \z - and maybe you'll even find a shovel, who knows!" - }, - npc, creature, 10) + and maybe you'll even find a shovel, who knows!", + }, npc, creature, 10) elseif MsgContains(message, "dawnport") then - npcHandler:say( - { - "We found the island following a strange glow we saw at night, close before dawn. \z + npcHandler:say({ + "We found the island following a strange glow we saw at night, close before dawn. \z We were looking for a source of unknown, powerful magic, and it seemed that this island was its source. ...", - "When we arrived, we found goblins, minotaurs, trolls and undead warring on this island. \z + "When we arrived, we found goblins, minotaurs, trolls and undead warring on this island. \z We wondered why. Then they seemed to reach an agreement, and settled down in the caves. \z We decided to investigate. ...", - "That is when we found the strange crystal {portal}, through which you came. \z + "That is when we found the strange crystal {portal}, through which you came. \z Perhaps this is why the {monsters} battle, but won't leave. ...", - "It certainly is a place of power, so {Menesto}'s group was sent down to guard it. \z + "It certainly is a place of power, so {Menesto}'s group was sent down to guard it. \z However, we are but few, so we need every help we can get to defend and maintain the outpost on this isle. ...", - "That is why we need your help - choose the vocation that suits you, take up its arms and help us \z - defend this place against the evil that wants to claim it! If you need any help in how to do these things, ask me." - }, - npc, creature, 10) + "That is why we need your help - choose the vocation that suits you, take up its arms and help us \z + defend this place against the evil that wants to claim it! If you need any help in how to do these things, ask me.", + }, npc, creature, 10) elseif MsgContains(message, "mainland") then - npcHandler:say( - { - "The mainland harbours the most ancient cities of {Tibia}, and many dangers and adventures as well. \z + npcHandler:say({ + "The mainland harbours the most ancient cities of {Tibia}, and many dangers and adventures as well. \z When you have helped us defend {Dawnport}, and learned enough of the ways of Tibia to \z reach level 8 at least, you should leave for the mainland. ...", - "There you can continue to battle evil - and believe me, there is much of that in our world, alas. ...", - "Premium adventurers can also sail to the many islands that surround the mainland, which offer many more dangers \z - and mysteries to be explored; and you can do quests to ride mounts, and dress in a variety of new outfits." - }, - npc, creature, 10) + "There you can continue to battle evil - and believe me, there is much of that in our world, alas. ...", + "Premium adventurers can also sail to the many islands that surround the mainland, which offer many more dangers \z + and mysteries to be explored; and you can do quests to ride mounts, and dress in a variety of new outfits.", + }, npc, creature, 10) elseif MsgContains(message, "figthing") then - npcHandler:say( - { - "Go through one of the open gates on this floor and you will be equipped with \z + npcHandler:say({ + "Go through one of the open gates on this floor and you will be equipped with \z training weapons and {spells} of a specific vocation. ...", - "There are four vocations in Tibia: {knight}, {druid}, {paladin} and {sorcerer}. \z + "There are four vocations in Tibia: {knight}, {druid}, {paladin} and {sorcerer}. \z Each one has its unique abilities, strengths and weaknesses. \z Just try them out to see which one suits you best. ...", - "We need your help in our battle. Fight {monsters} to gain experience and better {skills}, \z + "We need your help in our battle. Fight {monsters} to gain experience and better {skills}, \z until you reach level 8 at least. Make sure you always have not only a weapon, \z but a {rope} with you, as well! ...", - "Once you reached level 8 or more, you have to choose one vocation as your definite vocation \z + "Once you reached level 8 or more, you have to choose one vocation as your definite vocation \z before you can leave for the Tibian {mainland}, where more dangers await you. ... ", - "To choose your definite vocation, talk to {Oressa} downstairs in the {temple}. \z + "To choose your definite vocation, talk to {Oressa} downstairs in the {temple}. \z She can also heal you if you are severely wounded or poisoned - just say 'heal' or 'help' to her. ...", - "If you have any other questions, tell me." - }, - npc, creature, 10) + "If you have any other questions, tell me.", + }, npc, creature, 10) elseif MsgContains(message, "vocations") then - npcHandler:say( - { - "A vocation is your profession and chosen destiny, rolled into one. \z + npcHandler:say({ + "A vocation is your profession and chosen destiny, rolled into one. \z There are four vocations in {Tibia}: {knight}, {sorcerer}, {paladin} or {druid}. \z Each vocation has its unique special abilities with which to fight evil. ...", - "You need to choose your vocation before you can leave {Dawnport} to go to the {Mainland}. \z + "You need to choose your vocation before you can leave {Dawnport} to go to the {Mainland}. \z But first, you have to gain enough experience to reach level 8 in order to do so. ...", - "Once you've reached level 8 and want to choose your definite vocation, \z + "Once you've reached level 8 and want to choose your definite vocation, \z talk to {Oressa} downstairs in the temple. She can also heal you if you are hurt or poisoned. ...", - "If you have any other questions, tell me." - }, - npc, creature, 10) + "If you have any other questions, tell me.", + }, npc, creature, 10) elseif MsgContains(message, "help") then - npcHandler:say( - { - "I can give you directions how to {play}, some basic survival and {combat} tips, or explain {PvP}, ...", - "I can also tell you how to talk with other {players} or {NPC}s, \z + npcHandler:say({ + "I can give you directions how to {play}, some basic survival and {combat} tips, or explain {PvP}, ...", + "I can also tell you how to talk with other {players} or {NPC}s, \z or can inform you about {questing} or {spells}. ...", - "I also have a list of small {hints} if you prefer that, and can tell you something of the {people} here. \z + "I also have a list of small {hints} if you prefer that, and can tell you something of the {people} here. \z Just tell me what you want to know. ...", - "Oh, but first that help I mentioned - you should get yourself a {shovel}, friend. \z + "Oh, but first that help I mentioned - you should get yourself a {shovel}, friend. \z It will come in handy when you set about finding secret entrances to dungeons or hidden treasures - \z - many useful things lie hidden beneath earth, sand or stones! " - }, - npc, creature, 10) + many useful things lie hidden beneath earth, sand or stones! ", + }, npc, creature, 10) elseif MsgContains(message, "offensive") then - npcHandler:say( - { - "Offensive {fighting} means you deal harder attacks, but have a weaker defense. \z + npcHandler:say({ + "Offensive {fighting} means you deal harder attacks, but have a weaker defense. \z Magical damage you deal is not affected by this. ...", - "You should switch to offensive only if you want to finish off a monster quickly \z + "You should switch to offensive only if you want to finish off a monster quickly \z and are sure you can survive its harder attacks. \z - I can also tell you something about {balanced} and {defensive} fighting." - }, - npc, creature, 10) + I can also tell you something about {balanced} and {defensive} fighting.", + }, npc, creature, 10) elseif MsgContains(message, "balanced") then - npcHandler:say( - { - "Balanced {fighting} balances out your attack strength as well as your defense strength. \z + npcHandler:say({ + "Balanced {fighting} balances out your attack strength as well as your defense strength. \z Magical damage you deal is not affected by this. ...", - "I can also tell you something about {offensive} and {defensive} fighting." - }, - npc, creature, 10) + "I can also tell you something about {offensive} and {defensive} fighting.", + }, npc, creature, 10) elseif MsgContains(message, "defensive") then - npcHandler:say( - { - "Defensive {fighting} increases your defense but reduces your attack strength. \z + npcHandler:say({ + "Defensive {fighting} increases your defense but reduces your attack strength. \z The magical damage you deal is not affected by this. ...", - "I can also tell you something about {offensive} and {balanced} fighting." - }, - npc, creature, 10) + "I can also tell you something about {offensive} and {balanced} fighting.", + }, npc, creature, 10) elseif MsgContains(message, "skull") then - npcHandler:say( - { - "A white skull means that this player attacked and maybe killed another player without justification. ...", - "A red skull means someone has killed many other {players}, while a black skull depicts \z - someone on a serious killing spree - so watch out!" - }, - npc, creature, 10) + npcHandler:say({ + "A white skull means that this player attacked and maybe killed another player without justification. ...", + "A red skull means someone has killed many other {players}, while a black skull depicts \z + someone on a serious killing spree - so watch out!", + }, npc, creature, 10) elseif MsgContains(message, "hamish") then - npcHandler:say( - { - "Some sort of misguided genius, I think. Brilliant with potions and runes, \z + npcHandler:say({ + "Some sort of misguided genius, I think. Brilliant with potions and runes, \z but couldn't get on with his master or with the other students. \z Ran away and set up his own little lab, selling to travellers along the road. ...", - "Was robbed and left for dead by some plunderers, when Morris found him. \z + "Was robbed and left for dead by some plunderers, when Morris found him. \z {Morris} patched him up and said he could use him, so Hamish came here. \z - If you need a wand, rune or potion, Hamish's your man." - }, - npc, creature, 10) + If you need a wand, rune or potion, Hamish's your man.", + }, npc, creature, 10) elseif MsgContains(message, "coltrayne") then - npcHandler:say( - { - "Coltrayne doesn't say much about himself. What I gathered from the 15 years \z + npcHandler:say({ + "Coltrayne doesn't say much about himself. What I gathered from the 15 years \z I've known him is that he was raised by a blacksmith as a foundling. ...", - "When a fire destroyed his foster family's home, he took up an unsteady life, always wandering around. \z - Then he met {Morris} and decided to go adventuring with him." - }, - npc, creature, 10) + "When a fire destroyed his foster family's home, he took up an unsteady life, always wandering around. \z + Then he met {Morris} and decided to go adventuring with him.", + }, npc, creature, 10) elseif MsgContains(message, "morris") then - npcHandler:say( - { - "Ah, there are lots of stories about Morris. Likes to insist on the 'Mr'. Nobody knows his first name, \z + npcHandler:say({ + "Ah, there are lots of stories about Morris. Likes to insist on the 'Mr'. Nobody knows his first name, \z and the telling goes that he has gambled with a demon and lost his first name to him. ...", - "The demon is said to have set Morris free so he can reclaim him at the end of his life, \z + "The demon is said to have set Morris free so he can reclaim him at the end of his life, \z meanwhile having fun watching Morris struggle through hardship and adventures. ...", - "Anyway. One way or another, Morris picked us all up and gathered us here. \z + "Anyway. One way or another, Morris picked us all up and gathered us here. \z Not sure that sending others on missions is really all it's about for him, \z - but if you're looking for a quest, go ask Morris for one." - }, - npc, creature, 10) + but if you're looking for a quest, go ask Morris for one.", + }, npc, creature, 10) elseif MsgContains(message, "skills") then - npcHandler:say( - { - "Not your level, but your skill with your weapon determines how much damage you make. \z + npcHandler:say({ + "Not your level, but your skill with your weapon determines how much damage you make. \z With a distance weapon like a bow, you {train} your distance {fighting} skill, \z with a sword your sword fighting, etc. ...", - "Druids and sorcerers train their magic level by using their mana through {spells} and runes. \z - Their wand or rod damage is not affected by their magic level. If you have any other questions, tell me." - }, - npc, creature, 10) + "Druids and sorcerers train their magic level by using their mana through {spells} and runes. \z + Their wand or rod damage is not affected by their magic level. If you have any other questions, tell me.", + }, npc, creature, 10) elseif MsgContains(message, "rope") then - npcHandler:say( - { - "You should never leave without a rope. NEVER. A rope can save your life. \z + npcHandler:say({ + "You should never leave without a rope. NEVER. A rope can save your life. \z I once fell down into a poison spider lair - without a rope, I wouldn't be standing here today! ...", - "You can buy a rope over at {Richard}'s shop. \z + "You can buy a rope over at {Richard}'s shop. \z If you don't have the money, kill and loot a few {monsters} - maybe one of them \z - even has a rope with it, that sort of thing happens." - }, - npc, creature, 10) + even has a rope with it, that sort of thing happens.", + }, npc, creature, 10) elseif MsgContains(message, "oressa") then - npcHandler:say( - { - "Our local healer. Don't know why that druid girl decided she wanted the unsteady life of an \z + npcHandler:say({ + "Our local healer. Don't know why that druid girl decided she wanted the unsteady life of an \z adventurer, but she's quite hardy, to tell the truth. I once saw her confront a polar bear.... \z but I'm getting carried away. ...", - "If you need healing, go see her. Oressa can also help you decide if you want to \z - choose your vocation to leave for the {Mainland}." - }, - npc, creature, 10) + "If you need healing, go see her. Oressa can also help you decide if you want to \z + choose your vocation to leave for the {Mainland}.", + }, npc, creature, 10) elseif MsgContains(message, "temple") then - npcHandler:say( - { - "When you die, you will be resurrected in the temple of the city you chose as your home. \z + npcHandler:say({ + "When you die, you will be resurrected in the temple of the city you chose as your home. \z Temple {NPC}s, like {Oressa} here on {Dawnport}, can heal you if you're wounded or poisoned. \z Some special temple NPCs can also {bless} you. ...", - "To be fully blessed, you should start the Pilgrimage of Ashes at a local guide in the \z - harbour once you have reached the {mainland}." - }, - npc, creature, 10) + "To be fully blessed, you should start the Pilgrimage of Ashes at a local guide in the \z + harbour once you have reached the {mainland}.", + }, npc, creature, 10) elseif MsgContains(message, "dying") then - npcHandler:say( - { - "Don't be deceived by its sweet looks - {Tibia} is a rough world. \z + npcHandler:say({ + "Don't be deceived by its sweet looks - {Tibia} is a rough world. \z If you die, you will lose skill and experience and perhaps even some items, \z and other {players} can rob your corpse. ...", - "On the {Mainland}, you can buy blessings from {temple} {NPC}s to prevent item loss, \z + "On the {Mainland}, you can buy blessings from {temple} {NPC}s to prevent item loss, \z but you will always lose some {skills} and experience, so be careful. ...", - "Always have a {rope} with you, for a start. A rope is essential." - }, - npc, creature, 10) + "Always have a {rope} with you, for a start. A rope is essential.", + }, npc, creature, 10) elseif MsgContains(message, "druid spells") then - npcHandler:say( - { - "Every vocation has specific {spells} that can only be used if you have that vocation. \z + npcHandler:say({ + "Every vocation has specific {spells} that can only be used if you have that vocation. \z Sorcerers and druids of course rely heavily on spells, \z while knights only have a few at their disposal. ...", - "As an adventurer in training, you have a few spells at your disposal at the beginning, \z + "As an adventurer in training, you have a few spells at your disposal at the beginning, \z but more will become available as you progress. ...", - "Once you're level 8, new spells become available upstairs at the spell trainers {Garamond} and {Tybald}. \z - They can tell you more." - }, - npc, creature, 10) + "Once you're level 8, new spells become available upstairs at the spell trainers {Garamond} and {Tybald}. \z + They can tell you more.", + }, npc, creature, 10) elseif MsgContains(message, "train") then - npcHandler:say( - { - "Go through one of the open gates on this floor and you will be equipped with \z + npcHandler:say({ + "Go through one of the open gates on this floor and you will be equipped with \z training weapons and {spells} of a specific vocation. ...", - "There are four {vocations} in Tibia: {knight}, {sorcerer}, {paladin} or {druid}. \z + "There are four {vocations} in Tibia: {knight}, {sorcerer}, {paladin} or {druid}. \z Each one has its unique abilities, strengths and weaknesses. \z Just try them out to see which one suits you best. ...", - "We need your help in our battle. \z + "We need your help in our battle. \z Fight {monsters} to gain experience and better {skills}, until you reach level 8 at least. \z Make sure you always have not only a weapon, but a {rope} with you, as well! ...", - "Once you reached level 8 or more, you have to choose one vocation as your definite \z + "Once you reached level 8 or more, you have to choose one vocation as your definite \z vocation before you can leave for the Tibian {mainland}, where more dangers await you. ...", - "To choose your definite vocation, talk to {Oressa} downstairs in the {temple}. \z + "To choose your definite vocation, talk to {Oressa} downstairs in the {temple}. \z She can also heal you if you are severely wounded or poisoned - just say 'heal' or 'help' to her. ...", - "If you have any other questions, tell me." - }, - npc, creature, 10) + "If you have any other questions, tell me.", + }, npc, creature, 10) elseif MsgContains(message, "bless") then - npcHandler:say( - { - "The blessings of the gods will protect you from item loss and alleviate the skill \z + npcHandler:say({ + "The blessings of the gods will protect you from item loss and alleviate the skill \z and experience loss when you die. \z But you will have to undertake the Pilgrimage of Ashes on the {mainland} to get the blessings. ...", - "If you die in a fight from a monster's attack, your blessings will be lost, \z + "If you die in a fight from a monster's attack, your blessings will be lost, \z and you will have to get them again. ...", - "There is also a blessing that will protect you specifically from losses in a {PvP} fight. \z + "There is also a blessing that will protect you specifically from losses in a {PvP} fight. \z This blessing you will need to get again when you have been killed in a PvP fight. ...", - "Here on {Dawnport}, you are protected from losses in a PvP fight by the Adventurer's Blessing - \z - unless you attack another player. If you attack another player or reach level 20, you will lose this blessing." - }, - npc, creature, 10) + "Here on {Dawnport}, you are protected from losses in a PvP fight by the Adventurer's Blessing - \z + unless you attack another player. If you attack another player or reach level 20, you will lose this blessing.", + }, npc, creature, 10) elseif MsgContains(message, "hints") then for i = 0, 35, 1 do if i <= 35 then @@ -608,23 +521,25 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "rookgaard") and player:getLevel() <= 9 then if Player.getAccountStorage(player, Storage.Dawnport.Mainland, true) == 1 then - npcHandler:say("Hmmm. Long time I visited that isle. Not very exciting place. \z - Why do you ask? Do you wish to go there?", npc, creature) + npcHandler:say( + "Hmmm. Long time I visited that isle. Not very exciting place. \z + Why do you ask? Do you wish to go there?", + npc, + creature + ) npcHandler:setTopic(playerId, 1) else - npcHandler:say( - "I'm sorry, but I cannot let you go there, you'll get much better training here than on that ancient isle.", npc, creature) + npcHandler:say("I'm sorry, but I cannot let you go there, you'll get much better training here than on that ancient isle.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Careful, careful, it's a one-way ticket only! \z You can never come back here if you leave now, and you will loso all your Dawnport equipment and products! ...", - "Are you {SURE} you want to {LEAVE} Dawnport for ROOKGAARD?" + "Are you {SURE} you want to {LEAVE} Dawnport for ROOKGAARD?", }, npc, creature, 10) npcHandler:setTopic(playerId, 2) - elseif npcHandler:getTopic(playerId) == 2 and MsgContains(message, "yes") - or MsgContains(message, "sure") or MsgContains(message, "leave") then + elseif npcHandler:getTopic(playerId) == 2 and MsgContains(message, "yes") or MsgContains(message, "sure") or MsgContains(message, "leave") then local town = Town(TOWNS_LIST.ROOKGAARD) player:setTown(town) -- Change to none vocation, convert magic level and skills and set proper stats @@ -633,7 +548,15 @@ local function creatureSayCallback(npc, creature, type, message) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) local slots = { - 1, 2, 4, 5, 6, 7, 8, 9, 10 + 1, + 2, + 4, + 5, + 6, + 7, + 8, + 9, + 10, } -- Cycle through the slots table and store the slot id in slot for index, value in pairs(slots) do @@ -647,7 +570,10 @@ local function creatureSayCallback(npc, creature, type, message) local container = player:getSlotItem(CONST_SLOT_BACKPACK) local toBeDeleted = {} local allowedIds = { - 2853, 2920, 3003, 3031 + 2853, + 2920, + 3003, + 3031, } if container and container:getSize() > 0 then for i = 0, container:getSize() do @@ -658,7 +584,7 @@ local function creatureSayCallback(npc, creature, type, message) if item then ---@diagnostic disable-next-line: undefined-field if not table.contains(allowedIds, item:getId()) then - toBeDeleted[#toBeDeleted+1] = item.uid + toBeDeleted[#toBeDeleted + 1] = item.uid end end end @@ -676,8 +602,12 @@ local function creatureSayCallback(npc, creature, type, message) player:addItem(2920, 1) player:addItem(3585, 1) player:addItem(3561, 1) - npcHandler:say("Then so be it. I'm sorry to see you go, but if this is what you want, step this way... right. \z - Now, cover your eyes... GO!", npc, creature) + npcHandler:say( + "Then so be it. I'm sorry to see you go, but if this is what you want, step this way... right. \z + Now, cover your eyes... GO!", + npc, + creature + ) npcHandler:setTopic(playerId, 0) end return true diff --git a/data-otservbr-global/npc/inkaef.lua b/data-otservbr-global/npc/inkaef.lua index b3d153c96df..0eb80c87490 100644 --- a/data-otservbr-global/npc/inkaef.lua +++ b/data-otservbr-global/npc/inkaef.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 0, lookFeet = 86, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,7 +52,7 @@ end local items = { [VOCATION.BASE_ID.SORCERER] = 3074, - [VOCATION.BASE_ID.DRUID] = 3066 + [VOCATION.BASE_ID.DRUID] = 3066, } local function creatureSayCallback(npc, creature, type, message) @@ -64,26 +64,26 @@ local function creatureSayCallback(npc, creature, type, message) end local itemId = items[player:getVocation():getBaseId()] - if MsgContains(message, 'first rod') or MsgContains(message, 'first wand') then + if MsgContains(message, "first rod") or MsgContains(message, "first wand") then if player:isMage() then if player:getStorageValue(Storage.FirstMageWeapon) == -1 then - npcHandler:say('So you ask me for a {' .. ItemType(itemId):getName() .. '} to begin your adventure?', npc, creature) + npcHandler:say("So you ask me for a {" .. ItemType(itemId):getName() .. "} to begin your adventure?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('What? I have already gave you one {' .. ItemType(itemId):getName() .. '}!', npc, creature) + npcHandler:say("What? I have already gave you one {" .. ItemType(itemId):getName() .. "}!", npc, creature) end else - npcHandler:say('Sorry, you aren\'t a druid either a sorcerer.', npc, creature) + npcHandler:say("Sorry, you aren't a druid either a sorcerer.", npc, creature) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then player:addItem(itemId, 1) - npcHandler:say('Here you are young adept, take care yourself.', npc, creature) + npcHandler:say("Here you are young adept, take care yourself.", npc, creature) player:setStorageValue(Storage.FirstMageWeapon, 1) end npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 1 then + npcHandler:say("Ok then.", npc, creature) npcHandler:setTopic(playerId, 0) end return true @@ -166,7 +166,7 @@ npcConfig.shop = { { itemName = "white tapestry", clientId = 2667, buy = 25 }, { itemName = "wooden chair", clientId = 2777, buy = 15 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -177,7 +177,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/iptar-sin.lua b/data-otservbr-global/npc/iptar-sin.lua index 13e5788c02f..41fad376a4a 100644 --- a/data-otservbr-global/npc/iptar-sin.lua +++ b/data-otservbr-global/npc/iptar-sin.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 3, lookFeet = 79, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,118 +51,139 @@ npcType.onCloseChannel = function(npc, creature) end -- Wooden Stake Quest -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = { - 'A blessed stake to defeat evil spirits? I do know an old prayer which is said to grant sacred power and to be able to bind this power to someone, or something. ...', - 'However, this prayer needs the combined energy of ten priests. Each of them has to say one line of the prayer. ...', - 'I could start with the prayer, but since the next priest has to be in a different location, you probably will have to travel a lot. ...', - 'Is this stake really important enough to you so that you are willing to take this burden?', - } -}, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == -1 end -) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Alright, I guess you need a stake first. Maybe Gamon can help you, the leg of a chair or something could just do. Try asking him for a stake, and if you have one, bring it back to me.', reset = true, ungreet = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.DefaultStart, 1) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 1) - end) + "A blessed stake to defeat evil spirits? I do know an old prayer which is said to grant sacred power and to be able to bind this power to someone, or something. ...", + "However, this prayer needs the combined energy of ten priests. Each of them has to say one line of the prayer. ...", + "I could start with the prayer, but since the next priest has to be in a different location, you probably will have to travel a lot. ...", + "Is this stake really important enough to you so that you are willing to take this burden?", + }, +}, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == -1 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Alright, I guess you need a stake first. Maybe Gamon can help you, the leg of a chair or something could just do. Try asking him for a stake, and if you have one, bring it back to me.", reset = true, ungreet = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.DefaultStart, 1) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 1) +end) -- First prayer -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'I guess you couldn\'t convince Gamon to give you a stake, eh?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 1 and player:getItemCount(5941) == 0 end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "I guess you couldn't convince Gamon to give you a stake, eh?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 1 and player:getItemCount(5941) == 0 +end) -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I was informed what to do. Are you prepared to receive my line of the prayer?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 1 end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive my prayer: \'Light shall be near - and darkness afar\'. Now, bring your stake to Tibra in the Carlin church for the next line of the prayer. I will inform her what to do.', reset = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 2) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - end -) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'I will wait for you.', reset = true }) +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I was informed what to do. Are you prepared to receive my line of the prayer?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 1 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive my prayer: 'Light shall be near - and darkness afar'. Now, bring your stake to Tibra in the Carlin church for the next line of the prayer. I will inform her what to do.", reset = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 2) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "I will wait for you.", reset = true }) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You should visit Tibra in the Carlin church now.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 2 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You already received my line of the prayer.' }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You should visit Tibra in the Carlin church now." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 2 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You already received my line of the prayer." }) -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Quentin) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Quentin) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Quentin, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free or you want the {adventurer stone}?') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free or you want the {adventurer stone}?") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/irea.lua b/data-otservbr-global/npc/irea.lua index 79c76c10363..a9965210983 100644 --- a/data-otservbr-global/npc/irea.lua +++ b/data-otservbr-global/npc/irea.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 64 + lookType = 64, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -62,7 +62,7 @@ npcConfig.shop = { { itemName = "crossbow", clientId = 3349, buy = 500 }, { itemName = "quiver", clientId = 35562, buy = 400 }, { itemName = "red quiver", clientId = 35849, buy = 400 }, - { itemName = "spear", clientId = 3277, buy = 10 } + { itemName = "spear", clientId = 3277, buy = 10 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -73,7 +73,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/iriana.lua b/data-otservbr-global/npc/iriana.lua index 911ae63b305..5fffba86fa9 100644 --- a/data-otservbr-global/npc/iriana.lua +++ b/data-otservbr-global/npc/iriana.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 78, lookBody = 116, lookLegs = 95, - lookFeet = 121 + lookFeet = 121, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,7 +55,7 @@ npcConfig.shop = { { itemName = "backpack", clientId = 2854, buy = 10 }, { itemName = "bag", clientId = 2853, buy = 4 }, { itemName = "fishing rod", clientId = 3483, buy = 150 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -66,7 +66,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/irmana.lua b/data-otservbr-global/npc/irmana.lua index f8686355727..6edfdf0d2e3 100644 --- a/data-otservbr-global/npc/irmana.lua +++ b/data-otservbr-global/npc/irmana.lua @@ -16,17 +16,16 @@ npcConfig.outfit = { lookBody = 90, lookLegs = 13, lookFeet = 14, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) - npcType.onAppear = function(npc, creature) npcHandler:onAppear(npc, creature) end @@ -53,12 +52,11 @@ local function creatureSayCallback(npc, creature, type, message) local playerId = player:getId() if MsgContains(message, "fur") then - if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 7 - and player:getStorageValue(ThreatenedDreams.Mission01.PoacherNotes) == 1 then + if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 7 and player:getStorageValue(ThreatenedDreams.Mission01.PoacherNotes) == 1 then npcHandler:say({ "A wolf whelp fur? Well, some months ago a hunter came here - a rather scruffy, smelly guy. I would have thrown him out instantly, but he had to offer some fine pelts. One of them was the fur of a very young wolf. ...", "I was not delighted that he obviously killed such a young animal. When I confronted him, he said he wanted to raise it as a companion but it unfortunately died. A sad story. In the end, I bought some of his pelts, among them the whelp fur. ...", - "You can have it if this is important for you. I would sell it for 1000 gold. Are you interested?" + "You can have it if this is important for you. I would sell it for 1000 gold. Are you interested?", }, npc, creature) npcHandler:setTopic(playerId, 8) else @@ -66,7 +64,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "addon") then - if (getPlayerStorageValue(creature, Storage.Irmana1) < 1) then + if getPlayerStorageValue(creature, Storage.Irmana1) < 1 then npcHandler:say("Currently we are offering accessories for the nobleman - and, of course, noblewoman - outfit. Would you like to hear more about our offer?", npc, creature) npcHandler:setTopic(playerId, 1) elseif getPlayerStorageValue(creature, Storage.Irmana2) < 1 then @@ -80,7 +78,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Especially for you, mylady, we are offering a pretty {hat} and a beautiful {dress} like the ones I wear. Which one are you interested in?", npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 3 then - if (doPlayerRemoveMoney(creature, 150000) and getPlayerStorageValue(creature, Storage.Irmana1) < 1) then + if doPlayerRemoveMoney(creature, 150000) and getPlayerStorageValue(creature, Storage.Irmana1) < 1 then npcHandler:say("Congratulations! Here is your brand-new accessory, I hope you like it. Please visit us again! ", npc, creature) npcHandler:setTopic(playerId, 0) player:addOutfitAddon(140, 2) @@ -91,7 +89,7 @@ local function creatureSayCallback(npc, creature, type, message) end end elseif npcHandler:getTopic(playerId) == 4 then - if (doPlayerRemoveMoney(creature, 150000) and getPlayerStorageValue(creature, Storage.Irmana2) < 1) then + if doPlayerRemoveMoney(creature, 150000) and getPlayerStorageValue(creature, Storage.Irmana2) < 1 then npcHandler:say("Congratulations! Here is your brand-new accessory, I hope you like it. Please visit us again! ", npc, creature) npcHandler:setTopic(playerId, 0) player:addOutfitAddon(140, 1) @@ -104,29 +102,29 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 5 then if getPlayerItemCount(creature, 3566) >= 1 then doPlayerRemoveItem(creature, 3566, 1) - npcHandler:say("A {Red Robe}! Great. Here, take this red piece of cloth, I don\'t need it anyway.", npc, creature) + npcHandler:say("A {Red Robe}! Great. Here, take this red piece of cloth, I don't need it anyway.", npc, creature) doPlayerAddItem(creature, 5911, 1) npcHandler:setTopic(playerId, 0) else - npcHandler:say('Are you trying to mess with me?!', npc, creature) + npcHandler:say("Are you trying to mess with me?!", npc, creature) end elseif npcHandler:getTopic(playerId) == 6 then if getPlayerItemCount(creature, 3574) >= 1 then doPlayerRemoveItem(creature, 3574, 1) - npcHandler:say("A {Mystic Turban}! Great. Here, take this blue piece of cloth, I don\'t need it anyway.", npc, creature) + npcHandler:say("A {Mystic Turban}! Great. Here, take this blue piece of cloth, I don't need it anyway.", npc, creature) doPlayerAddItem(creature, 5912, 1) npcHandler:setTopic(playerId, 0) else - npcHandler:say('Are you trying to mess with me?!', npc, creature) + npcHandler:say("Are you trying to mess with me?!", npc, creature) end elseif npcHandler:getTopic(playerId) == 7 then if getPlayerItemCount(creature, 3563) >= 150 then doPlayerRemoveItem(creature, 3563, 150) - npcHandler:say("A 150 {Green Tunic}! Great. Here, take this green piece of cloth, I don\'t need it anyway.", npc, creature) + npcHandler:say("A 150 {Green Tunic}! Great. Here, take this green piece of cloth, I don't need it anyway.", npc, creature) doPlayerAddItem(creature, 5910, 1) npcHandler:setTopic(playerId, 0) else - npcHandler:say('Are you trying to mess with me?!', npc, creature) + npcHandler:say("Are you trying to mess with me?!", npc, creature) end elseif npcHandler:getTopic(playerId) == 8 then if player:getMoney() >= 1000 then @@ -136,40 +134,32 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(ThreatenedDreams.Mission01[1], 8) npcHandler:setTopic(playerId, 0) else - npcHandler:say('Are you trying to mess with me?!', npc, creature) + npcHandler:say("Are you trying to mess with me?!", npc, creature) end end elseif (MsgContains(message, "hat") or MsgContains(message, "accessory")) and (npcHandler:getTopic(playerId) == 2 and getPlayerStorageValue(creature, Storage.Irmana1) < 1) then - npcHandler:say( - { - "This accessory requires a small fee of 150000 gold pieces. Of course, we do not want to put you at any risk to be attacked while carrying this huge amount of money. ...", - "This is why we have established our brand-new instalment sale. You can choose to either pay the price at once, or if you want to be safe, by instalments of 10000 gold pieces. ...", - "I also have to inform you that once you started paying for one of the accessories, you have to finish the payment first before you can start paying for the other one, of course. ...", - "Are you interested in purchasing this accessory?" - }, - npc, - creature - ) + npcHandler:say({ + "This accessory requires a small fee of 150000 gold pieces. Of course, we do not want to put you at any risk to be attacked while carrying this huge amount of money. ...", + "This is why we have established our brand-new instalment sale. You can choose to either pay the price at once, or if you want to be safe, by instalments of 10000 gold pieces. ...", + "I also have to inform you that once you started paying for one of the accessories, you have to finish the payment first before you can start paying for the other one, of course. ...", + "Are you interested in purchasing this accessory?", + }, npc, creature) npcHandler:setTopic(playerId, 3) elseif (MsgContains(message, "dress") or MsgContains(message, "coat")) and (npcHandler:getTopic(playerId) == 2 and getPlayerStorageValue(creature, Storage.Irmana2) < 1) then - npcHandler:say( - { - "This accessory requires a small fee of 150000 gold pieces. Of course, we do not want to put you at any risk to be attacked while carrying this huge amount of money. ...", - "This is why we have established our brand-new instalment sale. You can choose to either pay the price at once, or if you want to be safe, by instalments of 10000 gold pieces. ...", - "I also have to inform you that once you started paying for one of the accessories, you have to finish the payment first before you can start paying for the other one, of course. ...", - "Are you interested in purchasing this accessory?" - }, - npc, - creature - ) + npcHandler:say({ + "This accessory requires a small fee of 150000 gold pieces. Of course, we do not want to put you at any risk to be attacked while carrying this huge amount of money. ...", + "This is why we have established our brand-new instalment sale. You can choose to either pay the price at once, or if you want to be safe, by instalments of 10000 gold pieces. ...", + "I also have to inform you that once you started paying for one of the accessories, you have to finish the payment first before you can start paying for the other one, of course. ...", + "Are you interested in purchasing this accessory?", + }, npc, creature) npcHandler:setTopic(playerId, 4) - elseif (MsgContains(message, "red robe")) then + elseif MsgContains(message, "red robe") then npcHandler:say("Have you found a {Red Robe} for me?", npc, creature) npcHandler:setTopic(playerId, 5) - elseif (MsgContains(message, "mystic turban")) then + elseif MsgContains(message, "mystic turban") then npcHandler:say("Have you found a {Mystic Turban} for me?", npc, creature) npcHandler:setTopic(playerId, 6) - elseif (MsgContains(message, "green tunic")) then + elseif MsgContains(message, "green tunic") then npcHandler:say("Have you found {150 Green Tunic} for me?", npc, creature) npcHandler:setTopic(playerId, 7) end @@ -223,7 +213,7 @@ npcConfig.shop = { { itemName = "white piece of cloth", clientId = 5909, sell = 100 }, { itemName = "winter wolf fur", clientId = 10295, sell = 20 }, { itemName = "wool", clientId = 10319, sell = 15 }, - { itemName = "yellow piece of cloth", clientId = 5914, sell = 150 } + { itemName = "yellow piece of cloth", clientId = 5914, sell = 150 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -234,7 +224,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/irvin.lua b/data-otservbr-global/npc/irvin.lua index c3b5b75c06e..83dea554d44 100644 --- a/data-otservbr-global/npc/irvin.lua +++ b/data-otservbr-global/npc/irvin.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 36, lookLegs = 116, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/ishebad.lua b/data-otservbr-global/npc/ishebad.lua index 2d03495ba1a..a1054ed3f0c 100644 --- a/data-otservbr-global/npc/ishebad.lua +++ b/data-otservbr-global/npc/ishebad.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 65 + lookType = 65, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -46,13 +46,13 @@ npcType.onCloseChannel = function(npc, creature) end -- Promotion -local promoteKeyword = keywordHandler:addKeyword({ 'promot' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want to be promoted in your vocation for 20000 gold?' }) -promoteKeyword:addChildKeyword({ 'yes' }, StdModule.promotePlayer, { npcHandler = npcHandler, level = 20, cost = 20000 }) -promoteKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Ok, whatever.', reset = true }) +local promoteKeyword = keywordHandler:addKeyword({ "promot" }, StdModule.say, { npcHandler = npcHandler, text = "Do you want to be promoted in your vocation for 20000 gold?" }) +promoteKeyword:addChildKeyword({ "yes" }, StdModule.promotePlayer, { npcHandler = npcHandler, level = 20, cost = 20000 }) +promoteKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Ok, whatever.", reset = true }) -npcHandler:setMessage(MESSAGE_GREET, 'Be mourned, pilgrim in flesh. Are you looking for a promotion?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|!') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye, |PLAYERNAME|!') +npcHandler:setMessage(MESSAGE_GREET, "Be mourned, pilgrim in flesh. Are you looking for a promotion?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|!") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/ishina.lua b/data-otservbr-global/npc/ishina.lua index fb80fd4681d..c82252356fb 100644 --- a/data-otservbr-global/npc/ishina.lua +++ b/data-otservbr-global/npc/ishina.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 9, lookLegs = 87, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,42 +58,41 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'outfit') then + if MsgContains(message, "outfit") then if player:getSex() == PLAYERSEX_MALE then - npcHandler:say('My jewelled belt? That\'s not very manly. Maybe you\'d prefer a scimitar like Habdel has.', npc, creature) + npcHandler:say("My jewelled belt? That's not very manly. Maybe you'd prefer a scimitar like Habdel has.", npc, creature) return true end if player:getStorageValue(Storage.OutfitQuest.firstOrientalAddon) < 1 then - npcHandler:say('My jewelled belt? Of course I could make one for you, but I have a small request. Would you fulfil a task for me?', npc, creature) + npcHandler:say("My jewelled belt? Of course I could make one for you, but I have a small request. Would you fulfil a task for me?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'comb') then + elseif MsgContains(message, "comb") then if player:getSex() == PLAYERSEX_MALE then - npcHandler:say('Comb? This is a jewellery shop.', npc, creature) + npcHandler:say("Comb? This is a jewellery shop.", npc, creature) return true end if player:getStorageValue(Storage.OutfitQuest.firstOrientalAddon) == 1 then - npcHandler:say('Have you brought me a mermaid\'s comb?', npc, creature) + npcHandler:say("Have you brought me a mermaid's comb?", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - 'Listen, um... I have been wanting a comb for a long time... not just any comb, but a mermaid\'s comb. Having a mermaid\'s comb means never having split ends again! ...', - 'You know what that means to a girl! Could you please bring me such a comb? I really would appreciate it.' + "Listen, um... I have been wanting a comb for a long time... not just any comb, but a mermaid's comb. Having a mermaid's comb means never having split ends again! ...", + "You know what that means to a girl! Could you please bring me such a comb? I really would appreciate it.", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then player:setStorageValue(Storage.OutfitQuest.DefaultStart, 1) player:setStorageValue(Storage.OutfitQuest.firstOrientalAddon, 1) - npcHandler:say('Yay! I will wait for you to return with a mermaid\'s comb then.', npc, creature) + npcHandler:say("Yay! I will wait for you to return with a mermaid's comb then.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then if not player:removeItem(5945, 1) then - npcHandler:say('No... that\'s not it.', npc, creature) + npcHandler:say("No... that's not it.", npc, creature) npcHandler:setTopic(playerId, 0) return true end @@ -102,24 +101,24 @@ local function creatureSayCallback(npc, creature, type, message) player:addOutfitAddon(150, 1) player:addOutfitAddon(146, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - npcHandler:say('Yeah! That\'s it! I can\'t wait to comb my hair! Oh - but first, I\'ll fulfil my promise: Here is your jewelled belt! Thanks again!', npc, creature) + npcHandler:say("Yeah! That's it! I can't wait to comb my hair! Oh - but first, I'll fulfil my promise: Here is your jewelled belt! Thanks again!", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) ~= 0 then - npcHandler:say('Oh... okay.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) ~= 0 then + npcHandler:say("Oh... okay.", npc, creature) npcHandler:setTopic(playerId, 0) end return true end -keywordHandler:addKeyword({ 'need' }, StdModule.say, { npcHandler = npcHandler, text = 'I am a jeweller. Maybe you want to have a look at my wonderful {offers}.' }) -keywordHandler:addKeyword({ 'offers' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, I sell gems and {goblets}. If you\'d like to see my offers, ask me for a {trade}.' }) -keywordHandler:addKeyword({ 'goblets' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, our newest import! We have golden goblets, silver goblets and bronze goblets. All of them have space for a hand-written dedication.' }) +keywordHandler:addKeyword({ "need" }, StdModule.say, { npcHandler = npcHandler, text = "I am a jeweller. Maybe you want to have a look at my wonderful {offers}." }) +keywordHandler:addKeyword({ "offers" }, StdModule.say, { npcHandler = npcHandler, text = "Well, I sell gems and {goblets}. If you'd like to see my offers, ask me for a {trade}." }) +keywordHandler:addKeyword({ "goblets" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, our newest import! We have golden goblets, silver goblets and bronze goblets. All of them have space for a hand-written dedication." }) -npcHandler:setMessage(MESSAGE_GREET, 'Be greeted, |PLAYERNAME|. Which of my fine gems do you {need}?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Daraman\'s blessings and good bye.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Daraman\'s blessings and good bye.') +npcHandler:setMessage(MESSAGE_GREET, "Be greeted, |PLAYERNAME|. Which of my fine gems do you {need}?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Daraman's blessings and good bye.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Daraman's blessings and good bye.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -177,7 +176,7 @@ npcConfig.shop = { { itemName = "violet crystal shard", clientId = 16120, sell = 1500 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, { itemName = "wedding ring", clientId = 3004, buy = 990 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -188,7 +187,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/isika.lua b/data-otservbr-global/npc/isika.lua index c8a54d27954..33b7091ce6b 100644 --- a/data-otservbr-global/npc/isika.lua +++ b/data-otservbr-global/npc/isika.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 6, lookLegs = 67, lookFeet = 49, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -76,7 +76,7 @@ npcConfig.shop = { { itemName = "spectral bolt", clientId = 35902, buy = 70 }, { itemName = "tarsal arrow", clientId = 14251, buy = 6 }, { itemName = "throwing star", clientId = 3287, buy = 42 }, - { itemName = "vortex bolt", clientId = 14252, buy = 6 } + { itemName = "vortex bolt", clientId = 14252, buy = 6 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -87,7 +87,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/isimov.lua b/data-otservbr-global/npc/isimov.lua index 127d92776a0..ef229591e53 100644 --- a/data-otservbr-global/npc/isimov.lua +++ b/data-otservbr-global/npc/isimov.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 116, lookBody = 38, lookLegs = 19, - lookFeet = 95 + lookFeet = 95, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,102 +50,125 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 6 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 6 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Isimov) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Isimov) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Isimov, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Wooden Stake -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'I think you have forgotten to bring your stake, kid.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 5 and player:getItemCount(5941) == 0 end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "I think you have forgotten to bring your stake, kid." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 5 and player:getItemCount(5941) == 0 +end) -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I was informed what to do. Are you prepared to receive my line of the prayer?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 5 end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive my prayer: \'Unclean spirits shall be repelled\'. Now, bring your stake to Amanda in Edron for the next line of the prayer. I will inform her what to do.', reset = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 6) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - end -) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'I will wait for you.', reset = true }) +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I was informed what to do. Are you prepared to receive my line of the prayer?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 5 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive my prayer: 'Unclean spirits shall be repelled'. Now, bring your stake to Amanda in Edron for the next line of the prayer. I will inform her what to do.", reset = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 6) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "I will wait for you.", reset = true }) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You should visit Amanda in Edron now, kid.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 6 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You already received my line of the prayer.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 6 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'A blessed stake? That\'s a strange request. Maybe Quentin knows more, he is one of the oldest monks after all.' }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You should visit Amanda in Edron now, kid." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 6 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You already received my line of the prayer." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 6 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "A blessed stake? That's a strange request. Maybe Quentin knows more, he is one of the oldest monks after all." }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/iskan.lua b/data-otservbr-global/npc/iskan.lua index f8605daf4f1..e6c0632f5b9 100644 --- a/data-otservbr-global/npc/iskan.lua +++ b/data-otservbr-global/npc/iskan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 38, lookFeet = 19, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -84,7 +84,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.TheIceIslands.Questline) == 1 then npcHandler:say({ "Well, one of the boys has run away. I think he got the scent of some beast. He's young and inexperienced so I can't blame the cub ...", - "I would like you to see after him. He should be somewhere north west of the town. He is probably marking his territory so you should be able to find his trace. Are you willing to do that?" + "I would like you to see after him. He should be somewhere north west of the town. He is probably marking his territory so you should be able to find his trace. Are you willing to do that?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.TheIceIslands.Questline) == 2 then @@ -111,7 +111,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "That's surprising. Take a piece of meat. If you find the boy, feed it to him. That will give him enough strength and incentive to return to his pack ...", - "Talk to him by calling his name 'Sniffler' and tell him you got meat for him. After he has eaten the meat, return here to talk to me about your mission." + "Talk to him by calling his name 'Sniffler' and tell him you got meat for him. After he has eaten the meat, return here to talk to me about your mission.", }, npc, creature) player:setStorageValue(Storage.TheIceIslands.Questline, 1) player:setStorageValue(Storage.TheIceIslands.Mission01, 1) -- Questlog The Ice Islands Quest, Befriending the Musher @@ -157,7 +157,8 @@ keywordHandler:addKeyword({ "bonelords" }, StdModule.say, { text = { "I'll tell you something. I have seen such a creature once, far on the ice to the east. It was the coldest winter I can remember and the chakoyas were roaming the ice almost everywhere. ...", "To evade them, me and the boys had to walk a long way to a spot where the ice was treacherous and thin. ...", - "And there I've seen such a creature. The boys went almost mad and I turned my sled immediately. No idea how we made it home. True story." } + "And there I've seen such a creature. The boys went almost mad and I turned my sled immediately. No idea how we made it home. True story.", + }, }) keywordHandler:addKeyword({ "edron" }, StdModule.say, { npcHandler = npcHandler, text = "Me and the boys care only about our own territory." }) keywordHandler:addAliasKeyword({ "thais" }) diff --git a/data-otservbr-global/npc/isolde.lua b/data-otservbr-global/npc/isolde.lua index 4b3f2646b29..aab79bd265e 100644 --- a/data-otservbr-global/npc/isolde.lua +++ b/data-otservbr-global/npc/isolde.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 33, lookLegs = 109, lookFeet = 128, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/ivalisse.lua b/data-otservbr-global/npc/ivalisse.lua index cb5f7ac586f..71948ca4bb2 100644 --- a/data-otservbr-global/npc/ivalisse.lua +++ b/data-otservbr-global/npc/ivalisse.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 28, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,14 +51,14 @@ npcType.onCloseChannel = function(npc, creature) end -- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! -keywordHandler:addKeyword({ 'silus' }, StdModule.say, { npcHandler = npcHandler, text = "My {father}, can you tell me if he's alright?" }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = "Alright then, you are very welcome to explore the temple!" }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "My name is Ivalisse." }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "There is always time to make a change." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "Besides my various {duties} in the temple, I also take care of visitors. Well, I would but right now I can't get my mind of how my {father}'s doing. I am sorry." }) -keywordHandler:addKeyword({ 'duties' }, StdModule.say, { npcHandler = npcHandler, text = " I help linking the portals of this temple to other ancient sites of the {Astral Shapers}." }) -keywordHandler:addKeyword({ 'duties' }, StdModule.say, { npcHandler = npcHandler, text = " I help linking the portals of this temple to other ancient sites of the {Astral Shapers}." }) -keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, text = "Besides my various {duties} in the temple, I also take care of visitors. Well, I would but right now I can't get my mind of how my {father}'s doing. I am sorry." }) +keywordHandler:addKeyword({ "silus" }, StdModule.say, { npcHandler = npcHandler, text = "My {father}, can you tell me if he's alright?" }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "Alright then, you are very welcome to explore the temple!" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Ivalisse." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "There is always time to make a change." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Besides my various {duties} in the temple, I also take care of visitors. Well, I would but right now I can't get my mind of how my {father}'s doing. I am sorry." }) +keywordHandler:addKeyword({ "duties" }, StdModule.say, { npcHandler = npcHandler, text = " I help linking the portals of this temple to other ancient sites of the {Astral Shapers}." }) +keywordHandler:addKeyword({ "duties" }, StdModule.say, { npcHandler = npcHandler, text = " I help linking the portals of this temple to other ancient sites of the {Astral Shapers}." }) +keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = "Besides my various {duties} in the temple, I also take care of visitors. Well, I would but right now I can't get my mind of how my {father}'s doing. I am sorry." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -70,7 +70,7 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "temple") then npcHandler:say({ - "Well, I hope you like it here. We tried to rebuild in the {Shaper}'s will. I am a bit preoccupied at the moment because of the absence of my {father}. I may not be the best of help currently, sorry." + "Well, I hope you like it here. We tried to rebuild in the {Shaper}'s will. I am a bit preoccupied at the moment because of the absence of my {father}. I may not be the best of help currently, sorry.", }, npc, creature) npcHandler:setTopic(playerId, 1) end @@ -83,7 +83,7 @@ local function creatureSayCallback(npc, creature, type, message) "The discovery of the foundations of this very temple we are standing in, was the key to access their legacy. It is now the center of all our efforts in getting closer to the astral predecessors. ...", "They found ways to connect various sites with a system of gates, all concentrating energy to allow travel to far away places. The more we learn, the more we can restore of these ancient gateways. ...", "We see the gates as an invitation, use them to your advantage and follow the ways of the Shapers. Access to one of these ancient shrines is the only way to learn additional imbuements. ...", - "But beware, as far as we know, some of them have been claimed by other ancient beings and there is now way for us to prepare you what lies beyond any of those gates." + "But beware, as far as we know, some of them have been claimed by other ancient beings and there is now way for us to prepare you what lies beyond any of those gates.", }, npc, creature) end @@ -103,7 +103,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "What? You're telling me you found father? How is he, what did papa say? A chalice? As a disguise? The whole time? ...", "Well, I am not as much surprised as I am happy to hear that he's alright. You know, after the incident with the duck and the umbrella - it doesn't get to me that easily anymore. ...", - "Thank you very much for doing all this for me, I will be forever grateful. I have nothing to repay you with but you are already blessed to have been able to lay eyes on the sacred shaper ruins." + "Thank you very much for doing all this for me, I will be forever grateful. I have nothing to repay you with but you are already blessed to have been able to lay eyes on the sacred shaper ruins.", }, npc, creature) player:setStorageValue(Storage.ForgottenKnowledge.Ivalisse, 1) end diff --git a/data-otservbr-global/npc/iwan.lua b/data-otservbr-global/npc/iwan.lua index dec5d00d1e7..f0f84ea1d65 100644 --- a/data-otservbr-global/npc/iwan.lua +++ b/data-otservbr-global/npc/iwan.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 112, lookLegs = 107, lookFeet = 113, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Gems of all kinds! Precious jewellery!' } + { text = "Gems of all kinds! Precious jewellery!" }, } local keywordHandler = KeywordHandler:new() @@ -115,7 +115,7 @@ npcConfig.shop = { { itemName = "violet crystal shard", clientId = 16120, sell = 1500 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, { itemName = "wedding ring", clientId = 3004, buy = 990 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -126,7 +126,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/iwar.lua b/data-otservbr-global/npc/iwar.lua index 3414a29207b..8572792d298 100644 --- a/data-otservbr-global/npc/iwar.lua +++ b/data-otservbr-global/npc/iwar.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 115, lookBody = 127, lookLegs = 123, - lookFeet = 76 + lookFeet = 76, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -88,7 +88,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) @@ -193,7 +193,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -204,7 +204,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/iyad.lua b/data-otservbr-global/npc/iyad.lua index 315e76e1b91..dee5cefda2d 100644 --- a/data-otservbr-global/npc/iyad.lua +++ b/data-otservbr-global/npc/iyad.lua @@ -16,18 +16,18 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 106, lookFeet = 76, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'A... aargh. I wish I had some e... earmuffs to put over this useless t... turban.' }, - { text = 'Oh p.. please. P... lease let me fly us out of this c... cold.' } + { text = "A... aargh. I wish I had some e... earmuffs to put over this useless t... turban." }, + { text = "Oh p.. please. P... lease let me fly us out of this c... cold." }, } local keywordHandler = KeywordHandler:new() @@ -61,44 +61,48 @@ end local TheNewFrontier = Storage.Quest.U8_54.TheNewFrontier local function addTravelKeyword(keyword, text, cost, destination, condition, action) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Never heard about a place like this.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Never heard about a place like this." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a ride to ' .. text .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = 'Hold on!', cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'You shouldn\'t miss the experience.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a ride to " .. text .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = "Hold on!", cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) end -addTravelKeyword('farmine', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('zao', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('darashia', 'Darashia on Darama', 60, Position(33270, 32441, 6)) -addTravelKeyword('darama', 'Darashia on Darama', 60, Position(33270, 32441, 6)) -addTravelKeyword('kazordoon', 'Kazordoon', 70, Position(32588, 31941, 0)) -addTravelKeyword('kazor', 'Kazordoon', 70, Position(32588, 31941, 0)) -addTravelKeyword('femor hills', 'the Femor Hills', 60, Position(32536, 31837, 4)) -addTravelKeyword('hills', 'the Femor Hills', 60, Position(32536, 31837, 4)) -addTravelKeyword('edron', 'Edron', 60, Position(33193, 31784, 3)) -addTravelKeyword('issavi', 'Issavi', 100, Position(33957, 31515, 0)) -addTravelKeyword('marapur', 'Marapur', 70, Position(33805, 32767, 2)) +addTravelKeyword("farmine", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("zao", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("darashia", "Darashia on Darama", 60, Position(33270, 32441, 6)) +addTravelKeyword("darama", "Darashia on Darama", 60, Position(33270, 32441, 6)) +addTravelKeyword("kazordoon", "Kazordoon", 70, Position(32588, 31941, 0)) +addTravelKeyword("kazor", "Kazordoon", 70, Position(32588, 31941, 0)) +addTravelKeyword("femor hills", "the Femor Hills", 60, Position(32536, 31837, 4)) +addTravelKeyword("hills", "the Femor Hills", 60, Position(32536, 31837, 4)) +addTravelKeyword("edron", "Edron", 60, Position(33193, 31784, 3)) +addTravelKeyword("issavi", "Issavi", 100, Position(33957, 31515, 0)) +addTravelKeyword("marapur", "Marapur", 70, Position(33805, 32767, 2)) -- Basic -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a licensed c...carpet pilot. I can {transport} you t...to a warm p...place.' }) -keywordHandler:addKeyword({ 'fly' }, StdModule.say, { npcHandler = npcHandler, text = 'I t...{transport} travellers to the continent of Darama for a small fee. It\'s w...warm there.' }) -keywordHandler:addKeyword({ 'transport' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Edron}, to {Kazordoon}, to Z... Zao, to the F...{Femor Hills}, to {Issavi} or to M... {Marapur} if you like. W....Where do you want to go?' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Edron}, to {Kazordoon}, to Z... Zao, to the F...{Femor Hills}, to {Issavi} or to M... {Marapur} if you like. W....Where do you want to go?' }) -keywordHandler:addKeyword({ 'ride' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Edron}, to {Kazordoon}, to Z... Zao, to the F...{Femor Hills}, to {Issavi} or to M... {Marapur} if you like. W....Where do you want to go?' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m k...known as Iyad Ibn Abdul.' }) -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { npcHandler = npcHandler, text = 'The thought of s...some mad sorcerer unleashing some f...fire magic is very tempting.' }) -keywordHandler:addKeyword({ 'carlin' }, StdModule.say, { npcHandler = npcHandler, text = 'S...so close and s...still that far away.' }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = 'For all its m...mistakes, Thais is warm at least.' }) -keywordHandler:addKeyword({ 'go' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Edron}, to {Kazordoon}, to Z... Zao, to the F...{Femor Hills}, to {Issavi} or to M... {Marapur} if you like. W....Where do you want to go?' }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = 'I would t...trade it for some firewood.' }) -keywordHandler:addKeyword({ 'continent' }, StdModule.say, { npcHandler = npcHandler, text = 'This h...here is no continent. This is h...hell.' }) -keywordHandler:addKeyword({ 'drefia' }, StdModule.say, { npcHandler = npcHandler, text = 'Even D...Drefia can\'t be worse than this land.' }) -keywordHandler:addKeyword({ 'news' }, StdModule.say, { npcHandler = npcHandler, text = 'I d...don\'t care about any n...news unless it\'s the announcement of a h....heatwave.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s p...probably the ice age.' }) -keywordHandler:addKeyword({ 'trade' }, StdModule.say, { npcHandler = npcHandler, text = 'Th...there, in case you have {earmuffs}, I pay w...well!' }) -keywordHandler:addKeyword({ 'earmuffs' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you really have earmuffs f...for me?? If so, just ask me for a {trade}!' }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a licensed c...carpet pilot. I can {transport} you t...to a warm p...place." }) +keywordHandler:addKeyword({ "fly" }, StdModule.say, { npcHandler = npcHandler, text = "I t...{transport} travellers to the continent of Darama for a small fee. It's w...warm there." }) +keywordHandler:addKeyword({ "transport" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Edron}, to {Kazordoon}, to Z... Zao, to the F...{Femor Hills}, to {Issavi} or to M... {Marapur} if you like. W....Where do you want to go?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Edron}, to {Kazordoon}, to Z... Zao, to the F...{Femor Hills}, to {Issavi} or to M... {Marapur} if you like. W....Where do you want to go?" }) +keywordHandler:addKeyword({ "ride" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Edron}, to {Kazordoon}, to Z... Zao, to the F...{Femor Hills}, to {Issavi} or to M... {Marapur} if you like. W....Where do you want to go?" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm k...known as Iyad Ibn Abdul." }) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, text = "The thought of s...some mad sorcerer unleashing some f...fire magic is very tempting." }) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { npcHandler = npcHandler, text = "S...so close and s...still that far away." }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "For all its m...mistakes, Thais is warm at least." }) +keywordHandler:addKeyword({ "go" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Edron}, to {Kazordoon}, to Z... Zao, to the F...{Femor Hills}, to {Issavi} or to M... {Marapur} if you like. W....Where do you want to go?" }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "I would t...trade it for some firewood." }) +keywordHandler:addKeyword({ "continent" }, StdModule.say, { npcHandler = npcHandler, text = "This h...here is no continent. This is h...hell." }) +keywordHandler:addKeyword({ "drefia" }, StdModule.say, { npcHandler = npcHandler, text = "Even D...Drefia can't be worse than this land." }) +keywordHandler:addKeyword({ "news" }, StdModule.say, { npcHandler = npcHandler, text = "I d...don't care about any n...news unless it's the announcement of a h....heatwave." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It's p...probably the ice age." }) +keywordHandler:addKeyword({ "trade" }, StdModule.say, { npcHandler = npcHandler, text = "Th...there, in case you have {earmuffs}, I pay w...well!" }) +keywordHandler:addKeyword({ "earmuffs" }, StdModule.say, { npcHandler = npcHandler, text = "Do you really have earmuffs f...for me?? If so, just ask me for a {trade}!" }) npcHandler:setMessage(MESSAGE_GREET, "Finally! A c...c...customer! Wh... where do you want to f...f...{fly}?") npcHandler:setMessage(MESSAGE_FAREWELL, "D...Daraman's blessings... oh, how I m...miss my warm Darashia...") diff --git a/data-otservbr-global/npc/izsh.lua b/data-otservbr-global/npc/izsh.lua index 2c1e65b5a1b..2da27ccc1a5 100644 --- a/data-otservbr-global/npc/izsh.lua +++ b/data-otservbr-global/npc/izsh.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 338 + lookType = 338, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,23 +53,23 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'mission') then + if MsgContains(message, "mission") then if Player(creature):getStorageValue(Storage.WrathoftheEmperor.Questline) == 33 then - npcHandler:say('Oh yez, let me zee ze documentz. Here we go: zree cheztz filled wiz platinum, one houze, a zet of elite armor, and an unending mana cazket. Iz ziz correct?', npc, creature) + npcHandler:say("Oh yez, let me zee ze documentz. Here we go: zree cheztz filled wiz platinum, one houze, a zet of elite armor, and an unending mana cazket. Iz ziz correct?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 1 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - 'Fine, zo let\'z prozeed. You uzed forged documentz to enter our zity, killed zeveral guardz who enjoyed a quite excluzive and expenzive training, deztroyed rare magical devizez in ze pozzezzion of ze emperor. ...', - 'Ze good newz iz, your zree cheztz of platinum should be nearly enough to pay ze finez. Lucky you, ziz could have left you broke. ...', - 'Zere are alzo zertain noble familiez complaining about ze murder of zeveral of zeir beloved onez. ...', - 'I zink I can make a deal wiz ze noblez by zelling zem your property in ze zity. Your prezenze would ruin ze houze prizez zere anyway. ...', - 'Of courze zat will not zuffize to compenzate zeir grief, zo I guezz you\'ll have to part wiz zat elite armor, too. Zadly, prizez for armor are on an all time low right now. ...', - 'But luckily you ztill have zat mana cazket. Well, you had it. Now we have to zell it. ...', - 'But not all iz lozt my blank-zkinned vizitor. According to my calculationz, zere iz ztill a bit left. ...', - 'I zink we can zave you zome gold and zome treazurez, and you can keep one pieze of your elite armor at leazt. ...', - 'You will find your rewardz in one of ze old zupply zellarz. Beware of ze ratz zough. ...', - 'Ze rednezz of your faze and ze zound you make wiz your teez iz obviouzly a zign of gratitude of your zpeziez! I am flattered, but pleaze leave now az I have to attend to zome important buzinezz.' + "Fine, zo let'z prozeed. You uzed forged documentz to enter our zity, killed zeveral guardz who enjoyed a quite excluzive and expenzive training, deztroyed rare magical devizez in ze pozzezzion of ze emperor. ...", + "Ze good newz iz, your zree cheztz of platinum should be nearly enough to pay ze finez. Lucky you, ziz could have left you broke. ...", + "Zere are alzo zertain noble familiez complaining about ze murder of zeveral of zeir beloved onez. ...", + "I zink I can make a deal wiz ze noblez by zelling zem your property in ze zity. Your prezenze would ruin ze houze prizez zere anyway. ...", + "Of courze zat will not zuffize to compenzate zeir grief, zo I guezz you'll have to part wiz zat elite armor, too. Zadly, prizez for armor are on an all time low right now. ...", + "But luckily you ztill have zat mana cazket. Well, you had it. Now we have to zell it. ...", + "But not all iz lozt my blank-zkinned vizitor. According to my calculationz, zere iz ztill a bit left. ...", + "I zink we can zave you zome gold and zome treazurez, and you can keep one pieze of your elite armor at leazt. ...", + "You will find your rewardz in one of ze old zupply zellarz. Beware of ze ratz zough. ...", + "Ze rednezz of your faze and ze zound you make wiz your teez iz obviouzly a zign of gratitude of your zpeziez! I am flattered, but pleaze leave now az I have to attend to zome important buzinezz.", }, npc, creature) Player(creature):setStorageValue(Storage.WrathoftheEmperor.Questline, 34) npcHandler:setTopic(playerId, 0) @@ -77,7 +77,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_GREET, 'Greetingz zcalelezz being.') +npcHandler:setMessage(MESSAGE_GREET, "Greetingz zcalelezz being.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/jack.lua b/data-otservbr-global/npc/jack.lua index ed53cd98aea..0b18bddd5d5 100644 --- a/data-otservbr-global/npc/jack.lua +++ b/data-otservbr-global/npc/jack.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 96, lookLegs = 115, lookFeet = 114, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local function greetCallback(npc, creature) @@ -34,16 +34,13 @@ local function greetCallback(npc, creature) They think I lied to them about working in Edron in secrecy! Why should I even do that!" ) elseif player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 8 then - npcHandler:setMessage( - MESSAGE_GREET, - { - "What did you do to my SCULPTURE? You simply DESTROYED it? Why? You... you ruined everything... \z + npcHandler:setMessage(MESSAGE_GREET, { + "What did you do to my SCULPTURE? You simply DESTROYED it? Why? You... you ruined everything... \z my house, my hobby, my life. My family even refuses to talk to me anymore. ...", - "Alright, alright you win. I am done for. You... you must be right, yes. Yes, I was working as an \z + "Alright, alright you win. I am done for. You... you must be right, yes. Yes, I was working as an \z intern... in the academy in Edron... yes... Just... tell this Spectulus guy I want to see him. \z - I have nothing left. I am ready." - } - ) + I have nothing left. I am ready.", + }) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine, 9) elseif player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 10 then npcHandler:setMessage( @@ -67,54 +64,53 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "spectulus") then - if (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 1) then + if player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 1 then npcHandler:say("Gesundheit! Are you alright? Did you... want to tell me something by that?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 3) then + elseif player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 3 then if npcHandler:getTopic(playerId) == 3 then - npcHandler:say( - { - "So it's that name again. You are really determined, aren't you. ...", - "So if he thinks I'm someone he knew who is now 'lost' and needs to come back or whatever - \z + npcHandler:say({ + "So it's that name again. You are really determined, aren't you. ...", + "So if he thinks I'm someone he knew who is now 'lost' and needs to come back or whatever - \z tell him he is WRONG. I always lived here with my mother and sister, I'm happy here and I \z - certainly don't want to go to that academy of yours." - }, - npc, creature, 1000) + certainly don't want to go to that academy of yours.", + }, npc, creature, 1000) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine, 4) end end elseif MsgContains(message, "furniture") then - if (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 3) then + if player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 3 then if - (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Furniture01) == 1) and - (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Furniture02) == 1) and - (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Furniture03) == 1) and - (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Furniture04) == 1) and - (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Furniture05) == 1) + (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Furniture01) == 1) + and (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Furniture02) == 1) + and (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Furniture03) == 1) + and (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Furniture04) == 1) + and (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Furniture05) == 1) then npcHandler:say( "What have you done? What are all these pieces of furniture doing here? Those are ugly at \z best and - hey! Stop! Leave the wallpaper alone! Alright, alright! Just tell me, why are you \z - doing this? Who's behind all this?", npc, creature) + doing this? Who's behind all this?", + npc, + creature + ) npcHandler:setTopic(playerId, 3) end end elseif MsgContains(message, "no") then if player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 10 then - if (npcHandler:getTopic(playerId) == 0) then + if npcHandler:getTopic(playerId) == 0 then npcHandler:say("WHAT?? No way, I ask you again - you DID tell me the TRUTH here... right?", npc, creature) npcHandler:setTopic(playerId, 5) - elseif (npcHandler:getTopic(playerId) == 5) then - npcHandler:say( - { - "So... so this wasn't EVEN REAL? You brought all this ugly furniture here, you destroyed \z + elseif npcHandler:getTopic(playerId) == 5 then + npcHandler:say({ + "So... so this wasn't EVEN REAL? You brought all this ugly furniture here, you destroyed \z my sculpture... and on top of that you actually CONVINCED mother and my sister!? How can \z I possibly explain all that? ...", - "I... I... Well, at least you told me the truth. I don't know if I can accept this as an \z + "I... I... Well, at least you told me the truth. I don't know if I can accept this as an \z excuse but it's a start. Now let me return to my work, I need to fix this statue and then \z - the rest of this... mess." - }, - npc, creature) + the rest of this... mess.", + }, npc, creature) player:addAchievement("Truth Be Told") player:setStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine, 11) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.LastMissionState, 1) @@ -122,39 +118,37 @@ local function creatureSayCallback(npc, creature, type, message) end end elseif MsgContains(message, "yes") then - if (npcHandler:getTopic(playerId) == 1) then - npcHandler:say( - { - "Oh hm, I've got a handkerchief here somewhere - ah, oh no it's already used, I'm sorry. \z + if npcHandler:getTopic(playerId) == 1 then + npcHandler:say({ + "Oh hm, I've got a handkerchief here somewhere - ah, oh no it's already used, I'm sorry. \z So, you say that's a real person? Spectulus? I mean - what kind of weirdo thinks \z of a name like that anyway. ...", - "And he does what? Hm. Here in Edron? I see. And I was - what? No way. Where? What! \z - Why? And you say you are telling the truth?" - }, - npc, creature) + "And he does what? Hm. Here in Edron? I see. And I was - what? No way. Where? What! \z + Why? And you say you are telling the truth?", + }, npc, creature) npcHandler:setTopic(playerId, 2) - elseif (npcHandler:getTopic(playerId) == 2) then - npcHandler:say( - { - "I see. Well for starters, I think you're crazy. If I would have 'travelled' in some \z + elseif npcHandler:getTopic(playerId) == 2 then + npcHandler:say({ + "I see. Well for starters, I think you're crazy. If I would have 'travelled' in some \z kind of - device? - that thing should be around here somewhere, or not? ...", - "What? 'Dimensional fold?' Well, thanks for the information and please close the door \z - behind you when you leave my house. Now." - }, - npc, creature) + "What? 'Dimensional fold?' Well, thanks for the information and please close the door \z + behind you when you leave my house. Now.", + }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine, 2) end if player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 10 then - if (npcHandler:getTopic(playerId) == 0) then + if npcHandler:getTopic(playerId) == 0 then npcHandler:say("So that's it? Really?", npc, creature) npcHandler:setTopic(playerId, 6) - elseif (npcHandler:getTopic(playerId) == 6) then + elseif npcHandler:getTopic(playerId) == 6 then npcHandler:say( "Yeah, yeah... so what are you still doing here? I guess I... will have to seek out this \z Spectulus now, see what he has to say. There is nothing left for me in this place.", - npc, creature) + npc, + creature + ) player:addAchievement("You Don't Know Jack") player:setStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine, 11) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.LastMissionState, 2) @@ -162,31 +156,27 @@ local function creatureSayCallback(npc, creature, type, message) end end elseif MsgContains(message, "hobbies") or MsgContains(message, "hobby") then - if (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 7) then - if (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Statue) < 1) then - npcHandler:say( - { - "Ah, also a keen lover of arts I assume? You might have already caught a glimpse of that \z + if player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 7 then + if player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Statue) < 1 then + npcHandler:say({ + "Ah, also a keen lover of arts I assume? You might have already caught a glimpse of that \z humble masterpiece over there in the corner - I sculpt sulky sculptures! ...", - "Sculpting sculptures was my passion since childhood... ...and it was there at my first \z + "Sculpting sculptures was my passion since childhood... ...and it was there at my first \z sandcastle when... ...and it formed... ...and it developed into... ...years of enduring \z sculpting... ...carved of something like... ...sulky... ...", - "And that's what I like to do to this very day - hey, hey will you wake up? Were you even \z - listening to me?" - }, - creature, - false, - true, - 200 - ) + "And that's what I like to do to this very day - hey, hey will you wake up? Were you even \z + listening to me?", + }, creature, false, true, 200) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.Statue, 1) npcHandler:setTopic(playerId, 0) end - elseif (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 8) then + elseif player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 8 then npcHandler:say( "I... was... sculpting sulky sculptures. For all my life. Until you came in here and DESTROYED \z MY MASTERPIECE. Go away. I don't like you.", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 0) end end @@ -199,7 +189,7 @@ npcConfig.voices = { { text = "Now I need to clean up everything again." }, { text = "So much to do, so little time, they say..." }, { text = "Could it be...? No. No way." }, - { text = "Mh..." } + { text = "Mh..." }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/jack_drone.lua b/data-otservbr-global/npc/jack_drone.lua index fc1bc4f7b08..15dcded7e15 100644 --- a/data-otservbr-global/npc/jack_drone.lua +++ b/data-otservbr-global/npc/jack_drone.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 69, lookLegs = 125, lookFeet = 50, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,13 +50,13 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -local travelNode = keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage back to thais?' }) -travelNode:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, level = 0, cost = 0, destination = Position(32310, 32218, 5) }) -travelNode:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'We would like to serve you some time.' }) +local travelNode = keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage back to thais?" }) +travelNode:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, level = 0, cost = 0, destination = Position(32310, 32218, 5) }) +travelNode:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "We would like to serve you some time." }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I can travel you to {thais}.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I can travel you to {thais}.' }) -keywordHandler:addKeyword({ 'travel' }, StdModule.say, { npcHandler = npcHandler, text = 'I can travel you to {thais}.' }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can travel you to {thais}." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I can travel you to {thais}." }) +keywordHandler:addKeyword({ "travel" }, StdModule.say, { npcHandler = npcHandler, text = "I can travel you to {thais}." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. Where can I {sail} you today? I can travel you back to {thais}.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") diff --git a/data-otservbr-global/npc/jack_fate.lua b/data-otservbr-global/npc/jack_fate.lua index 6839ab63c14..aba111bbeea 100644 --- a/data-otservbr-global/npc/jack_fate.lua +++ b/data-otservbr-global/npc/jack_fate.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 69, lookLegs = 107, lookFeet = 50, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passages to Edron, Thais, Venore, Darashia, Ankrahmun, Yalahar and Port Hope.' } + { text = "Passages to Edron, Thais, Venore, Darashia, Ankrahmun, Yalahar and Port Hope." }, } local keywordHandler = KeywordHandler:new() @@ -59,40 +59,52 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, text, condition) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but I don\'t sail there.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }, condition) end - if keyword == 'goroma' then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Never heard about a place like this.' }, function(player) return player:getStorageValue(Storage.TheShatteredIsles.AccessToGoroma) ~= 1 end) + if keyword == "goroma" then + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Never heard about a place like this." }, function(player) + return player:getStorageValue(Storage.TheShatteredIsles.AccessToGoroma) ~= 1 + end) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = (text or 'Do you seek a passage to ') .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = (text or "Do you seek a passage to ") .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('edron', 170, Position(33173, 31764, 6)) -addTravelKeyword('venore', 180, Position(32954, 32022, 6)) -addTravelKeyword('port hope', 50, Position(32527, 32784, 6)) -addTravelKeyword('darashia', 200, Position(33289, 32480, 6)) -addTravelKeyword('ankrahmun', 90, Position(33092, 32883, 6)) -addTravelKeyword('goroma', 0, Position(32161, 32558, 6), 'Ugh. You really want to go back to Goroma? I\'ll surely have to repair my ship afterwards, so I won\'t charge. Okay?') -addTravelKeyword('yalahar', 275, Position(32816, 31272, 6), nil, function(player) return player:getStorageValue(Storage.SearoutesAroundYalahar.LibertyBay) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 end) +addTravelKeyword("edron", 170, Position(33173, 31764, 6)) +addTravelKeyword("venore", 180, Position(32954, 32022, 6)) +addTravelKeyword("port hope", 50, Position(32527, 32784, 6)) +addTravelKeyword("darashia", 200, Position(33289, 32480, 6)) +addTravelKeyword("ankrahmun", 90, Position(33092, 32883, 6)) +addTravelKeyword("goroma", 0, Position(32161, 32558, 6), "Ugh. You really want to go back to Goroma? I'll surely have to repair my ship afterwards, so I won't charge. Okay?") +addTravelKeyword("yalahar", 275, Position(32816, 31272, 6), nil, function(player) + return player:getStorageValue(Storage.SearoutesAroundYalahar.LibertyBay) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 +end) -- Thais -local travelKeyword = keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to Thais for |TRAVELCOST|?', cost = 180, discount = 'postman' }) -local childTravelKeyword = travelKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'I have to warn you - we might get into a tropical storm on that route. I\'m not sure if my ship will withstand it. Do you really want to travel to Thais?' }) -childTravelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = 180, discount = 'postman', destination = function(player) return math.random(8) == 1 and Position(32161, 32558, 6) or Position(32310, 32210, 6) end }) -childTravelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'We would like to serve you some time.' }) -travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, reset = true, text = 'We would like to serve you some time.' }) +local travelKeyword = keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to Thais for |TRAVELCOST|?", cost = 180, discount = "postman" }) +local childTravelKeyword = travelKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "I have to warn you - we might get into a tropical storm on that route. I'm not sure if my ship will withstand it. Do you really want to travel to Thais?" }) +childTravelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { + npcHandler = npcHandler, + premium = false, + cost = 180, + discount = "postman", + destination = function(player) + return math.random(8) == 1 and Position(32161, 32558, 6) or Position(32310, 32210, 6) + end, +}) +childTravelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "We would like to serve you some time." }) +travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, reset = true, text = "We would like to serve you some time." }) -- Basic -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Edron}, {Thais}, {Venore}, {Darashia}, {Ankrahmun}, {Yalahar} or {Port Hope}?' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Edron}, {Thais}, {Venore}, {Darashia}, {Ankrahmun}, {Yalahar} or {Port Hope}?' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Jack Fate from the Royal Tibia Line.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the captain of this sailing ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the captain of this sailing ship.' }) -keywordHandler:addKeyword({ 'liberty bay' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s where we are.' }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Edron}, {Thais}, {Venore}, {Darashia}, {Ankrahmun}, {Yalahar} or {Port Hope}?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Edron}, {Thais}, {Venore}, {Darashia}, {Ankrahmun}, {Yalahar} or {Port Hope}?" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Jack Fate from the Royal Tibia Line." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the captain of this sailing ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the captain of this sailing ship." }) +keywordHandler:addKeyword({ "liberty bay" }, StdModule.say, { npcHandler = npcHandler, text = "That's where we are." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, Sir |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") diff --git a/data-otservbr-global/npc/jack_fate_goroma.lua b/data-otservbr-global/npc/jack_fate_goroma.lua index 225395d0176..5a98b1651e9 100644 --- a/data-otservbr-global/npc/jack_fate_goroma.lua +++ b/data-otservbr-global/npc/jack_fate_goroma.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 69, lookLegs = 88, lookFeet = 69, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,33 +58,33 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (message) then + if message then message = message:lower() end if table.contains({ "sail", "passage", "wreck", "liberty bay", "ship" }, message) then if player:getStorageValue(Storage.TheShatteredIsles.AccessToGoroma) ~= 1 then if player:getStorageValue(Storage.TheShatteredIsles.Shipwrecked) < 1 then - npcHandler:say('I\'d love to bring you back to Liberty Bay, but as you can see, my ship is ruined. I also hurt my leg and can barely move. Can you help me?', npc, creature) + npcHandler:say("I'd love to bring you back to Liberty Bay, but as you can see, my ship is ruined. I also hurt my leg and can barely move. Can you help me?", npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.TheShatteredIsles.Shipwrecked) == 1 then - npcHandler:say('Have you brought 30 pieces of wood so that I can repair the ship?', npc, creature) + npcHandler:say("Have you brought 30 pieces of wood so that I can repair the ship?", npc, creature) npcHandler:setTopic(playerId, 3) end else - npcHandler:say('Do you want to travel back to Liberty Bay?', npc, creature) + npcHandler:say("Do you want to travel back to Liberty Bay?", npc, creature) npcHandler:setTopic(playerId, 4) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Thank you. Luckily the damage my ship has taken looks more severe than it is, so I will only need a few wooden boards. ...", "I saw some lousy trolls running away with some parts of the ship. It might be a good idea to follow them and check if they have some more wood. ...", - "We will need 30 pieces of wood, no more, no less. Did you understand everything?" + "We will need 30 pieces of wood, no more, no less. Did you understand everything?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then - npcHandler:say('Good! Please return once you have gathered 30 pieces of wood.', npc, creature) + npcHandler:say("Good! Please return once you have gathered 30 pieces of wood.", npc, creature) player:setStorageValue(Storage.TheShatteredIsles.DefaultStart, 1) player:setStorageValue(Storage.TheShatteredIsles.Shipwrecked, 1) npcHandler:setTopic(playerId, 0) @@ -100,7 +100,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 4 then player:teleportTo(Position(32285, 32892, 6), false) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - npcHandler:say('Set the sails!', npc, creature) + npcHandler:say("Set the sails!", npc, creature) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) end @@ -108,10 +108,10 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Jack Fate from the Royal Tibia Line.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the captain of this - well, wreck. Argh.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the captain of this - well, wreck. Argh' }) -keywordHandler:addKeyword({ 'goroma' }, StdModule.say, { npcHandler = npcHandler, text = 'This is where we are... the volcano island Goroma. There are many rumours about this place.' }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Jack Fate from the Royal Tibia Line." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the captain of this - well, wreck. Argh." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the captain of this - well, wreck. Argh" }) +keywordHandler:addKeyword({ "goroma" }, StdModule.say, { npcHandler = npcHandler, text = "This is where we are... the volcano island Goroma. There are many rumours about this place." }) npcHandler:setMessage(MESSAGE_GREET, "Hello, Sir |PLAYERNAME|. Where can I {sail} you today?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") diff --git a/data-otservbr-global/npc/jack_springer.lua b/data-otservbr-global/npc/jack_springer.lua index d16eec70627..938071cb630 100644 --- a/data-otservbr-global/npc/jack_springer.lua +++ b/data-otservbr-global/npc/jack_springer.lua @@ -16,18 +16,18 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 114, lookFeet = 113, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, { text = "Always be on guard." }, - { text = "Hmm." } + { text = "Hmm." }, } local keywordHandler = KeywordHandler:new() @@ -76,7 +76,8 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(GraveDanger.QuestLine) < 1 then npcHandler:say({ "While you travel and fight the threat where it arises, we will put all our resources into researching the ultimate plans of the legion. Perhaps I can tell you more when you {report} back. ...", - "Don't forget that you'll need very potent holy water for your task. If you need some, just ask me for a {trade}." }, npc, creature) + "Don't forget that you'll need very potent holy water for your task. If you need some, just ask me for a {trade}.", + }, npc, creature) player:setStorageValue(GraveDanger.QuestLine, 1) player:setStorageValue(GraveDanger.Graves.Edron, 1) player:setStorageValue(GraveDanger.Graves.DarkCathedral, 1) @@ -102,7 +103,7 @@ npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "vial of potent holy water", clientId = 31612, buy = 100 } + { itemName = "vial of potent holy water", clientId = 31612, buy = 100 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -113,7 +114,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/jack_the_worker.lua b/data-otservbr-global/npc/jack_the_worker.lua index f36b2680000..af9233a3c31 100644 --- a/data-otservbr-global/npc/jack_the_worker.lua +++ b/data-otservbr-global/npc/jack_the_worker.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 114, lookBody = 60, lookLegs = 67, - lookFeet = 96 + lookFeet = 96, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/jacob.lua b/data-otservbr-global/npc/jacob.lua index e8f17ba437d..e649a6773c0 100644 --- a/data-otservbr-global/npc/jacob.lua +++ b/data-otservbr-global/npc/jacob.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 114, lookFeet = 114, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,7 +55,7 @@ local function creatureSayCallback(npc, creature, type, message) local playerId = player:getId() -- Mission 3 start - if (MsgContains(message, "abandoned sewers")) then + if MsgContains(message, "abandoned sewers") then if player:getStorageValue(Storage.Oramond.MissionAbandonedSewer) < 21 then npcHandler:say("You want to enter the abandoned sewers? That's rather dangerous and not a good idea, man. That part of the sewers was not sealed off for nothing, you know? ...", npc, creature) npcHandler:say("But hey, it's your life, bro. So here's the deal. I'll let you into the abandoned sewers if you help me with our {mission}.", npc, creature) @@ -72,8 +72,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 7) end -- Mission 3 start - elseif (MsgContains(message, "mission")) then - if (npcHandler:getTopic(playerId) == 0) then + elseif MsgContains(message, "mission") then + if npcHandler:getTopic(playerId) == 0 then npcHandler:say("The sewers need repair. You in?", npc, creature) npcHandler:setTopic(playerId, 2) -- Mission 3 end @@ -82,24 +82,24 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 3) end -- Mission 3 start - sewer access - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 2) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 2 then npcHandler:say("Good. Broken pipe and generator pieces, there's smoke evading. That's how you recognise them. See how you can fix them using your hands. Need about, oh, twenty of them at least repaired. Report to me or Jacob", npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.Oramond.AbandonedSewer, 1) player:setStorageValue(Storage.Oramond.MissionAbandonedSewer, 0) end -- Task: The Ancient Sewers - elseif (MsgContains(message, "ok")) then - if (npcHandler:getTopic(playerId) == 3) then + elseif MsgContains(message, "ok") then + if npcHandler:getTopic(playerId) == 3 then npcHandler:say("Good. Thanks, man. That's one vote you got for helping us with this.", npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.Oramond.MissionAbandonedSewer, 21) -- Mission 3 end end -- Final mission 5 - elseif (MsgContains(message, "report")) then + elseif MsgContains(message, "report") then if player:getStorageValue(Storage.DarkTrails.Mission05) == 1 then - if (npcHandler:getTopic(playerId) == 7) then + if npcHandler:getTopic(playerId) == 7 then npcHandler:say("A sacrificial site? Damn, sounds like some freakish cult or something. Just great. And this ancient structure you talked about that's not part of the sewers? You'd better see the local historian about that, man. ...", npc, creature) npcHandler:say("He can make more sense of what you found there. His name is Barazbaz. He should be in the magistrate building.", npc, creature) player:setStorageValue(Storage.DarkTrails.Mission06, 1) -- Start mission 6 diff --git a/data-otservbr-global/npc/jagran.lua b/data-otservbr-global/npc/jagran.lua index eefa2e8d7f4..588facda69b 100644 --- a/data-otservbr-global/npc/jagran.lua +++ b/data-otservbr-global/npc/jagran.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 70 + lookType = 70, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/jakahr.lua b/data-otservbr-global/npc/jakahr.lua index 97c47fc8a38..80706f5e9f4 100644 --- a/data-otservbr-global/npc/jakahr.lua +++ b/data-otservbr-global/npc/jakahr.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 36, lookLegs = 33, lookFeet = 59, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,7 +59,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -70,7 +70,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/james.lua b/data-otservbr-global/npc/james.lua index 5618dd1c865..8c2f55c8200 100644 --- a/data-otservbr-global/npc/james.lua +++ b/data-otservbr-global/npc/james.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 60, lookLegs = 44, lookFeet = 118, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,7 +57,7 @@ npcConfig.shop = { { itemName = "cheese", clientId = 3607, buy = 5 }, { itemName = "ham", clientId = 3582, buy = 8 }, { itemName = "meat", clientId = 3577, buy = 5 }, - { itemName = "red apple", clientId = 3585, buy = 3 } + { itemName = "red apple", clientId = 3585, buy = 3 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -68,7 +68,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/jamesfrancis.lua b/data-otservbr-global/npc/jamesfrancis.lua index 15c61d091a6..bde27b5345d 100644 --- a/data-otservbr-global/npc/jamesfrancis.lua +++ b/data-otservbr-global/npc/jamesfrancis.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 38, lookFeet = 76, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local function greetCallback(npc, creature) @@ -32,13 +32,11 @@ local function greetCallback(npc, creature) if player:getStorageValue(Storage.CultsOfTibia.Minotaurs.Access) < 1 then npcHandler:setMessage(MESSAGE_GREET, "Gerimor is right. As an expert for minotaurs I am researching these creatures for years. I thought I already knew a lot but the monsters in this cave are {different}. It's a big {mystery}.") npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.CultsOfTibia.Minotaurs.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.CultsOfTibia.Minotaurs.JamesfrancisTask) <= 50) - and player:getStorageValue(Storage.CultsOfTibia.Minotaurs.Mission) < 3 then + elseif (player:getStorageValue(Storage.CultsOfTibia.Minotaurs.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.CultsOfTibia.Minotaurs.JamesfrancisTask) <= 50) and player:getStorageValue(Storage.CultsOfTibia.Minotaurs.Mission) < 3 then npcHandler:setMessage(MESSAGE_GREET, "How is your {mission} going?") npcHandler:setTopic(playerId, 5) elseif player:getStorageValue(Storage.CultsOfTibia.Minotaurs.Mission) == 4 then - npcHandler:setMessage(MESSAGE_GREET, { "You say the minotaurs were controlled by a very powerful boss they worshipped. This explains why they had so much more power than the normal ones. ...", - "I'm very thankful. Please go to the Druid of Crunor and tell him what you've seen. He might be interested in that." }) + npcHandler:setMessage(MESSAGE_GREET, { "You say the minotaurs were controlled by a very powerful boss they worshipped. This explains why they had so much more power than the normal ones. ...", "I'm very thankful. Please go to the Druid of Crunor and tell him what you've seen. He might be interested in that." }) player:setStorageValue(Storage.CultsOfTibia.Minotaurs.Mission, 5) npcHandler:setTopic(playerId, 10) end @@ -47,7 +45,7 @@ end npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Don\'t enter this area if you are an inexperienced fighter! It would be your end!' } + { text = "Don't enter this area if you are an inexperienced fighter! It would be your end!" }, } local keywordHandler = KeywordHandler:new() @@ -77,7 +75,6 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() @@ -117,7 +114,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/janz.lua b/data-otservbr-global/npc/janz.lua index 9561e3ec947..fc2cc65910a 100644 --- a/data-otservbr-global/npc/janz.lua +++ b/data-otservbr-global/npc/janz.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 119, lookLegs = 118, lookFeet = 120, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -148,7 +148,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -159,7 +159,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/jason.lua b/data-otservbr-global/npc/jason.lua index f10857042a3..5a4450b293d 100644 --- a/data-otservbr-global/npc/jason.lua +++ b/data-otservbr-global/npc/jason.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 126, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/jean_claude.lua b/data-otservbr-global/npc/jean_claude.lua index 1670e55e091..a622a6c9488 100644 --- a/data-otservbr-global/npc/jean_claude.lua +++ b/data-otservbr-global/npc/jean_claude.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 113, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/jean_pierre.lua b/data-otservbr-global/npc/jean_pierre.lua index e52d6b95529..df20c85c72d 100644 --- a/data-otservbr-global/npc/jean_pierre.lua +++ b/data-otservbr-global/npc/jean_pierre.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 104 + lookType = 104, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,7 +59,7 @@ local ingredients = { [11] = { { 2874, 5, 14 }, { 3725, 5 }, { 3724, 5 }, { 10329, 10 }, { 3581, 10 } }, [12] = { { 10456, 5 }, { 2874, 2, 1 }, { 3595, 20 }, { 8010, 10 }, { 8016, 3 } }, [13] = { { 6569, 3 }, { 3599, 3 }, { 6574, 2 }, { 6500, 15 }, { 6558, 1 } }, - [14] = { { 3606, 40 }, { 5096, 20 }, { 5902, 10 }, { 8758, 1 }, { 5942, 1 } } + [14] = { { 3606, 40 }, { 5096, 20 }, { 5902, 10 }, { 8758, 1 }, { 5942, 1 } }, } local function playerHasIngredients(creature) @@ -115,64 +115,64 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "The first dish we are going to prepare together is called {Rotworm Stew}. Now, don't be scared off. Of course we won't eat those nasty and dirty earth-crawlers! ...", "The name is just for the effect it has on people. Bring me the following ingredients and I'll show you how it's done. ...", - "Two pieces of meat, two vials of beer, twenty potatoes, one onion, one bulb of garlic and five ounces of flour. Make sure that the ingredients are fresh and smell good." + "Two pieces of meat, two vials of beer, twenty potatoes, one onion, one bulb of garlic and five ounces of flour. Make sure that the ingredients are fresh and smell good.", }, npc, creature) npcHandler:setTopic(playerId, 4) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 2 then npcHandler:say({ "The next dish we are going to prepare together is called {Hydra Tongue Salad}. The common hydra tongue is a pest plant with an surprisingly aromatic taste. ...", "We'll add some other vegetables and spices for the delicate and distinctive taste. Bring me the following ingredients and I'll show you how it's done. ...", - "Two hydra tongue plants, two tomatoes, one cucumber, two eggs, one troll green and one vial of wine." + "Two hydra tongue plants, two tomatoes, one cucumber, two eggs, one troll green and one vial of wine.", }, npc, creature) npcHandler:setTopic(playerId, 6) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 3 then npcHandler:say({ "The next dish we are going to prepare together is called {Roasted Dragon Wings}. Oh, don't give me that look! Of course you don't have to bring a whole dragon up here. ...", "The 'dragon' part derives from the fiery afterburn of this meal, but the wings we use are much smaller, though similar in shape. Bring me the following ingredients and I'll show you how it's done. ...", - "One fresh dead bat, three jalapeño peppers, five brown breads, two eggs, one powder herb and five red mushrooms." + "One fresh dead bat, three jalapeño peppers, five brown breads, two eggs, one powder herb and five red mushrooms.", }, npc, creature) npcHandler:setTopic(playerId, 8) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 4 then npcHandler:say({ "The next dish we are going to prepare together is called {Tropical Fried Terrorbird}. You might have guessed it, we're not going to use a terrorbird. But! ...", - "The dish is quite fried and tropical. Bring me the following ingredients and we're going to prepare it: One fresh dead chicken, two lemons, two oranges, two mangos, one stone herb and two vials of coconut milk." + "The dish is quite fried and tropical. Bring me the following ingredients and we're going to prepare it: One fresh dead chicken, two lemons, two oranges, two mangos, one stone herb and two vials of coconut milk.", }, npc, creature) npcHandler:setTopic(playerId, 10) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 5 then npcHandler:say({ "The next dish we are going to prepare together is called {Banana Chocolate Shake}. After all those spicy dishes you should treat your guests with a sweet surprise. ...", - "Bring me the following ingredients and we'll make one hell of a drink: one bar of chocolate, one cream cake, two bananas, two vials of milk, one sling herb and one star herb." + "Bring me the following ingredients and we'll make one hell of a drink: one bar of chocolate, one cream cake, two bananas, two vials of milk, one sling herb and one star herb.", }, npc, creature) npcHandler:setTopic(playerId, 12) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 6 then npcHandler:say({ "The next dish we are going to prepare together is called {Veggie Casserole}. This one is going to be your masterpiece so far, I'm telling you. ...", "It's also quite healthy! - Well, that's what I keep telling me when I eat the third serving, hehehe. Bring me the following ingredients and I'll show you how it's done. ...", - "Two carrots, two tomatoes, two corncobs, two cucumbers, one onion, one bulb of garlic, one piece of cheese, twenty white mushrooms and five brown mushrooms." + "Two carrots, two tomatoes, two corncobs, two cucumbers, one onion, one bulb of garlic, one piece of cheese, twenty white mushrooms and five brown mushrooms.", }, npc, creature) npcHandler:setTopic(playerId, 14) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 7 then npcHandler:say({ "The next dish we are going to prepare together is called {Filled Jalapeño Peppers}. It's a great snack and quite spicy, for those who like it hot. ...", - "Bring me the following ingredients and I'll show you how it's done: Ten jalapeño peppers, two pieces of cheese, one troll green, one shadow herb, one vial of mead and two eggs." + "Bring me the following ingredients and I'll show you how it's done: Ten jalapeño peppers, two pieces of cheese, one troll green, one shadow herb, one vial of mead and two eggs.", }, npc, creature) npcHandler:setTopic(playerId, 16) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 8 then npcHandler:say({ "The next dish we are going to prepare together is called {Blessed Steak}. I'm sorry, I couldn't resist the pun with this one. ...", - "Don't worry, there's no temple trip awaiting you. Just bring me the following: one piece of ham, five plums, one onion, two beetroots, one pumpkin and two jalapeño peppers." + "Don't worry, there's no temple trip awaiting you. Just bring me the following: one piece of ham, five plums, one onion, two beetroots, one pumpkin and two jalapeño peppers.", }, npc, creature) npcHandler:setTopic(playerId, 18) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 9 then npcHandler:say({ "The next dish we are going to prepare together is called {Northern Fishburger}. I hope you like fish, not everyone does. This one is a specialty I picked up in Svargrond. ...", - "Bring me the following ingredients and I'll show you how it's done: one northern pike, one rainbow trout, one green perch, five shrimps, two rolls and one fern." + "Bring me the following ingredients and I'll show you how it's done: one northern pike, one rainbow trout, one green perch, five shrimps, two rolls and one fern.", }, npc, creature) npcHandler:setTopic(playerId, 20) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 10 then npcHandler:say({ "The last dish we are going to prepare together is called {Carrot Cake}. Yes, it's a real cake, we need a tasty desert to complete our cooking course. ...", - "Bring me the following ingredients and I'll lead you through it: five carrots, one vial of milk, one lemon, ten ounces of flour, two eggs, ten cookies and two peanuts." + "Bring me the following ingredients and I'll lead you through it: five carrots, one vial of milk, one lemon, ten ounces of flour, two eggs, ten cookies and two peanuts.", }, npc, creature) npcHandler:setTopic(playerId, 22) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 11 then @@ -180,7 +180,7 @@ local function creatureSayCallback(npc, creature, type, message) "Yes, you heard that right! Even though I was laying sick on my divan for weeks, I have some new dishes for you. Ehem. Of course I couldn't have done it without my little helpers travelling around the world and discovering recipes. ...", "So... ... each good menu needs an amazing starter to awaken and stimulate all the little taste buds on your tongue. We're going to cook a nice portion of {Coconut Shrimp Bake}! ...", "This is an exotic rice dish with hints of mushrooms and shrimps, topped with sweet coconut goodness - brought to me by a beautiful druid lady a few days ago. My mouth starts watering already! ...", - "... because of the dish, I mean, of course. Ehem. Bring me the following ingredients and we'll get started: Five vials of coconut milk, five brown mushrooms, five red mushrooms, ten rice balls and ten shrimps." + "... because of the dish, I mean, of course. Ehem. Bring me the following ingredients and we'll get started: Five vials of coconut milk, five brown mushrooms, five red mushrooms, ten rice balls and ten shrimps.", }, npc, creature) npcHandler:setTopic(playerId, 24) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 12 then @@ -189,7 +189,7 @@ local function creatureSayCallback(npc, creature, type, message) "Luckily, he was saved by nomads - can you imagine? - and they fed him a special local dish that's very cheap and easy to prepare, yet rich in vitamins and spending energy for hours. ...", "Now don't be shocked, but - they do put sandcrawlers in there. When I tried to prepare that dish at first, I was repelled by its awful appearance, but since it smelled so good I did take a sip and was pleasantly surprised of the great taste. ...", "According to the adventurer, this meal works well with any kind of vegetables or any kind of edible creepy-crawlers, depending on what the nomads get their hands on, but we'll stick to the original for now! ...", - "Bring me the following ingredients - if you dare - and I'll show you the secret of {Blackjack}: Five sandcrawler shells, two vials of water, twenty carrots, ten potatoes and three jalapeño peppers." + "Bring me the following ingredients - if you dare - and I'll show you the secret of {Blackjack}: Five sandcrawler shells, two vials of water, twenty carrots, ten potatoes and three jalapeño peppers.", }, npc, creature) npcHandler:setTopic(playerId, 26) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 13 then @@ -198,7 +198,7 @@ local function creatureSayCallback(npc, creature, type, message) "It was introduced to me by a fearless knight who invented this recipe rather by accident when a bottle of demonic blood broke in his backpack and spilled its contents over his bag of candy balls. ...", "Curiously, he tried one and red steam came out of his ears - but it tasted so great that he instantly popped another one in his mouth, and then another, and another. ...", "Each one seemed to cause a different effect and he was never really sure what the next one would do. Seems safer to be careful with them and not to eat them in dangerous situations! ...", - "In any case, bring me the following ingredients and we'll make some {Demonic Candy Balls}, if you like: Three candies, three candy canes, two bars of chocolate, fifteen gingerbread men and one concentrated demonic blood." + "In any case, bring me the following ingredients and we'll make some {Demonic Candy Balls}, if you like: Three candies, three candy canes, two bars of chocolate, fifteen gingerbread men and one concentrated demonic blood.", }, npc, creature) npcHandler:setTopic(playerId, 28) elseif player:getStorageValue(Storage.HotCuisineQuest.CurrentDish) == 14 then @@ -206,7 +206,7 @@ local function creatureSayCallback(npc, creature, type, message) "Did you dare eat all of your Demonic Candy Balls...? Hehehe! Well, I almost forgot one of the most essential parts for a perfect dinner. A drink! I have one for you, almost a designer drink you could say. ...", "Its inventor seems to have done some scientific research in order to achieve his desired effect, which is - charging magical rings. You have to drink it while you're wearing one for a miraculous effect! ...", "Bring me the following ingredients and we'll get started: Fourty eggs, twenty mangos, ten honeycombs, one bottle of bug milk and one blessed wooden stake. ...", - "Oh yes, I understand your worries about the eggs, but just make sure they're fresh and all should be fine for our {Sweet Mangonaise Elixir}!" + "Oh yes, I understand your worries about the eggs, but just make sure they're fresh and all should be fine for our {Sweet Mangonaise Elixir}!", }, npc, creature) npcHandler:setTopic(playerId, 30) end @@ -229,7 +229,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Aah, so let's see! We cook the meat in a large pot together with the chopped onion until it's separated from the bones. Now we also have a fine meat broth! ...", "Cut the potatoes into small pieces and add them to the pot. Add some flour to thicken the stew. Finally, spice it up with some garlic and add beer for the typical dwarvish taste! ...", - "And voilà, we're done. I developed this recipe while talking to Maryza in the Jolly Axeman. She said to eat it when one's health is low. Enjoy!" + "And voilà, we're done. I developed this recipe while talking to Maryza in the Jolly Axeman. She said to eat it when one's health is low. Enjoy!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 2) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 2) @@ -244,7 +244,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Okay, here we go! This one is easy, just chop the hydra tongues, tomatoes and cucumber into tiny pieces. ...", "Now for the sauce - our base is wine, in which we mix the raw eggs until it got a nice smooth consistency. Add grinded troll green, whose flavour is quite similar to basil and shake the sauce in a mug. ...", - "Pour it over the salad, and voilà, we're done! This is a Venorean recipe and very tasty. I recommend eating it when you're suffering from some kind of dangerous condition. Enjoy!" + "Pour it over the salad, and voilà, we're done! This is a Venorean recipe and very tasty. I recommend eating it when you're suffering from some kind of dangerous condition. Enjoy!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 3) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 3) @@ -260,7 +260,7 @@ local function creatureSayCallback(npc, creature, type, message) "Let's get started! The trick with this one is the crunchy crust around the wings. ...", "First, we grate the dry brown bread into very small crumbs and mix that with the two eggs. Add grinded peppers for the spicy taste and the powder herb for a hint of curry flavour. ...", "Carefully separate the bat wings, clean them of any possible hairs and coat them in our mixture. Roast them in a pan together with sliced mushrooms and serve. ...", - "Voilà, we're done! This recipe is from the area around Thais and should help you protect yourself in your battles. Enjoy!" + "Voilà, we're done! This recipe is from the area around Thais and should help you protect yourself in your battles. Enjoy!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 4) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 4) @@ -276,7 +276,7 @@ local function creatureSayCallback(npc, creature, type, message) "This is a recipe right from the jungles of Tiquanda! Grind the stone herb and mix it with the coconut milk, then bathe the chicken in it for a while. ...", "In the meantime, peel the oranges and mangos, chop them into pieces and add them to the mix. Take the chicken out of its bath and fry it, preferably over open fire. ...", "Take the fruits out of the spicy coconut milk and heat them on an oven. Once the chicken is fried, add the fruits and spray some squeezed lemon over it. ...", - "Voilà, we're done! They say that this dish has magical abilities and can awaken secret powers in you during your battles. Enjoy!" + "Voilà, we're done! They say that this dish has magical abilities and can awaken secret powers in you during your battles. Enjoy!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 5) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 5) @@ -292,7 +292,7 @@ local function creatureSayCallback(npc, creature, type, message) "Great! Let's get it done! An easy one again, but you'll get right into holiday mood, like the Meriana beach dwellers I got that recipe from. ...", "Melt the chocolate in a hot-water bath and add the grinded herbs - did you know, those herbs have a flavour like cinnamon and vanilla, yummy! Keep at gentle heat and add the milk. ...", "Mash the banana and stir it really well into the chocolate-milk mixture. Gosh, do you smell that? Pure goodness! Now finally, we take just a bit of the creamcake and fold it in. ...", - "Voilà, we're done! To be honest, I don't know what this drink does, but at least it makes me really happy. Drink together with a loved one and enjoy!" + "Voilà, we're done! To be honest, I don't know what this drink does, but at least it makes me really happy. Drink together with a loved one and enjoy!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 6) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 6) @@ -308,7 +308,7 @@ local function creatureSayCallback(npc, creature, type, message) "So let's start! This is a dish especially famous in the area around Ab'Dendriel! Chop the onions into little cubes and sweat them in a pan until they are glassy. ...", "Add garlic and mushrooms and fry gently until the mushrooms have shrunk up. Now, we add the peeled tomatoes and corn and have it all nicely cook together. ...", "Put in carrot pieces and cucumber at the very end, so they will stay crisp! Finally put the cheese over it like a little blanket have it melt on the oven until it's slightly brownish. ...", - "And voilà, we're done! This dish will help you in your battles and supply you with enough power to hit really hard! Enjoy!" + "And voilà, we're done! This dish will help you in your battles and supply you with enough power to hit really hard! Enjoy!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 7) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 7) @@ -325,7 +325,7 @@ local function creatureSayCallback(npc, creature, type, message) "First of all, remove the top of the jalapeño peppers and clean their inside, so that you have space for the filling. Now for the filling, we grate the cheese and mix it with the mead and the eggs, until it has a nice consistency. ...", "We add the grinded herbs and blend it well. Push a spoonful in each jalapeño pepper until they are nicely stuffed. Now, we shortly fry the jalapeño peppers in a pan to heat them up. ...", "The filling will melt nicely, just be careful that it doesn't drip out! And voilà, we're done! ...", - "This famous dish from Ankrahmun is quite hot and spicy, so only eat one at a time. It's also possible that you get the urge to run really fast afterwards. Enjoy!" + "This famous dish from Ankrahmun is quite hot and spicy, so only eat one at a time. It's also possible that you get the urge to run really fast afterwards. Enjoy!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 8) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 8) @@ -341,7 +341,7 @@ local function creatureSayCallback(npc, creature, type, message) "Here we go! This will break through the meat fibres, making our steak more tender for this fine Daramanian dish. ...", "It's easy to prepare, just chop and sweat the onions and add small pieces of pumpkin, beetroot, plums and peppers. Put the steak into the pan too to let it absorb some of the sweet and fruity flavour. ...", "Finally, remove the fruits and onions from the pan and fry the steak from both sides until it's crisp and crusty. Put on a plate and decorate with the fruit mix. ...", - "The people of Darashia say that it has magical abilities and will help you if you feel totally drained. Enjoy!" + "The people of Darashia say that it has magical abilities and will help you if you feel totally drained. Enjoy!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 9) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 9) @@ -357,7 +357,7 @@ local function creatureSayCallback(npc, creature, type, message) "Great! After all this meat, we shouldn't neglect to prepare some fish. ...", "This easy dish from Svargrond is what you'd call fast food, but its outstanding taste justifies to put it in my book about {Hot Cuisine}. ...", "Simply cut the rolls in half, shortly fry one slice of each fish type, put in the shrimps and spice up with grinded fern, which, by the way, tastes slightly like dill. ...", - "Nicely decorate it on a plate, and voilr, we're done already! Can't tell you much about the effects, but fishermen in Svargrond seem to love it. Enjoy!" + "Nicely decorate it on a plate, and voilr, we're done already! Can't tell you much about the effects, but fishermen in Svargrond seem to love it. Enjoy!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 10) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 10) @@ -376,7 +376,7 @@ local function creatureSayCallback(npc, creature, type, message) "And voilà, we're done! The girls of Carlin swear that it sharpens their eyesight, at least for a while. I'm sure it will somehow aid you in your battles. Enjoy! ...", "Oh, which reminds me - my little apprentice, we are finished with our cooking course. I think you did great and if it was my decision, you could open your own tavern. ...", "But anyway, it's up to you what you make of your newly discovered skills! In case you forget my recipes, please feel free to take a copy of the cookbook upstairs. ...", - "You can drop by and practice cooking those dishes, at least during the time that I'm at home. I promise that I will cook each dish once with you, but then I have to take care of my other apprentices. Cheers to you!" + "You can drop by and practice cooking those dishes, at least during the time that I'm at home. I promise that I will cook each dish once with you, but then I have to take care of my other apprentices. Cheers to you!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 11) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 11) @@ -395,7 +395,7 @@ local function creatureSayCallback(npc, creature, type, message) "In the meantime, our shrimps have absorbed some of the coconut milk and we can now add them on top of the rice. ...", "Now we just need to add the mushrooms , pour the rest of the coconut milk over it and put it into the oven! ...", "... dum di dum ... ...", - "Aaaaaaand there you go! Sweet coconut goodness! And psst - the shrimps add some submarine flavour to this dish. You should definitely eat it while walking underwater and wearing a helmet of the deep. Just in case. Enjoy!" + "Aaaaaaand there you go! Sweet coconut goodness! And psst - the shrimps add some submarine flavour to this dish. You should definitely eat it while walking underwater and wearing a helmet of the deep. Just in case. Enjoy!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 12) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 13) @@ -413,7 +413,7 @@ local function creatureSayCallback(npc, creature, type, message) "Now add whole potatoes and let everything cook at high temperature until the potatoes are so soft they're basically falling apart. ...", "Yes yes, I know, don't give me that look! You'll be surprised! Now just add the chopped carrots and chili for a healthy portion of vitamins and spices, keep stiring and mashing and let it simmer for about an hour. ...", "You're wondering why I chose a simple recipe like that for my famous menu? You'll know when you taste it! ...", - "Heeeeeere you are - just a few spoons of this great stew make you so full that the bowl I give you will last for a long time until it's finally depleted. Enjoy!" + "Heeeeeere you are - just a few spoons of this great stew make you so full that the bowl I give you will last for a long time until it's finally depleted. Enjoy!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 13) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 14) @@ -430,7 +430,7 @@ local function creatureSayCallback(npc, creature, type, message) "After having crushed all those sweets, we need to melt the chocolate into a thick liquid... ...", "... and form little balls together with the sweets! ...", "Now, carefully, we add the demonic blood... ...", - "Here you go, but beware possible side effects! You never know for sure what will happen and so far all of those I tried had awesome effects, so of course I don't hope for nasty surprises! Enjoy!" + "Here you go, but beware possible side effects! You never know for sure what will happen and so far all of those I tried had awesome effects, so of course I don't hope for nasty surprises! Enjoy!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 14) player:setStorageValue(Storage.HotCuisineQuest.QuestLog, 15) @@ -448,7 +448,7 @@ local function creatureSayCallback(npc, creature, type, message) "Now we just have to let it simmer and stir using a blessed wooden stake for thirty minutes. ...", "By now, the power of the blessed wooden stake will have been transferred into our elixir, so let's put out the fire and let it cool down. ...", " There! Its inventor said it had amazing effects on the ring you're wearing, as long as the ring is based on time, not on charges. Enjoy! ...", - "And by the way... since those were all the recipes from this year and you cooked them so nicely, you may take the cookbook containing them from upstairs, if you like!" + "And by the way... since those were all the recipes from this year and you cooked them so nicely, you may take the cookbook containing them from upstairs, if you like!", }, npc, creature) player:setStorageValue(Storage.HotCuisineQuest.QuestStart, 2) player:setStorageValue(Storage.HotCuisineQuest.CurrentDish, 15) diff --git a/data-otservbr-global/npc/jefrey.lua b/data-otservbr-global/npc/jefrey.lua index 6fd8f5bcbe9..13b97dbfee0 100644 --- a/data-otservbr-global/npc/jefrey.lua +++ b/data-otservbr-global/npc/jefrey.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 63, lookLegs = 38, lookFeet = 82, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/jerom.lua b/data-otservbr-global/npc/jerom.lua index 44106f7d695..3cbbde34ac2 100644 --- a/data-otservbr-global/npc/jerom.lua +++ b/data-otservbr-global/npc/jerom.lua @@ -16,19 +16,19 @@ npcConfig.outfit = { lookBody = 78, lookLegs = 78, lookFeet = 114, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'My house! Uahahahaha .' }, - { text = 'Dear gods! My precious house, DESTROYED!!' }, - { text = 'Oh no!! What am I supposed to do now?!?' } + { text = "My house! Uahahahaha ." }, + { text = "Dear gods! My precious house, DESTROYED!!" }, + { text = "Oh no!! What am I supposed to do now?!?" }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/jeronimo.lua b/data-otservbr-global/npc/jeronimo.lua index 4bd29641862..5f9fdc122e3 100644 --- a/data-otservbr-global/npc/jeronimo.lua +++ b/data-otservbr-global/npc/jeronimo.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 59, lookLegs = 3, lookFeet = 1, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Change your Bar of Gold\'s for Items here!' } + { text = "Change your Bar of Gold's for Items here!" }, } local keywordHandler = KeywordHandler:new() @@ -64,7 +64,7 @@ local eventShopItems = { ["green light"] = { 21217, 1, 70 }, ["blood herb"] = { 3734, 3, 10 }, ["draken doll"] = { 12044, 1, 70 }, - ["bear doll"] = { 3001, 1, 70 } + ["bear doll"] = { 3001, 1, 70 }, } local function creatureSayCallback(npc, creature, type, message) @@ -76,14 +76,14 @@ local function creatureSayCallback(npc, creature, type, message) end message = string.lower(message) - if (message == "event shop") then + if message == "event shop" then npcHandler:say("In our website enter in {Events} => {Events Shop}.", npc, creature) end - if (eventShopItems[message]) then + if eventShopItems[message] then npcHandler:setTopic(playerId, 0) local itemId, itemCount, itemPrice = eventShopItems[message][1], eventShopItems[message][2], eventShopItems[message][3] - if (player:getItemCount(14112) > 0) then + if player:getItemCount(14112) > 0 then npcHandler:say("You want buy {" .. message .. "} for " .. itemPrice .. "x?", npc, creature) npcHandler:setTopic(message) else @@ -92,13 +92,13 @@ local function creatureSayCallback(npc, creature, type, message) end end - if (eventShopItems[npcHandler:getTopic(playerId)]) then + if eventShopItems[npcHandler:getTopic(playerId)] then local itemId, itemCount, itemPrice = eventShopItems[npcHandler:getTopic(playerId)][1], eventShopItems[npcHandler:getTopic(playerId)][2], eventShopItems[npcHandler:getTopic(playerId)][3] if message == "no" then npcHandler:say("So... what you want?", npc, creature) npcHandler:setTopic(playerId, 0) elseif message == "yes" then - if (player:getItemCount(14112) >= itemPrice) then + if player:getItemCount(14112) >= itemPrice then npcHandler:say("You bought {" .. npcHandler:getTopic(playerId) .. "} " .. itemCount .. "x for " .. itemPrice .. " {Bar of Gold(s)}!", npc, creature) player:removeItem(14112, itemPrice) player:addItem(itemId, itemCount) diff --git a/data-otservbr-global/npc/jessica.lua b/data-otservbr-global/npc/jessica.lua index e17fcd8ccff..ff0b8ba0d91 100644 --- a/data-otservbr-global/npc/jessica.lua +++ b/data-otservbr-global/npc/jessica.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 16, lookLegs = 18, lookFeet = 33, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() @@ -140,7 +140,7 @@ npcConfig.shop = { { itemName = "watermelon tourmaline", clientId = 33780, sell = 230000 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, { itemName = "wedding ring", clientId = 3004, buy = 990 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -151,7 +151,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/jezzara.lua b/data-otservbr-global/npc/jezzara.lua index 5bfe037d827..137dbbe03b3 100644 --- a/data-otservbr-global/npc/jezzara.lua +++ b/data-otservbr-global/npc/jezzara.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 44, lookLegs = 91, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Food of various kinds, have a look.' } + { text = "Food of various kinds, have a look." }, } local keywordHandler = KeywordHandler:new() @@ -77,7 +77,7 @@ npcConfig.shop = { { itemName = "orange", clientId = 3586, buy = 9 }, { itemName = "pumpkin", clientId = 3594, buy = 10 }, { itemName = "salmon", clientId = 3579, buy = 7 }, - { itemName = "tomato", clientId = 3596, buy = 10 } + { itemName = "tomato", clientId = 3596, buy = 10 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -88,7 +88,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/jimbin.lua b/data-otservbr-global/npc/jimbin.lua index cbb59bdc032..9adf7a48675 100644 --- a/data-otservbr-global/npc/jimbin.lua +++ b/data-otservbr-global/npc/jimbin.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 97, lookBody = 127, lookLegs = 97, - lookFeet = 76 + lookFeet = 76, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/jimmy.lua b/data-otservbr-global/npc/jimmy.lua index 0470ed29065..78490ac564f 100644 --- a/data-otservbr-global/npc/jimmy.lua +++ b/data-otservbr-global/npc/jimmy.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 38, lookFeet = 0, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/john.lua b/data-otservbr-global/npc/john.lua index 06d11bc1403..498ded60b3e 100644 --- a/data-otservbr-global/npc/john.lua +++ b/data-otservbr-global/npc/john.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 68, lookLegs = 38, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -62,7 +62,7 @@ npcConfig.shop = { { itemName = "torch", clientId = 2920, buy = 5 }, { itemName = "treasure map", clientId = 5090, buy = 1000 }, { itemName = "very noble-looking watch", clientId = 6092, buy = 500 }, - { itemName = "worm", clientId = 3492, buy = 2 } + { itemName = "worm", clientId = 3492, buy = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -73,7 +73,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/jondrin.lua b/data-otservbr-global/npc/jondrin.lua index d59960827ff..1e9a99c1070 100644 --- a/data-otservbr-global/npc/jondrin.lua +++ b/data-otservbr-global/npc/jondrin.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 25, lookLegs = 30, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,14 +54,14 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (MsgContains(message, "necrometer")) then + if MsgContains(message, "necrometer") then --[[if player:getStorageValue(Storage.Oramond.TaskProbing == 1) then --for this mission is needed script of the npc Doubleday]] npcHandler:say("A necrometer? Have you any idea how rare and expensive a necrometer is? There is no way I could justify giving a necrometer to an inexperienced adventurer. Hm, although ... if you weren't inexperienced that would be a different matter. ...", npc, creature) npcHandler:say("Did you do any measuring task for Doubleday lately?", npc, creature) npcHandler:setTopic(playerId, 1) --end - elseif (MsgContains(message, "yes")) then + elseif MsgContains(message, "yes") then if (npcHandler:getTopic(playerId) == 1) and player:getStorageValue(Storage.DarkTrails.Mission09) == 1 then npcHandler:say("Indeed I heard you did a good job out there. I guess that means I can hand you one of our necrometers. Handle it with care", npc, creature) npcHandler:setTopic(playerId, 0) diff --git a/data-otservbr-global/npc/jorge.lua b/data-otservbr-global/npc/jorge.lua index 8c5de7ed640..1fa43c74c62 100644 --- a/data-otservbr-global/npc/jorge.lua +++ b/data-otservbr-global/npc/jorge.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 38, lookBody = 77, lookLegs = 78, - lookFeet = 94 + lookFeet = 94, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -80,7 +80,7 @@ local items = { [28] = { name = "Phoenix Statue", id = 22026 }, [29] = { name = "The Mexcalibur", id = 19154 }, [30] = { name = "TibiaHispano Emblem", id = 25980 }, - [31] = { name = "Goromaphone", id = 34210 } + [31] = { name = "Goromaphone", id = 34210 }, } local function greetCallback(npc, creature) @@ -96,16 +96,15 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if message then for i = 1, #items do if MsgContains(message, items[i].name) then if getPlayerItemCount(creature, 19083) >= 20 then doPlayerRemoveItem(creature, 19083, 20) doPlayerAddItem(creature, items[i].id, 1) - selfSay('You just swapped 20 silver raid tokens for 1 ' .. getItemName(items[i].name) .. '.', npc, creature) + selfSay("You just swapped 20 silver raid tokens for 1 " .. getItemName(items[i].name) .. ".", npc, creature) else - selfSay('You need 20 silver raid tokens.', npc, creature) + selfSay("You need 20 silver raid tokens.", npc, creature) end end end diff --git a/data-otservbr-global/npc/jossel.lua b/data-otservbr-global/npc/jossel.lua index 429c41751e5..5839cf37848 100644 --- a/data-otservbr-global/npc/jossel.lua +++ b/data-otservbr-global/npc/jossel.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 104, lookLegs = 104, lookFeet = 104, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/julian.lua b/data-otservbr-global/npc/julian.lua index 2cabd02b396..eeec5740f7a 100644 --- a/data-otservbr-global/npc/julian.lua +++ b/data-otservbr-global/npc/julian.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 30, lookLegs = 23, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,7 @@ npcConfig.shop = { { itemName = "lute", clientId = 2950, buy = 195 }, { itemName = "lyre", clientId = 2949, buy = 120 }, { itemName = "piano kit", clientId = 2807, buy = 200 }, - { itemName = "simple fanfare", clientId = 2954, buy = 150 } + { itemName = "simple fanfare", clientId = 2954, buy = 150 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -69,7 +69,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/julius.lua b/data-otservbr-global/npc/julius.lua index 46c4fb0646e..df9c58cd905 100644 --- a/data-otservbr-global/npc/julius.lua +++ b/data-otservbr-global/npc/julius.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 114, lookFeet = 113, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -94,7 +94,8 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(BloodBrothers.Mission02) == 2 and player:getStorageValue(BloodBrothers.Mission03) < 0 then npcHandler:say({ "Listen, I thought of something. If we could somehow figure out who among those five is their leader and manage to defeat him,the others might give up too. ...", - "Without their leader they will at least be much weaker. Before I explain my plan, do you think you could do that?" }, npc, creature) + "Without their leader they will at least be much weaker. Before I explain my plan, do you think you could do that?", + }, npc, creature) npcHandler:setTopic(playerId, 9) elseif player:getStorageValue(BloodBrothers.Mission03) == 2 then npcHandler:say("Oh! You look horrible - I mean, rather weary. What happened? Who is the master vampire?", npc, creature) @@ -104,7 +105,8 @@ local function creatureSayCallback(npc, creature, type, message) "You know, I came to think that the spell didn't work because there is another, greater power behind all of this. I fear that if we don't find the source of the vampire threat we can't defeat them. ...", "I heard that there is an island not far from here. Unholy and fearsome things are said to happen there, and maybe that means vampires are not far away. ...", "I want you to try and convince someone with a boat to bring you to this island, Vengoth. I'll give you an empty map. Please map the area for me and pay special attention to unusual spots. ...", - "Mark them on my map and come back once you have found at least five remarkable places on Vengoth. Can you do that for me?" }, npc, creature) + "Mark them on my map and come back once you have found at least five remarkable places on Vengoth. Can you do that for me?", + }, npc, creature) npcHandler:setTopic(playerId, 12) end elseif message == "yes" then @@ -121,7 +123,8 @@ local function creatureSayCallback(npc, creature, type, message) "As I already told you, anyone in this city could really be a vampire, even the most unsuspicious citizen. I want you to find that brood. ...", "You can possibly identify the vampires by using a trick with hidden garlic, but better put it into something unsuspicious, like... cookies maybe! ...", "Just bake a few by using holy water on flour, then use that holy water dough on garlic, use the garlic dough on a baking tray and finally place the tray on an oven. Then just play little girl scout and distribute some cookies to the citizens. ...", - "Watch their reaction! If it's suspicious, write down the name and let me know. Then we'll work something out against them. Agreed?" }, npc, creature) + "Watch their reaction! If it's suspicious, write down the name and let me know. Then we'll work something out against them. Agreed?", + }, npc, creature) npcHandler:setTopic(playerId, 6) elseif npcHandler:getTopic(playerId) == 6 then npcHandler:say("Fine. Good luck! Talk to me again about your mission once you have confirmed the names of five suspects.", npc, creature) @@ -133,12 +136,14 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Great, now here's my plan. As I said, my strength lies not on the battlefield, but it's theory and knowledge. While you were distributing cookies I developed a spell. ...", "This spell is designed to reveal the identity of the master vampire and force him to show his true face. It is even likely that it instantly defeats him. ...", - "I want you to go to the five vampires you detected and try out the magic formula on them. One of them - the oldest and most powerful - will react to it, I'm sure of it. The words are: '{Alori Mort}'. Please repeat them." }, npc, creature) + "I want you to go to the five vampires you detected and try out the magic formula on them. One of them - the oldest and most powerful - will react to it, I'm sure of it. The words are: '{Alori Mort}'. Please repeat them.", + }, npc, creature) npcHandler:setTopic(playerId, 10) elseif npcHandler:getTopic(playerId) == 12 then npcHandler:say({ "Here is the map. When you are standing near a remarkable spot, use it to mark that spot on the map. Don't forget, come back with at least five marks! ...", - "Also, they say there is a castle on this island. That mark HAS to be included, it's far too important to leave it out. Good luck!" }, npc, creature) + "Also, they say there is a castle on this island. That mark HAS to be included, it's far too important to leave it out. Good luck!", + }, npc, creature) player:addItem(8200) player:setStorageValue(BloodBrothers.Mission04, 1) player:setStorageValue(BloodBrothers.VengothAccess, 1) @@ -249,7 +254,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "blood preservation", clientId = 11449, sell = 320 }, - { itemName = "vampire teeth", clientId = 9685, sell = 275 } + { itemName = "vampire teeth", clientId = 9685, sell = 275 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -260,7 +265,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/junkar_mines.lua b/data-otservbr-global/npc/junkar_mines.lua index 9a40961be08..69879fe4595 100644 --- a/data-otservbr-global/npc/junkar_mines.lua +++ b/data-otservbr-global/npc/junkar_mines.lua @@ -11,18 +11,18 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 66 + lookType = 66, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'So much to do. So many things to be fixed.' }, - { text = 'Still so much work.' } + { text = "So much to do. So many things to be fixed." }, + { text = "Still so much work." }, } local keywordHandler = KeywordHandler:new() @@ -54,16 +54,16 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = (text or 'So you wish for a trip to ') .. keyword:titleCase() .. '? |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = 'Full steam ahead!', cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, then you stay here, simple as that.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = (text or "So you wish for a trip to ") .. keyword:titleCase() .. "? |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = "Full steam ahead!", cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Well, then you stay here, simple as that.", reset = true }) end -addTravelKeyword('kazordoon', 10, Position(32660, 31957, 15)) -addTravelKeyword('thais', 90, Position(32370, 32180, 13)) -addTravelKeyword('robsons isle', 70, Position(32527, 32036, 14)) +addTravelKeyword("kazordoon", 10, Position(32660, 31957, 15)) +addTravelKeyword("thais", 90, Position(32370, 32180, 13)) +addTravelKeyword("robsons isle", 70, Position(32527, 32036, 14)) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want me to take you? To {Kazordoon}, {Thais} or to {Robsons Isle}?' }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want me to take you? To {Kazordoon}, {Thais} or to {Robsons Isle}?" }) npcHandler:setMessage(MESSAGE_GREET, "Welcome, |PLAYERNAME|! You are lucky that the service is running right now. Save your coal for the days to come though!") npcHandler:setMessage(MESSAGE_FAREWELL, "See you next time!") diff --git a/data-otservbr-global/npc/junkar_robsons.lua b/data-otservbr-global/npc/junkar_robsons.lua index 4aca254a5ae..418538f0b3d 100644 --- a/data-otservbr-global/npc/junkar_robsons.lua +++ b/data-otservbr-global/npc/junkar_robsons.lua @@ -11,18 +11,18 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 66 + lookType = 66, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'So much to do. So many things to be fixed.' }, - { text = 'Still so much work.' } + { text = "So much to do. So many things to be fixed." }, + { text = "Still so much work." }, } local keywordHandler = KeywordHandler:new() @@ -54,16 +54,16 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = (text or 'So you wish for a trip to ') .. keyword:titleCase() .. '? |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = 'Full speed ahead!', cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, then you stay here, simple as that.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = (text or "So you wish for a trip to ") .. keyword:titleCase() .. "? |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = "Full speed ahead!", cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Well, then you stay here, simple as that.", reset = true }) end -addTravelKeyword('kazordoon', 80, Position(32660, 31957, 15)) -addTravelKeyword('thais', 80, Position(32370, 32180, 13)) -addTravelKeyword('mines', 70, Position(32555, 32069, 10)) +addTravelKeyword("kazordoon", 80, Position(32660, 31957, 15)) +addTravelKeyword("thais", 80, Position(32370, 32180, 13)) +addTravelKeyword("mines", 70, Position(32555, 32069, 10)) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want me to take you? To {Kazordoon} or to {Thais}? Occasionally we can even reach the {mines} if they are cleared.' }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want me to take you? To {Kazordoon} or to {Thais}? Occasionally we can even reach the {mines} if they are cleared." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome, |PLAYERNAME|! You are lucky that the service is running right now. Save your coal for the days to come though!") npcHandler:setMessage(MESSAGE_FAREWELL, "See you next time!") diff --git a/data-otservbr-global/npc/junkar_thais.lua b/data-otservbr-global/npc/junkar_thais.lua index f7d143ae89a..c3deb8783ad 100644 --- a/data-otservbr-global/npc/junkar_thais.lua +++ b/data-otservbr-global/npc/junkar_thais.lua @@ -11,18 +11,18 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 66 + lookType = 66, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'So much to do. So many things to be fixed.' }, - { text = 'Still so much work.' } + { text = "So much to do. So many things to be fixed." }, + { text = "Still so much work." }, } local keywordHandler = KeywordHandler:new() @@ -54,16 +54,16 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = (text or 'So you wish for a trip to ') .. keyword:titleCase() .. '? |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = 'Full steam ahead!', cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, then you stay here, simple as that.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = (text or "So you wish for a trip to ") .. keyword:titleCase() .. "? |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = "Full steam ahead!", cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Well, then you stay here, simple as that.", reset = true }) end -addTravelKeyword('kazordoon', 100, Position(32660, 31957, 15)) -addTravelKeyword('robsons isle', 80, Position(32527, 32036, 14)) -addTravelKeyword('mines', 90, Position(32555, 32069, 10)) +addTravelKeyword("kazordoon", 100, Position(32660, 31957, 15)) +addTravelKeyword("robsons isle", 80, Position(32527, 32036, 14)) +addTravelKeyword("mines", 90, Position(32555, 32069, 10)) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want me to take you? To {Kazordoon} or to {Robsons Isle}? Occasionally we can even reach the {mines} if they are cleared.' }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want me to take you? To {Kazordoon} or to {Robsons Isle}? Occasionally we can even reach the {mines} if they are cleared." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome, |PLAYERNAME|! You are lucky that the service is running right now. Save your coal for the days to come though!") npcHandler:setMessage(MESSAGE_FAREWELL, "See you next time!") diff --git a/data-otservbr-global/npc/kais.lua b/data-otservbr-global/npc/kais.lua index f3b4ef031cd..d7fe97f0e75 100644 --- a/data-otservbr-global/npc/kais.lua +++ b/data-otservbr-global/npc/kais.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 103 + lookType = 103, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -46,58 +46,66 @@ npcType.onCloseChannel = function(npc, creature) end -- Blood of the Mountain -local blessKeyword = keywordHandler:addKeyword({ 'blood' }, StdModule.say, { npcHandler = npcHandler, text = 'Would you like to receive that protection for a sacrifice of |BLESSCOST| gold, child?' }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the Blood of the Mountain, pilgrim.', cost = '|BLESSCOST|', bless = 7 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +local blessKeyword = keywordHandler:addKeyword({ "blood" }, StdModule.say, { npcHandler = npcHandler, text = "Would you like to receive that protection for a sacrifice of |BLESSCOST| gold, child?" }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the Blood of the Mountain, pilgrim.", cost = "|BLESSCOST|", bless = 7 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, noble |PLAYERNAME|') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good Bye, noble |PLAYERNAME|') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good Bye, noble |PLAYERNAME|') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, noble |PLAYERNAME|") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good Bye, noble |PLAYERNAME|") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good Bye, noble |PLAYERNAME|") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/kallimae.lua b/data-otservbr-global/npc/kallimae.lua index d9bd46fe22d..61be4cb34a9 100644 --- a/data-otservbr-global/npc/kallimae.lua +++ b/data-otservbr-global/npc/kallimae.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 52, lookLegs = 0, lookFeet = 71, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,8 +57,7 @@ local function greetCallback(npc, creature) if player:getStorageValue(Storage.Kilmaresh.First.Access) < 1 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) - and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then + elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 15) elseif player:getStorageValue(Storage.Kilmaresh.First.Mission) == 4 then @@ -135,7 +134,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/kalvin.lua b/data-otservbr-global/npc/kalvin.lua index c2edafe4ead..0cdd047be92 100644 --- a/data-otservbr-global/npc/kalvin.lua +++ b/data-otservbr-global/npc/kalvin.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 117, lookLegs = 120, lookFeet = 126, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/karith.lua b/data-otservbr-global/npc/karith.lua index 5306e25788d..204846c0f39 100644 --- a/data-otservbr-global/npc/karith.lua +++ b/data-otservbr-global/npc/karith.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 3, lookLegs = 93, lookFeet = 12, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'This weather is killing me. If I only had enough money to retire.' } + { text = "This weather is killing me. If I only had enough money to retire." }, } local keywordHandler = KeywordHandler:new() @@ -61,10 +61,10 @@ local function greetCallback(npc, creature) local playerId = player:getId() if player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) == -1 then - npcHandler:setMessage(MESSAGE_GREET, 'Hello! Tell me what\'s on your mind. Time is money.') + npcHandler:setMessage(MESSAGE_GREET, "Hello! Tell me what's on your mind. Time is money.") player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, 0) else - npcHandler:setMessage(MESSAGE_GREET, 'Hello! Tell me what\'s on your mind. Time is money.') + npcHandler:setMessage(MESSAGE_GREET, "Hello! Tell me what's on your mind. Time is money.") end return true end @@ -81,27 +81,27 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 then npcHandler:say({ "I see no reason to establish ship routes to other cities. There is nothing that would be worth the effort. ...", - "But since you won\'t stop bugging me, let\'s make a deal: If you can prove that at least five of your so-called \'cities\' are not worthless, I might reconsider my position. ...", - "Bring me something SPECIAL! The local bar tenders usually know what\'s interesting about their city.", + "But since you won't stop bugging me, let's make a deal: If you can prove that at least five of your so-called 'cities' are not worthless, I might reconsider my position. ...", + "Bring me something SPECIAL! The local bar tenders usually know what's interesting about their city.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) >= 5 then npcHandler:say({ - "For the sake of profit, we established ship routes to {Ab\'Dendriel}, {Darashia}, {Venore}, {Ankrahmun}, {Port Hope}, {Thais}, {Liberty Bay} and {Carlin}.", + "For the sake of profit, we established ship routes to {Ab'Dendriel}, {Darashia}, {Venore}, {Ankrahmun}, {Port Hope}, {Thais}, {Liberty Bay} and {Carlin}.", }, npc, creature) npcHandler:setTopic(playerId, 0) else return false end - elseif MsgContains(message, "Ab\'Dendriel") then + elseif MsgContains(message, "Ab'Dendriel") then if player:getStorageValue(Storage.SearoutesAroundYalahar.AbDendriel) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 then npcHandler:say({ - "I\'ve never been there. I doubt the elves there came up with something noteworthy. Or did you find something interesting there?", + "I've never been there. I doubt the elves there came up with something noteworthy. Or did you find something interesting there?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.SearoutesAroundYalahar.AbDendriel) == 1 or player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) >= 5 then npcHandler:say({ - "Do you want a passage to Ab\'Dendriel for 160 gold?", ---missing line + "Do you want a passage to Ab'Dendriel for 160 gold?", ---missing line }, npc, creature) npcHandler:setTopic(playerId, 11) else @@ -128,7 +128,7 @@ local function creatureSayCallback(npc, creature, type, message) }, npc, creature) npcHandler:setTopic(playerId, 3) elseif player:getStorageValue(Storage.SearoutesAroundYalahar.Venore) == 1 or player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) >= 5 then - npcHandler:say({ "The swamp spice will turn out very lucrative considering that it helps to make even the most disgusting dish taste good. Do you want a passage to Venore for 185 gold?", }, npc, creature) + npcHandler:say({ "The swamp spice will turn out very lucrative considering that it helps to make even the most disgusting dish taste good. Do you want a passage to Venore for 185 gold?" }, npc, creature) npcHandler:setTopic(playerId, 13) else return false @@ -220,7 +220,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) + 1) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 4 and player:removeItem(8761, 1) then - npcHandler:say("I can hardly imagine that someone is interested in embalming fluid, but I\'ll give it a try.", npc, creature) + npcHandler:say("I can hardly imagine that someone is interested in embalming fluid, but I'll give it a try.", npc, creature) player:setStorageValue(Storage.SearoutesAroundYalahar.Ankrahmun, 1) player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) + 1) npcHandler:setTopic(playerId, 0) @@ -251,7 +251,7 @@ local function creatureSayCallback(npc, creature, type, message) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) else - npcHandler:say("You don\'t have enough money.", npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 12 then @@ -261,7 +261,7 @@ local function creatureSayCallback(npc, creature, type, message) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) else - npcHandler:say("You don\'t have enough money.", npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 13 then @@ -271,7 +271,7 @@ local function creatureSayCallback(npc, creature, type, message) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) else - npcHandler:say("You don\'t have enough money.", npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 14 then @@ -281,7 +281,7 @@ local function creatureSayCallback(npc, creature, type, message) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) else - npcHandler:say("You don\'t have enough money.", npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 15 then @@ -291,7 +291,7 @@ local function creatureSayCallback(npc, creature, type, message) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) else - npcHandler:say("You don\'t have enough money.", npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 16 then @@ -301,7 +301,7 @@ local function creatureSayCallback(npc, creature, type, message) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) else - npcHandler:say("You don\'t have enough money.", npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 17 then @@ -311,7 +311,7 @@ local function creatureSayCallback(npc, creature, type, message) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) else - npcHandler:say("You don\'t have enough money.", npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 18 then @@ -321,31 +321,31 @@ local function creatureSayCallback(npc, creature, type, message) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) else - npcHandler:say("You don\'t have enough money.", npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) npcHandler:setTopic(playerId, 0) end else - npcHandler:say("Don\'t waste my time.", npc, creature) + npcHandler:say("Don't waste my time.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "no") then - npcHandler:say({ "Then no.", }, npc, creature) + npcHandler:say({ "Then no." }, npc, creature) npcHandler:setTopic(playerId, 0) end return true end -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32811, 31267, 6), Position(32811, 31270, 6), Position(32811, 31273, 6) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32811, 31267, 6), Position(32811, 31270, 6), Position(32811, 31273, 6) } }) -- Basic -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m Karith. I don\'t belong to a caste any longer, and only serve the Yalahari.' }) -keywordHandler:addKeyword({ 'yalahar' }, StdModule.say, { npcHandler = npcHandler, text = 'The city was a marvel to behold. It is certain that it have been the many foreigners that ruined it.' }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Karith. I don't belong to a caste any longer, and only serve the Yalahari." }) +keywordHandler:addKeyword({ "yalahar" }, StdModule.say, { npcHandler = npcHandler, text = "The city was a marvel to behold. It is certain that it have been the many foreigners that ruined it." }) -- Greeting message -keywordHandler:addGreetKeyword({ "ashari" }, { npcHandler = npcHandler, text = "Hello! Tell me what\'s on your mind. Time is money." }) +keywordHandler:addGreetKeyword({ "ashari" }, { npcHandler = npcHandler, text = "Hello! Tell me what's on your mind. Time is money." }) --Farewell message keywordHandler:addFarewellKeyword({ "asgha thrazi" }, { npcHandler = npcHandler, text = "Goodbye, |PLAYERNAME|." }) diff --git a/data-otservbr-global/npc/karl.lua b/data-otservbr-global/npc/karl.lua index 4860b475c93..9af696aa25d 100644 --- a/data-otservbr-global/npc/karl.lua +++ b/data-otservbr-global/npc/karl.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 49, lookLegs = 70, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,22 +58,21 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'barrel') then + if MsgContains(message, "barrel") then if player:getStorageValue(Storage.SecretService.AVINMission03) == 2 then - npcHandler:say('Do you bring me a barrel of beer??', npc, creature) + npcHandler:say("Do you bring me a barrel of beer??", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'whisper beer') then + elseif MsgContains(message, "whisper beer") then if player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 11 then - npcHandler:say('Do you want to buy a bottle of our finest whisper beer for 80 gold?', npc, creature) + npcHandler:say("Do you want to buy a bottle of our finest whisper beer for 80 gold?", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then if player:removeItem(404, 1) then player:setStorageValue(Storage.SecretService.AVINMission03, 3) - npcHandler:say('Three cheers for the noble |PLAYERNAME|.', npc, creature) + npcHandler:say("Three cheers for the noble |PLAYERNAME|.", npc, creature) else npcHandler:say("You don't have any barrel of beer!", npc, creature) end @@ -96,13 +95,13 @@ end npcHandler:setMessage(MESSAGE_WALKAWAY, "Please come back, but don't tell others.") npcHandler:setMessage(MESSAGE_FAREWELL, "Please come back, but don't tell others.") -npcHandler:setMessage(MESSAGE_GREET, 'Pshhhht! Not that loud ... but welcome.') +npcHandler:setMessage(MESSAGE_GREET, "Pshhhht! Not that loud ... but welcome.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "bottle of whisper beer", clientId = 6106, buy = 80 }, - { itemName = "mug of beer", clientId = 2880, buy = 20, count = 3 } + { itemName = "mug of beer", clientId = 2880, buy = 20, count = 3 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -113,7 +112,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/kasmir.lua b/data-otservbr-global/npc/kasmir.lua index 405dc7ad4bd..6468a40c094 100644 --- a/data-otservbr-global/npc/kasmir.lua +++ b/data-otservbr-global/npc/kasmir.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 38, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,102 +51,125 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Kasmir) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Kasmir) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Kasmir, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Wooden Stake -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'I think you have forgotten to bring your stake, pilgrim.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 7 and player:getItemCount(5941) == 0 end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "I think you have forgotten to bring your stake, pilgrim." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 7 and player:getItemCount(5941) == 0 +end) -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I was informed what to do. Are you prepared to receive my line of the prayer?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 7 end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive my prayer: \'Let there be honour and humility\'. Now, bring your stake to Rahkem in Ankrahmun for the next line of the prayer. I will inform him what to do.', reset = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 8) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - end -) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'I will wait for you.', reset = true }) +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I was informed what to do. Are you prepared to receive my line of the prayer?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 7 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive my prayer: 'Let there be honour and humility'. Now, bring your stake to Rahkem in Ankrahmun for the next line of the prayer. I will inform him what to do.", reset = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 8) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "I will wait for you.", reset = true }) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You should visit Rahkem in Ankrahmun now, pilgrim.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 8 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You already received my line of the prayer.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 8 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'A blessed stake? That is a strange request. Maybe Quentin knows more, he is one of the oldest monks after all.' }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You should visit Rahkem in Ankrahmun now, pilgrim." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 8 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You already received my line of the prayer." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 8 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "A blessed stake? That is a strange request. Maybe Quentin knows more, he is one of the oldest monks after all." }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/kawill.lua b/data-otservbr-global/npc/kawill.lua index e3dbeb2cb8e..4a298e27f95 100644 --- a/data-otservbr-global/npc/kawill.lua +++ b/data-otservbr-global/npc/kawill.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 66 + lookType = 66, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -46,46 +46,48 @@ npcType.onCloseChannel = function(npc, creature) end -- Kawill Blessing -local blessKeyword = keywordHandler:addKeyword({ 'spark of the phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The Spark of the Phoenix is given by me and by the great pyromancer in the nearby fire temple. Do you wish to receive my part of the Spark of the Phoenix?' }, function(player) return player:getStorageValue(Storage.KawillBlessing) ~= 1 end) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive the blessing of the life-giving earth, pilgrim.', reset = true }, nil, function(player) +local blessKeyword = keywordHandler:addKeyword({ "spark of the phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The Spark of the Phoenix is given by me and by the great pyromancer in the nearby fire temple. Do you wish to receive my part of the Spark of the Phoenix?" }, function(player) + return player:getStorageValue(Storage.KawillBlessing) ~= 1 +end) +blessKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive the blessing of the life-giving earth, pilgrim.", reset = true }, nil, function(player) player:setStorageValue(Storage.KawillBlessing, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) end) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Ok. If you don\'t want it...', reset = true }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addAliasKeyword({ 'phoenix' }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Ok. If you don't want it...", reset = true }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addAliasKeyword({ "phoenix" }) -- Basic -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = 'The gods are treacherous and vain. They want to use us like they did in the past. Only the elements can be trusted, because all they want is for nature to run its set course.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the great geomancer of dwarvenkind.' }) -keywordHandler:addKeyword({ 'geomancer' }, StdModule.say, { npcHandler = npcHandler, text = 'We investigate the will of the earth. It is our duty to make sure things to work in their natural way.' }) -keywordHandler:addKeyword({ 'life' }, StdModule.say, { npcHandler = npcHandler, text = 'Life is born by earth and fed by earth.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I am Kawill Marbleeye, Son of Earth, from the Molten Rock.' }) -keywordHandler:addKeyword({ 'quest' }, StdModule.say, { npcHandler = npcHandler, text = 'There\'s nothing I need, better ask others.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'Nice world in general. It\'s a shame there is so much water ruining the general impression.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'Time is not of importance.' }) -keywordHandler:addKeyword({ 'monsters' }, StdModule.say, { npcHandler = npcHandler, text = 'May the earth swallow them all!' }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, a weapon to be feared by man, beast and god alike, jawoll. He who wields it will be both blessed and cursed at the same time.' }) -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { npcHandler = npcHandler, text = 'The day will come when he finally bites the dust.' }) -keywordHandler:addKeyword({ 'kazordoon' }, StdModule.say, { npcHandler = npcHandler, text = 'By using the powers of fire and earth we forced the river that once wound its way through the big old one in other directions, and created our home.' }) -keywordHandler:addKeyword({ 'bezil' }, StdModule.say, { npcHandler = npcHandler, text = 'Bezil and Nezil have pawn and equpiment shop with an amazing stock.' }) -keywordHandler:addKeyword({ 'nezil' }, StdModule.say, { npcHandler = npcHandler, text = 'Bezil and Nezil have pawn and equpiment shop with an amazing stock.' }) -keywordHandler:addKeyword({ 'duria' }, StdModule.say, { npcHandler = npcHandler, text = 'The first knight of dwarvenkind is a fine woman.' }) -keywordHandler:addKeyword({ 'etzel' }, StdModule.say, { npcHandler = npcHandler, text = 'I fear the sorcerers focus on the destructive forces of fire. They forget about the protection earth could provide.' }) -keywordHandler:addKeyword({ 'jimbin' }, StdModule.say, { npcHandler = npcHandler, text = 'He is a jolly fellow and one of the oldest dwarves alive.' }) -keywordHandler:addKeyword({ 'kroox' }, StdModule.say, { npcHandler = npcHandler, text = 'He is a fine smith and his armour may save your neck one day.' }) -keywordHandler:addKeyword({ 'maryza' }, StdModule.say, { npcHandler = npcHandler, text = 'She is a fine cook, jawoll.' }) -keywordHandler:addKeyword({ 'uzgod' }, StdModule.say, { npcHandler = npcHandler, text = 'Uzgod is a blacksmith and understands the ways of his element well.' }) -keywordHandler:addKeyword({ 'kruzak' }, StdModule.say, { npcHandler = npcHandler, text = 'The emperor has rarely visited the temple district in the last years. He should care more about spirituality then about politics. Jawoll.' }) -keywordHandler:addKeyword({ 'emperor' }, StdModule.say, { npcHandler = npcHandler, text = 'The emperor has rarely visited the temple district in the last years. He should care more about spirituality then about politics. Jawoll.' }) -keywordHandler:addKeyword({ 'durin' }, StdModule.say, { npcHandler = npcHandler, text = 'The celestial paladin, the protector of our race. The only divine being we care for and the only one who still cares for dwarfs.' }) -keywordHandler:addKeyword({ 'fire' }, StdModule.say, { npcHandler = npcHandler, text = 'Where earth is giving, fire is taking. That is the way of the elements.' }) -keywordHandler:addKeyword({ 'earth' }, StdModule.say, { npcHandler = npcHandler, text = 'The lifegiving earth protects us, feeds us and takes us home after death.' }) -keywordHandler:addKeyword({ 'the big old one' }, StdModule.say, { npcHandler = npcHandler, text = 'The mountain we live in is called the big old one. It\'s the mountain of mountains, and it isand like a friend and protector to our race.' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome |PLAYERNAME|! May earth protect you!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Earth under your feet, |PLAYERNAME|!') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Earth under your feet, pilgrim. What brings you here?') +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "The gods are treacherous and vain. They want to use us like they did in the past. Only the elements can be trusted, because all they want is for nature to run its set course." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the great geomancer of dwarvenkind." }) +keywordHandler:addKeyword({ "geomancer" }, StdModule.say, { npcHandler = npcHandler, text = "We investigate the will of the earth. It is our duty to make sure things to work in their natural way." }) +keywordHandler:addKeyword({ "life" }, StdModule.say, { npcHandler = npcHandler, text = "Life is born by earth and fed by earth." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am Kawill Marbleeye, Son of Earth, from the Molten Rock." }) +keywordHandler:addKeyword({ "quest" }, StdModule.say, { npcHandler = npcHandler, text = "There's nothing I need, better ask others." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "Nice world in general. It's a shame there is so much water ruining the general impression." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Time is not of importance." }) +keywordHandler:addKeyword({ "monsters" }, StdModule.say, { npcHandler = npcHandler, text = "May the earth swallow them all!" }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, a weapon to be feared by man, beast and god alike, jawoll. He who wields it will be both blessed and cursed at the same time." }) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, text = "The day will come when he finally bites the dust." }) +keywordHandler:addKeyword({ "kazordoon" }, StdModule.say, { npcHandler = npcHandler, text = "By using the powers of fire and earth we forced the river that once wound its way through the big old one in other directions, and created our home." }) +keywordHandler:addKeyword({ "bezil" }, StdModule.say, { npcHandler = npcHandler, text = "Bezil and Nezil have pawn and equpiment shop with an amazing stock." }) +keywordHandler:addKeyword({ "nezil" }, StdModule.say, { npcHandler = npcHandler, text = "Bezil and Nezil have pawn and equpiment shop with an amazing stock." }) +keywordHandler:addKeyword({ "duria" }, StdModule.say, { npcHandler = npcHandler, text = "The first knight of dwarvenkind is a fine woman." }) +keywordHandler:addKeyword({ "etzel" }, StdModule.say, { npcHandler = npcHandler, text = "I fear the sorcerers focus on the destructive forces of fire. They forget about the protection earth could provide." }) +keywordHandler:addKeyword({ "jimbin" }, StdModule.say, { npcHandler = npcHandler, text = "He is a jolly fellow and one of the oldest dwarves alive." }) +keywordHandler:addKeyword({ "kroox" }, StdModule.say, { npcHandler = npcHandler, text = "He is a fine smith and his armour may save your neck one day." }) +keywordHandler:addKeyword({ "maryza" }, StdModule.say, { npcHandler = npcHandler, text = "She is a fine cook, jawoll." }) +keywordHandler:addKeyword({ "uzgod" }, StdModule.say, { npcHandler = npcHandler, text = "Uzgod is a blacksmith and understands the ways of his element well." }) +keywordHandler:addKeyword({ "kruzak" }, StdModule.say, { npcHandler = npcHandler, text = "The emperor has rarely visited the temple district in the last years. He should care more about spirituality then about politics. Jawoll." }) +keywordHandler:addKeyword({ "emperor" }, StdModule.say, { npcHandler = npcHandler, text = "The emperor has rarely visited the temple district in the last years. He should care more about spirituality then about politics. Jawoll." }) +keywordHandler:addKeyword({ "durin" }, StdModule.say, { npcHandler = npcHandler, text = "The celestial paladin, the protector of our race. The only divine being we care for and the only one who still cares for dwarfs." }) +keywordHandler:addKeyword({ "fire" }, StdModule.say, { npcHandler = npcHandler, text = "Where earth is giving, fire is taking. That is the way of the elements." }) +keywordHandler:addKeyword({ "earth" }, StdModule.say, { npcHandler = npcHandler, text = "The lifegiving earth protects us, feeds us and takes us home after death." }) +keywordHandler:addKeyword({ "the big old one" }, StdModule.say, { npcHandler = npcHandler, text = "The mountain we live in is called the big old one. It's the mountain of mountains, and it isand like a friend and protector to our race." }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome |PLAYERNAME|! May earth protect you!") +npcHandler:setMessage(MESSAGE_FAREWELL, "Earth under your feet, |PLAYERNAME|!") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Earth under your feet, pilgrim. What brings you here?") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/kaya.lua b/data-otservbr-global/npc/kaya.lua index 32803a1a739..1525f4256b7 100644 --- a/data-otservbr-global/npc/kaya.lua +++ b/data-otservbr-global/npc/kaya.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 53, lookLegs = 53, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Don\'t forget to deposit your money here in the Tibian Bank before you head out for adventure.', yell = false } + { text = "Don't forget to deposit your money here in the Tibian Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/kazzan.lua b/data-otservbr-global/npc/kazzan.lua index b2ad034cb3e..f137e73f43e 100644 --- a/data-otservbr-global/npc/kazzan.lua +++ b/data-otservbr-global/npc/kazzan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 13, lookLegs = 14, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -63,24 +63,24 @@ local function creatureSayCallback(npc, creature, type, message) return false end - -- Pegando a quest if MsgContains(message, "mission") and player:getStorageValue(Storage.TibiaTales.ToAppeaseTheMightyQuest) < 1 then if player:getStorageValue(Storage.DjinnWar.Faction.MaridDoor) < 1 and player:getStorageValue(Storage.DjinnWar.Faction.EfreetDoor) < 1 then npcHandler:say({ - 'Do you know the location of the djinn fortresses in the mountains south of here?' }, npc, creature) + "Do you know the location of the djinn fortresses in the mountains south of here?", + }, npc, creature) npcHandler:setTopic(playerId, 1) end elseif npcHandler:getTopic(playerId) == 1 and MsgContains(message, "yes") then npcHandler:say({ - 'Alright. The problem is that I want to know at least one of them on my side. You never know. I don\'t mind if it\'s the evil Efreet or the Marid. ...', - 'Your mission will be to visit one kind of the djinns and bring them a peace-offering. Are you interested in that mission?' + "Alright. The problem is that I want to know at least one of them on my side. You never know. I don't mind if it's the evil Efreet or the Marid. ...", + "Your mission will be to visit one kind of the djinns and bring them a peace-offering. Are you interested in that mission?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 and MsgContains(message, "yes") then npcHandler:say({ - 'Very good. I hope you are able to convince one of the fractions to stand on our side. If you haven\'t done yet, you should first go and look for old Melchior in Ankrahmun. ...', - 'He knows many things about the djinn race and he may have some hints for you.' + "Very good. I hope you are able to convince one of the fractions to stand on our side. If you haven't done yet, you should first go and look for old Melchior in Ankrahmun. ...", + "He knows many things about the djinn race and he may have some hints for you.", }, npc, creature) if player:getStorageValue(Storage.TibiaTales.DefaultStart) <= 0 then player:setStorageValue(Storage.TibiaTales.DefaultStart, 1) @@ -89,17 +89,15 @@ local function creatureSayCallback(npc, creature, type, message) -- Entregando elseif player:getStorageValue(Storage.TibiaTales.ToAppeaseTheMightyQuest) == 3 then npcHandler:say({ - 'Well, I don\'t blame you for that. I am sure you did your best. Now we can just hope that peace remains. Here, take this small gratification for your effort to help and Daraman may bless you!' + "Well, I don't blame you for that. I am sure you did your best. Now we can just hope that peace remains. Here, take this small gratification for your effort to help and Daraman may bless you!", }, npc, creature) player:setStorageValue(Storage.TibiaTales.ToAppeaseTheMightyQuest, player:getStorageValue(Storage.TibiaTales.ToAppeaseTheMightyQuest) + 1) player:addItem(3035, 20) end - if player:getStorageValue(Storage.WhatAFoolish.Questline) == 35 - and player:getStorageValue(Storage.WhatAFoolish.ScaredKazzan) ~= 1 - and player:getOutfit().lookType == 65 then + if player:getStorageValue(Storage.WhatAFoolish.Questline) == 35 and player:getStorageValue(Storage.WhatAFoolish.ScaredKazzan) ~= 1 and player:getOutfit().lookType == 65 then player:setStorageValue(Storage.WhatAFoolish.ScaredKazzan, 1) - npcHandler:say('WAAAAAHHH!!!', npc, creature) + npcHandler:say("WAAAAAHHH!!!", npc, creature) return false end return true diff --git a/data-otservbr-global/npc/kendra.lua b/data-otservbr-global/npc/kendra.lua index 7ff816b57e3..ada530700ee 100644 --- a/data-otservbr-global/npc/kendra.lua +++ b/data-otservbr-global/npc/kendra.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 76, lookFeet = 132, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passages to Thais' } + { text = "Passages to Thais" }, } local keywordHandler = KeywordHandler:new() @@ -59,29 +59,29 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, action, condition) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but I don\'t sail there.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = true, cost = cost, discount = 'postman', destination = destination }, nil, action) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = true, cost = cost, discount = "postman", destination = destination }, nil, action) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('thais', 180, Position(32259, 32262, 7)) +addTravelKeyword("thais", 180, Position(32259, 32262, 7)) -- Kick --keywordHandler:addKeyword({'kick'}, StdModule.kick, {npcHandler = npcHandler, destination = {Position(32320, 32219, 6), Position(32321, 32210, 6)}}) -- Basic -keywordHandler:addKeyword({ 'passenger' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to welcome you on board.' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Thais}' }) -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Thais}' }) -keywordHandler:addKeyword({ 'go' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Thais}' }) -keywordHandler:addKeyword({ 'Thais' }, StdModule.say, { npcHandler = npcHandler, text = 'This is Thais. Where do you want to go?' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome on board, |PLAYERNAME|. Where can I {sail} you today?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +keywordHandler:addKeyword({ "passenger" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to welcome you on board." }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}" }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}" }) +keywordHandler:addKeyword({ "go" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Thais}" }) +keywordHandler:addKeyword({ "Thais" }, StdModule.say, { npcHandler = npcHandler, text = "This is Thais. Where do you want to go?" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. Where can I {sail} you today?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/kendra_thais.lua b/data-otservbr-global/npc/kendra_thais.lua index b5edadecda4..93b1e46b15b 100644 --- a/data-otservbr-global/npc/kendra_thais.lua +++ b/data-otservbr-global/npc/kendra_thais.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 76, lookFeet = 132, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passages to Nostalgia' } + { text = "Passages to Nostalgia" }, } local keywordHandler = KeywordHandler:new() @@ -59,30 +59,30 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, action, condition) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but I don\'t sail there.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = true, cost = cost, discount = 'postman', destination = destination }, nil, action) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = true, cost = cost, discount = "postman", destination = destination }, nil, action) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('nostalgia', 180, Position(33494, 31059, 7)) +addTravelKeyword("nostalgia", 180, Position(33494, 31059, 7)) -- Kick --keywordHandler:addKeyword({'kick'}, StdModule.kick, {npcHandler = npcHandler, destination = {Position(32320, 32219, 6), Position(32321, 32210, 6)}}) -- Basic -keywordHandler:addKeyword({ 'passenger' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to welcome you on board.' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Nostalgia}, {Horror Village}' }) -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Nostalgia}, {Horror Village}' }) -keywordHandler:addKeyword({ 'go' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Nostalgia}, {Horror Village}' }) -keywordHandler:addKeyword({ 'Nostalgia' }, StdModule.say, { npcHandler = npcHandler, text = 'This is Nostalgia. Where do you want to go?' }) -keywordHandler:addKeyword({ 'Horror Village' }, StdModule.say, { npcHandler = npcHandler, text = 'This is Horror Village. Where do you want to go?' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome on board, |PLAYERNAME|. Where can I {sail} you today?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +keywordHandler:addKeyword({ "passenger" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to welcome you on board." }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Nostalgia}, {Horror Village}" }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Nostalgia}, {Horror Village}" }) +keywordHandler:addKeyword({ "go" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Nostalgia}, {Horror Village}" }) +keywordHandler:addKeyword({ "Nostalgia" }, StdModule.say, { npcHandler = npcHandler, text = "This is Nostalgia. Where do you want to go?" }) +keywordHandler:addKeyword({ "Horror Village" }, StdModule.say, { npcHandler = npcHandler, text = "This is Horror Village. Where do you want to go?" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. Where can I {sail} you today?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/kepar.lua b/data-otservbr-global/npc/kepar.lua index c34b6d9a9cf..d2370cbc92d 100644 --- a/data-otservbr-global/npc/kepar.lua +++ b/data-otservbr-global/npc/kepar.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 110, lookFeet = 131, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Don\'t forget to deposit your money here in the Tibian Bank before you head out for adventure.', yell = false } + { text = "Don't forget to deposit your money here in the Tibian Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/kevin.lua b/data-otservbr-global/npc/kevin.lua index 64368cb3803..c8108e547aa 100644 --- a/data-otservbr-global/npc/kevin.lua +++ b/data-otservbr-global/npc/kevin.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -292,7 +292,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("I grant you the title of Archpostman. You are a legend in our guild. As privilege of your newly aquired status you are allowed to make use of certain mailboxes in dangerous areas. Just look out for them and you'll see.", npc, creature) player:setStorageValue(Storage.Postman.Rank, 5) player:setStorageValue(Storage.Postman.Door, 1) - player:addAchievement('Archpostman') + player:addAchievement("Archpostman") npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 28 then npcHandler:say("Your eagerness is a virtue, young one, but first let's talk about advancement", npc, creature) diff --git a/data-otservbr-global/npc/khanna.lua b/data-otservbr-global/npc/khanna.lua index 592184d4736..0adc4b8e4fb 100644 --- a/data-otservbr-global/npc/khanna.lua +++ b/data-otservbr-global/npc/khanna.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 70, lookLegs = 93, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,7 +52,7 @@ end local items = { [VOCATION.BASE_ID.SORCERER] = 3074, - [VOCATION.BASE_ID.DRUID] = 3066 + [VOCATION.BASE_ID.DRUID] = 3066, } local function creatureSayCallback(npc, creature, type, message) @@ -64,26 +64,26 @@ local function creatureSayCallback(npc, creature, type, message) end local itemId = items[player:getVocation():getBaseId()] - if MsgContains(message, 'first rod') or MsgContains(message, 'first wand') then + if MsgContains(message, "first rod") or MsgContains(message, "first wand") then if player:isMage() then if player:getStorageValue(Storage.FirstMageWeapon) == -1 then - npcHandler:say('So you ask me for a {' .. ItemType(itemId):getName() .. '} to begin your adventure?', npc, creature) + npcHandler:say("So you ask me for a {" .. ItemType(itemId):getName() .. "} to begin your adventure?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('What? I have already gave you one {' .. ItemType(itemId):getName() .. '}!', npc, creature) + npcHandler:say("What? I have already gave you one {" .. ItemType(itemId):getName() .. "}!", npc, creature) end else - npcHandler:say('Sorry, you aren\'t a druid either a sorcerer.', npc, creature) + npcHandler:say("Sorry, you aren't a druid either a sorcerer.", npc, creature) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then player:addItem(itemId, 1) - npcHandler:say('Here you are young adept, take care yourself.', npc, creature) + npcHandler:say("Here you are young adept, take care yourself.", npc, creature) player:setStorageValue(Storage.FirstMageWeapon, 1) end npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 1 then + npcHandler:say("Ok then.", npc, creature) npcHandler:setTopic(playerId, 0) end return true @@ -158,7 +158,7 @@ npcConfig.shop = { { itemName = "wand of starstorm", clientId = 8092, buy = 18000 }, { itemName = "wand of voodoo", clientId = 8094, buy = 22000 }, { itemName = "wand of vortex", clientId = 3074, buy = 500 }, - { itemName = "wild growth rune", clientId = 3156, buy = 160 } + { itemName = "wild growth rune", clientId = 3156, buy = 160 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -169,7 +169,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/kihil_the_guard.lua b/data-otservbr-global/npc/kihil_the_guard.lua index 7c30413f327..e8f0839a73c 100644 --- a/data-otservbr-global/npc/kihil_the_guard.lua +++ b/data-otservbr-global/npc/kihil_the_guard.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 70 + lookType = 70, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/king_tibianus.lua b/data-otservbr-global/npc/king_tibianus.lua index 541df86b99f..ccf5d5cf2b5 100644 --- a/data-otservbr-global/npc/king_tibianus.lua +++ b/data-otservbr-global/npc/king_tibianus.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 332 + lookType = 332, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,9 +56,7 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "farmine") and player:getStorageValue(TheNewFrontier.Questline) == 14 then if player:getStorageValue(TheNewFrontier.Mission05.KingTibianus) == 1 then - npcHandler:say( - "Ah, I vaguely remember that our little allies were eager to build some base. So speak up, what do you want?", - npc, creature) + npcHandler:say("Ah, I vaguely remember that our little allies were eager to build some base. So speak up, what do you want?", npc, creature) npcHandler:setTopic(playerId, 10) else npcHandler:say("Do you have anything that might change my mind?", npc, creature) @@ -66,24 +64,17 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "flatter") and player:getStorageValue(TheNewFrontier.Mission05.KingTibianus) == 1 then if npcHandler:getTopic(playerId) == 10 then - npcHandler:say( - "Indeed, indeed. Without the help of Thais, our allies stand no chance! Well, I'll send some money to support their cause.", - npc, creature) + npcHandler:say("Indeed, indeed. Without the help of Thais, our allies stand no chance! Well, I'll send some money to support their cause.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.KingTibianus, 3) end elseif (MsgContains(message, "outfit")) or (MsgContains(message, "addon")) then - npcHandler:say( - "In exchange for a truly generous donation, I will offer a special outfit. Do you want to make a donation?", - npc, creature) + npcHandler:say("In exchange for a truly generous donation, I will offer a special outfit. Do you want to make a donation?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "yes")) then + elseif MsgContains(message, "yes") then -- Vamos tratar todas condições para YES aqui if npcHandler:getTopic(playerId) == 1 then -- Para o primeiro Yes, o npc deve explicar como obter o outfit - npcHandler:say( - { "Excellent! Now, let me explain. If you donate 1.000.000.000 gold pieces, you will be entitled to wear a unique outfit. ...", - "You will be entitled to wear the {armor} for 500.000.000 gold pieces, {helmet} for an additional 250.000.000 and the {boots} for another 250.000.000 gold pieces. ...", - "What will it be?" }, npc, creature) + npcHandler:say({ "Excellent! Now, let me explain. If you donate 1.000.000.000 gold pieces, you will be entitled to wear a unique outfit. ...", "You will be entitled to wear the {armor} for 500.000.000 gold pieces, {helmet} for an additional 250.000.000 and the {boots} for another 250.000.000 gold pieces. ...", "What will it be?" }, npc, creature) npcHandler:setTopic(playerId, 2) -- O NPC só vai oferecer os addons se o player já tiver escolhido. elseif npcHandler:getTopic(playerId) == 2 then @@ -98,12 +89,9 @@ local function creatureSayCallback(npc, creature, type, message) if inbox and inbox:getEmptySlots() > 0 then local decoKit = inbox:addItem(23398, 1) local decoItemName = ItemType(31510):getName() - decoKit:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, - "Unwrap it in your own house to create a " .. decoItemName .. ".") + decoKit:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Unwrap it in your own house to create a " .. decoItemName .. ".") decoKit:setCustomAttribute("unWrapId", 31510) - npcHandler:say( - "Take this armor as a token of great gratitude. Let us forever remember this day, my friend!", - npc, creature) + npcHandler:say("Take this armor as a token of great gratitude. Let us forever remember this day, my friend!", npc, creature) player:removeMoneyBank(500000000) player:addOutfit(1211) player:addOutfit(1210) @@ -125,9 +113,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.OutfitQuest.GoldenOutfit) == 1 then if player:getStorageValue(Storage.OutfitQuest.GoldenOutfit) < 2 then if player:getMoney() + player:getBankBalance() >= 250000000 then - npcHandler:say( - "Take this helmet as a token of great gratitude. Let us forever remember this day, my friend. ", - npc, creature) + npcHandler:say("Take this helmet as a token of great gratitude. Let us forever remember this day, my friend. ", npc, creature) player:removeMoneyBank(250000000) player:addOutfitAddon(1210, 2) player:addOutfitAddon(1211, 2) @@ -153,9 +139,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.OutfitQuest.GoldenOutfit) == 2 then if player:getStorageValue(Storage.OutfitQuest.GoldenOutfit) < 3 then if player:getMoney() + player:getBankBalance() >= 250000000 then - npcHandler:say( - "Take this boots as a token of great gratitude. Let us forever remember this day, my friend. ", - npc, creature) + npcHandler:say("Take this boots as a token of great gratitude. Let us forever remember this day, my friend. ", npc, creature) player:removeMoneyBank(250000000) player:addOutfitAddon(1210, 1) player:addOutfitAddon(1211, 1) @@ -178,11 +162,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 2) -- Reseting word The New Frontier: Mission 5 elseif npcHandler:getTopic(playerId) == 6 then - if player:getStorageValue(TheNewFrontier.Questline) == 14 and - player:getStorageValue(TheNewFrontier.Mission05.KingTibianus) == 2 and player:removeItem(10009, 1) then - npcHandler:say( - "Ah, I vaguely remember that our little allies were eager to build some base. So speak up, what do you want?", - npc, creature) + if player:getStorageValue(TheNewFrontier.Questline) == 14 and player:getStorageValue(TheNewFrontier.Mission05.KingTibianus) == 2 and player:removeItem(10009, 1) then + npcHandler:say("Ah, I vaguely remember that our little allies were eager to build some base. So speak up, what do you want?", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.KingTibianus, 1) npcHandler:setTopic(playerId, 10) end @@ -190,23 +171,16 @@ local function creatureSayCallback(npc, creature, type, message) -- inicio das opções armor/helmet/boots -- caso o player não diga YES, dirá alguma das seguintes palavras: elseif (MsgContains(message, "armor")) and npcHandler:getTopic(playerId) == 2 then - npcHandler:say( - "So you wold like to donate 500.000.000 gold pieces which in return will entitle you to wear a unique armor?", - npc, creature) + npcHandler:say("So you wold like to donate 500.000.000 gold pieces which in return will entitle you to wear a unique armor?", npc, creature) npcHandler:setTopic(playerId, 3) -- alterando o tópico para que no próximo YES ele faça o outfit elseif (MsgContains(message, "helmet")) and npcHandler:getTopic(playerId) == 2 then - npcHandler:say( - "So you would like to donate 250.000.000 gold pieces which in return will entitle you to wear unique helmet?", - npc, creature) + npcHandler:say("So you would like to donate 250.000.000 gold pieces which in return will entitle you to wear unique helmet?", npc, creature) npcHandler:setTopic(playerId, 4) -- alterando o tópico para que no próximo YES ele faça o helmet elseif (MsgContains(message, "boots")) and npcHandler:getTopic(playerId) == 2 then - npcHandler:say( - "So you would like to donate 250.000.000 gold pieces which in return will entitle you to wear a unique boots?", - npc, creature) + npcHandler:say("So you would like to donate 250.000.000 gold pieces which in return will entitle you to wear a unique boots?", npc, creature) npcHandler:setTopic(playerId, 5) -- alterando o tópico para que no próximo YES ele faça a boots else - if player:getStorageValue(TheNewFrontier.Questline) == 14 and - player:getStorageValue(TheNewFrontier.Mission05.KingTibianus) == 1 then + if player:getStorageValue(TheNewFrontier.Questline) == 14 and player:getStorageValue(TheNewFrontier.Mission05.KingTibianus) == 1 then npcHandler:say("Wrong Word.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.KingTibianus, 2) end @@ -214,268 +188,268 @@ local function creatureSayCallback(npc, creature, type, message) -- fim das opções armor/helmet/boots end -- Promotion -local node1 = keywordHandler:addKeyword({ 'promot' }, StdModule.say, { +local node1 = keywordHandler:addKeyword({ "promot" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, - text = 'I can promote you for 20000 gold coins. Do you want me to promote you?' + text = "I can promote you for 20000 gold coins. Do you want me to promote you?", }) -node1:addChildKeyword({ 'yes' }, StdModule.promotePlayer, { +node1:addChildKeyword({ "yes" }, StdModule.promotePlayer, { npcHandler = npcHandler, cost = 20000, level = 20, - text = 'Congratulations! You are now promoted.' + text = "Congratulations! You are now promoted.", }) -node1:addChildKeyword({ 'no' }, StdModule.say, { +node1:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, - text = 'Alright then, come back when you are ready.', - reset = true + text = "Alright then, come back when you are ready.", + reset = true, }) -- Basic -keywordHandler:addKeyword({ 'eremo' }, StdModule.say, { +keywordHandler:addKeyword({ "eremo" }, StdModule.say, { npcHandler = npcHandler, - text = 'It is said that he lives on a small island near Edron. Maybe the people there know more about him.' + text = "It is said that he lives on a small island near Edron. Maybe the people there know more about him.", }) -keywordHandler:addKeyword({ 'otbr' }, StdModule.say, { +keywordHandler:addKeyword({ "otbr" }, StdModule.say, { npcHandler = npcHandler, - text = 'Awesome! Please pay a visit to www.otserv.com.br!' + text = "Awesome! Please pay a visit to www.otserv.com.br!", }) -keywordHandler:addKeyword({ 'baah' }, StdModule.say, { +keywordHandler:addKeyword({ "baah" }, StdModule.say, { npcHandler = npcHandler, - text = 'Baah is awesome dude that rewrote my outfit script.' + text = "Baah is awesome dude that rewrote my outfit script.", }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, - text = 'I am your sovereign, King Tibianus III, and it\'s my duty to uphold {justice} and provide guidance for my subjects.' + text = "I am your sovereign, King Tibianus III, and it's my duty to uphold {justice} and provide guidance for my subjects.", }) -keywordHandler:addKeyword({ 'justice' }, StdModule.say, { +keywordHandler:addKeyword({ "justice" }, StdModule.say, { npcHandler = npcHandler, - text = 'I try my best to be just and fair to our citizens. The army and the {TBI} are a great help in fulfilling this duty.' + text = "I try my best to be just and fair to our citizens. The army and the {TBI} are a great help in fulfilling this duty.", }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, - text = 'Preposterous! You must know the name of your own King!' + text = "Preposterous! You must know the name of your own King!", }) -keywordHandler:addKeyword({ 'news' }, StdModule.say, { +keywordHandler:addKeyword({ "news" }, StdModule.say, { npcHandler = npcHandler, - text = 'The latest news is usually brought to our magnificent town by brave adventurers. They recount tales of their journeys at Frodo\'s tavern.' + text = "The latest news is usually brought to our magnificent town by brave adventurers. They recount tales of their journeys at Frodo's tavern.", }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, - text = 'Thank you, I\'m fine.' + text = "Thank you, I'm fine.", }) -keywordHandler:addKeyword({ 'castle' }, StdModule.say, { +keywordHandler:addKeyword({ "castle" }, StdModule.say, { npcHandler = npcHandler, - text = 'Rain Castle is my home.' + text = "Rain Castle is my home.", }) -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, - text = 'Sell? Sell what? My kingdom isn\'t for sale!' + text = "Sell? Sell what? My kingdom isn't for sale!", }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, - text = 'Honour the Gods and above all pay your {taxes}.' + text = "Honour the Gods and above all pay your {taxes}.", }) -keywordHandler:addKeyword({ 'zathroth' }, StdModule.say, { +keywordHandler:addKeyword({ "zathroth" }, StdModule.say, { npcHandler = npcHandler, - text = 'Please ask a priest about the gods.' + text = "Please ask a priest about the gods.", }) -keywordHandler:addKeyword({ 'citizen' }, StdModule.say, { +keywordHandler:addKeyword({ "citizen" }, StdModule.say, { npcHandler = npcHandler, - text = 'The citizens of Tibia are my subjects. Ask the old monk Quentin if you want to learn more about them.' + text = "The citizens of Tibia are my subjects. Ask the old monk Quentin if you want to learn more about them.", }) -keywordHandler:addKeyword({ 'sam' }, StdModule.say, { +keywordHandler:addKeyword({ "sam" }, StdModule.say, { npcHandler = npcHandler, - text = 'He is a skilled blacksmith and a loyal subject.' + text = "He is a skilled blacksmith and a loyal subject.", }) -keywordHandler:addKeyword({ 'frodo' }, StdModule.say, { +keywordHandler:addKeyword({ "frodo" }, StdModule.say, { npcHandler = npcHandler, - text = 'He is the owner of Frodo\'s Hut and a faithful tax-payer.' + text = "He is the owner of Frodo's Hut and a faithful tax-payer.", }) -keywordHandler:addKeyword({ 'gorn' }, StdModule.say, { +keywordHandler:addKeyword({ "gorn" }, StdModule.say, { npcHandler = npcHandler, - text = 'He was once one of Tibia\'s greatest fighters. Now he sells equipment.' + text = "He was once one of Tibia's greatest fighters. Now he sells equipment.", }) -keywordHandler:addKeyword({ 'benjamin' }, StdModule.say, { +keywordHandler:addKeyword({ "benjamin" }, StdModule.say, { npcHandler = npcHandler, - text = 'He was once my greatest general. Now he is very old and senile so we assigned him to work for the Royal Tibia Mail.' + text = "He was once my greatest general. Now he is very old and senile so we assigned him to work for the Royal Tibia Mail.", }) -keywordHandler:addKeyword({ 'noodles' }, StdModule.say, { +keywordHandler:addKeyword({ "noodles" }, StdModule.say, { npcHandler = npcHandler, - text = 'The royal poodle Noodles is my greatest {treasure}!' + text = "The royal poodle Noodles is my greatest {treasure}!", }) -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, - text = 'He is a follower of the evil God Zathroth and responsible for many attacks on us. Kill him on sight!' + text = "He is a follower of the evil God Zathroth and responsible for many attacks on us. Kill him on sight!", }) -keywordHandler:addKeyword({ 'bozo' }, StdModule.say, { +keywordHandler:addKeyword({ "bozo" }, StdModule.say, { npcHandler = npcHandler, - text = 'He is my royal jester and cheers me up now and then.' + text = "He is my royal jester and cheers me up now and then.", }) -keywordHandler:addKeyword({ 'treasure' }, StdModule.say, { +keywordHandler:addKeyword({ "treasure" }, StdModule.say, { npcHandler = npcHandler, - text = 'The royal poodle Noodles is my greatest treasure!' + text = "The royal poodle Noodles is my greatest treasure!", }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, - text = 'Go and hunt them! For king and country!' + text = "Go and hunt them! For king and country!", }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, - text = 'Visit Quentin the monk for help.' + text = "Visit Quentin the monk for help.", }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, - text = 'What a disgusting topic!' + text = "What a disgusting topic!", }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, - text = 'Dungeons are no places for kings.' + text = "Dungeons are no places for kings.", }) -keywordHandler:addKeyword({ 'equipment' }, StdModule.say, { +keywordHandler:addKeyword({ "equipment" }, StdModule.say, { npcHandler = npcHandler, - text = 'Feel free to buy it in our town\'s fine shops.' + text = "Feel free to buy it in our town's fine shops.", }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, - text = 'Ask the royal cook for some food.' + text = "Ask the royal cook for some food.", }) -keywordHandler:addKeyword({ 'tax collector' }, StdModule.say, { +keywordHandler:addKeyword({ "tax collector" }, StdModule.say, { npcHandler = npcHandler, - text = 'That tax collector is the bane of my life. He is so lazy. I bet you haven\'t payed any taxes at all.' + text = "That tax collector is the bane of my life. He is so lazy. I bet you haven't payed any taxes at all.", }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, - text = 'I am the king, so watch what you say!' + text = "I am the king, so watch what you say!", }) -keywordHandler:addKeyword({ 'army' }, StdModule.say, { +keywordHandler:addKeyword({ "army" }, StdModule.say, { npcHandler = npcHandler, - text = 'Ask the soldiers about that.' + text = "Ask the soldiers about that.", }) -keywordHandler:addKeyword({ 'shop' }, StdModule.say, { +keywordHandler:addKeyword({ "shop" }, StdModule.say, { npcHandler = npcHandler, - text = 'Visit the shops of our merchants and craftsmen.' + text = "Visit the shops of our merchants and craftsmen.", }) -keywordHandler:addKeyword({ 'guild' }, StdModule.say, { +keywordHandler:addKeyword({ "guild" }, StdModule.say, { npcHandler = npcHandler, - text = 'The four major guilds are the knights, the paladins, the druids, and the sorcerers.' + text = "The four major guilds are the knights, the paladins, the druids, and the sorcerers.", }) -keywordHandler:addKeyword({ 'minotaur' }, StdModule.say, { +keywordHandler:addKeyword({ "minotaur" }, StdModule.say, { npcHandler = npcHandler, - text = 'Vile monsters, but I must admit they are strong and sometimes even cunning ... in their own bestial way.' + text = "Vile monsters, but I must admit they are strong and sometimes even cunning ... in their own bestial way.", }) -keywordHandler:addKeyword({ 'good' }, StdModule.say, { +keywordHandler:addKeyword({ "good" }, StdModule.say, { npcHandler = npcHandler, - text = 'The forces of good are hard pressed in these dark times.' + text = "The forces of good are hard pressed in these dark times.", }) -keywordHandler:addKeyword({ 'evil' }, StdModule.say, { +keywordHandler:addKeyword({ "evil" }, StdModule.say, { npcHandler = npcHandler, - text = 'We need all strength we can muster to smite evil!' + text = "We need all strength we can muster to smite evil!", }) -keywordHandler:addKeyword({ 'order' }, StdModule.say, { +keywordHandler:addKeyword({ "order" }, StdModule.say, { npcHandler = npcHandler, - text = 'We need order to survive!' + text = "We need order to survive!", }) -keywordHandler:addKeyword({ 'chaos' }, StdModule.say, { +keywordHandler:addKeyword({ "chaos" }, StdModule.say, { npcHandler = npcHandler, - text = 'Chaos arises from selfishness.' + text = "Chaos arises from selfishness.", }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, - text = 'It\'s the sword of the Kings. If you return this weapon to me I will {reward} you beyond your wildest dreams.' + text = "It's the sword of the Kings. If you return this weapon to me I will {reward} you beyond your wildest dreams.", }) -keywordHandler:addKeyword({ 'reward' }, StdModule.say, { +keywordHandler:addKeyword({ "reward" }, StdModule.say, { npcHandler = npcHandler, - text = 'Well, if you want a reward, go on a quest to bring me Excalibug!' + text = "Well, if you want a reward, go on a quest to bring me Excalibug!", }) -keywordHandler:addKeyword({ 'chester' }, StdModule.say, { +keywordHandler:addKeyword({ "chester" }, StdModule.say, { npcHandler = npcHandler, - text = 'A very competent person. A little nervous but very competent.' + text = "A very competent person. A little nervous but very competent.", }) -keywordHandler:addKeyword({ 'tbi' }, StdModule.say, { +keywordHandler:addKeyword({ "tbi" }, StdModule.say, { npcHandler = npcHandler, - text = 'This organisation is an essential tool for holding our enemies in check. Its headquarter is located in the bastion in the northwall.' + text = "This organisation is an essential tool for holding our enemies in check. Its headquarter is located in the bastion in the northwall.", }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, - text = 'Soon the whole land will be ruled by me once again!' + text = "Soon the whole land will be ruled by me once again!", }) -keywordHandler:addAliasKeyword({ 'land' }) -keywordHandler:addKeyword({ 'harkath' }, StdModule.say, { +keywordHandler:addAliasKeyword({ "land" }) +keywordHandler:addKeyword({ "harkath" }, StdModule.say, { npcHandler = npcHandler, - text = 'Harkath Bloodblade is the general of our glorious {army}.' + text = "Harkath Bloodblade is the general of our glorious {army}.", }) -keywordHandler:addAliasKeyword({ 'bloodblade' }) -keywordHandler:addAliasKeyword({ 'general' }) -keywordHandler:addKeyword({ 'quest' }, StdModule.say, { +keywordHandler:addAliasKeyword({ "bloodblade" }) +keywordHandler:addAliasKeyword({ "general" }) +keywordHandler:addKeyword({ "quest" }, StdModule.say, { npcHandler = npcHandler, - text = 'I will call for heroes as soon as the need arises again and then reward them appropriately.' + text = "I will call for heroes as soon as the need arises again and then reward them appropriately.", }) -keywordHandler:addAliasKeyword({ 'mission' }) -keywordHandler:addKeyword({ 'gold' }, StdModule.say, { +keywordHandler:addAliasKeyword({ "mission" }) +keywordHandler:addKeyword({ "gold" }, StdModule.say, { npcHandler = npcHandler, - text = 'To pay your taxes, visit the royal tax collector.' + text = "To pay your taxes, visit the royal tax collector.", }) -keywordHandler:addAliasKeyword({ 'money' }) -keywordHandler:addAliasKeyword({ 'tax' }) -keywordHandler:addAliasKeyword({ 'collector' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { +keywordHandler:addAliasKeyword({ "money" }) +keywordHandler:addAliasKeyword({ "tax" }) +keywordHandler:addAliasKeyword({ "collector" }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, - text = 'It\'s a time for heroes!' + text = "It's a time for heroes!", }) -keywordHandler:addAliasKeyword({ 'hero' }) -keywordHandler:addAliasKeyword({ 'adventurer' }) -keywordHandler:addKeyword({ 'enemy' }, StdModule.say, { +keywordHandler:addAliasKeyword({ "hero" }) +keywordHandler:addAliasKeyword({ "adventurer" }) +keywordHandler:addKeyword({ "enemy" }, StdModule.say, { npcHandler = npcHandler, - text = 'Our enemies are numerous. The evil minotaurs, Ferumbras, and the renegade city of Carlin to the north are just some of them.' + text = "Our enemies are numerous. The evil minotaurs, Ferumbras, and the renegade city of Carlin to the north are just some of them.", }) -keywordHandler:addAliasKeyword({ 'enemies' }) -keywordHandler:addKeyword({ 'carlin' }, StdModule.say, { +keywordHandler:addAliasKeyword({ "enemies" }) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { npcHandler = npcHandler, - text = 'They dare to reject my reign over the whole continent!' + text = "They dare to reject my reign over the whole continent!", }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, - text = 'Our beloved city has some fine shops, guildhouses and a modern sewerage system.' + text = "Our beloved city has some fine shops, guildhouses and a modern sewerage system.", }) -keywordHandler:addAliasKeyword({ 'city' }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { +keywordHandler:addAliasKeyword({ "city" }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, - text = 'Ask around about them.' + text = "Ask around about them.", }) -keywordHandler:addAliasKeyword({ 'craftsmen' }) -keywordHandler:addKeyword({ 'paladin' }, StdModule.say, { +keywordHandler:addAliasKeyword({ "craftsmen" }) +keywordHandler:addKeyword({ "paladin" }, StdModule.say, { npcHandler = npcHandler, - text = 'The paladins are great protectors for Thais.' + text = "The paladins are great protectors for Thais.", }) -keywordHandler:addAliasKeyword({ 'elane' }) -keywordHandler:addKeyword({ 'knight' }, StdModule.say, { +keywordHandler:addAliasKeyword({ "elane" }) +keywordHandler:addKeyword({ "knight" }, StdModule.say, { npcHandler = npcHandler, - text = 'The brave knights are necessary for human survival in Thais.' + text = "The brave knights are necessary for human survival in Thais.", }) -keywordHandler:addAliasKeyword({ 'gregor' }) -keywordHandler:addKeyword({ 'sorcerer' }, StdModule.say, { +keywordHandler:addAliasKeyword({ "gregor" }) +keywordHandler:addKeyword({ "sorcerer" }, StdModule.say, { npcHandler = npcHandler, - text = 'The magic of the sorcerers is a powerful tool to smite our enemies.' + text = "The magic of the sorcerers is a powerful tool to smite our enemies.", }) -keywordHandler:addAliasKeyword({ 'muriel' }) -keywordHandler:addKeyword({ 'druid' }, StdModule.say, { +keywordHandler:addAliasKeyword({ "muriel" }) +keywordHandler:addKeyword({ "druid" }, StdModule.say, { npcHandler = npcHandler, - text = 'We need the druidic healing powers to fight evil.' + text = "We need the druidic healing powers to fight evil.", }) -keywordHandler:addAliasKeyword({ 'marvik' }) +keywordHandler:addAliasKeyword({ "marvik" }) -- Greeting message keywordHandler:addGreetKeyword({ "hail king" }, { npcHandler = npcHandler, - text = "I greet thee, my loyal subject |PLAYERNAME|." + text = "I greet thee, my loyal subject |PLAYERNAME|.", }) keywordHandler:addGreetKeyword({ "salutations king" }, { npcHandler = npcHandler, - text = "I greet thee, my loyal subject |PLAYERNAME|." + text = "I greet thee, my loyal subject |PLAYERNAME|.", }) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'How rude!') +npcHandler:setMessage(MESSAGE_WALKAWAY, "How rude!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/kjesse.lua b/data-otservbr-global/npc/kjesse.lua index 6bb81594b7a..609cf542d9d 100644 --- a/data-otservbr-global/npc/kjesse.lua +++ b/data-otservbr-global/npc/kjesse.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 95, lookFeet = 114, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,86 +51,103 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Kjesse) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Kjesse) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Kjesse, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/klaus.lua b/data-otservbr-global/npc/klaus.lua index bcf752a1363..5c5dc19e0a8 100644 --- a/data-otservbr-global/npc/klaus.lua +++ b/data-otservbr-global/npc/klaus.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 0, lookBody = 0, lookLegs = 0, - lookFeet = 0 + lookFeet = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,26 +57,27 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'mission') then + if MsgContains(message, "mission") then if player:getStorageValue(Storage.TheShatteredIsles.RaysMission4) == 1 then npcHandler:say( - 'Hmm, you look like a seasoned seadog. Kill Captain Ray Striker, \ - bring me his lucky pillow as a proof and you are our hero!', - creature) + "Hmm, you look like a seasoned seadog. Kill Captain Ray Striker, \ + bring me his lucky pillow as a proof and you are our hero!", + creature + ) player:setStorageValue(Storage.TheShatteredIsles.RaysMission4, 2) elseif player:getStorageValue(Storage.TheShatteredIsles.RaysMission4) == 3 then npcHandler:say("Do you have Striker's pillow?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if player:getStorageValue(Storage.TheShatteredIsles.RaysMission4) == 3 then if npcHandler:getTopic(playerId) == 1 then if player:removeItem(6105, 1) then - npcHandler:say('You DID it!!! Incredible! Boys, lets have a PAAAAAARTY!!!!', npc, creature) + npcHandler:say("You DID it!!! Incredible! Boys, lets have a PAAAAAARTY!!!!", npc, creature) player:setStorageValue(Storage.TheShatteredIsles.RaysMission4, 4) npcHandler:setTopic(playerId, 0) else - npcHandler:say('Come back when you have his lucky pillow.', npc, creature) + npcHandler:say("Come back when you have his lucky pillow.", npc, creature) npcHandler:setTopic(playerId, 0) end end diff --git a/data-otservbr-global/npc/klesar.lua b/data-otservbr-global/npc/klesar.lua index f9f23f9a965..ce74a463a60 100644 --- a/data-otservbr-global/npc/klesar.lua +++ b/data-otservbr-global/npc/klesar.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/klom_stonecutter.lua b/data-otservbr-global/npc/klom_stonecutter.lua index f9282d09fea..8f238b65a29 100644 --- a/data-otservbr-global/npc/klom_stonecutter.lua +++ b/data-otservbr-global/npc/klom_stonecutter.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 68, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,10 +53,10 @@ end npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Ah.' }, - { text = 'We need more volunteers!' }, + { text = "Ah." }, + { text = "We need more volunteers!" }, { text = 'And they call this "deep"...' }, - { text = 'Preparation is paramount.' }, + { text = "Preparation is paramount." }, } local count = {} @@ -66,35 +66,34 @@ local function greetCallback(npc, creature) local playerId = player:getId() if player then - npcHandler:setMessage(MESSAGE_GREET, - { - "Greetings. A warning straight ahead: I don't like loiterin'. If you're not here to {help} us, you're here to waste my time. Which I consider loiterin'. Now, try and prove your {worth} to our alliance. ... ", - "I have sealed some of the areas far too dangerous for anyone to enter. If you can prove you're capable, you'll get an opportunity to help destroy the weird machines, pumping lava into the caves leading to the most dangerous enemies." - }, 2000) + npcHandler:setMessage(MESSAGE_GREET, { + "Greetings. A warning straight ahead: I don't like loiterin'. If you're not here to {help} us, you're here to waste my time. Which I consider loiterin'. Now, try and prove your {worth} to our alliance. ... ", + "I have sealed some of the areas far too dangerous for anyone to enter. If you can prove you're capable, you'll get an opportunity to help destroy the weird machines, pumping lava into the caves leading to the most dangerous enemies.", + }, 2000) npcHandler:setTopic(playerId, 1) end return true end -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, the biggest problem we need to address are the ever charging {subterraneans} around here. And on top of that, there\'s the threat of the Lost, who quite made themselves at {home} in these parts.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'Maintainin\' this whole operation, the dwarven involvement \'course. Don\'t know about them gnomes but if I ain\'t gettin\' those dwarves in line, there\'ll be chaos down here. I also oversee the {defences} and {counterattacks}.' }) -keywordHandler:addKeyword({ 'defences' }, StdModule.say, { +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "Well, the biggest problem we need to address are the ever charging {subterraneans} around here. And on top of that, there's the threat of the Lost, who quite made themselves at {home} in these parts." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Maintainin' this whole operation, the dwarven involvement 'course. Don't know about them gnomes but if I ain't gettin' those dwarves in line, there'll be chaos down here. I also oversee the {defences} and {counterattacks}." }) +keywordHandler:addKeyword({ "defences" }, StdModule.say, { npcHandler = npcHandler, - text = { 'The attacks of the enemy forces are fierce but we hold our ground. ... ', - 'I\'d love to face one of their generals in combat but as their masters they cowardly hide far behind enemy lines and I have other duties to fulfil. ... ', - 'I envy you for the chance to thrust into the heart of the enemy, locking weapons with their jaws... or whatever... and see the fear in their eyes when they recognise they were bested.' } + text = { + "The attacks of the enemy forces are fierce but we hold our ground. ... ", + "I'd love to face one of their generals in combat but as their masters they cowardly hide far behind enemy lines and I have other duties to fulfil. ... ", + "I envy you for the chance to thrust into the heart of the enemy, locking weapons with their jaws... or whatever... and see the fear in their eyes when they recognise they were bested.", + }, }) -keywordHandler:addKeyword({ 'counterattacks' }, StdModule.say, { +keywordHandler:addKeyword({ "counterattacks" }, StdModule.say, { npcHandler = npcHandler, - text = { 'I welcome a fine battle as any dwarf worth his beard should do. As long as it\'s a battle against something I can hit with my trusty axe. ...', - 'But here the true {enemy} eludes us. We fight wave after wave of their lackeys and if the gnomes are right the true enemy is up to something far more sinister. ' } + text = { "I welcome a fine battle as any dwarf worth his beard should do. As long as it's a battle against something I can hit with my trusty axe. ...", "But here the true {enemy} eludes us. We fight wave after wave of their lackeys and if the gnomes are right the true enemy is up to something far more sinister. " }, }) -keywordHandler:addKeyword({ 'enemy' }, StdModule.say, { +keywordHandler:addKeyword({ "enemy" }, StdModule.say, { npcHandler = npcHandler, - text = { 'I have no idea what kind of creeps are behind all this. Even the gnomes don\'t and they have handled that stuff way more often. ...', - 'But even if we knew nothing more about them, the fact alone that they employ the help of those mockeries of all things dwarfish, marks them as an enemy of the dwarves and it\'s our obligation to annihilate them.' } + text = { "I have no idea what kind of creeps are behind all this. Even the gnomes don't and they have handled that stuff way more often. ...", "But even if we knew nothing more about them, the fact alone that they employ the help of those mockeries of all things dwarfish, marks them as an enemy of the dwarves and it's our obligation to annihilate them." }, }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'Klom Stonecutter\'s the name. ' }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Klom Stonecutter's the name. " }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -113,13 +112,11 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) end if player:getStorageValue(Storage.DangerousDepths.Dwarves.Subterranean) == 2 and player:getStorageValue(Storage.DangerousDepths.Dwarves.TimeTaskSubterranean) <= 0 then - npcHandler:say({ "Vermin. Everywhere. We get a lot of strange four-legged crawlers and worms down here lately. It's getting out of hand and... well, I need a real killer for this. ", - "Prepared to get rid of some seriously foul creepers for us?" }, npc, creature) + npcHandler:say({ "Vermin. Everywhere. We get a lot of strange four-legged crawlers and worms down here lately. It's getting out of hand and... well, I need a real killer for this. ", "Prepared to get rid of some seriously foul creepers for us?" }, npc, creature) npcHandler:setTopic(playerId, 2) end if player:getStorageValue(Storage.DangerousDepths.Dwarves.Subterranean) < 1 then -- Não possuía a missão, agora possui! - npcHandler:say({ "Vermin. Everywhere. We get a lot of strange four-legged crawlers and worms down here lately. It's getting out of hand and... well, I need a real killer for this. ", - "Prepared to get rid of some seriously foul creepers for us?" }, npc, creature) + npcHandler:say({ "Vermin. Everywhere. We get a lot of strange four-legged crawlers and worms down here lately. It's getting out of hand and... well, I need a real killer for this. ", "Prepared to get rid of some seriously foul creepers for us?" }, npc, creature) npcHandler:setTopic(playerId, 2) elseif (player:getStorageValue(Storage.DangerousDepths.Dwarves.Subterranean) == 1) and (player:getStorageValue(Storage.DangerousDepths.Dwarves.Organisms) < 50) then -- Está na missão porém não terminou a task! npcHandler:say({ "Come back when you have finished your job." }, npc, creature) @@ -151,16 +148,20 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) end if player:getStorageValue(Storage.DangerousDepths.Dwarves.Home) == 2 and player:getStorageValue(Storage.DangerousDepths.Dwarves.TimeTaskHome) <= 0 then - npcHandler:say({ "We need to find a way to drive off the exiles from these caves. Countless makeshift homes are popping up at every corner. Destroy them and get the Lost out of hiding to eliminate them. ... ", - "If you can capture a few of them, you'll receive a bonus. Just bring 'em to the border of our outpost and we will take care of the rest. ... ", - "Are you ready for that? " }, npc, creature) + npcHandler:say( + { "We need to find a way to drive off the exiles from these caves. Countless makeshift homes are popping up at every corner. Destroy them and get the Lost out of hiding to eliminate them. ... ", "If you can capture a few of them, you'll receive a bonus. Just bring 'em to the border of our outpost and we will take care of the rest. ... ", "Are you ready for that? " }, + npc, + creature + ) npcHandler:setTopic(playerId, 22) npcHandler:setTopic(playerId, 22) end if player:getStorageValue(Storage.DangerousDepths.Dwarves.Home) < 1 then -- Não possuía a missão, agora possui! - npcHandler:say({ "We need to find a way to drive off the exiles from these caves. Countless makeshift homes are popping up at every corner. Destroy them and get the Lost out of hiding to eliminate them. ... ", - "If you can capture a few of them, you'll receive a bonus. Just bring 'em to the border of our outpost and we will take care of the rest. ... ", - "Are you ready for that? " }, npc, creature) + npcHandler:say( + { "We need to find a way to drive off the exiles from these caves. Countless makeshift homes are popping up at every corner. Destroy them and get the Lost out of hiding to eliminate them. ... ", "If you can capture a few of them, you'll receive a bonus. Just bring 'em to the border of our outpost and we will take care of the rest. ... ", "Are you ready for that? " }, + npc, + creature + ) npcHandler:setTopic(playerId, 22) npcHandler:setTopic(playerId, 22) elseif (player:getStorageValue(Storage.DangerousDepths.Dwarves.Home) == 1) and (player:getStorageValue(Storage.DangerousDepths.Dwarves.LostExiles) < 20 and player:getStorageValue(Storage.DangerousDepths.Dwarves.Prisoners) < 3) then -- Está na missão porém não terminou nenhuma das tasks! @@ -255,20 +256,20 @@ local function creatureSayCallback(npc, creature, type, message) -- Início checagem de pontos de tasks!! if MsgContains(message, "status") then - npcHandler:say({ "So you want to know what we all think about your deeds? What leader\'s opinion are you interested in, the {gnomes} (Gnomus), the {dwarves} (Klom Stonecutter) or the {scouts} (Lardoc Bashsmite)?" }, npc, creature) + npcHandler:say({ "So you want to know what we all think about your deeds? What leader's opinion are you interested in, the {gnomes} (Gnomus), the {dwarves} (Klom Stonecutter) or the {scouts} (Lardoc Bashsmite)?" }, npc, creature) npcHandler:setTopic(playerId, 5) npcHandler:setTopic(playerId, 5) elseif MsgContains(message, "gnomes") and npcHandler:getTopic(playerId) == 5 then - npcHandler:say({ 'The gnomes are still in need of your help, member of Bigfoot\'s Brigade. Prove your worth by answering their calls! (' .. math.max(player:getStorageValue(Storage.DangerousDepths.Gnomes.Status), 0) .. '/10)' }, npc, creature) + npcHandler:say({ "The gnomes are still in need of your help, member of Bigfoot's Brigade. Prove your worth by answering their calls! (" .. math.max(player:getStorageValue(Storage.DangerousDepths.Gnomes.Status), 0) .. "/10)" }, npc, creature) elseif MsgContains(message, "dwarves") and npcHandler:getTopic(playerId) == 5 then - npcHandler:say({ 'The dwarves are still in need of your help, member of Bigfoot\'s Brigade. Prove your worth by answering their calls! (' .. math.max(player:getStorageValue(Storage.DangerousDepths.Dwarves.Status), 0) .. '/10)' }, npc, creature) + npcHandler:say({ "The dwarves are still in need of your help, member of Bigfoot's Brigade. Prove your worth by answering their calls! (" .. math.max(player:getStorageValue(Storage.DangerousDepths.Dwarves.Status), 0) .. "/10)" }, npc, creature) elseif MsgContains(message, "scouts") and npcHandler:getTopic(playerId) == 5 then - npcHandler:say({ 'The scouts are still in need of your help, member of Bigfoot\'s Brigade. Prove your worth by answering their calls! (' .. math.max(player:getStorageValue(Storage.DangerousDepths.Scouts.Status), 0) .. '/10)' }, npc, creature) + npcHandler:say({ "The scouts are still in need of your help, member of Bigfoot's Brigade. Prove your worth by answering their calls! (" .. math.max(player:getStorageValue(Storage.DangerousDepths.Scouts.Status), 0) .. "/10)" }, npc, creature) end return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/knight_hykrion.lua b/data-otservbr-global/npc/knight_hykrion.lua index bb8dc4794bd..3cbb67779e3 100644 --- a/data-otservbr-global/npc/knight_hykrion.lua +++ b/data-otservbr-global/npc/knight_hykrion.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 78, lookLegs = 78, lookFeet = 95, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/kromrek.lua b/data-otservbr-global/npc/kromrek.lua index 1881699c5f7..99b95bfd30a 100644 --- a/data-otservbr-global/npc/kromrek.lua +++ b/data-otservbr-global/npc/kromrek.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 104, lookLegs = 104, lookFeet = 104, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/kroox.lua b/data-otservbr-global/npc/kroox.lua index df9bf176c2d..3d0d43436bf 100644 --- a/data-otservbr-global/npc/kroox.lua +++ b/data-otservbr-global/npc/kroox.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 0, lookBody = 120, lookLegs = 82, - lookFeet = 95 + lookFeet = 95, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,7 +61,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.SamsOldBackpack) == 1 then npcHandler:say({ "Oh, so its you, he wrote me about? Sadly I have no dwarven armor in stock. But I give you the permission to retrive one from the mines. ...", - "The problem is, some giant spiders made the tunnels where the storage is their new home. Good luck." + "The problem is, some giant spiders made the tunnels where the storage is their new home. Good luck.", }, npc, creature) player:setStorageValue(Storage.SamsOldBackpack, 2) player:setStorageValue(Storage.SamsOldBackpackDoor, 1) @@ -120,7 +120,7 @@ npcConfig.shop = { { itemName = "viking helmet", clientId = 3367, buy = 265, sell = 66 }, { itemName = "viking shield", clientId = 3431, buy = 260, sell = 85 }, { itemName = "warrior helmet", clientId = 3369, sell = 696 }, - { itemName = "wooden shield", clientId = 3412, buy = 15, sell = 5 } + { itemName = "wooden shield", clientId = 3412, buy = 15, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -131,7 +131,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/kulag_the_guard.lua b/data-otservbr-global/npc/kulag_the_guard.lua index cf0d5dbcbb1..8a6cc5748f2 100644 --- a/data-otservbr-global/npc/kulag_the_guard.lua +++ b/data-otservbr-global/npc/kulag_the_guard.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 19, lookFeet = 19, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -75,7 +75,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "It's my duty to protect the city." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "It's my duty to protect the city." }) npcHandler:setMessage(MESSAGE_GREET, "LONG LIVE THE KING!") npcHandler:setMessage(MESSAGE_FAREWELL, "LONG LIVE THE KING!") diff --git a/data-otservbr-global/npc/lailene.lua b/data-otservbr-global/npc/lailene.lua index 29227c5987b..682dec37683 100644 --- a/data-otservbr-global/npc/lailene.lua +++ b/data-otservbr-global/npc/lailene.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 113, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,7 +50,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'brotherhood of bones' }, StdModule.say, { npcHandler = npcHandler, text = "... what?! Uh - no, no. Of course I wouldn't have anything to do with... them." }) +keywordHandler:addKeyword({ "brotherhood of bones" }, StdModule.say, { npcHandler = npcHandler, text = "... what?! Uh - no, no. Of course I wouldn't have anything to do with... them." }) npcHandler:setMessage(MESSAGE_GREET, "What do you want in my magical robe store? I doubt I have anything that's of interest to you.") npcHandler:setMessage(MESSAGE_FAREWELL, "See ya, |PLAYERNAME|.") @@ -66,7 +66,7 @@ npcConfig.shop = { { itemName = "magicians robe", clientId = 7991, buy = 450 }, { itemName = "spellweavers rob", clientId = 10438, sell = 12000 }, { itemName = "spirit cloak", clientId = 8042, buy = 1000, sell = 350 }, - { itemName = "zaoan robe", clientId = 10439, sell = 12000 } + { itemName = "zaoan robe", clientId = 10439, sell = 12000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -77,7 +77,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/lardoc_bashsmite.lua b/data-otservbr-global/npc/lardoc_bashsmite.lua index ad0c36bf1d1..79fbd410d6e 100644 --- a/data-otservbr-global/npc/lardoc_bashsmite.lua +++ b/data-otservbr-global/npc/lardoc_bashsmite.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 47, lookLegs = 47, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -63,20 +63,24 @@ local function greetCallback(npc, creature) return true end -keywordHandler:addKeyword({ 'work' }, StdModule.say, { npcHandler = npcHandler, text = 'Here\'s the situation: a tide of hazardous bugs, the gnomes named them {diremaws}, threatens our base. Then there is some kind of {growth} which seems connected to them somehow. We need to get rid of both.' }) -keywordHandler:addKeyword({ 'worth' }, StdModule.say, { +keywordHandler:addKeyword({ "work" }, StdModule.say, { npcHandler = npcHandler, text = "Here's the situation: a tide of hazardous bugs, the gnomes named them {diremaws}, threatens our base. Then there is some kind of {growth} which seems connected to them somehow. We need to get rid of both." }) +keywordHandler:addKeyword({ "worth" }, StdModule.say, { npcHandler = npcHandler, - text = { 'You\'re already known amongst the gnomes, member of the Bigfoot Brigade. I will make sure that the alliance learns of your deeds but you\'ll still need to help the dwarves and gnomes of this outpost to show your worth. ...', - 'We also found suspicious devices carried by all kinds of creatures down here. Down here, they are of extreme worth to us since they could contain the key to what\'s happening all around us. ... ', - 'If you can aquire any, return them to me and I make sure to tell the others of your generosity. Return to me afterwards to check on your current {status}.' } + text = { + "You're already known amongst the gnomes, member of the Bigfoot Brigade. I will make sure that the alliance learns of your deeds but you'll still need to help the dwarves and gnomes of this outpost to show your worth. ...", + "We also found suspicious devices carried by all kinds of creatures down here. Down here, they are of extreme worth to us since they could contain the key to what's happening all around us. ... ", + "If you can aquire any, return them to me and I make sure to tell the others of your generosity. Return to me afterwards to check on your current {status}.", + }, }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, - text = { 'Leading the charge! It\'s a war down here. I maintain the outer defences and supplies which are organised back in Kazordoon and also by the gnomes. ...', - 'I have sealed some of the areas far too dangerous for anyone to enter. If you can prove you\'re capable, you\'ll get an oportunity to help destroying the weird machines, pumping lava into the caves leading to the most dangerous enemies.', - 'But even if we knew nothing more about them, the fact alone that they employ the help of those mockeries of all things dwarfish, marks them as an enemy of the dwarves and it\'s our obligation to annihilate them.' } + text = { + "Leading the charge! It's a war down here. I maintain the outer defences and supplies which are organised back in Kazordoon and also by the gnomes. ...", + "I have sealed some of the areas far too dangerous for anyone to enter. If you can prove you're capable, you'll get an oportunity to help destroying the weird machines, pumping lava into the caves leading to the most dangerous enemies.", + "But even if we knew nothing more about them, the fact alone that they employ the help of those mockeries of all things dwarfish, marks them as an enemy of the dwarves and it's our obligation to annihilate them.", + }, }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'Bashsmite. That\'s all you need to know.' }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Bashsmite. That's all you need to know." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -95,19 +99,23 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) end if player:getStorageValue(Storage.DangerousDepths.Scouts.Diremaw) == 2 and player:getStorageValue(Storage.DangerousDepths.Scouts.TimeTaskDiremaws) <= 0 then -- Vai fazer a missão após 20h - npcHandler:say({ "The gnomes say that these creatures seem to thrive on mushroom sponges. But not only that, apparently they also lay eggs in their own cadavers to breed even faster. ...", + npcHandler:say({ + "The gnomes say that these creatures seem to thrive on mushroom sponges. But not only that, apparently they also lay eggs in their own cadavers to breed even faster. ...", "Yes, disgusting. I guess it provides everything their offspring needs... well, we probably shouldn't go into that much further. Instead we should focus on preventing that from happening. ... ", "If I understood that correctly, the gnomes 'grew' a device to completely neutralise diremaw corpses. Acting as a very effective counter measure. ... ", "A lot of corpses are lying around wherever these creatures are being hunted. Now all we need are, you guessed it, volunteers to clean up as many of those remains as possible ... ", - "Are you willing to help? " }, npc, creature) + "Are you willing to help? ", + }, npc, creature) npcHandler:setTopic(playerId, 2) end if player:getStorageValue(Storage.DangerousDepths.Scouts.Diremaw) < 1 then -- Não possuía a missão, agora possui! - npcHandler:say({ "The gnomes say that these creatures seem to thrive on mushroom sponges. But not only that, apparently they also lay eggs in their own cadavers to breed even faster. ...", + npcHandler:say({ + "The gnomes say that these creatures seem to thrive on mushroom sponges. But not only that, apparently they also lay eggs in their own cadavers to breed even faster. ...", "Yes, disgusting. I guess it provides everything their offspring needs... well, we probably shouldn't go into that much further. Instead we should focus on preventing that from happening. ... ", "If I understood that correctly, the gnomes 'grew' a device to completely neutralise diremaw corpses. Acting as a very effective counter measure. ... ", "A lot of corpses are lying around wherever these creatures are being hunted. Now all we need are, you guessed it, volunteers to clean up as many of those remains as possible ... ", - "Are you willing to help? " }, npc, creature) + "Are you willing to help? ", + }, npc, creature) npcHandler:setTopic(playerId, 2) elseif (player:getStorageValue(Storage.DangerousDepths.Scouts.Diremaw) == 1) and (player:getStorageValue(Storage.DangerousDepths.Scouts.DiremawsCount) < 20) then -- Está na missão porém não terminou a task! npcHandler:say({ "Come back when you have finished your job." }, npc, creature) @@ -139,22 +147,26 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) end if player:getStorageValue(Storage.DangerousDepths.Scouts.Growth) == 2 and player:getStorageValue(Storage.DangerousDepths.Scouts.TimeTaskGrowth) <= 0 then -- Vai fazer a missão após 20h - npcHandler:say({ "I can't explain that stuff, even the gnomes don't know what grows in those caves. All we know is that this stuff brought about all the diremaws we are now facing. ...", + npcHandler:say({ + "I can't explain that stuff, even the gnomes don't know what grows in those caves. All we know is that this stuff brought about all the diremaws we are now facing. ...", "This vermin is somehow attracted to this sponge, my guess is they use it as a nourishment, too. We need to get rid of the stuff regularly to reduce their numbers to a manageable level. ...", "We hauled our explosives down there - and I mean ALL our explosives. Dangerous? Indeed, so we positioned someone down there to actually watch this depot. ...", "We built an iron fence around it and added a mechanism to quickly get barrel if need be. Then an... accident happened to our guard down there and ...", "Well, to make a long story short, the barrels are unguarded right now and the diremaws are now too numerous and we are in desperate need of volunteers. ... ", - "We need someone to take those barrels to the source of the ever growing sponge and burn it down. All of it. There should be at least five locations. Are you up for that? " }, npc, creature) + "We need someone to take those barrels to the source of the ever growing sponge and burn it down. All of it. There should be at least five locations. Are you up for that? ", + }, npc, creature) npcHandler:setTopic(playerId, 22) npcHandler:setTopic(playerId, 22) end if player:getStorageValue(Storage.DangerousDepths.Scouts.Growth) < 1 then -- Não possuía a missão, agora possui! - npcHandler:say({ "I can't explain that stuff, even the gnomes don't know what grows in those caves. All we know is that this stuff brought about all the diremaws we are now facing. ...", + npcHandler:say({ + "I can't explain that stuff, even the gnomes don't know what grows in those caves. All we know is that this stuff brought about all the diremaws we are now facing. ...", "This vermin is somehow attracted to this sponge, my guess is they use it as a nourishment, too. We need to get rid of the stuff regularly to reduce their numbers to a manageable level. ...", "We hauled our explosives down there - and I mean ALL our explosives. Dangerous? Indeed, so we positioned someone down there to actually watch this depot. ...", "We built an iron fence around it and added a mechanism to quickly get barrel if need be. Then an... accident happened to our guard down there and ...", "Well, to make a long story short, the barrels are unguarded right now and the diremaws are now too numerous and we are in desperate need of volunteers. ... ", - "We need someone to take those barrels to the source of the ever growing sponge and burn it down. All of it. There should be at least five locations. Are you up for that? " }, npc, creature) + "We need someone to take those barrels to the source of the ever growing sponge and burn it down. All of it. There should be at least five locations. Are you up for that? ", + }, npc, creature) npcHandler:setTopic(playerId, 22) npcHandler:setTopic(playerId, 22) end @@ -246,20 +258,20 @@ local function creatureSayCallback(npc, creature, type, message) -- Início checagem de pontos de tasks!! if MsgContains(message, "status") then - npcHandler:say({ "So you want to know what we all think about your deeds? What leader\'s opinion are you interested in, the {gnomes} (Gnomus), the {dwarves} (Klom Stonecutter) or the {scouts} (Lardoc Bashsmite)?" }, npc, creature) + npcHandler:say({ "So you want to know what we all think about your deeds? What leader's opinion are you interested in, the {gnomes} (Gnomus), the {dwarves} (Klom Stonecutter) or the {scouts} (Lardoc Bashsmite)?" }, npc, creature) npcHandler:setTopic(playerId, 5) npcHandler:setTopic(playerId, 5) elseif MsgContains(message, "gnomes") and npcHandler:getTopic(playerId) == 5 then - npcHandler:say({ 'The gnomes are still in need of your help, member of Bigfoot\'s Brigade. Prove your worth by answering their calls! (' .. math.max(player:getStorageValue(Storage.DangerousDepths.Gnomes.Status), 0) .. '/10)' }, npc, creature) + npcHandler:say({ "The gnomes are still in need of your help, member of Bigfoot's Brigade. Prove your worth by answering their calls! (" .. math.max(player:getStorageValue(Storage.DangerousDepths.Gnomes.Status), 0) .. "/10)" }, npc, creature) elseif MsgContains(message, "dwarves") and npcHandler:getTopic(playerId) == 5 then - npcHandler:say({ 'The dwarves are still in need of your help, member of Bigfoot\'s Brigade. Prove your worth by answering their calls! (' .. math.max(player:getStorageValue(Storage.DangerousDepths.Dwarves.Status), 0) .. '/10)' }, npc, creature) + npcHandler:say({ "The dwarves are still in need of your help, member of Bigfoot's Brigade. Prove your worth by answering their calls! (" .. math.max(player:getStorageValue(Storage.DangerousDepths.Dwarves.Status), 0) .. "/10)" }, npc, creature) elseif MsgContains(message, "scouts") and npcHandler:getTopic(playerId) == 5 then - npcHandler:say({ 'The scouts are still in need of your help, member of Bigfoot\'s Brigade. Prove your worth by answering their calls! (' .. math.max(player:getStorageValue(Storage.DangerousDepths.Scouts.Status), 0) .. '/10)' }, npc, creature) + npcHandler:say({ "The scouts are still in need of your help, member of Bigfoot's Brigade. Prove your worth by answering their calls! (" .. math.max(player:getStorageValue(Storage.DangerousDepths.Scouts.Status), 0) .. "/10)" }, npc, creature) end return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/larek.lua b/data-otservbr-global/npc/larek.lua index 6ed39f3ccd4..84d872134ac 100644 --- a/data-otservbr-global/npc/larek.lua +++ b/data-otservbr-global/npc/larek.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 50, lookLegs = 10, lookFeet = 3, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -66,7 +66,7 @@ npcConfig.shop = { { itemName = "small topaz", clientId = 9057, sell = 200 }, { itemName = "vial", clientId = 2874, buy = 20 }, { itemName = "vial of milk", clientId = 2874, buy = 50, count = 9 }, - { itemName = "white pearl", clientId = 3026, sell = 160 } + { itemName = "white pearl", clientId = 3026, sell = 160 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -77,7 +77,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/larfion_the_shaman.lua b/data-otservbr-global/npc/larfion_the_shaman.lua index 1a57a1a94ec..53695fbcea0 100644 --- a/data-otservbr-global/npc/larfion_the_shaman.lua +++ b/data-otservbr-global/npc/larfion_the_shaman.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 79, lookBody = 78, lookLegs = 77, - lookFeet = 94 + lookFeet = 94, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/lavirias.lua b/data-otservbr-global/npc/lavirias.lua index 3dbc86b6ebc..f9d4e6534f7 100644 --- a/data-otservbr-global/npc/lavirias.lua +++ b/data-otservbr-global/npc/lavirias.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 19, lookBody = 41, lookLegs = 117, - lookFeet = 116 + lookFeet = 116, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/lazaran.lua b/data-otservbr-global/npc/lazaran.lua index b45c6c310fe..8c7b59c1ffe 100644 --- a/data-otservbr-global/npc/lazaran.lua +++ b/data-otservbr-global/npc/lazaran.lua @@ -15,14 +15,13 @@ npcConfig.outfit = { lookHead = 57, lookBody = 57, lookLegs = 57, - lookFeet = 57 + lookFeet = 57, } npcConfig.flags = { - floorchange = false + floorchange = false, } - local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -72,11 +71,10 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "help") then npcHandler:say("You mean you want help us?", npc, creature) npcHandler:setTopic(playerId, 11) - elseif MsgContains(message, "mission") and npcHandler:getTopic(playerId) == 12 and player:getStorageValue(Storage.UnnaturalSelection.Questline) < 1 - and player:getStorageValue(TheNewFrontier.Mission03) == 3 then + elseif MsgContains(message, "mission") and npcHandler:getTopic(playerId) == 12 and player:getStorageValue(Storage.UnnaturalSelection.Questline) < 1 and player:getStorageValue(TheNewFrontier.Mission03) == 3 then npcHandler:say({ "Big problem we have! Skull of first leader gone. He ancestor of whole tribe but died long ago in war. We have keep his skull on our sacred place. ...", - "Then one night, green men came with wolves... and one of wolves took skull and ran off chewing on it! We need back - many wisdom and power is in skull. Maybe they took to north fortress. But can be hard getting in. You try get our holy skull back?" + "Then one night, green men came with wolves... and one of wolves took skull and ran off chewing on it! We need back - many wisdom and power is in skull. Maybe they took to north fortress. But can be hard getting in. You try get our holy skull back?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif MsgContains(message, "mission") and player:getStorageValue(Storage.UnnaturalSelection.Questline) >= 1 then @@ -87,7 +85,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "You brought back skull of first leader. Hero of tribe! But we more missions to do. ...", "Me and Ulala talk about land outside. We wanting to see more of land! Land over big water! But us no can leave tribe. No can cross water. Only way is skull of first leader. ...", - "What holy skull sees, tribe sees. That we believe. Can you bring holy skull over big water and show places?" + "What holy skull sees, tribe sees. That we believe. Can you bring holy skull over big water and show places?", }, npc, creature) npcHandler:setTopic(playerId, 3) elseif player:getStorageValue(Storage.UnnaturalSelection.Questline) == 3 then @@ -100,7 +98,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "You well did! Great hunt is under best signs now. We prepare weapons and paint faces and then go! ...", "No no, you no need to help us. But can prepare afterparty! Little men sent us stuff some time ago. Was strange water in there. Brown and stinky! But when we tried all tribe became veeeeeeery happy. ...", - "Now brown water is gone and we sad! Can you bring POT of brown water for party after great hunt? Just bring to me and me trade for shiny treasure." + "Now brown water is gone and we sad! Can you bring POT of brown water for party after great hunt? Just bring to me and me trade for shiny treasure.", }, npc, creature) player:setStorageValue(Storage.UnnaturalSelection.Questline, 14) player:setStorageValue(Storage.UnnaturalSelection.Mission06, 2) --Questlog, Unnatural Selection Quest "Mission 6: Firewater Burn" diff --git a/data-otservbr-global/npc/lea.lua b/data-otservbr-global/npc/lea.lua index fb03dea99e3..22686519261 100644 --- a/data-otservbr-global/npc/lea.lua +++ b/data-otservbr-global/npc/lea.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 95, lookLegs = 113, lookFeet = 113, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,13 +50,13 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the archsorcerer of Carlin. I keep the secrets of our order." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "My name is Lea." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the archsorcerer of Carlin. I keep the secrets of our order." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Lea." }) --keywordHandler:addKeyword({'spell'}, StdModule.say, {npcHandler = npcHandler, text = "Sorry, I only sell spells to sorcerers."}) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "Time is a force we sorcerers will master one day." }) -keywordHandler:addKeyword({ 'sorcerer' }, StdModule.say, { npcHandler = npcHandler, text = "Any sorcerer dedicates his whole life to the study of the arcane arts." }) -keywordHandler:addKeyword({ 'power' }, StdModule.say, { npcHandler = npcHandler, text = "We sorcerers wield arcane powers beyond comprehension of men." }) -keywordHandler:addKeyword({ 'arcane' }, StdModule.say, { npcHandler = npcHandler, text = "We sorcerers wield arcane powers beyond comprehension of men." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Time is a force we sorcerers will master one day." }) +keywordHandler:addKeyword({ "sorcerer" }, StdModule.say, { npcHandler = npcHandler, text = "Any sorcerer dedicates his whole life to the study of the arcane arts." }) +keywordHandler:addKeyword({ "power" }, StdModule.say, { npcHandler = npcHandler, text = "We sorcerers wield arcane powers beyond comprehension of men." }) +keywordHandler:addKeyword({ "arcane" }, StdModule.say, { npcHandler = npcHandler, text = "We sorcerers wield arcane powers beyond comprehension of men." }) npcHandler:setMessage(MESSAGE_GREET, "Greetings, |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_FAREWELL, "Take care on your journeys.") diff --git a/data-otservbr-global/npc/lector.lua b/data-otservbr-global/npc/lector.lua index 04a33a7868e..32eb151687a 100644 --- a/data-otservbr-global/npc/lector.lua +++ b/data-otservbr-global/npc/lector.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 0, lookFeet = 68, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,7 +50,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'meat' }, StdModule.say, { npcHandler = npcHandler, text = "I can offer you ham or meat. If you'd like to check the quality of my wares, ask me for a {trade}." }) +keywordHandler:addKeyword({ "meat" }, StdModule.say, { npcHandler = npcHandler, text = "I can offer you ham or meat. If you'd like to check the quality of my wares, ask me for a {trade}." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to my humble {meat} shop, |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_FAREWELL, "Please come and buy again, |PLAYERNAME|.") @@ -59,7 +59,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "ham", clientId = 3582, buy = 6 }, - { itemName = "meat", clientId = 3577, buy = 3 } + { itemName = "meat", clientId = 3577, buy = 3 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -70,7 +70,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/lee_delle.lua b/data-otservbr-global/npc/lee_delle.lua index 8a4da764087..4a6fbaa77e1 100644 --- a/data-otservbr-global/npc/lee_delle.lua +++ b/data-otservbr-global/npc/lee_delle.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 76, lookLegs = 72, lookFeet = 96, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Ask me if you need help!' }, - { text = 'Buy and sell everything you want here!' }, - { text = 'No need to run from shop to shop, my place is all that\'s needed!' }, - { text = 'Special offers for premium customers!' } + { text = "Ask me if you need help!" }, + { text = "Buy and sell everything you want here!" }, + { text = "No need to run from shop to shop, my place is all that's needed!" }, + { text = "Special offers for premium customers!" }, } local keywordHandler = KeywordHandler:new() @@ -59,101 +59,98 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - -- Basic keywords -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Lee\'Delle.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a merchant. If you like to see my offers, just ask me for a {trade}.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s about |TIME|.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, it\'s a good idea to leave most of your money in the bank and only take what you need. That way your gold is safe.' }) -keywordHandler:addKeyword({ 'cookie' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh no! I\'ve got to watch what I eat. {Lily} loves cookies, though.' }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { npcHandler = npcHandler, text = 'There are many merchants in this village. Just ask them for a {trade} to see their offers. But I can promise you - my offers are the best around!' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m fine. I\'m delighted to welcome you as my customer.' }) -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'What kind of information do you need? I could tell you about different topics such as {equipment}, {monsters} or {Rookgaard} in general.' }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'How can I help you? Would you like to {trade} with me? I can also give you general {hints}. Or just ask me anything you\'d like to know.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'You should really take some time and travel around the marvellous areas of Tibia. There\'s everything - ice islands, deserts, jungles and mountains!' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is the place to go when you are very low on {health} or poisoned. Ask {Cipfried} for a heal - he usually notices emergencies by himself.' }) -keywordHandler:addKeyword({ 'health' }, StdModule.say, { npcHandler = npcHandler, text = 'Health potions will heal you for about 75 hit points. It can\'t hurt to carry one with you, just in case.' }) -keywordHandler:addKeyword({ 'equipment' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, very important equipment would be a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}. Maybe also a torch if you\'re heading into a dark {dungeon}.' }) -keywordHandler:addKeyword({ 'fishing' }, StdModule.say, { npcHandler = npcHandler, text = 'I sell fishing rods and worms in case you want to go fishing. Simply ask me for a {trade}.' }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = 'You could check out which weapons I offer by asking me for a {trade}. Don\'t be shy!' }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, I\'m sorry, that\'s one of the things I don\'t have for sale. But {Willie} or {Billy} surely have something to eat for you.' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'The king supports our little village very much!' }) -keywordHandler:addKeyword({ 'academy' }, StdModule.say, { npcHandler = npcHandler, text = 'In the academy you can get a lot of information from books. You can also try out a few things by yourself.' }) -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, { npcHandler = npcHandler, text = 'Isn\'t it lovely here? You\'ll be surprised once you reach the {mainland} - so much to explore!' }) -keywordHandler:addKeyword({ 'mainland' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, the mainland also consists of several continents. You can go there once you\'ve reached level 8 and talked to the {oracle}.' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'Good monsters to start with are rats. They live in the {sewers} under the village of {Rookgaard}.' }) -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { npcHandler = npcHandler, text = 'Just ask me for a {trade} to see what I buy from you.' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'Be careful down there! Make sure you bought enough {torches} and a {rope} or you might get lost.' }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { npcHandler = npcHandler, text = 'There are many sewer entrances throughout Rookgaard. If you want to know more details about monsters and dungeons, best talk to one of the guards.' }) - -keywordHandler:addKeyword({ 'offer' }, StdModule.say, { npcHandler = npcHandler, text = 'Just ask me for a {trade} to see my offers. Apart from that, I also sell {footballs}.' }) -keywordHandler:addAliasKeyword({ 'stuff' }) -keywordHandler:addAliasKeyword({ 'wares' }) -keywordHandler:addAliasKeyword({ 'buy' }) - -keywordHandler:addKeyword({ 'quest' }, StdModule.say, { npcHandler = npcHandler, text = 'I really love flowers. My favourites are {honey flowers}. Sadly, they are very rare on this isle. If you can find one for me, I\'ll give you a little reward.' }) -keywordHandler:addAliasKeyword({ 'mission' }) - -keywordHandler:addKeyword({ 'armor' }, StdModule.say, { npcHandler = npcHandler, text = 'You could check out which armors or shields I offer by asking me for a {trade}. Don\'t be shy!' }) -keywordHandler:addAliasKeyword({ 'shield' }) - -keywordHandler:addKeyword({ 'backpack' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I\'m selling that. Simply ask me for a {trade} to view all my offers.' }) -keywordHandler:addAliasKeyword({ 'rope' }) -keywordHandler:addAliasKeyword({ 'shovel' }) -keywordHandler:addAliasKeyword({ 'torch' }) - -keywordHandler:addKeyword({ 'money' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, no gold, no deal. Earn gold by fighting {monsters} and picking up the things they carry. Sell it to {merchants} to make profit!' }) -keywordHandler:addAliasKeyword({ 'gold' }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Lee'Delle." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a merchant. If you like to see my offers, just ask me for a {trade}." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It's about |TIME|." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "Well, it's a good idea to leave most of your money in the bank and only take what you need. That way your gold is safe." }) +keywordHandler:addKeyword({ "cookie" }, StdModule.say, { npcHandler = npcHandler, text = "Oh no! I've got to watch what I eat. {Lily} loves cookies, though." }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, text = "There are many merchants in this village. Just ask them for a {trade} to see their offers. But I can promise you - my offers are the best around!" }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "I'm fine. I'm delighted to welcome you as my customer." }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "What kind of information do you need? I could tell you about different topics such as {equipment}, {monsters} or {Rookgaard} in general." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "How can I help you? Would you like to {trade} with me? I can also give you general {hints}. Or just ask me anything you'd like to know." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "You should really take some time and travel around the marvellous areas of Tibia. There's everything - ice islands, deserts, jungles and mountains!" }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is the place to go when you are very low on {health} or poisoned. Ask {Cipfried} for a heal - he usually notices emergencies by himself." }) +keywordHandler:addKeyword({ "health" }, StdModule.say, { npcHandler = npcHandler, text = "Health potions will heal you for about 75 hit points. It can't hurt to carry one with you, just in case." }) +keywordHandler:addKeyword({ "equipment" }, StdModule.say, { npcHandler = npcHandler, text = "Well, very important equipment would be a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}. Maybe also a torch if you're heading into a dark {dungeon}." }) +keywordHandler:addKeyword({ "fishing" }, StdModule.say, { npcHandler = npcHandler, text = "I sell fishing rods and worms in case you want to go fishing. Simply ask me for a {trade}." }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "You could check out which weapons I offer by asking me for a {trade}. Don't be shy!" }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, I'm sorry, that's one of the things I don't have for sale. But {Willie} or {Billy} surely have something to eat for you." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "The king supports our little village very much!" }) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { npcHandler = npcHandler, text = "In the academy you can get a lot of information from books. You can also try out a few things by yourself." }) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { npcHandler = npcHandler, text = "Isn't it lovely here? You'll be surprised once you reach the {mainland} - so much to explore!" }) +keywordHandler:addKeyword({ "mainland" }, StdModule.say, { npcHandler = npcHandler, text = "Well, the mainland also consists of several continents. You can go there once you've reached level 8 and talked to the {oracle}." }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Good monsters to start with are rats. They live in the {sewers} under the village of {Rookgaard}." }) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, text = "Just ask me for a {trade} to see what I buy from you." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "Be careful down there! Make sure you bought enough {torches} and a {rope} or you might get lost." }) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, text = "There are many sewer entrances throughout Rookgaard. If you want to know more details about monsters and dungeons, best talk to one of the guards." }) + +keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "Just ask me for a {trade} to see my offers. Apart from that, I also sell {footballs}." }) +keywordHandler:addAliasKeyword({ "stuff" }) +keywordHandler:addAliasKeyword({ "wares" }) +keywordHandler:addAliasKeyword({ "buy" }) + +keywordHandler:addKeyword({ "quest" }, StdModule.say, { npcHandler = npcHandler, text = "I really love flowers. My favourites are {honey flowers}. Sadly, they are very rare on this isle. If you can find one for me, I'll give you a little reward." }) +keywordHandler:addAliasKeyword({ "mission" }) + +keywordHandler:addKeyword({ "armor" }, StdModule.say, { npcHandler = npcHandler, text = "You could check out which armors or shields I offer by asking me for a {trade}. Don't be shy!" }) +keywordHandler:addAliasKeyword({ "shield" }) + +keywordHandler:addKeyword({ "backpack" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I'm selling that. Simply ask me for a {trade} to view all my offers." }) +keywordHandler:addAliasKeyword({ "rope" }) +keywordHandler:addAliasKeyword({ "shovel" }) +keywordHandler:addAliasKeyword({ "torch" }) + +keywordHandler:addKeyword({ "money" }, StdModule.say, { npcHandler = npcHandler, text = "Well, no gold, no deal. Earn gold by fighting {monsters} and picking up the things they carry. Sell it to {merchants} to make profit!" }) +keywordHandler:addAliasKeyword({ "gold" }) -- Names -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'obi' }, StdModule.say, { npcHandler = npcHandler, text = 'He sells {weapons}. However, I can offer you better deals than him!' }) -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m glad she stopped selling stuff. There was too much of a competition going on!' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'Sometimes, I see him walking outside the village near some hole.' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'He dedicated his life to welcome newcomers to this island.' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'Poor old woman, her son {Tom} never visits her.' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'Al Dee has a general {equipment} store in the north-western part of the village.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'She lives under the {academy}. Always nice to chat with her!' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s a local farmer. If you need fresh {food} to regain health, it\'s a good place to go. He\'s only trading with premium adventurers, though.' }) -keywordHandler:addKeyword({ 'willie' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s a local farmer. If you need fresh {food} to regain your health, it\'s a good place to go. However, many monsters carry also food such as meat. Or you could simply pick {blueberries}.' }) -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = 'Visiting Cipfried in the {temple} is a good idea if you are injured or poisoned. He can heal you.' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'She\'s {Obi\'s} granddaughter and deals with {armors} and {shields}, just as I do.' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'He mostly stays by himself. He\'s a hermit outside of town - good luck finding him.' }) -keywordHandler:addKeyword({ 'lily' }, StdModule.say, { npcHandler = npcHandler, text = 'She buys all {blueberries} and {cookies} you can find.' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8 to reach more areas of {Tibia}.' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'He is the {bank} clerk, just below the academy.' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'Seymour is a teacher running the {academy}. He has a lot of important {information} about Tibia.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s the local tanner. You could try selling fresh corpses or leather to him.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'He is a great warrior and our protector.' }) -keywordHandler:addAliasKeyword({ 'zerbrus' }) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "obi" }, StdModule.say, { npcHandler = npcHandler, text = "He sells {weapons}. However, I can offer you better deals than him!" }) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "I'm glad she stopped selling stuff. There was too much of a competition going on!" }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "Sometimes, I see him walking outside the village near some hole." }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "He dedicated his life to welcome newcomers to this island." }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "Poor old woman, her son {Tom} never visits her." }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "Al Dee has a general {equipment} store in the north-western part of the village." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "She lives under the {academy}. Always nice to chat with her!" }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "He's a local farmer. If you need fresh {food} to regain health, it's a good place to go. He's only trading with premium adventurers, though." }) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { npcHandler = npcHandler, text = "He's a local farmer. If you need fresh {food} to regain your health, it's a good place to go. However, many monsters carry also food such as meat. Or you could simply pick {blueberries}." }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = "Visiting Cipfried in the {temple} is a good idea if you are injured or poisoned. He can heal you." }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "She's {Obi's} granddaughter and deals with {armors} and {shields}, just as I do." }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "He mostly stays by himself. He's a hermit outside of town - good luck finding him." }) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { npcHandler = npcHandler, text = "She buys all {blueberries} and {cookies} you can find." }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8 to reach more areas of {Tibia}." }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "He is the {bank} clerk, just below the academy." }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "Seymour is a teacher running the {academy}. He has a lot of important {information} about Tibia." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "He's the local tanner. You could try selling fresh corpses or leather to him." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "He is a great warrior and our protector." }) +keywordHandler:addAliasKeyword({ "zerbrus" }) -- Football -local footballKeyword = keywordHandler:addKeyword({ 'football' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want to buy a football for 111 gold?' }) -footballKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you go.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 111 end, - function(player) - if player:removeMoneyBank(111) then - player:addItem(2990, 1) - end +local footballKeyword = keywordHandler:addKeyword({ "football" }, StdModule.say, { npcHandler = npcHandler, text = "Do you want to buy a football for 111 gold?" }) +footballKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you go.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 111 +end, function(player) + if player:removeMoneyBank(111) then + player:addItem(2990, 1) end -) -footballKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'You don\'t have enough money.', reset = true }) -footballKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, but it\'s fun to play!', reset = true }) +end) +footballKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "You don't have enough money.", reset = true }) +footballKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, but it's fun to play!", reset = true }) -- Honey Flower -keywordHandler:addKeyword({ 'honey', 'flower' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, thank you so much! Please take this piece of armor as reward.' }, - function(player) return player:getItemCount(2984) > 0 end, - function(player) - player:removeItem(2984, 1) - player:addItem(3362, 1) - end -) -keywordHandler:addKeyword({ 'honey', 'flower' }, StdModule.say, { npcHandler = npcHandler, text = 'Honey flowers are my favourites .' }) - -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Bye, bye.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Bye, bye, |PLAYERNAME|.') -npcHandler:setMessage(MESSAGE_SENDTRADE, 'Sure, take a look, honey.') -npcHandler:setMessage(MESSAGE_GREET, 'Nice to see you, |PLAYERNAME|! Ask me for a {trade} if you like to see my exclusive offers.') +keywordHandler:addKeyword({ "honey", "flower" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, thank you so much! Please take this piece of armor as reward." }, function(player) + return player:getItemCount(2984) > 0 +end, function(player) + player:removeItem(2984, 1) + player:addItem(3362, 1) +end) +keywordHandler:addKeyword({ "honey", "flower" }, StdModule.say, { npcHandler = npcHandler, text = "Honey flowers are my favourites ." }) + +npcHandler:setMessage(MESSAGE_WALKAWAY, "Bye, bye.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Bye, bye, |PLAYERNAME|.") +npcHandler:setMessage(MESSAGE_SENDTRADE, "Sure, take a look, honey.") +npcHandler:setMessage(MESSAGE_GREET, "Nice to see you, |PLAYERNAME|! Ask me for a {trade} if you like to see my exclusive offers.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -202,7 +199,7 @@ npcConfig.shop = { { itemName = "viking helmet", clientId = 3367, sell = 25 }, { itemName = "waterball", clientId = 893, buy = 200 }, { itemName = "wooden shield", clientId = 3412, buy = 13, sell = 3 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -213,7 +210,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/leeland.lua b/data-otservbr-global/npc/leeland.lua index 872478d2fad..19bb03d1f5d 100644 --- a/data-otservbr-global/npc/leeland.lua +++ b/data-otservbr-global/npc/leeland.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 53, lookLegs = 15, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -62,24 +62,16 @@ local function creatureSayCallback(npc, creature, type, message) -- The New Frontier if MsgContains(message, "farmine") and player:getStorageValue(TheNewFrontier.Questline) == 14 then if player:getStorageValue(TheNewFrontier.Mission05.Leeland) == 1 then - npcHandler:say( - "Oh yes, that project the whole dwarven community is so excited about. I guess I already know why you are here, but speak up.", - npc, creature) + npcHandler:say("Oh yes, that project the whole dwarven community is so excited about. I guess I already know why you are here, but speak up.", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say( - "Oh yes, that project the whole dwarven community is so excited about. I guess I already know why you are here, but speak up. Do you want to try again?", - npc, creature) + npcHandler:say("Oh yes, that project the whole dwarven community is so excited about. I guess I already know why you are here, but speak up. Do you want to try again?", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif MsgContains(message, "impress") or MsgContains(message, "plea") and - player:getStorageValue(TheNewFrontier.Mission05.LeelandKeyword) <= 2 and - player:getStorageValue(TheNewFrontier.Mission05.Leeland) == 1 then + elseif MsgContains(message, "impress") or MsgContains(message, "plea") and player:getStorageValue(TheNewFrontier.Mission05.LeelandKeyword) <= 2 and player:getStorageValue(TheNewFrontier.Mission05.Leeland) == 1 then if npcHandler:getTopic(playerId) == 1 then if player:getStorageValue(TheNewFrontier.Mission05.LeelandKeyword) == 1 then - npcHandler:say( - "Your pathetic whimpering amuses me. For this I grant you my assistance. But listen, one day I'll ask you to return this favour. From now on, you owe me one.", - npc, creature) + npcHandler:say("Your pathetic whimpering amuses me. For this I grant you my assistance. But listen, one day I'll ask you to return this favour. From now on, you owe me one.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Leeland, 3) else npcHandler:say("Wrong Word.", npc, creature) @@ -87,20 +79,13 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(TheNewFrontier.Mission05.Leeland, 2) end end - elseif MsgContains(message, "reason") or MsgContains(message, "flatter") and - player:getStorageValue(TheNewFrontier.Mission05.LeelandKeyword) > 2 and - player:getStorageValue(TheNewFrontier.Mission05.LeelandKeyword) <= 4 and - player:getStorageValue(TheNewFrontier.Mission05.Leeland) == 1 then + elseif MsgContains(message, "reason") or MsgContains(message, "flatter") and player:getStorageValue(TheNewFrontier.Mission05.LeelandKeyword) > 2 and player:getStorageValue(TheNewFrontier.Mission05.LeelandKeyword) <= 4 and player:getStorageValue(TheNewFrontier.Mission05.Leeland) == 1 then if npcHandler:getTopic(playerId) == 1 then if MsgContains(message, "reason") and player:getStorageValue(TheNewFrontier.Mission05.LeelandKeyword) == 3 then - npcHandler:say( - "The idea of a promising market and new resources suits us quite well. I think it is reasonable to send some assistance.", - npc, creature) + npcHandler:say("The idea of a promising market and new resources suits us quite well. I think it is reasonable to send some assistance.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Leeland, 3) elseif MsgContains(message, "flatter") and player:getStorageValue(TheNewFrontier.Mission05.LeelandKeyword) == 4 then - npcHandler:say( - "Oh yes, that project the whole dwarven community is so excited about. I guess I already know why you are here, but speak up.", - npc, creature) + npcHandler:say("Oh yes, that project the whole dwarven community is so excited about. I guess I already know why you are here, but speak up.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Leeland, 3) else player:setStorageValue(TheNewFrontier.Mission05.Leeland, 2) @@ -108,18 +93,14 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 2 then - if player:getStorageValue(TheNewFrontier.Questline) == 14 and - player:getStorageValue(TheNewFrontier.Mission05.Leeland) == 2 and player:removeItem(10028, 1) then - npcHandler:say( - "Oh yes, that project the whole dwarven community is so excited about. I guess I already know why you are here, but speak up.", - npc, creature) + if player:getStorageValue(TheNewFrontier.Questline) == 14 and player:getStorageValue(TheNewFrontier.Mission05.Leeland) == 2 and player:removeItem(10028, 1) then + npcHandler:say("Oh yes, that project the whole dwarven community is so excited about. I guess I already know why you are here, but speak up.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Leeland, 1) npcHandler:setTopic(playerId, 1) end end else - if player:getStorageValue(TheNewFrontier.Questline) == 14 and - player:getStorageValue(TheNewFrontier.Mission05.Leeland) == 1 then + if player:getStorageValue(TheNewFrontier.Questline) == 14 and player:getStorageValue(TheNewFrontier.Mission05.Leeland) == 1 then npcHandler:say("Wrong Word.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Leeland, 2) end diff --git a/data-otservbr-global/npc/legola.lua b/data-otservbr-global/npc/legola.lua index 3319e3f8a07..12eb92b0127 100644 --- a/data-otservbr-global/npc/legola.lua +++ b/data-otservbr-global/npc/legola.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 68, lookLegs = 68, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Teaching paladin spells! Just come to me!' } + { text = "Teaching paladin spells! Just come to me!" }, } local keywordHandler = KeywordHandler:new() @@ -57,57 +57,64 @@ npcType.onCloseChannel = function(npc, creature) end -- Sniper Gloves -keywordHandler:addKeyword({ 'sniper gloves' }, StdModule.say, { npcHandler = npcHandler, text = 'We are always looking for sniper gloves. They are supposed to raise accuracy. If you find a pair, bring them here. Maybe I can offer you a nice trade.' }, function(player) return player:getItemCount(5875) == 0 end) +keywordHandler:addKeyword({ "sniper gloves" }, StdModule.say, { npcHandler = npcHandler, text = "We are always looking for sniper gloves. They are supposed to raise accuracy. If you find a pair, bring them here. Maybe I can offer you a nice trade." }, function(player) + return player:getItemCount(5875) == 0 +end) local function addGloveKeyword(text, condition, action) - local gloveKeyword = keywordHandler:addKeyword({ 'sniper gloves' }, StdModule.say, { npcHandler = npcHandler, text = text[1] }, condition) - gloveKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = text[2], reset = true }, function(player) return player:getItemCount(5875) == 0 end) - gloveKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = text[3], reset = true }, nil, action) - gloveKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = text[2], reset = true }) + local gloveKeyword = keywordHandler:addKeyword({ "sniper gloves" }, StdModule.say, { npcHandler = npcHandler, text = text[1] }, condition) + gloveKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = text[2], reset = true }, function(player) + return player:getItemCount(5875) == 0 + end) + gloveKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = text[3], reset = true }, nil, action) + gloveKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = text[2], reset = true }) end -- Free Account addGloveKeyword({ - 'You found sniper gloves?! Incredible! I would love to grant you the sniper gloves accessory, but I can only do that for premium warriors. However, I would pay you 2000 gold pieces for them. How about it?', - 'Maybe another time.', - 'Alright! Here is your money, thank you very much.' -}, function(player) return not player:isPremium() end, function(player) + "You found sniper gloves?! Incredible! I would love to grant you the sniper gloves accessory, but I can only do that for premium warriors. However, I would pay you 2000 gold pieces for them. How about it?", + "Maybe another time.", + "Alright! Here is your money, thank you very much.", +}, function(player) + return not player:isPremium() +end, function(player) player:removeItem(5875, 1) player:addMoney(2000) -end -) +end) -- Premium account with addon addGloveKeyword({ - 'Did you find sniper gloves AGAIN?! Incredible! I cannot grant you other accessories, but would you like to sell them to me for 2000 gold pieces?', - 'Maybe another time.', - 'Alright! Here is your money, thank you very much.' -}, function(player) return player:getStorageValue(Storage.OutfitQuest.Hunter.AddonGlove) == 1 end, function(player) + "Did you find sniper gloves AGAIN?! Incredible! I cannot grant you other accessories, but would you like to sell them to me for 2000 gold pieces?", + "Maybe another time.", + "Alright! Here is your money, thank you very much.", +}, function(player) + return player:getStorageValue(Storage.OutfitQuest.Hunter.AddonGlove) == 1 +end, function(player) player:removeItem(5875, 1) player:addMoney(2000) -end -) +end) -- If you don't have the addon addGloveKeyword({ - 'You found sniper gloves?! Incredible! Listen, if you give them to me, I will grant you the right to wear the sniper gloves accessory. How about it?', - 'No problem, maybe another time.', - 'Great! I hereby grant you the right to wear the sniper gloves as an accessory. Congratulations!' -}, function(player) return player:getStorageValue(Storage.OutfitQuest.Hunter.AddonGlove) == -1 end, function(player) + "You found sniper gloves?! Incredible! Listen, if you give them to me, I will grant you the right to wear the sniper gloves accessory. How about it?", + "No problem, maybe another time.", + "Great! I hereby grant you the right to wear the sniper gloves as an accessory. Congratulations!", +}, function(player) + return player:getStorageValue(Storage.OutfitQuest.Hunter.AddonGlove) == -1 +end, function(player) player:removeItem(5875, 1) player:setStorageValue(Storage.OutfitQuest.Hunter.AddonGlove, 1) player:addOutfitAddon(129, 2) player:addOutfitAddon(137, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) -end -) +end) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "girlish hair decoration", clientId = 11443, sell = 30 }, { itemName = "hunters quiver", clientId = 11469, sell = 80 }, - { itemName = "protective charm", clientId = 11444, sell = 60 } + { itemName = "protective charm", clientId = 11444, sell = 60 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -118,7 +125,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/lesser_messenger_of_heaven.lua b/data-otservbr-global/npc/lesser_messenger_of_heaven.lua index d3300fd6daf..2c3ca04b45c 100644 --- a/data-otservbr-global/npc/lesser_messenger_of_heaven.lua +++ b/data-otservbr-global/npc/lesser_messenger_of_heaven.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/liane.lua b/data-otservbr-global/npc/liane.lua index fca0398009a..aed7ccdfb54 100644 --- a/data-otservbr-global/npc/liane.lua +++ b/data-otservbr-global/npc/liane.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 98, lookLegs = 79, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Welcome to the post office!' }, - { text = 'Hey, send a letter to your friend now and then. Keep in touch, you know.' }, - { text = 'If you need help with letters or parcels, just ask me. I can explain everything.' }, - { text = 'No, no, no, there IS no parcel bug, I\'m telling you!' } + { text = "Welcome to the post office!" }, + { text = "Hey, send a letter to your friend now and then. Keep in touch, you know." }, + { text = "If you need help with letters or parcels, just ask me. I can explain everything." }, + { text = "No, no, no, there IS no parcel bug, I'm telling you!" }, } local keywordHandler = KeywordHandler:new() @@ -83,7 +83,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.Postman.MeasurementsLiane, 1) npcHandler:setTopic(playerId, 0) else - npcHandler:say("Oh, you don\'t have it.", npc, creature) + npcHandler:say("Oh, you don't have it.", npc, creature) npcHandler:setTopic(playerId, 0) end end @@ -101,7 +101,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -112,7 +112,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/lightfoot.lua b/data-otservbr-global/npc/lightfoot.lua index e83c1ad54ae..15beda96003 100644 --- a/data-otservbr-global/npc/lightfoot.lua +++ b/data-otservbr-global/npc/lightfoot.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 30, lookLegs = 40, lookFeet = 50, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/lily.lua b/data-otservbr-global/npc/lily.lua index 13c320c24a4..5304c9c6eb6 100644 --- a/data-otservbr-global/npc/lily.lua +++ b/data-otservbr-global/npc/lily.lua @@ -16,22 +16,22 @@ npcConfig.outfit = { lookBody = 101, lookLegs = 86, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Are you injured or poisoned? Get your potions here! All natural, no artificial ingredients!' }, - { text = 'Hey you, over there! Let\'s have a little chat, shall we?' }, - { text = 'Oh, just in case you are looking for the marketplace and dungeons, just follow the path to the east.' }, - { text = 'Anyone got some cookies for me?' }, - { text = 'Do you need help? Just ask me about anything you\'d like to know!' }, - { text = 'I\'m buying all of your blueberries for my famous blueberry juice!' } + { text = "Are you injured or poisoned? Get your potions here! All natural, no artificial ingredients!" }, + { text = "Hey you, over there! Let's have a little chat, shall we?" }, + { text = "Oh, just in case you are looking for the marketplace and dungeons, just follow the path to the east." }, + { text = "Anyone got some cookies for me?" }, + { text = "Do you need help? Just ask me about anything you'd like to know!" }, + { text = "I'm buying all of your blueberries for my famous blueberry juice!" }, } local keywordHandler = KeywordHandler:new() @@ -61,7 +61,6 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - local function greetCallback(npc, creature) local playerId = creature:getId() local player = Player(creature) @@ -80,36 +79,36 @@ end -- The Rookie Guard Quest - Mission 04: Home-Brewed -- Mission 4: Start -local mission4 = keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "That's great to hear! You see, I'm not the only potion brewer on Rookgaard. The hermit Hyacinth has his little alchemy lab outside the village. ...", - "He's old and can't make his way into the village anymore, but needs some of the herbs that grow only around here. Could you please deliver a bag of herbs to Hyacinth?" - } +local mission4 = keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "That's great to hear! You see, I'm not the only potion brewer on Rookgaard. The hermit Hyacinth has his little alchemy lab outside the village. ...", + "He's old and can't make his way into the village anymore, but needs some of the herbs that grow only around here. Could you please deliver a bag of herbs to Hyacinth?", }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 1 end -) +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 1 +end) keywordHandler:addAliasKeyword({ "mission" }) -- Mission 4: Decline -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Oh. In that case, maybe you're interested in a {trade} - I sell potions and buy a few other things.", - reset = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 1 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Oh. In that case, maybe you're interested in a {trade} - I sell potions and buy a few other things.", + reset = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 1 +end) -- Mission 4: Accept -mission4:addChildKeyword({ "yes" }, StdModule.say, +mission4:addChildKeyword( + { "yes" }, + StdModule.say, { npcHandler = npcHandler, text = { "Here you go, honey. I really appreciate your help. To find Hyacinth, leave the village to the north and go pretty much straight to the east. ...", - "His little alchemy lab is on top of a mountain. I'll mark the ramp leading up on your map, here. Don't stray from the path! There are dangerous monsters roaming the island." - } + "His little alchemy lab is on top of a mountain. I'll mark the ramp leading up on your map, here. Don't stray from the path! There are dangerous monsters roaming the island.", + }, }, nil, function(player) @@ -121,55 +120,52 @@ mission4:addChildKeyword({ "yes" }, StdModule.say, ) -- Mission 4: Decline -mission4:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Oh. Well, if you change your mind, let me know.", - reset = true - }) +mission4:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Oh. Well, if you change your mind, let me know.", + reset = true, +}) -- Mission 4: Confirm Delivered (Without) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "No, you haven't. If you're looking for the way to Hyacinth, just leave the village to the north and then go east. I've marked it on your map!" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 2 end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "No, you haven't. If you're looking for the way to Hyacinth, just leave the village to the north and then go east. I've marked it on your map!", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 2 +end) -- Mission 4: Confirm Not Delivered (Without) -local mission4LostHerbs = keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Is something... wrong? You didn't lose the herbs, did you?" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 2 end -) +local mission4LostHerbs = keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Is something... wrong? You didn't lose the herbs, did you?", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 2 +end) -- Mission 4: Confirm Lost Herbs -local mission4AcceptAnotherHerbs = mission4LostHerbs:addChildKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, at least you're honest. I can give you another sack, but only if you promise not to lose them this time. Okay?" - }) +local mission4AcceptAnotherHerbs = mission4LostHerbs:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, at least you're honest. I can give you another sack, but only if you promise not to lose them this time. Okay?", +}) -- Mission 4: Decline Lost Herbs -mission4LostHerbs:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Phew. That's a relief. Well, don't forget to deliver them to Hyacinth! They have to be fresh to create potions.", - reset = true - }) +mission4LostHerbs:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Phew. That's a relief. Well, don't forget to deliver them to Hyacinth! They have to be fresh to create potions.", + reset = true, +}) -- Mission 4: Accept Lost Herbs -mission4AcceptAnotherHerbs:addChildKeyword({ "yes" }, StdModule.say, +mission4AcceptAnotherHerbs:addChildKeyword( + { "yes" }, + StdModule.say, { npcHandler = npcHandler, text = { "Here you go, honey. I really appreciate your help. To find Hyacinth, leave the village to the north and go pretty much straight to the east. ...", - "His little alchemy lab is on top of a mountain. I'll mark the ramp leading up on your map, here. Don't stray from the path! There are dangerous monsters roaming the island." + "His little alchemy lab is on top of a mountain. I'll mark the ramp leading up on your map, here. Don't stray from the path! There are dangerous monsters roaming the island.", }, - reset = true + reset = true, }, nil, function(player) @@ -178,118 +174,115 @@ mission4AcceptAnotherHerbs:addChildKeyword({ "yes" }, StdModule.say, ) -- Mission 4: Reject Lost Herbs -mission4AcceptAnotherHerbs:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Oh. Well, if you change your mind, let me know.", - reset = true - }) +mission4AcceptAnotherHerbs:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Oh. Well, if you change your mind, let me know.", + reset = true, +}) -- Basic Keywords -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { npcHandler = npcHandler, text = 'Just ask me for a {trade} to see what I buy from you. If you want to sell {blueberries}, ask me about them separately.' }) -keywordHandler:addKeyword({ 'stuff' }, StdModule.say, { npcHandler = npcHandler, text = 'Just ask me for a {trade} to see my offers. If you want to sell {blueberries}, ask me about them separately.' }) -keywordHandler:addAliasKeyword({ 'wares' }) -keywordHandler:addAliasKeyword({ 'offer' }) -keywordHandler:addAliasKeyword({ 'buy' }) - -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'How can I help you? If you like to buy something, just ask me for a {trade}. We can also chat about {Tibia}. Or, I could give you general {hints} about the game.' }) -keywordHandler:addAliasKeyword({ 'information' }) - -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'equip' }, StdModule.say, { npcHandler = npcHandler, text = 'You definitely need a good {weapon}, an {armor} and a {shield}. Also, you should never leave for a {dungeon} without {rope}, {shovel} and {torch}.' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m in tune with myself and with nature. Thank you.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a {druid}, bound to the spirit of nature. My {potions} will help you if you feel bad. I also buy {blueberries} and {cookies}. Just ask me for a {trade}.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Lily, like the flower. It also stands for purity, just like my {potions} are!' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s about |TIME|. But does it really matter? Don\'t rush yourself and enjoy all these little moments.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s wise to store most of your gold at the bank below the academy. It\'s safer that way.' }) -keywordHandler:addKeyword({ 'citizen' }, StdModule.say, { npcHandler = npcHandler, text = 'If you tell me the name of a citizen, I\'ll tell you what I know about him or her.' }) -keywordHandler:addKeyword({ 'antidote' }, StdModule.say, { npcHandler = npcHandler, text = 'Antidote potions will cure {poisoning}. They also have a lovely {blueberry} taste. You only need them when you get poisoned deep down in a dungeon, else just go to the {temple} for a free heal!' }) -keywordHandler:addKeyword({ 'poisoning' }, StdModule.say, { npcHandler = npcHandler, text = 'Some creatures like snakes or poison spiders can poison you. That will diminish your health over a certain amount of time, so be careful when dealing with those creatures!' }) -keywordHandler:addKeyword({ 'druid' }, StdModule.say, { npcHandler = npcHandler, text = 'Being a druid is a wonderful profession. You control the forces of nature and can heal others.' }) -keywordHandler:addKeyword({ 'shop' }, StdModule.say, { npcHandler = npcHandler, text = 'There are many shops around here which are owned by local {citizens}.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is just to the right. You can get a healing for free there if you are badly injured or poisoned.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'Tibia is our beautiful world, created by the gods. Being a {druid}, I\'m a worshipper of {Crunor}.' }) -keywordHandler:addKeyword({ 'crunor' }, StdModule.say, { npcHandler = npcHandler, text = 'Crunor is the great lord of trees and the creator of all plants. Despite what some people believe, he didn\'t create the {monsters}, though.' }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, I\'m sorry honey, I don\'t sell food. If you are hungry, visit one of the farmers {Billy} and {Willie}. I buy {blueberries} and {cookies}, though.' }) -keywordHandler:addKeyword({ 'premium' }, StdModule.say, { npcHandler = npcHandler, text = { 'If you purchase premium time for your account, this opens up a lot of possibilities. ...', 'For example, you will be able to travel off the mainland, ride a mount and benefit from offline training as well as having more outfits and magic spells to choose from.' } }) -keywordHandler:addKeyword({ 'potion' }, StdModule.say, { npcHandler = npcHandler, text = 'I can offer you homemade {antidote} potions and small {health} potions. Ask me for a {trade} if you like to see them.' }) -keywordHandler:addKeyword({ 'health' }, StdModule.say, { npcHandler = npcHandler, text = 'Health potions will heal you for about 75 hit points. It can\'t hurt to carry one with you, just in case.' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'I think Tibia would be a better place without authorities who lead others to war. Can\'t we just all live in peace?' }) -keywordHandler:addKeyword({ 'academy' }, StdModule.say, { npcHandler = npcHandler, text = 'The academy is the big stone building in the town centre. If you\'re ready to leave Rookgaard, go there to see the {oracle}.' }) -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, in this village and its surroundings you can {train} your skills until you are level 8. Then you should see the {oracle} and head to the {main} continent.' }) -keywordHandler:addKeyword({ 'train' }, StdModule.say, { npcHandler = npcHandler, text = 'To train your skills, simply help us {fighting} monsters.' }) -keywordHandler:addKeyword({ 'fight' }, StdModule.say, { npcHandler = npcHandler, text = ' If you want to fight monsters, you should get better {equipment} from the {merchants}. You should also talk to one of the bridge {guards} to find suitable monsters for you.' }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { npcHandler = npcHandler, text = 'To view the offers of a merchant, simply talk to him or her and ask for a {trade}. They will gladly show you their offers and also the things they buy from you.' }) -keywordHandler:addKeyword({ 'main' }, StdModule.say, { npcHandler = npcHandler, text = 'The main continent is huge! The gods of Tibia created everything from great seas, deep jungles and large deserts.' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'Sadly, our little village of {Rookgaard} is invaded by monsters. From the {dungeons} they creep to the surface and attack the city. We always need adventurers helping us to {fight} them.' }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = 'If you are looking for weapons, you should visit {Obi}\'s shop east of here. Or, if you have a {premium} account, go to {Lee\'Delle} for better offers.' }) -keywordHandler:addKeyword({ 'armor' }, StdModule.say, { npcHandler = npcHandler, text = 'Armors? Best buy them at {Dixi}\'s little counter, just upstairs from {Obi}\'s shop. Or, if you have a {premium} account, go to {Lee\'Delle} for better offers.' }) -keywordHandler:addKeyword({ 'shield' }, StdModule.say, { npcHandler = npcHandler, text = 'Shields? Best buy them at {Dixi}\'s little counter, just upstairs from {Obi}\'s shop. Or, if you have a {premium} account, go to {Lee\'Delle} for better offers.' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'If you need information about the dungeons here, you should talk to one of the bridge {guards}. They will show you where to go.' }) -keywordHandler:addKeyword({ 'guard' }, StdModule.say, { npcHandler = npcHandler, text = 'Our bridge guards are {Dallheim} and {Zerbrus}. You can find Dallheim if you follow the path to the right, then turn north at the {temple}.' }) -keywordHandler:addKeyword({ 'cookie' }, StdModule.say, { npcHandler = npcHandler, text = 'Yum, cookies! If you have some for me, just ask me for a trade.' }) - -keywordHandler:addKeyword({ 'money' }, StdModule.say, { npcHandler = npcHandler, text = 'Earn gold by fighting {monsters} and picking up what they carry. Sell it to {merchants} to make profit!' }) -keywordHandler:addAliasKeyword({ 'gold' }) - -keywordHandler:addKeyword({ 'deposit' }, StdModule.say, { npcHandler = npcHandler, text = 'I will pay you 5 gold for every empty vial and potion flask. Just ask me for a {trade}.' }) -keywordHandler:addAliasKeyword({ 'flask' }) -keywordHandler:addAliasKeyword({ 'vial' }) - -keywordHandler:addKeyword({ 'shovel' }, StdModule.say, { npcHandler = npcHandler, text = 'You best buy such equipment at {Al Dee}\'s store in the North of the village. Or, if you have a {premium} account, go to {Lee\'Delle} for better offers.' }) -keywordHandler:addAliasKeyword({ 'rope' }) -keywordHandler:addAliasKeyword({ 'torch' }) - -local cookiKeyword = keywordHandler:addKeyword({ 'cooki' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh yes, I love cookies! Will you accept 1 gold for it?' }) -cookiKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine! Here\'s your gold.', reset = true }, - function(player) return player:getItemCount(3598) > 0 end, - function(player) - player:removeItem(3598, 1) - player:addMoney(1) - end -) -cookiKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you do not have one.', reset = true }) -cookiKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, what a pity.', reset = true }) - -local blueberryKeyword = keywordHandler:addKeyword({ 'blueberry' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, do you have blueberries for sale? I need them for my {antidote potion}. I give you 1 gold for 5 of them, yes?' }) -blueberryKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine! Here\'s your gold.', reset = true }, - function(player) return player:getItemCount(3588) >= 5 end, - function(player) - player:removeItem(3588, 5) - player:addMoney(1) - end -) -blueberryKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, I\'m sorry. I\'m not buying less than 5 blueberries.', reset = true }) -blueberryKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'As you wish.', reset = true }) -keywordHandler:addAliasKeyword({ 'blueberries' }) -keywordHandler:addAliasKeyword({ 'berry' }) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, text = "Just ask me for a {trade} to see what I buy from you. If you want to sell {blueberries}, ask me about them separately." }) +keywordHandler:addKeyword({ "stuff" }, StdModule.say, { npcHandler = npcHandler, text = "Just ask me for a {trade} to see my offers. If you want to sell {blueberries}, ask me about them separately." }) +keywordHandler:addAliasKeyword({ "wares" }) +keywordHandler:addAliasKeyword({ "offer" }) +keywordHandler:addAliasKeyword({ "buy" }) + +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "How can I help you? If you like to buy something, just ask me for a {trade}. We can also chat about {Tibia}. Or, I could give you general {hints} about the game." }) +keywordHandler:addAliasKeyword({ "information" }) + +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "equip" }, StdModule.say, { npcHandler = npcHandler, text = "You definitely need a good {weapon}, an {armor} and a {shield}. Also, you should never leave for a {dungeon} without {rope}, {shovel} and {torch}." }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "I'm in tune with myself and with nature. Thank you." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a {druid}, bound to the spirit of nature. My {potions} will help you if you feel bad. I also buy {blueberries} and {cookies}. Just ask me for a {trade}." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Lily, like the flower. It also stands for purity, just like my {potions} are!" }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It's about |TIME|. But does it really matter? Don't rush yourself and enjoy all these little moments." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "It's wise to store most of your gold at the bank below the academy. It's safer that way." }) +keywordHandler:addKeyword({ "citizen" }, StdModule.say, { npcHandler = npcHandler, text = "If you tell me the name of a citizen, I'll tell you what I know about him or her." }) +keywordHandler:addKeyword({ "antidote" }, StdModule.say, { npcHandler = npcHandler, text = "Antidote potions will cure {poisoning}. They also have a lovely {blueberry} taste. You only need them when you get poisoned deep down in a dungeon, else just go to the {temple} for a free heal!" }) +keywordHandler:addKeyword({ "poisoning" }, StdModule.say, { npcHandler = npcHandler, text = "Some creatures like snakes or poison spiders can poison you. That will diminish your health over a certain amount of time, so be careful when dealing with those creatures!" }) +keywordHandler:addKeyword({ "druid" }, StdModule.say, { npcHandler = npcHandler, text = "Being a druid is a wonderful profession. You control the forces of nature and can heal others." }) +keywordHandler:addKeyword({ "shop" }, StdModule.say, { npcHandler = npcHandler, text = "There are many shops around here which are owned by local {citizens}." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is just to the right. You can get a healing for free there if you are badly injured or poisoned." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "Tibia is our beautiful world, created by the gods. Being a {druid}, I'm a worshipper of {Crunor}." }) +keywordHandler:addKeyword({ "crunor" }, StdModule.say, { npcHandler = npcHandler, text = "Crunor is the great lord of trees and the creator of all plants. Despite what some people believe, he didn't create the {monsters}, though." }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, I'm sorry honey, I don't sell food. If you are hungry, visit one of the farmers {Billy} and {Willie}. I buy {blueberries} and {cookies}, though." }) +keywordHandler:addKeyword({ "premium" }, StdModule.say, { npcHandler = npcHandler, text = { "If you purchase premium time for your account, this opens up a lot of possibilities. ...", "For example, you will be able to travel off the mainland, ride a mount and benefit from offline training as well as having more outfits and magic spells to choose from." } }) +keywordHandler:addKeyword({ "potion" }, StdModule.say, { npcHandler = npcHandler, text = "I can offer you homemade {antidote} potions and small {health} potions. Ask me for a {trade} if you like to see them." }) +keywordHandler:addKeyword({ "health" }, StdModule.say, { npcHandler = npcHandler, text = "Health potions will heal you for about 75 hit points. It can't hurt to carry one with you, just in case." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "I think Tibia would be a better place without authorities who lead others to war. Can't we just all live in peace?" }) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { npcHandler = npcHandler, text = "The academy is the big stone building in the town centre. If you're ready to leave Rookgaard, go there to see the {oracle}." }) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { npcHandler = npcHandler, text = "Well, in this village and its surroundings you can {train} your skills until you are level 8. Then you should see the {oracle} and head to the {main} continent." }) +keywordHandler:addKeyword({ "train" }, StdModule.say, { npcHandler = npcHandler, text = "To train your skills, simply help us {fighting} monsters." }) +keywordHandler:addKeyword({ "fight" }, StdModule.say, { npcHandler = npcHandler, text = " If you want to fight monsters, you should get better {equipment} from the {merchants}. You should also talk to one of the bridge {guards} to find suitable monsters for you." }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, text = "To view the offers of a merchant, simply talk to him or her and ask for a {trade}. They will gladly show you their offers and also the things they buy from you." }) +keywordHandler:addKeyword({ "main" }, StdModule.say, { npcHandler = npcHandler, text = "The main continent is huge! The gods of Tibia created everything from great seas, deep jungles and large deserts." }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Sadly, our little village of {Rookgaard} is invaded by monsters. From the {dungeons} they creep to the surface and attack the city. We always need adventurers helping us to {fight} them." }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "If you are looking for weapons, you should visit {Obi}'s shop east of here. Or, if you have a {premium} account, go to {Lee'Delle} for better offers." }) +keywordHandler:addKeyword({ "armor" }, StdModule.say, { npcHandler = npcHandler, text = "Armors? Best buy them at {Dixi}'s little counter, just upstairs from {Obi}'s shop. Or, if you have a {premium} account, go to {Lee'Delle} for better offers." }) +keywordHandler:addKeyword({ "shield" }, StdModule.say, { npcHandler = npcHandler, text = "Shields? Best buy them at {Dixi}'s little counter, just upstairs from {Obi}'s shop. Or, if you have a {premium} account, go to {Lee'Delle} for better offers." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "If you need information about the dungeons here, you should talk to one of the bridge {guards}. They will show you where to go." }) +keywordHandler:addKeyword({ "guard" }, StdModule.say, { npcHandler = npcHandler, text = "Our bridge guards are {Dallheim} and {Zerbrus}. You can find Dallheim if you follow the path to the right, then turn north at the {temple}." }) +keywordHandler:addKeyword({ "cookie" }, StdModule.say, { npcHandler = npcHandler, text = "Yum, cookies! If you have some for me, just ask me for a trade." }) + +keywordHandler:addKeyword({ "money" }, StdModule.say, { npcHandler = npcHandler, text = "Earn gold by fighting {monsters} and picking up what they carry. Sell it to {merchants} to make profit!" }) +keywordHandler:addAliasKeyword({ "gold" }) + +keywordHandler:addKeyword({ "deposit" }, StdModule.say, { npcHandler = npcHandler, text = "I will pay you 5 gold for every empty vial and potion flask. Just ask me for a {trade}." }) +keywordHandler:addAliasKeyword({ "flask" }) +keywordHandler:addAliasKeyword({ "vial" }) + +keywordHandler:addKeyword({ "shovel" }, StdModule.say, { npcHandler = npcHandler, text = "You best buy such equipment at {Al Dee}'s store in the North of the village. Or, if you have a {premium} account, go to {Lee'Delle} for better offers." }) +keywordHandler:addAliasKeyword({ "rope" }) +keywordHandler:addAliasKeyword({ "torch" }) + +local cookiKeyword = keywordHandler:addKeyword({ "cooki" }, StdModule.say, { npcHandler = npcHandler, text = "Oh yes, I love cookies! Will you accept 1 gold for it?" }) +cookiKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Fine! Here's your gold.", reset = true }, function(player) + return player:getItemCount(3598) > 0 +end, function(player) + player:removeItem(3598, 1) + player:addMoney(1) +end) +cookiKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you do not have one.", reset = true }) +cookiKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, what a pity.", reset = true }) + +local blueberryKeyword = keywordHandler:addKeyword({ "blueberry" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, do you have blueberries for sale? I need them for my {antidote potion}. I give you 1 gold for 5 of them, yes?" }) +blueberryKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Fine! Here's your gold.", reset = true }, function(player) + return player:getItemCount(3588) >= 5 +end, function(player) + player:removeItem(3588, 5) + player:addMoney(1) +end) +blueberryKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, I'm sorry. I'm not buying less than 5 blueberries.", reset = true }) +blueberryKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "As you wish.", reset = true }) +keywordHandler:addAliasKeyword({ "blueberries" }) +keywordHandler:addAliasKeyword({ "berry" }) -- Names -keywordHandler:addKeyword({ 'obi' }, StdModule.say, { npcHandler = npcHandler, text = 'He sells {weapons}. His shop is east of here.' }) -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t know what to think about all this new bar. {Rookgaard} needs a little peace!' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'He used to help me gather blueberries. Then, one day, he suddenly stopped comming here. They say he went a little out of his mind.' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'We tried everything to fight that cockroach plague in his cellar, but natural anti-bug potions simply won\'t help. I guess those roaches need to be fought with stronger weapons.' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'That poor old woman. I wish I could help her.' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'Best tool shop in town, if you ask me.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'I heard that she\'s recovering below the academy. She has been on an exciting expedition. I haven\'t talked to her yet, though.' }) -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = 'Visiting Cipfried in the {temple} is a good idea if you are injured or poisoned. He can heal you.' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'She\'s {Obi}\'s granddaughter and deals with {armors} and {shields}, just upstairs from Obi\'s shop.' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'Hyacinth also sells small health potions. He lives outside the village, in a hidden place.' }) -keywordHandler:addKeyword({ 'lee\'delle' }, StdModule.say, { npcHandler = npcHandler, text = 'If you are a {premium} adventurer, you should check out {Lee\'Delle\'s} shop. She lives in the western part of town, just across the bridge.' }) -keywordHandler:addKeyword({ 'lily' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes?' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8 to reach more areas of {Tibia}.' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'He takes care of the {bank}, keeping our money safe.' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'Seymour is a teacher running the {academy}. He has many important {information} about Tibia.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s the local tanner. You could try selling fresh corpses or leather to him.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'He is a great warrior. He can also tell you much about {monsters} and {dungeons} on this island.' }) -keywordHandler:addAliasKeyword({ 'zerbrus' }) - -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s a farmer and sells {food}. Food will help you regain health when you are injured. Many {monsters} also carry food with them.' }) -keywordHandler:addAliasKeyword({ 'willie' }) - -npcHandler:setMessage(MESSAGE_WALKAWAY, 'May Crunor bless you!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Take care, |PLAYERNAME|.') -npcHandler:setMessage(MESSAGE_SENDTRADE, 'Of course, just browse through my offers. If you buy a potion, don\'t forget that there\'s a {deposit} of 5 gold on the empty flask.') +keywordHandler:addKeyword({ "obi" }, StdModule.say, { npcHandler = npcHandler, text = "He sells {weapons}. His shop is east of here." }) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "I don't know what to think about all this new bar. {Rookgaard} needs a little peace!" }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "He used to help me gather blueberries. Then, one day, he suddenly stopped comming here. They say he went a little out of his mind." }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "We tried everything to fight that cockroach plague in his cellar, but natural anti-bug potions simply won't help. I guess those roaches need to be fought with stronger weapons." }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "That poor old woman. I wish I could help her." }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "Best tool shop in town, if you ask me." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "I heard that she's recovering below the academy. She has been on an exciting expedition. I haven't talked to her yet, though." }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = "Visiting Cipfried in the {temple} is a good idea if you are injured or poisoned. He can heal you." }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "She's {Obi}'s granddaughter and deals with {armors} and {shields}, just upstairs from Obi's shop." }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "Hyacinth also sells small health potions. He lives outside the village, in a hidden place." }) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { npcHandler = npcHandler, text = "If you are a {premium} adventurer, you should check out {Lee'Delle's} shop. She lives in the western part of town, just across the bridge." }) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { npcHandler = npcHandler, text = "Yes?" }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8 to reach more areas of {Tibia}." }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "He takes care of the {bank}, keeping our money safe." }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "Seymour is a teacher running the {academy}. He has many important {information} about Tibia." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "He's the local tanner. You could try selling fresh corpses or leather to him." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "He is a great warrior. He can also tell you much about {monsters} and {dungeons} on this island." }) +keywordHandler:addAliasKeyword({ "zerbrus" }) + +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "He's a farmer and sells {food}. Food will help you regain health when you are injured. Many {monsters} also carry food with them." }) +keywordHandler:addAliasKeyword({ "willie" }) + +npcHandler:setMessage(MESSAGE_WALKAWAY, "May Crunor bless you!") +npcHandler:setMessage(MESSAGE_FAREWELL, "Take care, |PLAYERNAME|.") +npcHandler:setMessage(MESSAGE_SENDTRADE, "Of course, just browse through my offers. If you buy a potion, don't forget that there's a {deposit} of 5 gold on the empty flask.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -302,7 +295,7 @@ npcConfig.shop = { { itemName = "empty potion flask", clientId = 284, sell = 5 }, { itemName = "empty potion flask", clientId = 285, sell = 5 }, { itemName = "small health potion", clientId = 7876, buy = 20 }, - { itemName = "vial", clientId = 2874, sell = 5 } + { itemName = "vial", clientId = 2874, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -313,7 +306,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/lisander.lua b/data-otservbr-global/npc/lisander.lua index 4827fb1af23..a1c59f966a1 100644 --- a/data-otservbr-global/npc/lisander.lua +++ b/data-otservbr-global/npc/lisander.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 100, lookLegs = 117, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -70,7 +70,9 @@ local function creatureSayCallback(npc, creature, type, message) end end --Basic -keywordHandler:addKeyword({ "alori mort" }, StdModule.say, { npcHandler = npcHandler, text = "Hold your tongue." }, function(player) return player:getStorageValue(BloodBrothers.Mission03) == 1 end) +keywordHandler:addKeyword({ "alori mort" }, StdModule.say, { npcHandler = npcHandler, text = "Hold your tongue." }, function(player) + return player:getStorageValue(BloodBrothers.Mission03) == 1 +end) npcHandler:setMessage(MESSAGE_GREET, "I'd rather be left in {peace}. Keep it short.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/livielle.lua b/data-otservbr-global/npc/livielle.lua index f01127ffa3a..701647971f4 100644 --- a/data-otservbr-global/npc/livielle.lua +++ b/data-otservbr-global/npc/livielle.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 132, lookFeet = 132, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -69,7 +69,7 @@ npcConfig.shop = { { itemName = "pumpkin", clientId = 3594, buy = 10 }, { itemName = "sample of venorean spice", clientId = 8759, buy = 200 }, { itemName = "strawberry", clientId = 3591, buy = 2 }, - { itemName = "white mushroom", clientId = 3723, buy = 10 } + { itemName = "white mushroom", clientId = 3723, buy = 10 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -80,7 +80,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/lizard_tunnel_guard.lua b/data-otservbr-global/npc/lizard_tunnel_guard.lua index db807b4f69c..4fa13285212 100644 --- a/data-otservbr-global/npc/lizard_tunnel_guard.lua +++ b/data-otservbr-global/npc/lizard_tunnel_guard.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 338 + lookType = 338, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/llathriel.lua b/data-otservbr-global/npc/llathriel.lua index d4f4e1cd95f..62bb91099a7 100644 --- a/data-otservbr-global/npc/llathriel.lua +++ b/data-otservbr-global/npc/llathriel.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 63 + lookType = 63, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/lokur.lua b/data-otservbr-global/npc/lokur.lua index 37ea1d8aaa7..6b9bbc271e0 100644 --- a/data-otservbr-global/npc/lokur.lua +++ b/data-otservbr-global/npc/lokur.lua @@ -15,17 +15,17 @@ npcConfig.outfit = { lookHead = 57, lookBody = 79, lookLegs = 79, - lookFeet = 95 + lookFeet = 95, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Don\'t forget to deposit your money here in the Tibian Bank before you head out for adventure.', yell = false } + { text = "Don't forget to deposit your money here in the Tibian Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/lora.lua b/data-otservbr-global/npc/lora.lua index 462780aaa2a..7a3af89f161 100644 --- a/data-otservbr-global/npc/lora.lua +++ b/data-otservbr-global/npc/lora.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 70, lookLegs = 0, lookFeet = 19, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/lorbas.lua b/data-otservbr-global/npc/lorbas.lua index 0829a5eccd0..55f8953fd26 100644 --- a/data-otservbr-global/npc/lorbas.lua +++ b/data-otservbr-global/npc/lorbas.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,34 +58,32 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'cookie') then - if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 - and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Lorbas) ~= 1 then - npcHandler:say('You want me to eat this cookie?', npc, creature) + if MsgContains(message, "cookie") then + if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Lorbas) ~= 1 then + npcHandler:say("You want me to eat this cookie?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then if not player:removeItem(130, 1) then - npcHandler:say('You have no cookie that I\'d like.', npc, creature) + npcHandler:say("You have no cookie that I'd like.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:setStorageValue(Storage.WhatAFoolish.CookieDelivery.Lorbas, 1) if player:getCookiesDelivered() == 10 then - player:addAchievement('Allow Cookies?') + player:addAchievement("Allow Cookies?") end npc:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) - npcHandler:say('Well, you don\'t mind if I play around with this antidote rune a bit ... UHHH, YOU LOU ... uhm that was so ... funny, haha ... ha. Mhm, you better leave now.', npc, creature) + npcHandler:say("Well, you don't mind if I play around with this antidote rune a bit ... UHHH, YOU LOU ... uhm that was so ... funny, haha ... ha. Mhm, you better leave now.", npc, creature) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('I see.', npc, creature) + npcHandler:say("I see.", npc, creature) npcHandler:setTopic(playerId, 0) end end diff --git a/data-otservbr-global/npc/lorek.lua b/data-otservbr-global/npc/lorek.lua index 478fd7c92fc..c9f79438055 100644 --- a/data-otservbr-global/npc/lorek.lua +++ b/data-otservbr-global/npc/lorek.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 10, lookLegs = 38, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,22 +52,24 @@ end -- Travel local function addTravelKeyword(keyword, text, cost, destination, condition) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. (text or keyword:titleCase()) .. ' for |TRAVELCOST|?', cost = cost }, condition and function(player) return player:getPawAndFurRank() >= 3 end or nil) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Maybe another time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. (text or keyword:titleCase()) .. " for |TRAVELCOST|?", cost = cost }, condition and function(player) + return player:getPawAndFurRank() >= 3 + end or nil) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Maybe another time.", reset = true }) end -addTravelKeyword('west', 'the west end of Port Hope', 7, Position(32558, 32780, 7)) -addTravelKeyword('centre', 'the centre of Port Hope', 7, Position(32628, 32771, 7)) -addTravelKeyword('darama', nil, 30, Position(32987, 32729, 7)) -addTravelKeyword('center', 'the centre of Port Hope', 0, Position(32628, 32771, 7)) -addTravelKeyword('chor', nil, 30, Position(32968, 32799, 7), true) -addTravelKeyword('banuta', nil, 30, Position(32826, 32631, 7), true) -addTravelKeyword('mountain', nil, 30, Position(32987, 32729, 7), true) -addTravelKeyword('mountain pass', nil, 30, Position(32987, 32729, 7), true) +addTravelKeyword("west", "the west end of Port Hope", 7, Position(32558, 32780, 7)) +addTravelKeyword("centre", "the centre of Port Hope", 7, Position(32628, 32771, 7)) +addTravelKeyword("darama", nil, 30, Position(32987, 32729, 7)) +addTravelKeyword("center", "the centre of Port Hope", 0, Position(32628, 32771, 7)) +addTravelKeyword("chor", nil, 30, Position(32968, 32799, 7), true) +addTravelKeyword("banuta", nil, 30, Position(32826, 32631, 7), true) +addTravelKeyword("mountain", nil, 30, Position(32987, 32729, 7), true) +addTravelKeyword("mountain pass", nil, 30, Position(32987, 32729, 7), true) -- Basic -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { npcHandler = npcHandler, text = "I heard he is some scary magician or so." }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I can travel you to west, centre, darama, chor or banuta.' }) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, text = "I heard he is some scary magician or so." }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can travel you to west, centre, darama, chor or banuta." }) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/loria.lua b/data-otservbr-global/npc/loria.lua index c2deceac595..7d3bb68230b 100644 --- a/data-otservbr-global/npc/loria.lua +++ b/data-otservbr-global/npc/loria.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 118, lookLegs = 81, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/lorietta.lua b/data-otservbr-global/npc/lorietta.lua index f448d912831..aee99cca788 100644 --- a/data-otservbr-global/npc/lorietta.lua +++ b/data-otservbr-global/npc/lorietta.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 79, lookLegs = 80, lookFeet = 77, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,86 +51,103 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Lorietta) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Lorietta) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Lorietta, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/lothar.lua b/data-otservbr-global/npc/lothar.lua index d234ca37d30..5ecdc61d75b 100644 --- a/data-otservbr-global/npc/lothar.lua +++ b/data-otservbr-global/npc/lothar.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 132, lookFeet = 132, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'I enjoy the peace and solitude out here. You\'re welcome to be my guest as long as you behave in a quiet and tolerable manner.' } + { text = "I enjoy the peace and solitude out here. You're welcome to be my guest as long as you behave in a quiet and tolerable manner." }, } local keywordHandler = KeywordHandler:new() @@ -56,41 +56,41 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'here' }, StdModule.say, { npcHandler = npcHandler, text = "Some call me {animal} whisperer. Others say I'm just crazy. I refer to myself as a simple {stable} keeper." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "Some call me {animal} whisperer. Others say I'm just crazy. I refer to myself as a simple {stable} keeper." }) -keywordHandler:addKeyword({ 'animal' }, StdModule.say, { npcHandler = npcHandler, text = "I love all animals, whether small or big. I also believe each one, even the wildest and most ferocious being, can be talked to, understood and {tamed}." }) -keywordHandler:addKeyword({ 'stable' }, StdModule.say, { npcHandler = npcHandler, text = "It's my dream to shelter many different tamed animals. Maybe one day that dream will come true." }) -keywordHandler:addKeyword({ 'tamed' }, StdModule.say, { npcHandler = npcHandler, text = "Well, usually you can tame animals with the help of a few simple items. If you've found such an {item}, show it to me and I might be able to help you with instructions on the taming process." }) -keywordHandler:addKeyword({ 'item' }, StdModule.say, { npcHandler = npcHandler, text = "Well? Which item have you found and require advice for?" }) -keywordHandler:addKeyword({ 'bag of apple slices' }, StdModule.say, { npcHandler = npcHandler, text = "That's among the favourite foods of donkeys, as far as I know. It's a shame I haven't really seen any donkey around. It could require a magic trick to actually get to meet one." }) -keywordHandler:addKeyword({ 'bamboo leaves' }, StdModule.say, { npcHandler = npcHandler, text = "Pandas love to eat bamboo leaves, but the Tiquandan pandas are actually not that skilled at climbing, so they have a hard time getting some for themselves. You might be able to tame one with them." }) -keywordHandler:addKeyword({ 'carrot on a stick' }, StdModule.say, { npcHandler = npcHandler, text = "I heard that terror birds really love carrots. I'd try waving it in front of one of those." }) -keywordHandler:addKeyword({ 'decorative ribbon' }, StdModule.say, { npcHandler = npcHandler, text = "Ah, what a pretty ribbon. Reminds me of the elusive dragonlings - they're quite elegant and vain. They would probably welcome a decorative element. They're sometimes spotted during volcano eruptions." }) -keywordHandler:addKeyword({ 'diapason' }, StdModule.say, { npcHandler = npcHandler, text = "What a neat little elvish gadget. Did you know a diapason works with vibrations to create sound? I actually think this could work on a creature made of crystals." }) -keywordHandler:addKeyword({ 'fist on a stick' }, StdModule.say, { npcHandler = npcHandler, text = "I'm against violence towards any creature. I've heard those barbarians in the desert use it for disobedient dromedaries." }) -keywordHandler:addKeyword({ 'four-leaf clover' }, StdModule.say, { npcHandler = npcHandler, text = "Oh, what a nice little plant! Did you know it's supposed to bring luck? So is the lady bug. Both of them might actually go well together." }) -keywordHandler:addKeyword({ 'foxtail' }, StdModule.say, { npcHandler = npcHandler, text = "I've heard that there once was a gang of manta ray riders who liked to adorn their mantas with a foxtail. Don't ask me why, maybe they like how it floats in the wind when running really fast?" }) -keywordHandler:addKeyword({ 'golem wrench' }, StdModule.say, { npcHandler = npcHandler, text = "What a strange device! This looks like a tool for someone who creates golems and modifies living creatures. You could probably tame a modded creature with it, but I doubt they live in the wild." }) -keywordHandler:addKeyword({ 'giant shrimp' }, StdModule.say, { npcHandler = npcHandler, text = "Oh, that's one of the favourite foods of a crustacea gigantica. I think you can just distract it with the food and quickly jump on its back." }) -keywordHandler:addKeyword({ 'glow wine' }, StdModule.say, { npcHandler = npcHandler, text = "Have you ever encountered a magma crawler? They only eat and drink really hot things. You could probably try and make one drink some glow wine - and quickly mount it as long as it's drunk." }) -keywordHandler:addKeyword({ 'golden can of oil' }, StdModule.say, { npcHandler = npcHandler, text = "Hm. What an interesting find. This is definitely not used for any sort of animal. Maybe a vehicle? I can imagine it could be used for a bike of some sorts." }) -keywordHandler:addKeyword({ 'harness' }, StdModule.say, { npcHandler = npcHandler, text = "That looks like it might fit a draptor. If you can ever get close enough to one to catch it, I'd simply try putting it on while whispering calming words." }) -keywordHandler:addKeyword({ 'hunting horn' }, StdModule.say, { npcHandler = npcHandler, text = "The sound of a hunting horn is often intimidating to forest creatures, but I heard that wild boars actually like it." }) -keywordHandler:addKeyword({ 'iron loadstone' }, StdModule.say, { npcHandler = npcHandler, text = "Ironblights consist mainly of stone and iron. With a strong magnet like that you can basically force it to walk in the direction you're wanting it to." }) -keywordHandler:addKeyword({ 'leather whip' }, StdModule.say, { npcHandler = npcHandler, text = "Try catching a midnight panther using that one. Don't hit the panther, mind you. Just let the whip crack in the air - I think that will work." }) -keywordHandler:addKeyword({ 'leech' }, StdModule.say, { npcHandler = npcHandler, text = "As far as I know, leeches can be found in terrestrial, swampy areas. Leeches often help large animals such as water buffaloes to get rid of parasites." }) -keywordHandler:addKeyword({ 'maxilla maximus' }, StdModule.say, { npcHandler = npcHandler, text = "You should show that giant jaw to a creature looking like the one you got it from. It will respect you when it sees those scary teeth." }) -keywordHandler:addKeyword({ 'music box' }, StdModule.say, { npcHandler = npcHandler, text = "Where did you get that? What a rare treat. This must have been crafted by someone who truly loves both music and animals. I can't tell you anything else about it." }) -keywordHandler:addKeyword({ 'nail case' }, StdModule.say, { npcHandler = npcHandler, text = "Oh, a nail case..., I hate paring nails. But I heard gravediggers become trusting when they get the right treatment." }) -keywordHandler:addKeyword({ 'nightmare horn' }, StdModule.say, { npcHandler = npcHandler, text = "How impressive, a nightmare horn. Have you ever encountered a shock head? Try hypnotizing them with your horn." }) -keywordHandler:addKeyword({ 'reins' }, StdModule.say, { npcHandler = npcHandler, text = "You could probably ride a black sheep with these. Talk to it gently and carefully put on the reins." }) -keywordHandler:addKeyword({ 'scorpion sceptre' }, StdModule.say, { npcHandler = npcHandler, text = "Wow, that's a rarity. Have you ever met one of those large sandstone scorpions? They're quite impressive. You need such a sceptre to show to one that you're its new master." }) -keywordHandler:addKeyword({ 'slingshot' }, StdModule.say, { npcHandler = npcHandler, text = "That might be the only way to tame a bear. It has a sensitive spot right between the ears which will calm it down, but you're not strong enough for simple acupressure. Using the slingshot is likely to help you with that." }) -keywordHandler:addKeyword({ 'slug drug' }, StdModule.say, { npcHandler = npcHandler, text = "As the name indicates - this can be used to make a slug much faster than it normally is! Once you've tamed it, it will race you wherever you want to go." }) -keywordHandler:addKeyword({ 'sugar oat' }, StdModule.say, { npcHandler = npcHandler, text = "Create sugar oat by just mixing a bunch of sugar cane with a bunch of wheat. All horses love sugar oat! Sometimes when the horses from the horse station in Thais are on the loose, wild horses mix with the herd. Maybe they can be tamed?" }) -keywordHandler:addKeyword({ 'sweet smelling bait' }, StdModule.say, { npcHandler = npcHandler, text = "The interesting part about that bait isn't the sweet stuff - it's the flies attracted to the sweet smell. Spiders love to eat flies, especially the Zaoan ones." }) -keywordHandler:addKeyword({ 'tin key' }, StdModule.say, { npcHandler = npcHandler, text = "Hm! Now that's an interesting one. Where did you get that from? I could imagine it winds something up in a factory, but it's definitely not a normal animal." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "It's on the door." }) +keywordHandler:addKeyword({ "here" }, StdModule.say, { npcHandler = npcHandler, text = "Some call me {animal} whisperer. Others say I'm just crazy. I refer to myself as a simple {stable} keeper." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Some call me {animal} whisperer. Others say I'm just crazy. I refer to myself as a simple {stable} keeper." }) +keywordHandler:addKeyword({ "animal" }, StdModule.say, { npcHandler = npcHandler, text = "I love all animals, whether small or big. I also believe each one, even the wildest and most ferocious being, can be talked to, understood and {tamed}." }) +keywordHandler:addKeyword({ "stable" }, StdModule.say, { npcHandler = npcHandler, text = "It's my dream to shelter many different tamed animals. Maybe one day that dream will come true." }) +keywordHandler:addKeyword({ "tamed" }, StdModule.say, { npcHandler = npcHandler, text = "Well, usually you can tame animals with the help of a few simple items. If you've found such an {item}, show it to me and I might be able to help you with instructions on the taming process." }) +keywordHandler:addKeyword({ "item" }, StdModule.say, { npcHandler = npcHandler, text = "Well? Which item have you found and require advice for?" }) +keywordHandler:addKeyword({ "bag of apple slices" }, StdModule.say, { npcHandler = npcHandler, text = "That's among the favourite foods of donkeys, as far as I know. It's a shame I haven't really seen any donkey around. It could require a magic trick to actually get to meet one." }) +keywordHandler:addKeyword({ "bamboo leaves" }, StdModule.say, { npcHandler = npcHandler, text = "Pandas love to eat bamboo leaves, but the Tiquandan pandas are actually not that skilled at climbing, so they have a hard time getting some for themselves. You might be able to tame one with them." }) +keywordHandler:addKeyword({ "carrot on a stick" }, StdModule.say, { npcHandler = npcHandler, text = "I heard that terror birds really love carrots. I'd try waving it in front of one of those." }) +keywordHandler:addKeyword({ "decorative ribbon" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, what a pretty ribbon. Reminds me of the elusive dragonlings - they're quite elegant and vain. They would probably welcome a decorative element. They're sometimes spotted during volcano eruptions." }) +keywordHandler:addKeyword({ "diapason" }, StdModule.say, { npcHandler = npcHandler, text = "What a neat little elvish gadget. Did you know a diapason works with vibrations to create sound? I actually think this could work on a creature made of crystals." }) +keywordHandler:addKeyword({ "fist on a stick" }, StdModule.say, { npcHandler = npcHandler, text = "I'm against violence towards any creature. I've heard those barbarians in the desert use it for disobedient dromedaries." }) +keywordHandler:addKeyword({ "four-leaf clover" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, what a nice little plant! Did you know it's supposed to bring luck? So is the lady bug. Both of them might actually go well together." }) +keywordHandler:addKeyword({ "foxtail" }, StdModule.say, { npcHandler = npcHandler, text = "I've heard that there once was a gang of manta ray riders who liked to adorn their mantas with a foxtail. Don't ask me why, maybe they like how it floats in the wind when running really fast?" }) +keywordHandler:addKeyword({ "golem wrench" }, StdModule.say, { npcHandler = npcHandler, text = "What a strange device! This looks like a tool for someone who creates golems and modifies living creatures. You could probably tame a modded creature with it, but I doubt they live in the wild." }) +keywordHandler:addKeyword({ "giant shrimp" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, that's one of the favourite foods of a crustacea gigantica. I think you can just distract it with the food and quickly jump on its back." }) +keywordHandler:addKeyword({ "glow wine" }, StdModule.say, { npcHandler = npcHandler, text = "Have you ever encountered a magma crawler? They only eat and drink really hot things. You could probably try and make one drink some glow wine - and quickly mount it as long as it's drunk." }) +keywordHandler:addKeyword({ "golden can of oil" }, StdModule.say, { npcHandler = npcHandler, text = "Hm. What an interesting find. This is definitely not used for any sort of animal. Maybe a vehicle? I can imagine it could be used for a bike of some sorts." }) +keywordHandler:addKeyword({ "harness" }, StdModule.say, { npcHandler = npcHandler, text = "That looks like it might fit a draptor. If you can ever get close enough to one to catch it, I'd simply try putting it on while whispering calming words." }) +keywordHandler:addKeyword({ "hunting horn" }, StdModule.say, { npcHandler = npcHandler, text = "The sound of a hunting horn is often intimidating to forest creatures, but I heard that wild boars actually like it." }) +keywordHandler:addKeyword({ "iron loadstone" }, StdModule.say, { npcHandler = npcHandler, text = "Ironblights consist mainly of stone and iron. With a strong magnet like that you can basically force it to walk in the direction you're wanting it to." }) +keywordHandler:addKeyword({ "leather whip" }, StdModule.say, { npcHandler = npcHandler, text = "Try catching a midnight panther using that one. Don't hit the panther, mind you. Just let the whip crack in the air - I think that will work." }) +keywordHandler:addKeyword({ "leech" }, StdModule.say, { npcHandler = npcHandler, text = "As far as I know, leeches can be found in terrestrial, swampy areas. Leeches often help large animals such as water buffaloes to get rid of parasites." }) +keywordHandler:addKeyword({ "maxilla maximus" }, StdModule.say, { npcHandler = npcHandler, text = "You should show that giant jaw to a creature looking like the one you got it from. It will respect you when it sees those scary teeth." }) +keywordHandler:addKeyword({ "music box" }, StdModule.say, { npcHandler = npcHandler, text = "Where did you get that? What a rare treat. This must have been crafted by someone who truly loves both music and animals. I can't tell you anything else about it." }) +keywordHandler:addKeyword({ "nail case" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, a nail case..., I hate paring nails. But I heard gravediggers become trusting when they get the right treatment." }) +keywordHandler:addKeyword({ "nightmare horn" }, StdModule.say, { npcHandler = npcHandler, text = "How impressive, a nightmare horn. Have you ever encountered a shock head? Try hypnotizing them with your horn." }) +keywordHandler:addKeyword({ "reins" }, StdModule.say, { npcHandler = npcHandler, text = "You could probably ride a black sheep with these. Talk to it gently and carefully put on the reins." }) +keywordHandler:addKeyword({ "scorpion sceptre" }, StdModule.say, { npcHandler = npcHandler, text = "Wow, that's a rarity. Have you ever met one of those large sandstone scorpions? They're quite impressive. You need such a sceptre to show to one that you're its new master." }) +keywordHandler:addKeyword({ "slingshot" }, StdModule.say, { npcHandler = npcHandler, text = "That might be the only way to tame a bear. It has a sensitive spot right between the ears which will calm it down, but you're not strong enough for simple acupressure. Using the slingshot is likely to help you with that." }) +keywordHandler:addKeyword({ "slug drug" }, StdModule.say, { npcHandler = npcHandler, text = "As the name indicates - this can be used to make a slug much faster than it normally is! Once you've tamed it, it will race you wherever you want to go." }) +keywordHandler:addKeyword({ "sugar oat" }, StdModule.say, { npcHandler = npcHandler, text = "Create sugar oat by just mixing a bunch of sugar cane with a bunch of wheat. All horses love sugar oat! Sometimes when the horses from the horse station in Thais are on the loose, wild horses mix with the herd. Maybe they can be tamed?" }) +keywordHandler:addKeyword({ "sweet smelling bait" }, StdModule.say, { npcHandler = npcHandler, text = "The interesting part about that bait isn't the sweet stuff - it's the flies attracted to the sweet smell. Spiders love to eat flies, especially the Zaoan ones." }) +keywordHandler:addKeyword({ "tin key" }, StdModule.say, { npcHandler = npcHandler, text = "Hm! Now that's an interesting one. Where did you get that from? I could imagine it winds something up in a factory, but it's definitely not a normal animal." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "It's on the door." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -102,24 +102,24 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "control unit") then npcHandler:say({ - 'That\'s an interesting one, nothing like I have ever seen myself. What you describe is a device of which I heard that it grants literally \'complete\' control over some sort of... artificial thing? ...', - 'Well, if you ever happen to come about a stroke of luck and find such a thing - use it on an appropriate mount, it will probably be mechanical, driven by... something.' + "That's an interesting one, nothing like I have ever seen myself. What you describe is a device of which I heard that it grants literally 'complete' control over some sort of... artificial thing? ...", + "Well, if you ever happen to come about a stroke of luck and find such a thing - use it on an appropriate mount, it will probably be mechanical, driven by... something.", }, npc, creature) elseif MsgContains(message, "golden fir cone") then npcHandler:say({ - 'Did you know that you can also create those by yourself? Trade a gold ingot with the sweaty cyclops in Ab\'Dendriel for a cup of molten gold. If you use that on a fir tree, you have a small chance to get a golden fir cone. ...', - 'Those are needed to impress the white deers that roam around Ab\'Dendriel sometimes, but I\'d wait until you are able to enrage one to make sure it has the necessary strength to carry you.' + "Did you know that you can also create those by yourself? Trade a gold ingot with the sweaty cyclops in Ab'Dendriel for a cup of molten gold. If you use that on a fir tree, you have a small chance to get a golden fir cone. ...", + "Those are needed to impress the white deers that roam around Ab'Dendriel sometimes, but I'd wait until you are able to enrage one to make sure it has the necessary strength to carry you.", }, npc, creature) elseif MsgContains(message, "melting horn") then npcHandler:say({ - 'It is said that ferocious creatures once thrived on lush islands in the far northern sea. They died aeons ago when times of great cold came and formed the icy wastes of Svargrond as we know them today. ...', - 'Travellers from the north have told stories of these creatures, watching them from within the ice in the deepest caves, still vigilant as if frozen in time. \'Ursagrodon\' they called them. ...', - 'With tinder and some kind of fireproof vessel, you could create a device to melt the ice surrounding their remains and see for yourself what this is all about.' + "It is said that ferocious creatures once thrived on lush islands in the far northern sea. They died aeons ago when times of great cold came and formed the icy wastes of Svargrond as we know them today. ...", + "Travellers from the north have told stories of these creatures, watching them from within the ice in the deepest caves, still vigilant as if frozen in time. 'Ursagrodon' they called them. ...", + "With tinder and some kind of fireproof vessel, you could create a device to melt the ice surrounding their remains and see for yourself what this is all about.", }, npc, creature) elseif table.contains({ "arkarra", "stampor" }, message) then npcHandler:say({ - 'The stampor in the back? She\'s my friend, but she came to me out of her own free will. I must admit I\'ve never managed to tame any other stampor. ...', - 'I heard that there\'s some sort of voodoo magic which would allow you to summon a stampor, but I\'m not a voodoo expert, so I wouldn\'t know.' + "The stampor in the back? She's my friend, but she came to me out of her own free will. I must admit I've never managed to tame any other stampor. ...", + "I heard that there's some sort of voodoo magic which would allow you to summon a stampor, but I'm not a voodoo expert, so I wouldn't know.", }, npc, creature) end return true diff --git a/data-otservbr-global/npc/lou_toose.lua b/data-otservbr-global/npc/lou_toose.lua index b84d317b966..002362e7b82 100644 --- a/data-otservbr-global/npc/lou_toose.lua +++ b/data-otservbr-global/npc/lou_toose.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 114, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/loui.lua b/data-otservbr-global/npc/loui.lua index da93b3512a8..118a73b1261 100644 --- a/data-otservbr-global/npc/loui.lua +++ b/data-otservbr-global/npc/loui.lua @@ -11,19 +11,19 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 57 + lookType = 57, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'BEWARE! Beware of that hole!' }, - { text = 'STAY AWAY FROM THAT HOLE!' }, - { text = 'What are you doing here?? Get away from that hole!' } + { text = "BEWARE! Beware of that hole!" }, + { text = "STAY AWAY FROM THAT HOLE!" }, + { text = "What are you doing here?? Get away from that hole!" }, } local keywordHandler = KeywordHandler:new() @@ -53,59 +53,58 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - -- Basic keywords -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Loui.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a {monk}. I wanted to do something here, but I forgot what it was when I fell in that {hole}.' }) -keywordHandler:addKeyword({ 'monk' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a humble servant of the {gods}.' }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = 'They created Tibia and all lifeforms.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'I have no idea how long I\'ve been in this {hole}. It seemed like an eternity!' }) -keywordHandler:addKeyword({ 'hole' }, StdModule.say, { npcHandler = npcHandler, text = 'While looking for something - which I forgot - I found that {hole}. I went down, even though I had no torch. And then I heard {THEM}! There must be dozens!' }) -keywordHandler:addKeyword({ 'them' }, StdModule.say, { npcHandler = npcHandler, text = 'They were so many, EVERYWHERE! I could barely escape alive. I have no clue what THEY were but one more second down there and I\'d have been dead!' }) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, I\'m out of mana and ingredients, please visit Cipfried in town.' }) -keywordHandler:addKeyword({ 'rat' }, StdModule.say, { npcHandler = npcHandler, text = 'The good thing is that those horrible rats stay mostly in town. The bad thing is that they do so because of bigger {monsters} that would devour them outside.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'Everything around us, that is Tibia.' }) -keywordHandler:addKeyword({ 'academy' }, StdModule.say, { npcHandler = npcHandler, text = 'Most adventurers take their first steps there.' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'Pah, king! He should do something about this {hole}!' }) -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, { npcHandler = npcHandler, text = 'This is the place where everything starts.' }) -keywordHandler:addKeyword({ 'blueberr' }, StdModule.say, { npcHandler = npcHandler, text = 'Was it...? Yes, I might have looked for blueberries as I foolishly entered this unholy {hole}.' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'There must be an army of them, just down this {hole}.' }) -keywordHandler:addKeyword({ 'rabbit' }, StdModule.say, { npcHandler = npcHandler, text = 'Then, they must be magic wielding beasts using creature illusion! Good thing you escaped.' }) -keywordHandler:addKeyword({ 'life' }, StdModule.say, { npcHandler = npcHandler, text = 'The gods blessed Tibia with abundant forms of life.' }) -keywordHandler:addKeyword({ 'story' }, StdModule.say, { npcHandler = npcHandler, text = 'The good thing is that those horrible rats stay mostly in town. The bad thing is that they do so because of bigger {monsters} that would devour them outside.' }) - -keywordHandler:addKeyword({ 'quest' }, StdModule.say, { npcHandler = npcHandler, text = 'I have no quests but to stay away from that {hole} and I recommend you to do the same.' }) -keywordHandler:addAliasKeyword({ 'task' }) - -keywordHandler:addKeyword({ 'cash' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m penniless and poor as becomes a humble monk like me.' }) -keywordHandler:addAliasKeyword({ 'gold' }) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Loui." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a {monk}. I wanted to do something here, but I forgot what it was when I fell in that {hole}." }) +keywordHandler:addKeyword({ "monk" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a humble servant of the {gods}." }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "They created Tibia and all lifeforms." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "I have no idea how long I've been in this {hole}. It seemed like an eternity!" }) +keywordHandler:addKeyword({ "hole" }, StdModule.say, { npcHandler = npcHandler, text = "While looking for something - which I forgot - I found that {hole}. I went down, even though I had no torch. And then I heard {THEM}! There must be dozens!" }) +keywordHandler:addKeyword({ "them" }, StdModule.say, { npcHandler = npcHandler, text = "They were so many, EVERYWHERE! I could barely escape alive. I have no clue what THEY were but one more second down there and I'd have been dead!" }) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, I'm out of mana and ingredients, please visit Cipfried in town." }) +keywordHandler:addKeyword({ "rat" }, StdModule.say, { npcHandler = npcHandler, text = "The good thing is that those horrible rats stay mostly in town. The bad thing is that they do so because of bigger {monsters} that would devour them outside." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "Everything around us, that is Tibia." }) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { npcHandler = npcHandler, text = "Most adventurers take their first steps there." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "Pah, king! He should do something about this {hole}!" }) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { npcHandler = npcHandler, text = "This is the place where everything starts." }) +keywordHandler:addKeyword({ "blueberr" }, StdModule.say, { npcHandler = npcHandler, text = "Was it...? Yes, I might have looked for blueberries as I foolishly entered this unholy {hole}." }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "There must be an army of them, just down this {hole}." }) +keywordHandler:addKeyword({ "rabbit" }, StdModule.say, { npcHandler = npcHandler, text = "Then, they must be magic wielding beasts using creature illusion! Good thing you escaped." }) +keywordHandler:addKeyword({ "life" }, StdModule.say, { npcHandler = npcHandler, text = "The gods blessed Tibia with abundant forms of life." }) +keywordHandler:addKeyword({ "story" }, StdModule.say, { npcHandler = npcHandler, text = "The good thing is that those horrible rats stay mostly in town. The bad thing is that they do so because of bigger {monsters} that would devour them outside." }) + +keywordHandler:addKeyword({ "quest" }, StdModule.say, { npcHandler = npcHandler, text = "I have no quests but to stay away from that {hole} and I recommend you to do the same." }) +keywordHandler:addAliasKeyword({ "task" }) + +keywordHandler:addKeyword({ "cash" }, StdModule.say, { npcHandler = npcHandler, text = "I'm penniless and poor as becomes a humble monk like me." }) +keywordHandler:addAliasKeyword({ "gold" }) -- Names -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'She owns a shop in town.' }) -keywordHandler:addAliasKeyword({ 'lily' }) -keywordHandler:addAliasKeyword({ 'lee\'delle' }) - -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'She owns a bar in town.' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'Waaaah! Don\'t shock me like that!' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'He has his own monsters, I believe.' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'Harmless old woman.' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'He owns a shop in town.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'Who\'s that? Never heard about her.' }) -keywordHandler:addKeyword({ 'obi' }, StdModule.say, { npcHandler = npcHandler, text = 'He owns a shop in town.' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s a farmer.' }) -keywordHandler:addKeyword({ 'willie' }, StdModule.say, { npcHandler = npcHandler, text = 'The gods may protect me from his rudeness.' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'A hermit on the other side of town.' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'The oracle! Yes! You should get off this island as fast as you can!' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'Young and inexperienced he is.' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'Seymour is the headmaster of the local {academy}.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sure he has never seen monsters like those in this hole before.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'I tried to warn him about these monsters but he just laughed at me!! It\'s an outrage!' }) -keywordHandler:addAliasKeyword({ 'zerbrus' }) - -npcHandler:setMessage(MESSAGE_WALKAWAY, 'STAY AWAY FROM THAT HOLE!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods protect you! And stay away from that hole!') -npcHandler:setMessage(MESSAGE_GREET, 'BEWARE! Beware of that {hole}!') +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "She owns a shop in town." }) +keywordHandler:addAliasKeyword({ "lily" }) +keywordHandler:addAliasKeyword({ "lee'delle" }) + +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "She owns a bar in town." }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "Waaaah! Don't shock me like that!" }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "He has his own monsters, I believe." }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "Harmless old woman." }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "He owns a shop in town." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "Who's that? Never heard about her." }) +keywordHandler:addKeyword({ "obi" }, StdModule.say, { npcHandler = npcHandler, text = "He owns a shop in town." }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "He's a farmer." }) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { npcHandler = npcHandler, text = "The gods may protect me from his rudeness." }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "A hermit on the other side of town." }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "The oracle! Yes! You should get off this island as fast as you can!" }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "Young and inexperienced he is." }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "Seymour is the headmaster of the local {academy}." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "I'm sure he has never seen monsters like those in this hole before." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "I tried to warn him about these monsters but he just laughed at me!! It's an outrage!" }) +keywordHandler:addAliasKeyword({ "zerbrus" }) + +npcHandler:setMessage(MESSAGE_WALKAWAY, "STAY AWAY FROM THAT HOLE!") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods protect you! And stay away from that hole!") +npcHandler:setMessage(MESSAGE_GREET, "BEWARE! Beware of that {hole}!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/lubo.lua b/data-otservbr-global/npc/lubo.lua index 068c70ed544..21a737d35d0 100644 --- a/data-otservbr-global/npc/lubo.lua +++ b/data-otservbr-global/npc/lubo.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 39, lookLegs = 96, lookFeet = 118, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Stop by and rest a while, tired adventurer! Have a look at my wares!' } + { text = "Stop by and rest a while, tired adventurer! Have a look at my wares!" }, } local keywordHandler = KeywordHandler:new() @@ -64,21 +64,18 @@ local function creatureSayCallback(npc, creature, type, message) return false end - -- Citizen outfit addon local addonProgress = player:getStorageValue(Storage.OutfitQuest.Citizen.AddonBackpack) - if MsgContains(message, 'addon') or MsgContains(message, 'outfit') - or (addonProgress == 1 and MsgContains(message, 'leather')) - or ((addonProgress == 1 or addonProgress == 2) and MsgContains(message, 'backpack')) then + if MsgContains(message, "addon") or MsgContains(message, "outfit") or (addonProgress == 1 and MsgContains(message, "leather")) or ((addonProgress == 1 or addonProgress == 2) and MsgContains(message, "backpack")) then if addonProgress < 1 then - npcHandler:say('Sorry, the backpack I wear is not for sale. It\'s handmade from rare minotaur leather.', npc, creature) + npcHandler:say("Sorry, the backpack I wear is not for sale. It's handmade from rare minotaur leather.", npc, creature) npcHandler:setTopic(playerId, 1) elseif addonProgress == 1 then - npcHandler:say('Ah, right, almost forgot about the backpack! Have you brought me 100 pieces of minotaur leather as requested?', npc, creature) + npcHandler:say("Ah, right, almost forgot about the backpack! Have you brought me 100 pieces of minotaur leather as requested?", npc, creature) npcHandler:setTopic(playerId, 3) elseif addonProgress == 2 then if player:getStorageValue(Storage.OutfitQuest.Citizen.AddonBackpackTimer) < os.time() then - npcHandler:say('Just in time! Your backpack is finished. Here you go, I hope you like it.', npc, creature) + npcHandler:say("Just in time! Your backpack is finished. Here you go, I hope you like it.", npc, creature) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) player:setStorageValue(Storage.OutfitQuest.Ref, math.min(0, player:getStorageValue(Storage.OutfitQuest.Ref) - 1)) player:setStorageValue(Storage.OutfitQuest.Citizen.MissionBackpack, 0) @@ -87,35 +84,35 @@ local function creatureSayCallback(npc, creature, type, message) player:addOutfitAddon(136, 1) player:addOutfitAddon(128, 1) else - npcHandler:say('Uh... I didn\'t expect you to return that early. Sorry, but I\'m not finished yet with your backpack. I\'m doing the best I can, promised.', npc, creature) + npcHandler:say("Uh... I didn't expect you to return that early. Sorry, but I'm not finished yet with your backpack. I'm doing the best I can, promised.", npc, creature) end elseif addonProgress == 3 then - npcHandler:say('Sorry, but I can only make one backpack per person, else I\'d have to close my shop and open a leather manufactory.', npc, creature) + npcHandler:say("Sorry, but I can only make one backpack per person, else I'd have to close my shop and open a leather manufactory.", npc, creature) end return true end if npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'backpack') or MsgContains(message, 'minotaur') or MsgContains(message, 'leather') then - npcHandler:say('Well, if you really like this backpack, I could make one for you, but minotaur leather is hard to come by these days. Are you willing to put some work into this?', npc, creature) + if MsgContains(message, "backpack") or MsgContains(message, "minotaur") or MsgContains(message, "leather") then + npcHandler:say("Well, if you really like this backpack, I could make one for you, but minotaur leather is hard to come by these days. Are you willing to put some work into this?", npc, creature) npcHandler:setTopic(playerId, 2) end elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then player:setStorageValue(Storage.OutfitQuest.Ref, math.max(0, player:getStorageValue(Storage.OutfitQuest.Ref)) + 1) player:setStorageValue(Storage.OutfitQuest.Citizen.AddonBackpack, 1) player:setStorageValue(Storage.OutfitQuest.Citizen.MissionBackpack, 1) - npcHandler:say('Alright then, if you bring me 100 pieces of fine minotaur leather I will see what I can do for you. You probably have to kill really many minotaurs though... so good luck!', npc, creature) + npcHandler:say("Alright then, if you bring me 100 pieces of fine minotaur leather I will see what I can do for you. You probably have to kill really many minotaurs though... so good luck!", npc, creature) npcHandler:removeInteraction(npc, creature) else - npcHandler:say('Sorry, but I don\'t run a welfare office, you know... no pain, no gain.', npc, creature) + npcHandler:say("Sorry, but I don't run a welfare office, you know... no pain, no gain.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if player:getItemCount(5878) < 100 then - npcHandler:say('Sorry, but that\'s not enough leather yet to make one of these backpacks. Would you rather like to buy a normal backpack for 10 gold?', npc, creature) + npcHandler:say("Sorry, but that's not enough leather yet to make one of these backpacks. Would you rather like to buy a normal backpack for 10 gold?", npc, creature) else - npcHandler:say('Great! Alright, I need a while to finish this backpack for you. Come ask me later, okay?', npc, creature) + npcHandler:say("Great! Alright, I need a while to finish this backpack for you. Come ask me later, okay?", npc, creature) player:removeItem(5878, 100) @@ -124,7 +121,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.Citizen.AddonBackpackTimer, os.time() + 2 * 60 * 60) end else - npcHandler:say('I know, it\'s quite some work... don\'t lose heart, just keep killing minotaurs and you\'ll eventually get lucky. Would you rather like to buy a normal backpack for 10 gold?', npc, creature) + npcHandler:say("I know, it's quite some work... don't lose heart, just keep killing minotaurs and you'll eventually get lucky. Would you rather like to buy a normal backpack for 10 gold?", npc, creature) end npcHandler:setTopic(playerId, 0) end @@ -150,18 +147,18 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am selling equipment for adventurers. If you need anything, let me know.' }) -keywordHandler:addKeyword({ 'dog' }, StdModule.say, { npcHandler = npcHandler, text = 'This is Ruffy my dog, please don\'t do him any harm.' }) -keywordHandler:addKeyword({ 'offer' }, StdModule.say, { npcHandler = npcHandler, text = 'I sell torches, fishing rods, worms, ropes, water hoses, backpacks, apples, and maps.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I am Lubo, the owner of this shop.' }) -keywordHandler:addKeyword({ 'maps' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh! I\'m sorry, I sold the last one just five minutes ago.' }) -keywordHandler:addKeyword({ 'hat' }, StdModule.say, { npcHandler = npcHandler, text = 'My hat? Hanna made this one for me.' }) -keywordHandler:addKeyword({ 'finger' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, you sure mean this old story about the mage Dago, who lost two fingers when he conjured a dragon.' }) -keywordHandler:addKeyword({ 'pet' }, StdModule.say, { npcHandler = npcHandler, text = 'There are some strange stories about a magicians pet names. Ask Hoggle about it.' }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am selling equipment for adventurers. If you need anything, let me know." }) +keywordHandler:addKeyword({ "dog" }, StdModule.say, { npcHandler = npcHandler, text = "This is Ruffy my dog, please don't do him any harm." }) +keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "I sell torches, fishing rods, worms, ropes, water hoses, backpacks, apples, and maps." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am Lubo, the owner of this shop." }) +keywordHandler:addKeyword({ "maps" }, StdModule.say, { npcHandler = npcHandler, text = "Oh! I'm sorry, I sold the last one just five minutes ago." }) +keywordHandler:addKeyword({ "hat" }, StdModule.say, { npcHandler = npcHandler, text = "My hat? Hanna made this one for me." }) +keywordHandler:addKeyword({ "finger" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, you sure mean this old story about the mage Dago, who lost two fingers when he conjured a dragon." }) +keywordHandler:addKeyword({ "pet" }, StdModule.say, { npcHandler = npcHandler, text = "There are some strange stories about a magicians pet names. Ask Hoggle about it." }) -npcHandler:setMessage(MESSAGE_GREET, 'Welcome to my adventurer shop, |PLAYERNAME|! What do you need? Ask me for a {trade} to look at my wares.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye.') +npcHandler:setMessage(MESSAGE_GREET, "Welcome to my adventurer shop, |PLAYERNAME|! What do you need? Ask me for a {trade} to look at my wares.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -188,7 +185,7 @@ npcConfig.shop = { { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "waterskin of water", clientId = 2901, buy = 10, count = 1 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -199,7 +196,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/lucius.lua b/data-otservbr-global/npc/lucius.lua index 6b118f74bbe..3b66e50c7ea 100644 --- a/data-otservbr-global/npc/lucius.lua +++ b/data-otservbr-global/npc/lucius.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 79, lookLegs = 117, lookFeet = 114, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/lugri.lua b/data-otservbr-global/npc/lugri.lua index 29b538427b3..001cadc9b14 100644 --- a/data-otservbr-global/npc/lugri.lua +++ b/data-otservbr-global/npc/lugri.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 0, lookFeet = 38, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -90,7 +90,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "What? Who are you to imply I need help from a worm like you? ...", "I don't need help. But if you desperately wish to do something to earn the favour of Zathroth, feel free. Don't expect any reward though. ...", - "Do you want to help and serve Zathroth out of your own free will, without demanding payment or recognition?" + "Do you want to help and serve Zathroth out of your own free will, without demanding payment or recognition?", }, npc, creature) npcHandler:setTopic(playerId, 7) elseif player:getStorageValue(Storage.KillingInTheNameOf.LugriNecromancers) == 0 then @@ -98,7 +98,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "You've slain a mere " .. player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.NecromancerCount) .. " necromancers and priestesses. Still, you've shown some dedication. Maybe that means you can kill one of those so-called 'leaders' too. ...", "Deep under Drefia, a necromancer called Necropharus is hiding in the Halls of Sacrifice. I'll place a spell on you with which you will be able to pass his weak protective gate. ...", - "Know that this will be your only chance to enter his room. If you leave it or die, you won't be able to return. We'll see if you really dare enter those halls." + "Know that this will be your only chance to enter his room. If you leave it or die, you won't be able to return. We'll see if you really dare enter those halls.", }, npc, creature) player:setStorageValue(Storage.KillingInTheNameOf.LugriNecromancers, 1) player:setStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.NecropharusCount, 0) @@ -108,7 +108,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.KillingInTheNameOf.LugriNecromancers) == 2 then npcHandler:say({ "Hrm. So you had the guts to enter that room. Well, it's all fake magic anyway and no real threat. ...", - "What are you looking at me for? Waiting for something? I told you that there was no reward. Despite being allowed to stand before me without being squashed like a bug. Get out of my sight!" + "What are you looking at me for? Waiting for something? I told you that there was no reward. Despite being allowed to stand before me without being squashed like a bug. Get out of my sight!", }, npc, creature) player:setStorageValue(Storage.KillingInTheNameOf.LugriNecromancers, 4) elseif player:getStorageValue(Storage.KillingInTheNameOf.LugriNecromancers) == 3 then @@ -171,7 +171,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "You do? I mean - wise decision. Let me explain. By now, Tibia has been overrun by numerous followers of different cults and beliefs. The true Necromancers died or left Tibia long ago, shortly after their battle was lost. ...", "What is left are mainly pseudo-dark pretenders, the old wisdom and power being far beyond their grasp. They think they have the right to tap that dark power, but they don't. ...", - "I want you to eliminate them. As many as you can. All of the upstart necromancer orders, and those priestesses. And as I said, don't expect a reward - this is what has to be done to cleanse Tibia of its false dark prophets." }, npc, creature) + "I want you to eliminate them. As many as you can. All of the upstart necromancer orders, and those priestesses. And as I said, don't expect a reward - this is what has to be done to cleanse Tibia of its false dark prophets.", + }, npc, creature) player:setStorageValue(JOIN_STOR, 1) player:setStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.NecromancerCount, 0) player:setStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.AltKillCount.NecromancerCount, 0) diff --git a/data-otservbr-global/npc/lukosch.lua b/data-otservbr-global/npc/lukosch.lua index cdc9df4cc8c..80f26c9227d 100644 --- a/data-otservbr-global/npc/lukosch.lua +++ b/data-otservbr-global/npc/lukosch.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 70 + lookType = 70, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,7 +54,7 @@ local function creatureSayCallback(npc, creature, type, message) end -- WAGON TICKET - if (MsgContains(message, "ticket")) then + if MsgContains(message, "ticket") then if player:getStorageValue(Storage.WagonTicket) < os.time() then npcHandler:say("Do you want to purchase a weekly ticket for the ore wagons? With it you can travel freely and swiftly through Kazordoon for one week. 250 gold only. Deal?", npc, creature) npcHandler:setTopic(playerId, 1) @@ -62,8 +62,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Your weekly ticket is still valid. Would be a waste of money to purchase a second one", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then if player:getMoney() + player:getBankBalance() >= 250 then player:removeMoneyBank(250) player:setStorageValue(Storage.WagonTicket, os.time() + 7 * 24 * 60 * 60) @@ -73,8 +73,8 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 1) then - if (MsgContains(message, "no")) then + elseif npcHandler:getTopic(playerId) == 1 then + if MsgContains(message, "no") then npcHandler:say("No then.", npc, creature) npcHandler:setTopic(playerId, 0) end diff --git a/data-otservbr-global/npc/luna.lua b/data-otservbr-global/npc/luna.lua index 003e748e4e1..26811dd739e 100644 --- a/data-otservbr-global/npc/luna.lua +++ b/data-otservbr-global/npc/luna.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 100, lookLegs = 100, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Selling herbs, mushrooms and flowers, all picked under the light of the full moon!' } + { text = "Selling herbs, mushrooms and flowers, all picked under the light of the full moon!" }, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'offers' }, StdModule.say, { npcHandler = npcHandler, text = "I'm selling various herbs, mushrooms, and flowers. If you'd like to see my offers, ask me for a {trade}." }) +keywordHandler:addKeyword({ "offers" }, StdModule.say, { npcHandler = npcHandler, text = "I'm selling various herbs, mushrooms, and flowers. If you'd like to see my offers, ask me for a {trade}." }) npcHandler:setMessage(MESSAGE_GREET, "Greetings, traveller. Maybe you'd like to take a look at my {offers}...") npcHandler:setMessage(MESSAGE_FAREWELL, "Goodbye, traveller.") @@ -94,7 +94,7 @@ npcConfig.shop = { { itemName = "trollroot", clientId = 11515, sell = 50 }, { itemName = "tulip", clientId = 3668, buy = 9 }, { itemName = "white mushroom", clientId = 3723, buy = 6 }, - { itemName = "wood mushroom", clientId = 3727, sell = 15 } + { itemName = "wood mushroom", clientId = 3727, sell = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -105,7 +105,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/lunch.lua b/data-otservbr-global/npc/lunch.lua index fd9a07db7bd..08908668048 100644 --- a/data-otservbr-global/npc/lunch.lua +++ b/data-otservbr-global/npc/lunch.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 297 + lookType = 297, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/lungelen.lua b/data-otservbr-global/npc/lungelen.lua index 8e80dde2a3a..201ed9c4758 100644 --- a/data-otservbr-global/npc/lungelen.lua +++ b/data-otservbr-global/npc/lungelen.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 95, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/lurik.lua b/data-otservbr-global/npc/lurik.lua index 9c0515f7f7b..d0a5f1210eb 100644 --- a/data-otservbr-global/npc/lurik.lua +++ b/data-otservbr-global/npc/lurik.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 96, lookFeet = 116, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -66,7 +66,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeItem(7314, 1) then npcHandler:say({ "A frozen dragon lord? This is just the information we needed! And you even brought a scale from it! Take these 5000 gold pieces as a reward. ...", - "As you did such a great job, I might have another mission for you later." + "As you did such a great job, I might have another mission for you later.", }, npc, creature) player:addItem(3035, 50) player:setStorageValue(Storage.ExplorerSociety.TheIslandofDragons, 59) @@ -80,7 +80,7 @@ local function creatureSayCallback(npc, creature, type, message) "There is a cave on Hrodmir, north of the southernmost barbarian camp Krimhorn. ...", "In this cave, there are a waterfall and a lot of stalagmites. ...", "When the wind blows into this cave and hits the stalagmites, it is supposed to create a sound similar to a soft song. ...", - "Please take this resonance crystal and use it on the stalagmites in the cave to record the sound of the wind." + "Please take this resonance crystal and use it on the stalagmites in the cave to record the sound of the wind.", }, npc, creature) player:setStorageValue(Storage.ExplorerSociety.TheIceMusic, 60) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 60) @@ -89,7 +89,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Ah! You did it! I can't wait to hear the sound... but I will do that in a silent moment. ...", "You helped as much in our research here. As a reward, you may use our astral portal in the upper room from now on. ...", - "For just one orichalcum pearl, you can travel between Liberty Bay and Svargrond. Thank you again!" + "For just one orichalcum pearl, you can travel between Liberty Bay and Svargrond. Thank you again!", }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.ExplorerSociety.TheIceMusic, 62) @@ -99,7 +99,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "You are the one who became an honorary barbarian! The one who made friends with the grim local musher and helped the shamans of Nibelor! The one they call old bearhugg ... erm ... I mean indeed I might have a mission for someone like you ...", "We are trying to find out what is happening in the raider camps. Through our connection to the shamans we could get a covered contact in their majorcamp far to the south. We equipped our contact with a memory crystal so he could report all he knew ...", - "We need you to recover this crystal. Travel to the southern camp of the raiders and find our contact man there. Get the memory crystal and bring ithere. The society and the shamans will then decide our next steps. Do you think you can do this?" + "We need you to recover this crystal. Travel to the southern camp of the raiders and find our contact man there. Get the memory crystal and bring ithere. The society and the shamans will then decide our next steps. Do you think you can do this?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.TheIceIslands.Questline) == 33 then @@ -112,7 +112,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "The information was quite useful. What worries me most are not the raiders but those that have driven them from the old mines...", "We need to investigate the mines. Most entrances collapsed due to the lack of maintenance but there should be some possibilities to get in ...", - "In case you find a door, Ill tell you the old trick of the Carlin mining company to open it . Find some hint or someone who is willing to talk about what is going on there." + "In case you find a door, Ill tell you the old trick of the Carlin mining company to open it . Find some hint or someone who is willing to talk about what is going on there.", }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.TheIceIslands.Questline, 35) @@ -125,7 +125,7 @@ local function creatureSayCallback(npc, creature, type, message) "Now we're talking! Maybe you've already heard of the island Okolnir south of Hrodmir. ...", "Okolnir is the home of a new and fierce dragon race, the so-called frost dragons. However, we have no idea where they originate from. ...", "Rumours say that dragon lords, that roamed on this isle, were somehow turned into frost dragons when the great frost covered Okolnir. ...", - "Travel to Okolnir and try to find a proof for the existence of dragon lords there in the old times. I think old Buddel might be able to bring you there." + "Travel to Okolnir and try to find a proof for the existence of dragon lords there in the old times. I think old Buddel might be able to bring you there.", }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.ExplorerSociety.TheIslandofDragons, 57) @@ -154,7 +154,7 @@ npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "orichalcum pearl", clientId = 5021, buy = 80 } + { itemName = "orichalcum pearl", clientId = 5021, buy = 80 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -165,7 +165,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/lynda.lua b/data-otservbr-global/npc/lynda.lua index b637e12e511..3176a464d70 100644 --- a/data-otservbr-global/npc/lynda.lua +++ b/data-otservbr-global/npc/lynda.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 81, lookLegs = 67, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,13 +58,12 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "angelina") then if player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonWand) == 1 then npcHandler:say({ "Angelina had been imprisoned? My, these are horrible news, but I am so glad to hear that she is safe now. ...", "I will happily carry out her wish and reward you, but I fear I need some important ingredients for my blessing spell first. ...", - "Will you gather them for me?" + "Will you gather them for me?", }, npc, creature) npcHandler:setTopic(playerId, 1) end @@ -95,10 +94,10 @@ local function creatureSayCallback(npc, creature, type, message) player:addOutfitAddon(141, 1) player:addOutfitAddon(130, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - npcHandler:say('I\'m glad to tell you that I have finished the ritual, player. Here is your new wand. I hope you carry it proudly for everyone to see..', npc, creature) + npcHandler:say("I'm glad to tell you that I have finished the ritual, player. Here is your new wand. I hope you carry it proudly for everyone to see..", npc, creature) npcHandler:setTopic(playerId, 0) else - npcHandler:say('Please let me focus for a while, |PLAYERNAME|.', npc, creature) + npcHandler:say("Please let me focus for a while, |PLAYERNAME|.", npc, creature) end end elseif MsgContains(message, "yes") then @@ -110,7 +109,7 @@ local function creatureSayCallback(npc, creature, type, message) "Secondly, I need 10 ounces of magic sulphur. It can absorb the elemental energy of all the wands and rods and bind it to something else. ...", "Next, I will need a soul stone. These can be used as a vessel for energy, evil as well as good. They are rarely used nowaday though. ...", "Lastly, I need a lot of holy energy. I can extract it from ankhs, but only a small amount each time. I will need about 20 ankhs. ...", - "Did you understand everything I told you and will help me with my blessing?" + "Did you understand everything I told you and will help me with my blessing?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then @@ -167,22 +166,20 @@ local function confirmWedding(npc, creature, message, keywords, parameters, node setPlayerSpouse(player:getGuid(), candidate) setPlayerSpouse(candidate, player:getGuid()) local itemAttribute = Item(doPlayerAddItem(creature, ITEM_ENGRAVED_WEDDING_RING, 1)) - npcHandler:say( - { - 'Dear friends and family, we are gathered here today to witness and celebrate the union of ' .. getPlayerNameById(candidate) .. ' and ' .. player:getName() .. ' in marriage.', - 'Through their time together, they have come to realize that their personal dreams, hopes, and goals are more attainable and more meaningful through the combined effort and mutual support provided in love, commitment, and family;', - 'and so they have decided to live together as husband and wife. And now, by the power vested in me by the Gods of Tibia, I hereby pronounce you husband and wife.', - '*After a whispered blessing opens an hand towards ' .. player:getName() .. '* Take these two engraved wedding rings and give one of them to your spouse.', - 'You may now kiss your bride.', - npc, - creature, - 10000 - } - ) - itemAttribute:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, player:getName() .. ' & ' .. getPlayerNameById(candidate) .. ' forever - married on ' .. os.date('%B %d, %Y.')) - itemAttribute:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, player:getName() .. ' & ' .. getPlayerNameById(candidate) .. ' forever - married on ' .. os.date('%B %d, %Y.')) + npcHandler:say({ + "Dear friends and family, we are gathered here today to witness and celebrate the union of " .. getPlayerNameById(candidate) .. " and " .. player:getName() .. " in marriage.", + "Through their time together, they have come to realize that their personal dreams, hopes, and goals are more attainable and more meaningful through the combined effort and mutual support provided in love, commitment, and family;", + "and so they have decided to live together as husband and wife. And now, by the power vested in me by the Gods of Tibia, I hereby pronounce you husband and wife.", + "*After a whispered blessing opens an hand towards " .. player:getName() .. "* Take these two engraved wedding rings and give one of them to your spouse.", + "You may now kiss your bride.", + npc, + creature, + 10000, + }) + itemAttribute:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, player:getName() .. " & " .. getPlayerNameById(candidate) .. " forever - married on " .. os.date("%B %d, %Y.")) + itemAttribute:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, player:getName() .. " & " .. getPlayerNameById(candidate) .. " forever - married on " .. os.date("%B %d, %Y.")) else - npcHandler:say('Your partner didn\'t accept your proposal, yet', npc, creature) + npcHandler:say("Your partner didn't accept your proposal, yet", npc, creature) end return true end @@ -193,8 +190,8 @@ local function confirmRemoveEngage(npc, creature, message, keywords, parameters, local playerStatus = getPlayerMarriageStatus(player:getGuid()) local playerSpouse = getPlayerSpouse(player:getGuid()) if playerStatus == PROPOSED_STATUS then - npcHandler:say('Are you sure you want to remove your wedding proposal with {' .. getPlayerNameById(playerSpouse) .. '}?', npc, creature) - node:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, moveup = 3, text = 'Ok, let\'s keep it then.' }) + npcHandler:say("Are you sure you want to remove your wedding proposal with {" .. getPlayerNameById(playerSpouse) .. "}?", npc, creature) + node:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, moveup = 3, text = "Ok, let's keep it then." }) local function removeEngage(creature, message, keywords, parameters, node) doPlayerAddItem(creature, ITEM_WEDDING_RING, 1) @@ -204,9 +201,9 @@ local function confirmRemoveEngage(npc, creature, message, keywords, parameters, npcHandler:say(parameters.text, npc, creature) keywordHandler:moveUp(parameters.moveup) end - node:addChildKeyword({ 'yes' }, removeEngage, { moveup = 3, text = 'Ok, your marriage proposal to {' .. getPlayerNameById(playerSpouse) .. '} has been removed. Take your wedding ring back.' }) + node:addChildKeyword({ "yes" }, removeEngage, { moveup = 3, text = "Ok, your marriage proposal to {" .. getPlayerNameById(playerSpouse) .. "} has been removed. Take your wedding ring back." }) else - npcHandler:say('You don\'t have any pending proposal to be removed.', npc, creature) + npcHandler:say("You don't have any pending proposal to be removed.", npc, creature) keywordHandler:moveUp(2) end return true @@ -217,8 +214,8 @@ local function confirmDivorce(npc, creature, message, keywords, parameters, node local playerStatus = getPlayerMarriageStatus(player:getGuid()) local playerSpouse = getPlayerSpouse(player:getGuid()) if playerStatus == MARRIED_STATUS then - npcHandler:say('Are you sure you want to divorce of {' .. getPlayerNameById(playerSpouse) .. '}?', npc, creature) - node:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, moveup = 3, text = 'Great! Marriages should be an eternal commitment.' }) + npcHandler:say("Are you sure you want to divorce of {" .. getPlayerNameById(playerSpouse) .. "}?", npc, creature) + node:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, moveup = 3, text = "Great! Marriages should be an eternal commitment." }) local function divorce(creature, message, keywords, parameters, node) local player = Player(creature) @@ -230,27 +227,27 @@ local function confirmDivorce(npc, creature, message, keywords, parameters, node npcHandler:say(parameters.text, npc, creature) keywordHandler:moveUp(parameters.moveup) end - node:addChildKeyword({ 'yes' }, divorce, { moveup = 3, text = 'Ok, you are now divorced of {' .. getPlayerNameById(playerSpouse) .. '}. Think better next time after marrying someone.' }) + node:addChildKeyword({ "yes" }, divorce, { moveup = 3, text = "Ok, you are now divorced of {" .. getPlayerNameById(playerSpouse) .. "}. Think better next time after marrying someone." }) else - npcHandler:say('You aren\'t married to get a divorce.', npc, creature) + npcHandler:say("You aren't married to get a divorce.", npc, creature) keywordHandler:moveUp(2) end return true end -local node1 = keywordHandler:addKeyword({ 'marry' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'Would you like to get married? Make sure you have a wedding ring and the wedding outfit box with you.' }) -node1:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'That\'s fine.' }) -local node2 = node1:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'And who would you like to marry?' }) -node2:addChildKeyword({ '[%w]' }, tryEngage, {}) +local node1 = keywordHandler:addKeyword({ "marry" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Would you like to get married? Make sure you have a wedding ring and the wedding outfit box with you." }) +node1:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = "That's fine." }) +local node2 = node1:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "And who would you like to marry?" }) +node2:addChildKeyword({ "[%w]" }, tryEngage, {}) -local node3 = keywordHandler:addKeyword({ 'celebration' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'Is your soulmate and friends here with you for the celebration?' }) -node3:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Then go bring them here!' }) -local node4 = node3:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'Good, let\'s {begin} then!' }) --, confirmWedding, {}) -node4:addChildKeyword({ 'begin' }, confirmWedding, {}) +local node3 = keywordHandler:addKeyword({ "celebration" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Is your soulmate and friends here with you for the celebration?" }) +node3:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = "Then go bring them here!" }) +local node4 = node3:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Good, let's {begin} then!" }) --, confirmWedding, {}) +node4:addChildKeyword({ "begin" }, confirmWedding, {}) -keywordHandler:addKeyword({ 'remove' }, confirmRemoveEngage, {}) +keywordHandler:addKeyword({ "remove" }, confirmRemoveEngage, {}) -keywordHandler:addKeyword({ 'divorce' }, confirmDivorce, {}) +keywordHandler:addKeyword({ "divorce" }, confirmDivorce, {}) npcHandler:setMessage(MESSAGE_GREET, "Welcome in the name of the gods, pilgrim |PLAYERNAME|!") npcHandler:setMessage(MESSAGE_FAREWELL, "Be careful on your journeys.") diff --git a/data-otservbr-global/npc/lyonel.lua b/data-otservbr-global/npc/lyonel.lua index bd9f2c9503f..4ea35ec2454 100644 --- a/data-otservbr-global/npc/lyonel.lua +++ b/data-otservbr-global/npc/lyonel.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 58, lookLegs = 21, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,7 +57,7 @@ npcConfig.shop = { { itemName = "cheese", clientId = 3607, buy = 6 }, { itemName = "flask of rum", clientId = 5552, buy = 150, count = 13 }, { itemName = "ham", clientId = 3582, buy = 8 }, - { itemName = "meat", clientId = 3577, buy = 5 } + { itemName = "meat", clientId = 3577, buy = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -68,7 +68,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/maealil.lua b/data-otservbr-global/npc/maealil.lua index 10ea7a01773..eaa103366b1 100644 --- a/data-otservbr-global/npc/maealil.lua +++ b/data-otservbr-global/npc/maealil.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 63 + lookType = 63, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -46,107 +46,130 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Maealil) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Maealil) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Maealil, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Wooden Stake -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'I think you have forgotten to bring your stake.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 3 and player:getItemCount(5941) == 0 end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "I think you have forgotten to bring your stake." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 3 and player:getItemCount(5941) == 0 +end) -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I was informed what to do. Are you prepared to receive my line of the prayer?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 3 end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive my prayer: \'Peace may fill your soul - evil shall be cleansed\'. Now, bring your stake to Yberius in the Venore temple for the next line of the prayer. I will inform him what to do.', reset = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 4) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - end -) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'I will wait for you.', reset = true }) +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I was informed what to do. Are you prepared to receive my line of the prayer?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 3 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive my prayer: 'Peace may fill your soul - evil shall be cleansed'. Now, bring your stake to Yberius in the Venore temple for the next line of the prayer. I will inform him what to do.", reset = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 4) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "I will wait for you.", reset = true }) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You should visit Yberius in the Venore temple now.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 4 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You already received my line of the prayer.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 4 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'A blessed stake? That is a strange request. Maybe Quentin knows more, he is one of the oldest monks after all.' }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You should visit Yberius in the Venore temple now." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 4 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You already received my line of the prayer." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 4 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "A blessed stake? That is a strange request. Maybe Quentin knows more, he is one of the oldest monks after all." }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) -- Greeting message keywordHandler:addGreetKeyword({ "ashari" }, { npcHandler = npcHandler, text = "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free." }) --Farewell message keywordHandler:addFarewellKeyword({ "asgha thrazi" }, { npcHandler = npcHandler, text = "May the gods bless you, |PLAYERNAME|!" }) -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/maelyrra.lua b/data-otservbr-global/npc/maelyrra.lua index 9cc94fb8dc0..f582f2418c1 100644 --- a/data-otservbr-global/npc/maelyrra.lua +++ b/data-otservbr-global/npc/maelyrra.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -62,40 +62,37 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "mission") then if player:getStorageValue(ThreatenedDreams.Mission02[1]) < 1 then npcHandler:say({ - "Some annoying nightmarish creatures rove about in the tunnels underneath this island. They are threatening the members of my court and devastate the flora and fauna. They also threaten the natural balance. Would you go and fight them for me?" + "Some annoying nightmarish creatures rove about in the tunnels underneath this island. They are threatening the members of my court and devastate the flora and fauna. They also threaten the natural balance. Would you go and fight them for me?", }, npc, creature) npcHandler:setTopic(playerId, 1) - elseif player:getStorageValue(ThreatenedDreams.Mission02[1]) >= 1 - and player:getStorageValue(ThreatenedDreams.Mission02[1]) <= 2 then + elseif player:getStorageValue(ThreatenedDreams.Mission02[1]) >= 1 and player:getStorageValue(ThreatenedDreams.Mission02[1]) <= 2 then npcHandler:say({ - "Have you defeated the nightmare monsters?" + "Have you defeated the nightmare monsters?", }, npc, creature) npcHandler:setTopic(playerId, 2) - elseif player:getStorageValue(ThreatenedDreams.Mission02[1]) >= 3 - and player:getStorageValue(ThreatenedDreams.Mission02[1]) <= 4 then + elseif player:getStorageValue(ThreatenedDreams.Mission02[1]) >= 3 and player:getStorageValue(ThreatenedDreams.Mission02[1]) <= 4 then npcHandler:say({ - "Have you found the moon mirror and freed the captured fairies?" + "Have you found the moon mirror and freed the captured fairies?", }, npc, creature) npcHandler:setTopic(playerId, 4) - elseif player:getStorageValue(ThreatenedDreams.Mission02[1]) == 5 - and player:getStorageValue(ThreatenedDreams.Mission03[1]) == 4 then + elseif player:getStorageValue(ThreatenedDreams.Mission02[1]) == 5 and player:getStorageValue(ThreatenedDreams.Mission03[1]) == 4 then npcHandler:say({ - "Have you already found the starlight vial and the sun catcher?" + "Have you already found the starlight vial and the sun catcher?", }, npc, creature) npcHandler:setTopic(playerId, 6) elseif player:getStorageValue(ThreatenedDreams.Mission02[1]) == 6 then npcHandler:say({ - "Could you already gather the three lights?" + "Could you already gather the three lights?", }, npc, creature) npcHandler:setTopic(playerId, 7) elseif player:getStorageValue(ThreatenedDreams.Mission02[1]) == 7 then npcHandler:say({ - "Have you repaired the magical barrier? Is Feyrist safe?" + "Have you repaired the magical barrier? Is Feyrist safe?", }, npc, creature) npcHandler:setTopic(playerId, 8) else npcHandler:say({ - "Thank you again, mortal being! The fae will be forever grateful." + "Thank you again, mortal being! The fae will be forever grateful.", }, npc, creature) npcHandler:setTopic(playerId, 0) end @@ -112,21 +109,20 @@ local function creatureSayCallback(npc, creature, type, message) local enfeebledKills = player:getStorageValue(ThreatenedDreams.Mission02.EnfeebledCount) local frazzlemawsKills = player:getStorageValue(ThreatenedDreams.Mission02.FrazzlemawsCount) local kroazurKill = player:getStorageValue(ThreatenedDreams.Mission02.KroazurKill) - if player:getStorageValue(ThreatenedDreams.Mission02[1]) == 1 - and kroazurKill >= 1 and (enfeebledKills + frazzlemawsKills) >= 200 then + if player:getStorageValue(ThreatenedDreams.Mission02[1]) == 1 and kroazurKill >= 1 and (enfeebledKills + frazzlemawsKills) >= 200 then npcHandler:say({ - "Thank you! You rendered a great favour to the fae courts and Feyrist alike. Would you help us with another problem?" + "Thank you! You rendered a great favour to the fae courts and Feyrist alike. Would you help us with another problem?", }, npc, creature) npcHandler:setTopic(playerId, 3) player:setStorageValue(ThreatenedDreams.Mission02[1], 2) elseif player:getStorageValue(ThreatenedDreams.Mission02[1]) == 2 then npcHandler:say({ - "You rendered a great favour to the fae courts and Feyrist alike. Would you help us with another problem?" + "You rendered a great favour to the fae courts and Feyrist alike. Would you help us with another problem?", }, npc, creature) npcHandler:setTopic(playerId, 3) else npcHandler:say({ - "You have to kill two hundred of nightmare creatures and the terrible demon Kroazur who's leading them. That should bring some relief for the fae." + "You have to kill two hundred of nightmare creatures and the terrible demon Kroazur who's leading them. That should bring some relief for the fae.", }, npc, creature) npcHandler:setTopic(playerId, 0) end @@ -135,33 +131,32 @@ local function creatureSayCallback(npc, creature, type, message) "Some of our siblings are tainted by the destructive energies that threaten Feyrist. They are darker now, more aggressive, twisted ... I'm sure you already met them. ...", "They are living in tunnels and caves but at night they surface, even attacking their own siblings. They kidnapped some fairies, holding them prisoner in their mouldy dens. ...", "And as if this wasn't enough they stole an ancient and precious artefact, the moon mirror. Please seek out the tainted fae, retrieve the artefact and free the captured fairies. ...", - "You may discover the entrance to the tainted caves somewhere in the deep forest. The tainted fae like to hide their treasures in hollow logs or trumps, so have a closer look at them." + "You may discover the entrance to the tainted caves somewhere in the deep forest. The tainted fae like to hide their treasures in hollow logs or trumps, so have a closer look at them.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission02[1], 3) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 4 then - if player:getStorageValue(ThreatenedDreams.Mission02.FairiesCounter) == 5 - and player:getStorageValue(ThreatenedDreams.Mission02.DarkMoonMirror) == 1 then + if player:getStorageValue(ThreatenedDreams.Mission02.FairiesCounter) == 5 and player:getStorageValue(ThreatenedDreams.Mission02.DarkMoonMirror) == 1 then npcHandler:say({ - "Thank you, mortal being! Please keep the mirror. I think you may need it soon, because there is another problem. Would you help us again?" + "Thank you, mortal being! Please keep the mirror. I think you may need it soon, because there is another problem. Would you help us again?", }, npc, creature) npcHandler:setTopic(playerId, 5) player:setStorageValue(ThreatenedDreams.Mission02[1], 4) elseif player:getStorageValue(ThreatenedDreams.Mission02[1]) == 4 then npcHandler:say({ - "Please keep the mirror. I think you may need it soon, because there is another problem. Would you help us again?" + "Please keep the mirror. I think you may need it soon, because there is another problem. Would you help us again?", }, npc, creature) npcHandler:setTopic(playerId, 5) else npcHandler:say({ - "Please seek out the tainted fae, retrieve the artefact and free the captured fairies." + "Please seek out the tainted fae, retrieve the artefact and free the captured fairies.", }, npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 5 then npcHandler:say({ "You have to find three vessels that are able to hold three different types of light: starlight, sunlight and moon rays. You have already found the moon mirror but we also need the starlight vial and the sun catcher. ...", - "Ask the mermaid Aurita for the starlight vial and the faun Taegen for the sun catcher." + "Ask the mermaid Aurita for the starlight vial and the faun Taegen for the sun catcher.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission02[1], 5) npcHandler:setTopic(playerId, 0) @@ -169,40 +164,36 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Very good, mortal being! Now you have to catch the respective light and store it in the corresponding vessel. You can gather moon rays by night but this will only work on one special sacred glade on Feyrist. ...", "You can find this glade in the deep forest, east of our village. The starlight must also be gathered by night. There is a rock plateau high in the mountains at the border to Roshamuul where you can catch the starlight in the vial. ...", - "You will recognise the place by the elemental energy shrine there. You have to gather the sunlight by day, of course. There is a beach in the north of Feyrist, shaped like a snake's head. There you may gather Suon's light with the sun catcher." + "You will recognise the place by the elemental energy shrine there. You have to gather the sunlight by day, of course. There is a beach in the north of Feyrist, shaped like a snake's head. There you may gather Suon's light with the sun catcher.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission02[1], 6) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 7 then - if player:getItemCount(25734) >= 1 - and player:getItemCount(25732) >= 1 - and player:getItemCount(25730) >= 1 then + if player:getItemCount(25734) >= 1 and player:getItemCount(25732) >= 1 and player:getItemCount(25730) >= 1 then npcHandler:say({ "That's wonderful! Now you will be able to repair the magical barrier. You have to strengthen the arcane sources that power this mystic shield. There are three different arcane sources: the moon sculptures, the dream bird trees and the sun mosaics. ...", "There are five of each of them and you have to find them all to repair the barrier. Spread the gathered moon rays on the moon sculptures. Pour out the starlight over the dream bird trees and let the sunlight shine on the mosaics. ...", - "If you charge all fifteen arcane sources with the respective light, Feyrist's protection will be ensured again." + "If you charge all fifteen arcane sources with the respective light, Feyrist's protection will be ensured again.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission02[1], 7) npcHandler:setTopic(playerId, 0) else npcHandler:say({ - "You have to catch the respective lights and store it in the corresponding vessel." + "You have to catch the respective lights and store it in the corresponding vessel.", }, npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 8 then - if player:getStorageValue(ThreatenedDreams.Mission02.ChargedMoonMirror) == 0 - and player:getStorageValue(ThreatenedDreams.Mission02.ChargedStarlightVial) == 0 - and player:getStorageValue(ThreatenedDreams.Mission02.ChargedSunCatcher) == 0 then + if player:getStorageValue(ThreatenedDreams.Mission02.ChargedMoonMirror) == 0 and player:getStorageValue(ThreatenedDreams.Mission02.ChargedStarlightVial) == 0 and player:getStorageValue(ThreatenedDreams.Mission02.ChargedSunCatcher) == 0 then npcHandler:say({ - "Thank you, mortal being! The fae will be forever grateful. Take this blossom bag as a little thank-you gift. Such blossoms grow on our trees just once in a decade, so they are quite rare." + "Thank you, mortal being! The fae will be forever grateful. Take this blossom bag as a little thank-you gift. Such blossoms grow on our trees just once in a decade, so they are quite rare.", }, npc, creature) player:addItem(25780, 1) player:setStorageValue(ThreatenedDreams.Mission02[1], 8) npcHandler:setTopic(playerId, 0) else npcHandler:say({ - "If you charge all fifteen arcane sources with the respective light, Feyrist's protection will be ensured again." + "If you charge all fifteen arcane sources with the respective light, Feyrist's protection will be ensured again.", }, npc, creature) npcHandler:setTopic(playerId, 0) end diff --git a/data-otservbr-global/npc/maeryn.lua b/data-otservbr-global/npc/maeryn.lua index 2a2401e2b63..93086feb347 100644 --- a/data-otservbr-global/npc/maeryn.lua +++ b/data-otservbr-global/npc/maeryn.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 101, lookLegs = 97, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -28,7 +28,7 @@ npcConfig.voices = { chance = 50, { text = "Not enough purple nightshade ... not enough liquid silver. *sigh*" }, { text = "You think the full moon is a romantic affair? Think again!" }, - { text = "This place isn't safe. You should leave this island." } + { text = "This place isn't safe. You should leave this island." }, } local keywordHandler = KeywordHandler:new() @@ -59,14 +59,14 @@ npcType.onCloseChannel = function(npc, creature) end local vocations = { - ['sorcerer'] = 0, - ['druid'] = 1, - ['paladin'] = 2, - ['knight'] = { - ['club'] = 3, - ['axe'] = 4, - ['sword'] = 5, - } + ["sorcerer"] = 0, + ["druid"] = 1, + ["paladin"] = 2, + ["knight"] = { + ["club"] = 3, + ["axe"] = 4, + ["sword"] = 5, + }, } local knightChoice = {} @@ -81,68 +81,70 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if MsgContains(message, 'tokens') then - elseif table.contains({ 'dangerous', 'beasts' }, message:lower()) then + if MsgContains(message, "tokens") then + elseif table.contains({ "dangerous", "beasts" }, message:lower()) then npcHandler:say("So you don't know it yet. This island, Grimvale, is affected by were-sickness. Many {pitiful}, who are stricken with the curse, dwell in the {tunnels} and caverns underneath the village and the nearby hurst.", npc, creature) - elseif MsgContains(message, 'pitiful') then + elseif MsgContains(message, "pitiful") then npcHandler:say("Yes, pitiful. For they are savage beasts now who regularly come up from below to attack the village. But once they were inhabitants of Grimvale, before they {changed}.", npc, creature) - elseif MsgContains(message, 'changed') then + elseif MsgContains(message, "changed") then npcHandler:say("Through a bite or even a scratch, you may be infected with the were-sickness. If that happens, there is little {hope} - until the next full moon you'll change into a were-creature, depending on the animal that hurt you.", npc, creature) - elseif MsgContains(message, 'hope') then + elseif MsgContains(message, "hope") then npcHandler:say("There is a plant, the purple nightshade. It blossoms exclusively in the light of the full moon and only underground, where the full moon's light is falling through fissures in the surface. Only this plant's blossoms are able to defeat the {were-sickness}.", npc, creature) - elseif table.contains({ 'were-sickness', 'curse' }, message:lower()) then - npcHandler:say({ "It transforms peaceful villagers into savage beasts. We're not sure how this curse found the way into our small village. But one day it began. At first it befell just a few people. ...", + elseif table.contains({ "were-sickness", "curse" }, message:lower()) then + npcHandler:say({ + "It transforms peaceful villagers into savage beasts. We're not sure how this curse found the way into our small village. But one day it began. At first it befell just a few people. ...", "In a full moon night they changed into bears and wolves, and tore apart their unsuspecting relatives while they were asleep. ...", "Those merely wounded, first thought they were lucky. But then we realised they were changing, too. Later, others assumed the forms of badgers and boars also. ...", - "But that does not mean they were any less wild or dangerous than the others." }, npc, creature) - elseif MsgContains(message, 'tunnels') then - npcHandler:say({ "We are not sure what they are doing down there. We're glad if they stay in the caverns and leave us alone. Only at full moon do they come up and threaten the island's surface and village. ...", - "I, however, have a {hunch} as to why they dwell so deep under the earth." }, npc, creature) - elseif MsgContains(message, 'hunch') then - npcHandler:say({ "There are old legends about a subterranean temple that was once built in this area. Supposedly many {artefacts} are still hidden down there. ...", - "I don't have the time to tell you the entire tale, but there is a book downstairs in which you may read the whole story." }, npc, creature) - elseif MsgContains(message, 'artefacts') then + "But that does not mean they were any less wild or dangerous than the others.", + }, npc, creature) + elseif MsgContains(message, "tunnels") then + npcHandler:say({ "We are not sure what they are doing down there. We're glad if they stay in the caverns and leave us alone. Only at full moon do they come up and threaten the island's surface and village. ...", "I, however, have a {hunch} as to why they dwell so deep under the earth." }, npc, creature) + elseif MsgContains(message, "hunch") then + npcHandler:say({ "There are old legends about a subterranean temple that was once built in this area. Supposedly many {artefacts} are still hidden down there. ...", "I don't have the time to tell you the entire tale, but there is a book downstairs in which you may read the whole story." }, npc, creature) + elseif MsgContains(message, "artefacts") then npcHandler:say("Yes, the story goes that there are ancient artefacts still hidden in the temple ruins, such as helmets in the form of wolven heads, for example. It is said that moonlight crystals are needed to enchant these artefacts.", npc, creature) - elseif MsgContains(message, 'moon') then - npcHandler:say({ "Every month around the 13th, the single Tibian moon will by fully visible to us. That's when the curse hits us hardest. ...", + elseif MsgContains(message, "moon") then + npcHandler:say({ + "Every month around the 13th, the single Tibian moon will by fully visible to us. That's when the curse hits us hardest. ...", "The two days around the 13th, the 12th and the 14th, are considered 'Harvest Moon', those are the best to gather {nightshade}. However, only after it has reached its apex on the 13th, the curse strengthens. ...", "We do not know what happens down there in those tunnels around that time but there is a presence there, we all feel - yet cannot quite fathom. ...", "At full moon, humans transform into wild beasts: wolves, boars, bears and others. Some call it the {curse} of the Full Moon, others think it is a kind of sickness. .", - "During this time, we try to not leave the house, we shut the windows and hope it will pass. The curse will weaken a bit after that but it returns. Every month." }, npc, creature) - elseif MsgContains(message, 'nightshade') then + "During this time, we try to not leave the house, we shut the windows and hope it will pass. The curse will weaken a bit after that but it returns. Every month.", + }, npc, creature) + elseif MsgContains(message, "nightshade") then npcHandler:say("Three of these blossoms should suffice to heal some afflicted persons. But if you bring more I'd be grateful, of course.", npc, creature) - elseif MsgContains(message, 'name') then + elseif MsgContains(message, "name") then npcHandler:say("My name is Maeryn.", npc, creature) - elseif MsgContains(message, 'maeryn') then + elseif MsgContains(message, "maeryn") then npcHandler:say("Yes, that's me.", npc, creature) - elseif MsgContains(message, 'time') then + elseif MsgContains(message, "time") then npcHandler:say("It's exactly " .. getFormattedWorldTime() .. ".", npc, creature) - elseif MsgContains(message, 'job') then + elseif MsgContains(message, "job") then npcHandler:say("I'm the protector of this little village. A bit of a self-proclaimed function, I admit, but someone has to watch over {Grimvale}. It is a {dangerous} place.", npc, creature) - elseif MsgContains(message, 'grimvale') then + elseif MsgContains(message, "grimvale") then npcHandler:say("The small island you are standing on. For a long time it was a peaceful and placid place. But lately it has become more {dangerous}.", npc, creature) - elseif MsgContains(message, 'owin') then + elseif MsgContains(message, "owin") then npcHandler:say("He's an experienced hunter and knows much about the woods, the animals that dwell there, and about the {werewolves}. He's devoted himself to finding out everything there is to know about the {Curse}.", npc, creature) - elseif MsgContains(message, 'werewolves') then + elseif MsgContains(message, "werewolves") then npcHandler:say("Yes, my friend, werewolves. They dwell here on {Grimvale}, threatening our life. The were-sickness transforms peaceful villagers into savage beasts. We're not sure how this curse found its way into our small village. But undoubtedly it did.", npc, creature) - elseif MsgContains(message, 'gladys') then + elseif MsgContains(message, "gladys") then npcHandler:say("She's an old druid. She's been living here on {Grimvale} since she was a little girl, just like me. She's very interested in were-creature body parts. If you find any, I'm sure she will love to trade with you.", npc, creature) - elseif MsgContains(message, 'cornell') then + elseif MsgContains(message, "cornell") then npcHandler:say("He's basically a ferryman nowadays, but I remember when he was our village's leading fisherman. He offers a ferry service between Grimvale and Edron. You must have met him - he sailed you here.", npc, creature) - elseif MsgContains(message, 'werewolf helmet') then + elseif MsgContains(message, "werewolf helmet") then npcHandler:say("You brought the wolven helmet, as i see. Do you want to change something?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say("So, which profession would you give preference to when enchanting the helmet: {knight}, {sorcerer}, {druid} or {paladin}?", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif table.contains({ 'knight', 'sorcerer', 'druid', 'paladin' }, message:lower()) and npcHandler:getTopic(playerId) == 2 then + elseif table.contains({ "knight", "sorcerer", "druid", "paladin" }, message:lower()) and npcHandler:getTopic(playerId) == 2 then local helmet = message:lower() if not vocations[helmet] then return false end - if message:lower() == 'knight' then + if message:lower() == "knight" then npcHandler:say("And what would be your preferred weapon? {Club}, {axe} or {sword}", npc, creature) knightChoice[playerId] = helmet npcHandler:setTopic(playerId, 3) @@ -156,7 +158,7 @@ local function creatureSayCallback(npc, creature, type, message) --end npcHandler:setTopic(playerId, 0) end - elseif table.contains({ 'axe', 'club', 'sword' }, message:lower()) and npcHandler:getTopic(playerId) == 3 then + elseif table.contains({ "axe", "club", "sword" }, message:lower()) and npcHandler:getTopic(playerId) == 3 then local weapontype = message:lower() if not vocations[knightChoice[playerId]][weapontype] then return false diff --git a/data-otservbr-global/npc/malor.lua b/data-otservbr-global/npc/malor.lua index 0c6c4682e7a..b4a1f630d6a 100644 --- a/data-otservbr-global/npc/malor.lua +++ b/data-otservbr-global/npc/malor.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 103 + lookType = 103, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -63,62 +63,62 @@ local function creatureSayCallback(npc, creature, type, message) end local missionProgress = player:getStorageValue(Storage.DjinnWar.EfreetFaction.Mission03) - if MsgContains(message, 'mission') then + if MsgContains(message, "mission") then if player:getStorageValue(Storage.DjinnWar.EfreetFaction.Mission02) == 3 then if missionProgress < 1 then npcHandler:say({ - 'I guess this is the first time I entrust a human with a mission. And such an important mission, too. But well, we live in hard times, and I am a bit short of adequate staff. ...', - 'Besides, Baa\'leal told me you have distinguished yourself well in previous missions, so I think you might be the right person for the job. ...', - 'But think carefully, human, for this mission will bring you close to certain death. Are you prepared to embark on this mission?' + "I guess this is the first time I entrust a human with a mission. And such an important mission, too. But well, we live in hard times, and I am a bit short of adequate staff. ...", + "Besides, Baa'leal told me you have distinguished yourself well in previous missions, so I think you might be the right person for the job. ...", + "But think carefully, human, for this mission will bring you close to certain death. Are you prepared to embark on this mission?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif missionProgress == 1 then - npcHandler:say('You haven\'t finished your final mission yet. Shall I explain it again to you?', npc, creature) + npcHandler:say("You haven't finished your final mission yet. Shall I explain it again to you?", npc, creature) npcHandler:setTopic(playerId, 1) elseif missionProgress == 2 then - npcHandler:say('Have you found Fa\'hradin\'s lamp and placed it in Malor\'s personal chambers?', npc, creature) + npcHandler:say("Have you found Fa'hradin's lamp and placed it in Malor's personal chambers?", npc, creature) npcHandler:setTopic(playerId, 2) else - npcHandler:say('There\'s no mission left for you, friend of the Efreet. However, I have a {task} for you.', npc, creature) + npcHandler:say("There's no mission left for you, friend of the Efreet. However, I have a {task} for you.", npc, creature) end else npcHandler:say({ - 'So you would like to fight for us. Hmm. ...', - 'You show true courage, human, but I will not accept your offer at this point of time.' + "So you would like to fight for us. Hmm. ...", + "You show true courage, human, but I will not accept your offer at this point of time.", }, npc, creature) end elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then npcHandler:say({ - 'Well, listen. We are trying to acquire the ultimate weapon to defeat Gabel: Fa\'hradin\'s lamp! ...', - 'At the moment it is still in the possession of that good old friend of mine, the Orc King, who kindly released me from it. ...', - 'However, for some reason he is not as friendly as he used to be. You better watch out, human, because I don\'t think you will get the lamp without a fight. ...', - 'Once you have found the lamp you must enter Ashta\'daramai again. Sneak into Gabel\'s personal chambers and exchange his sleeping lamp with Fa\'hradin\'s lamp! ...', - 'If you succeed, the war could be over one night later!' + "Well, listen. We are trying to acquire the ultimate weapon to defeat Gabel: Fa'hradin's lamp! ...", + "At the moment it is still in the possession of that good old friend of mine, the Orc King, who kindly released me from it. ...", + "However, for some reason he is not as friendly as he used to be. You better watch out, human, because I don't think you will get the lamp without a fight. ...", + "Once you have found the lamp you must enter Ashta'daramai again. Sneak into Gabel's personal chambers and exchange his sleeping lamp with Fa'hradin's lamp! ...", + "If you succeed, the war could be over one night later!", }, npc, creature) player:setStorageValue(Storage.DjinnWar.EfreetFaction.Mission03, 1) - elseif MsgContains(message, 'no') then - npcHandler:say('Your choice.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Your choice.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then npcHandler:say({ - 'Well well, human. So you really have made it - you have smuggled the modified lamp into Gabel\'s bedroom! ...', - 'I never thought I would say this to a human, but I must confess I am impressed. ...', - 'Perhaps I have underestimated you and your kind after all. ...', - 'I guess I will take this as a lesson to keep in mind when I meet you on the battlefield. ...', - 'But that\'s in the future. For now, I will confine myself to give you the permission to trade with my people whenever you want to. ...', - 'Farewell, human!' + "Well well, human. So you really have made it - you have smuggled the modified lamp into Gabel's bedroom! ...", + "I never thought I would say this to a human, but I must confess I am impressed. ...", + "Perhaps I have underestimated you and your kind after all. ...", + "I guess I will take this as a lesson to keep in mind when I meet you on the battlefield. ...", + "But that's in the future. For now, I will confine myself to give you the permission to trade with my people whenever you want to. ...", + "Farewell, human!", }, npc, creature) player:setStorageValue(Storage.DjinnWar.EfreetFaction.Mission03, 3) player:setStorageValue(Storage.DjinnWar.EfreetFaction.DoorToMaridTerritory, 1) - player:addAchievement('Efreet Ally') + player:addAchievement("Efreet Ally") addEvent(function() releasePlayer(npc, creature) end, 1000) - elseif MsgContains(message, 'no') then - npcHandler:say('Just do it!', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Just do it!", npc, creature) end npcHandler:setTopic(playerId, 0) elseif MsgContains(message, "task") and player:getStorageValue(Storage.DjinnWar.EfreetFaction.Mission03) == 3 then @@ -130,7 +130,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Well well, human. Not bad. I'm not surprised, since you have done acceptably well in the past. So I suppose I can ask you for another thing. ...", "Seek out Fahim the Wise. A name which is utter mockery, since he's one of the stupidest Marid I've ever seen. He hides somewhere in Yalahar, probably afraid to come anywhere near Mal'ouquah. ...", - "I suggest you teach that joke of a djinn a lesson he won't forget." }, npc, creature) + "I suggest you teach that joke of a djinn a lesson he won't forget.", + }, npc, creature) player:setStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.BossKillCount.FahimCount, 0) player:setStorageValue(Storage.KillingInTheNameOf.BlueDjinnTask, 1) else @@ -139,7 +140,8 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.KillingInTheNameOf.BlueDjinnTask) == 2 then npcHandler:say({ "You've met Fahim the Wise? That's good. I'm pretty sure it was easy to give him a nice beating. ...", - "If you should feel like killing blue djinns in our service again, just talk to me about that task." }, npc, creature) + "If you should feel like killing blue djinns in our service again, just talk to me about that task.", + }, npc, creature) player:setStorageValue(Storage.KillingInTheNameOf.BlueDjinnTask, 3) player:addExperience(10000, true) player:addMoney(5000) @@ -159,7 +161,7 @@ end keywordHandler:addGreetKeyword({ "djanni'hah" }, { npcHandler = npcHandler, text = "Greetings, human |PLAYERNAME|. My patience with your kind is limited, so speak quickly and choose your words well." }) npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell, human. When I have taken my rightful place I shall remember those who served me well. Even if they are only humans.") -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Farewell, human.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Farewell, human.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/malunga.lua b/data-otservbr-global/npc/malunga.lua index 2af12d3d78b..3164eb44c0b 100644 --- a/data-otservbr-global/npc/malunga.lua +++ b/data-otservbr-global/npc/malunga.lua @@ -15,17 +15,17 @@ npcConfig.outfit = { lookHead = 95, lookBody = 78, lookLegs = 19, - lookFeet = 0 + lookFeet = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = '' } + { text = "" }, } local keywordHandler = KeywordHandler:new() @@ -131,7 +131,7 @@ npcConfig.shop = { { itemName = "widow's mandibles", clientId = 10411, sell = 110 }, { itemName = "winged tail", clientId = 10313, sell = 800 }, { itemName = "yielocks", clientId = 12805, sell = 600 }, - { itemName = "yielowax", clientId = 12742, sell = 600 } + { itemName = "yielowax", clientId = 12742, sell = 600 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -142,7 +142,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/marcus.lua b/data-otservbr-global/npc/marcus.lua index de3f4514fd8..b189dcaf89b 100644 --- a/data-otservbr-global/npc/marcus.lua +++ b/data-otservbr-global/npc/marcus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 59, lookLegs = 97, lookFeet = 38, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/maria.lua b/data-otservbr-global/npc/maria.lua index b17bf138a96..841513dd48e 100644 --- a/data-otservbr-global/npc/maria.lua +++ b/data-otservbr-global/npc/maria.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 41, lookLegs = 62, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -64,7 +64,7 @@ npcConfig.shop = { { itemName = "mug of water", clientId = 2880, buy = 1, count = 1 }, { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 }, { itemName = "tomato", clientId = 3596, buy = 5 }, - { itemName = "valentine's cake", clientId = 6392, buy = 100 } + { itemName = "valentine's cake", clientId = 6392, buy = 100 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -75,7 +75,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/marina.lua b/data-otservbr-global/npc/marina.lua index d33aa0962e4..5bcdebf2804 100644 --- a/data-otservbr-global/npc/marina.lua +++ b/data-otservbr-global/npc/marina.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 5811 + lookTypeEx = 5811, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -80,9 +80,9 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.TheShatteredIsles.ADjinnInLove) == 4 then npcHandler:say({ "This lovely, exotic Djinn is a true poet. And he is asking me for a date? Excellent. Now I can finaly dump this human pirate. He was growing to be boring more and more with each day ...", - "As a little reward for your efforts I allow you to ride my sea turtles. Just look around at the shores and you will find them." + "As a little reward for your efforts I allow you to ride my sea turtles. Just look around at the shores and you will find them.", }, npc, creature) - player:addAchievement('Matchmaker') + player:addAchievement("Matchmaker") player:setStorageValue(Storage.TheShatteredIsles.ADjinnInLove, 5) player:setStorageValue(Storage.TheShatteredIsles.AccessToLagunaIsland, 1) npcHandler:setTopic(playerId, 0) @@ -95,7 +95,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ " It's funny how easy it is to get humans to say what you want. Now, proving it will be even more fun! ...", "You want me to touch something gooey, so you have to touch something gooey for me too. ...", - "I love honey and I haven't eaten it in a while, so bring me 50 honeycombs and worship my beauty a little more, then we will see." + "I love honey and I haven't eaten it in a while, so bring me 50 honeycombs and worship my beauty a little more, then we will see.", }, npc, creature) player:setStorageValue(Storage.FriendsandTraders.TheMermaidMarina, 1) player:setStorageValue(Storage.FriendsandTraders.DefaultStart, 1) @@ -122,8 +122,8 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'comb' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, I don\'t have a spare comb. I lost my favourite one when diving around in Calassa.' }) -keywordHandler:addKeyword({ 'mermaid comb' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, I don\'t have a spare comb. I lost my favourite one when diving around in Calassa.' }) +keywordHandler:addKeyword({ "comb" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, I don't have a spare comb. I lost my favourite one when diving around in Calassa." }) +keywordHandler:addKeyword({ "mermaid comb" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, I don't have a spare comb. I lost my favourite one when diving around in Calassa." }) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/maris.lua b/data-otservbr-global/npc/maris.lua index d68b5dd18ea..a89bee81021 100644 --- a/data-otservbr-global/npc/maris.lua +++ b/data-otservbr-global/npc/maris.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 51, lookLegs = 85, lookFeet = 126, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -71,20 +71,22 @@ local function creatureSayCallback(npc, creature, type, message) end -- Travel local function addTravelKeyword(keyword, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want go to the ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Alright then!', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you want go to the " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Alright then!", reset = true }) end -addTravelKeyword('fenrock', 100, Position(32563, 31313, 7)) -addTravelKeyword('mistrock', 100, Position(32640, 31439, 7)) +addTravelKeyword("fenrock", 100, Position(32563, 31313, 7)) +addTravelKeyword("mistrock", 100, Position(32640, 31439, 7)) -- Basic -keywordHandler:addKeyword({ 'offer' }, StdModule.say, { npcHandler = npcHandler, text = 'I can take you to {Fenrock} and {Mistrock}!' }) +keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "I can take you to {Fenrock} and {Mistrock}!" }) keywordHandler:addAliasKeyword({ "passage" }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am Maris, Captain of this ship.' }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am Maris, Captain of this ship." }) keywordHandler:addAliasKeyword({ "captain" }) -keywordHandler:addKeyword({ "alori mort" }, StdModule.say, { npcHandler = npcHandler, text = "Stop mumbling and don't bug me." }, function(player) return player:getStorageValue(BloodBrothers.Mission03) == 1 end) +keywordHandler:addKeyword({ "alori mort" }, StdModule.say, { npcHandler = npcHandler, text = "Stop mumbling and don't bug me." }, function(player) + return player:getStorageValue(BloodBrothers.Mission03) == 1 +end) npcHandler:setMessage(MESSAGE_GREET, "I hope you have a good reason to step near my {ship}, |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_FAREWELL, "Yeah, bye or whatever.") diff --git a/data-otservbr-global/npc/maris_fenrock.lua b/data-otservbr-global/npc/maris_fenrock.lua index d16ea7ef1d3..ec41a56befc 100644 --- a/data-otservbr-global/npc/maris_fenrock.lua +++ b/data-otservbr-global/npc/maris_fenrock.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 51, lookLegs = 85, lookFeet = 126, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,22 +52,22 @@ end -- Travel local function addTravelKeyword(keyword, text, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want go to ' .. text .. ' for |TRAVELCOST|?', cost = cost }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Alright then!', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you want go to " .. text .. " for |TRAVELCOST|?", cost = cost }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Alright then!", reset = true }) end -addTravelKeyword('yalahar', 'back to Yalahar', 100, Position(32649, 31292, 6)) -addTravelKeyword('mistrock', 'to the Mistrock', 50, Position(32640, 31439, 7)) +addTravelKeyword("yalahar", "back to Yalahar", 100, Position(32649, 31292, 6)) +addTravelKeyword("mistrock", "to the Mistrock", 50, Position(32640, 31439, 7)) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32561, 31312, 7) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32561, 31312, 7) } }) -- Basic -keywordHandler:addKeyword({ 'offer' }, StdModule.say, { npcHandler = npcHandler, text = 'I can take you to {Yalahar} or {Mistrock}!' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I can take you to {Yalahar} or {Mistrock}!' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am Maris, Captain of this ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am Maris, Captain of this ship.' }) +keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "I can take you to {Yalahar} or {Mistrock}!" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can take you to {Yalahar} or {Mistrock}!" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am Maris, Captain of this ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am Maris, Captain of this ship." }) npcHandler:setMessage(MESSAGE_GREET, "Oh, you're still alive. Hello, |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_FAREWELL, "Yeah, bye or whatever.") diff --git a/data-otservbr-global/npc/maris_mistrock.lua b/data-otservbr-global/npc/maris_mistrock.lua index bc60237c431..f34e82b85b0 100644 --- a/data-otservbr-global/npc/maris_mistrock.lua +++ b/data-otservbr-global/npc/maris_mistrock.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 51, lookLegs = 85, lookFeet = 126, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,30 +52,39 @@ end -- Travel local function addTravelKeyword(keyword, text, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want go to ' .. text .. ' for |TRAVELCOST|?', cost = cost }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Alright then!', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you want go to " .. text .. " for |TRAVELCOST|?", cost = cost }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Alright then!", reset = true }) end -addTravelKeyword('yalahar', 'back to Yalahar', 100, Position(32649, 31292, 6)) -addTravelKeyword('fenrock', 'to the Fenrock', 100, Position(32563, 31313, 7)) +addTravelKeyword("yalahar", "back to Yalahar", 100, Position(32649, 31292, 6)) +addTravelKeyword("fenrock", "to the Fenrock", 100, Position(32563, 31313, 7)) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32634, 31437, 7), Position(32634, 31438, 7) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(32634, 31437, 7), Position(32634, 31438, 7) } }) -- Basic -keywordHandler:addKeyword({ 'mistrock' }, StdModule.say, { - npcHandler = npcHandler, - text = { - "Do you smell this? It's the smell of fire... the fire of a forge. Many people searched this rock here for a hidden path, but they haven't found anything. ...", - "I'd search on Fenrock if I were you. Even though there's snow on the surface, it's still warm underground. There are often caves under fresh lava streams." - } -}, nil, function(player) if player:getStorageValue(Storage.HiddenCityOfBeregar.WayToBeregar) ~= 1 then player:setStorageValue(Storage.HiddenCityOfBeregar.WayToBeregar, 1) end end +keywordHandler:addKeyword( + { "mistrock" }, + StdModule.say, + { + npcHandler = npcHandler, + text = { + "Do you smell this? It's the smell of fire... the fire of a forge. Many people searched this rock here for a hidden path, but they haven't found anything. ...", + "I'd search on Fenrock if I were you. Even though there's snow on the surface, it's still warm underground. There are often caves under fresh lava streams.", + }, + }, + nil, + function(player) + if player:getStorageValue(Storage.HiddenCityOfBeregar.WayToBeregar) ~= 1 then + player:setStorageValue(Storage.HiddenCityOfBeregar.WayToBeregar, 1) + end + end ) -keywordHandler:addKeyword({ 'offer' }, StdModule.say, { npcHandler = npcHandler, text = 'I can take you to {Yalahar} or {Fenrock}!' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I can take you to {Yalahar} or {Fenrock}!' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am Maris, Captain of this ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am Maris, Captain of this ship.' }) +keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "I can take you to {Yalahar} or {Fenrock}!" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can take you to {Yalahar} or {Fenrock}!" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am Maris, Captain of this ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am Maris, Captain of this ship." }) npcHandler:setMessage(MESSAGE_GREET, "Oh, you're still alive. Hello, |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_FAREWELL, "Yeah, bye or whatever.") diff --git a/data-otservbr-global/npc/maritima.lua b/data-otservbr-global/npc/maritima.lua index 18113da813c..80de0a82e31 100644 --- a/data-otservbr-global/npc/maritima.lua +++ b/data-otservbr-global/npc/maritima.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 5811 + lookTypeEx = 5811, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,11 +53,11 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "quara")) then - if (player:getStorageValue(Storage.InServiceofYalahar.Questline) == 41 and player:getStorageValue(Storage.InServiceofYalahar.QuaraInky) < 1 and player:getStorageValue(Storage.InServiceofYalahar.QuaraSplasher) < 1 and player:getStorageValue(Storage.InServiceofYalahar.QuaraSharptooth) < 1) then + if MsgContains(message, "quara") then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 41 and player:getStorageValue(Storage.InServiceofYalahar.QuaraInky) < 1 and player:getStorageValue(Storage.InServiceofYalahar.QuaraSplasher) < 1 and player:getStorageValue(Storage.InServiceofYalahar.QuaraSharptooth) < 1 then npcHandler:say({ "The quara in this area are a strange race that seeks for inner perfection rather than physical one. ...", - "However, recently the quara got mad because their area is flooded with toxic sewage from the city. If you could inform someone about it, they might stop the sewage and the quara could return to their own business." + "However, recently the quara got mad because their area is flooded with toxic sewage from the city. If you could inform someone about it, they might stop the sewage and the quara could return to their own business.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 42) player:setStorageValue(Storage.InServiceofYalahar.Mission07, 3) -- StorageValue for Questlog "Mission 07: A Fishy Mission" diff --git a/data-otservbr-global/npc/markwin.lua b/data-otservbr-global/npc/markwin.lua index f33096a1aee..b70437dddae 100644 --- a/data-otservbr-global/npc/markwin.lua +++ b/data-otservbr-global/npc/markwin.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 23 + lookType = 23, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -91,10 +91,9 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) end end - elseif MsgContains(message, 'cookie') then - if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 - and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Markwin) ~= 1 then - npcHandler:say('You bring me ... a cookie???', npc, creature) + elseif MsgContains(message, "cookie") then + if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Markwin) ~= 1 then + npcHandler:say("You bring me ... a cookie???", npc, creature) npcHandler:setTopic(playerId, 2) end elseif MsgContains(message, "yes") then @@ -105,18 +104,18 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then if not player:removeItem(130, 1) then - npcHandler:say('You have no cookie that I\'d like.', npc, creature) + npcHandler:say("You have no cookie that I'd like.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:setStorageValue(Storage.WhatAFoolish.CookieDelivery.Markwin, 1) if player:getCookiesDelivered() == 10 then - player:addAchievement('Allow Cookies?') + player:addAchievement("Allow Cookies?") end npc:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) - npcHandler:say('I understand this as a peace-offering, human ... UNGH ... THIS IS AN OUTRAGE! THIS MEANS WAR!!!', npc, creature) + npcHandler:say("I understand this as a peace-offering, human ... UNGH ... THIS IS AN OUTRAGE! THIS MEANS WAR!!!", npc, creature) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) end diff --git a/data-otservbr-global/npc/marlene.lua b/data-otservbr-global/npc/marlene.lua index 4f9e8b29973..6b4f11d8e6a 100644 --- a/data-otservbr-global/npc/marlene.lua +++ b/data-otservbr-global/npc/marlene.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 56, lookLegs = 54, lookFeet = 37, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,11 +50,11 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "My name is Marlene." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I'm Bruno's wife. Besides: Have you already heard the latest news about the seamonster, Aneus, or the rumours in this area?" }) -keywordHandler:addKeyword({ 'bruno' }, StdModule.say, { npcHandler = npcHandler, text = "Bruno is a wonderful husband. But he is seldom at home. *looks a little bit sad*" }) -keywordHandler:addKeyword({ 'graubart' }, StdModule.say, { npcHandler = npcHandler, text = "Ah, old Graubart. A very nice person. But he is strange. He always is busy when I want to talk to him. *lost in thoughts*" }) -keywordHandler:addKeyword({ 'thank you' }, StdModule.say, { npcHandler = npcHandler, text = "My pleasure, I always enjoy sharing interesting stories." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Marlene." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm Bruno's wife. Besides: Have you already heard the latest news about the seamonster, Aneus, or the rumours in this area?" }) +keywordHandler:addKeyword({ "bruno" }, StdModule.say, { npcHandler = npcHandler, text = "Bruno is a wonderful husband. But he is seldom at home. *looks a little bit sad*" }) +keywordHandler:addKeyword({ "graubart" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, old Graubart. A very nice person. But he is strange. He always is busy when I want to talk to him. *lost in thoughts*" }) +keywordHandler:addKeyword({ "thank you" }, StdModule.say, { npcHandler = npcHandler, text = "My pleasure, I always enjoy sharing interesting stories." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -66,31 +66,31 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "seamonster") then npcHandler:say({ - 'Only some days ago I was at the docks late in the night and was looking for my husband\'s ship when suddenly a known noise appeared near the docks. ...', - 'I know this noise very well because it is the noise of a ship sailing very fast. I searched the horizon in hope to see my husbands ship. ...', - 'But instead of a ship I saw a huge shape far away. It was like a big snake swimming in the sea. ...', - 'I couldn\'t see it clearly because of the fog but I think I saw two lava-red eyes glowing in the nightly fog. ...', - 'I ran into the house and hoped that my husband would arrive safely from fishing. And after one hour he finally arrived. ...', - 'I told him about what I saw but he didn\'t believe me because he never saw anything like that in all the years before. But you believe me right? Go and convince yourself. ...', - 'Just go to the docks at exactly midnight and be very quiet. Look at the horizon and maybe you will hear and see it, too!' + "Only some days ago I was at the docks late in the night and was looking for my husband's ship when suddenly a known noise appeared near the docks. ...", + "I know this noise very well because it is the noise of a ship sailing very fast. I searched the horizon in hope to see my husbands ship. ...", + "But instead of a ship I saw a huge shape far away. It was like a big snake swimming in the sea. ...", + "I couldn't see it clearly because of the fog but I think I saw two lava-red eyes glowing in the nightly fog. ...", + "I ran into the house and hoped that my husband would arrive safely from fishing. And after one hour he finally arrived. ...", + "I told him about what I saw but he didn't believe me because he never saw anything like that in all the years before. But you believe me right? Go and convince yourself. ...", + "Just go to the docks at exactly midnight and be very quiet. Look at the horizon and maybe you will hear and see it, too!", }, npc, creature) elseif MsgContains(message, "aneus") then npcHandler:say({ - 'A very nice person. He has a great story to tell with big fights and much magic. Just ask him for his story. ...', - 'I heard that he came from far, far away. He must have seen soooo many countries, cities, different races. ...', - 'He must have collected so much wisdom. *sigh* I wish I could also travel around the world. ...', - 'I would try to visit as many cities and meet as many beings as possible. Who knows what strange races I will meet? ...', - 'Maybe I can also find a lovely new dress for me. I have been looking for one for months now but never found a good one. Maybe... *keeps on babbling*' + "A very nice person. He has a great story to tell with big fights and much magic. Just ask him for his story. ...", + "I heard that he came from far, far away. He must have seen soooo many countries, cities, different races. ...", + "He must have collected so much wisdom. *sigh* I wish I could also travel around the world. ...", + "I would try to visit as many cities and meet as many beings as possible. Who knows what strange races I will meet? ...", + "Maybe I can also find a lovely new dress for me. I have been looking for one for months now but never found a good one. Maybe... *keeps on babbling*", }, npc, creature) elseif MsgContains(message, "rumours") then npcHandler:say({ - 'Well, I heard about evil beings living in a dungeon below us. So once I tried to find them and went down the hole far to the southwest. ...', - 'I\'m pretty curious, you know. *smiles* So I took the coat of invisibility from my husband and went down there. At first I only found some spiders, snakes, and wolves. ...', - 'But after some time I found a ladder to a deeper level of the dungeon but I didn\'t dare to go down there because I heard many voices. ...', - 'The voices were very strange and I ran back to my house because they were very loud and very angry. I hope they will never get the idea to attack the surface beings. ...', - 'I heard they are almighty and have incredible powers! I already packed our stuff for an emergency escape. You never know. Maybe they plan to conquer the whole world. ...', - 'I bet that they look very ugly. Most mighty monsters look very ugly. Hmm, you seem to be very strong. Maybe you can go deeper and explore the area. But be careful, please. ...', - 'I heard that they can kill humans with only one hit! And that they have magic abilities twenty times stronger than the mightiest sorcerer in our world.' + "Well, I heard about evil beings living in a dungeon below us. So once I tried to find them and went down the hole far to the southwest. ...", + "I'm pretty curious, you know. *smiles* So I took the coat of invisibility from my husband and went down there. At first I only found some spiders, snakes, and wolves. ...", + "But after some time I found a ladder to a deeper level of the dungeon but I didn't dare to go down there because I heard many voices. ...", + "The voices were very strange and I ran back to my house because they were very loud and very angry. I hope they will never get the idea to attack the surface beings. ...", + "I heard they are almighty and have incredible powers! I already packed our stuff for an emergency escape. You never know. Maybe they plan to conquer the whole world. ...", + "I bet that they look very ugly. Most mighty monsters look very ugly. Hmm, you seem to be very strong. Maybe you can go deeper and explore the area. But be careful, please. ...", + "I heard that they can kill humans with only one hit! And that they have magic abilities twenty times stronger than the mightiest sorcerer in our world.", }, npc, creature) end return true diff --git a/data-otservbr-global/npc/maro.lua b/data-otservbr-global/npc/maro.lua index 20d5ced4f50..80730a55a0c 100644 --- a/data-otservbr-global/npc/maro.lua +++ b/data-otservbr-global/npc/maro.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 25 + lookType = 25, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -82,7 +82,7 @@ npcConfig.shop = { { itemName = "watering can", clientId = 650, buy = 50 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, { itemName = "wooden spoon", clientId = 3470, buy = 5 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -93,7 +93,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/marvik.lua b/data-otservbr-global/npc/marvik.lua index 8daa2ed1590..45e0614dbd5 100644 --- a/data-otservbr-global/npc/marvik.lua +++ b/data-otservbr-global/npc/marvik.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 101, lookLegs = 120, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/marvin.lua b/data-otservbr-global/npc/marvin.lua index 95d2517841a..f5cd7fe16c2 100644 --- a/data-otservbr-global/npc/marvin.lua +++ b/data-otservbr-global/npc/marvin.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 109, lookLegs = 14, lookFeet = 57, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,32 +54,28 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (MsgContains(message, "funding")) then - if (player:setStorageValue(Storage.DarkTrails.Mission07) == 1) then - npcHandler:say( - { - "So far you earned x votes. Each single vote can be spent on a different topic or you're also able to cast all your votes on one voting. ...", - "Well in the topic b you have the possibility to vote for the funding of the {archives}, import of bug {milk} or street {repairs}." - }, - npc, - creature - ) + if MsgContains(message, "funding") then + if player:setStorageValue(Storage.DarkTrails.Mission07) == 1 then + npcHandler:say({ + "So far you earned x votes. Each single vote can be spent on a different topic or you're also able to cast all your votes on one voting. ...", + "Well in the topic b you have the possibility to vote for the funding of the {archives}, import of bug {milk} or street {repairs}.", + }, npc, creature) npcHandler:setTopic(playerId, 1) else npcHandler:say("You cant vote yet.", npc, creature) end - elseif (MsgContains(message, "archives")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "archives") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say("How many of your x votes do you want to cast?", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif (MsgContains(message, "1")) then - if (npcHandler:getTopic(playerId) == 2) then + elseif MsgContains(message, "1") then + if npcHandler:getTopic(playerId) == 2 then npcHandler:say("Did I get that right: You want to cast 1 of your votes on funding the {archives?}", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 3) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 3 then player:setStorageValue(Storage.DarkTrails.Mission08, 1) npcHandler:say("Thanks, you successfully cast your vote. Feel free to continue gathering votes by helping the city! Farewell.", npc, creature) npcHandler:setTopic(playerId, 0) diff --git a/data-otservbr-global/npc/maryza.lua b/data-otservbr-global/npc/maryza.lua index f4d36208b81..0e5eddebaf9 100644 --- a/data-otservbr-global/npc/maryza.lua +++ b/data-otservbr-global/npc/maryza.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 41, lookBody = 51, lookLegs = 70, - lookFeet = 95 + lookFeet = 95, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,26 +57,25 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'cookbook') then + if MsgContains(message, "cookbook") then if player:getStorageValue(Storage.MaryzaCookbook) ~= 1 then - npcHandler:say('The cookbook of the famous dwarven kitchen. You\'re lucky. I have a few copies on sale. Do you like one for 150 gold?', npc, creature) + npcHandler:say("The cookbook of the famous dwarven kitchen. You're lucky. I have a few copies on sale. Do you like one for 150 gold?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('I\'m sorry but I sell only one copy to each customer. Otherwise they would have been sold out a long time ago.', npc, creature) + npcHandler:say("I'm sorry but I sell only one copy to each customer. Otherwise they would have been sold out a long time ago.", npc, creature) end elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not player:removeMoneyBank(150) then - npcHandler:say('No gold, no sale, that\'s it.', npc, creature) + npcHandler:say("No gold, no sale, that's it.", npc, creature) return true end - npcHandler:say('Here you are. Happy cooking!', npc, creature) + npcHandler:say("Here you are. Happy cooking!", npc, creature) player:setStorageValue(Storage.MaryzaCookbook, 1) player:addItem(3234, 1) - elseif MsgContains(message, 'no') then - npcHandler:say('I have but a few copies, anyway.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("I have but a few copies, anyway.", npc, creature) end end return true @@ -85,7 +84,7 @@ end -- Greeting message keywordHandler:addGreetKeyword({ "maryza" }, { npcHandler = npcHandler, text = "Welcome to the Jolly Axeman, |PLAYERNAME|. Have a good time and eat some food!" }) -npcHandler:setMessage(MESSAGE_GREET, 'Welcome to the Jolly Axeman, |PLAYERNAME|. Have a good time and eat some food!') +npcHandler:setMessage(MESSAGE_GREET, "Welcome to the Jolly Axeman, |PLAYERNAME|. Have a good time and eat some food!") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) @@ -98,7 +97,7 @@ npcConfig.shop = { { itemName = "cookie", clientId = 3598, buy = 2 }, { itemName = "ham", clientId = 3582, buy = 8 }, { itemName = "meat", clientId = 3577, buy = 5 }, - { itemName = "roll", clientId = 3601, buy = 2 } + { itemName = "roll", clientId = 3601, buy = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -109,7 +108,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/maun.lua b/data-otservbr-global/npc/maun.lua index 37fe7fb5fa3..63a84550378 100644 --- a/data-otservbr-global/npc/maun.lua +++ b/data-otservbr-global/npc/maun.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 21, lookFeet = 20, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -126,7 +126,7 @@ npcConfig.shop = { { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "wild growth rune", clientId = 3156, buy = 160 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -137,7 +137,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/mazarius.lua b/data-otservbr-global/npc/mazarius.lua index b8b4554d084..a44e01e893f 100644 --- a/data-otservbr-global/npc/mazarius.lua +++ b/data-otservbr-global/npc/mazarius.lua @@ -17,11 +17,11 @@ npcConfig.outfit = { lookLegs = 19, lookFeet = 38, lookAddons = 1, - lookMount = 0 + lookMount = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -93,7 +93,7 @@ local function creatureSayCallback(npc, creature, type, message) player:addItem(22182, 1) player:setStorageValue(Storage.FerumbrasAscension.Access, 1) else - npcHandler:say("You don\'t have the demonic essences, back here when you get it.", npc, creature) + npcHandler:say("You don't have the demonic essences, back here when you get it.", npc, creature) npcHandler:removeInteraction(npc, creature) end elseif MsgContains(message, "godbreaker") then @@ -132,7 +132,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "kazordoon") then npcHandler:say("The dwarves are leftovers from a time long gone by. They have outlived their usefulness to the gods and seem to have come to terms with that. ...", npc, creature) npcHandler:say("They are as unchanging as rock and no greatness awaits them any more. They missed their chance, if they ever had any.", npc, creature) - elseif MsgContains(message, "ab\'dendriel") then + elseif MsgContains(message, "ab'dendriel") then npcHandler:say("The elves are like lost children. Their potential might be great, but they lack focus and dedication to truly improve. If their myths are true, some of the more early elves might have accomplished ascension. ...", npc, creature) npcHandler:say("Yet even if hints strongly suggest those stories are true, the sheer inaction of those assumedly ascended beings is disturbing. Perhaps what those legendary elves achieved was something completely different.", npc, creature) elseif MsgContains(message, "edron") then diff --git a/data-otservbr-global/npc/mehkesh.lua b/data-otservbr-global/npc/mehkesh.lua index f61eeececd8..53fe483d739 100644 --- a/data-otservbr-global/npc/mehkesh.lua +++ b/data-otservbr-global/npc/mehkesh.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 92, lookLegs = 113, lookFeet = 20, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Potions brewed by the leading alchemists of the land!' } + { text = "Potions brewed by the leading alchemists of the land!" }, } local keywordHandler = KeywordHandler:new() @@ -78,7 +78,7 @@ npcConfig.shop = { { itemName = "ultimate health potion", clientId = 7643, buy = 379 }, { itemName = "ultimate mana potion", clientId = 23373, buy = 438 }, { itemName = "ultimate spirit potion", clientId = 23374, buy = 438 }, - { itemName = "vial", clientId = 2874, sell = 5 } + { itemName = "vial", clientId = 2874, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -89,7 +89,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/melchior.lua b/data-otservbr-global/npc/melchior.lua index 4f7ca5efdd9..ba4713a9e7f 100644 --- a/data-otservbr-global/npc/melchior.lua +++ b/data-otservbr-global/npc/melchior.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 25, lookLegs = 59, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,7 +52,7 @@ end local function greetCallback(npc, creature) local playerId = creature:getId() - npcHandler:setMessage(MESSAGE_GREET, Player(creature):getSex() == PLAYERSEX_FEMALE and 'Welcome, |PLAYERNAME|! The lovely sound of your voice shines like a beam of light through my solitary darkness!' or 'Greetings, |PLAYERNAME|. I do not see your face, but I can read a thousand things in your voice!') + npcHandler:setMessage(MESSAGE_GREET, Player(creature):getSex() == PLAYERSEX_FEMALE and "Welcome, |PLAYERNAME|! The lovely sound of your voice shines like a beam of light through my solitary darkness!" or "Greetings, |PLAYERNAME|. I do not see your face, but I can read a thousand things in your voice!") return true end @@ -64,13 +64,13 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'greeting') then + if MsgContains(message, "greeting") then if player:getStorageValue(Storage.DjinnWar.Faction.Greeting) ~= 0 then npcHandler:say({ - 'The djinns have an ancient code of honour. This code includes a special concept of hospitality. Anybody who utters the word of greeting must not be attacked even if he is an enemy. Well, at least that is what the code says. ...', - 'I have found out, though, that this does not work at all times. There is no point to say the word of greeting to an enraged djinn. ...', - 'I can tell you the word of greeting if you\'re interested. It is {DJANNI\'HAH}. Remember this word well, stranger. It might save your life one day. ...', - 'And keep in mind that you must choose sides in this conflict. You can only follow the Efreet or the Marid - once you have made your choice there is no way back. I know from experience that djinn do not tolerate double-crossing.' + "The djinns have an ancient code of honour. This code includes a special concept of hospitality. Anybody who utters the word of greeting must not be attacked even if he is an enemy. Well, at least that is what the code says. ...", + "I have found out, though, that this does not work at all times. There is no point to say the word of greeting to an enraged djinn. ...", + "I can tell you the word of greeting if you're interested. It is {DJANNI'HAH}. Remember this word well, stranger. It might save your life one day. ...", + "And keep in mind that you must choose sides in this conflict. You can only follow the Efreet or the Marid - once you have made your choice there is no way back. I know from experience that djinn do not tolerate double-crossing.", }, npc, creature) if player:getStorageValue(Storage.Factions) ~= 1 then @@ -83,8 +83,8 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_FAREWELL, 'Farewell, stranger. May Uman the Wise guide your steps in this treacherous land.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Farewell, stranger. May Uman the Wise guide your steps in this treacherous land.') +npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell, stranger. May Uman the Wise guide your steps in this treacherous land.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Farewell, stranger. May Uman the Wise guide your steps in this treacherous land.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/melfar.lua b/data-otservbr-global/npc/melfar.lua index 5763c46b7bf..3a9fad93f84 100644 --- a/data-otservbr-global/npc/melfar.lua +++ b/data-otservbr-global/npc/melfar.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 69 + lookType = 69, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { { itemName = "broken crossbow", clientId = 11451, sell = 30 }, @@ -23,7 +23,7 @@ npcConfig.shop = { { itemName = "minotaur horn", clientId = 11472, sell = 75 }, { itemName = "piece of archer armor", clientId = 11483, sell = 20 }, { itemName = "piece of warrior armor", clientId = 11482, sell = 50 }, - { itemName = "purple robe", clientId = 11473, sell = 110 } + { itemName = "purple robe", clientId = 11473, sell = 110 }, } -- On buy npc shop message @@ -35,8 +35,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -66,9 +65,9 @@ npcType.onCloseChannel = function(npc, creature) end local config = { - { position = Position(32474, 31947, 7), type = 2, description = 'Tree 1' }, - { position = Position(32515, 31927, 7), type = 2, description = 'Tree 2' }, - { position = Position(32458, 31997, 7), type = 2, description = 'Tree 3' } + { position = Position(32474, 31947, 7), type = 2, description = "Tree 1" }, + { position = Position(32515, 31927, 7), type = 2, description = "Tree 2" }, + { position = Position(32458, 31997, 7), type = 2, description = "Tree 3" }, } local TheNewFrontier = Storage.Quest.U8_54.TheNewFrontier @@ -80,31 +79,29 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "mission")) then - if (player:getStorageValue(TheNewFrontier.Questline) == 4) then + if MsgContains(message, "mission") then + if player:getStorageValue(TheNewFrontier.Questline) == 4 then npcHandler:say({ "Ha! Men and wood you say? Well, I might be able to relocate some of our miners to the base. Acquiring wood is an entirely different matter though. ... ", "I can't spare any men for woodcutting right now but I have an unusual idea that might help. ... ", "As you might know, this area is troubled by giant beavers. Once a year, the miners decide to have some fun, so they lure the beavers and jump on them to have some sort of rodeo. ... ", "However, I happen to have some beaver bait left from the last year's competition. ... ", "If you place it on trees on some strategic locations, we could let the beavers do the work and later on, I'll send men to get the fallen trees. ... ", - "Does this sound like something you can handle? " + "Does this sound like something you can handle? ", }, npc, creature) npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(TheNewFrontier.Mission02.Beaver1) == 1 - and player:getStorageValue(TheNewFrontier.Mission02.Beaver2) == 1 - and player:getStorageValue(TheNewFrontier.Mission02.Beaver3) == 1) then + elseif player:getStorageValue(TheNewFrontier.Mission02.Beaver1) == 1 and player:getStorageValue(TheNewFrontier.Mission02.Beaver2) == 1 and player:getStorageValue(TheNewFrontier.Mission02.Beaver3) == 1 then npcHandler:say("Yes, I can hear them even from here. It has to be a legion of beavers! I'll send the men to get the wood as soon as their gnawing frenzy has settled! You can report to Ongulf that men and wood will be on their way!", npc, creature) player:setStorageValue(TheNewFrontier.Questline, 6) player:setStorageValue(TheNewFrontier.Mission02[1], 3) --Questlog, The New Frontier Quest "Mission 02: From Kazordoon With Love" else npcHandler:say("If you place the beaver bait on trees on some strategic locations, we could let the beavers do the work and later on, I'll send men to get the fallen trees.", npc, creature) end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "So take this beaver bait. It will work best on dwarf trees. I'll mark the three trees on your map. Here .. here .. and here! So now mark those trees with the beaver bait. ... ", - "If you're unlucky enough to meet one of the giant beavers, try to stay calm. Don't do any hectic moves, don't yell, don't draw any weapon, and if you should carry anything wooden on you, throw it away as far as you can. " + "If you're unlucky enough to meet one of the giant beavers, try to stay calm. Don't do any hectic moves, don't yell, don't draw any weapon, and if you should carry anything wooden on you, throw it away as far as you can. ", }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 5) player:setStorageValue(TheNewFrontier.Mission02[1], 2) --Questlog, The New Frontier Quest "Mission 02: From Kazordoon With Love" diff --git a/data-otservbr-global/npc/melian.lua b/data-otservbr-global/npc/melian.lua index 7698e9cf608..c8352408e10 100644 --- a/data-otservbr-global/npc/melian.lua +++ b/data-otservbr-global/npc/melian.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 22, lookLegs = 45, lookFeet = 57, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,44 +52,44 @@ end -- Travel local function addTravelKeyword(keyword, text, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a ride to ' .. text .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'You shouldn\'t miss the experience.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a ride to " .. text .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) end -addTravelKeyword('darashia', 'Darashia on Darama', 60, Position(33270, 32441, 6)) -addTravelKeyword('darama', 'Darashia on Darama', 60, Position(33270, 32441, 6)) -addTravelKeyword('svargrond', 'Svargrond', 60, Position(32253, 31097, 4)) -addTravelKeyword('femor hills', 'the Femor Hills', 60, Position(32536, 31837, 4)) -addTravelKeyword('hills', 'the Femor Hills', 60, Position(32536, 31837, 4)) -addTravelKeyword('edron', 'Edron', 60, Position(33193, 31784, 3)) -addTravelKeyword('kazordoon', 'Kazordoon', 70, Position(32588, 31941, 0)) -addTravelKeyword('kazor', 'Kazordoon', 70, Position(32588, 31941, 0)) -addTravelKeyword('issavi', 'Issavi', 100, Position(33957, 31515, 0)) -addTravelKeyword('marapur', 'Marapur', 70, Position(33805, 32767, 2)) +addTravelKeyword("darashia", "Darashia on Darama", 60, Position(33270, 32441, 6)) +addTravelKeyword("darama", "Darashia on Darama", 60, Position(33270, 32441, 6)) +addTravelKeyword("svargrond", "Svargrond", 60, Position(32253, 31097, 4)) +addTravelKeyword("femor hills", "the Femor Hills", 60, Position(32536, 31837, 4)) +addTravelKeyword("hills", "the Femor Hills", 60, Position(32536, 31837, 4)) +addTravelKeyword("edron", "Edron", 60, Position(33193, 31784, 3)) +addTravelKeyword("kazordoon", "Kazordoon", 70, Position(32588, 31941, 0)) +addTravelKeyword("kazor", "Kazordoon", 70, Position(32588, 31941, 0)) +addTravelKeyword("issavi", "Issavi", 100, Position(33957, 31515, 0)) +addTravelKeyword("marapur", "Marapur", 70, Position(33805, 32767, 2)) -- Basic -keywordHandler:addKeyword({ 'lizard' }, StdModule.say, { npcHandler = npcHandler, text = 'There are many of them to the north and south of this continent. I had thought they only existed on Tiquanda, but I was mistaken.' }) -keywordHandler:addKeyword({ 'zao' }, StdModule.say, { npcHandler = npcHandler, text = 'What a strange and bizarre continent. I\'m glad my landing place is far away from all the mess I\'ve seen from above.' }) -keywordHandler:addKeyword({ 'fly' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, {Edron}, {Issavi}, {Svargrond}, {Kazordoon}, {Femor Hills} or to {Marapur} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'service' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a carpet pilot. I can fly you to the {Femor Hills}, to {Kazordoon}, {Svargrond}, {Edron}, {Darashia}, {Issavi} or {Marapur}.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a carpet pilot. I can fly you to the {Femor Hills}, to {Kazordoon}, {Svargrond}, {Edron}, {Darashia}, {Issavi} or {Marapur}.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'Melian at your service.' }) -keywordHandler:addKeyword({ 'mountain' }, StdModule.say, { npcHandler = npcHandler, text = 'These mountains don\'t look friendly. I prefer not staying long inbetween my carpet trips.' }) -keywordHandler:addKeyword({ 'carpet' }, StdModule.say, { npcHandler = npcHandler, text = 'Only licensed carpet pilots are allowed to fly those.' }) -keywordHandler:addKeyword({ 'orc' }, StdModule.say, { npcHandler = npcHandler, text = 'There\'s so much green stuff down there that I\'m not sure whether there are any, but yes, might be, might be.' }) -keywordHandler:addKeyword({ 'dwarf' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, dwarves and their steamboat technology are well and good, but nothing beats flying on a carpet.' }) -keywordHandler:addKeyword({ 'steamboat' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, dwarves and their steamboat technology are well and good, but nothing beats flying on a carpet.' }) -keywordHandler:addKeyword({ 'farmine' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s the name of that dwarven base as far as I know. Got a bit of a pessimistic ring to it if you ask me. Sounds to me like they\'re starving.' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia} on {Darama}, to {Kazordoon}, to {Svargrond} on Hrodmir, to {Edron}, to the {Femor Hills}, to {Issavi} or to {Marapur} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia} on {Darama}, to {Kazordoon}, to {Svargrond} on Hrodmir, to {Edron}, to the {Femor Hills}, to {Issavi} or to {Marapur} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'ride' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia} on {Darama}, to {Kazordoon}, to {Svargrond} on Hrodmir, to {Edron}, to the {Femor Hills}, to {Issavi} or to {Marapur} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'trip' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia} on {Darama}, to {Kazordoon}, to {Svargrond} on Hrodmir, to {Edron}, to the {Femor Hills}, to {Issavi} or to {Marapur} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'transport' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia} on {Darama}, to {Kazordoon}, to {Svargrond} on Hrodmir, to {Edron}, to the {Femor Hills}, to {Issavi} or to {Marapur} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'human' }, StdModule.say, { npcHandler = npcHandler, text = 'The only humans I\'ve seen on this continent are those that come up to my carpet.' }) -keywordHandler:addKeyword({ 'continent' }, StdModule.say, { npcHandler = npcHandler, text = 'What a strange and bizarre continent. I\'m glad my landing place is far away from all the mess I\'ve seen from above.' }) -keywordHandler:addKeyword({ 'femur' }, StdModule.say, { npcHandler = npcHandler, text = 'You are probably talking about the {FEMOR hills}.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s 2:55 pm right now. I think I\'m five minutes late in my schedule.' }) +keywordHandler:addKeyword({ "lizard" }, StdModule.say, { npcHandler = npcHandler, text = "There are many of them to the north and south of this continent. I had thought they only existed on Tiquanda, but I was mistaken." }) +keywordHandler:addKeyword({ "zao" }, StdModule.say, { npcHandler = npcHandler, text = "What a strange and bizarre continent. I'm glad my landing place is far away from all the mess I've seen from above." }) +keywordHandler:addKeyword({ "fly" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, {Edron}, {Issavi}, {Svargrond}, {Kazordoon}, {Femor Hills} or to {Marapur} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "service" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a carpet pilot. I can fly you to the {Femor Hills}, to {Kazordoon}, {Svargrond}, {Edron}, {Darashia}, {Issavi} or {Marapur}." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a carpet pilot. I can fly you to the {Femor Hills}, to {Kazordoon}, {Svargrond}, {Edron}, {Darashia}, {Issavi} or {Marapur}." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Melian at your service." }) +keywordHandler:addKeyword({ "mountain" }, StdModule.say, { npcHandler = npcHandler, text = "These mountains don't look friendly. I prefer not staying long inbetween my carpet trips." }) +keywordHandler:addKeyword({ "carpet" }, StdModule.say, { npcHandler = npcHandler, text = "Only licensed carpet pilots are allowed to fly those." }) +keywordHandler:addKeyword({ "orc" }, StdModule.say, { npcHandler = npcHandler, text = "There's so much green stuff down there that I'm not sure whether there are any, but yes, might be, might be." }) +keywordHandler:addKeyword({ "dwarf" }, StdModule.say, { npcHandler = npcHandler, text = "Well, dwarves and their steamboat technology are well and good, but nothing beats flying on a carpet." }) +keywordHandler:addKeyword({ "steamboat" }, StdModule.say, { npcHandler = npcHandler, text = "Well, dwarves and their steamboat technology are well and good, but nothing beats flying on a carpet." }) +keywordHandler:addKeyword({ "farmine" }, StdModule.say, { npcHandler = npcHandler, text = "That's the name of that dwarven base as far as I know. Got a bit of a pessimistic ring to it if you ask me. Sounds to me like they're starving." }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on {Darama}, to {Kazordoon}, to {Svargrond} on Hrodmir, to {Edron}, to the {Femor Hills}, to {Issavi} or to {Marapur} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on {Darama}, to {Kazordoon}, to {Svargrond} on Hrodmir, to {Edron}, to the {Femor Hills}, to {Issavi} or to {Marapur} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "ride" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on {Darama}, to {Kazordoon}, to {Svargrond} on Hrodmir, to {Edron}, to the {Femor Hills}, to {Issavi} or to {Marapur} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "trip" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on {Darama}, to {Kazordoon}, to {Svargrond} on Hrodmir, to {Edron}, to the {Femor Hills}, to {Issavi} or to {Marapur} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "transport" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on {Darama}, to {Kazordoon}, to {Svargrond} on Hrodmir, to {Edron}, to the {Femor Hills}, to {Issavi} or to {Marapur} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "human" }, StdModule.say, { npcHandler = npcHandler, text = "The only humans I've seen on this continent are those that come up to my carpet." }) +keywordHandler:addKeyword({ "continent" }, StdModule.say, { npcHandler = npcHandler, text = "What a strange and bizarre continent. I'm glad my landing place is far away from all the mess I've seen from above." }) +keywordHandler:addKeyword({ "femur" }, StdModule.say, { npcHandler = npcHandler, text = "You are probably talking about the {FEMOR hills}." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It's 2:55 pm right now. I think I'm five minutes late in my schedule." }) npcHandler:setMessage(MESSAGE_GREET, "Greetings, traveller |PLAYERNAME|. Where do you want me to {fly} you?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye!") diff --git a/data-otservbr-global/npc/memech.lua b/data-otservbr-global/npc/memech.lua index 9a69a05badb..d5a2d119a7d 100644 --- a/data-otservbr-global/npc/memech.lua +++ b/data-otservbr-global/npc/memech.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 21, lookLegs = 21, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Selling weapons and armors to protect mortal souls.' } + { text = "Selling weapons and armors to protect mortal souls." }, } local keywordHandler = KeywordHandler:new() @@ -137,7 +137,7 @@ npcConfig.shop = { { itemName = "viking helmet", clientId = 3367, buy = 265 }, { itemName = "viking shield", clientId = 3431, buy = 260 }, { itemName = "war hammer", clientId = 3279, buy = 10000 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -148,7 +148,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/menacing_mummy.lua b/data-otservbr-global/npc/menacing_mummy.lua index 631a9aea7b1..1c3ca1515a5 100644 --- a/data-otservbr-global/npc/menacing_mummy.lua +++ b/data-otservbr-global/npc/menacing_mummy.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 90 + lookType = 90, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/menesto.lua b/data-otservbr-global/npc/menesto.lua index f2a286b1f0b..0f1168c026a 100644 --- a/data-otservbr-global/npc/menesto.lua +++ b/data-otservbr-global/npc/menesto.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 78, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,17 +55,15 @@ local function greetCallback(npc, creature) local playerId = player:getId() if player:getStorageValue(Storage.Tutorial) < 1 then - npcHandler:say( - { - "Finally, reinforcements - oh but no, you came through the crystal portal, like the others! \z + npcHandler:say({ + "Finally, reinforcements - oh but no, you came through the crystal portal, like the others! \z I am ser Menesto, I guard the portal. That beast caught me by surprise, I lost my dagger and had to retreat. ...", - "... ...", - "Hmm. ...", - "You look hungry, you should eat regularly to reagain your strength! \z + "... ...", + "Hmm. ...", + "You look hungry, you should eat regularly to reagain your strength! \z See what you can find while hunting. Or buy food in a city shop. \z - Here, have some of my rations, I'll take my dagger. Tell me when you're {ready}." - }, - npc, creature, 10) + Here, have some of my rations, I'll take my dagger. Tell me when you're {ready}.", + }, npc, creature, 10) player:addItem(3577, 1) player:setStorageValue(Storage.Dawnport.Tutorial, 1) end @@ -82,13 +80,11 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "ready") then if player:getStorageValue(Storage.Dawnport.Tutorial) == 1 then - npcHandler:say( - { - "I'll stay here till reinforcements come. Go up the ladder to reach the surface. \z + npcHandler:say({ + "I'll stay here till reinforcements come. Go up the ladder to reach the surface. \z You'll need a rope for the ropestot that comes after the ladder - here, take my spare equipment. ...", - "And remember: Tibia is a world with many dangers and mysteries, so be careful! Farewell, friend." - }, - npc, creature, 10) + "And remember: Tibia is a world with many dangers and mysteries, so be careful! Farewell, friend.", + }, npc, creature, 10) player:setStorageValue(Storage.Dawnport.Tutorial, 2) npcHandler:setTopic(playerId, 0) end diff --git a/data-otservbr-global/npc/meraya.lua b/data-otservbr-global/npc/meraya.lua index 9468e58fd12..a173704beb7 100644 --- a/data-otservbr-global/npc/meraya.lua +++ b/data-otservbr-global/npc/meraya.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 121, lookLegs = 81, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/messenger_of_heaven.lua b/data-otservbr-global/npc/messenger_of_heaven.lua index 3b66724747e..1280fe07cc4 100644 --- a/data-otservbr-global/npc/messenger_of_heaven.lua +++ b/data-otservbr-global/npc/messenger_of_heaven.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/messenger_of_santa.lua b/data-otservbr-global/npc/messenger_of_santa.lua index 32796569d29..6629b76c57e 100644 --- a/data-otservbr-global/npc/messenger_of_santa.lua +++ b/data-otservbr-global/npc/messenger_of_santa.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 99, lookLegs = 60, lookFeet = 117, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -60,7 +60,7 @@ npcConfig.shop = { { itemName = "christmas wreath", clientId = 6501, buy = 45 }, { itemName = "green christmas bundle", clientId = 6508, buy = 80 }, { itemName = "red christmas bundle", clientId = 6506, buy = 70 }, - { itemName = "red christmas garland", clientId = 6503, buy = 25 } + { itemName = "red christmas garland", clientId = 6503, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -71,7 +71,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/miles_the_guard.lua b/data-otservbr-global/npc/miles_the_guard.lua index 888807f498a..d97861a78ac 100644 --- a/data-otservbr-global/npc/miles_the_guard.lua +++ b/data-otservbr-global/npc/miles_the_guard.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 19, lookFeet = 19, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -79,7 +79,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "It's my duty to protect the city." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "It's my duty to protect the city." }) npcHandler:setMessage(MESSAGE_GREET, "LONG LIVE THE KING!") npcHandler:setMessage(MESSAGE_FAREWELL, "LONG LIVE THE KING!") diff --git a/data-otservbr-global/npc/milos.lua b/data-otservbr-global/npc/milos.lua index ec4e41afd2c..a8e640d4937 100644 --- a/data-otservbr-global/npc/milos.lua +++ b/data-otservbr-global/npc/milos.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 3, lookLegs = 3, lookFeet = 2, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'What a fascinating idea!' } + { text = "What a fascinating idea!" }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/mirabell.lua b/data-otservbr-global/npc/mirabell.lua index 340a846a56a..ced81dd798c 100644 --- a/data-otservbr-global/npc/mirabell.lua +++ b/data-otservbr-global/npc/mirabell.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 12, lookLegs = 87, lookFeet = 77, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'The Horn of Plenty is always open for tired adventurers.' } + { text = "The Horn of Plenty is always open for tired adventurers." }, } local keywordHandler = KeywordHandler:new() @@ -64,32 +64,31 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'pies') then + if MsgContains(message, "pies") then if player:getStorageValue(Storage.WhatAFoolish.PieBuying) == -1 then - npcHandler:say('Oh you\'ve heard about my excellent pies, didn\'t you? I am flattered. Unfortunately I\'m completely out of flour. I need 2 portions of flour for one pie. Just tell me when you have enough flour for your pies.', npc, creature) + npcHandler:say("Oh you've heard about my excellent pies, didn't you? I am flattered. Unfortunately I'm completely out of flour. I need 2 portions of flour for one pie. Just tell me when you have enough flour for your pies.", npc, creature) return true end - npcHandler:say('For 12 pies this is 240 gold. Do you want to buy them?', npc, creature) + npcHandler:say("For 12 pies this is 240 gold. Do you want to buy them?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif MsgContains(message, 'flour') then - npcHandler:say('Do you bring me the flour needed for your pies?', npc, creature) + elseif MsgContains(message, "flour") then + npcHandler:say("Do you bring me the flour needed for your pies?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then if not player:removeItem(3603, 24) then - npcHandler:say('I think you are confusing the dust in your pockets with flour. You certainly do not have enough flour for 12 pies.', npc, creature) + npcHandler:say("I think you are confusing the dust in your pockets with flour. You certainly do not have enough flour for 12 pies.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:setStorageValue(Storage.WhatAFoolish.PieBuying, player:getStorageValue(Storage.WhatAFoolish.PieBuying) + 1) - npcHandler:say('Excellent. Now I can start baking the pies. As you helped me, I will make you a good price for them.', npc, creature) + npcHandler:say("Excellent. Now I can start baking the pies. As you helped me, I will make you a good price for them.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then if not player:removeMoneyBank(240) then - npcHandler:say('You don\'t have enough money, don\'t try to fool me.', npc, creature) + npcHandler:say("You don't have enough money, don't try to fool me.", npc, creature) npcHandler:setTopic(playerId, 0) return true end @@ -98,16 +97,16 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.WhatAFoolish.PieBuying, player:getStorageValue(Storage.WhatAFoolish.PieBuying) - 1) player:setStorageValue(Storage.WhatAFoolish.PieBoxTimer, os.time() + 1200) -- 20 minutes to deliver npcHandler:say({ - 'Here they are. Wait! Two things you should know: Firstly, they won\'t last long in the sun so you better get them to their destination as quickly as possible ...', - 'Secondly, since my pies are that delicious it is forbidden to leave the town with them. We can\'t afford to attract more tourists to Edron.' + "Here they are. Wait! Two things you should know: Firstly, they won't last long in the sun so you better get them to their destination as quickly as possible ...", + "Secondly, since my pies are that delicious it is forbidden to leave the town with them. We can't afford to attract more tourists to Edron.", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Without flour I can\'t do anything, sorry.', npc, creature) + npcHandler:say("Without flour I can't do anything, sorry.", npc, creature) elseif npcHandler:getTopic(playerId) == 2 then - npcHandler:say('What are you? Some kind of fool?', npc, creature) + npcHandler:say("What are you? Some kind of fool?", npc, creature) end npcHandler:setTopic(playerId, 0) end @@ -115,8 +114,8 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'drink' }, StdModule.say, { npcHandler = npcHandler, text = 'I can offer you beer, wine, lemonade and water. If you\'d like to see my offers, ask me for a {trade}.' }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = 'Are you looking for food? I have bread, cheese, ham, and meat. If you\'d like to see my offers, ask me for a {trade}.' }) +keywordHandler:addKeyword({ "drink" }, StdModule.say, { npcHandler = npcHandler, text = "I can offer you beer, wine, lemonade and water. If you'd like to see my offers, ask me for a {trade}." }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "Are you looking for food? I have bread, cheese, ham, and meat. If you'd like to see my offers, ask me for a {trade}." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to the Horn of Plenty, |PLAYERNAME|. Sit down, have a {drink} or some {food}!") npcHandler:setMessage(MESSAGE_FAREWELL, "Come back soon, traveller.") @@ -134,7 +133,7 @@ npcConfig.shop = { { itemName = "mug of beer", clientId = 2880, buy = 2, count = 3 }, { itemName = "mug of lemonade", clientId = 2880, buy = 2, count = 12 }, { itemName = "mug of water", clientId = 2880, buy = 1, count = 1 }, - { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 } + { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -145,7 +144,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/miraia.lua b/data-otservbr-global/npc/miraia.lua index 6c35e3f809f..e8a22ca1abb 100644 --- a/data-otservbr-global/npc/miraia.lua +++ b/data-otservbr-global/npc/miraia.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 7, lookFeet = 132, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,46 +53,46 @@ end local topic = {} local config = { - ['ape fur'] = { + ["ape fur"] = { itemId = 5883, count = 100, storageValue = 1, text = { - 'Have you really managed to fulfil the task and brought me 100 pieces of ape fur?', - 'Only ape fur is good enough to touch the feet of our Caliph.', - 'Ahhh, this softness! I\'m impressed, |PLAYERNAME|. You\'re on the best way to earn that turban. Now, please retrieve 100 fish fins.' - } + "Have you really managed to fulfil the task and brought me 100 pieces of ape fur?", + "Only ape fur is good enough to touch the feet of our Caliph.", + "Ahhh, this softness! I'm impressed, |PLAYERNAME|. You're on the best way to earn that turban. Now, please retrieve 100 fish fins.", + }, }, - ['fish fins'] = { + ["fish fins"] = { itemId = 5895, count = 100, storageValue = 2, text = { - 'Were you able to discover the undersea race and retrieved 100 fish fins?', - 'I really wonder what the explorer society is up to. Actually I have no idea how they managed to dive unterwater.', - 'I never thought you\'d make it, |PLAYERNAME|. Now we only need two enchanted chicken wings to start our waterwalking test!' - } + "Were you able to discover the undersea race and retrieved 100 fish fins?", + "I really wonder what the explorer society is up to. Actually I have no idea how they managed to dive unterwater.", + "I never thought you'd make it, |PLAYERNAME|. Now we only need two enchanted chicken wings to start our waterwalking test!", + }, }, - ['enchanted chicken wings'] = { + ["enchanted chicken wings"] = { itemId = 5891, count = 2, storageValue = 3, text = { - 'Were you able to get hold of two enchanted chicken wings?', - 'Enchanted chicken wings are actually used to make boots of haste, so they could be magically extracted again. Djinns are said to be good at that.', - 'Great, thank you very much. Just bring me 100 pieces of blue cloth now and I will happily show you how to make a turban.' - } + "Were you able to get hold of two enchanted chicken wings?", + "Enchanted chicken wings are actually used to make boots of haste, so they could be magically extracted again. Djinns are said to be good at that.", + "Great, thank you very much. Just bring me 100 pieces of blue cloth now and I will happily show you how to make a turban.", + }, }, - ['blue cloth'] = { + ["blue cloth"] = { itemId = 5912, count = 100, storageValue = 4, text = { - 'Ah, have you brought the 100 pieces of blue cloth?', - 'It\'s a great material for turbans.', - 'Ah! Congratulations - I hope this veil will turn out as beautiful as you are. Here, I\'ll do it for you.' - } - } + "Ah, have you brought the 100 pieces of blue cloth?", + "It's a great material for turbans.", + "Ah! Congratulations - I hope this veil will turn out as beautiful as you are. Here, I'll do it for you.", + }, + }, } local function creatureSayCallback(npc, creature, type, message) @@ -103,15 +103,15 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'outfit') then - npcHandler:say(player:getSex() == PLAYERSEX_FEMALE and 'Hehe, would you like to wear a pretty veil like I do? Well... I could help you, but you would have to complete a task first.' or 'My veil? No, I will definitely not lift it for you! If you are looking for an addon, go talk to Razan.', npc, creature) - elseif MsgContains(message, 'task') then + if MsgContains(message, "outfit") then + npcHandler:say(player:getSex() == PLAYERSEX_FEMALE and "Hehe, would you like to wear a pretty veil like I do? Well... I could help you, but you would have to complete a task first." or "My veil? No, I will definitely not lift it for you! If you are looking for an addon, go talk to Razan.", npc, creature) + elseif MsgContains(message, "task") then if player:getSex() == PLAYERSEX_MALE then - npcHandler:say('Uh... I don\'t think that I have work for you right now. If you need a job, go talk to Razan.', npc, creature) + npcHandler:say("Uh... I don't think that I have work for you right now. If you need a job, go talk to Razan.", npc, creature) return true end if player:getStorageValue(Storage.OutfitQuest.secondOrientalAddon) < 1 then - npcHandler:say('You mean, you would like to prove that you deserve to wear such a veil?', npc, creature) + npcHandler:say("You mean, you would like to prove that you deserve to wear such a veil?", npc, creature) npcHandler:setTopic(playerId, 1) end elseif config[message] and npcHandler:getTopic(playerId) == 0 then @@ -122,22 +122,22 @@ local function creatureSayCallback(npc, creature, type, message) else npcHandler:say(config[message].text[2], npc, creature) end - elseif MsgContains(message, 'scarab cheese') then + elseif MsgContains(message, "scarab cheese") then if player:getStorageValue(Storage.TravellingTrader.Mission03) == 1 then - npcHandler:say('Let me cover my nose before I get this for you... Would you REALLY like to buy scarab cheese for 100 gold?', npc, creature) + npcHandler:say("Let me cover my nose before I get this for you... Would you REALLY like to buy scarab cheese for 100 gold?", npc, creature) elseif player:getStorageValue(Storage.TravellingTrader.Mission03) == 2 then - npcHandler:say('Oh the last cheese molded? Would you like to buy another one for 100 gold?', npc, creature) + npcHandler:say("Oh the last cheese molded? Would you like to buy another one for 100 gold?", npc, creature) end npcHandler:setTopic(playerId, 4) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - 'Alright, then listen to the following requirements. We are currently in dire need of ape fur since the Caliph has requested a new bathroom carpet. ...', - 'Thus, please bring me 100 pieces of ape fur. Secondly, it came to our ears that the explorer society has discovered a new undersea race of fishmen. ...', - 'Their fins are said to allow humans to walk on water! Please bring us 100 of these fish fin. ...', - 'Third, if the plan of walking on water should fail, we need enchanted chicken wings to prevent the testers from drowning. Please bring me two. ...', - 'Last but not least, just drop by with 100 pieces of blue cloth and I will happily show you how to make a turban. ...', - 'Did you understand everything I told you and are willing to handle this task?' + "Alright, then listen to the following requirements. We are currently in dire need of ape fur since the Caliph has requested a new bathroom carpet. ...", + "Thus, please bring me 100 pieces of ape fur. Secondly, it came to our ears that the explorer society has discovered a new undersea race of fishmen. ...", + "Their fins are said to allow humans to walk on water! Please bring us 100 of these fish fin. ...", + "Third, if the plan of walking on water should fail, we need enchanted chicken wings to prevent the testers from drowning. Please bring me two. ...", + "Last but not least, just drop by with 100 pieces of blue cloth and I will happily show you how to make a turban. ...", + "Did you understand everything I told you and are willing to handle this task?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then @@ -145,12 +145,12 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.DefaultStart, 1) end player:setStorageValue(Storage.OutfitQuest.secondOrientalAddon, 1) - npcHandler:say('Excellent! Come back to me once you have collected 100 pieces of ape fur.', npc, creature) + npcHandler:say("Excellent! Come back to me once you have collected 100 pieces of ape fur.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then local targetMessage = config[topic[playerId]] if not player:removeItem(targetMessage.itemId, targetMessage.count) then - npcHandler:say('That is a shameless lie.', npc, creature) + npcHandler:say("That is a shameless lie.", npc, creature) npcHandler:setTopic(playerId, 0) return true end @@ -167,14 +167,14 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.TravellingTrader.Mission03, 2) player:addItem(169, 1) player:removeMoneyBank(100) - npcHandler:say('Here it is.', npc, creature) + npcHandler:say("Here it is.", npc, creature) else - npcHandler:say('You don\'t have enough money.', npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) end npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) ~= 0 then - npcHandler:say('What a pity.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) ~= 0 then + npcHandler:say("What a pity.", npc, creature) npcHandler:setTopic(playerId, 0) end return true @@ -185,11 +185,11 @@ local function onReleaseFocus(npc, creature) topic[playerId] = nil end -keywordHandler:addKeyword({ 'drink' }, StdModule.say, { npcHandler = npcHandler, text = 'I can offer you lemonade, camel milk, and water. If you\'d like to see my offers, ask me for a {trade}.' }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = 'Are you looking for food? I have bread, cheese, ham, and meat. If you\'d like to see my offers, ask me for a {trade}.' }) +keywordHandler:addKeyword({ "drink" }, StdModule.say, { npcHandler = npcHandler, text = "I can offer you lemonade, camel milk, and water. If you'd like to see my offers, ask me for a {trade}." }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "Are you looking for food? I have bread, cheese, ham, and meat. If you'd like to see my offers, ask me for a {trade}." }) -npcHandler:setMessage(MESSAGE_GREET, 'Daraman\'s blessings, |PLAYERNAME|. Welcome to the Enlightened Oasis. Sit down, have a {drink} or some {food}!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Daraman\'s blessings. Come back soon.') +npcHandler:setMessage(MESSAGE_GREET, "Daraman's blessings, |PLAYERNAME|. Welcome to the Enlightened Oasis. Sit down, have a {drink} or some {food}!") +npcHandler:setMessage(MESSAGE_FAREWELL, "Daraman's blessings. Come back soon.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) @@ -204,7 +204,7 @@ npcConfig.shop = { { itemName = "mug of lemonade", clientId = 2880, buy = 3, count = 12 }, { itemName = "mug of milk", clientId = 2880, buy = 5, count = 9 }, { itemName = "mug of water", clientId = 2880, buy = 2, count = 1 }, - { itemName = "scarab cheese", clientId = 169, buy = 100 } + { itemName = "scarab cheese", clientId = 169, buy = 100 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -215,7 +215,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/moe.lua b/data-otservbr-global/npc/moe.lua index 847c837e4aa..c96c03da8af 100644 --- a/data-otservbr-global/npc/moe.lua +++ b/data-otservbr-global/npc/moe.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -28,7 +28,7 @@ npcConfig.voices = { chance = 50, { text = "The menu of the day sounds delicious!" }, { text = "The last visit to the theatre was quite rewarding." }, - { text = "Such a beautiful and wealthy city - with so many opportunities ..." } + { text = "Such a beautiful and wealthy city - with so many opportunities ..." }, } local keywordHandler = KeywordHandler:new() @@ -58,72 +58,60 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword( - { "help" }, StdModule.say, { - npcHandler = npcHandler, - text = "I guess I could do this, yes. But I have to impose a condition. If you bring me ten sphinx {feathers} I will steal this ring for you." - }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Fourth.Moe) == 1 end, - function(player) player:setStorageValue(Storage.Kilmaresh.Fourth.Moe, 2) end -) - -keywordHandler:addKeyword( - { "feathers" }, StdModule.say, { - npcHandler = npcHandler, - text = "Thank you! They look so pretty, I'm very pleased. Agreed, now I will steal the ring from the Ambassador of Rathleton. Just be patient, I have to wait for a good moment." - }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Fourth.Moe) == 2 and player:getItemById(31437, 10) end, - function(player) - player:removeItem(31437, 10) - player:setStorageValue(Storage.Kilmaresh.Fourth.Moe, 3) - player:setStorageValue(Storage.Kilmaresh.Fourth.MoeTimer, os.time() + 60 * 60) -- one hour - end -) - -keywordHandler:addKeyword( - { "feathers" }, StdModule.say, { - npcHandler = npcHandler, - text = "If you bring me ten sphinx {feathers} I will steal this ring for you." - }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Fourth.Moe) == 2 and not player:getItemById(31437, 10) end -) - -keywordHandler:addKeyword( - { "ring" }, StdModule.say, { - npcHandler = npcHandler, - text = "You're arriving at the right time. I have the ring you asked for. It was not too difficult. I just had to wait until the Ambassador left his residence and then I climbed in through the window. Here it is." - }, - function(player) - return player:getStorageValue(Storage.Kilmaresh.Fourth.Moe) == 3 and - player:getStorageValue(Storage.Kilmaresh.Fourth.MoeTimer) - os.time() <= 0 - end, - function(player) - player:addItem(31306, 1) - player:setStorageValue(Storage.Kilmaresh.Fourth.Moe, 4) - end -) - -keywordHandler:addKeyword( - { "ring" }, StdModule.say, { - npcHandler = npcHandler, - text = "I will steal it, promised. I\'m just waiting for a good moment." - }, - function(player) - return player:getStorageValue(Storage.Kilmaresh.Fourth.Moe) == 3 and - player:getStorageValue(Storage.Kilmaresh.Fourth.MoeTimer) - os.time() > 0 - end -) -keywordHandler:addKeyword( - { "lyre" }, StdModule.say, { - npcHandler = npcHandler, - text = "I'm upset to accuse myself, the lyre is hidden in a tomb west of Kilmaresh." - }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Thirteen.Lyre) == 1 end, - function(player) player:setStorageValue(Storage.Kilmaresh.Thirteen.Lyre, 2) end -) +keywordHandler:addKeyword({ "help" }, StdModule.say, { + npcHandler = npcHandler, + text = "I guess I could do this, yes. But I have to impose a condition. If you bring me ten sphinx {feathers} I will steal this ring for you.", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Fourth.Moe) == 1 +end, function(player) + player:setStorageValue(Storage.Kilmaresh.Fourth.Moe, 2) +end) + +keywordHandler:addKeyword({ "feathers" }, StdModule.say, { + npcHandler = npcHandler, + text = "Thank you! They look so pretty, I'm very pleased. Agreed, now I will steal the ring from the Ambassador of Rathleton. Just be patient, I have to wait for a good moment.", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Fourth.Moe) == 2 and player:getItemById(31437, 10) +end, function(player) + player:removeItem(31437, 10) + player:setStorageValue(Storage.Kilmaresh.Fourth.Moe, 3) + player:setStorageValue(Storage.Kilmaresh.Fourth.MoeTimer, os.time() + 60 * 60) -- one hour +end) + +keywordHandler:addKeyword({ "feathers" }, StdModule.say, { + npcHandler = npcHandler, + text = "If you bring me ten sphinx {feathers} I will steal this ring for you.", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Fourth.Moe) == 2 and not player:getItemById(31437, 10) +end) + +keywordHandler:addKeyword({ "ring" }, StdModule.say, { + npcHandler = npcHandler, + text = "You're arriving at the right time. I have the ring you asked for. It was not too difficult. I just had to wait until the Ambassador left his residence and then I climbed in through the window. Here it is.", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Fourth.Moe) == 3 and player:getStorageValue(Storage.Kilmaresh.Fourth.MoeTimer) - os.time() <= 0 +end, function(player) + player:addItem(31306, 1) + player:setStorageValue(Storage.Kilmaresh.Fourth.Moe, 4) +end) + +keywordHandler:addKeyword({ "ring" }, StdModule.say, { + npcHandler = npcHandler, + text = "I will steal it, promised. I'm just waiting for a good moment.", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Fourth.Moe) == 3 and player:getStorageValue(Storage.Kilmaresh.Fourth.MoeTimer) - os.time() > 0 +end) +keywordHandler:addKeyword({ "lyre" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm upset to accuse myself, the lyre is hidden in a tomb west of Kilmaresh.", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Thirteen.Lyre) == 1 +end, function(player) + player:setStorageValue(Storage.Kilmaresh.Thirteen.Lyre, 2) +end) npcHandler:setMessage(MESSAGE_GREET, "Greetings, traveller. It seems, you're a {guest} here, just like me.") -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/morax.lua b/data-otservbr-global/npc/morax.lua index 4f7e0e55ad3..d49bd1bb617 100644 --- a/data-otservbr-global/npc/morax.lua +++ b/data-otservbr-global/npc/morax.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 95, lookLegs = 0, lookFeet = 113, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/mordecai.lua b/data-otservbr-global/npc/mordecai.lua index cef9df76c44..624b800dca7 100644 --- a/data-otservbr-global/npc/mordecai.lua +++ b/data-otservbr-global/npc/mordecai.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 132, lookLegs = 117, lookFeet = 3, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -105,7 +105,7 @@ npcConfig.shop = { { itemName = "wand of starstorm", clientId = 8092, buy = 18000 }, { itemName = "wand of voodoo", clientId = 8094, buy = 22000 }, { itemName = "wand of vortex", clientId = 3074, buy = 500 }, - { itemName = "wild growth rune", clientId = 3156, buy = 160 } + { itemName = "wild growth rune", clientId = 3156, buy = 160 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -116,7 +116,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/morgan.lua b/data-otservbr-global/npc/morgan.lua index c2766317c32..f1e8897a046 100644 --- a/data-otservbr-global/npc/morgan.lua +++ b/data-otservbr-global/npc/morgan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 120, lookLegs = 122, lookFeet = 132, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,22 +58,24 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'firebird') then + if MsgContains(message, "firebird") then if player:getStorageValue(Storage.OutfitQuest.PirateSabreAddon) == 4 then player:setStorageValue(Storage.OutfitQuest.PirateSabreAddon, 5) player:addOutfitAddon(151, 1) player:addOutfitAddon(155, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) npcHandler:say( - 'Ahh. So Duncan sent you, eh? You must have done something really impressive. \ - Okay, take this fine sabre from me, mate.', - npc, creature) + "Ahh. So Duncan sent you, eh? You must have done something really impressive. \ + Okay, take this fine sabre from me, mate.", + npc, + creature + ) end - elseif MsgContains(message, 'mission') then + elseif MsgContains(message, "mission") then if player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 3 then npcHandler:say({ - 'Hm, if you are that eager to work I have an idea how you could help me out. \z - A distant relative of mine, the old sage Eremo lives on the isle Cormaya, near Edron. ...', + "Hm, if you are that eager to work I have an idea how you could help me out. \z + A distant relative of mine, the old sage Eremo lives on the isle Cormaya, near Edron. ...", "He has not heard from me since ages. He might assume that I am dead. \z Since I don't want him to get into trouble for receiving a letter from a \z pirate I ask you to deliver it personally. ...", @@ -82,19 +84,19 @@ local function creatureSayCallback(npc, creature, type, message) }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 5 then - npcHandler:say('Thank you for delivering my letter to Eremo. I have no more missions for you.', npc, creature) + npcHandler:say("Thank you for delivering my letter to Eremo. I have no more missions for you.", npc, creature) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 6) npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "warrior's sword") then if player:hasOutfit(player:getSex() == PLAYERSEX_FEMALE and 142 or 134, 2) then - npcHandler:say('You already have this outfit!', npc, creature) + npcHandler:say("You already have this outfit!", npc, creature) return true end if player:getStorageValue(Storage.OutfitQuest.WarriorSwordAddon) < 1 then player:setStorageValue(Storage.OutfitQuest.WarriorSwordAddon, 1) - npcHandler:say('Great! Simply bring me 100 iron ore and one royal steel and I will happily {forge} it for you.', npc, creature) + npcHandler:say("Great! Simply bring me 100 iron ore and one royal steel and I will happily {forge} it for you.", npc, creature) elseif player:getStorageValue(Storage.OutfitQuest.WarriorSwordAddon) == 1 and npcHandler:getTopic(playerId) == 1 then if player:getItemCount(5887) > 0 and player:getItemCount(5880) > 99 then player:removeItem(5887, 1) @@ -103,22 +105,22 @@ local function creatureSayCallback(npc, creature, type, message) player:addOutfitAddon(142, 2) player:setStorageValue(Storage.OutfitQuest.WarriorSwordAddon, 2) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - player:addAchievementProgress('Wild Warrior', 2) - npcHandler:say('Alright! As a matter of fact, I have one in store. Here you go!', npc, creature) + player:addAchievementProgress("Wild Warrior", 2) + npcHandler:say("Alright! As a matter of fact, I have one in store. Here you go!", npc, creature) else - npcHandler:say('You do not have all the required items.', npc, creature) + npcHandler:say("You do not have all the required items.", npc, creature) end npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "knight's sword") then if player:hasOutfit(player:getSex() == PLAYERSEX_FEMALE and 139 or 131, 1) then - npcHandler:say('You already have this outfit!', npc, creature) + npcHandler:say("You already have this outfit!", npc, creature) return true end if player:getStorageValue(Storage.OutfitQuest.Knight.AddonSword) < 1 then player:setStorageValue(Storage.OutfitQuest.Knight.AddonSword, 1) - npcHandler:say('Great! Simply bring me 100 Iron Ore and one Crude Iron and I will happily {forge} it for you.', npc, creature) + npcHandler:say("Great! Simply bring me 100 Iron Ore and one Crude Iron and I will happily {forge} it for you.", npc, creature) elseif player:getStorageValue(Storage.OutfitQuest.Knight.AddonSword) == 1 and npcHandler:getTopic(playerId) == 1 then if player:getItemCount(5892) > 0 and player:getItemCount(5880) > 99 then player:removeItem(5892, 1) @@ -127,19 +129,19 @@ local function creatureSayCallback(npc, creature, type, message) player:addOutfitAddon(139, 1) player:setStorageValue(Storage.OutfitQuest.Knight.AddonSword, 2) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - npcHandler:say('Alright! As a matter of fact, I have one in store. Here you go!', npc, creature) + npcHandler:say("Alright! As a matter of fact, I have one in store. Here you go!", npc, creature) else - npcHandler:say('You do not have all the required items.', npc, creature) + npcHandler:say("You do not have all the required items.", npc, creature) end npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'forge') then + elseif MsgContains(message, "forge") then npcHandler:say("What would you like me to forge for you? A {knight's sword} or a {warrior's sword}?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 2 then if player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 3 then - npcHandler:say('Alright, we will see. Here, take this letter and deliver it safely to old Eremo on Cormaya.', npc, creature) + npcHandler:say("Alright, we will see. Here, take this letter and deliver it safely to old Eremo on Cormaya.", npc, creature) player:addItem(3506, 1) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 4) npcHandler:setTopic(playerId, 0) @@ -149,26 +151,18 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword( - { 'addon' }, - StdModule.say, - { - npcHandler = npcHandler, - text = 'I can forge the finest {weapons} for knights and warriors. \ - They may wear them proudly and visible to everyone.' - } -) -keywordHandler:addKeyword( - { 'weapons' }, - StdModule.say, - { - npcHandler = npcHandler, - text = "Would you rather be interested in a {knight's sword} or in a {warrior's sword}?" - } -) - -npcHandler:setMessage(MESSAGE_GREET, 'Hello there.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye.') +keywordHandler:addKeyword({ "addon" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can forge the finest {weapons} for knights and warriors. \ + They may wear them proudly and visible to everyone.", +}) +keywordHandler:addKeyword({ "weapons" }, StdModule.say, { + npcHandler = npcHandler, + text = "Would you rather be interested in a {knight's sword} or in a {warrior's sword}?", +}) + +npcHandler:setMessage(MESSAGE_GREET, "Hello there.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/morpel.lua b/data-otservbr-global/npc/morpel.lua index 1bfb723c8f8..aed314c7535 100644 --- a/data-otservbr-global/npc/morpel.lua +++ b/data-otservbr-global/npc/morpel.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 119, lookLegs = 57, lookFeet = 96, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -128,7 +128,7 @@ npcConfig.shop = { { itemName = "viking helmet", clientId = 3367, buy = 265 }, { itemName = "viking shield", clientId = 3431, buy = 260 }, { itemName = "war hammer", clientId = 3279, buy = 10000 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -139,7 +139,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/mortimer.lua b/data-otservbr-global/npc/mortimer.lua index c04117aa8af..8ff80fa1a18 100644 --- a/data-otservbr-global/npc/mortimer.lua +++ b/data-otservbr-global/npc/mortimer.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 115, lookLegs = 102, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,15 +61,13 @@ local function creatureSayCallback(npc, creature, type, message) -- JOINING if MsgContains(message, "join") then - if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) < 1 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 1 then + if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) < 1 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 1 then npcHandler:say("Do you want to join the explorer society?", npc, creature) npcHandler:setTopic(playerId, 1) end --The New Frontier elseif MsgContains(message, "farmine") then - if player:getStorageValue(TheNewFrontier.Questline) <= 15 - and player:getStorageValue(TheNewFrontier.BribeExplorerSociety) < 1 then + if player:getStorageValue(TheNewFrontier.Questline) <= 15 and player:getStorageValue(TheNewFrontier.BribeExplorerSociety) < 1 then npcHandler:say("Oh yes, an interesting topic. We had vivid discussions about this discovery. But what is it that you want?", npc, creature) npcHandler:setTopic(playerId, 30) end @@ -78,7 +76,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(TheNewFrontier.BribeExplorerSociety) < 1 then npcHandler:say({ "Those stories are just amazing! Men with faces on their stomach instead of heads you say? And hens that lay golden eggs? Whereas, most amazing is this fountain of youth you've mentioned! ...", - "I'll immediately send some of our most dedicated explorers to check those things out!" + "I'll immediately send some of our most dedicated explorers to check those things out!", }, npc, creature) player:setStorageValue(TheNewFrontier.BribeExplorerSociety, 1) --Questlog, The New Frontier Quest "Mission 05: Getting Things Busy" @@ -88,92 +86,70 @@ local function creatureSayCallback(npc, creature, type, message) -- MISSION CHECK elseif MsgContains(message, "mission") then - if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) > 4 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 4 - and player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) < 26 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 26 - or player:getStorageValue(Storage.ExplorerSociety.TheIceDelivery) == 8 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 8 - or player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 17 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 17 - or player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) == 5 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 5 then + if + player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) > 4 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 4 and player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) < 26 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 26 + or player:getStorageValue(Storage.ExplorerSociety.TheIceDelivery) == 8 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 8 + or player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 17 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 17 + or player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) == 5 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 5 + then npcHandler:say("The missions available for your rank are the {butterfly hunt}, {plant collection} and {ice delivery}.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) > 25 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 35 - and player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) < 35 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 35 - or player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 26 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 26 - or player:getStorageValue(Storage.ExplorerSociety.TheLizardUrn) == 29 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 29 - or player:getStorageValue(Storage.ExplorerSociety.TheBonelordSecret) == 32 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 32 then + elseif + player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) > 25 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 35 and player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) < 35 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 35 + or player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 26 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 26 + or player:getStorageValue(Storage.ExplorerSociety.TheLizardUrn) == 29 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 29 + or player:getStorageValue(Storage.ExplorerSociety.TheBonelordSecret) == 32 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 32 + then npcHandler:say("The missions available for your rank are {lizard urn}, {bonelord secrets} and {orc powder}.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) > 34 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 34 - and player:getStorageValue(Storage.ExplorerSociety.TheRuneWritings) < 44 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 44 - or player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) == 35 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 35 - or player:getStorageValue(Storage.ExplorerSociety.TheElvenPoetry) == 38 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 38 - or player:getStorageValue(Storage.ExplorerSociety.TheMemoryStone) == 41 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 41 then + elseif + player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) > 34 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 34 and player:getStorageValue(Storage.ExplorerSociety.TheRuneWritings) < 44 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 44 + or player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) == 35 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 35 + or player:getStorageValue(Storage.ExplorerSociety.TheElvenPoetry) == 38 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 38 + or player:getStorageValue(Storage.ExplorerSociety.TheMemoryStone) == 41 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 41 + then npcHandler:say("The missions available for your rank are {elven poetry}, {memory stone} and {rune writings}.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif player:getStorageValue(Storage.ExplorerSociety.TheRuneWritings) == 44 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 44 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheRuneWritings) == 44 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 44 then npcHandler:say("The explorer society needs a great deal of help in the research of astral travel. Are you willing to help?", npc, creature) npcHandler:setTopic(playerId, 27) - elseif player:getStorageValue(Storage.ExplorerSociety.TheEctoplasm) == 46 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 46 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheEctoplasm) == 46 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 46 then npcHandler:say("Do you have some collected ectoplasm with you?", npc, creature) npcHandler:setTopic(playerId, 29) - elseif player:getStorageValue(Storage.ExplorerSociety.TheEctoplasm) == 47 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 47 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheEctoplasm) == 47 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 47 then npcHandler:say({ "The research on ectoplasm makes good progress. Now we need some spectral article. Our scientists think a spectral dress would be a perfect object for their studies ...", - "The bad news is that the only source to got such a dress is the queen of the banshees. Do you dare to seek her out?" + "The bad news is that the only source to got such a dress is the queen of the banshees. Do you dare to seek her out?", }, npc, creature) npcHandler:setTopic(playerId, 30) - elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralDress) == 49 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 48 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralDress) == 49 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 48 then npcHandler:say("Did you bring the dress?", npc, creature) npcHandler:setTopic(playerId, 31) -- SPECTRAL STONE - elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralDress) == 50 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 50 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralDress) == 50 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 50 then npcHandler:say({ "With the objects you've provided our researchers will make steady progress. Still we are missing some test results from fellow explorers ...", - "Please travel to our base in Port Hope and ask them to mail us their latest research reports. Then return here and ask about new missions." + "Please travel to our base in Port Hope and ask them to mail us their latest research reports. Then return here and ask about new missions.", }, npc, creature) player:setStorageValue(Storage.ExplorerSociety.TheSpectralStone, 51) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 51) player:setStorageValue(Storage.ExplorerSociety.SpectralStone, 2) - elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralStone) == 51 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 51 - and player:getStorageValue(Storage.ExplorerSociety.SpectralStone) == 1 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralStone) == 51 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 51 and player:getStorageValue(Storage.ExplorerSociety.SpectralStone) == 1 then npcHandler:say("Oh, yes! Tell our fellow explorer that the papers are in the mail already.", npc, creature) player:setStorageValue(Storage.ExplorerSociety.TheSpectralStone, 52) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 52) npcHandler:setTopic(playerId, 0) - elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralStone) == 52 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 52 - and player:getStorageValue(Storage.ExplorerSociety.SpectralStone) == 2 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralStone) == 52 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 52 and player:getStorageValue(Storage.ExplorerSociety.SpectralStone) == 2 then npcHandler:say("The reports from Port Hope have already arrived here and our progress is astonishing. We think it is possible to create an astral bridge between our bases. Are you interested to assist us with this?", npc, creature) npcHandler:setTopic(playerId, 32) -- SPECTRAL STONE -- ASTRAL PORTALS - elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralStone) == 55 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 55 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheSpectralStone) == 55 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 55 then npcHandler:say({ "Both carvings are now charged and harmonised. In theory you should be able to travel in zero time from one base to the other ...", "However, you will need to have an orichalcum pearl in your possession to use it as power source. It will be destroyed during the process. I will give you 6 of such pearls and you can buy new ones in our bases ...", "In addition, you need to be a premium explorer to use the astral travel. ...", - "And remember: it's a small teleport for you, but a big teleport for all Tibians! Here is a small present for your efforts!" + "And remember: it's a small teleport for you, but a big teleport for all Tibians! Here is a small present for your efforts!", }, npc, creature) player:setStorageValue(Storage.ExplorerSociety.TheAstralPortals, 56) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 56) @@ -185,10 +161,7 @@ local function creatureSayCallback(npc, creature, type, message) -- PICKAXE MISSION elseif MsgContains(message, "pickaxe") then - if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) < 5 - or player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) > 1 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 1 - or player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 1 then + if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) < 5 or player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) > 1 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) < 1 or player:getStorageValue(Storage.ExplorerSociety.QuestLine) > 1 then npcHandler:say("Did you get the requested pickaxe from Uzgod in Kazordoon?", npc, creature) npcHandler:setTopic(playerId, 3) end @@ -196,16 +169,14 @@ local function creatureSayCallback(npc, creature, type, message) -- ICE DELIVERY elseif MsgContains(message, "ice delivery") then - if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) == 5 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 5 then + if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) == 5 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 5 then npcHandler:say({ "Our finest minds came up with the theory that deep beneath the ice island of Folda ice can be found that is ancient. To prove this theory we would need a sample of the aforesaid ice ...", "Of course the ice melts away quickly so you would need to hurry to bring it here ...", - "Would you like to accept this mission?" + "Would you like to accept this mission?", }, npc, creature) npcHandler:setTopic(playerId, 4) - elseif player:getStorageValue(Storage.ExplorerSociety.TheIceDelivery) == 7 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 7 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheIceDelivery) == 7 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 7 then npcHandler:say("Did you get the ice we are looking for?", npc, creature) npcHandler:setTopic(playerId, 5) end @@ -213,74 +184,62 @@ local function creatureSayCallback(npc, creature, type, message) -- BUTTERFLY HUNT elseif MsgContains(message, "butterfly hunt") then - if player:getStorageValue(Storage.ExplorerSociety.TheIceDelivery) == 8 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 8 then + if player:getStorageValue(Storage.ExplorerSociety.TheIceDelivery) == 8 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 8 then npcHandler:say("The mission asks you to collect some species of butterflies, are you interested?", npc, creature) npcHandler:setTopic(playerId, 7) - elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 10 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 10 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 10 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 10 then npcHandler:say("Did you acquire the purple butterfly we are looking for?", npc, creature) npcHandler:setTopic(playerId, 8) - elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 11 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 11 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 11 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 11 then npcHandler:say({ "This preparation kit will allow you to collect a blue butterfly you have killed ...", - "Just use it on the fresh corpse of a blue butterfly, return the prepared butterfly to me and give me a report of your butterfly hunt." + "Just use it on the fresh corpse of a blue butterfly, return the prepared butterfly to me and give me a report of your butterfly hunt.", }, npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4863, 1) player:setStorageValue(Storage.ExplorerSociety.TheButterflyHunt, 12) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 12) - elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 13 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 13 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 13 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 13 then npcHandler:say("Did you acquire the blue butterfly we are looking for?", npc, creature) npcHandler:setTopic(playerId, 9) - elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 14 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 14 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 14 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 14 then npcHandler:say({ "This preparation kit will allow you to collect a red butterfly you have killed ...", - "Just use it on the fresh corpse of a red butterfly, return the prepared butterfly to me and give me a report of your butterfly hunt." + "Just use it on the fresh corpse of a red butterfly, return the prepared butterfly to me and give me a report of your butterfly hunt.", }, npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4863, 1) player:setStorageValue(Storage.ExplorerSociety.TheButterflyHunt, 15) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 15) - elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 16 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 16 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 16 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 16 then npcHandler:say("Did you acquire the red butterfly we are looking for?", npc, creature) npcHandler:setTopic(playerId, 10) end -- BUTTERFLY HUNT -- PLANT COLLECTION elseif MsgContains(message, "plant collection") then - if player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 17 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 17 then + if player:getStorageValue(Storage.ExplorerSociety.TheButterflyHunt) == 17 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 17 then npcHandler:say("In this mission we require you to get us some plant samples from Tiquandan plants. Would you like to fulfil this mission?", npc, creature) npcHandler:setTopic(playerId, 11) - elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 119 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 19 then + elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 119 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 19 then npcHandler:say("Did you acquire the sample of the jungle bells plant we are looking for?", npc, creature) npcHandler:setTopic(playerId, 12) - elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 20 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 20 then + elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 20 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 20 then npcHandler:say("Use this botanist's container on a witches cauldron to collect a sample for us. Bring it here and report about your plant collection.", npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4867, 1) player:setStorageValue(Storage.ExplorerSociety.ThePlantCollection, 21) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 21) - elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 22 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 22 then + elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 22 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 22 then npcHandler:say("Did you acquire the sample of the witches cauldron we are looking for?", npc, creature) npcHandler:setTopic(playerId, 13) - elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 23 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 23 then - npcHandler:say("Use this botanist\'s container on a giant jungle rose to obtain a sample for us. Bring it here and report about your plant collection.", npc, creature) + elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 23 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 23 then + npcHandler:say("Use this botanist's container on a giant jungle rose to obtain a sample for us. Bring it here and report about your plant collection.", npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4867, 1) player:setStorageValue(Storage.ExplorerSociety.ThePlantCollection, 24) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 24) - elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 25 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 25 then + elseif player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 25 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 25 then npcHandler:say("Did you acquire the sample of the giant jungle rose we are looking for?", npc, creature) npcHandler:setTopic(playerId, 14) end @@ -288,12 +247,10 @@ local function creatureSayCallback(npc, creature, type, message) -- LIZARD URN elseif MsgContains(message, "lizard urn") then - if player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 26 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 26 then + if player:getStorageValue(Storage.ExplorerSociety.ThePlantCollection) == 26 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 26 then npcHandler:say("The explorer society would like to acquire an ancient urn which is some sort of relic to the lizard people of Tiquanda. Would you like to accept this mission?", npc, creature) npcHandler:setTopic(playerId, 15) - elseif player:getStorageValue(Storage.ExplorerSociety.TheLizardUrn) == 28 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 27 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheLizardUrn) == 28 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 27 then npcHandler:say("Did you manage to get the ancient urn?", npc, creature) npcHandler:setTopic(playerId, 16) end @@ -301,16 +258,14 @@ local function creatureSayCallback(npc, creature, type, message) -- BONELORDS elseif MsgContains(message, "bonelord secrets") then - if player:getStorageValue(Storage.ExplorerSociety.TheLizardUrn) == 29 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 29 then + if player:getStorageValue(Storage.ExplorerSociety.TheLizardUrn) == 29 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 29 then npcHandler:say({ "We want to learn more about the ancient race of bonelords. We believe the black pyramid north east of Darashia was originally built by them ...", "We ask you to explore the ruins of the black pyramid and look for any signs that prove our theory. You might probably find some document with the numeric bonelord language ...", - "That would be sufficient proof. Would you like to accept this mission?" + "That would be sufficient proof. Would you like to accept this mission?", }, npc, creature) npcHandler:setTopic(playerId, 17) - elseif player:getStorageValue(Storage.ExplorerSociety.TheBonelordSecret) == 31 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 30 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheBonelordSecret) == 31 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 30 then npcHandler:say("Have you found any proof that the pyramid was built by bonelords?", npc, creature) npcHandler:setTopic(playerId, 18) end @@ -318,16 +273,14 @@ local function creatureSayCallback(npc, creature, type, message) -- ORC POWDER elseif MsgContains(message, "orc powder") then - if player:getStorageValue(Storage.ExplorerSociety.TheBonelordSecret) == 32 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 32 then + if player:getStorageValue(Storage.ExplorerSociety.TheBonelordSecret) == 32 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 32 then npcHandler:say({ "It is commonly known that orcs of Uldereks Rock use some sort of powder to increase the fierceness of their war wolves and berserkers ...", "What we do not know are the ingredients of this powder and its effect on humans ...", - "So we would like you to get a sample of the aforesaid powder. Do you want to accept this mission?" + "So we would like you to get a sample of the aforesaid powder. Do you want to accept this mission?", }, npc, creature) npcHandler:setTopic(playerId, 19) - elseif player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) == 34 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 33 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) == 34 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 33 then npcHandler:say("Did you acquire some of the orcish powder?", npc, creature) npcHandler:setTopic(playerId, 20) end @@ -335,15 +288,13 @@ local function creatureSayCallback(npc, creature, type, message) -- ELVEN POETRY elseif MsgContains(message, "elven poetry") then - if player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) == 35 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 35 then + if player:getStorageValue(Storage.ExplorerSociety.TheOrcPowder) == 35 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 35 then npcHandler:say({ "Some high ranking members would like to study elven poetry. They want the rare book 'Songs of the Forest' ...", - "For sure someone in Ab'Dendriel will own a copy. So you would just have to ask around there. Are you willing to accept this mission?" + "For sure someone in Ab'Dendriel will own a copy. So you would just have to ask around there. Are you willing to accept this mission?", }, npc, creature) npcHandler:setTopic(playerId, 21) - elseif player:getStorageValue(Storage.ExplorerSociety.TheElvenPoetry) == 37 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 36 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheElvenPoetry) == 37 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 36 then npcHandler:say("Did you acquire a copy of 'Songs of the Forest' for us?", npc, creature) npcHandler:setTopic(playerId, 22) end @@ -351,16 +302,14 @@ local function creatureSayCallback(npc, creature, type, message) -- MEMORY STONE elseif MsgContains(message, "memory stone") then - if player:getStorageValue(Storage.ExplorerSociety.TheElvenPoetry) == 38 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 38 then + if player:getStorageValue(Storage.ExplorerSociety.TheElvenPoetry) == 38 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 38 then npcHandler:say({ "We acquired some knowledge about special magic stones. Some lost civilisations used it to store knowledge and lore, just like we use books ...", "The wisdom in such stones must be immense, but so are the dangers faced by every person who tries to obtain one...", - "As far as we know the ruins found in the north-west of Edron were once inhabited by beings who used such stones. Do you have the heart to go there and to get us such a stone?" + "As far as we know the ruins found in the north-west of Edron were once inhabited by beings who used such stones. Do you have the heart to go there and to get us such a stone?", }, npc, creature) npcHandler:setTopic(playerId, 23) - elseif player:getStorageValue(Storage.ExplorerSociety.TheMemoryStone) == 40 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 39 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheMemoryStone) == 40 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 39 then npcHandler:say("Were you able to acquire a memory stone for our society?", npc, creature) npcHandler:setTopic(playerId, 24) end @@ -368,17 +317,15 @@ local function creatureSayCallback(npc, creature, type, message) -- RUNE WRITINGS elseif MsgContains(message, "rune writings") then - if player:getStorageValue(Storage.ExplorerSociety.TheMemoryStone) == 41 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 41 then + if player:getStorageValue(Storage.ExplorerSociety.TheMemoryStone) == 41 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 41 then npcHandler:say({ "We would like to study some ancient runes that were used by the lizard race. We suspect some relation of the lizards to the founders of Ankrahmun ...", "Somewhere under the ape infested city of Banuta, one can find dungeons that were once inhabited by lizards...", "Look there for an atypical structure that would rather fit to Ankrahmun and its Ankrahmun Tombs. Copy the runes you will find on this structure...", - "Are you up to that challenge?" + "Are you up to that challenge?", }, npc, creature) npcHandler:setTopic(playerId, 25) - elseif player:getStorageValue(Storage.ExplorerSociety.TheRuneWritings) == 43 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 43 then + elseif player:getStorageValue(Storage.ExplorerSociety.TheRuneWritings) == 43 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 43 then npcHandler:say("Did you create a copy of the ancient runes as requested?", npc, creature) npcHandler:setTopic(playerId, 26) end @@ -390,7 +337,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Fine, though it takes more then a mere lip service to join our ranks. To prove your dedication to the cause you will have to acquire an item for us ...", "The mission should be simple to fulfil. For our excavations we have ordered a sturdy pickaxe in Kazordoon. You would have to seek out this trader Uzgod and get the pickaxe for us ...", - "Simple enough? Are you interested in this task?" + "Simple enough? Are you interested in this task?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then @@ -404,7 +351,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 5) npcHandler:say({ "Excellent, you brought just the tool we need! Of course it was only a simple task. However ...", - "I officially welcome you to the explorer society. From now on you can ask for missions to improve your rank." + "I officially welcome you to the explorer society. From now on you can ask for missions to improve your rank.", }, npc, creature) npcHandler:setTopic(playerId, 0) end @@ -413,7 +360,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 5) npcHandler:say({ "So listen please: Take this ice pick and use it on a block of ice in the caves beneath Folda. Get some ice and bring it here as fast as you can ...", - "Should the ice melt away, report on your ice delivery mission anyway. I will then tell you if the time is right to start another mission." + "Should the ice melt away, report on your ice delivery mission anyway. I will then tell you if the time is right to start another mission.", }, npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(3456, 1) @@ -436,7 +383,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 8) npcHandler:say({ "This preparation kit will allow you to collect a purple butterfly you have killed ...", - "Just use it on the fresh corpse of a purple butterfly, return the prepared butterfly to me and give me a report of your butterfly hunt." + "Just use it on the fresh corpse of a purple butterfly, return the prepared butterfly to me and give me a report of your butterfly hunt.", }, npc, creature) npcHandler:setTopic(playerId, 0) player:addItem(4863, 1) @@ -501,7 +448,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "You have indeed the spirit of an adventurer! In the south-east of Tiquanda is a small settlement of the lizard people ...", "Beneath the newly constructed temple there, the lizards hide the said urn. Our attempts to acquire this item were without success ...", - "Perhaps you are more successful." + "Perhaps you are more successful.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 16 then @@ -520,7 +467,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ExplorerSociety.BonelordsDoor, 1) npcHandler:say({ "Excellent! So travel to the city of Darashia and then head north-east for the pyramid ...", - "If any documents are left, you probably find them in the catacombs beneath. Good luck!" + "If any documents are left, you probably find them in the catacombs beneath. Good luck!", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 18 then @@ -539,7 +486,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ExplorerSociety.OrcDoor, 1) npcHandler:say({ "You are a brave soul. As far as we can tell, the orcs maintain some sort of training facility in some hill in the north-east of their city ...", - "There you should find lots of their war wolves and hopefully also some of the orcish powder. Good luck!" + "There you should find lots of their war wolves and hopefully also some of the orcish powder. Good luck!", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 20 then @@ -604,7 +551,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Fine. The society is looking for new means to travel. Some of our most brilliant minds have some theories about astral travel that they want to research further ...", "Therefore we need you to collect some ectoplasm from the corpse of a ghost. We will supply you with a collector that you can use on the body of a slain ghost ...", - "Do you think you are ready for that mission?" + "Do you think you are ready for that mission?", }, npc, creature) npcHandler:setTopic(playerId, 28) elseif npcHandler:getTopic(playerId) == 28 then @@ -627,7 +574,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 30 then npcHandler:say({ "That is quite courageous. We know, it's much we are asking for. The queen of the banshees lives in the so called Ghostlands, south west of Carlin. It is rumoured that her lair is located in the deepest dungeons beneath that cursed place ...", - "Any violence will probably be futile, you will have to negotiate with her. Try to get a spectral dress from her. Good luck." + "Any violence will probably be futile, you will have to negotiate with her. Try to get a spectral dress from her. Good luck.", }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.ExplorerSociety.TheSpectralDress, 48) @@ -645,7 +592,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 32 then npcHandler:say({ "Good, just take this spectral essence and use it on the strange carving in this building as well as on the corresponding tile in our base at Northport ...", - "As soon as you have charged the portal tiles that way, report about the spectral portals." + "As soon as you have charged the portal tiles that way, report about the spectral portals.", }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.ExplorerSociety.TheSpectralStone, 53) @@ -674,7 +621,7 @@ local function creatureSayCallback(npc, creature, type, message) player:addItem(3031, 50) npcHandler:setTopic(playerId, 0) else - npcHandler:say("No you don\'t.", npc, creature) + npcHandler:say("No you don't.", npc, creature) npcHandler:setTopic(playerId, 0) end -- SKULL OF RATHA / GIANT SMITHHAMMER @@ -696,15 +643,13 @@ local function creatureSayCallback(npc, creature, type, message) -- ANSWER NO -- SKULL OF RATHA / GIANT SMITHHAMMER - elseif MsgContains(message, "skull of ratha") - and player:getStorageValue(Storage.ExplorerSociety.SkullOfRatha) < 1 then + elseif MsgContains(message, "skull of ratha") and player:getStorageValue(Storage.ExplorerSociety.SkullOfRatha) < 1 then npcHandler:say({ "Ratha was a great explorer and even greater ladies' man. Sadly he never returned from a visit to the amazons. Probably he is dead ...", - "The society offers a substantial reward for the retrieval of Ratha or his remains. Do you have any news about Ratha?" + "The society offers a substantial reward for the retrieval of Ratha or his remains. Do you have any news about Ratha?", }, npc, creature) npcHandler:setTopic(playerId, 33) - elseif MsgContains(message, "giant smithhammer") - and player:getStorageValue(Storage.ExplorerSociety.GiantSmithHammer) < 1 then + elseif MsgContains(message, "giant smithhammer") and player:getStorageValue(Storage.ExplorerSociety.GiantSmithHammer) < 1 then npcHandler:say("The explorer society is looking for a genuine giant smith hammer for our collection. It is rumoured the cyclopses of the Plains of Havoc might be using one. Did you by chance obtain such a hammer?", npc, creature) npcHandler:setTopic(playerId, 34) -- SKULL OF RATHA / GIANT SMITHHAMMER @@ -735,7 +680,7 @@ npcConfig.shop = { { itemName = "hydra egg", clientId = 4839, sell = 500 }, { itemName = "old parchment", clientId = 4831, sell = 500 }, { itemName = "orichalcum pearl", clientId = 5021, buy = 80 }, - { itemName = "skull of Ratha", clientId = 3207, sell = 250 } + { itemName = "skull of Ratha", clientId = 3207, sell = 250 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -746,7 +691,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/mortis.lua b/data-otservbr-global/npc/mortis.lua index 44e0a7991d3..76670d08742 100644 --- a/data-otservbr-global/npc/mortis.lua +++ b/data-otservbr-global/npc/mortis.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 21, lookFeet = 20, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/morun.lua b/data-otservbr-global/npc/morun.lua index 5aaa6695ed1..76725a4c35a 100644 --- a/data-otservbr-global/npc/morun.lua +++ b/data-otservbr-global/npc/morun.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 5, lookLegs = 26, lookFeet = 76, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/mother_of_jack.lua b/data-otservbr-global/npc/mother_of_jack.lua index eaf78642d16..02339c5f1a6 100644 --- a/data-otservbr-global/npc/mother_of_jack.lua +++ b/data-otservbr-global/npc/mother_of_jack.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 60, lookLegs = 117, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -29,7 +29,7 @@ npcConfig.voices = { { text = "JAAAAACK? EVERYTHING ALRIGHT DOWN THERE?" }, { text = "Oh dear, I can't find anything in here!" }, { text = "There is still some dust on the drawer over there. What where you thinking, Jane?" }, - { text = "Jane!" } + { text = "Jane!" }, } local keywordHandler = KeywordHandler:new() @@ -68,37 +68,39 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "jack") then - if (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 5) then - if (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Mother) < 1) then + if player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 5 then + if player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Mother) < 1 then npcHandler:say( "What about him? He's downstairs as he always has been. He never went away from home \z any further than into the forest nearby. He rarely ever took a walk to Edron, did he?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 1) end end elseif MsgContains(message, "no") then - if (npcHandler:getTopic(playerId) == 2) then + if npcHandler:getTopic(playerId) == 2 then npcHandler:say( "Thought so. Of course he wouldn't do anything wrong. And he went where? Edron. Hm. I can \z see nothing wrong with that. But... he wasn't there often, was he?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 3) end elseif MsgContains(message, "yes") then - if (npcHandler:getTopic(playerId) == 1) then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say("What...? But he wasn't up to something, was he?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif (npcHandler:getTopic(playerId) == 3) then - npcHandler:say( - { - "Oh my... he did what? Why was he there? Edron Academy? ...", - "I see... this cannot be. Spectrofuss? Who? Jack! When? How? But why did he do that? Jack!! \z + elseif npcHandler:getTopic(playerId) == 3 then + npcHandler:say({ + "Oh my... he did what? Why was he there? Edron Academy? ...", + "I see... this cannot be. Spectrofuss? Who? Jack! When? How? But why did he do that? Jack!! \z JACK!! When I find him he owes me an EXPLANATION. Thanks for telling \z me what he is actually doing in his FREE TIME. ...", - "JAAAAACK!" - }, - npc, creature) + "JAAAAACK!", + }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.Mother, 1) end diff --git a/data-otservbr-global/npc/mr._west.lua b/data-otservbr-global/npc/mr._west.lua index a08f77f2cce..32e0f340d35 100644 --- a/data-otservbr-global/npc/mr._west.lua +++ b/data-otservbr-global/npc/mr._west.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 25, lookLegs = 29, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,9 +54,9 @@ local function greetCallback(npc, creature) local player = Player(creature) local playerId = player:getId() - if (player:getStorageValue(Storage.InServiceofYalahar.MrWestDoor) == 1) then + if player:getStorageValue(Storage.InServiceofYalahar.MrWestDoor) == 1 then npcHandler:setMessage(MESSAGE_GREET, "Wh .. What? How did you get here? Where are all the guards? You .. you could have killed me but yet you chose to talk? What a relief! ... So what brings you here my friend, if I might call you like that? ") - elseif (player:getStorageValue(Storage.InServiceofYalahar.MrWestDoor) == 2) then + elseif player:getStorageValue(Storage.InServiceofYalahar.MrWestDoor) == 2 then npcHandler:setMessage(MESSAGE_GREET, "Murderer! But .. I give in, you won! ... Dictate me your conditions but please, I beg you, spare my life. What do you want?") end return true @@ -70,15 +70,15 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "mission")) then - if (player:getStorageValue(Storage.InServiceofYalahar.Questline) == 24) then - if (player:getStorageValue(Storage.InServiceofYalahar.MrWestDoor) == 1) then + if MsgContains(message, "mission") then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 24 then + if player:getStorageValue(Storage.InServiceofYalahar.MrWestDoor) == 1 then npcHandler:say("Indeed, I can see the benefits of a mutual agreement. I will later read the details and send a letter to your superior. ", npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 25) player:setStorageValue(Storage.InServiceofYalahar.Mission04, 3) -- StorageValue for Questlog "Mission 04: Good to be Kingpin" player:setStorageValue(Storage.InServiceofYalahar.MrWestStatus, 1) npcHandler:setTopic(playerId, 0) - elseif (player:getStorageValue(Storage.InServiceofYalahar.MrWestDoor) == 2) then + elseif player:getStorageValue(Storage.InServiceofYalahar.MrWestDoor) == 2 then npcHandler:say("Yes, for the sake of my life I'll accept those terms. I know when I have lost. Tell your master I will comply with his orders. ", npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 25) player:setStorageValue(Storage.InServiceofYalahar.Mission04, 4) -- StorageValue for Questlog "Mission 04: Good to be Kingpin" diff --git a/data-otservbr-global/npc/mr_brandon.lua b/data-otservbr-global/npc/mr_brandon.lua index 84b576d932f..0528dee4ba2 100644 --- a/data-otservbr-global/npc/mr_brandon.lua +++ b/data-otservbr-global/npc/mr_brandon.lua @@ -16,18 +16,18 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = ' Maybe I should rearrange some warm currents to get rid of this horrible fog.' }, - { text = 'All these treasures I cannot reach... what a pity.' } + { text = " Maybe I should rearrange some warm currents to get rid of this horrible fog." }, + { text = "All these treasures I cannot reach... what a pity." }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/mr_morris.lua b/data-otservbr-global/npc/mr_morris.lua index 2bd51ec9b8e..5cb155a88c9 100644 --- a/data-otservbr-global/npc/mr_morris.lua +++ b/data-otservbr-global/npc/mr_morris.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 0, lookFeet = 0, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -32,11 +32,11 @@ npcConfig.voices = { { text = "Hey, you. Yes, you. I could use your help." }, { text = " The Adventurers' Guild really should have equipped me with more man power. \z - Who's to keep all those monsters in check?" + Who's to keep all those monsters in check?", }, { text = "So much to investigate, so little time..." }, { text = "Buying all sorts of creature products!" }, - { text = "You're looking thoughtful. Maybe I can help you?" } + { text = "You're looking thoughtful. Maybe I can help you?" }, } local keywordHandler = KeywordHandler:new() @@ -76,22 +76,18 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "amulet") then if player:getStorageValue(Storage.Quest.U10_55.Dawnport.TheLostAmulet) < 1 then - npcHandler:say( - { - "One of our ...less fortunate members lost an ancient amulet somewhere on the island, \z + npcHandler:say({ + "One of our ...less fortunate members lost an ancient amulet somewhere on the island, \z along with his life. If you could retrieve the amulet at least, there's a little reward. \z - Would you go on that errand?" - }, - npc, creature, 10) + Would you go on that errand?", + }, npc, creature, 10) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.Quest.U10_55.Dawnport.TheLostAmulet) == 2 and player:getItemCount(21379) == 1 then - npcHandler:say( - { - "Ah, you found the amulet! Ah. Really? Poor Dormovo. \z + npcHandler:say({ + "Ah, you found the amulet! Ah. Really? Poor Dormovo. \z Always a bit hasty. Forgot his rope, or food, or potions - \z - it was to be expected he would meet an early end. Oh, well. ..." - }, - npc, creature, 0) + it was to be expected he would meet an early end. Oh, well. ...", + }, npc, creature, 0) player:removeItem(21379, 1) player:addItem(3031, 50) player:setStorageValue(Storage.Quest.U10_55.Dawnport.TheLostAmulet, 3) @@ -99,15 +95,21 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "log book") then if player:getStorageValue(Storage.Quest.U10_55.Dawnport.TornLogBook) < 1 then - npcHandler:say("The first log book from the first foray group has been stolen by trolls. \z + npcHandler:say( + "The first log book from the first foray group has been stolen by trolls. \z One wonders what for, as they can hardly read! Anyway, we need it back. \z - Would you go looking for it?", npc, creature) + Would you go looking for it?", + npc, + creature + ) npcHandler:setTopic(playerId, 2) - elseif player:getStorageValue(Storage.Quest.U10_55.Dawnport.TornLogBook) == 1 - and player:getStorageValue(Storage.Quest.U10_55.Dawnport.TheStolenLogBook) == 1 - and player:getItemCount(21378) == 1 then - npcHandler:say("Ah, yes, that's it! Torn and gnawed, but, ah well, the information is still retrievable. \z - Thank you. Here's your reward.", npc, creature) + elseif player:getStorageValue(Storage.Quest.U10_55.Dawnport.TornLogBook) == 1 and player:getStorageValue(Storage.Quest.U10_55.Dawnport.TheStolenLogBook) == 1 and player:getItemCount(21378) == 1 then + npcHandler:say( + "Ah, yes, that's it! Torn and gnawed, but, ah well, the information is still retrievable. \z + Thank you. Here's your reward.", + npc, + creature + ) player:removeItem(21378, 1) player:addItem(3031, 50) player:setStorageValue(Storage.Quest.U10_55.Dawnport.TheStolenLogBook, 2) @@ -115,22 +117,34 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "herbs") then if player:getStorageValue(Storage.Quest.U10_55.Dawnport.TheRareHerb) < 1 then - npcHandler:say("One of our ...less fortunate members lost an ancient amulet somewhere on the island, \z + npcHandler:say( + "One of our ...less fortunate members lost an ancient amulet somewhere on the island, \z along with his life. If you could retrieve the amulet at least, there's a little reward. \z - Would you go on that errand?", npc, creature) + Would you go on that errand?", + npc, + creature + ) npcHandler:setTopic(playerId, 3) elseif player:getStorageValue(Storage.Quest.U10_55.Dawnport.TheRareHerb) == 2 then - npcHandler:say("Ah, wonderful. Freshly cut and full of potent... whatever it is it does. \z - Thanks. Here's your reward.", npc, creature) + npcHandler:say( + "Ah, wonderful. Freshly cut and full of potent... whatever it is it does. \z + Thanks. Here's your reward.", + npc, + creature + ) player:addItem(3031, 50) player:setStorageValue(Storage.Quest.U10_55.Dawnport.TheRareHerb, 3) npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "key") then if player:getStorageValue(Storage.Quest.U10_55.Dawnport.TheDormKey) < 1 then - npcHandler:say("his is an undercover thing - the key to the dormitory has disappeared. \z + npcHandler:say( + "his is an undercover thing - the key to the dormitory has disappeared. \z No one wants to own up who has lost it, at least not to me. Maybe they'll talk to you. \z - I'll reward you if you find it. You in?", npc, creature) + I'll reward you if you find it. You in?", + npc, + creature + ) npcHandler:setTopic(playerId, 4) elseif player:getStorageValue(Storage.Quest.U10_55.Dawnport.TheDormKey) == 4 then npcHandler:say("Ah, you're here to report about the key - any progress?", npc, creature) @@ -138,26 +152,32 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say("Wonderful. I don't believe you will find Dormovo alive, though. \z + npcHandler:say( + "Wonderful. I don't believe you will find Dormovo alive, though. \z He would not have stayed abroad that long without refilling his inkpot for his research notes. \z - But at least the amulet should be retrieved.", npc, creature) + But at least the amulet should be retrieved.", + npc, + creature + ) player:setStorageValue(Storage.Quest.U10_55.Dawnport.TheLostAmulet, 1) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then - npcHandler:say("Good. The logbook or whatever is left of it is very valuable to my research. \z - If you return its contents to me, I will reward you accordingly.", npc, creature) + npcHandler:say( + "Good. The logbook or whatever is left of it is very valuable to my research. \z + If you return its contents to me, I will reward you accordingly.", + npc, + creature + ) player:setStorageValue(Storage.Quest.U10_55.Dawnport.TheStolenLogBook, 1) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then - npcHandler:say( - { - "Splendid. Those Dawnfire buds are just the thing against nasty troll bites, you know? \z + npcHandler:say({ + "Splendid. Those Dawnfire buds are just the thing against nasty troll bites, you know? \z But they're quite rare.", - "Look for a bush with yellow glowing flower buds. It grows only on a special, \z + "Look for a bush with yellow glowing flower buds. It grows only on a special, \z light grey-brown sand, and is usually surrounded by fireflies. \z - Use the herb to pluck off the fresh flower buds, and return to me." - }, - npc, creature, 10) + Use the herb to pluck off the fresh flower buds, and return to me.", + }, npc, creature, 10) player:setStorageValue(Storage.Quest.U10_55.Dawnport.TheRareHerb, 1) player:setStorageValue(Storage.Quest.U10_55.Dawnport.HerbFlower, 1) npcHandler:setTopic(playerId, 0) @@ -172,20 +192,32 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.Quest.U10_55.Dawnport.TheDormKey, 5) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 6 then - npcHandler:say("Good. Killing 20 will teach them a lesson, without provoking desperate retaliation. \z - Still, take care!", npc, creature) + npcHandler:say( + "Good. Killing 20 will teach them a lesson, without provoking desperate retaliation. \z + Still, take care!", + npc, + creature + ) player:setStorageValue(Storage.Quest.U10_55.Dawnport.MorriskTroll, 1) player:setStorageValue(Storage.Quest.U10_55.Dawnport.MorrisTrollCount, 0) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 7 then - npcHandler:say("Good. Killing 20 will teach them a lesson, without provoking desperate retaliation. \z - Still, take care!", npc, creature) + npcHandler:say( + "Good. Killing 20 will teach them a lesson, without provoking desperate retaliation. \z + Still, take care!", + npc, + creature + ) player:setStorageValue(Storage.Quest.U10_55.Dawnport.MorrisGoblin, 1) player:setStorageValue(Storage.Quest.U10_55.Dawnport.MorrisGoblinCount, 0) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 8 then - npcHandler:say("Good. Killing 20 will teach them a lesson, without provoking desperate retaliation. \z - Still, take care!", npc, creature) + npcHandler:say( + "Good. Killing 20 will teach them a lesson, without provoking desperate retaliation. \z + Still, take care!", + npc, + creature + ) player:setStorageValue(Storage.Quest.U10_55.Dawnport.MorrisMinos, 1) player:setStorageValue(Storage.Quest.U10_55.Dawnport.MorrisMinosCount, 0) npcHandler:setTopic(playerId, 0) @@ -194,13 +226,11 @@ local function creatureSayCallback(npc, creature, type, message) --Start Task elseif MsgContains(message, "trolls") then if player:getStorageValue(Storage.Quest.U10_55.Dawnport.MorriskTroll) < 1 then - npcHandler:say( - { - "Mountain trolls are worse than magpies, stealing everything that's not nailed down. \z + npcHandler:say({ + "Mountain trolls are worse than magpies, stealing everything that's not nailed down. \z Lately, they have raided our ship and made off with most of the Captain's rum stock!", - "I will reward you if you kill 20 mountain trolls. Would you do that?" - }, - npc, creature, 10) + "I will reward you if you kill 20 mountain trolls. Would you do that?", + }, npc, creature, 10) npcHandler:setTopic(playerId, 6) elseif player:getStorageValue(Storage.Quest.U10_55.Dawnport.MorriskTroll) == 1 then if player:getStorageValue(Storage.Quest.U10_55.Dawnport.MorrisTrollCount) >= 20 then @@ -214,13 +244,11 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "goblins") then if player:getStorageValue(Storage.Quest.U10_55.Dawnport.MorrisGoblin) < 1 then - npcHandler:say( - { - "Footmen of the muglex clan are worse than magpies, stealing everything that's not nailed down. \z + npcHandler:say({ + "Footmen of the muglex clan are worse than magpies, stealing everything that's not nailed down. \z Lately, they have raided our ship and made off with most of the Captain's rum stock!", - "I will reward you if you kill 20 muglex clan footmen. Would you do that?" - }, - npc, creature, 10) + "I will reward you if you kill 20 muglex clan footmen. Would you do that?", + }, npc, creature, 10) npcHandler:setTopic(playerId, 7) elseif player:getStorageValue(Storage.Quest.U10_55.Dawnport.MorrisGoblin) == 1 then if player:getStorageValue(Storage.Quest.U10_55.Dawnport.MorrisGoblinCount) >= 20 then @@ -234,13 +262,11 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "minotaur") then if player:getStorageValue(Storage.Quest.U10_55.Dawnport.MorrisMinos) < 1 then - npcHandler:say( - { - "Minotaur bruisers are worse than magpies, stealing everything that's not nailed down. \z + npcHandler:say({ + "Minotaur bruisers are worse than magpies, stealing everything that's not nailed down. \z Lately, they have raided our ship and made off with most of the Captain's rum stock!", - "I will reward you if you kill 20 minotaur bruisers. Would you do that?" - }, - npc, creature, 10) + "I will reward you if you kill 20 minotaur bruisers. Would you do that?", + }, npc, creature, 10) npcHandler:setTopic(playerId, 8) elseif player:getStorageValue(Storage.Quest.U10_55.Dawnport.MorrisMinos) == 1 then if player:getStorageValue(Storage.Quest.U10_55.Dawnport.MorrisMinosCount) >= 20 then @@ -259,157 +285,118 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ "quest" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Hm. Well, you look like you want to take a look at the unknown yourself. \z - I might have a job for you. Choose what you would like to do - {fetch} some things, or {kill} some monsters." - } -) -keywordHandler:addKeyword({ "mission" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Hm. Well, you look like you want to take a look at the unknown yourself. \z - I might have a job for you. Choose what you would like to do - {fetch} some things, or {kill} some monsters." - } -) -keywordHandler:addKeyword({ "fetch" }, StdModule.say, - { - npcHandler = npcHandler, - text = "There's three things that need to be found. You can look for an {amulet}, \z - a {log book} or pick some rare {herbs}. Take your pick." - } -) -keywordHandler:addKeyword({ "kill" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, those monsters have grown very uppity lately. There's a choice of three - mountain {trolls}, \z +keywordHandler:addKeyword({ "quest" }, StdModule.say, { + npcHandler = npcHandler, + text = "Hm. Well, you look like you want to take a look at the unknown yourself. \z + I might have a job for you. Choose what you would like to do - {fetch} some things, or {kill} some monsters.", +}) +keywordHandler:addKeyword({ "mission" }, StdModule.say, { + npcHandler = npcHandler, + text = "Hm. Well, you look like you want to take a look at the unknown yourself. \z + I might have a job for you. Choose what you would like to do - {fetch} some things, or {kill} some monsters.", +}) +keywordHandler:addKeyword({ "fetch" }, StdModule.say, { + npcHandler = npcHandler, + text = "There's three things that need to be found. You can look for an {amulet}, \z + a {log book} or pick some rare {herbs}. Take your pick.", +}) +keywordHandler:addKeyword({ "kill" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, those monsters have grown very uppity lately. There's a choice of three - mountain {trolls}, \z muglex clan {goblins} or, if you are up to it or together with some friends, \z - there's a need to weed out some risky {minotaur} bruisers. Choose your target." - } -) -keywordHandler:addKeyword({ "name" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Mr Morris will do." - } -) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "There's always someone who needs to be at the front, to take the first step into the unknown. \z - My whole life has been full of such steps." - } -) -keywordHandler:addKeyword({ "dawnport" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ah, that old story of how it was named? I spread it around. \z - Can't remember really what its origins are. Interesting archeological findings here, though." - } -) -keywordHandler:addKeyword({ "secrets of dawnport" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ah yes. Well, the magic that led us here seems to be most potent at a certain time, close before sunrise. \z + there's a need to weed out some risky {minotaur} bruisers. Choose your target.", +}) +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "Mr Morris will do.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "There's always someone who needs to be at the front, to take the first step into the unknown. \z + My whole life has been full of such steps.", +}) +keywordHandler:addKeyword({ "dawnport" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ah, that old story of how it was named? I spread it around. \z + Can't remember really what its origins are. Interesting archeological findings here, though.", +}) +keywordHandler:addKeyword({ "secrets of dawnport" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ah yes. Well, the magic that led us here seems to be most potent at a certain time, close before sunrise. \z Perhaps like a giant pulse, or beacon. Maybe the gods set it here, or a mad sorcerer, \z we don't know for sure yet... The portal deep down in the caves, resonating with magical energy where you came \z through, can maybe bring something else into this world as well. \z So it must be carefully guarded while we investigate the island for more clues... \z There are some very interesting archeological findings here on the island throughout. \z - Seems the island has drawn some cults here, but why they are gone now, no one knows." - } -) -keywordHandler:addKeyword({ "archeological" }, StdModule.say, - { - npcHandler = npcHandler, - text = "It seems that throughout its history, this island was inhabited by very different species. \z - I like to study their remains." - } -) -keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Yeah. Long time I haven't been to that place. How's old Vascalir? Still hanging around in the academy? \z - And Kraknaknork? Hah, I remember our brawl after that last card game. Fun times." - } -) -keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, - { - npcHandler = npcHandler, - text = "What about him? Is he in one of his dark moods again? That's his normal mood, I mean. \z - Just buy your armor, weaponry and ammunition there and don't worry." - } -) -keywordHandler:addKeyword({ "garamond" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Tired of the academy, maybe, but not of teaching. If you need druid or sorcerer spells, go to him." - } -) -keywordHandler:addKeyword({ "hamish" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ah, good old Hamish. A real wizard with potions. \z - Will supply you with very useful magic equipment for hunting." - } -) -keywordHandler:addKeyword({ "mr morris" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Exactly. Has a nice ring to it." - } -) -keywordHandler:addKeyword({ "oressa" }, StdModule.say, - { - npcHandler = npcHandler, - text = "She's a good listener if you should still hesitate as to the choice of your definite vocation." - } -) -keywordHandler:addKeyword({ "plunderpurse" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, for him it's always been just a question of ''Your gold or your life'' - gold it is nowadays. \z - You can stash your loose change at ol' Abram, but make sure to withdraw it once you leave Dawnport!" - } -) -keywordHandler:addKeyword({ "inigo" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ran across Inigo a few times on some remote islands, years and years ago. \z + Seems the island has drawn some cults here, but why they are gone now, no one knows.", +}) +keywordHandler:addKeyword({ "archeological" }, StdModule.say, { + npcHandler = npcHandler, + text = "It seems that throughout its history, this island was inhabited by very different species. \z + I like to study their remains.", +}) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { + npcHandler = npcHandler, + text = "Yeah. Long time I haven't been to that place. How's old Vascalir? Still hanging around in the academy? \z + And Kraknaknork? Hah, I remember our brawl after that last card game. Fun times.", +}) +keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, { + npcHandler = npcHandler, + text = "What about him? Is he in one of his dark moods again? That's his normal mood, I mean. \z + Just buy your armor, weaponry and ammunition there and don't worry.", +}) +keywordHandler:addKeyword({ "garamond" }, StdModule.say, { + npcHandler = npcHandler, + text = "Tired of the academy, maybe, but not of teaching. If you need druid or sorcerer spells, go to him.", +}) +keywordHandler:addKeyword({ "hamish" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ah, good old Hamish. A real wizard with potions. \z + Will supply you with very useful magic equipment for hunting.", +}) +keywordHandler:addKeyword({ "mr morris" }, StdModule.say, { + npcHandler = npcHandler, + text = "Exactly. Has a nice ring to it.", +}) +keywordHandler:addKeyword({ "oressa" }, StdModule.say, { + npcHandler = npcHandler, + text = "She's a good listener if you should still hesitate as to the choice of your definite vocation.", +}) +keywordHandler:addKeyword({ "plunderpurse" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, for him it's always been just a question of ''Your gold or your life'' - gold it is nowadays. \z + You can stash your loose change at ol' Abram, but make sure to withdraw it once you leave Dawnport!", +}) +keywordHandler:addKeyword({ "inigo" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ran across Inigo a few times on some remote islands, years and years ago. \z Talked him into coming along here, and he seems to enjoy helping newcomers find their way. \z - Passing his knowledge on to the next generation." - } -) -keywordHandler:addKeyword({ "richard" }, StdModule.say, - { - npcHandler = npcHandler, - text = "We found him here half-dead and fixed him up, now he fixes us dinner and roof beams. \z - Definitely someone you should check out for food, a rope and a shovel." - } -) -keywordHandler:addKeyword({ "ser tybald" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Been together through many a desperate situation. A romantic underneath it all. \z - Found the time to specialise on spells for paladins and knights somewhere along the way." - } -) -keywordHandler:addKeyword({ "wentworth" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Be careful that he doesn't bore you to death with accountants of, well, your bank account history." - } -) -keywordHandler:addKeyword({ "woblin" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ah, the goblin who sneaks around here now and then? Lives in a cave to the west, somewhere." - } -) + Passing his knowledge on to the next generation.", +}) +keywordHandler:addKeyword({ "richard" }, StdModule.say, { + npcHandler = npcHandler, + text = "We found him here half-dead and fixed him up, now he fixes us dinner and roof beams. \z + Definitely someone you should check out for food, a rope and a shovel.", +}) +keywordHandler:addKeyword({ "ser tybald" }, StdModule.say, { + npcHandler = npcHandler, + text = "Been together through many a desperate situation. A romantic underneath it all. \z + Found the time to specialise on spells for paladins and knights somewhere along the way.", +}) +keywordHandler:addKeyword({ "wentworth" }, StdModule.say, { + npcHandler = npcHandler, + text = "Be careful that he doesn't bore you to death with accountants of, well, your bank account history.", +}) +keywordHandler:addKeyword({ "woblin" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ah, the goblin who sneaks around here now and then? Lives in a cave to the west, somewhere.", +}) -npcHandler:setMessage(MESSAGE_GREET, "Welcome, young adventurer. \z -If you seek to help me with some things, I might have a little {quest} or {mission} for you.") +npcHandler:setMessage( + MESSAGE_GREET, + "Welcome, young adventurer. \z +If you seek to help me with some things, I might have a little {quest} or {mission} for you." +) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/mugluf.lua b/data-otservbr-global/npc/mugluf.lua index b2900689c29..b24e1679cfa 100644 --- a/data-otservbr-global/npc/mugluf.lua +++ b/data-otservbr-global/npc/mugluf.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 113, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ npcConfig.shop = { { itemName = "ham", clientId = 3582, buy = 8 }, { itemName = "meat", clientId = 3577, buy = 5 }, { itemName = "salmon", clientId = 3579, buy = 6 }, - { itemName = "salt", clientId = 33930, buy = 5 } + { itemName = "salt", clientId = 33930, buy = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -67,7 +67,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/mugruu.lua b/data-otservbr-global/npc/mugruu.lua index 83c25d2054c..d724b37b6c8 100644 --- a/data-otservbr-global/npc/mugruu.lua +++ b/data-otservbr-global/npc/mugruu.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 858 + lookType = 858, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -77,7 +77,7 @@ npcConfig.shop = { { itemName = "spectral bolt", clientId = 35902, buy = 70 }, { itemName = "tarsal arrow", clientId = 14251, buy = 6 }, { itemName = "throwing star", clientId = 3287, buy = 42 }, - { itemName = "vortex bolt", clientId = 14252, buy = 6 } + { itemName = "vortex bolt", clientId = 14252, buy = 6 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -88,7 +88,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/muhad.lua b/data-otservbr-global/npc/muhad.lua index 587a234dcdc..6228a1b0ebc 100644 --- a/data-otservbr-global/npc/muhad.lua +++ b/data-otservbr-global/npc/muhad.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 78, lookFeet = 114, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,15 +50,15 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'here' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the leader of the true sons of {Daraman}.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the leader of the true sons of {Daraman}.' }) -keywordHandler:addKeyword({ 'daraman' }, StdModule.say, { npcHandler = npcHandler, text = 'This is our home - the land of the desert.' }) -keywordHandler:addKeyword({ 'ankrahmun' }, StdModule.say, { npcHandler = npcHandler, text = 'We will fight that city until we get back what belongs to us.' }) -keywordHandler:addKeyword({ 'darashia' }, StdModule.say, { npcHandler = npcHandler, text = 'We avoid these places you call cities.' }) -keywordHandler:addKeyword({ 'city' }, StdModule.say, { npcHandler = npcHandler, text = 'I would go crazy living in a cage like that.' }) -keywordHandler:addKeyword({ 'offer' }, StdModule.say, { npcHandler = npcHandler, text = 'We have nothing that would be of value for you.' }) -keywordHandler:addKeyword({ 'undead' }, StdModule.say, { npcHandler = npcHandler, text = 'That is the curse for not following the rules of the desert. No son of the desert has ever come back from the dead.' }) -keywordHandler:addKeyword({ 'daraman' }, StdModule.say, { npcHandler = npcHandler, text = 'We have nothing that would be of value for you.' }) +keywordHandler:addKeyword({ "here" }, StdModule.say, { npcHandler = npcHandler, text = "I am the leader of the true sons of {Daraman}." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the leader of the true sons of {Daraman}." }) +keywordHandler:addKeyword({ "daraman" }, StdModule.say, { npcHandler = npcHandler, text = "This is our home - the land of the desert." }) +keywordHandler:addKeyword({ "ankrahmun" }, StdModule.say, { npcHandler = npcHandler, text = "We will fight that city until we get back what belongs to us." }) +keywordHandler:addKeyword({ "darashia" }, StdModule.say, { npcHandler = npcHandler, text = "We avoid these places you call cities." }) +keywordHandler:addKeyword({ "city" }, StdModule.say, { npcHandler = npcHandler, text = "I would go crazy living in a cage like that." }) +keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "We have nothing that would be of value for you." }) +keywordHandler:addKeyword({ "undead" }, StdModule.say, { npcHandler = npcHandler, text = "That is the curse for not following the rules of the desert. No son of the desert has ever come back from the dead." }) +keywordHandler:addKeyword({ "daraman" }, StdModule.say, { npcHandler = npcHandler, text = "We have nothing that would be of value for you." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -74,16 +74,16 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "arito") then if player:getStorageValue(Storage.TibiaTales.AritosTask) == 1 then npcHandler:say({ - 'I don\'t know how something like this ever could be possible. He met a girl from {Ankrahmun} and she must have twisted his head. Arito started to tell stories about the Pharaoh and about Ankrahmun. ...', - 'In the wink of an eye he left us and was never seen again. I think he feared revenge for leaving us - which partially is not without reason. Why are you asking me about him? Did he send you to me?' + "I don't know how something like this ever could be possible. He met a girl from {Ankrahmun} and she must have twisted his head. Arito started to tell stories about the Pharaoh and about Ankrahmun. ...", + "In the wink of an eye he left us and was never seen again. I think he feared revenge for leaving us - which partially is not without reason. Why are you asking me about him? Did he send you to me?", }, npc, creature) npcHandler:setTopic(playerId, 1) end elseif npcHandler:getTopic(playerId) == 1 then if MsgContains(message, "yes") then npcHandler:say({ - 'Ahh, I know that some of my people fear that Arito tells the old secrets of our race and want to see him dead but I don\'t bear him a grudge. I will have to have a serious word with my people. ...', - 'Tell him that he can consider himself as acquitted. He is not the reason for our attacks towards {Ankrahmun}.' + "Ahh, I know that some of my people fear that Arito tells the old secrets of our race and want to see him dead but I don't bear him a grudge. I will have to have a serious word with my people. ...", + "Tell him that he can consider himself as acquitted. He is not the reason for our attacks towards {Ankrahmun}.", }, npc, creature) player:setStorageValue(Storage.TibiaTales.AritosTask, 2) player:setStorageValue(Storage.TibiaTales.AritosTaskDoor, 1) diff --git a/data-otservbr-global/npc/muriel.lua b/data-otservbr-global/npc/muriel.lua index e271138624d..fdb5d42b5c4 100644 --- a/data-otservbr-global/npc/muriel.lua +++ b/data-otservbr-global/npc/muriel.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 97, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -67,10 +67,9 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'mission') then + if MsgContains(message, "mission") then if player:getLevel() < 35 then - npcHandler:say('Indeed there is something to be done, but I need someone more experienced. Come back later if you want to.', npc, creature) + npcHandler:say("Indeed there is something to be done, but I need someone more experienced. Come back later if you want to.", npc, creature) addEvent(function() releasePlayer(npc, creature) end, 1000) @@ -79,15 +78,15 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.TibiaTales.IntoTheBonePit) == -1 then npcHandler:say({ - 'Indeed, there is something you can do for me. You must know I am researching for a new spell against the undead. ...', - 'To achieve that I need a desecrated bone. There is a cursed bone pit somewhere in the dungeons north of Thais where the dead never rest. ...', - 'Find that pit, dig for a well-preserved human skeleton and conserve a sample in a special container which you receive from me. Are you going to help me?' + "Indeed, there is something you can do for me. You must know I am researching for a new spell against the undead. ...", + "To achieve that I need a desecrated bone. There is a cursed bone pit somewhere in the dungeons north of Thais where the dead never rest. ...", + "Find that pit, dig for a well-preserved human skeleton and conserve a sample in a special container which you receive from me. Are you going to help me?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.TibiaTales.IntoTheBonePit) == 1 then npcHandler:say({ - 'The rotworms dug deep into the soil north of Thais. Rumours say that you can access a place of endless moaning from there. ...', - 'No one knows how old that common grave is but the people who died there are cursed and never come to rest. A bone from that pit would be perfect for my studies.' + "The rotworms dug deep into the soil north of Thais. Rumours say that you can access a place of endless moaning from there. ...", + "No one knows how old that common grave is but the people who died there are cursed and never come to rest. A bone from that pit would be perfect for my studies.", }, npc, creature) addEvent(function() releasePlayer(npc, creature) @@ -96,37 +95,37 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.TibiaTales.IntoTheBonePit, 3) if player:removeItem(131, 1) then player:addItem(6299, 1) - npcHandler:say('Excellent! Now I can try to put my theoretical thoughts into practice and find a cure for the symptoms of undead. Here, take this for your efforts.', npc, creature) + npcHandler:say("Excellent! Now I can try to put my theoretical thoughts into practice and find a cure for the symptoms of undead. Here, take this for your efforts.", npc, creature) else npcHandler:say({ - 'I am so glad you are still alive. Benjamin found the container with the bone sample inside. Fortunately, I inscribe everything with my name, so he knew it was mine. ...', - 'I thought you have been haunted and killed by the undead. I\'m glad that this is not the case. Thank you for your help.' + "I am so glad you are still alive. Benjamin found the container with the bone sample inside. Fortunately, I inscribe everything with my name, so he knew it was mine. ...", + "I thought you have been haunted and killed by the undead. I'm glad that this is not the case. Thank you for your help.", }, npc, creature) end addEvent(function() releasePlayer(npc, creature) end, 1000) else - npcHandler:say('I am very glad you helped me, but I am very busy at the moment.', npc, creature) + npcHandler:say("I am very glad you helped me, but I am very busy at the moment.", npc, creature) addEvent(function() releasePlayer(npc, creature) end, 1000) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then player:addItem(4852, 1) player:setStorageValue(Storage.TibiaTales.IntoTheBonePit, 1) npcHandler:say({ - 'Great! Here is the container for the bone. Once, I used it to collect ectoplasma of ghosts, but it will work here as well. ...', - 'If you lose it, you can buy a new one from the explorer\'s society in North Port or Port Hope. Ask me about the mission when you come back.' + "Great! Here is the container for the bone. Once, I used it to collect ectoplasma of ghosts, but it will work here as well. ...", + "If you lose it, you can buy a new one from the explorer's society in North Port or Port Hope. Ask me about the mission when you come back.", }, npc, creature) addEvent(function() releasePlayer(npc, creature) end, 1000) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Ohh, then I need to find another adventurer who wants to earn a great reward. Bye!', npc, creature) + npcHandler:say("Ohh, then I need to find another adventurer who wants to earn a great reward. Bye!", npc, creature) addEvent(function() releasePlayer(npc, creature) end, 1000) @@ -135,9 +134,9 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_GREET, 'Greetings, |PLAYERNAME|! Looking for wisdom and power, eh?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Farewell.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Farewell.') +npcHandler:setMessage(MESSAGE_GREET, "Greetings, |PLAYERNAME|! Looking for wisdom and power, eh?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Farewell.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/murim.lua b/data-otservbr-global/npc/murim.lua index 331667f3115..3255d60c7d3 100644 --- a/data-otservbr-global/npc/murim.lua +++ b/data-otservbr-global/npc/murim.lua @@ -15,22 +15,22 @@ npcConfig.outfit = { lookHead = 116, lookBody = 24, lookLegs = 21, - lookFeet = 39 + lookFeet = 39, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/muzir.lua b/data-otservbr-global/npc/muzir.lua index bf734277d12..c7385a85a81 100644 --- a/data-otservbr-global/npc/muzir.lua +++ b/data-otservbr-global/npc/muzir.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 4, lookLegs = 11, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/myra.lua b/data-otservbr-global/npc/myra.lua index a946eae4c03..29593f4024a 100644 --- a/data-otservbr-global/npc/myra.lua +++ b/data-otservbr-global/npc/myra.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 0, lookFeet = 132, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,100 +51,117 @@ npcType.onCloseChannel = function(npc, creature) end -- Start -local tiaraKeyword = keywordHandler:addKeyword({ 'tiara' }, StdModule.say, { npcHandler = npcHandler, text = 'Well... maybe, if you help me a little, I could convince the academy of Edron that you are a valuable help here and deserve an award too. How about it?' }, function(player) return player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) == -1 end) -local yesKeyword = tiaraKeyword:addChildKeyword({ 'yes' }, StdModule.say, { +local tiaraKeyword = keywordHandler:addKeyword({ "tiara" }, StdModule.say, { npcHandler = npcHandler, text = "Well... maybe, if you help me a little, I could convince the academy of Edron that you are a valuable help here and deserve an award too. How about it?" }, function(player) + return player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) == -1 +end) +local yesKeyword = tiaraKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = { - 'Okay, great! You see, I need a few magical ingredients which I\'ve run out of. First of all, please bring me 70 bat wings. ...', - 'Then, I urgently need a lot of red cloth. I think 20 pieces should suffice. ...', - 'Oh, and also, I could use a whole load of ape fur. Please bring me 40 pieces. ...', - 'After that, um, let me think... I\'d like to have some holy orchids. Or no, many holy orchids, to be safe. Like 35. ...', - 'Then, 10 spools of spider silk yarn, 60 lizard scales and 40 red dragon scales. ...', - 'I know I\'m forgetting something.. wait... ah yes, 15 ounces of magic sulphur and 30 ounces of vampire dust. ...', - 'That\'s it already! Easy task, isn\'t it? I\'m sure you could get all of that within a short time. ...', - 'Did you understand everything I told you and are willing to handle this task?' - } -} -) - -yesKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine! Let\'s start with the 70 bat wings. I really feel uncomfortable out there in the jungle.', reset = true }, nil, - function(player) - player:setStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak, 1) - player:setStorageValue(Storage.OutfitQuest.MageSummoner.MissionHatCloak, 1) - player:setStorageValue(Storage.OutfitQuest.Ref, math.max(0, player:getStorageValue(Storage.OutfitQuest.Ref)) + 1) - end) -yesKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Would you like me to repeat the task requirements then?', moveup = 2 }) - -tiaraKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s a pity.', reset = true }) -keywordHandler:addAliasKeyword({ 'award' }) + "Okay, great! You see, I need a few magical ingredients which I've run out of. First of all, please bring me 70 bat wings. ...", + "Then, I urgently need a lot of red cloth. I think 20 pieces should suffice. ...", + "Oh, and also, I could use a whole load of ape fur. Please bring me 40 pieces. ...", + "After that, um, let me think... I'd like to have some holy orchids. Or no, many holy orchids, to be safe. Like 35. ...", + "Then, 10 spools of spider silk yarn, 60 lizard scales and 40 red dragon scales. ...", + "I know I'm forgetting something.. wait... ah yes, 15 ounces of magic sulphur and 30 ounces of vampire dust. ...", + "That's it already! Easy task, isn't it? I'm sure you could get all of that within a short time. ...", + "Did you understand everything I told you and are willing to handle this task?", + }, +}) + +yesKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Fine! Let's start with the 70 bat wings. I really feel uncomfortable out there in the jungle.", reset = true }, nil, function(player) + player:setStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak, 1) + player:setStorageValue(Storage.OutfitQuest.MageSummoner.MissionHatCloak, 1) + player:setStorageValue(Storage.OutfitQuest.Ref, math.max(0, player:getStorageValue(Storage.OutfitQuest.Ref)) + 1) +end) +yesKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Would you like me to repeat the task requirements then?", moveup = 2 }) + +tiaraKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "That's a pity.", reset = true }) +keywordHandler:addAliasKeyword({ "award" }) -- When asking for your award before completing your tasks -keywordHandler:addKeyword({ 'tiara' }, StdModule.say, { npcHandler = npcHandler, text = 'Before I can nominate you for an award, please complete your task' }, function(player) return player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) > 0 and player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) < 10 end) -keywordHandler:addAliasKeyword({ 'award' }) +keywordHandler:addKeyword({ "tiara" }, StdModule.say, { npcHandler = npcHandler, text = "Before I can nominate you for an award, please complete your task" }, function(player) + return player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) > 0 and player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) < 10 +end) +keywordHandler:addAliasKeyword({ "award" }) -- What happens when you say task local function addTaskKeyword(value, text) - keywordHandler:addKeyword({ 'task' }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) return player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) == value end) + keywordHandler:addKeyword({ "task" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) == value + end) if value == 10 then - keywordHandler:addAliasKeyword({ 'tiara' }) - keywordHandler:addAliasKeyword({ 'award' }) + keywordHandler:addAliasKeyword({ "tiara" }) + keywordHandler:addAliasKeyword({ "award" }) end end -addTaskKeyword(1, 'Your current task is to bring me 70 bat wings, |PLAYERNAME|.') -addTaskKeyword(2, 'Your current task is to bring me 20 pieces of red cloth, |PLAYERNAME|.') -addTaskKeyword(3, 'Your current task is to bring me 40 pieces of ape fur, |PLAYERNAME|.') -addTaskKeyword(4, 'Your current task is to bring me 35 holy orchids, |PLAYERNAME|.') -addTaskKeyword(5, 'Your current task is to bring me 10 spools of spider silk yarn, |PLAYERNAME|.') -addTaskKeyword(6, 'Your current task is to bring me 60 lizard scales, |PLAYERNAME|.') -addTaskKeyword(7, 'Your current task is to bring me 40 red dragon scales, |PLAYERNAME|.') -addTaskKeyword(8, 'Your current task is to bring me 15 ounces of magic sulphur, |PLAYERNAME|.') -addTaskKeyword(9, 'Your current task is to bring me 30 ounces of vampire dust, |PLAYERNAME|.') -addTaskKeyword(10, 'Go to the academy in Edron and tell Zoltan that I sent you, |PLAYERNAME|.') -addTaskKeyword(11, 'I don\'t have any tasks for you right now, |PLAYERNAME|. You were of great help.') +addTaskKeyword(1, "Your current task is to bring me 70 bat wings, |PLAYERNAME|.") +addTaskKeyword(2, "Your current task is to bring me 20 pieces of red cloth, |PLAYERNAME|.") +addTaskKeyword(3, "Your current task is to bring me 40 pieces of ape fur, |PLAYERNAME|.") +addTaskKeyword(4, "Your current task is to bring me 35 holy orchids, |PLAYERNAME|.") +addTaskKeyword(5, "Your current task is to bring me 10 spools of spider silk yarn, |PLAYERNAME|.") +addTaskKeyword(6, "Your current task is to bring me 60 lizard scales, |PLAYERNAME|.") +addTaskKeyword(7, "Your current task is to bring me 40 red dragon scales, |PLAYERNAME|.") +addTaskKeyword(8, "Your current task is to bring me 15 ounces of magic sulphur, |PLAYERNAME|.") +addTaskKeyword(9, "Your current task is to bring me 30 ounces of vampire dust, |PLAYERNAME|.") +addTaskKeyword(10, "Go to the academy in Edron and tell Zoltan that I sent you, |PLAYERNAME|.") +addTaskKeyword(11, "I don't have any tasks for you right now, |PLAYERNAME|. You were of great help.") -- Hand over items local function addItemKeyword(keyword, text, value, itemId, count, last) - local itemKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text[1] }, function(player) return player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) == value end) - itemKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'No, no. That\'s not enough, I fear.', reset = true }, function(player) return player:getItemCount(itemId) < count end) - local rewardKeyword = itemKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = text[2] }, nil, - function(player) - player:removeItem(itemId, count) - player:setStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak, player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) + 1) - player:setStorageValue(Storage.OutfitQuest.MageSummoner.MissionHatCloak, player:getStorageValue(Storage.OutfitQuest.MageSummoner.MissionHatCloak) + 1) - if not last then - npcHandler:resetNpc(player.uid) - end + local itemKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text[1] }, function(player) + return player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) == value + end) + itemKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "No, no. That's not enough, I fear.", reset = true }, function(player) + return player:getItemCount(itemId) < count + end) + local rewardKeyword = itemKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = text[2] }, nil, function(player) + player:removeItem(itemId, count) + player:setStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak, player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) + 1) + player:setStorageValue(Storage.OutfitQuest.MageSummoner.MissionHatCloak, player:getStorageValue(Storage.OutfitQuest.MageSummoner.MissionHatCloak) + 1) + if not last then + npcHandler:resetNpc(player.uid) end - ) + end) if last then - rewardKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'I thought so. Go to the academy of Edron and tell Zoltan that I sent you. I will send a nomination to him. You were really a great help. Thanks again!', reset = true }) - rewardKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Really? Well, if you should change your mind, go to the academy of Edron and tell Zoltan that I sent you. I will send a nomination to him.', reset = true }) + rewardKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "I thought so. Go to the academy of Edron and tell Zoltan that I sent you. I will send a nomination to him. You were really a great help. Thanks again!", reset = true }) + rewardKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Really? Well, if you should change your mind, go to the academy of Edron and tell Zoltan that I sent you. I will send a nomination to him.", reset = true }) end - itemKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s a pity.', reset = true }) + itemKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "That's a pity.", reset = true }) keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text[3] }) end -addItemKeyword('bat wing', { 'Oh, did you bring the 70 bat wings for me?', 'Thank you! I really needed them for my anti-wrinkle lotion. Now, please bring me 20 pieces of {red cloth}.', 'I love to say \'creatures of the night\'. Got a dramatic as well as romantic ring to it.' }, 1, 5894, 70) -addItemKeyword('red cloth', { 'Have you found 20 pieces of red cloth?', 'Great! This should be enough for my new dress. Don\'t forget to bring me 40 pieces of {ape fur} next!', 'Nice material for a cape, isn\'t it?' }, 2, 5911, 20) -addItemKeyword('ape fur', { 'Were you able to retrieve 40 pieces of ape fur?', 'Nice job, player. You see, I\'m testing a new depilation cream. I guess if it works on ape fur it\'s good quality. Next, please bring me 35 {holy orchids}.', 'This feels really smooth.' }, 3, 5883, 40) -addItemKeyword('holy orchid', { 'Did you convince the elves to give you 35 holy orchids?', 'Thank god! The scent of holy orchids is simply the only possible solution against the horrible stench from the tavern latrine. Now, please bring me 10 rolls of {spider silk yarn}!', 'I heard that some elves cultivate these flowers.' }, 4, 5922, 35) -addItemKeyword('spider silk', - { 'Oh, did you bring 10 spools of spider silk yarn for me?', 'I appreciate it. My pet doggie manages to bite through all sorts of leashes, which is why he is always gone. I\'m sure this strong yarn will keep him. Now, go for the 60 {lizard scales}!', 'Only very large spiders produce silk which is strong enough to be yarned. I heard that mermaids can turn spider silk into yarn.' }, 5, 5886, 10) -addItemKeyword('lizard scale', { 'Have you found 60 lizard scales?', 'Good job. They will look almost like sequins on my new dress. Please go for the 40 {red dragon scales} now.', 'Lizard scales are great for all sorts of magical potions.' }, 6, 5881, 60) -addItemKeyword('red dragon scale', { 'Were you able to get all 40 red dragon scales?', 'Thanks! They make a pretty decoration, don\'t you think? Please bring me 15 ounces of {magic sulphur} now!', 'Red dragon scales are hard to come by, but much harder than the green ones.' }, 7, 5882, 40) -addItemKeyword('magic sulphur', { 'Have you collected 15 ounces of magic sulphur?', 'Ah, that\'s enough magic sulphur for my new peeling. You should try it once, your skin gets incredibly smooth. Now, the only thing I need is {vampire dust}. 30 ounces will suffice.', 'Magic sulphur can be extracted from magical weapons. I heard that Djinns are good at magical extractions.' }, 8, 5904, 15) -addItemKeyword('vampire dust', { 'Have you gathered 30 ounces of vampire dust?', 'Ah, great. Now I can finally finish the potion which the academy of Edron asked me to. I guess, now you want your reward, don\'t you?', 'The Tibian vampires are quite restistant. I needs a special blessed stake to turn their corpse into dust, and it doesn\'t work all the time. Maybe a priest can help you.' }, 9, 5905, - 30, true) +addItemKeyword("bat wing", { "Oh, did you bring the 70 bat wings for me?", "Thank you! I really needed them for my anti-wrinkle lotion. Now, please bring me 20 pieces of {red cloth}.", "I love to say 'creatures of the night'. Got a dramatic as well as romantic ring to it." }, 1, 5894, 70) +addItemKeyword("red cloth", { "Have you found 20 pieces of red cloth?", "Great! This should be enough for my new dress. Don't forget to bring me 40 pieces of {ape fur} next!", "Nice material for a cape, isn't it?" }, 2, 5911, 20) +addItemKeyword("ape fur", { "Were you able to retrieve 40 pieces of ape fur?", "Nice job, player. You see, I'm testing a new depilation cream. I guess if it works on ape fur it's good quality. Next, please bring me 35 {holy orchids}.", "This feels really smooth." }, 3, 5883, 40) +addItemKeyword("holy orchid", { "Did you convince the elves to give you 35 holy orchids?", "Thank god! The scent of holy orchids is simply the only possible solution against the horrible stench from the tavern latrine. Now, please bring me 10 rolls of {spider silk yarn}!", "I heard that some elves cultivate these flowers." }, 4, 5922, 35) +addItemKeyword( + "spider silk", + { "Oh, did you bring 10 spools of spider silk yarn for me?", "I appreciate it. My pet doggie manages to bite through all sorts of leashes, which is why he is always gone. I'm sure this strong yarn will keep him. Now, go for the 60 {lizard scales}!", "Only very large spiders produce silk which is strong enough to be yarned. I heard that mermaids can turn spider silk into yarn." }, + 5, + 5886, + 10 +) +addItemKeyword("lizard scale", { "Have you found 60 lizard scales?", "Good job. They will look almost like sequins on my new dress. Please go for the 40 {red dragon scales} now.", "Lizard scales are great for all sorts of magical potions." }, 6, 5881, 60) +addItemKeyword("red dragon scale", { "Were you able to get all 40 red dragon scales?", "Thanks! They make a pretty decoration, don't you think? Please bring me 15 ounces of {magic sulphur} now!", "Red dragon scales are hard to come by, but much harder than the green ones." }, 7, 5882, 40) +addItemKeyword("magic sulphur", { "Have you collected 15 ounces of magic sulphur?", "Ah, that's enough magic sulphur for my new peeling. You should try it once, your skin gets incredibly smooth. Now, the only thing I need is {vampire dust}. 30 ounces will suffice.", "Magic sulphur can be extracted from magical weapons. I heard that Djinns are good at magical extractions." }, 8, 5904, 15) +addItemKeyword( + "vampire dust", + { "Have you gathered 30 ounces of vampire dust?", "Ah, great. Now I can finally finish the potion which the academy of Edron asked me to. I guess, now you want your reward, don't you?", "The Tibian vampires are quite restistant. I needs a special blessed stake to turn their corpse into dust, and it doesn't work all the time. Maybe a priest can help you." }, + 9, + 5905, + 30, + true +) -- Basic -keywordHandler:addKeyword({ 'outfit' }, StdModule.say, { npcHandler = npcHandler, text = 'This Tiara is an award by the academy of Edron in recognition of my service here.' }) +keywordHandler:addKeyword({ "outfit" }, StdModule.say, { npcHandler = npcHandler, text = "This Tiara is an award by the academy of Edron in recognition of my service here." }) -npcHandler:setMessage(MESSAGE_GREET, 'Greetings, |PLAYERNAME|. If you are looking for sorcerer {spells} don\'t hesitate to ask.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Farewell, |PLAYERNAME|.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Farewell.') +npcHandler:setMessage(MESSAGE_GREET, "Greetings, |PLAYERNAME|. If you are looking for sorcerer {spells} don't hesitate to ask.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell, |PLAYERNAME|.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Farewell.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/mysterious_ornate_chest.lua b/data-otservbr-global/npc/mysterious_ornate_chest.lua index b29e8f47e6b..08aaae83320 100644 --- a/data-otservbr-global/npc/mysterious_ornate_chest.lua +++ b/data-otservbr-global/npc/mysterious_ornate_chest.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 19068 + lookTypeEx = 19068, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/nah_bob.lua b/data-otservbr-global/npc/nah_bob.lua index c21e80bc3a7..6342c75baab 100644 --- a/data-otservbr-global/npc/nah_bob.lua +++ b/data-otservbr-global/npc/nah_bob.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 80 + lookType = 80, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,34 +53,32 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'cookie') then - if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 - and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Djinn) ~= 1 then - npcHandler:say('You brought cookies! How nice of you! Can I have one?', npc, creature) + if MsgContains(message, "cookie") then + if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Djinn) ~= 1 then + npcHandler:say("You brought cookies! How nice of you! Can I have one?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then if not player:removeItem(130, 1) then - npcHandler:say('You have no cookie that I\'d like.', npc, creature) + npcHandler:say("You have no cookie that I'd like.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:setStorageValue(Storage.WhatAFoolish.CookieDelivery.Djinn, 1) if player:getCookiesDelivered() == 10 then - player:addAchievement('Allow Cookies?') + player:addAchievement("Allow Cookies?") end npc:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) - npcHandler:say('You see, good deeds like this will ... YOU ... YOU SPAWN OF EVIL! I WILL MAKE SURE THE MASTER LEARNS ABOUT THIS!', npc, creature) + npcHandler:say("You see, good deeds like this will ... YOU ... YOU SPAWN OF EVIL! I WILL MAKE SURE THE MASTER LEARNS ABOUT THIS!", npc, creature) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('I see.', npc, creature) + npcHandler:say("I see.", npc, creature) npcHandler:setTopic(playerId, 0) end end @@ -92,7 +90,7 @@ local function onTradeRequest(npc, creature) local playerId = player:getId() if player:getStorageValue(Storage.DjinnWar.MaridFaction.Mission03) ~= 3 then - npcHandler:say('I\'m sorry, human. But you need Gabel\'s permission to trade with me.', npc, creature) + npcHandler:say("I'm sorry, human. But you need Gabel's permission to trade with me.", npc, creature) return false end @@ -102,7 +100,7 @@ end npcHandler:setMessage(MESSAGE_GREET, " Another {customer}! I've only just sat down! What is it, |PLAYERNAME|?") npcHandler:setMessage(MESSAGE_FAREWELL, "Bye now, Neutrala |PLAYERNAME|. Visit old Bob again one day!") npcHandler:setMessage(MESSAGE_WALKAWAY, "Bye then.") -npcHandler:setMessage(MESSAGE_SENDTRADE, 'At your service, just browse through my wares.') +npcHandler:setMessage(MESSAGE_SENDTRADE, "At your service, just browse through my wares.") npcHandler:setCallback(CALLBACK_ON_TRADE_REQUEST, onTradeRequest) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) @@ -135,7 +133,7 @@ npcConfig.shop = { { itemName = "shadow sceptre", clientId = 7451, sell = 10000 }, { itemName = "spike sword", clientId = 3271, buy = 8000, sell = 1000 }, { itemName = "thaian sword", clientId = 7391, sell = 16000 }, - { itemName = "war hammer", clientId = 3279, buy = 10000, sell = 1200 } + { itemName = "war hammer", clientId = 3279, buy = 10000, sell = 1200 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -146,7 +144,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/naji.lua b/data-otservbr-global/npc/naji.lua index 57d774b4597..7460ed4202c 100644 --- a/data-otservbr-global/npc/naji.lua +++ b/data-otservbr-global/npc/naji.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 95, lookFeet = 113, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "It's a wise idea to store your money in your bank account.", yell = false } + { text = "It's a wise idea to store your money in your bank account.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/narsai.lua b/data-otservbr-global/npc/narsai.lua index e03ddc96ac7..42e375956f3 100644 --- a/data-otservbr-global/npc/narsai.lua +++ b/data-otservbr-global/npc/narsai.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 74, lookLegs = 10, lookFeet = 79, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,8 +57,7 @@ local function greetCallback(npc, creature) if player:getStorageValue(Storage.Kilmaresh.First.Access) < 1 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) - and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then + elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 15) elseif player:getStorageValue(Storage.Kilmaresh.First.Mission) == 4 then @@ -116,7 +115,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/navigator.lua b/data-otservbr-global/npc/navigator.lua index 163312f834d..dcf18f61352 100644 --- a/data-otservbr-global/npc/navigator.lua +++ b/data-otservbr-global/npc/navigator.lua @@ -16,17 +16,16 @@ npcConfig.outfit = { lookBody = 123, lookLegs = 116, lookFeet = 123, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) - npcType.onAppear = function(npc, creature) npcHandler:onAppear(npc, creature) end @@ -51,97 +50,73 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (MsgContains(message, "flou")) then - if (getPlayerStorageValue(creature, Storage.Navigator) < 1) then + if MsgContains(message, "flou") then + if getPlayerStorageValue(creature, Storage.Navigator) < 1 then npcHandler:say("Lhnjei gouthn naumpi! I know why you are here. I can {explain} everything.", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif (MsgContains(message, "explain")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "explain") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say("By entering this place, you have earned the right to learn what this is all about. This is a long story. Are you sure you want to hear this, {yes}?", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif (MsgContains(message, "helmet")) then - if (npcHandler:getTopic(playerId) == 7) then - npcHandler:say( - { - "NAAAAARGH. If you promise to leave me alone and NOT TO TELL MY SECRET to anyone - you can have one. ...", - "NO! Not the one I'm wearing. I am BOUND to this device. This suit has granted me a longer life. However, once you have spent a certain time with this - there is no turning back if you know what I mean. ...", - "The armor will merge with your very body. Holding you captive, holding your life in its hands like a ransom. ...", - "Using Deepling craft and various components from down here, I created several spare helmets - just in case this one gets damaged. If you return that small golden anchor to me, you can have one. Will you?", - }, - npc, - creature - ) + elseif MsgContains(message, "helmet") then + if npcHandler:getTopic(playerId) == 7 then + npcHandler:say({ + "NAAAAARGH. If you promise to leave me alone and NOT TO TELL MY SECRET to anyone - you can have one. ...", + "NO! Not the one I'm wearing. I am BOUND to this device. This suit has granted me a longer life. However, once you have spent a certain time with this - there is no turning back if you know what I mean. ...", + "The armor will merge with your very body. Holding you captive, holding your life in its hands like a ransom. ...", + "Using Deepling craft and various components from down here, I created several spare helmets - just in case this one gets damaged. If you return that small golden anchor to me, you can have one. Will you?", + }, npc, creature) npcHandler:setTopic(playerId, 8) end - elseif (MsgContains(message, "no")) then - if (npcHandler:getTopic(playerId) == 3) then - npcHandler:say( - { - "When none of my men returned, I forced myself to make a decision. Either dying on this dead ship or plunging into the liquid black beneath. ...", - "In my desperation my thoughts fell onto a strange armor - a gift from a trader we dealt with just before the storm. Strange ornaments and fish-like elements decorated this armor. We thought it would fit just perfectly into the captain's cabin. ...", - "He said something like a 'blessed breath' and 'to subdue the drift'. We thought he wanted to sell us worthless decoration and make it look interesting. If I had only listened to what he said. ...", - "I figured that this thing would have something to do with diving or at least protect me from the icy water. I put it on, grabbed a shimmer glower from our storage to light my path and jumped in. ...", - "Do you want me to go on?" - }, - npc, - creature - ) + elseif MsgContains(message, "no") then + if npcHandler:getTopic(playerId) == 3 then + npcHandler:say({ + "When none of my men returned, I forced myself to make a decision. Either dying on this dead ship or plunging into the liquid black beneath. ...", + "In my desperation my thoughts fell onto a strange armor - a gift from a trader we dealt with just before the storm. Strange ornaments and fish-like elements decorated this armor. We thought it would fit just perfectly into the captain's cabin. ...", + "He said something like a 'blessed breath' and 'to subdue the drift'. We thought he wanted to sell us worthless decoration and make it look interesting. If I had only listened to what he said. ...", + "I figured that this thing would have something to do with diving or at least protect me from the icy water. I put it on, grabbed a shimmer glower from our storage to light my path and jumped in. ...", + "Do you want me to go on?", + }, npc, creature) npcHandler:setTopic(playerId, 4) end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 2) then - npcHandler:say( - { - "I was once captain of a ship, the Skyflare. We were traders for King Tibianus and on our way home when we got into a storm. We fought hard to escape the cold grip of the sea. ...", - "I myself did what I could to navigate the Skyflare out of this mess. They depended on me. Me, the navigator. And I succeeded. ...", - "However, when the sea calmed down and the rain was finally gone, we recognised that our ship wouldn't move. It wasn't my fault. ...", - "There was a strong gale and we could already see this island on the horizon. There were seagulls all around the Skyflare to lead us to dry land. But the ship did not move a single inch. It was NOT my fault. ...", - "We dived under the bow and saw that it was stuck right on the tip of a sharp rock. The world below us was treacherous, we could see large underwater mountains and a labyrinthine system of caves and holes. ...", - "Some of my men panicked and hijacked the dinghies to reach the island, others tried to swim. I remained on the ship. It was not my FAULT. It was not. ..." - }, - npc, - creature - ) + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 2 then + npcHandler:say({ + "I was once captain of a ship, the Skyflare. We were traders for King Tibianus and on our way home when we got into a storm. We fought hard to escape the cold grip of the sea. ...", + "I myself did what I could to navigate the Skyflare out of this mess. They depended on me. Me, the navigator. And I succeeded. ...", + "However, when the sea calmed down and the rain was finally gone, we recognised that our ship wouldn't move. It wasn't my fault. ...", + "There was a strong gale and we could already see this island on the horizon. There were seagulls all around the Skyflare to lead us to dry land. But the ship did not move a single inch. It was NOT my fault. ...", + "We dived under the bow and saw that it was stuck right on the tip of a sharp rock. The world below us was treacherous, we could see large underwater mountains and a labyrinthine system of caves and holes. ...", + "Some of my men panicked and hijacked the dinghies to reach the island, others tried to swim. I remained on the ship. It was not my FAULT. It was not. ...", + }, npc, creature) npcHandler:say("Do you have enough, can I stop?", npc, creature) npcHandler:setTopic(playerId, 3) - elseif (npcHandler:getTopic(playerId) == 4) then - npcHandler:say( - { - "Hmpf. The armor was working. After some time I was surrounded by darkness and could only see as far as my shimmer glower would me allow to. But I didn't feel the cold - I could even breathe through that helmet. ...", - "I dived into the deep black. Across rugged mountains, vast fields of kelp, swarms of strange fish. ...", - "And then I laid my eyes on a creature I have never seen before. I now know that they call themselves Njey. You would call them the 'Creatures of the Deep' or 'Deeplings'. ...", - "I am now convinced that when they first saw me descending in that suit with the light of the shimmer glower encompassing me, they took me for their God King Qjell. And that's when it all started to make sense. Don't you agree?" - }, - npc, - creature - ) + elseif npcHandler:getTopic(playerId) == 4 then + npcHandler:say({ + "Hmpf. The armor was working. After some time I was surrounded by darkness and could only see as far as my shimmer glower would me allow to. But I didn't feel the cold - I could even breathe through that helmet. ...", + "I dived into the deep black. Across rugged mountains, vast fields of kelp, swarms of strange fish. ...", + "And then I laid my eyes on a creature I have never seen before. I now know that they call themselves Njey. You would call them the 'Creatures of the Deep' or 'Deeplings'. ...", + "I am now convinced that when they first saw me descending in that suit with the light of the shimmer glower encompassing me, they took me for their God King Qjell. And that's when it all started to make sense. Don't you agree?", + }, npc, creature) npcHandler:setTopic(playerId, 5) - elseif (npcHandler:getTopic(playerId) == 5) then - npcHandler:say( - { - "Of course you do. And they did, too. They obeyed me. They adored me. They followed me. ...", - "I learnt everything about their culture, their life, their goals and their problems. I found out about vile insect-like creatures inhabiting the surface of the island. And their waiting for the return of Qjell. ...", - "I practically rewrote their history. I WAS THE SECOND COMING. I WAS QJELL. I, THE NAVIGATOR. ...", - "And I navigated them out of their miserable lives. Away from their petty interests. I led them to a greater purpose - to form chaos out of order, to bring back the storm to the seas and to make THINGS MOVE. Do you want to hear the rest as well?" - }, - npc, - creature - ) + elseif npcHandler:getTopic(playerId) == 5 then + npcHandler:say({ + "Of course you do. And they did, too. They obeyed me. They adored me. They followed me. ...", + "I learnt everything about their culture, their life, their goals and their problems. I found out about vile insect-like creatures inhabiting the surface of the island. And their waiting for the return of Qjell. ...", + "I practically rewrote their history. I WAS THE SECOND COMING. I WAS QJELL. I, THE NAVIGATOR. ...", + "And I navigated them out of their miserable lives. Away from their petty interests. I led them to a greater purpose - to form chaos out of order, to bring back the storm to the seas and to make THINGS MOVE. Do you want to hear the rest as well?", + }, npc, creature) npcHandler:setTopic(playerId, 6) - elseif (npcHandler:getTopic(playerId) == 6) then - npcHandler:say( - { - "I control EVERYTHING from this room, navigating the fate of this land for more than a century now. Can you see all these funnels? My voice travels through them and throughout everything down here! ...", - "The stones on the beach? The trader up there? That was ME ALL THE TIME! I lured YOU into creating all this chaos up there and down here! ...", - "You thought you could choose sides? Think again! I nearly led you into the destruction of two species! ME, THE NAVIGATOR! I CONTROL YOU, I OWN YOU! QJELL AFAR GOU JEY!" - }, - npc, - creature - ) + elseif npcHandler:getTopic(playerId) == 6 then + npcHandler:say({ + "I control EVERYTHING from this room, navigating the fate of this land for more than a century now. Can you see all these funnels? My voice travels through them and throughout everything down here! ...", + "The stones on the beach? The trader up there? That was ME ALL THE TIME! I lured YOU into creating all this chaos up there and down here! ...", + "You thought you could choose sides? Think again! I nearly led you into the destruction of two species! ME, THE NAVIGATOR! I CONTROL YOU, I OWN YOU! QJELL AFAR GOU JEY!", + }, npc, creature) npcHandler:setTopic(playerId, 7) - elseif (npcHandler:getTopic(playerId) == 8) then + elseif npcHandler:getTopic(playerId) == 8 then npcHandler:say("Then take this one. And remember: DO NOT TELL ANYONE ABOUT ME OR ANYTHING YOU HAVE HEARD HERE TODAY.", npc, creature) player:addOutfitAddon(464, 2) player:addOutfitAddon(463, 2) diff --git a/data-otservbr-global/npc/neill.lua b/data-otservbr-global/npc/neill.lua index c8f4385c725..4dcd17a5665 100644 --- a/data-otservbr-global/npc/neill.lua +++ b/data-otservbr-global/npc/neill.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/nelliem.lua b/data-otservbr-global/npc/nelliem.lua index 93998ae9f08..5cc550db23f 100644 --- a/data-otservbr-global/npc/nelliem.lua +++ b/data-otservbr-global/npc/nelliem.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 100, lookLegs = 105, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -68,7 +68,7 @@ npcConfig.shop = { { itemName = "scythe", clientId = 3453, buy = 25 }, { itemName = "shovel", clientId = 3457, buy = 20 }, { itemName = "watering can", clientId = 650, buy = 50 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -79,7 +79,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/nelly.lua b/data-otservbr-global/npc/nelly.lua index 4b0b0a6aa71..b54709dd21d 100644 --- a/data-otservbr-global/npc/nelly.lua +++ b/data-otservbr-global/npc/nelly.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 5, lookLegs = 4, lookFeet = 19, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -115,7 +115,7 @@ npcConfig.shop = { { itemName = "wand of inferno", clientId = 3071, buy = 15000 }, { itemName = "wand of starstorm", clientId = 8092, buy = 18000 }, { itemName = "wand of voodoo", clientId = 8094, buy = 22000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -126,7 +126,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/nemal.lua b/data-otservbr-global/npc/nemal.lua index ca0a9684737..54371aced48 100644 --- a/data-otservbr-global/npc/nemal.lua +++ b/data-otservbr-global/npc/nemal.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 63, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/nezil.lua b/data-otservbr-global/npc/nezil.lua index ff6eebf3f69..58ea1cda4c8 100644 --- a/data-otservbr-global/npc/nezil.lua +++ b/data-otservbr-global/npc/nezil.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 116, lookBody = 58, lookLegs = 97, - lookFeet = 95 + lookFeet = 95, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -79,7 +79,7 @@ npcConfig.shop = { { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "waterskin of water", clientId = 2901, buy = 40, count = 1 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -90,7 +90,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/nibble.lua b/data-otservbr-global/npc/nibble.lua index 9c5f7a74fdc..d1fcc3e0321 100644 --- a/data-otservbr-global/npc/nibble.lua +++ b/data-otservbr-global/npc/nibble.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 61 + lookType = 61, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/nicholas.lua b/data-otservbr-global/npc/nicholas.lua index f4200d7d908..2a813bcd6e3 100644 --- a/data-otservbr-global/npc/nicholas.lua +++ b/data-otservbr-global/npc/nicholas.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 6, lookLegs = 95, lookFeet = 2, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -149,7 +149,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -160,7 +160,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/nielson.lua b/data-otservbr-global/npc/nielson.lua index b0a370a7899..5e7d0a6258b 100644 --- a/data-otservbr-global/npc/nielson.lua +++ b/data-otservbr-global/npc/nielson.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 68, lookFeet = 67, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passages to Senja, Folda and Vega.' } + { text = "Passages to Senja, Folda and Vega." }, } local keywordHandler = KeywordHandler:new() @@ -58,31 +58,25 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, - { - npcHandler = npcHandler, - text = "Do you want a round-trip passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", - cost = cost, - discount = "postman" - } - ) - travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, - { - npcHandler = npcHandler, - text = "Have a nice trip!", - premium = false, - cost = cost, - discount = "postman", - destination = destination - } - ) - travelKeyword:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "You shouldn't miss the experience.", - reset = true - } - ) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { + npcHandler = npcHandler, + text = "Do you want a round-trip passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", + cost = cost, + discount = "postman", + }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { + npcHandler = npcHandler, + text = "Have a nice trip!", + premium = false, + cost = cost, + discount = "postman", + destination = destination, + }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "You shouldn't miss the experience.", + reset = true, + }) end addTravelKeyword("vega", 20, { x = 32020, y = 31692, z = 7 }) @@ -90,24 +84,18 @@ addTravelKeyword("senja", 20, { x = 32128, y = 31664, z = 7 }) addTravelKeyword("folda", 20, { x = 32046, y = 31578, z = 7 }) -- Basic -keywordHandler:addKeyword({ "passage" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Where do you want to go today? We serve the routes to {Folda}, {Senja} and {Vega} and back to Tibia." - } -) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "We are ferrymen. We transport goods and passengers to the Ice Islands." - } -) -keywordHandler:addKeyword({ "captain" }, StdModule.say, - { - npcHandler = npcHandler, - text = "We are ferrymen. We transport goods and passengers to the Ice Islands." - } -) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { + npcHandler = npcHandler, + text = "Where do you want to go today? We serve the routes to {Folda}, {Senja} and {Vega} and back to Tibia.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "We are ferrymen. We transport goods and passengers to the Ice Islands.", +}) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { + npcHandler = npcHandler, + text = "We are ferrymen. We transport goods and passengers to the Ice Islands.", +}) npcHandler:setMessage(MESSAGE_GREET, "Ahoi, young man |PLAYERNAME| and welcome to the Nordic Tibia Ferries. If you need a {passage}, let me know.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. You are welcome.") diff --git a/data-otservbr-global/npc/nienna.lua b/data-otservbr-global/npc/nienna.lua index ad805f042b5..6fa94f613bb 100644 --- a/data-otservbr-global/npc/nienna.lua +++ b/data-otservbr-global/npc/nienna.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 85, lookLegs = 58, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -74,7 +74,7 @@ npcConfig.shop = { { itemName = "small emerald", clientId = 3032, buy = 500 }, { itemName = "small ruby", clientId = 3030, buy = 500 }, { itemName = "small sapphire", clientId = 3029, buy = 500 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -85,7 +85,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/nilsor.lua b/data-otservbr-global/npc/nilsor.lua index 43443b24be1..7de765db4d5 100644 --- a/data-otservbr-global/npc/nilsor.lua +++ b/data-otservbr-global/npc/nilsor.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 95, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -74,13 +74,13 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "I am in dire need of help. A plague has befallen my dogs. I even called a druid of Carlin for help but all he could do was to recommend some strong medicine ...", "The thing is the ingredients of the medicine are extremely rare and some only exist in far away and distant lands. If you could help me collecting the ingredients, I would be eternally grateful ...", - "Are you willing to help me?" + "Are you willing to help me?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.TheIceIslands.Questline) == 28 then npcHandler:say({ "Thank you. Now I have all necessary ingredients. As a reward I grant you the use of our dog sled, which is located to the east of here. ...", - "The dogs can be a bit moody, but if you always carry some ham with you there shouldnt be any problems. Oh, and Hjaern might have a mission for you. So maybe you go and talk to him." + "The dogs can be a bit moody, but if you always carry some ham with you there shouldnt be any problems. Oh, and Hjaern might have a mission for you. So maybe you go and talk to him.", }, npc, creature) player:setStorageValue(Storage.TheIceIslands.Questline, 29) player:setStorageValue(Storage.TheIceIslands.Mission07, 1) -- Questlog The Ice Islands Quest, The Secret of Helheim @@ -104,7 +104,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.TheIceIslands.Questline) == 22 then npcHandler:say({ "You will need a specially prepared waterskin to collect the water. You can buy one from me ...", - "Use it on a geyser that is NOT active. The water of active geysers is far too hot. You can find inactive geysers on Okolnir. Do you have some geyser water with you?" + "Use it on a geyser that is NOT active. The water of active geysers is far too hot. You can find inactive geysers on Okolnir. Do you have some geyser water with you?", }, npc, creature) npcHandler:setTopic(playerId, 4) end @@ -138,7 +138,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "A thousand thanks in advance. I need no less than 7 ingredients for the cure. You can ask me about each specifically ...", "I need a part of the sun adorer cactus, a vial of geyser water, sulphur of a lava hole, a frostbite herb, a blossom of a purple kiss, a hydra tongue and spores of a giant glimmercap mushroom ...", - "Turn them in individually by talking about them to me. As soon as I obtained them all, talk to me about the medicine. First time bring a Part of the Sun Adorer {Cactus}." + "Turn them in individually by talking about them to me. As soon as I obtained them all, talk to me about the medicine. First time bring a Part of the Sun Adorer {Cactus}.", }, npc, creature) player:setStorageValue(Storage.TheIceIslands.Questline, 21) player:setStorageValue(Storage.TheIceIslands.Mission06, 1) -- Questlog The Ice Islands Quest, Nibelor 5: Cure the Dogs diff --git a/data-otservbr-global/npc/nina.lua b/data-otservbr-global/npc/nina.lua index 07fddc5c8d3..55c0151d8cb 100644 --- a/data-otservbr-global/npc/nina.lua +++ b/data-otservbr-global/npc/nina.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 95, lookLegs = 95, lookFeet = 95, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,13 +50,13 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'chosen' }, StdModule.say, { npcHandler = npcHandler, text = "The lizards here are the chosen ones of their kind. We believe them to be the strongest warriors in these lands.So I lead my people here to learn their ways. We are mere assassins but they are using foreign techniques and seem to be far more efficient" }) -keywordHandler:addAliasKeyword({ 'lizard' }) -keywordHandler:addKeyword({ 'fire dragon dojo' }, StdModule.say, { npcHandler = npcHandler, text = "We of the Grey Shadow clan are studying the ways of the Chosen. Our training is hard, encounters with the lizards often deadly. Every one of us fights on his own. Each one more deadly than the other. Under my lead we wil rise renewed, as the Shadow Nina." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I am Nina, leader of the Grey Shadow clan. Me and my followers, the Shadow Nina, are exploring the largely uncharted parts of the continent Zao." }) -keywordHandler:addAliasKeyword({ 'shadow nina' }) -keywordHandler:addAliasKeyword({ 'nina' }) -keywordHandler:addAliasKeyword({ 'grey shadow clan' }) +keywordHandler:addKeyword({ "chosen" }, StdModule.say, { npcHandler = npcHandler, text = "The lizards here are the chosen ones of their kind. We believe them to be the strongest warriors in these lands.So I lead my people here to learn their ways. We are mere assassins but they are using foreign techniques and seem to be far more efficient" }) +keywordHandler:addAliasKeyword({ "lizard" }) +keywordHandler:addKeyword({ "fire dragon dojo" }, StdModule.say, { npcHandler = npcHandler, text = "We of the Grey Shadow clan are studying the ways of the Chosen. Our training is hard, encounters with the lizards often deadly. Every one of us fights on his own. Each one more deadly than the other. Under my lead we wil rise renewed, as the Shadow Nina." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am Nina, leader of the Grey Shadow clan. Me and my followers, the Shadow Nina, are exploring the largely uncharted parts of the continent Zao." }) +keywordHandler:addAliasKeyword({ "shadow nina" }) +keywordHandler:addAliasKeyword({ "nina" }) +keywordHandler:addAliasKeyword({ "grey shadow clan" }) npcHandler:setMessage(MESSAGE_GREET, "Beware, if you go any further you will have to fight a large group of Chosen. This place is called the Fire Dragon Dojo. Tread carefully since these are lizard training grounds.") npcHandler:setMessage(MESSAGE_FAREWELL, "Goodbye. Human. Being!") diff --git a/data-otservbr-global/npc/ninev.lua b/data-otservbr-global/npc/ninev.lua index eb7df61e888..f21ae7ed612 100644 --- a/data-otservbr-global/npc/ninev.lua +++ b/data-otservbr-global/npc/ninev.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 68, lookFeet = 9, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,118 +51,139 @@ npcType.onCloseChannel = function(npc, creature) end -- Wooden Stake Quest -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = { - 'A blessed stake to defeat evil spirits? I do know an old prayer which is said to grant sacred power and to be able to bind this power to someone, or something. ...', - 'However, this prayer needs the combined energy of ten priests. Each of them has to say one line of the prayer. ...', - 'I could start with the prayer, but since the next priest has to be in a different location, you probably will have to travel a lot. ...', - 'Is this stake really important enough to you so that you are willing to take this burden?', - } -}, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == -1 end -) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Alright, I guess you need a stake first. Maybe Gamon can help you, the leg of a chair or something could just do. Try asking him for a stake, and if you have one, bring it back to me.', reset = true, ungreet = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.DefaultStart, 1) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 1) - end) + "A blessed stake to defeat evil spirits? I do know an old prayer which is said to grant sacred power and to be able to bind this power to someone, or something. ...", + "However, this prayer needs the combined energy of ten priests. Each of them has to say one line of the prayer. ...", + "I could start with the prayer, but since the next priest has to be in a different location, you probably will have to travel a lot. ...", + "Is this stake really important enough to you so that you are willing to take this burden?", + }, +}, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == -1 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Alright, I guess you need a stake first. Maybe Gamon can help you, the leg of a chair or something could just do. Try asking him for a stake, and if you have one, bring it back to me.", reset = true, ungreet = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.DefaultStart, 1) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 1) +end) -- First prayer -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'I guess you couldn\'t convince Gamon to give you a stake, eh?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 1 and player:getItemCount(5941) == 0 end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "I guess you couldn't convince Gamon to give you a stake, eh?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 1 and player:getItemCount(5941) == 0 +end) -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I was informed what to do. Are you prepared to receive my line of the prayer?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 1 end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive my prayer: \'Light shall be near - and darkness afar\'. Now, bring your stake to Tibra in the Carlin church for the next line of the prayer. I will inform her what to do.', reset = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 2) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - end -) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'I will wait for you.', reset = true }) +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I was informed what to do. Are you prepared to receive my line of the prayer?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 1 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive my prayer: 'Light shall be near - and darkness afar'. Now, bring your stake to Tibra in the Carlin church for the next line of the prayer. I will inform her what to do.", reset = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 2) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "I will wait for you.", reset = true }) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You should visit Tibra in the Carlin church now.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 2 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You already received my line of the prayer.' }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You should visit Tibra in the Carlin church now." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 2 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You already received my line of the prayer." }) -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Quentin) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Quentin) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Quentin, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free or you want the {adventurer stone}?') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free or you want the {adventurer stone}?") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/ninos.lua b/data-otservbr-global/npc/ninos.lua index affa158facf..43faf66ad8d 100644 --- a/data-otservbr-global/npc/ninos.lua +++ b/data-otservbr-global/npc/ninos.lua @@ -16,19 +16,19 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Welcome to the post office!' }, - { text = 'If you need help with letters or parcels, just ask me. I can explain everything.' }, - { text = 'Hey, send a letter to your friend now and then. Keep in touch, you know.' } + { text = "Welcome to the post office!" }, + { text = "If you need help with letters or parcels, just ask me. I can explain everything." }, + { text = "Hey, send a letter to your friend now and then. Keep in touch, you know." }, } local keywordHandler = KeywordHandler:new() @@ -90,7 +90,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -101,7 +101,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/nipuna.lua b/data-otservbr-global/npc/nipuna.lua index 97bb28d29f8..b24c55bee06 100644 --- a/data-otservbr-global/npc/nipuna.lua +++ b/data-otservbr-global/npc/nipuna.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 0, lookFeet = 46, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -90,7 +90,7 @@ npcConfig.shop = { { itemName = "ultimate health potion", clientId = 7643, buy = 379 }, { itemName = "ultimate mana potion", clientId = 23373, buy = 438 }, { itemName = "ultimate spirit potion", clientId = 23374, buy = 438 }, - { itemName = "vial", clientId = 2874, sell = 5 } + { itemName = "vial", clientId = 2874, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -101,7 +101,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/nokmir.lua b/data-otservbr-global/npc/nokmir.lua index 22b36bb8dbb..672875fa9c1 100644 --- a/data-otservbr-global/npc/nokmir.lua +++ b/data-otservbr-global/npc/nokmir.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 57, lookBody = 87, lookLegs = 59, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,7 +57,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "mission") then if player:getStorageValue(Storage.HiddenCityOfBeregar.JusticeForAll) < 1 then npcHandler:say("I don't see how you could help me. I'm in deep, deep trouble. I'm accused of having stolen a {ring} from Rerun, but I haven't.", npc, creature) @@ -71,7 +70,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "He said he still had it after work. On that evening, {Grombur}, {Rerun} and me opened a cask of beer in one of the mine tunnels. We had a fun evening there. ...", - "On the next day, the guards brought me to emperor {Rehal}, and Rerun was there, too. He said I had stolen his ring. I'd never steal, you have to believe me." + "On the next day, the guards brought me to emperor {Rehal}, and Rerun was there, too. He said I had stolen his ring. I'd never steal, you have to believe me.", }, npc, creature) npcHandler:setTopic(playerId, 2) end diff --git a/data-otservbr-global/npc/nomad.lua b/data-otservbr-global/npc/nomad.lua index 8ce632d9ee4..79dee9cc229 100644 --- a/data-otservbr-global/npc/nomad.lua +++ b/data-otservbr-global/npc/nomad.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 115, lookBody = 116, lookLegs = 59, - lookFeet = 116 + lookFeet = 116, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,58 +50,66 @@ npcType.onCloseChannel = function(npc, creature) end -- Heart of the Mountain -local blessKeyword = keywordHandler:addKeyword({ 'heart' }, StdModule.say, { npcHandler = npcHandler, text = 'Would you like to receive that protection for a sacrifice of |BLESSCOST| gold, child?' }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the Heart of the Mountain, pilgrim.', cost = '|BLESSCOST|', bless = 8 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +local blessKeyword = keywordHandler:addKeyword({ "heart" }, StdModule.say, { npcHandler = npcHandler, text = "Would you like to receive that protection for a sacrifice of |BLESSCOST| gold, child?" }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the Heart of the Mountain, pilgrim.", cost = "|BLESSCOST|", bless = 8 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, noble |PLAYERNAME|') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good Bye, noble |PLAYERNAME|') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good Bye, noble |PLAYERNAME|') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, noble |PLAYERNAME|") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good Bye, noble |PLAYERNAME|") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good Bye, noble |PLAYERNAME|") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/noodles.lua b/data-otservbr-global/npc/noodles.lua index 533d2257a8e..64c8ab591b7 100644 --- a/data-otservbr-global/npc/noodles.lua +++ b/data-otservbr-global/npc/noodles.lua @@ -11,21 +11,21 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 32 + lookType = 32, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Grrrrrrr.' }, - { text = '' }, - { text = '' }, - { text = 'Woof! Woof!' }, - { text = 'Wooof!' } + { text = "Grrrrrrr." }, + { text = "" }, + { text = "" }, + { text = "Woof! Woof!" }, + { text = "Wooof!" }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/noozer.lua b/data-otservbr-global/npc/noozer.lua index 20481420279..855e3e0174b 100644 --- a/data-otservbr-global/npc/noozer.lua +++ b/data-otservbr-global/npc/noozer.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 39, lookLegs = 39, lookFeet = 19, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -67,14 +67,15 @@ local function creatureSayCallback(npc, creature, type, message) return false end - -- Começou a quest if MsgContains(message, "pass") and npcHandler:getTopic(playerId) == 1 then - npcHandler:say({ "Yes, yes. Or wait - why do you want to.. ah what does it matter. So you want to get through these {caves}, fine. But be warned! ...", + npcHandler:say({ + "Yes, yes. Or wait - why do you want to.. ah what does it matter. So you want to get through these {caves}, fine. But be warned! ...", "...wait a second, I lost it. What was I going to say again? Ah yes - DANGEROUS! These. Caves. Are. Dangerous. No way you get out alive. Ever. Again. ...", "Also you should not disturb those... people down there. Yeah. They... hm, wait, they - who are they again? Hey! Who are you? Are you talking to me?! Ah, ah... oh yes, I remember. ...", "Wait - I am the guardian here, yes! The keeper of... something... or another, yes, I... guard this place. With my life. Don't I? Of course! ...", - "Is, er... this the moment where I should try to... stop you? Yes? No? Ah, you know what - you go down there, those guys are angry as dung anyway. Try your luck, return to me when you're done. If you still can. Or not." }, npc, creature) + "Is, er... this the moment where I should try to... stop you? Yes? No? Ah, you know what - you go down there, those guys are angry as dung anyway. Try your luck, return to me when you're done. If you still can. Or not.", + }, npc, creature) if player:getStorageValue(Storage.CultsOfTibia.Questline) < 1 then player:setStorageValue(Storage.CultsOfTibia.Questline, 1) end @@ -92,7 +93,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/nor.lua b/data-otservbr-global/npc/nor.lua index 49ccd522bab..d055f44a092 100644 --- a/data-otservbr-global/npc/nor.lua +++ b/data-otservbr-global/npc/nor.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 19, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/norbert.lua b/data-otservbr-global/npc/norbert.lua index db5e7565a7b..37a869b24f0 100644 --- a/data-otservbr-global/npc/norbert.lua +++ b/data-otservbr-global/npc/norbert.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 79, lookLegs = 93, lookFeet = 13, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,7 @@ npcConfig.shop = { { itemName = "jacket", clientId = 3561, buy = 12, sell = 1 }, { itemName = "leather armor", clientId = 3361, buy = 35, sell = 12 }, { itemName = "studded armor", clientId = 3378, buy = 90, sell = 25 }, - { itemName = "wedding outfit box", clientId = 9586, buy = 5000 } + { itemName = "wedding outfit box", clientId = 9586, buy = 5000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -69,7 +69,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/norf.lua b/data-otservbr-global/npc/norf.lua index ae30a0c5142..685e352e847 100644 --- a/data-otservbr-global/npc/norf.lua +++ b/data-otservbr-global/npc/norf.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 57 + lookType = 57, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -46,55 +46,63 @@ npcType.onCloseChannel = function(npc, creature) end -- Spiritual Shielding -local blessKeyword = keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'Here in the whiteflower temple you may receive the blessing of spiritual shielding. But we must ask of you to sacrifice |BLESSCOST| gold. Are you still interested?' }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the shielding of your spirit, pilgrim.', cost = '|BLESSCOST|', bless = 5 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) -keywordHandler:addAliasKeyword({ 'shield' }) +local blessKeyword = keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "Here in the whiteflower temple you may receive the blessing of spiritual shielding. But we must ask of you to sacrifice |BLESSCOST| gold. Are you still interested?" }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the shielding of your spirit, pilgrim.", cost = "|BLESSCOST|", bless = 5 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) +keywordHandler:addAliasKeyword({ "shield" }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, pilgrim. How may I {help} you? Are you in need of {healing}?') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, pilgrim. How may I {help} you? Are you in need of {healing}?") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/norma.lua b/data-otservbr-global/npc/norma.lua index 66146ed3f54..aa5c3d5a6c7 100644 --- a/data-otservbr-global/npc/norma.lua +++ b/data-otservbr-global/npc/norma.lua @@ -16,21 +16,21 @@ npcConfig.outfit = { lookBody = 76, lookLegs = 72, lookFeet = 96, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Great drinks and snacks at fair prices!' }, - { text = 'You know you want a party after all that tiring hunting!' }, - { text = ' ... are a girl\'s best friieeend...' }, - { text = 'Sing and dance at my bar! Yeah!' }, - { text = 'Best place in town! Come to my bar!' } + { text = "Great drinks and snacks at fair prices!" }, + { text = "You know you want a party after all that tiring hunting!" }, + { text = " ... are a girl's best friieeend..." }, + { text = "Sing and dance at my bar! Yeah!" }, + { text = "Best place in town! Come to my bar!" }, } local keywordHandler = KeywordHandler:new() @@ -60,7 +60,6 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - --[[ addon Pretty, isn't it? I made it myself, but I could teach you how to do that if you like. What do you say? @@ -87,31 +86,31 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Oh, you're back already? Did you bring a legion helmet, 100 chicken feathers and 50 honeycombs?", npc, creature) npcHandler:setTopic(playerId, 2) elseif addonProgress == 2 then - npcHandler:say('Pretty hat, isn\'t it?', npc, creature) + npcHandler:say("Pretty hat, isn't it?", npc, creature) end return true end if npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then player:setStorageValue(Storage.OutfitQuest.Ref, math.max(0, player:getStorageValue(Storage.OutfitQuest.Ref)) + 1) player:setStorageValue(Storage.OutfitQuest.Citizen.AddonHat, 1) player:setStorageValue(Storage.OutfitQuest.Citizen.MissionHat, 1) - npcHandler:say('Okay, here we go, listen closely! I need a few things... a basic hat of course, maybe a legion helmet would do. Then about 100 chicken feathers... and 50 honeycombs as glue. That\'s it, come back to me once you gathered it!', npc, creature) + npcHandler:say("Okay, here we go, listen closely! I need a few things... a basic hat of course, maybe a legion helmet would do. Then about 100 chicken feathers... and 50 honeycombs as glue. That's it, come back to me once you gathered it!", npc, creature) else - npcHandler:say('Aw, I guess you don\'t like feather hats. No big deal.', npc, creature) + npcHandler:say("Aw, I guess you don't like feather hats. No big deal.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if player:getItemCount(3374) < 1 then - npcHandler:say('Sorry, but I can\'t see a legion helmet.', npc, creature) + npcHandler:say("Sorry, but I can't see a legion helmet.", npc, creature) elseif player:getItemCount(5890) < 100 then - npcHandler:say('Sorry, but you don\'t enough chicken feathers.', npc, creature) + npcHandler:say("Sorry, but you don't enough chicken feathers.", npc, creature) elseif player:getItemCount(5902) < 50 then - npcHandler:say('Sorry, but you don\'t have enough honeycombs.', npc, creature) + npcHandler:say("Sorry, but you don't have enough honeycombs.", npc, creature) else - npcHandler:say('Great job! That must have taken a lot of work. Okay, you put it like this... then glue like this... here!', npc, creature) + npcHandler:say("Great job! That must have taken a lot of work. Okay, you put it like this... then glue like this... here!", npc, creature) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) player:removeItem(3374, 1) @@ -126,7 +125,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.Citizen.AddonHat, 2) end else - npcHandler:say('Maybe another time.', npc, creature) + npcHandler:say("Maybe another time.", npc, creature) end npcHandler:setTopic(playerId, 0) end @@ -135,66 +134,66 @@ local function creatureSayCallback(npc, creature, type, message) end -- Basic keywords -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, my name is {Norma}.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I used to be a merchant, but being a barkeeper is so much more fun. It\'s been my dream since I was a little girl.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s about |TIME|. Time just flies, doesn\'t it?' }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { npcHandler = npcHandler, text = 'To view the offers of a merchant, simply talk to him or her and ask for a {trade}. They will gladly show you their offers and also the things they buy from you.' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'ve never been better! I love my new {job}!' }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = 'No sorry, I\'m out of that business. Please ask {Obi} or {Lee\'Delle} if you need a weapon.' }) -keywordHandler:addKeyword({ 'equipment' }, StdModule.say, { npcHandler = npcHandler, text = 'As an adventurer, you should always have at least a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}.' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, the monsters are far away. Let\'s party now!' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'If you really want to talk about dungeons, visit Dallheim on the bridge near my bar.' }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { npcHandler = npcHandler, text = 'Ewww, I don\'t even want to think about the smell from the sewers right now!' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'Oooh, I wouldn\'t dare gossiping about the king. He might have his spies here somewhere, you know.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'This is the world we live in, oh-oh-oh, and these are the hands we\'re given, oh-oh... oh, I\'m sorry, I got carried away!' }) -keywordHandler:addKeyword({ 'premium' }, StdModule.say, { npcHandler = npcHandler, text = 'As a premium adventurer you have many advantages, you should check them out!' }) -keywordHandler:addKeyword({ 'drink' }, StdModule.say, { npcHandler = npcHandler, text = 'I serve the best drinks in town! What\'s it gonna be, lemonade? Wine? Milk? Beer? Just ask me for a {trade}!' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is a good place to visit if you\'re in urgent need for healing.' }) - -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, the only help I could give you are some general {hints}. And a delicious {drink} along with it.' }) -keywordHandler:addAliasKeyword({ 'information' }) - -keywordHandler:addKeyword({ 'backpack' }, StdModule.say, { npcHandler = npcHandler, text = 'No sorry, I\'m out of that business. Please ask {Al Dee} or {Lee\'Delle} if you need equipment.' }) -keywordHandler:addAliasKeyword({ 'rope' }) -keywordHandler:addAliasKeyword({ 'shovel' }) -keywordHandler:addAliasKeyword({ 'fishing' }) - -keywordHandler:addKeyword({ 'armor' }, StdModule.say, { npcHandler = npcHandler, text = 'No sorry, I\'m out of that business. Please ask {Dixi} or {Lee\'Delle} if you need equipment.' }) -keywordHandler:addAliasKeyword({ 'shield' }) - -keywordHandler:addKeyword({ 'offer' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, would you like something to eat or drink? Ask me for a {trade} to see my offers!' }) -keywordHandler:addAliasKeyword({ 'sell' }) -keywordHandler:addAliasKeyword({ 'buy' }) -keywordHandler:addAliasKeyword({ 'wares' }) -keywordHandler:addAliasKeyword({ 'stuff' }) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Well, my name is {Norma}." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I used to be a merchant, but being a barkeeper is so much more fun. It's been my dream since I was a little girl." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It's about |TIME|. Time just flies, doesn't it?" }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, text = "To view the offers of a merchant, simply talk to him or her and ask for a {trade}. They will gladly show you their offers and also the things they buy from you." }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "I've never been better! I love my new {job}!" }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "No sorry, I'm out of that business. Please ask {Obi} or {Lee'Delle} if you need a weapon." }) +keywordHandler:addKeyword({ "equipment" }, StdModule.say, { npcHandler = npcHandler, text = "As an adventurer, you should always have at least a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}." }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, the monsters are far away. Let's party now!" }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "If you really want to talk about dungeons, visit Dallheim on the bridge near my bar." }) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, text = "Ewww, I don't even want to think about the smell from the sewers right now!" }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "Oooh, I wouldn't dare gossiping about the king. He might have his spies here somewhere, you know." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "This is the world we live in, oh-oh-oh, and these are the hands we're given, oh-oh... oh, I'm sorry, I got carried away!" }) +keywordHandler:addKeyword({ "premium" }, StdModule.say, { npcHandler = npcHandler, text = "As a premium adventurer you have many advantages, you should check them out!" }) +keywordHandler:addKeyword({ "drink" }, StdModule.say, { npcHandler = npcHandler, text = "I serve the best drinks in town! What's it gonna be, lemonade? Wine? Milk? Beer? Just ask me for a {trade}!" }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is a good place to visit if you're in urgent need for healing." }) + +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "Well, the only help I could give you are some general {hints}. And a delicious {drink} along with it." }) +keywordHandler:addAliasKeyword({ "information" }) + +keywordHandler:addKeyword({ "backpack" }, StdModule.say, { npcHandler = npcHandler, text = "No sorry, I'm out of that business. Please ask {Al Dee} or {Lee'Delle} if you need equipment." }) +keywordHandler:addAliasKeyword({ "rope" }) +keywordHandler:addAliasKeyword({ "shovel" }) +keywordHandler:addAliasKeyword({ "fishing" }) + +keywordHandler:addKeyword({ "armor" }, StdModule.say, { npcHandler = npcHandler, text = "No sorry, I'm out of that business. Please ask {Dixi} or {Lee'Delle} if you need equipment." }) +keywordHandler:addAliasKeyword({ "shield" }) + +keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, would you like something to eat or drink? Ask me for a {trade} to see my offers!" }) +keywordHandler:addAliasKeyword({ "sell" }) +keywordHandler:addAliasKeyword({ "buy" }) +keywordHandler:addAliasKeyword({ "wares" }) +keywordHandler:addAliasKeyword({ "stuff" }) -- Names -keywordHandler:addKeyword({ 'mary' }, StdModule.say, { npcHandler = npcHandler, text = '' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'Al Dee treats his customers friendly, but he\'s badmouthing them once he had a few beers.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m curious about her adventures. She really should come here more often!' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'He got lucky when Willie and him played a game of dice about who gets to farm on which side of the river. Ever since, Willie holds a grudge against him.' }) -keywordHandler:addKeyword({ 'willie' }, StdModule.say, { npcHandler = npcHandler, text = 'Hehe, that guy doesn\'t pretend to be anyone that he isn\'t. He is what he is - rude, but honest.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh shush! It\'s kinda disgusting when he walks in here with animal blood on his hands!' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'What Seymour doesn\'t teach you is how much fun you can have here!' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'I invited her to my bar, but she refused. Oh well, it was worth a try!' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'I think that poor guy never gets a break from work. At least he never comes here.' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'That guy seriously needs some partying and a girlfriend.' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'The oracle is on the top floor of the academy. You should go there once you are level 8 to leave this island.' }) -keywordHandler:addKeyword({ 'obi' }, StdModule.say, { npcHandler = npcHandler, text = 'I think it\'s rather strange that he lives here with his granddaughter. No one\'s ever seen the parents of {Dixi}.' }) -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'I hate that name, it sounds so boring. Almost like \'normal\'. I think I should change my name to something more exciting. Like... Marylin! Oh, what a glamorous sound!' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'She told me that she dreams of leaving this island to go on a big adventure.' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'They tell me strange stories about him and some monsters in a hole. Weird!' }) -keywordHandler:addKeyword({ 'lee\'delle' }, StdModule.say, { npcHandler = npcHandler, text = 'That girl thinks that she is soooo special and \'high society\'. We used to be friends, but well, things change.' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s probably someone I\'ll never see in my bar.' }) -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = ' That monk with his holier-than-thou attitude hasn\'t anything against a good mug of wine now and then.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'If you listen to him, you could get the impression my little bar is the devil himself. He says he has more work now keeping drunken adventurers in than monsters out of the city. Such an exaggeration!' }) -keywordHandler:addAliasKeyword({ 'zerbrus' }) - -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Hey, where are you going? We\'ve just started!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Come back soon!') -npcHandler:setMessage(MESSAGE_SENDTRADE, 'Take all the time you need to decide what you want!') -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, welcome! Have a seat! If you like a drink or something to eat, just ask me for a {trade}!') +keywordHandler:addKeyword({ "mary" }, StdModule.say, { npcHandler = npcHandler, text = "" }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "Al Dee treats his customers friendly, but he's badmouthing them once he had a few beers." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "I'm curious about her adventures. She really should come here more often!" }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "He got lucky when Willie and him played a game of dice about who gets to farm on which side of the river. Ever since, Willie holds a grudge against him." }) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { npcHandler = npcHandler, text = "Hehe, that guy doesn't pretend to be anyone that he isn't. He is what he is - rude, but honest." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "Oh shush! It's kinda disgusting when he walks in here with animal blood on his hands!" }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "What Seymour doesn't teach you is how much fun you can have here!" }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "I invited her to my bar, but she refused. Oh well, it was worth a try!" }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "I think that poor guy never gets a break from work. At least he never comes here." }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "That guy seriously needs some partying and a girlfriend." }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "The oracle is on the top floor of the academy. You should go there once you are level 8 to leave this island." }) +keywordHandler:addKeyword({ "obi" }, StdModule.say, { npcHandler = npcHandler, text = "I think it's rather strange that he lives here with his granddaughter. No one's ever seen the parents of {Dixi}." }) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "I hate that name, it sounds so boring. Almost like 'normal'. I think I should change my name to something more exciting. Like... Marylin! Oh, what a glamorous sound!" }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "She told me that she dreams of leaving this island to go on a big adventure." }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "They tell me strange stories about him and some monsters in a hole. Weird!" }) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { npcHandler = npcHandler, text = "That girl thinks that she is soooo special and 'high society'. We used to be friends, but well, things change." }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "That's probably someone I'll never see in my bar." }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = " That monk with his holier-than-thou attitude hasn't anything against a good mug of wine now and then." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "If you listen to him, you could get the impression my little bar is the devil himself. He says he has more work now keeping drunken adventurers in than monsters out of the city. Such an exaggeration!" }) +keywordHandler:addAliasKeyword({ "zerbrus" }) + +npcHandler:setMessage(MESSAGE_WALKAWAY, "Hey, where are you going? We've just started!") +npcHandler:setMessage(MESSAGE_FAREWELL, "Come back soon!") +npcHandler:setMessage(MESSAGE_SENDTRADE, "Take all the time you need to decide what you want!") +npcHandler:setMessage(MESSAGE_GREET, "Welcome, welcome! Have a seat! If you like a drink or something to eat, just ask me for a {trade}!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -207,7 +206,7 @@ npcConfig.shop = { { itemName = "mug of lemonade", clientId = 2880, buy = 2, count = 12 }, { itemName = "mug of milk", clientId = 2880, buy = 2, count = 6 }, { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 }, - { itemName = "party cake", clientId = 6279, buy = 50 } + { itemName = "party cake", clientId = 6279, buy = 50 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -218,7 +217,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/norman_the_foreman.lua b/data-otservbr-global/npc/norman_the_foreman.lua index 710bdbd1066..a71287eb296 100644 --- a/data-otservbr-global/npc/norman_the_foreman.lua +++ b/data-otservbr-global/npc/norman_the_foreman.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 59, lookBody = 98, lookLegs = 96, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/normod.lua b/data-otservbr-global/npc/normod.lua index 04f02f4ed9f..8549e6fb64f 100644 --- a/data-otservbr-global/npc/normod.lua +++ b/data-otservbr-global/npc/normod.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 86, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/norris.lua b/data-otservbr-global/npc/norris.lua index 272bb6ae27f..0d1eacfcff1 100644 --- a/data-otservbr-global/npc/norris.lua +++ b/data-otservbr-global/npc/norris.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 36, lookLegs = 116, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/nurik.lua b/data-otservbr-global/npc/nurik.lua index da0644cdf52..6bb40ce48c4 100644 --- a/data-otservbr-global/npc/nurik.lua +++ b/data-otservbr-global/npc/nurik.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 85, lookLegs = 86, lookFeet = 90, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,7 +55,7 @@ local function greetCallback(npc, creature) local playerId = player:getId() if player:getStorageValue(Storage.ThievesGuild.Mission04) ~= 6 or player:getOutfit().lookType ~= 66 then - npcHandler:say('Excuse me, but I\'m waiting for someone important!', npc, creature) + npcHandler:say("Excuse me, but I'm waiting for someone important!", npc, creature) return false end @@ -70,21 +70,21 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'dwarven bridge') then - npcHandler:say('Wait a minute! Do I get that right? You\'re the owner of the dwarven bridge and you are willing to sell it to me??', npc, creature) + if MsgContains(message, "dwarven bridge") then + npcHandler:say("Wait a minute! Do I get that right? You're the owner of the dwarven bridge and you are willing to sell it to me??", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - 'That\'s just incredible! I\'ve dreamed about acquiring the dwarven bridge since I was a child! Now my dream will finally become true. ...', - 'And you are sure you want to sell it? I mean really, really sure?' + "That's just incredible! I've dreamed about acquiring the dwarven bridge since I was a child! Now my dream will finally become true. ...", + "And you are sure you want to sell it? I mean really, really sure?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then - npcHandler:say('How splendid! Do you have the necessary documents with you?', npc, creature) + npcHandler:say("How splendid! Do you have the necessary documents with you?", npc, creature) npcHandler:setTopic(playerId, 3) elseif npcHandler:getTopic(playerId) == 3 then - npcHandler:say('Oh my, oh my. I\'m so excited! So let\'s seal this deal as fast as possible so I can visit my very own dwarven bridge. Are you ready for the transaction?', npc, creature) + npcHandler:say("Oh my, oh my. I'm so excited! So let's seal this deal as fast as possible so I can visit my very own dwarven bridge. Are you ready for the transaction?", npc, creature) npcHandler:setTopic(playerId, 4) elseif npcHandler:getTopic(playerId) == 4 then local player = Player(creature) @@ -92,8 +92,8 @@ local function creatureSayCallback(npc, creature, type, message) player:addItem(7871, 1) player:setStorageValue(Storage.ThievesGuild.Mission04, 7) npcHandler:say({ - 'Excellent! Here is the painting you requested. It\'s quite precious to my father, but imagine his joy when I tell him about my clever deal! ...', - 'Now leave me alone please. I have to prepare for my departure. Now my family will not call me a squandering fool anymore!' + "Excellent! Here is the painting you requested. It's quite precious to my father, but imagine his joy when I tell him about my clever deal! ...", + "Now leave me alone please. I have to prepare for my departure. Now my family will not call me a squandering fool anymore!", }, npc, creature) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) @@ -103,7 +103,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_GREET, 'It\'s .. It\'s YOU! At last!! So what\'s this special proposal you would like to make, my friend?') +npcHandler:setMessage(MESSAGE_GREET, "It's .. It's YOU! At last!! So what's this special proposal you would like to make, my friend?") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/nydala.lua b/data-otservbr-global/npc/nydala.lua index 95589fd49cf..5991d5e0a86 100644 --- a/data-otservbr-global/npc/nydala.lua +++ b/data-otservbr-global/npc/nydala.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 86, lookFeet = 96, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,9 +50,9 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'furniture' }, StdModule.say, { npcHandler = npcHandler, text = "Well, as you can see, I sell furniture. Ask me for a {trade} if you're interested to see my wares." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "My name is Nydala. I run this store." }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "It is |TIME|. Do you need a clock for your house?" }) +keywordHandler:addKeyword({ "furniture" }, StdModule.say, { npcHandler = npcHandler, text = "Well, as you can see, I sell furniture. Ask me for a {trade} if you're interested to see my wares." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Nydala. I run this store." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It is |TIME|. Do you need a clock for your house?" }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to Carlin Furniture Store, |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_SENDTRADE, "Have a look. Most furniture comes in handy kits. Just use them in your house to assemble the furniture. Do you want to see only a certain {type} of furniture?") @@ -155,7 +155,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -166,7 +166,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/nymph_challenging.lua b/data-otservbr-global/npc/nymph_challenging.lua index 7e7c94a82dc..e1266971332 100644 --- a/data-otservbr-global/npc/nymph_challenging.lua +++ b/data-otservbr-global/npc/nymph_challenging.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/oberon's_bile.lua b/data-otservbr-global/npc/oberon's_bile.lua index 0448102a693..6b3cf53ff97 100644 --- a/data-otservbr-global/npc/oberon's_bile.lua +++ b/data-otservbr-global/npc/oberon's_bile.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 23991 + lookTypeEx = 23991, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/oberon's_hate.lua b/data-otservbr-global/npc/oberon's_hate.lua index a1806458566..e9d8858e00f 100644 --- a/data-otservbr-global/npc/oberon's_hate.lua +++ b/data-otservbr-global/npc/oberon's_hate.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 23991 + lookTypeEx = 23991, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/oberon's_ire.lua b/data-otservbr-global/npc/oberon's_ire.lua index f726dfd09c5..4b0e1346684 100644 --- a/data-otservbr-global/npc/oberon's_ire.lua +++ b/data-otservbr-global/npc/oberon's_ire.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 23991 + lookTypeEx = 23991, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/oberon's_spite.lua b/data-otservbr-global/npc/oberon's_spite.lua index 5297b965e25..04198674f19 100644 --- a/data-otservbr-global/npc/oberon's_spite.lua +++ b/data-otservbr-global/npc/oberon's_spite.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 23991 + lookTypeEx = 23991, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/obi.lua b/data-otservbr-global/npc/obi.lua index f47c603b684..3eac0802b4a 100644 --- a/data-otservbr-global/npc/obi.lua +++ b/data-otservbr-global/npc/obi.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 63, lookLegs = 96, lookFeet = 38, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Only quality steel and wood used for my weapons!' }, - { text = 'Buy your weapons here!' }, - { text = 'Selling and buying all sorts of weapons, come and have a look!' }, - { text = 'Give those monsters a good whipping with my weapons!' } + { text = "Only quality steel and wood used for my weapons!" }, + { text = "Buy your weapons here!" }, + { text = "Selling and buying all sorts of weapons, come and have a look!" }, + { text = "Give those monsters a good whipping with my weapons!" }, } local keywordHandler = KeywordHandler:new() @@ -59,78 +59,77 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - -- Basic keywords -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, how can I help you? Do you need some general {hints}? Or, if you\'re interested in a {trade}, just ask.' }) -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'What kind of information do you need? I could tell you about different topics such as {equipment}, {monsters} or {Rookgaard} in general.' }) -keywordHandler:addKeyword({ 'torch' }, StdModule.say, { npcHandler = npcHandler, text = '{Al Dee} sells torches.' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'Be careful down there! Make sure you bought enough {torches} and a {rope} or you might get lost.' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'The king encouraged salesmen to travel here, but only I dared to take the risk, and a risk it was!' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s about |TIME|. Yes, |TIME|. I\'m so sorry, I have no watches for sale.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Obi, just Obi, the honest merchant. If you like to {trade}, just ask.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a merchant and the local {weapon} smith. If you like to see my quality wares or sell weapons to me, ask me for a {trade}.' }) -keywordHandler:addKeyword({ 'equipment' }, StdModule.say, { npcHandler = npcHandler, text = 'As an adventurer you should always have at least a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'If I were you, I\'d invest my money in quality steel rather than putting it in a so-called safe bank account!' }) -keywordHandler:addKeyword({ 'mainland' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, the mainland also consists of several continents. You can go there once you are level 8 and have talked to the {oracle}.' }) -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, Rookgaard. Home sweet home, that\'s what it became for me, but I will always miss {Thais} and {Sam}.' }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, Thais, I\'ll be back. One day, I\'ll be back.' }) -keywordHandler:addKeyword({ 'sam' }, StdModule.say, { npcHandler = npcHandler, text = 'My good old cousin Sam. Oh, how I miss him.' }) -keywordHandler:addKeyword({ 'academy' }, StdModule.say, { npcHandler = npcHandler, text = 'I think good practice is better than reading a boring book. Of course, you will need proper {equipment} to be able to get practice!' }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = ' told them to let me sell food, but no! Sorry, you have to ask {Willie} or {Billy} on the farms west of here.' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'Good monsters to start with are rats. They live in the {sewers} under the village of {Rookgaard}.' }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { npcHandler = npcHandler, text = 'There are many sewer entrances throughout Rookgaard. One is right outside this shop and to the left. For more details about monsters and dungeons, best talk to one of the {guards}.' }) -keywordHandler:addKeyword({ 'guard' }, StdModule.say, { npcHandler = npcHandler, text = 'The bridge guard {Dallheim} is north of here, just follow the street, you can\'t miss it.' }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { npcHandler = npcHandler, text = 'Sadly, not many merchants are as honest as I am.' }) -keywordHandler:addKeyword({ 'potion' }, StdModule.say, { npcHandler = npcHandler, text = 'I wish I could help you with that, but no, I was told to stick to weapons. Go see {Lily}.' }) -keywordHandler:addKeyword({ 'blueberr' }, StdModule.say, { npcHandler = npcHandler, text = 'There are many blueberry bushes in and around this village. Nature\'s for free.' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m fine. It\'s a little hot near the crucible, but I enjoy the sound of forging {weapons}.' }) -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { npcHandler = npcHandler, text = 'Just ask me for a {trade} to see which things I buy from you.' }) - -keywordHandler:addKeyword({ 'armor' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, just upstairs. My granddaughter {Dixi} is in charge of selling armors and shields.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addAliasKeyword({ 'helmet' }) - -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I\'m selling weapons. Just ask me for a {trade} to see my offers and the things I buy from you.' }) - -keywordHandler:addKeyword({ 'gold' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, no gold, no deal. Earn gold by fighting {monsters} and picking up the things they carry. Sell it to {merchants} to make profit!' }) -keywordHandler:addAliasKeyword({ 'money' }) - -keywordHandler:addKeyword({ 'rope' }, StdModule.say, { npcHandler = npcHandler, text = 'I wish I could help you with that, but no, I was told to stick to weapons. Go see {Al Dee} or {Lee\'Delle}.' }) -keywordHandler:addAliasKeyword({ 'shovel' }) -keywordHandler:addAliasKeyword({ 'backpack' }) -keywordHandler:addAliasKeyword({ 'fishing' }) - -keywordHandler:addKeyword({ 'buy' }, StdModule.say, { npcHandler = npcHandler, text = 'I sell {weapons} of all kinds. Just ask me for a {trade} if you like to see my offers.' }) -keywordHandler:addAliasKeyword({ 'stuff' }) -keywordHandler:addAliasKeyword({ 'wares' }) -keywordHandler:addAliasKeyword({ 'offer' }) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "Well, how can I help you? Do you need some general {hints}? Or, if you're interested in a {trade}, just ask." }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "What kind of information do you need? I could tell you about different topics such as {equipment}, {monsters} or {Rookgaard} in general." }) +keywordHandler:addKeyword({ "torch" }, StdModule.say, { npcHandler = npcHandler, text = "{Al Dee} sells torches." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "Be careful down there! Make sure you bought enough {torches} and a {rope} or you might get lost." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "The king encouraged salesmen to travel here, but only I dared to take the risk, and a risk it was!" }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It's about |TIME|. Yes, |TIME|. I'm so sorry, I have no watches for sale." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Obi, just Obi, the honest merchant. If you like to {trade}, just ask." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a merchant and the local {weapon} smith. If you like to see my quality wares or sell weapons to me, ask me for a {trade}." }) +keywordHandler:addKeyword({ "equipment" }, StdModule.say, { npcHandler = npcHandler, text = "As an adventurer you should always have at least a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "If I were you, I'd invest my money in quality steel rather than putting it in a so-called safe bank account!" }) +keywordHandler:addKeyword({ "mainland" }, StdModule.say, { npcHandler = npcHandler, text = "Well, the mainland also consists of several continents. You can go there once you are level 8 and have talked to the {oracle}." }) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, Rookgaard. Home sweet home, that's what it became for me, but I will always miss {Thais} and {Sam}." }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, Thais, I'll be back. One day, I'll be back." }) +keywordHandler:addKeyword({ "sam" }, StdModule.say, { npcHandler = npcHandler, text = "My good old cousin Sam. Oh, how I miss him." }) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { npcHandler = npcHandler, text = "I think good practice is better than reading a boring book. Of course, you will need proper {equipment} to be able to get practice!" }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = " told them to let me sell food, but no! Sorry, you have to ask {Willie} or {Billy} on the farms west of here." }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Good monsters to start with are rats. They live in the {sewers} under the village of {Rookgaard}." }) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, text = "There are many sewer entrances throughout Rookgaard. One is right outside this shop and to the left. For more details about monsters and dungeons, best talk to one of the {guards}." }) +keywordHandler:addKeyword({ "guard" }, StdModule.say, { npcHandler = npcHandler, text = "The bridge guard {Dallheim} is north of here, just follow the street, you can't miss it." }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, text = "Sadly, not many merchants are as honest as I am." }) +keywordHandler:addKeyword({ "potion" }, StdModule.say, { npcHandler = npcHandler, text = "I wish I could help you with that, but no, I was told to stick to weapons. Go see {Lily}." }) +keywordHandler:addKeyword({ "blueberr" }, StdModule.say, { npcHandler = npcHandler, text = "There are many blueberry bushes in and around this village. Nature's for free." }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "I'm fine. It's a little hot near the crucible, but I enjoy the sound of forging {weapons}." }) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, text = "Just ask me for a {trade} to see which things I buy from you." }) + +keywordHandler:addKeyword({ "armor" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, just upstairs. My granddaughter {Dixi} is in charge of selling armors and shields." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addAliasKeyword({ "helmet" }) + +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I'm selling weapons. Just ask me for a {trade} to see my offers and the things I buy from you." }) + +keywordHandler:addKeyword({ "gold" }, StdModule.say, { npcHandler = npcHandler, text = "Well, no gold, no deal. Earn gold by fighting {monsters} and picking up the things they carry. Sell it to {merchants} to make profit!" }) +keywordHandler:addAliasKeyword({ "money" }) + +keywordHandler:addKeyword({ "rope" }, StdModule.say, { npcHandler = npcHandler, text = "I wish I could help you with that, but no, I was told to stick to weapons. Go see {Al Dee} or {Lee'Delle}." }) +keywordHandler:addAliasKeyword({ "shovel" }) +keywordHandler:addAliasKeyword({ "backpack" }) +keywordHandler:addAliasKeyword({ "fishing" }) + +keywordHandler:addKeyword({ "buy" }, StdModule.say, { npcHandler = npcHandler, text = "I sell {weapons} of all kinds. Just ask me for a {trade} if you like to see my offers." }) +keywordHandler:addAliasKeyword({ "stuff" }) +keywordHandler:addAliasKeyword({ "wares" }) +keywordHandler:addAliasKeyword({ "offer" }) -- Names -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t know how anyone could give up the flourishing business she led. She should have listened to me and find someone who continues that business for her.' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'I told him there was no danger, but he wouldn\'t listen to me, no one listens to me.' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'I suggested him opening a tourist guide company with me, Obi\'s and Santiago\'s, but he didn\'t approve. I really don\'t understand why.' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'An old woman shouldn\'t be treated like that, no way, that\'s bad.' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, this guy is so greedy, so greedy. Ripping off poor adventurers like you!' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'She is beautiful, very, very beautiful. I hope I can impress her somehow.' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s just like his cousin {Willie}.' }) -keywordHandler:addKeyword({ 'willie' }, StdModule.say, { npcHandler = npcHandler, text = 'This guy doesn\'t understand that he should entrust me with the food business, too. He really should do. Then he had time for his farm.' }) -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = 'He shouldn\'t heal people for free, no he shouldn\'t. That would be a great source of income for the village that could be invested in enhancing the smithy.' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, what an endearing little girl, and she\'s working so hard to help me, even without receiving payment. Such a sweet little girl!' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t like him, actually I dislike him deeply. He is so greedy that he doesn\'t want to share his profit he gains from health potions.' }) -keywordHandler:addKeyword({ 'lee\'delle' }, StdModule.say, { npcHandler = npcHandler, text = 'She ruins the market with her offers! This is bad for us honest merchants, really bad.' }) -keywordHandler:addKeyword({ 'lily' }, StdModule.say, { npcHandler = npcHandler, text = 'I knew it! I knew she would try to get the monopoly on potions in this village! But no one has listened to me!' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'The oracle, ah, such a weird being! It will lead you off this island once you are level 8, yes it will, mark my words.' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'I told everyone he will cause trouble. He talks people into giving him their money and putting it on the {bank}! They rather should leave it here with us honest merchants!' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'He is the head of the local academy. I encouraged him to sponsor you, but no one listens to Obi, no one listens to me, as usual.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, he just buys what no one else wants. Stuff that\'s long dead. I can live with that, yes, I can live with that.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'What a hero, what a hero.' }) -keywordHandler:addAliasKeyword({ 'zerbrus' }) - -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Um yeah, good day.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Farewell, I hope you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_SENDTRADE, 'Of course, just browse through my wares.') -npcHandler:setMessage(MESSAGE_GREET, 'Hello, hello, |PLAYERNAME|! Please come in, look, and buy! If you like to see my offers, ask me for a {trade}!') +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "I don't know how anyone could give up the flourishing business she led. She should have listened to me and find someone who continues that business for her." }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "I told him there was no danger, but he wouldn't listen to me, no one listens to me." }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "I suggested him opening a tourist guide company with me, Obi's and Santiago's, but he didn't approve. I really don't understand why." }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "An old woman shouldn't be treated like that, no way, that's bad." }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, this guy is so greedy, so greedy. Ripping off poor adventurers like you!" }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "She is beautiful, very, very beautiful. I hope I can impress her somehow." }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "He's just like his cousin {Willie}." }) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { npcHandler = npcHandler, text = "This guy doesn't understand that he should entrust me with the food business, too. He really should do. Then he had time for his farm." }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = "He shouldn't heal people for free, no he shouldn't. That would be a great source of income for the village that could be invested in enhancing the smithy." }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, what an endearing little girl, and she's working so hard to help me, even without receiving payment. Such a sweet little girl!" }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "I don't like him, actually I dislike him deeply. He is so greedy that he doesn't want to share his profit he gains from health potions." }) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { npcHandler = npcHandler, text = "She ruins the market with her offers! This is bad for us honest merchants, really bad." }) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { npcHandler = npcHandler, text = "I knew it! I knew she would try to get the monopoly on potions in this village! But no one has listened to me!" }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "The oracle, ah, such a weird being! It will lead you off this island once you are level 8, yes it will, mark my words." }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "I told everyone he will cause trouble. He talks people into giving him their money and putting it on the {bank}! They rather should leave it here with us honest merchants!" }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "He is the head of the local academy. I encouraged him to sponsor you, but no one listens to Obi, no one listens to me, as usual." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "Well, he just buys what no one else wants. Stuff that's long dead. I can live with that, yes, I can live with that." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "What a hero, what a hero." }) +keywordHandler:addAliasKeyword({ "zerbrus" }) + +npcHandler:setMessage(MESSAGE_WALKAWAY, "Um yeah, good day.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell, I hope you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_SENDTRADE, "Of course, just browse through my wares.") +npcHandler:setMessage(MESSAGE_GREET, "Hello, hello, |PLAYERNAME|! Please come in, look, and buy! If you like to see my offers, ask me for a {trade}!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -149,7 +148,7 @@ npcConfig.shop = { { itemName = "short sword", clientId = 3294, buy = 30, sell = 10 }, { itemName = "sickle", clientId = 3293, buy = 8, sell = 2 }, { itemName = "spear", clientId = 3277, buy = 10, sell = 3 }, - { itemName = "sword", clientId = 3264, sell = 25 } + { itemName = "sword", clientId = 3264, sell = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -160,7 +159,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/oblivion.lua b/data-otservbr-global/npc/oblivion.lua index aef37678229..56794dbd97a 100644 --- a/data-otservbr-global/npc/oblivion.lua +++ b/data-otservbr-global/npc/oblivion.lua @@ -11,20 +11,20 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 552 + lookType = 552, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Hm.' }, - { text = 'Yes. I listen, master.' }, - { text = 'I understand.' }, - { text = 'Not yet, my brothers. Wait.' } + { text = "Hm." }, + { text = "Yes. I listen, master." }, + { text = "I understand." }, + { text = "Not yet, my brothers. Wait." }, } local keywordHandler = KeywordHandler:new() @@ -62,35 +62,35 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, 'scroll') or MsgContains(message, 'mission')) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission44) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission45) < 1 then + if (MsgContains(message, "scroll") or MsgContains(message, "mission")) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission44) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission45) < 1 then npcHandler:say("Lost. Hidden. The keys are shadow names. Find them, they will talk to me and reveal what is hidden. Will you go on that quest?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission44) == 1 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission44) == 1 then npcHandler:say({ "Then into the vampire crypts, deep down, you must go. ...", "There... three graves where the shadows swirl, unseen. The first one: name the colour of the silent gong. Then ...", "The second: the name that is silent now in the halls of Darkstone ...", - "The third: the lost beauty of Dunesea. It must be remembered, the shadows command it. Go now." + "The third: the lost beauty of Dunesea. It must be remembered, the shadows command it. Go now.", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission45, 1) npcHandler:setTopic(playerId, 0) - elseif (MsgContains(message, 'scroll') or MsgContains(message, 'mission')) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then + elseif (MsgContains(message, "scroll") or MsgContains(message, "mission")) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then npcHandler:say("Yes. Have you gone there and found what you sought?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif (MsgContains(message, 'yes')) and npcHandler:getTopic(playerId) == 2 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then + elseif (MsgContains(message, "yes")) and npcHandler:getTopic(playerId) == 2 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then npcHandler:say("Tell me. Begin with the colour.", npc, creature) npcHandler:setTopic(playerId, 3) - elseif (MsgContains(message, 'bronze')) and npcHandler:getTopic(playerId) == 3 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then + elseif (MsgContains(message, "bronze")) and npcHandler:getTopic(playerId) == 3 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then npcHandler:say("Yes. The shadows say this is true. The beauty of House Dunesea, name it.", npc, creature) npcHandler:setTopic(playerId, 4) - elseif (MsgContains(message, 'floating')) and npcHandler:getTopic(playerId) == 4 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then + elseif (MsgContains(message, "floating")) and npcHandler:getTopic(playerId) == 4 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then npcHandler:say("The floating gardens. Too beautiful to lie asleep in the memory of men. Yes. The name that is no more in Darkstone?", npc, creature) npcHandler:setTopic(playerId, 5) - elseif (MsgContains(message, 'Takesha Antishu')) and npcHandler:getTopic(playerId) == 5 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then + elseif (MsgContains(message, "Takesha Antishu")) and npcHandler:getTopic(playerId) == 5 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then npcHandler:say({ "Ah, the Lady of Darkstone. You have done well to remember her name. ...", "Now, the shadows say the thing you seek lies next to Akab, the Quarrelsome. ...", - "No coal is burned in his honour. Find his resting place and dig near it. Now go." + "No coal is burned in his honour. Find his resting place and dig near it. Now go.", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission49, 1) npcHandler:setTopic(playerId, 0) diff --git a/data-otservbr-global/npc/ocelus.lua b/data-otservbr-global/npc/ocelus.lua index ee8b8500424..d0032104e74 100644 --- a/data-otservbr-global/npc/ocelus.lua +++ b/data-otservbr-global/npc/ocelus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -67,7 +67,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Oh yes, I noticed that lovely mermaid. From afar of course. I would not dare to step into the eyes of such a lovely creature. ...", - "... I guess I am quite shy. Oh my, if I were not blue, I would turn red now. If there would be someone to arrange a {date} with her." + "... I guess I am quite shy. Oh my, if I were not blue, I would turn red now. If there would be someone to arrange a {date} with her.", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.TheShatteredIsles.ADjinnInLove) == 2 then diff --git a/data-otservbr-global/npc/odemara.lua b/data-otservbr-global/npc/odemara.lua index 8b27941975c..fdebc6f7449 100644 --- a/data-otservbr-global/npc/odemara.lua +++ b/data-otservbr-global/npc/odemara.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 99, lookLegs = 5, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -112,7 +112,7 @@ npcConfig.shop = { { itemName = "watermelon tourmaline", clientId = 33780, sell = 230000 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, { itemName = "wedding ring", clientId = 3004, buy = 990 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -123,7 +123,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/oiriz.lua b/data-otservbr-global/npc/oiriz.lua index 69e0d06d0be..62817bd0349 100644 --- a/data-otservbr-global/npc/oiriz.lua +++ b/data-otservbr-global/npc/oiriz.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 100, lookLegs = 82, lookFeet = 114, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -105,7 +105,7 @@ npcConfig.shop = { { itemName = "violet crystal shard", clientId = 16120, sell = 1500 }, { itemName = "wedding ring", clientId = 3004, buy = 990 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -116,7 +116,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/old_adall.lua b/data-otservbr-global/npc/old_adall.lua index ebd9ac7c863..5bcd9e950d1 100644 --- a/data-otservbr-global/npc/old_adall.lua +++ b/data-otservbr-global/npc/old_adall.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 26, lookLegs = 115, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,16 +52,16 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to the ' .. keyword .. ' end for |TRAVELCOST|?', cost = cost }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Maybe another time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to the " .. keyword .. " end for |TRAVELCOST|?", cost = cost }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Maybe another time.", reset = true }) end -addTravelKeyword('east', 7, Position(32679, 32777, 7)) -addTravelKeyword('west', 7, Position(32558, 32780, 7)) +addTravelKeyword("east", 7, Position(32679, 32777, 7)) +addTravelKeyword("west", 7, Position(32558, 32780, 7)) -- Basic -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I can bring you either to the east end of Port Hope or to the west end of the town, where would you like to go?' }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can bring you either to the east end of Port Hope or to the west end of the town, where would you like to go?" }) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/old_rock_boy.lua b/data-otservbr-global/npc/old_rock_boy.lua index eb76133f52c..95fff37744e 100644 --- a/data-otservbr-global/npc/old_rock_boy.lua +++ b/data-otservbr-global/npc/old_rock_boy.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 13415 + lookTypeEx = 13415, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/oldrak.lua b/data-otservbr-global/npc/oldrak.lua index ebf8a27984a..b1f39216c7e 100644 --- a/data-otservbr-global/npc/oldrak.lua +++ b/data-otservbr-global/npc/oldrak.lua @@ -16,14 +16,14 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 31, lookFeet = 38, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { - { itemName = "holy tible", clientId = 2836 } + { itemName = "holy tible", clientId = 2836 }, } -- On buy npc shop message @@ -35,8 +35,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -102,7 +101,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - -- Demon oak quest if MsgContains(message, "mission") or MsgContains(message, "demon oak") then if player:getStorageValue(Storage.DemonOak.Done) < 1 then @@ -114,7 +112,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "You chopped down the demon oak?!? Unbelievable!! Let's hope it doesn't come back. As long as evil is still existent in the soil of the plains, it won't be over. Still, the demons suffered a setback, that's for sure. ...", "For your brave action, I tell you a secret which has been kept for many many years. There is an old house south of the location where you found the demon oak. There should be a grave with the name 'Yesim Adeit' somewhere close by. ...", - "It belongs to a Daramian nobleman named 'Teme Saiyid'. I knew him well and he told me -almost augured- that someone will come who is worthy to obtain his treasure. I'm sure this 'someone' is you. Good luck in finding it!" + "It belongs to a Daramian nobleman named 'Teme Saiyid'. I knew him well and he told me -almost augured- that someone will come who is worthy to obtain his treasure. I'm sure this 'someone' is you. Good luck in finding it!", }, npc, creature) player:setStorageValue(Storage.DemonOak.Done, 2) end diff --git a/data-otservbr-global/npc/oliver.lua b/data-otservbr-global/npc/oliver.lua index 672f0b65be5..5cda196805f 100644 --- a/data-otservbr-global/npc/oliver.lua +++ b/data-otservbr-global/npc/oliver.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,25 +58,25 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "report")) then - if (player:getStorageValue(Storage.InServiceofYalahar.Questline) == 8 or player:getStorageValue(Storage.InServiceofYalahar.Questline) == 12) then + if MsgContains(message, "report") then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 8 or player:getStorageValue(Storage.InServiceofYalahar.Questline) == 12 then npcHandler:say("Nobody knows the trouble I've seen .. . ", npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, player:getStorageValue(Storage.InServiceofYalahar.Questline) + 1) player:setStorageValue(Storage.InServiceofYalahar.Mission02, player:getStorageValue(Storage.InServiceofYalahar.Mission02) + 1) -- StorageValue for Questlog "Mission 02: Watching the Watchmen" npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "pass")) then + elseif MsgContains(message, "pass") then npcHandler:say("You can {pass} either to the {Factory Quarter} or {Sunken Quarter}. Which one will it be?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "factory")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "factory") then + if npcHandler:getTopic(playerId) == 1 then local destination = Position(32895, 31231, 7) player:teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "sunken")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "sunken") then + if npcHandler:getTopic(playerId) == 1 then local destination = Position(32895, 31226, 7) player:teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/npc/olrik.lua b/data-otservbr-global/npc/olrik.lua index 94153bd8d11..bcf6418e418 100644 --- a/data-otservbr-global/npc/olrik.lua +++ b/data-otservbr-global/npc/olrik.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 79, lookLegs = 117, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -92,7 +92,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -103,7 +103,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/omrabas.lua b/data-otservbr-global/npc/omrabas.lua index 2ad1cdd180f..378b0dc2793 100644 --- a/data-otservbr-global/npc/omrabas.lua +++ b/data-otservbr-global/npc/omrabas.lua @@ -11,20 +11,20 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 3114 + lookTypeEx = 3114, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Typical. Easy come, easy go.' }, - { text = 'He will PAY for this... They will ALL pay!' }, - { text = '' }, - { text = 'If I ever lay hands on him again...' } + { text = "Typical. Easy come, easy go." }, + { text = "He will PAY for this... They will ALL pay!" }, + { text = "" }, + { text = "If I ever lay hands on him again..." }, } local keywordHandler = KeywordHandler:new() @@ -81,19 +81,19 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "I need my heart back. I know where they have hidden it. Too afraid to destroy my beating heart, hah! ...", "It is in a dusty amphora in a sealed mass grave in the downmost cellar of my ancient home. The ruins lie to the north at the beach. ...", - "Crash the amphoras to find my heart, and bring it to me." + "Crash the amphoras to find my heart, and bring it to me.", }, npc, creature) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission06) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission07) < 1 then npcHandler:say({ "Yes? You have it? You what? Not in the amphoras? You picked it off someone else?!? ...", - "Well, the important thing is that you have it. Let's see if it's still in good shape. {Give} it to me." + "Well, the important thing is that you have it. Let's see if it's still in good shape. {Give} it to me.", }, npc, creature) npcHandler:setTopic(playerId, 4) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission07) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission08) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission08, 1) npcHandler:say({ "I will need brains - don't laugh! Ahem. I will need a stimulated brain, to be precise. ...", - "Use two half-eaten brains with the Brain Heater Machine in the Necromancer halls and bring me the fused, stimulated brain. Now go!" + "Use two half-eaten brains with the Brain Heater Machine in the Necromancer halls and bring me the fused, stimulated brain. Now go!", }, npc, creature) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission09) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission10) < 1 then npcHandler:say("Yes, yes, hello. Tell me if you lost something. If not, do you have that stimulated brain with you?", npc, creature) @@ -103,7 +103,7 @@ local function creatureSayCallback(npc, creature, type, message) player:addItem(19085, 1) npcHandler:say({ "Now that you have shown you've got the brains, I need you to show initiative. ...", - "I will need something that can be adequately used as intestines. Something alive. Stuff it into this storage flask and return it to me!" + "I will need something that can be adequately used as intestines. Something alive. Stuff it into this storage flask and return it to me!", }, npc, creature) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission12) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission13) < 1 then npcHandler:say("Hello, hello. Let's come to the point - did you find me some intestines?", npc, creature) @@ -114,7 +114,7 @@ local function creatureSayCallback(npc, creature, type, message) "This will happen through a necromantic ritual that we - or rather, you - now have to prepare. ...", "In a first step, it will involve retrieving specific artefacts of dark magic and hallowing the altars of the dark powers with them. ...", "After that, you will have to speak an ancient incantation to animate the body and fuse my soul within. ...", - "But first things first. Are you ready to {undertake} the hallowing of the five altars?" + "But first things first. Are you ready to {undertake} the hallowing of the five altars?", }, npc, creature) npcHandler:setTopic(playerId, 7) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission15) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission16) < 1 then @@ -125,55 +125,55 @@ local function creatureSayCallback(npc, creature, type, message) "I expected no less. Next is the Bonemarrow Altar, where the Dark Lord feasts upon the hallowed bones of...err. ...", "Ahem. Just take a yellowed bone or big bone, and hallow it - you don't know how? ...", "Huh. To HALLOW a yellowed bone, use it with one of the hallowed bonepiles in the Gardens Of Night. There are always bones around there - or were, in my days. ...", - "Then, place the hallowed bone on the firebasin of the Bonemarrow Altar so the Dark Lord can consume it and grants us his power. Return to me after that." + "Then, place the hallowed bone on the firebasin of the Bonemarrow Altar so the Dark Lord can consume it and grants us his power. Return to me after that.", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission17, 1) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission17) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission18) < 1 then npcHandler:say({ "Are you still here? Come on, let's not laze about, go to the Gardens of Night - where? ...", "East of the Necromancer Halls, you can't miss it, just look for a lot of dark and white sand, dried trees, and priestesses! ...", - "Or got a {problem} with finding bones? Hah!" + "Or got a {problem} with finding bones? Hah!", }, npc, creature) npcHandler:setTopic(playerId, 8) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission20) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission21) < 1 then npcHandler:say({ "Ah, welcome, welcome! I felt that one! The Dark Lord is pleased with the gift you brought, so now we can proceed with everything as planned. ...", - "If it had gone wrong though, he would have had your guts for gart... er... well, here you are, so - ready to get some {blood} flowing?" + "If it had gone wrong though, he would have had your guts for gart... er... well, here you are, so - ready to get some {blood} flowing?", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission21, 1) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission21) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission22) < 1 then npcHandler:say({ "Yes, I said blood. Important ingredient in necromantic rituals, usually. ...", - "You need to spill some vials of blood tincture for this task. Probably means killing blood priests to get those vials. Ready to do this?" + "You need to spill some vials of blood tincture for this task. Probably means killing blood priests to get those vials. Ready to do this?", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission22, 1) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission25) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission26) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission26, 1) npcHandler:say({ "Ah, it is invigorating to fell the dark flows, rushing through Drefia, once again! Capital. This has earned you a reward. ...", - "Now, the next mission awaits, {yes}?" + "Now, the next mission awaits, {yes}?", }, npc, creature) npcHandler:setTopic(playerId, 9) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission29) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission30) < 1 then npcHandler:say({ "Ah, finally. Exceptional! Don't you feel the earth awakening to our call? No? Oh. ...", - "Anyway, you succeeded in hallowing the Fireglass Altar! Only one altar remains to be hallowed! Shall we {proceed}?" + "Anyway, you succeeded in hallowing the Fireglass Altar! Only one altar remains to be hallowed! Shall we {proceed}?", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission30, 1) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission33) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission34) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission34, 1) npcHandler:say({ "Yes! YES! I have felt that! The altars are alive again! Well done! ...", - "We are close now. Only one important thing remains: the incantation itself. We need the {scroll} for that." + "We are close now. Only one important thing remains: the incantation itself. We need the {scroll} for that.", }, npc, creature) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission42) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission43) < 1 then - npcHandler:say('Yes? Do you have the {scroll} piece? ', npc, creature) + npcHandler:say("Yes? Do you have the {scroll} piece? ", npc, creature) npcHandler:setTopic(playerId, 11) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission43) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission44) < 1 then npcHandler:say({ "Hah, developed a taste for it, have you? I believe the next scroll piece was hidden somewhere, my old friend being of a somewhat distrustful nature. ...", "The scent may not be lost, though - ask a shadow pupil if he can help - but be careful. ...", - "Those shadow pupils are - strange. Try to find one who will answer and not kill you!" + "Those shadow pupils are - strange. Try to find one who will answer and not kill you!", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission44, 1) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission50) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission51) < 1 then @@ -183,7 +183,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Good! As you can imagine, I had a scroll piece, too. I hid it in my old quarters, northwest of the library. ...", "The door is magically sealed. Use this copper key with it to get inside. ...", - "Beneath one of the chests is a secret stash, under a loose stone tile. The scroll piece should be inside. Off you go." + "Beneath one of the chests is a secret stash, under a loose stone tile. The scroll piece should be inside. Off you go.", }, npc, creature) player:addItem(19173, 1) player:setStorageValue(Storage.GravediggerOfDrefia.Mission52, 1) @@ -197,7 +197,7 @@ local function creatureSayCallback(npc, creature, type, message) "Hahah, eager for it, I like that! ...", "One piece stayed in the hands of a beautiful priestess. ...", "As they never throw anything away that looks like an incantation - you get my drift. Find out where they still keep it! ...", - "Oh, one more thing! They only talk to you when you look like a fellow summoner. It's dangerous to go without a cape. Use this." + "Oh, one more thing! They only talk to you when you look like a fellow summoner. It's dangerous to go without a cape. Use this.", }, npc, creature) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission64) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission65) < 1 then npcHandler:say("Hello, young apprentice. Do you have that {scroll} piece from the priestess?", npc, creature) @@ -210,7 +210,7 @@ local function creatureSayCallback(npc, creature, type, message) "His grave is somewhere to the south, somewhere deeper. And he only reacts to magic words. ...", "Err... it's embarrassing... the magic words are ...", "'Friendship lives forever.' Silly, really. Untrue, as well. ...", - "Anyway, say those three words - don't make me repeat them - and the old softie will tell you where the scroll is. Pathetic." + "Anyway, say those three words - don't make me repeat them - and the old softie will tell you where the scroll is. Pathetic.", }, npc, creature) player:addItem(19148, 1) player:setStorageValue(Storage.GravediggerOfDrefia.Mission66, 1) @@ -225,7 +225,7 @@ local function creatureSayCallback(npc, creature, type, message) "It failed! IT FAILED! WHY? What have you done! This must be your fault! ...", "You... did... that was a recipe for chicken soup! No wonder the scroll failed! Now... all is lost ...", " I never want to see you again! You and your dirty gravedigger hands! Take this, you ungrateful, useless, imbecile... human! ...", - "Now... get out! And never, ever, dare come back! You ruined EVERYTHING!" + "Now... get out! And never, ever, dare come back! You ruined EVERYTHING!", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission73, 2) player:addItem(19136, 1) @@ -236,7 +236,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Very sensible of you. I will pay you handsomely for your help. ...", "All you have to do is fetch diverse fresh body parts and then prepare the resurrection ritual. Nothing out of the ordinary. ...", - "First, I need two arms. Ghouls usually carry some as a snack. Two ghoul snacks should not be hard to get! Return when you have them." + "First, I need two arms. Ghouls usually carry some as a snack. Two ghoul snacks should not be hard to get! Return when you have them.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission01) == 1 then @@ -280,7 +280,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.GravediggerOfDrefia.Mission13, 1) npcHandler:say({ "Ah... interesting. A snake? Not bad, not bad at all. ...", - "Right. Now, we need to waken the old powers through ritual. Let me know when you are ready for this {mission}." + "Right. Now, we need to waken the old powers through ritual. Let me know when you are ready for this {mission}.", }, npc, creature) npcHandler:setTopic(playerId, 0) else @@ -292,7 +292,7 @@ local function creatureSayCallback(npc, creature, type, message) "Ah, I knew you were a sturdy fellow! Necromancer material if ever I saw one! ...", "Well then, the next task is to anoint the Bloodgong Altar. This will animate the dark flows we need for the ritual. ...", "You need to spill a vial of blood tincture on each of the four sacrifical stones of the altar in order to anoint them. ...", - "Then, toll the Bloodgong north of the sacrificial stones to set the dark flows going. Return to me after that." + "Then, toll the Bloodgong north of the sacrificial stones to set the dark flows going. Return to me after that.", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission23, 1) elseif npcHandler:getTopic(playerId) == 9 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission26) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission27) < 1 then @@ -300,7 +300,7 @@ local function creatureSayCallback(npc, creature, type, message) "Excellent. To bind the earthly powers, we, I mean you, must worship at the Fireglass Altar. ...", "This means scattering sacred ashes from the Ember Chamber on the sacrificial stones of the Fireglass Altar. ...", "To gather the sacred ashes, you have to use magic chalk with the Shadow Fire in the Ember Chamber. ...", - "Gather the resulting ashes from the Shadow Hearth, and scatter them on the Fireglass Altar's sacrificial stones. Then return here." + "Gather the resulting ashes from the Shadow Hearth, and scatter them on the Fireglass Altar's sacrificial stones. Then return here.", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission27, 1) npcHandler:setTopic(playerId, 0) @@ -309,7 +309,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Superb! You won't regret this. I will reward you beyond your wildest dreams! ...", "I know that one of my former friends joined the blood priests later on. He made it quite high before he was ritually killed. ...", - "Go find a blood priest you can talk to. Ask him, but subtly. And never tell anyone what the scroll does!" + "Go find a blood priest you can talk to. Ask him, but subtly. And never tell anyone what the scroll does!", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 11 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission42) == 1 then @@ -325,7 +325,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Hah, developed a taste for it, have you? I believe the next scroll piece was hidden somewhere, my old friend being of a somewhat distrustful nature. ...", "The scent may not be lost, though - ask a shadow pupil if he can help - but be careful. ...", - "Those shadow pupils are - strange. Try to find one who will answer and not kill you!" + "Those shadow pupils are - strange. Try to find one who will answer and not kill you!", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission44, 1) elseif npcHandler:getTopic(playerId) == 12 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission50) == 1 then @@ -341,7 +341,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Good! As you can imagine, I had a scroll piece, too. I hid it in my old quarters, northwest of the library. ...", "The door is magically sealed. Use this copper key with it to get inside. ...", - "Beneath one of the chests is a secret stash, under a loose stone tile. The scroll piece should be inside. Off you go." + "Beneath one of the chests is a secret stash, under a loose stone tile. The scroll piece should be inside. Off you go.", }, npc, creature) player:addItem(19173, 1) player:setStorageValue(Storage.GravediggerOfDrefia.Mission52, 1) @@ -350,7 +350,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.GravediggerOfDrefia.Mission58, 1) npcHandler:say({ "Oh, praise the Dark Lord! It is my scroll piece! Give it here! You can have this instead. ...", - "Ahh, that feels GOOD. Now, only two pieces left to hunt down! On to the {next} scroll piece, yes?" + "Ahh, that feels GOOD. Now, only two pieces left to hunt down! On to the {next} scroll piece, yes?", }, npc, creature) npcHandler:setTopic(playerId, 0) else @@ -361,16 +361,17 @@ local function creatureSayCallback(npc, creature, type, message) player:addItem(19148, 1) player:setStorageValue(Storage.GravediggerOfDrefia.Mission59, 1) npcHandler:say({ - "Hahah, eager for it, I like that! ...", "One piece stayed in the hands of a beautiful priestess. ...", + "Hahah, eager for it, I like that! ...", + "One piece stayed in the hands of a beautiful priestess. ...", "As they never throw anything away that looks like an incantation - you get my drift. Find out where they still keep it! ...", - "Oh, one more thing! They only talk to you when you look like a fellow summoner. It's dangerous to go without a cape. Use this." + "Oh, one more thing! They only talk to you when you look like a fellow summoner. It's dangerous to go without a cape. Use this.", }, npc, creature) elseif npcHandler:getTopic(playerId) == 15 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission68) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission69) < 1 then if player:removeItem(18933, 1) then player:setStorageValue(Storage.GravediggerOfDrefia.Mission69, 1) npcHandler:say({ "Ahhh, capital, capital. Good girl for keeping it for me. I'll take back my cape now, thank you. ...", - "Now - the final part of the scroll! Ready to go retrieve it?" + "Now - the final part of the scroll! Ready to go retrieve it?", }, npc, creature) else npcHandler:say("You don't have my scroll.", npc, creature) @@ -383,7 +384,7 @@ local function creatureSayCallback(npc, creature, type, message) "His grave is somewhere to the south, somewhere deeper. And he only reacts to magic words. ...", "Err... it's embarrassing... the magic words are ...", "'Friendship lives forever.' Silly, really. Untrue, as well. ...", - "Anyway, say those three words - don't make me repeat them - and the old softie will tell you where the scroll is. Pathetic." + "Anyway, say those three words - don't make me repeat them - and the old softie will tell you where the scroll is. Pathetic.", }, npc, creature) player:addItem(19148, 1) player:setStorageValue(Storage.GravediggerOfDrefia.Mission71, 1) @@ -395,7 +396,7 @@ local function creatureSayCallback(npc, creature, type, message) "I am so excited! Finally, we - wait. What is this? That... is not the complete scroll piece. ...", "I don't care what you say! This is a disaster! We need a complete scr - wait. I have an idea. ...", "There must be a copy or something in my old library. something to use with the scroll, to find the missing words. ...", - "There must be. Go look there. Next to the fiveserrated room, a small library. Go go go!" + "There must be. Go look there. Next to the fiveserrated room, a small library. Go go go!", }, npc, creature) else npcHandler:say("You don't have my scroll.", npc, creature) @@ -405,16 +406,16 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Then let's go. Take my skull and the incantation scroll to the working station in the fiveserrated room ...", "Where the lava flows and the southern legs of the room meet. Place the Skull on the sacrificial stone and use the scroll ...", - "AND I shall be made whole, and YOU shall be RICH!" + "AND I shall be made whole, and YOU shall be RICH!", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission74, 1) player:addItem(18934, 1) player:addItem(19160, 1) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'demonic skeletal hands') or MsgContains(message, 'demonic skeletal hand') then + elseif MsgContains(message, "demonic skeletal hands") or MsgContains(message, "demonic skeletal hand") then npcHandler:say("What? Hack some off from a demon skeleton, of course! Now get moving.", npc, creature) - elseif MsgContains(message, 'give') and npcHandler:getTopic(playerId) == 4 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission06) == 1 then + elseif MsgContains(message, "give") and npcHandler:getTopic(playerId) == 4 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission06) == 1 then if player:removeItem(19077, 1) then npcHandler:say("Ah... Very good. Just say the word when you are ready for the next {mission}.", npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission07, 1) @@ -423,36 +424,36 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("You don't have my heart.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'undertake') and player:getStorageValue(Storage.GravediggerOfDrefia.Mission13) == 1 and npcHandler:getTopic(playerId) == 7 then + elseif MsgContains(message, "undertake") and player:getStorageValue(Storage.GravediggerOfDrefia.Mission13) == 1 and npcHandler:getTopic(playerId) == 7 then npcHandler:say({ "Good! Let's not waste time. The first altar you must hallow is the Dragonsoul Altar, at the eastern side of the room. ...", "To hallow it, dig out three dragon tears and place them on the altar to appease the dark powers. ...", "What? Oh, you'll find some dragon tears near dragon skulls... where? ...", - "In the Dragonbone Cemetery, OBVIOUSLY! Must I explain EVERYTHING to you? Now go!" + "In the Dragonbone Cemetery, OBVIOUSLY! Must I explain EVERYTHING to you? Now go!", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission14, 1) player:addItem(19084, 3) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'ready') and player:getStorageValue(Storage.GravediggerOfDrefia.Mission16) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission17) < 1 then + elseif MsgContains(message, "ready") and player:getStorageValue(Storage.GravediggerOfDrefia.Mission16) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission17) < 1 then npcHandler:say({ "I expected no less. Next is the Bonemarrow Altar, where the Dark Lord feasts upon the hallowed bones of...err. ...", "Ahem. Just take a yellowed bone or big bone, and hallow it - you don't know how? ...", "Huh. To HALLOW a yellowed bone, use it with one of the hallowed bonepiles in the Gardens Of Night. There are always bones around there - or were, in my days. ...", - "Then, place the hallowed bone on the firebasin of the Bonemarrow Altar so the Dark Lord can consume it and grants us his power. Return to me after that." + "Then, place the hallowed bone on the firebasin of the Bonemarrow Altar so the Dark Lord can consume it and grants us his power. Return to me after that.", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission17, 1) - elseif MsgContains(message, 'problem') and player:getStorageValue(Storage.GravediggerOfDrefia.Mission17) == 1 and npcHandler:getTopic(playerId) == 8 then + elseif MsgContains(message, "problem") and player:getStorageValue(Storage.GravediggerOfDrefia.Mission17) == 1 and npcHandler:getTopic(playerId) == 8 then npcHandler:say("What? No bones around you say? Hrmmm. Wait. Check the skull heap here - that's right - hah! There! Now get to work!", npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission18, 1) player:addItem(19090, 3) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'blood') and player:getStorageValue(Storage.GravediggerOfDrefia.Mission21) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission22) < 1 then + elseif MsgContains(message, "blood") and player:getStorageValue(Storage.GravediggerOfDrefia.Mission21) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission22) < 1 then npcHandler:say({ "Yes, I said blood. Important ingredient in necromantic rituals, usually. ...", - "You need to spill some vials of blood tincture for this task. Probably means killing blood priests to get those vials. Ready to do this?" + "You need to spill some vials of blood tincture for this task. Probably means killing blood priests to get those vials. Ready to do this?", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission22, 1) - elseif MsgContains(message, 'proceed') and player:getStorageValue(Storage.GravediggerOfDrefia.Mission30) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission31) < 1 then + elseif MsgContains(message, "proceed") and player:getStorageValue(Storage.GravediggerOfDrefia.Mission30) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission31) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission31, 1) player:addItem(19132, 1) player:addItem(19166, 1) @@ -461,16 +462,16 @@ local function creatureSayCallback(npc, creature, type, message) "Only a candle made of human tallow placed before each shadow statue in the right order, will awaken it. ...", "I say, are you sick? Human tallow candles are a perfectly good tool - don't look at me like that! Be professional about this, will you? ...", "I have some candles hidden deep down in the lich caves, east of here. Here's the key that opens the trapdoor to the cache. ...", - "And take this parchment. Identify the right candles with it, take three with you and place one in front of the three shadowthrone statues, starting counterclockwise. Now go!" + "And take this parchment. Identify the right candles with it, take three with you and place one in front of the three shadowthrone statues, starting counterclockwise. Now go!", }, npc, creature) - elseif MsgContains(message, 'scroll') then + elseif MsgContains(message, "scroll") then if player:getStorageValue(Storage.GravediggerOfDrefia.Mission34) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission35) < 1 then npcHandler:say({ "Well, it is a rather long story. The short version: I had friends - no need to snigger. ...", "We were five highly brilliant dark summoners. We joined our forces to find the scroll of Youth and Life Eternal. ...", "But when we finally found it after years of toiling and danger, we quarreled over who could have it. The scroll tore. ...", "We each retained one piece of the scroll. Well, that was a long time ago. ...", - "But I think I have a clue where we can find the first piece of the scroll. Would you go looking?" + "But I think I have a clue where we can find the first piece of the scroll. Would you go looking?", }, npc, creature) npcHandler:setTopic(playerId, 10) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission42) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission43) < 1 then @@ -484,7 +485,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.GravediggerOfDrefia.Mission58, 1) npcHandler:say({ "Oh, praise the Dark Lord! It is my scroll piece! Give it here! You can have this instead. ...", - "Ahh, that feels GOOD. Now, only two pieces left to hunt down! On to the {next} scroll piece, yes?" + "Ahh, that feels GOOD. Now, only two pieces left to hunt down! On to the {next} scroll piece, yes?", }, npc, creature) npcHandler:setTopic(playerId, 0) else @@ -498,19 +499,19 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Welcome, welcome! Finally! The last {scroll} piece.... you do have it, haven't you?", npc, creature) npcHandler:setTopic(playerId, 15) end - elseif MsgContains(message, 'next') then + elseif MsgContains(message, "next") then if player:getStorageValue(Storage.GravediggerOfDrefia.Mission43) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission44) < 1 then npcHandler:say({ "Hah, developed a taste for it, have you? I believe the next scroll piece was hidden somewhere, my old friend being of a somewhat distrustful nature. ...", "The scent may not be lost, though - ask a shadow pupil if he can help - but be careful. ...", - "Those shadow pupils are - strange. Try to find one who will answer and not kill you!" + "Those shadow pupils are - strange. Try to find one who will answer and not kill you!", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission44, 1) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission51) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission52) < 1 then npcHandler:say({ "Good! As you can imagine, I had a scroll piece, too. I hid it in my old quarters, northwest of the library. ...", "The door is magically sealed. Use this copper key with it to get inside. ...", - "Beneath one of the chests is a secret stash, under a loose stone tile. The scroll piece should be inside. Off you go." + "Beneath one of the chests is a secret stash, under a loose stone tile. The scroll piece should be inside. Off you go.", }, npc, creature) player:addItem(19173, 1) player:setStorageValue(Storage.GravediggerOfDrefia.Mission52, 1) @@ -521,15 +522,15 @@ local function creatureSayCallback(npc, creature, type, message) "Hahah, eager for it, I like that! ...", "One piece stayed in the hands of a beautiful priestess. ...", "As they never throw anything away that looks like an incantation - you get my drift. Find out where they still keep it! ...", - "Oh, one more thing! They only talk to you when you look like a fellow summoner. It's dangerous to go without a cape. Use this." + "Oh, one more thing! They only talk to you when you look like a fellow summoner. It's dangerous to go without a cape. Use this.", }, npc, creature) end - elseif MsgContains(message, 'restore') and player:getStorageValue(Storage.GravediggerOfDrefia.Mission69) <= 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission73) < 1 then --and npcHandler:getTopic(playerId) == 15 then + elseif MsgContains(message, "restore") and player:getStorageValue(Storage.GravediggerOfDrefia.Mission69) <= 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission73) < 1 then --and npcHandler:getTopic(playerId) == 15 then if player:removeItem(19158, 1) then npcHandler:say({ "I knew it! I knew I had made a copy! Oh, I am so clever! ...", "Now, watch this. THERE. THE COMPLETE INCANTATION SCROLL. ...", - "You have done well. Only one thing remains, and you shall be rich beyond your dreams. Ready for the really final task?" + "You have done well. Only one thing remains, and you shall be rich beyond your dreams. Ready for the really final task?", }, npc, creature) --player:setStorageValue(Storage.GravediggerOfDrefia.Mission72, 1) player:setStorageValue(Storage.GravediggerOfDrefia.Mission73, 1) diff --git a/data-otservbr-global/npc/omur.lua b/data-otservbr-global/npc/omur.lua index 6f24f29d5c5..54f2db38f35 100644 --- a/data-otservbr-global/npc/omur.lua +++ b/data-otservbr-global/npc/omur.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 6, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -60,7 +60,7 @@ npcConfig.shop = { { itemName = "orange", clientId = 3586, buy = 7 }, { itemName = "pumpkin", clientId = 3594, buy = 10 }, { itemName = "sample of sand wasp honey", clientId = 8760, buy = 200 }, - { itemName = "tomato", clientId = 3596, buy = 5 } + { itemName = "tomato", clientId = 3596, buy = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -71,7 +71,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/one_eyed_joe.lua b/data-otservbr-global/npc/one_eyed_joe.lua index 4ffdbd1619b..f8c36cead58 100644 --- a/data-otservbr-global/npc/one_eyed_joe.lua +++ b/data-otservbr-global/npc/one_eyed_joe.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 105, lookFeet = 97, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Did you hear that, too?' } + { text = "Did you hear that, too?" }, } local keywordHandler = KeywordHandler:new() @@ -60,8 +60,8 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) == 3) then - if (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline) == 3) then + if player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) == 3 then + if player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline) == 3 then player:setStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline, 4) end player:addAchievement("Wail of the Banshee") @@ -87,7 +87,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 1) npcHandler:say({ "As for myself I haven't been down there. But I heard some disturbing rumours. In these caves are wonderful crystal formations. Some more poetically inclined fellows call them the crystal gardens. ...", - "At first glance it seems to be a beautiful - and precious - surrounding. But in truth, deep down in these caverns exists an old evil. Want to hear more?" + "At first glance it seems to be a beautiful - and precious - surrounding. But in truth, deep down in these caverns exists an old evil. Want to hear more?", }, npc, creature) elseif MsgContains(message, "yes") and (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) > 0) and (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) < 3) then npcHandler:say({ "Hmm. No, i don't think so. I still feel this strange prickling in my toes." }, npc, creature) @@ -99,12 +99,12 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 2) npcHandler:say({ "The evil I mentioned is a strange crystal, imbued with some kind of unholy energy. It is very hard to destroy, no weapon is able to shatter the thing. Maybe a jarring, very loud sound could destroy it. ...", - "I heard of creatures, that are able to utter ear-splitting sounds. Don't remember the name, though. Would you go down there and try to destroy the crystal?" + "I heard of creatures, that are able to utter ear-splitting sounds. Don't remember the name, though. Would you go down there and try to destroy the crystal?", }, npc, creature) elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 2 then npcHandler:setTopic(playerId, 3) player:setStorageValue(Storage.TibiaTales.DefaultStart, 1) - if (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline) < 0) then + if player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline) < 0 then player:setStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline, 0) end player:setStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe, 0) @@ -112,18 +112,18 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "crystals") then npcHandler:say({ "In my humble opinion a pirate should win a fortune by boarding ships not by crawling through caves and tunnels. But who am I to bring into question the captain's decision. All I know is that they sell the crystals at a high price. ...", - "A certain amount of the crystals is ground to crystal dust with a special kind of mill. Don't ask me why. Some kind of magical component perhaps that they sell to mages and sorcerers." + "A certain amount of the crystals is ground to crystal dust with a special kind of mill. Don't ask me why. Some kind of magical component perhaps that they sell to mages and sorcerers.", }, npc, creature) elseif MsgContains(message, "cursed") and (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) < 0) and npcHandler:getTopic(playerId) < 1 then npcHandler:setTopic(playerId, 1) npcHandler:say({ "As for myself I haven't been down there. But I heard some disturbing rumours. In these caves are wonderful crystal formations. Some more poetically inclined fellows call them the crystal gardens. ...", - "At first glance it seems to be a beautiful - and precious - surrounding. But in truth, deep down in these caverns exists an old evil. Want to hear more?" + "At first glance it seems to be a beautiful - and precious - surrounding. But in truth, deep down in these caverns exists an old evil. Want to hear more?", }, npc, creature) elseif MsgContains(message, "sounds") then npcHandler:say({ "These caves are incredibly beautiful, {crystals} in vibrant colours grow there like exotic flowers. There are more than a few captains who send down their men in order to quarry the precious crystals. ...", - "But there are few volunteers. Often the crystal gatherers disappear and are never seen again. Other poor fellows then meet their former shipmates in the form of ghosts or skeletons. It's a {cursed} area, something evil is down there!" + "But there are few volunteers. Often the crystal gatherers disappear and are never seen again. Other poor fellows then meet their former shipmates in the form of ghosts or skeletons. It's a {cursed} area, something evil is down there!", }, npc, creature) elseif MsgContains(message, "job") then npcHandler:say({ "I'm a pirate. Normally I'm sailing the seas, boarding other ships and gathering treasures. But at the moment my captain graciously assigned me to watch this {cursed} entrance." }, npc, creature) diff --git a/data-otservbr-global/npc/ongulf.lua b/data-otservbr-global/npc/ongulf.lua index 91936aaf270..9dd2cc38e90 100644 --- a/data-otservbr-global/npc/ongulf.lua +++ b/data-otservbr-global/npc/ongulf.lua @@ -11,22 +11,22 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 70 + lookType = 70, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, { - text = 'Great, another supply ship is due. How is a dwarf supposed to work under these conditions?' + text = "Great, another supply ship is due. How is a dwarf supposed to work under these conditions?", }, { - text = 'Ah, there\'s nothing like the sound of hammers in the morning.' - } + text = "Ah, there's nothing like the sound of hammers in the morning.", + }, } local keywordHandler = KeywordHandler:new() @@ -67,126 +67,117 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "project") and player:getStorageValue(TheNewFrontier.Questline) < 1 then if npcHandler:getTopic(playerId) == 0 then - npcHandler:say( - { "Well, it's a long story but you really should listen to understand what is going on here. You can also hear a short version of the story, but then don't blame me if you mess something up due to your undwarfish impatience. ...", - "So what would you like to hear, the {long} story or the {short} version?" }, npc, creature) + npcHandler:say({ "Well, it's a long story but you really should listen to understand what is going on here. You can also hear a short version of the story, but then don't blame me if you mess something up due to your undwarfish impatience. ...", "So what would you like to hear, the {long} story or the {short} version?" }, npc, creature) npcHandler:setTopic(playerId, 1) end elseif MsgContains(message, "long") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say( - { "After centuries the resources beneath and around the Big Old One became alarmingly short. Some decades ago, the imperial mining guild financed a project to search and establish new mines far away from Kazordoon. ...", - "After several tries with mixed success, the project of the technomancers proved the most successful. Their steamships studied and mapped the great underwater rivers deep beneath the earth. ...", - "With the help of certain apparatuses, they tracked deposits of ore and compiled ship routes to reach them. These mining bases had some obvious advantages and disadvantages. ...", - "The suitable spots had no connection to the surface. On the one hand, this meant that the new mines were safe from most kinds of beasts. On the other hand, it meant that all food and material had to be brought there by ship. ...", - "Special, heavy ships were built to carry ore and supplies back and forth. The only limitation for such bases had been the range of the steamships. ...", - "Recently, the technomancers with the help of the temples of fire and earth made some crucial discoveries that allowed the ships to extend their cruising range almost limitlessly. ...", - "The survey ships of the technomancers were once again sent out to find new, promising resources. ...", - "Sadly some of the ships never returned and others only found minor deposits of ore, not worth the effort. But one of the ships made some groundbreaking discovery - a cave that had a connection to the surface. ...", - "As far as the explorers could tell, the area had been unknown to dwarfhood and mankind so far. ...", - "What was more, the said cave system had an abundance of rare ores. The imperial mining guild agreed to fund a new project and to name it 'project far far away'. ...", - "Don't look at me, I'm not the one who came up with that name! Those technomancers are such an imaginative bunch. But where have we been? Oh, yes, the new project! ...", - "Well, some ships were sent to establish a first base. ...", - "It became painfully obvious that the number of workers needed there could not easily be supplied by the ships alone. Also such a base would require an amount of money, expertise and manpower that the guild could not provide. ...", - "We would need help and additional resources. That's were you come into play. If you are interested, let's talk about possible missions." }, - npc, creature) + npcHandler:say({ + "After centuries the resources beneath and around the Big Old One became alarmingly short. Some decades ago, the imperial mining guild financed a project to search and establish new mines far away from Kazordoon. ...", + "After several tries with mixed success, the project of the technomancers proved the most successful. Their steamships studied and mapped the great underwater rivers deep beneath the earth. ...", + "With the help of certain apparatuses, they tracked deposits of ore and compiled ship routes to reach them. These mining bases had some obvious advantages and disadvantages. ...", + "The suitable spots had no connection to the surface. On the one hand, this meant that the new mines were safe from most kinds of beasts. On the other hand, it meant that all food and material had to be brought there by ship. ...", + "Special, heavy ships were built to carry ore and supplies back and forth. The only limitation for such bases had been the range of the steamships. ...", + "Recently, the technomancers with the help of the temples of fire and earth made some crucial discoveries that allowed the ships to extend their cruising range almost limitlessly. ...", + "The survey ships of the technomancers were once again sent out to find new, promising resources. ...", + "Sadly some of the ships never returned and others only found minor deposits of ore, not worth the effort. But one of the ships made some groundbreaking discovery - a cave that had a connection to the surface. ...", + "As far as the explorers could tell, the area had been unknown to dwarfhood and mankind so far. ...", + "What was more, the said cave system had an abundance of rare ores. The imperial mining guild agreed to fund a new project and to name it 'project far far away'. ...", + "Don't look at me, I'm not the one who came up with that name! Those technomancers are such an imaginative bunch. But where have we been? Oh, yes, the new project! ...", + "Well, some ships were sent to establish a first base. ...", + "It became painfully obvious that the number of workers needed there could not easily be supplied by the ships alone. Also such a base would require an amount of money, expertise and manpower that the guild could not provide. ...", + "We would need help and additional resources. That's were you come into play. If you are interested, let's talk about possible missions.", + }, npc, creature) npcHandler:setTopic(playerId, 2) end elseif MsgContains(message, "short") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say( - { " Well, we have found this place here full of promising resources and plan to create a new mining outpost. Of course this takes a lot of effort and organisation. ...", - "For some of the tasks at hand we need help, even from outsiders like you. So if you are interested in some missions, let me know.", - "Listen, I can handle the organisation down here and my boys will handle the construction of the base fine enough. Actually, all you do down here is to stand in the workers' way. ...", - "But there might be something for you to do outside the base. We need to learn more about the land up there. Take the lift and do some exploring. Find a passage leading out of the mountains. ...", - "Do not explore any further though. You never know whom you might be messing with." }, npc, creature) + npcHandler:say({ + " Well, we have found this place here full of promising resources and plan to create a new mining outpost. Of course this takes a lot of effort and organisation. ...", + "For some of the tasks at hand we need help, even from outsiders like you. So if you are interested in some missions, let me know.", + "Listen, I can handle the organisation down here and my boys will handle the construction of the base fine enough. Actually, all you do down here is to stand in the workers' way. ...", + "But there might be something for you to do outside the base. We need to learn more about the land up there. Take the lift and do some exploring. Find a passage leading out of the mountains. ...", + "Do not explore any further though. You never know whom you might be messing with.", + }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 1) player:setStorageValue(TheNewFrontier.Mission01, 1) -- Questlog, The New Frontier Quest "Mission 01: New Land" npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "mission") then if player:getStorageValue(TheNewFrontier.Questline) < 1 and npcHandler:getTopic(playerId) == 2 then - npcHandler:say( - { "Listen, I can handle the organisation down here and my boys will handle the construction of the base fine enough. Actually, all you do down here is to stand in the workers' way. ...", - "But there might be something for you to do outside the base. We need to learn more about the land up there. Take the lift and do some exploring. Find a passage leading out of the mountains. ...", - "Do not explore any further though. You never know whom you might be messing with." }, npc, creature) + npcHandler:say({ + "Listen, I can handle the organisation down here and my boys will handle the construction of the base fine enough. Actually, all you do down here is to stand in the workers' way. ...", + "But there might be something for you to do outside the base. We need to learn more about the land up there. Take the lift and do some exploring. Find a passage leading out of the mountains. ...", + "Do not explore any further though. You never know whom you might be messing with.", + }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 1) player:setStorageValue(TheNewFrontier.Mission01, 1) -- Questlog, The New Frontier Quest "Mission 01: New Land" npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 2 then - npcHandler:say( - "Excellent. Although we have no idea what awaits us in this foreign land, it is always good to know something more about our surroundings.", - npc, creature) + npcHandler:say("Excellent. Although we have no idea what awaits us in this foreign land, it is always good to know something more about our surroundings.", npc, creature) player:setStorageValue(TheNewFrontier.Questline, 3) player:setStorageValue(TheNewFrontier.Mission01, 3) -- Questlog, The New Frontier Quest "Mission 01: New Land" npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 3 then - npcHandler:say( - { "Things are running fine so far. Actually so fine that we are short of supplies and men. I'd send a letter home but I guess sending you to get some assistance gives the whole affair a bit more urgency. ...", - "So please travel back to Kazordoon. In the western mines outside of The Big Old One, you'll find Melfar of the imperial mining guild. Ask him to send some more miners and wood. When you return, I might have some more interesting missions for you." }, - npc, creature) + npcHandler:say({ + "Things are running fine so far. Actually so fine that we are short of supplies and men. I'd send a letter home but I guess sending you to get some assistance gives the whole affair a bit more urgency. ...", + "So please travel back to Kazordoon. In the western mines outside of The Big Old One, you'll find Melfar of the imperial mining guild. Ask him to send some more miners and wood. When you return, I might have some more interesting missions for you.", + }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 4) player:setStorageValue(TheNewFrontier.Mission02[1], 1) -- Questlog, The New Frontier Quest "Mission 02: From Kazordoon With Love" npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 6 then - npcHandler:say( - "That's good news for sure. It will give our operation a new impulse. However, only if there is not some unexpected trouble ahead. Well, we'll talk about that when we discuss your next {mission}.", - npc, creature) + npcHandler:say("That's good news for sure. It will give our operation a new impulse. However, only if there is not some unexpected trouble ahead. Well, we'll talk about that when we discuss your next {mission}.", npc, creature) player:setStorageValue(TheNewFrontier.Questline, 7) player:setStorageValue(TheNewFrontier.Mission02[1], 4) -- Questlog, The New Frontier Quest "Mission 02: From Kazordoon With Love" npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 7 then - npcHandler:say( - { "Our guards reported some nightly visitors. They chased them through the mountains but lost them when the fugitives climbed up some vines. ...", - "It could easily be some trap and I'm somewhat reluctant to send you there, but we can't allow some invisible aggressor to spy on us and maybe to prepare an attack. ...", - "Find these vines in this mountain, climb up there and find out who is spying on us! If they mean harm, get rid of them if possible. ...", - "If they are too powerful, just retreat and we will have to re-evaluate the situation. If they are harmless, all the better." }, - npc, creature) + npcHandler:say({ + "Our guards reported some nightly visitors. They chased them through the mountains but lost them when the fugitives climbed up some vines. ...", + "It could easily be some trap and I'm somewhat reluctant to send you there, but we can't allow some invisible aggressor to spy on us and maybe to prepare an attack. ...", + "Find these vines in this mountain, climb up there and find out who is spying on us! If they mean harm, get rid of them if possible. ...", + "If they are too powerful, just retreat and we will have to re-evaluate the situation. If they are harmless, all the better.", + }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 8) player:setStorageValue(TheNewFrontier.Mission03, 1) -- Questlog, The New Frontier Quest "Mission 03: Strangers in the Night" npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 9 then - npcHandler:say( - { "Primitive humans you say? These are most startling news, that's for sure. Well, I guess I'll send some victuals we can spare as a sign of our good will. ...", - "However, our miners encountered another problem in the meantime. I'm afraid this will be your next {mission}" }, - npc, creature) + npcHandler:say({ "Primitive humans you say? These are most startling news, that's for sure. Well, I guess I'll send some victuals we can spare as a sign of our good will. ...", "However, our miners encountered another problem in the meantime. I'm afraid this will be your next {mission}" }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 10) player:setStorageValue(TheNewFrontier.Mission03, 3) -- Questlog, The New Frontier Quest "Mission 03: Strangers in the Night" npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 10 then - npcHandler:say( - { "It seems things went from bad to worse! First we had some problems with the mine shafts we were building, and now that we found some precious veins in one of the new mines, and it happens to be the holiday resort of some hostile stone creatures! ...", - "Nothing we dwarfs couldn't handle alone, but I rather thought this could be something interesting for an adventurer like you. ...", - "So I reserved you the privilege to slay the leader! Use the mining lift to reach mine A07. The more stone creatures you kill, the better. Your mission, however, is to slay their leader, most likely some special stone beast." }, - npc, creature) + npcHandler:say({ + "It seems things went from bad to worse! First we had some problems with the mine shafts we were building, and now that we found some precious veins in one of the new mines, and it happens to be the holiday resort of some hostile stone creatures! ...", + "Nothing we dwarfs couldn't handle alone, but I rather thought this could be something interesting for an adventurer like you. ...", + "So I reserved you the privilege to slay the leader! Use the mining lift to reach mine A07. The more stone creatures you kill, the better. Your mission, however, is to slay their leader, most likely some special stone beast.", + }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 11) player:setStorageValue(TheNewFrontier.Mission04, 1) -- Questlog, The New Frontier Quest "Mission 04: The Mine Is Mine" npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 12 then - npcHandler:say( - "Shortly after you killed that creature, the others crumbled to dust and stone. I hope this incident does not foreshadow similar problems in our mines. However, for now I have other things to take care of and you have other {missions} to accomplish. ", - npc, creature) + npcHandler:say("Shortly after you killed that creature, the others crumbled to dust and stone. I hope this incident does not foreshadow similar problems in our mines. However, for now I have other things to take care of and you have other {missions} to accomplish. ", npc, creature) player:setStorageValue(TheNewFrontier.Questline, 13) player:setStorageValue(TheNewFrontier.Mission04, 2) -- Questlog, The New Frontier Quest 'Mission 04: The Mine Is Mine' npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 13 then - npcHandler:say( - { "Things are getting more and more complicated. You need to convince our friends that some intervention for their part is needed. ...", - "We've come a long way with our own resources, but now our resources are short and we need the others to step in. I want you to negotiate some more support from our partners. ... ", - "You'll need all your diplomacy and influence. If you blow the negotiations, look for a guy called Black Bert in Thais. ...", - "He has access to all kind of odd items, and he might have just the right bribe to convince someone to continue negotiations. ...", - "It will not be as easy as it might sound. So watch your words and your manners and keep in mind whom you are talking to. ...", - "Different strategies might be necessary for different people. You may try to FLATTER, THREATEN, IMPRESS, BLUFF, PLEA or to REASON with them. You probably need some luck as well. ... ", - "And now listen: We need more workers for the mines. The technomancers told us that a guy named Telas, who lives in Edron, copied the worker golem technology from Yalahar. Convince him to send us some of these golems. ... ", - "Further, we have more ore and end products than we can use right now. So we need someone to buy all the surplus. Convince Leeland Slim in Venore that the local traders step in as resellers. ... ", - "Another issue at hand is our lack of drilling worms. That should not be a big problem though. Just talk to the worm tamer in Kazordoon. If he does not get mad about you, there should be no problem to get his support. ... ", - "Also, now that our monetary resources are used up and not much cash is coming in, we need additional help to finance this venture. Thais has promised money in advance, but we haven't seen any of this support, yet. ... ", - "Convince the Thaian king to send us the promised money right now. ...", - "Another problem we need to solve is the exploration of our surroundings. We need to know friends and enemies, and find out about the plants and beasts in the vicinity and learn what is edible and what is dangerous. ... ", - "This is all stuff the Explorer Society is interested in. It should be easy to convince their representative in Port Hope. ...", - "At last, with the growing numbers of adventurers here, not only the security of the base is growing but also the demand for certain supplies. I'd like the Edron academy to open up a shop in the base. We need to keep you adventurers happy, don't we? ... ", - "Well, I hope you understand the importance of this mission and got what it takes to fulfil it. So hurry up and get us the needed support." }, - npc, creature) + npcHandler:say({ + "Things are getting more and more complicated. You need to convince our friends that some intervention for their part is needed. ...", + "We've come a long way with our own resources, but now our resources are short and we need the others to step in. I want you to negotiate some more support from our partners. ... ", + "You'll need all your diplomacy and influence. If you blow the negotiations, look for a guy called Black Bert in Thais. ...", + "He has access to all kind of odd items, and he might have just the right bribe to convince someone to continue negotiations. ...", + "It will not be as easy as it might sound. So watch your words and your manners and keep in mind whom you are talking to. ...", + "Different strategies might be necessary for different people. You may try to FLATTER, THREATEN, IMPRESS, BLUFF, PLEA or to REASON with them. You probably need some luck as well. ... ", + "And now listen: We need more workers for the mines. The technomancers told us that a guy named Telas, who lives in Edron, copied the worker golem technology from Yalahar. Convince him to send us some of these golems. ... ", + "Further, we have more ore and end products than we can use right now. So we need someone to buy all the surplus. Convince Leeland Slim in Venore that the local traders step in as resellers. ... ", + "Another issue at hand is our lack of drilling worms. That should not be a big problem though. Just talk to the worm tamer in Kazordoon. If he does not get mad about you, there should be no problem to get his support. ... ", + "Also, now that our monetary resources are used up and not much cash is coming in, we need additional help to finance this venture. Thais has promised money in advance, but we haven't seen any of this support, yet. ... ", + "Convince the Thaian king to send us the promised money right now. ...", + "Another problem we need to solve is the exploration of our surroundings. We need to know friends and enemies, and find out about the plants and beasts in the vicinity and learn what is edible and what is dangerous. ... ", + "This is all stuff the Explorer Society is interested in. It should be easy to convince their representative in Port Hope. ...", + "At last, with the growing numbers of adventurers here, not only the security of the base is growing but also the demand for certain supplies. I'd like the Edron academy to open up a shop in the base. We need to keep you adventurers happy, don't we? ... ", + "Well, I hope you understand the importance of this mission and got what it takes to fulfil it. So hurry up and get us the needed support.", + }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 14) player:setStorageValue(TheNewFrontier.Mission05[1], 1) -- Questlog, The New Frontier Quest "Mission 05: Getting Things Busy" player:setStorageValue(TheNewFrontier.Mission05.KingTibianus, 1) -- Questlog, The New Frontier Quest "Mission 5-1" @@ -203,55 +194,53 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(TheNewFrontier.Mission05.HumgolfKeyword, math.random(1, 2)) -- The New Frontier Quest "Mission 5-6" npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 14 then - if player:getStorageValue(TheNewFrontier.Mission05.KingTibianus) == 3 and - player:getStorageValue(TheNewFrontier.Mission05.Leeland) == 3 and - player:getStorageValue(TheNewFrontier.Mission05.Angus) == 3 and - player:getStorageValue(TheNewFrontier.Mission05.Wyrdin) == 3 and - player:getStorageValue(TheNewFrontier.Mission05.Telas) == 3 and - player:getStorageValue(TheNewFrontier.Mission05.Humgolf) == 3 then - npcHandler:say( - "You did an excellent job! With all this help Farmine will grow and prosper. While we put all available resources into building this base, I have another urgent {mission} for you.", - npc, creature) + if + player:getStorageValue(TheNewFrontier.Mission05.KingTibianus) == 3 + and player:getStorageValue(TheNewFrontier.Mission05.Leeland) == 3 + and player:getStorageValue(TheNewFrontier.Mission05.Angus) == 3 + and player:getStorageValue(TheNewFrontier.Mission05.Wyrdin) == 3 + and player:getStorageValue(TheNewFrontier.Mission05.Telas) == 3 + and player:getStorageValue(TheNewFrontier.Mission05.Humgolf) == 3 + then + npcHandler:say("You did an excellent job! With all this help Farmine will grow and prosper. While we put all available resources into building this base, I have another urgent {mission} for you.", npc, creature) player:setStorageValue(TheNewFrontier.Questline, 15) player:setStorageValue(TheNewFrontier.Mission05[1], 2) -- Questlog, The New Frontier Quest "Mission 05: Getting Things Busy" npcHandler:setTopic(playerId, 0) end elseif player:getStorageValue(TheNewFrontier.Questline) == 15 then - npcHandler:say( - { "Our new friends, those primitive humans sent us a warning. According to them, the 'green men' of the plains plan an attack on the mountains. ...", - "Considering their expected number, there is no chance for us to beat them off. We might be able to hold our ground for a while, but without access to the surface and under constant attacks, we might have to abandon the base. ...", - "Now, I'm aware that you cannot stop an entire army by yourself, but desperate situations call for desperate measures. I ask you to find the leaders of the orcs and - well do something. ...", - "Scare them, bribe them, give them another target or whatever. As futile as it may sound: Try to talk to their leaders in some way and make them stop their attack plans. This is our only hope." }, - npc, creature) + npcHandler:say({ + "Our new friends, those primitive humans sent us a warning. According to them, the 'green men' of the plains plan an attack on the mountains. ...", + "Considering their expected number, there is no chance for us to beat them off. We might be able to hold our ground for a while, but without access to the surface and under constant attacks, we might have to abandon the base. ...", + "Now, I'm aware that you cannot stop an entire army by yourself, but desperate situations call for desperate measures. I ask you to find the leaders of the orcs and - well do something. ...", + "Scare them, bribe them, give them another target or whatever. As futile as it may sound: Try to talk to their leaders in some way and make them stop their attack plans. This is our only hope.", + }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 16) player:setStorageValue(TheNewFrontier.Mission06, 1) -- Questlog, The New Frontier Quest "Mission 06: Days Of Doom" npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 19 then - npcHandler:say( - { "Oh my. What a mess you have gotten yourself into. Well, at least you made it out alive. Whatever the value of a minotaur's promise might be, I guess that is the best we can get. ...", - "Of course all those revelations lead to new problems and a new mission for you." }, npc, creature) + npcHandler:say({ "Oh my. What a mess you have gotten yourself into. Well, at least you made it out alive. Whatever the value of a minotaur's promise might be, I guess that is the best we can get. ...", "Of course all those revelations lead to new problems and a new mission for you." }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 20) player:setStorageValue(TheNewFrontier.Mission06, 5) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 20 then - npcHandler:say( - { "Ooook. Now that we managed to keep those orcs and minotaurs at bay at least for a while, we learn that the real meanies over here are some lizardmen. Just great, isn't it?. ...", - "So you might already guess your next mission: Find a way to hold those lizards off. Find them, contact them, talk to them, scare them, bribe them, whatever. Just keep that snakes away if anyhow possible. ...", - "If the orcs are right, they are somewhere in or behind those mountains in the north. I doubt you can reason with them in any way, but you'll have to try for the sake of Farmine." }, - npc, creature) + npcHandler:say({ + "Ooook. Now that we managed to keep those orcs and minotaurs at bay at least for a while, we learn that the real meanies over here are some lizardmen. Just great, isn't it?. ...", + "So you might already guess your next mission: Find a way to hold those lizards off. Find them, contact them, talk to them, scare them, bribe them, whatever. Just keep that snakes away if anyhow possible. ...", + "If the orcs are right, they are somewhere in or behind those mountains in the north. I doubt you can reason with them in any way, but you'll have to try for the sake of Farmine.", + }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 21) player:setStorageValue(TheNewFrontier.Mission07[1], 1) -- Questlog, The New Frontier Quest "Mission 07: Messengers Of Peace" npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(TheNewFrontier.Questline) == 28 then - npcHandler:say( - { "Oh, my! That sounds like a real mess. For now this dragon empire seems otherwise engaged, but we will be on guard thanks to you my friend. We will continue to fortify the base. ...", - "This leaves not much to do for you down here. I recommend you continue to explore this strange new land. ...", - "I'm pretty sure there are several opportunities at hand for an adventurer like you. ...", - "Perhaps you can help the primitives you encountered. Who knows, maybe even those minotaurs give you a chance to fortify this fragile peace between us. ...", - "Even some of the people here in the base might offer you some tasks sooner or later. If you prefer, you can also do some exploring, hunting and good ol' plundering on your own of course. ...", - "This new land is yours to be taken, so to say. Go out and make your fortune! With Farmine you have always a safe haven to return to. ...", - "Oh and one last thing: We convinced a carpet pilot to join us here. You'll find him on top of our lift in the mountains. I think he can offer you fast access to some cities back home." }, - npc, creature) + npcHandler:say({ + "Oh, my! That sounds like a real mess. For now this dragon empire seems otherwise engaged, but we will be on guard thanks to you my friend. We will continue to fortify the base. ...", + "This leaves not much to do for you down here. I recommend you continue to explore this strange new land. ...", + "I'm pretty sure there are several opportunities at hand for an adventurer like you. ...", + "Perhaps you can help the primitives you encountered. Who knows, maybe even those minotaurs give you a chance to fortify this fragile peace between us. ...", + "Even some of the people here in the base might offer you some tasks sooner or later. If you prefer, you can also do some exploring, hunting and good ol' plundering on your own of course. ...", + "This new land is yours to be taken, so to say. Go out and make your fortune! With Farmine you have always a safe haven to return to. ...", + "Oh and one last thing: We convinced a carpet pilot to join us here. You'll find him on top of our lift in the mountains. I think he can offer you fast access to some cities back home.", + }, npc, creature) player:addExperience(8000, true) player:addOutfit(335) player:addOutfit(336) diff --git a/data-otservbr-global/npc/orc_berserker.lua b/data-otservbr-global/npc/orc_berserker.lua index 8230b8bdab6..8204eab7085 100644 --- a/data-otservbr-global/npc/orc_berserker.lua +++ b/data-otservbr-global/npc/orc_berserker.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 8 + lookType = 8, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/oressa.lua b/data-otservbr-global/npc/oressa.lua index 52c5e9bf7da..fa0f8fdc132 100644 --- a/data-otservbr-global/npc/oressa.lua +++ b/data-otservbr-global/npc/oressa.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 78, lookLegs = 96, lookFeet = 114, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -28,14 +28,14 @@ npcConfig.voices = { chance = 50, { text = "You can't take it all with you - sell your Dawnport things before \z - you receive the gear of your definite vocation!" + you receive the gear of your definite vocation!", }, { text = "Leave all Dawnport things behind you and choose your destiny!" }, { text = "Come to me if you need healing!" }, { text = "Choose your vocation and explore the mainland!" }, { text = "Talk to me to choose your definite vocation! Become a knight, paladin, druid or sorcerer!" }, { text = "World needs brave adventurers like you. Choose your vocation and sail to the mainland!" }, - { text = "Poisoned? Bleeding? Wounded? I can help!" } + { text = "Poisoned? Bleeding? Wounded? I can help!" }, } local keywordHandler = KeywordHandler:new() @@ -66,96 +66,74 @@ npcType.onCloseChannel = function(npc, creature) end -- Basic keywords -keywordHandler:addKeyword({ "name" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I am Oressa Fourwinds, the {healer}. " - } -) -keywordHandler:addKeyword({ "healer" }, StdModule.say, - { - npcHandler = npcHandler, - text = "If you are hurt my child, I will {heal} your wounds." - } -) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I can {heal} you if you are hurt. I can also help you choose your {vocation}. " - } -) -keywordHandler:addKeyword({ "doors" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Behind each of those doors, the equipment and skills of one vocation lies - \z +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "I am Oressa Fourwinds, the {healer}. ", +}) +keywordHandler:addKeyword({ "healer" }, StdModule.say, { + npcHandler = npcHandler, + text = "If you are hurt my child, I will {heal} your wounds.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can {heal} you if you are hurt. I can also help you choose your {vocation}. ", +}) +keywordHandler:addKeyword({ "doors" }, StdModule.say, { + npcHandler = npcHandler, + text = "Behind each of those doors, the equipment and skills of one vocation lies - \z sorcerer, paladin, knight or druid. ...", - "When you have reached level 8, you can choose your definite vocation. You have to talk to me to receive it, \z + "When you have reached level 8, you can choose your definite vocation. You have to talk to me to receive it, \z and then you may open one of the doors, take up your vocation's gear, and leave the island. But be aware: ...", - "Once you have chosen your vocation and stepped through a door, you cannot go back or choose a different vocation. \z - So choose well!" - } -) -keywordHandler:addKeyword({ "inigo" }, StdModule.say, - { - npcHandler = npcHandler, - text = "He has seen much, and likes to help the younger ones. If you have questions about what to do, \z - or whom to ask for anything, go to Inigo." - } -) -keywordHandler:addKeyword({ "richard" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Found a new way of living and took to it like a fish to water." - } -) -keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ah. Some wounds never heal. Shipwrecked in body and mind. Nowhere to go, so he doesn't leave." - } -) -keywordHandler:addKeyword({ "morris" }, StdModule.say, - { - npcHandler = npcHandler, - text = "He broods over problems he won't share. But maybe you can help him with a little quest or two." - } -) -keywordHandler:addKeyword({ "hamish" }, StdModule.say, - { - npcHandler = npcHandler, - text = "He lives only for his experiments and potions" - } -) -keywordHandler:addKeyword({ "dawnport" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "This is a strange place. Many beings are called to it. I dreamed of it long before I came here. ...", - "Something spoke to me, telling me I had to be its voice; a voice of the Oracle here for the sake of \z - the adventurers that would come to defend {World} against evil and need to {choose} their destiny." - } - } -) -keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I have heard of it, yes." - } -) + "Once you have chosen your vocation and stepped through a door, you cannot go back or choose a different vocation. \z + So choose well!", +}) +keywordHandler:addKeyword({ "inigo" }, StdModule.say, { + npcHandler = npcHandler, + text = "He has seen much, and likes to help the younger ones. If you have questions about what to do, \z + or whom to ask for anything, go to Inigo.", +}) +keywordHandler:addKeyword({ "richard" }, StdModule.say, { + npcHandler = npcHandler, + text = "Found a new way of living and took to it like a fish to water.", +}) +keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ah. Some wounds never heal. Shipwrecked in body and mind. Nowhere to go, so he doesn't leave.", +}) +keywordHandler:addKeyword({ "morris" }, StdModule.say, { + npcHandler = npcHandler, + text = "He broods over problems he won't share. But maybe you can help him with a little quest or two.", +}) +keywordHandler:addKeyword({ "hamish" }, StdModule.say, { + npcHandler = npcHandler, + text = "He lives only for his experiments and potions", +}) +keywordHandler:addKeyword({ "dawnport" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "This is a strange place. Many beings are called to it. I dreamed of it long before I came here. ...", + "Something spoke to me, telling me I had to be its voice; a voice of the Oracle here for the sake of \z + the adventurers that would come to defend {World} against evil and need to {choose} their destiny.", + }, +}) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { + npcHandler = npcHandler, + text = "I have heard of it, yes.", +}) --From topic of vocation to topic of the "yes" message (choosing vocation) local topicTable = { [5] = VOCATION.ID.KNIGHT, [6] = VOCATION.ID.PALADIN, [7] = VOCATION.ID.DRUID, - [8] = VOCATION.ID.SORCERER + [8] = VOCATION.ID.SORCERER, } local vocationRoomPositions = { [5] = { x = 32068, y = 31884, z = 6 }, [6] = { x = 32059, y = 31884, z = 6 }, [7] = { x = 32073, y = 31884, z = 6 }, - [8] = { x = 32054, y = 31884, z = 6 } + [8] = { x = 32054, y = 31884, z = 6 }, } local function creatureSayCallback(npc, creature, type, message) @@ -178,7 +156,7 @@ local function creatureSayCallback(npc, creature, type, message) you are ready to choose the definite vocation that is to become your destiny. ... ", "Think carefully, as you can't change your vocation later on! You will have to choose your vocation in order \z to leave Dawnport for the main continent through one of these {doors} behind me. ... ", - "Talk to me again when you are ready to choose your vocation, and I will set you on your way. " + "Talk to me again when you are ready to choose your vocation, and I will set you on your way. ", } -- Heal and help dialog @@ -222,8 +200,12 @@ local function creatureSayCallback(npc, creature, type, message) -- Choosing dialog start elseif MsgContains(message, "choosing") or MsgContains(message, "choose") and npcHandler:getTopic(playerId) == 0 then if player:getLevel() >= 8 then - npcHandler:say("I'll help you decide. \z - Tell me: Do you like to keep your {distance}, or do you like {close} combat?", npc, creature) + npcHandler:say( + "I'll help you decide. \z + Tell me: Do you like to keep your {distance}, or do you like {close} combat?", + npc, + creature + ) npcHandler:setTopic(playerId, 2) else npcHandler:say(vocationDefaultMessages, npc, creature, 10) @@ -234,62 +216,58 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 3) -- knight elseif MsgContains(message, "close") and npcHandler:getTopic(playerId) == 2 then - npcHandler:say( - { - "Then you should choose the {vocation} of a knight and become a valiant fighter with sword and shield. ...", - "Knights are the toughest of all vocations. They can take more damage and carry more items than the other \z + npcHandler:say({ + "Then you should choose the {vocation} of a knight and become a valiant fighter with sword and shield. ...", + "Knights are the toughest of all vocations. They can take more damage and carry more items than the other \z vocations, but they will deal less damage than paladins, druids or sorcerers. ...", - "Knights can wield one- or two-handed swords, axes and clubs, and they can cast a few spells to draw a \z + "Knights can wield one- or two-handed swords, axes and clubs, and they can cast a few spells to draw a \z monster's attention to them. ...", - "So tell me: DO YOU WISH TO BECOME A VALIANT KNIGHT? Answer with a proud {YES} if that is your choice!" - }, - npc, creature, 10) + "So tell me: DO YOU WISH TO BECOME A VALIANT KNIGHT? Answer with a proud {YES} if that is your choice!", + }, npc, creature, 10) npcHandler:setTopic(playerId, 5) -- Paladin elseif MsgContains(message, "bow") or MsgContains(message, "spear") and npcHandler:getTopic(playerId) == 3 then - npcHandler:say( - { - "Then you should join the ranks of the paladins, noble hunters and rangers of the wild, who rely on the \z + npcHandler:say({ + "Then you should join the ranks of the paladins, noble hunters and rangers of the wild, who rely on the \z swiftness of movement and ranged attacks. ...", - "Paladins are jacks of all trades. They are tougher than the magically gifted and can carry more items \z + "Paladins are jacks of all trades. They are tougher than the magically gifted and can carry more items \z than druids or sorcerers, but they can take not as much damage as a knight can. ...", - "Paladins deal more damage than knights but less than druids or sorcerers, and have the longest range \z + "Paladins deal more damage than knights but less than druids or sorcerers, and have the longest range \z in their distance attacks. ...", - "They can also use holy magic to slay the unholy and undead in particular. ...", - "DO YOU WISH TO BECOME A DARING PALADIN? Answer with a proud {YES} if that is your choice!" - }, - npc, creature, 10) + "They can also use holy magic to slay the unholy and undead in particular. ...", + "DO YOU WISH TO BECOME A DARING PALADIN? Answer with a proud {YES} if that is your choice!", + }, npc, creature, 10) npcHandler:setTopic(playerId, 6) -- Mage elseif MsgContains(message, "magic") and npcHandler:getTopic(playerId) == 3 then - npcHandler:say("Tell me: Do you prefer to {heal} and cast the power of nature and ice, or do you want to rain \z - fire and {death} on your foes?", npc, creature) + npcHandler:say( + "Tell me: Do you prefer to {heal} and cast the power of nature and ice, or do you want to rain \z + fire and {death} on your foes?", + npc, + creature + ) npcHandler:setTopic(playerId, 4) -- Druid elseif MsgContains(message, "heal") and npcHandler:getTopic(playerId) == 4 then - npcHandler:say( - { - "Then you should learn the ways of the druids, healers and powerful masters of natural magic. ...", - "Druids can heal their friends and allies, but they can also cast powerful ice and earth magic \z + npcHandler:say({ + "Then you should learn the ways of the druids, healers and powerful masters of natural magic. ...", + "Druids can heal their friends and allies, but they can also cast powerful ice and earth magic \z to kill their enemies. They can do a little energy, fire or death damage as well. ...", - "Druids cannot take much damage or carry many items, but they deal \z + "Druids cannot take much damage or carry many items, but they deal \z much more damage than paladins or knights. ...", - "So tell me: DO YOU WISH TO BECOME A SAGACIOUS DRUID? Answer with a proud {YES} if that is your choice!" - }, - npc, creature, 10) + "So tell me: DO YOU WISH TO BECOME A SAGACIOUS DRUID? Answer with a proud {YES} if that is your choice!", + }, npc, creature, 10) npcHandler:setTopic(playerId, 7) -- Sorcerer elseif MsgContains(message, "death") and npcHandler:getTopic(playerId) == 4 then - npcHandler:say( - { - "Then you should become a sorcerer, a mighty wielder of deathly energies and arcane fire. ...", - "Sorcerers are powerful casters of magic. They use fire, energy and death magic to lay low their enemies. \z + npcHandler:say({ + "Then you should become a sorcerer, a mighty wielder of deathly energies and arcane fire. ...", + "Sorcerers are powerful casters of magic. They use fire, energy and death magic to lay low their enemies. \z They can do a little ice or earth damage as well. ...", - "Sorcerers cannot take much damage or carry many items, \z + "Sorcerers cannot take much damage or carry many items, \z but they deal much more damage than paladins or knights. ...", - "So tell me: DO YOU WISH TO BECOME A POWERFUL SORCERER? Answer with a proud {YES} if that is your choice!" - }, - npc, creature, 10) + "So tell me: DO YOU WISH TO BECOME A POWERFUL SORCERER? Answer with a proud {YES} if that is your choice!", + }, npc, creature, 10) npcHandler:setTopic(playerId, 8) -- Choosing dialog start elseif MsgContains(message, "decided") and npcHandler:getTopic(playerId) == 0 then @@ -302,12 +280,11 @@ local function creatureSayCallback(npc, creature, type, message) "Sorcerers cannot take much damage or carry many items, but they deal more damage than paladins or knights, \z and can target several enemies. ...", "If you wish to be a caster of fire and energy, hurling death magic at your foes, \z - you should consider choosing the sorcerer vocation." + you should consider choosing the sorcerer vocation.", } if player:getLevel() >= 8 then - table.insert(message, "So tell me: DO YOU WISH TO BECOME A POWERFUL SORCERER?" .. - " Answer with a proud {YES} if that is your choice!") + table.insert(message, "So tell me: DO YOU WISH TO BECOME A POWERFUL SORCERER?" .. " Answer with a proud {YES} if that is your choice!") npcHandler:setTopic(playerId, 8) else npcHandler:setTopic(playerId, 0) @@ -321,12 +298,11 @@ local function creatureSayCallback(npc, creature, type, message) "Druids cannot take much damage or carry many items, but they deal more damage than paladins or knights, \z and can target several enemies. ... ", "If you wish to be a healer and wielder of powerful natural magic, \z - you should consider choosing the druid vocation." + you should consider choosing the druid vocation.", } if player:getLevel() >= 8 then - table.insert(message, "So tell me: DO YOU WISH TO BECOME A SAGACIOUS DRUID?" .. - " Answer with a proud {YES} if that is your choice!") + table.insert(message, "So tell me: DO YOU WISH TO BECOME A SAGACIOUS DRUID?" .. " Answer with a proud {YES} if that is your choice!") npcHandler:setTopic(playerId, 7) else npcHandler:setTopic(playerId, 0) @@ -340,12 +316,11 @@ local function creatureSayCallback(npc, creature, type, message) "Paladins have the longest attack range, and can deal the most damage on a single target. ... ", "They can also use holy magic to slay the unholy and undead in particular. ... ", "If you like to keep a distance to your enemy, shooting while you outdistance him, \z - you should consider choosing the paladin vocation." + you should consider choosing the paladin vocation.", } if player:getLevel() >= 8 then - table.insert(message, "So tell me: DO YOU WISH TO BECOME A DARING PALADIN?" .. - " Answer with a proud {YES} if that is your choice!") + table.insert(message, "So tell me: DO YOU WISH TO BECOME A DARING PALADIN?" .. " Answer with a proud {YES} if that is your choice!") npcHandler:setTopic(playerId, 6) else npcHandler:setTopic(playerId, 0) @@ -359,7 +334,7 @@ local function creatureSayCallback(npc, creature, type, message) "Knights can wield one- or two-handed swords, axes and clubs, and they can cast a few spells to draw a \z monster's attention to them. ... ", "If you want to be a tough melee fighter who can resist much longer than anyone else, \z - you should consider choosing the knight vocation." + you should consider choosing the knight vocation.", } if player:getLevel() >= 8 then @@ -370,7 +345,7 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:say(message, npc, creature, 10) - elseif ((npcHandler:getTopic(playerId) >= 5) and (npcHandler:getTopic(playerId) <= 8)) then + elseif (npcHandler:getTopic(playerId) >= 5) and (npcHandler:getTopic(playerId) <= 8) then if MsgContains(message, "yes") then for index, value in pairs(topicTable) do if npcHandler:getTopic(playerId) == index then @@ -391,29 +366,23 @@ local function creatureSayCallback(npc, creature, type, message) end -- Remove Mainland smuggling items removeMainlandSmugglingItems(player) - npcHandler:say( - { - "SO BE IT. CAST OFF YOUR TRAINING GEAR AND RISE, NOBLE " .. player:getVocation():getName():upper() .. "! ...", - "Go through the second door from the right. Open the chest and take the equipment inside \z + npcHandler:say({ + "SO BE IT. CAST OFF YOUR TRAINING GEAR AND RISE, NOBLE " .. player:getVocation():getName():upper() .. "! ...", + "Go through the second door from the right. Open the chest and take the equipment inside \z before you leave to the north. ...", - "Take the ship to reach the Mainland. Farewell, friend and good luck in all you undertake!" - }, - npc, creature, 10) + "Take the ship to reach the Mainland. Farewell, friend and good luck in all you undertake!", + }, npc, creature, 10) npcHandler:setTopic(playerId, 0) elseif MsgContains(message, "no") then local vocationMessage = { [5] = "{paladin}, {sorcerer} or {druid}", [6] = "{knight}, {sorcerer} or {druid}", [7] = "{knight}, {paladin} or {sorcerer}", - [8] = "{knight}, {paladin} or {druid}" + [8] = "{knight}, {paladin} or {druid}", } - npcHandler:say( - { - "As you wish. If you wish to learn something about the " .. - vocationMessage[npcHandler:getTopic(playerId)] .. - " vocation, tell me.", - }, - npc, creature, 10) + npcHandler:say({ + "As you wish. If you wish to learn something about the " .. vocationMessage[npcHandler:getTopic(playerId)] .. " vocation, tell me.", + }, npc, creature, 10) npcHandler:setTopic(playerId, 0) end end @@ -425,11 +394,17 @@ local function greetCallback(npc, creature) local playerId = player:getId() if player:getLevel() >= 8 then - npcHandler:setMessage(MESSAGE_GREET, "Welcome, young adventurer. Tell me if you need help in \z - {choosing} your {vocation}, or if you have {decided} on the {vocation} you want to choose.") + npcHandler:setMessage( + MESSAGE_GREET, + "Welcome, young adventurer. Tell me if you need help in \z + {choosing} your {vocation}, or if you have {decided} on the {vocation} you want to choose." + ) else - npcHandler:setMessage(MESSAGE_GREET, "Welcome to the temple of Dawnport, child. \z - If you need {healing}, I can help you. Ask me about a {vocation} if you need counsel.") + npcHandler:setMessage( + MESSAGE_GREET, + "Welcome to the temple of Dawnport, child. \z + If you need {healing}, I can help you. Ask me about a {vocation} if you need counsel." + ) end return true end diff --git a/data-otservbr-global/npc/ormuhn.lua b/data-otservbr-global/npc/ormuhn.lua index 4194f73a7a5..de7d553ac66 100644 --- a/data-otservbr-global/npc/ormuhn.lua +++ b/data-otservbr-global/npc/ormuhn.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 18 + lookType = 18, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,220 +45,170 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addSpellKeyword({ 'find', 'person' }, - { - npcHandler = npcHandler, - spellName = 'Find Person', - price = 80, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'great', 'light' }, - { - npcHandler = npcHandler, - spellName = 'Great Light', - price = 500, - level = 13, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'light' }, - { - npcHandler = npcHandler, - spellName = 'Light', - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'magic', 'rope' }, - { - npcHandler = npcHandler, - spellName = 'Magic Rope', - price = 200, - level = 9, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'cure', 'poison' }, - { - npcHandler = npcHandler, - spellName = 'Cure Poison', - price = 150, - level = 10, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'intense', 'wound', 'cleansing' }, - { - npcHandler = npcHandler, - spellName = 'Intense Wound Cleansing', - price = 6000, - level = 80, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'wound', 'cleansing' }, - { - npcHandler = npcHandler, - spellName = 'Wound Cleansing', - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'levitate' }, - { - npcHandler = npcHandler, - spellName = 'Levitate', - price = 500, - level = 12, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'haste' }, - { - npcHandler = npcHandler, - spellName = 'Haste', - price = 600, - level = 14, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'brutal', 'strike' }, - { - npcHandler = npcHandler, - spellName = 'Brutal Strike', - price = 1000, - level = 16, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'charge' }, - { - npcHandler = npcHandler, - spellName = 'Charge', - price = 1300, - level = 25, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'whirlwind', 'throw' }, - { - npcHandler = npcHandler, - spellName = 'Whirlwind Throw', - price = 1500, - level = 28, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'groundshaker' }, - { - npcHandler = npcHandler, - spellName = 'Groundshaker', - price = 1500, - level = 33, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'fierce', 'berserk' }, - { - npcHandler = npcHandler, - spellName = 'Fierce Berserk', - price = 7500, - level = 90, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'berserk' }, - { - npcHandler = npcHandler, - spellName = 'Berserk', - price = 2500, - level = 35, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'inflict', 'wound' }, - { - npcHandler = npcHandler, - spellName = 'Inflict Wound', - price = 2500, - level = 40, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'cure', 'bleeding' }, - { - npcHandler = npcHandler, - spellName = 'Cure Bleeding', - price = 2500, - level = 45, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'intense', 'recovery' }, - { - npcHandler = npcHandler, - spellName = 'Intense Recovery', - price = 10000, - level = 100, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'recovery' }, - { - npcHandler = npcHandler, - spellName = 'Recovery', - price = 4000, - level = 50, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'front', 'sweep' }, - { - npcHandler = npcHandler, - spellName = 'Front Sweep', - price = 4000, - level = 70, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'annihilation' }, - { - npcHandler = npcHandler, - spellName = 'Annihilation', - price = 20000, - level = 110, - vocation = VOCATION.BASE_ID.KNIGHT - } -) +keywordHandler:addSpellKeyword({ "find", "person" }, { + npcHandler = npcHandler, + spellName = "Find Person", + price = 80, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "great", "light" }, { + npcHandler = npcHandler, + spellName = "Great Light", + price = 500, + level = 13, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "light" }, { + npcHandler = npcHandler, + spellName = "Light", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "magic", "rope" }, { + npcHandler = npcHandler, + spellName = "Magic Rope", + price = 200, + level = 9, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "poison" }, { + npcHandler = npcHandler, + spellName = "Cure Poison", + price = 150, + level = 10, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "intense", "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Intense Wound Cleansing", + price = 6000, + level = 80, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Wound Cleansing", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "levitate" }, { + npcHandler = npcHandler, + spellName = "Levitate", + price = 500, + level = 12, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "haste" }, { + npcHandler = npcHandler, + spellName = "Haste", + price = 600, + level = 14, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "brutal", "strike" }, { + npcHandler = npcHandler, + spellName = "Brutal Strike", + price = 1000, + level = 16, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "charge" }, { + npcHandler = npcHandler, + spellName = "Charge", + price = 1300, + level = 25, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "whirlwind", "throw" }, { + npcHandler = npcHandler, + spellName = "Whirlwind Throw", + price = 1500, + level = 28, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "groundshaker" }, { + npcHandler = npcHandler, + spellName = "Groundshaker", + price = 1500, + level = 33, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "fierce", "berserk" }, { + npcHandler = npcHandler, + spellName = "Fierce Berserk", + price = 7500, + level = 90, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "berserk" }, { + npcHandler = npcHandler, + spellName = "Berserk", + price = 2500, + level = 35, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "inflict", "wound" }, { + npcHandler = npcHandler, + spellName = "Inflict Wound", + price = 2500, + level = 40, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "bleeding" }, { + npcHandler = npcHandler, + spellName = "Cure Bleeding", + price = 2500, + level = 45, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "intense", "recovery" }, { + npcHandler = npcHandler, + spellName = "Intense Recovery", + price = 10000, + level = 100, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "recovery" }, { + npcHandler = npcHandler, + spellName = "Recovery", + price = 4000, + level = 50, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "front", "sweep" }, { + npcHandler = npcHandler, + spellName = "Front Sweep", + price = 4000, + level = 70, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "annihilation" }, { + npcHandler = npcHandler, + spellName = "Annihilation", + price = 20000, + level = 110, + vocation = VOCATION.BASE_ID.KNIGHT, +}) -keywordHandler:addKeyword({ 'healing', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Bruise Bane}', '{Cure Bleeding}', '{Wound Cleansing}', '{Cure Poison}', '{Intense Wound Cleansing}', '{Recovery}' and '{Intense Recovery}'." - } -) -keywordHandler:addKeyword({ 'attack', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = { "In this category I have '{Whirlwind Throw}', '{Groundshaker}', '{Berserk}' and '{Fierce Berserk}' as well as ...", "'{Brutal Strike}', '{Front Sweep}', '{Inflict Wound}' and '{Annihilation}'" } - } -) -keywordHandler:addKeyword({ 'support', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Light}', '{Find Person}', '{Magic Rope}', '{Levitate}', '{Haste}', '{Charge}' and '{Great Light}'." - } -) -keywordHandler:addKeyword({ 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'I can teach you {healing spells}, {attack spells} and {support spells}. What kind of spell do you wish to learn? You can also tell me for which level you would like to learn a spell, if you prefer that.' - } -) +keywordHandler:addKeyword({ "healing", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Bruise Bane}', '{Cure Bleeding}', '{Wound Cleansing}', '{Cure Poison}', '{Intense Wound Cleansing}', '{Recovery}' and '{Intense Recovery}'.", +}) +keywordHandler:addKeyword({ "attack", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = { "In this category I have '{Whirlwind Throw}', '{Groundshaker}', '{Berserk}' and '{Fierce Berserk}' as well as ...", "'{Brutal Strike}', '{Front Sweep}', '{Inflict Wound}' and '{Annihilation}'" }, +}) +keywordHandler:addKeyword({ "support", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Light}', '{Find Person}', '{Magic Rope}', '{Levitate}', '{Haste}', '{Charge}' and '{Great Light}'.", +}) +keywordHandler:addKeyword({ "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can teach you {healing spells}, {attack spells} and {support spells}. What kind of spell do you wish to learn? You can also tell me for which level you would like to learn a spell, if you prefer that.", +}) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/orockle.lua b/data-otservbr-global/npc/orockle.lua index ec2114b3b9c..2d9e70a4549 100644 --- a/data-otservbr-global/npc/orockle.lua +++ b/data-otservbr-global/npc/orockle.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 13418 + lookTypeEx = 13418, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -80,7 +80,7 @@ npcConfig.shop = { { itemName = "gooey substance", clientId = 14051, buy = 150 }, { itemName = "reagent flask", clientId = 14054, buy = 200 }, { itemName = "strange powder", clientId = 13974, buy = 150 }, - { itemName = "swarmer drum", clientId = 14255, buy = 200 } + { itemName = "swarmer drum", clientId = 14255, buy = 200 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -91,7 +91,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/ortheus.lua b/data-otservbr-global/npc/ortheus.lua index 0c02b531830..f688d51cda8 100644 --- a/data-otservbr-global/npc/ortheus.lua +++ b/data-otservbr-global/npc/ortheus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 121, lookLegs = 121, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -99,7 +99,9 @@ keywordHandler:addKeyword({ "lisander" }, StdModule.say, { npcHandler = npcHandl keywordHandler:addKeyword({ "serafin" }, StdModule.say, { npcHandler = npcHandler, text = "He sometimes delivers fruit and vegetables to this quarter." }) keywordHandler:addKeyword({ "yalahar" }, StdModule.say, { npcHandler = npcHandler, text = "Though the city has seen better days, the quality of life is still much better than in most other cities." }) keywordHandler:addKeyword({ "quarter" }, StdModule.say, { npcHandler = npcHandler, text = "I can't imagine a better place to live" }) -keywordHandler:addKeyword({ "alori mort" }, StdModule.say, { npcHandler = npcHandler, text = "Whatever that's supposed to mean." }, function(player) return player:getStorageValue(BloodBrothers.Mission03) == 1 end) +keywordHandler:addKeyword({ "alori mort" }, StdModule.say, { npcHandler = npcHandler, text = "Whatever that's supposed to mean." }, function(player) + return player:getStorageValue(BloodBrothers.Mission03) == 1 +end) keywordHandler:addKeyword({ "reward" }, StdModule.say, { npcHandler = npcHandler, text = "I don't have anything that I could give you as a reward. Guess you aren't so selfless after all, huh?" }) keywordHandler:addKeyword({ "augur" }, StdModule.say, { npcHandler = npcHandler, text = "They try to protect the city and do a decent job. Well - no, a poor job, I mean a poor job." }) keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = "You can bring me a mug of tea if you want to." }) diff --git a/data-otservbr-global/npc/oswald.lua b/data-otservbr-global/npc/oswald.lua index fdc292573de..2f9ca00cbda 100644 --- a/data-otservbr-global/npc/oswald.lua +++ b/data-otservbr-global/npc/oswald.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 67, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,38 +50,38 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'gods' }, StdModule.say, { npcHandler = npcHandler, text = "I think the gods are too busy to care about us mortals, hmm... that makes me feel godlike, too." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am honored to be the assistant of the great, the illustrious, the magnificent {Durin}!" }) -keywordHandler:addKeyword({ 'important' }, StdModule.say, { npcHandler = npcHandler, text = "I am honored to be the assistant of the great, the illustrious, the magnificent {Durin}!" }) -keywordHandler:addKeyword({ 'assistant' }, StdModule.say, { npcHandler = npcHandler, text = "I have a job of great responsibility, mostly I keep annoying persons away from my boss." }) -keywordHandler:addKeyword({ 'annoying' }, StdModule.say, { npcHandler = npcHandler, text = "You better don't ask, you wouldn't like the answer." }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = "Ah, yes, yes, hail to King {Tibianus}! Long live the king and so on..." }) -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = "I overheard a conversation of officials, that magic will be forbidden soon." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "My name is Oswald, but let's proceed, I am a very busy man." }) -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { npcHandler = npcHandler, text = "Hey, I am not a shopkeeper, I am an important man!" }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "It is nearly tea time, so please hurry!" }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = "It's rumoured that Sam does not forge all weapons himself, but buys them from his cousin, who is married to a cyclops." }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = " If you want to see dungeons just don't pay your taxes." }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = "It's beyond all doubt that certain sinister elements in our city have certain knowledge about this myth." }) -keywordHandler:addKeyword({ 'necromants nectar' }, StdModule.say, { npcHandler = npcHandler, text = "You are not the first one to ask about that. Am I the only one that preferes wine to such disgusting stuff?" }) -keywordHandler:addKeyword({ 'benjamin' }, StdModule.say, { npcHandler = npcHandler, text = "What do you expect from ex-soldiers? He is nuts! Hacked on the head far too often." }) -keywordHandler:addKeyword({ 'bozo' }, StdModule.say, { npcHandler = npcHandler, text = "Isn't he the artist formerly known as the prince?" }) -keywordHandler:addKeyword({ 'Chester Kahs' }, StdModule.say, { npcHandler = npcHandler, text = "I never found any rumour concerning him, isn't that odd?" }) -keywordHandler:addKeyword({ 'elane' }, StdModule.say, { npcHandler = npcHandler, text = "They say she killed over a dozen husbands already." }) -keywordHandler:addKeyword({ 'gamel' }, StdModule.say, { npcHandler = npcHandler, text = "This man lives in the darkness like a rat and is also as handsome as one of them. He surely is up to no good and often consorts with sinister strangers." }) -keywordHandler:addKeyword({ 'sinister strangers' }, StdModule.say, { npcHandler = npcHandler, text = "Just last week a one eyed man, who had a room at Frodo's, met him in the middle of the night." }) -keywordHandler:addKeyword({ 'gorn' }, StdModule.say, { npcHandler = npcHandler, text = "He sells his scrolls far too expensive." }) -keywordHandler:addKeyword({ 'gregor' }, StdModule.say, { npcHandler = npcHandler, text = "I was told he lost a body part or two in duels... if you know what I mean." }) -keywordHandler:addKeyword({ 'muriel' }, StdModule.say, { npcHandler = npcHandler, text = "He is rumoured to summon kinky demons to... well you know." }) -keywordHandler:addKeyword({ 'rumours' }, StdModule.say, { npcHandler = npcHandler, text = "You know a rumour? TELL ME! TELL ME! TELL ME!" }) -keywordHandler:addKeyword({ 'anything' }, StdModule.say, { npcHandler = npcHandler, text = "Fascinating! Absolutely fascinating!" }) -keywordHandler:addKeyword({ 'quentin' }, StdModule.say, { npcHandler = npcHandler, text = "I heard he was a ladies' man in younger days. In our days he is rumoured to wear women clothes now and then." }) -keywordHandler:addKeyword({ 'sam' }, StdModule.say, { npcHandler = npcHandler, text = "A simple shopkeeper with minor intelligence." }) -keywordHandler:addKeyword({ 'goshnar' }, StdModule.say, { npcHandler = npcHandler, text = "They say he isn't truly dead. He was... or is a necromant after all." }) -keywordHandler:addKeyword({ 'lugri' }, StdModule.say, { npcHandler = npcHandler, text = " Some say he is Ferumbras in disguise." }) -keywordHandler:addKeyword({ 'partos' }, StdModule.say, { npcHandler = npcHandler, text = "What a shame. He claimed to be the king of thiefs and was caught stealing some fruit." }) -keywordHandler:addKeyword({ 'durin' }, StdModule.say, { npcHandler = npcHandler, text = "Just between you and me, he can be quite a tyrant." }) -keywordHandler:addKeyword({ 'monsters' }, StdModule.say, { npcHandler = npcHandler, text = "AHHHH!!! WHERE??? WHERE???" }) +keywordHandler:addKeyword({ "gods" }, StdModule.say, { npcHandler = npcHandler, text = "I think the gods are too busy to care about us mortals, hmm... that makes me feel godlike, too." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am honored to be the assistant of the great, the illustrious, the magnificent {Durin}!" }) +keywordHandler:addKeyword({ "important" }, StdModule.say, { npcHandler = npcHandler, text = "I am honored to be the assistant of the great, the illustrious, the magnificent {Durin}!" }) +keywordHandler:addKeyword({ "assistant" }, StdModule.say, { npcHandler = npcHandler, text = "I have a job of great responsibility, mostly I keep annoying persons away from my boss." }) +keywordHandler:addKeyword({ "annoying" }, StdModule.say, { npcHandler = npcHandler, text = "You better don't ask, you wouldn't like the answer." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, yes, yes, hail to King {Tibianus}! Long live the king and so on..." }) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "I overheard a conversation of officials, that magic will be forbidden soon." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Oswald, but let's proceed, I am a very busy man." }) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, text = "Hey, I am not a shopkeeper, I am an important man!" }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It is nearly tea time, so please hurry!" }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "It's rumoured that Sam does not forge all weapons himself, but buys them from his cousin, who is married to a cyclops." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = " If you want to see dungeons just don't pay your taxes." }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "It's beyond all doubt that certain sinister elements in our city have certain knowledge about this myth." }) +keywordHandler:addKeyword({ "necromants nectar" }, StdModule.say, { npcHandler = npcHandler, text = "You are not the first one to ask about that. Am I the only one that preferes wine to such disgusting stuff?" }) +keywordHandler:addKeyword({ "benjamin" }, StdModule.say, { npcHandler = npcHandler, text = "What do you expect from ex-soldiers? He is nuts! Hacked on the head far too often." }) +keywordHandler:addKeyword({ "bozo" }, StdModule.say, { npcHandler = npcHandler, text = "Isn't he the artist formerly known as the prince?" }) +keywordHandler:addKeyword({ "Chester Kahs" }, StdModule.say, { npcHandler = npcHandler, text = "I never found any rumour concerning him, isn't that odd?" }) +keywordHandler:addKeyword({ "elane" }, StdModule.say, { npcHandler = npcHandler, text = "They say she killed over a dozen husbands already." }) +keywordHandler:addKeyword({ "gamel" }, StdModule.say, { npcHandler = npcHandler, text = "This man lives in the darkness like a rat and is also as handsome as one of them. He surely is up to no good and often consorts with sinister strangers." }) +keywordHandler:addKeyword({ "sinister strangers" }, StdModule.say, { npcHandler = npcHandler, text = "Just last week a one eyed man, who had a room at Frodo's, met him in the middle of the night." }) +keywordHandler:addKeyword({ "gorn" }, StdModule.say, { npcHandler = npcHandler, text = "He sells his scrolls far too expensive." }) +keywordHandler:addKeyword({ "gregor" }, StdModule.say, { npcHandler = npcHandler, text = "I was told he lost a body part or two in duels... if you know what I mean." }) +keywordHandler:addKeyword({ "muriel" }, StdModule.say, { npcHandler = npcHandler, text = "He is rumoured to summon kinky demons to... well you know." }) +keywordHandler:addKeyword({ "rumours" }, StdModule.say, { npcHandler = npcHandler, text = "You know a rumour? TELL ME! TELL ME! TELL ME!" }) +keywordHandler:addKeyword({ "anything" }, StdModule.say, { npcHandler = npcHandler, text = "Fascinating! Absolutely fascinating!" }) +keywordHandler:addKeyword({ "quentin" }, StdModule.say, { npcHandler = npcHandler, text = "I heard he was a ladies' man in younger days. In our days he is rumoured to wear women clothes now and then." }) +keywordHandler:addKeyword({ "sam" }, StdModule.say, { npcHandler = npcHandler, text = "A simple shopkeeper with minor intelligence." }) +keywordHandler:addKeyword({ "goshnar" }, StdModule.say, { npcHandler = npcHandler, text = "They say he isn't truly dead. He was... or is a necromant after all." }) +keywordHandler:addKeyword({ "lugri" }, StdModule.say, { npcHandler = npcHandler, text = " Some say he is Ferumbras in disguise." }) +keywordHandler:addKeyword({ "partos" }, StdModule.say, { npcHandler = npcHandler, text = "What a shame. He claimed to be the king of thiefs and was caught stealing some fruit." }) +keywordHandler:addKeyword({ "durin" }, StdModule.say, { npcHandler = npcHandler, text = "Just between you and me, he can be quite a tyrant." }) +keywordHandler:addKeyword({ "monsters" }, StdModule.say, { npcHandler = npcHandler, text = "AHHHH!!! WHERE??? WHERE???" }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -91,29 +91,28 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'invitation') then + if MsgContains(message, "invitation") then if player:getStorageValue(Storage.ThievesGuild.Mission03) == 1 then - npcHandler:say('What? So why in the world should I give you an invitation? It\'s not as if you were someone important, are you?', npc, creature) + npcHandler:say("What? So why in the world should I give you an invitation? It's not as if you were someone important, are you?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Well, rich and generous people are always welcome in the palace.If you donate 1000 gold to a fund I oversee, I\'ll give you an invitation, ok?', npc, creature) + npcHandler:say("Well, rich and generous people are always welcome in the palace.If you donate 1000 gold to a fund I oversee, I'll give you an invitation, ok?", npc, creature) npcHandler:setTopic(playerId, 3) elseif npcHandler:getTopic(playerId) == 3 then if player:removeMoneyBank(1000) then player:addItem(7933, 1) player:setStorageValue(Storage.ThievesGuild.Mission03, 2) - npcHandler:say('Excellent! Here is your invitation!', npc, creature) + npcHandler:say("Excellent! Here is your invitation!", npc, creature) else - npcHandler:say('You don\'t have enough money.', npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) end npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'gold') then + elseif MsgContains(message, "gold") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Not that I am bribeable but I doubt that you own 1000 gold pieces. Or do you?', npc, creature) + npcHandler:say("Not that I am bribeable but I doubt that you own 1000 gold pieces. Or do you?", npc, creature) npcHandler:setTopic(playerId, 2) end end diff --git a/data-otservbr-global/npc/ottokar.lua b/data-otservbr-global/npc/ottokar.lua index f614f3b4202..77e3f1dc977 100644 --- a/data-otservbr-global/npc/ottokar.lua +++ b/data-otservbr-global/npc/ottokar.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 121, lookLegs = 120, lookFeet = 114, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,21 +58,21 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'belongings of deceasead') or MsgContains(message, 'medicine') then + if MsgContains(message, "belongings of deceasead") or MsgContains(message, "medicine") then if player:getItemCount(12517) > 0 then - npcHandler:say('Did you bring me the medicine pouch?', npc, creature) + npcHandler:say("Did you bring me the medicine pouch?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('I need a {medicine pouch}, to give you the {belongings of deceased}. Come back when you have them.', npc, creature) + npcHandler:say("I need a {medicine pouch}, to give you the {belongings of deceased}. Come back when you have them.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 1 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 then if player:removeItem(12517, 1) then player:addItem(12413, 1) - player:addAchievementProgress('Doctor! Doctor!', 100) - npcHandler:say('Here you are', npc, creature) + player:addAchievementProgress("Doctor! Doctor!", 100) + npcHandler:say("Here you are", npc, creature) else - npcHandler:say('You do not have the required items.', npc, creature) + npcHandler:say("You do not have the required items.", npc, creature) end npcHandler:setTopic(playerId, 0) end diff --git a/data-otservbr-global/npc/padreia.lua b/data-otservbr-global/npc/padreia.lua index db2c361899d..f6bd6803ccb 100644 --- a/data-otservbr-global/npc/padreia.lua +++ b/data-otservbr-global/npc/padreia.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 87, lookLegs = 85, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,29 +58,28 @@ local function creatureSayCallback(npc, creature, type, message) return false end - -- Tibia tales quest if MsgContains(message, "cough syrup") then npcHandler:say("Do you want to buy a bottle of cough syrup for 50 gold?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'mission') then + elseif MsgContains(message, "mission") then if player:getStorageValue(Storage.TibiaTales.TheExterminator) == -1 then npcHandler:say({ - 'Oh ' .. player:getName() .. ', thank god you came to me. Last night, I had a vision about an upcoming plague here in Carlin. ...', - 'It will originate from slimes that will swarm out of the sewers and infect every citizen with a deadly disease. Are you willing to help me save Carlin?' + "Oh " .. player:getName() .. ", thank god you came to me. Last night, I had a vision about an upcoming plague here in Carlin. ...", + "It will originate from slimes that will swarm out of the sewers and infect every citizen with a deadly disease. Are you willing to help me save Carlin?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.TibiaTales.TheExterminator) == 1 then - npcHandler:say('You MUST find that slime pool immediately or life here in Carlin will not be the same anymore.', npc, creature) + npcHandler:say("You MUST find that slime pool immediately or life here in Carlin will not be the same anymore.", npc, creature) elseif player:getStorageValue(Storage.TibiaTales.TheExterminator) == 2 then local itemId = { 3033, 3032, 3030, 3029 } for i = 1, #itemId do player:addItem(itemId[i], 1) end player:setStorageValue(Storage.TibiaTales.TheExterminator, 3) - npcHandler:say('You did it! Even if only few of the Carliners will ever know about that, you saved all of their lives. Here, take this as a reward. Farewell!', npc, creature) + npcHandler:say("You did it! Even if only few of the Carliners will ever know about that, you saved all of their lives. Here, take this as a reward. Farewell!", npc, creature) else - npcHandler:say('Maybe the guards have something to do for you or know someone who could need some help.', npc, creature) + npcHandler:say("Maybe the guards have something to do for you or know someone who could need some help.", npc, creature) end elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then @@ -95,8 +94,8 @@ local function creatureSayCallback(npc, creature, type, message) player:addItem(135, 1) player:setStorageValue(Storage.TibiaTales.TheExterminator, 1) npcHandler:say({ - 'I knew I could count on you. Take this highly intensified vermin poison. In my vision, I saw some kind of \'pool\' where these slimes came from. ...', - 'Pour the poison in the water to stop the demise of Carlin. Tell me about your mission after you fulfilled your task.' + "I knew I could count on you. Take this highly intensified vermin poison. In my vision, I saw some kind of 'pool' where these slimes came from. ...", + "Pour the poison in the water to stop the demise of Carlin. Tell me about your mission after you fulfilled your task.", }, npc, creature) end npcHandler:setTopic(playerId, 0) @@ -105,7 +104,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Then no.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then - npcHandler:say('Then the downfall of Carlin is inescapable. Please think about it. You know where to find me.', npc, creature) + npcHandler:say("Then the downfall of Carlin is inescapable. Please think about it. You know where to find me.", npc, creature) npcHandler:setTopic(playerId, 0) end end @@ -125,13 +124,13 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the grand druid of Carlin. I am responsible for the guild, the fields, and our citizens' health." }) -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = "Every druid is able to learn the numerous spells of our craft." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the grand druid of Carlin. I am responsible for the guild, the fields, and our citizens' health." }) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "Every druid is able to learn the numerous spells of our craft." }) --keywordHandler:addKeyword({'spell'}, StdModule.say, {npcHandler = npcHandler, text = "Sorry, I don't teach spells for your vocation."}) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I am Padreia, grand druid of our fine city." }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "Time is just a crystal pillar - the centre of creation and life." }) -keywordHandler:addKeyword({ 'druids' }, StdModule.say, { npcHandler = npcHandler, text = "We are druids, preservers of life. Our magic is about defence, healing, and nature." }) -keywordHandler:addKeyword({ 'sorcerers' }, StdModule.say, { npcHandler = npcHandler, text = "Sorcerers are destructive. Their power lies in destruction and pain." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am Padreia, grand druid of our fine city." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Time is just a crystal pillar - the centre of creation and life." }) +keywordHandler:addKeyword({ "druids" }, StdModule.say, { npcHandler = npcHandler, text = "We are druids, preservers of life. Our magic is about defence, healing, and nature." }) +keywordHandler:addKeyword({ "sorcerers" }, StdModule.say, { npcHandler = npcHandler, text = "Sorcerers are destructive. Their power lies in destruction and pain." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to our humble guild, wanderer. May I be of any assistance to you?") npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell.") diff --git a/data-otservbr-global/npc/paladin_narai.lua b/data-otservbr-global/npc/paladin_narai.lua index 9f5a5fbd57f..4dca1851ad3 100644 --- a/data-otservbr-global/npc/paladin_narai.lua +++ b/data-otservbr-global/npc/paladin_narai.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/palimuth.lua b/data-otservbr-global/npc/palimuth.lua index a99c309502c..10b77930451 100644 --- a/data-otservbr-global/npc/palimuth.lua +++ b/data-otservbr-global/npc/palimuth.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 79, lookFeet = 98, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -73,7 +73,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 3 then npcHandler:say({ "You probably heard that we have numerous problems in different quarters of our city. Our forces are limited, so we really could need some help from outsiders. ...", - "Would you like to assist us in re-establishing order in our city?" + "Would you like to assist us in re-establishing order in our city?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.InServiceofYalahar.Questline) == 4 then @@ -82,7 +82,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "I hope your first mission will not scare you off. Even though, we cut off our sewer system from other parts of the city to prevent the worst, it still has deteriorated in the last decades. ...", "Certain parts of the controls are rusty and the drains are stuffed with garbage. Get yourself a crowbar, loosen the controls and clean the pipes from the garbage. ...", - "We were able to locate the 4 worst spots in the sewers. I will mark them for you on your map so you have no trouble finding them. Report to me when you have finished your {mission}. ..." + "We were able to locate the 4 worst spots in the sewers. I will mark them for you on your map so you have no trouble finding them. Report to me when you have finished your {mission}. ...", }, npc, creature) player:addMapMark(Position(32823, 31161, 8), 4, "Sewer Problem 1") player:addMapMark(Position(32795, 31152, 8), 4, "Sewer Problem 2") @@ -95,7 +95,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.InServiceofYalahar.Questline) == 6 then npcHandler:say({ "We are still present at each quarter's city wall, even though we can do little to stop the chaos from spreading. Still, our garrisons are necessary to maintain some sort of order in the city. ...", - "My superiors ask for a first hand report about the current situation in the single city quarters. I need someone to travel to our garrisons to get the reports from the guards. Are you willing to do that?" + "My superiors ask for a first hand report about the current situation in the single city quarters. I need someone to travel to our garrisons to get the reports from the guards. Are you willing to do that?", }, npc, creature) npcHandler:setTopic(playerId, 3) elseif player:getStorageValue(Storage.InServiceofYalahar.Questline) >= 7 and player:getStorageValue(Storage.InServiceofYalahar.Questline) <= 14 then @@ -106,7 +106,7 @@ local function creatureSayCallback(npc, creature, type, message) "I did my best to impress my superiors with your accomplishments and it seems that it worked quite well. They want you for their own missions now. ...", "Missions that are more important than the ones you've fulfilled for me. However, before you leave, there are still some things I need to tell you. ...", "Listen, I can't explain you everything in detail right now and here. You never know who might be eavesdropping. ...", - "I left some notes in the small room there. Get them and read them. Talk to me again when you've read the notes." + "I left some notes in the small room there. Get them and read them. Talk to me again when you've read the notes.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Mission03, 1) -- StorageValue for Questlog "Mission 03: Death to the Deathbringer" player:setStorageValue(Storage.InServiceofYalahar.Questline, 16) @@ -116,7 +116,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Now you know as much as we do about the things happening in Yalahar. It's up to you what you do with this information. ...", "Now leave and talk to my superior Azerus in the city centre to get your next mission. I urge you, though, to talk to me whenever he sends you on a new mission. ...", - "I think it is important that you hear my opinion about them. Now hurry. I suppose Azerus is already waiting." + "I think it is important that you hear my opinion about them. Now hurry. I suppose Azerus is already waiting.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Mission03, 2) -- StorageValue for Questlog "Mission 03: Death to the Deathbringer" player:setStorageValue(Storage.InServiceofYalahar.Questline, 17) @@ -127,7 +127,7 @@ local function creatureSayCallback(npc, creature, type, message) "This quarter has been sealed off years ago. To send someone there poses a high risk to spread the plague. I assume these research notes you've mentioned must be very important. ...", "After all those years it is more than strange that someone shows interest in these notes now. Considering what has happened to the alchemists, it is rather unlikely that they contain harmless information. ...", "I fear these notes will be used to turn the plague into some kind of weapon. Someone with this plague at his disposal could subdue the whole city by blackmailing. ...", - "I beg you to destroy these notes. Just put them into some burning oven to get rid of them and report that you did not find the notes." + "I beg you to destroy these notes. Just put them into some burning oven to get rid of them and report that you did not find the notes.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 21) player:setStorageValue(Storage.InServiceofYalahar.DoorToBog, 1) @@ -138,7 +138,7 @@ local function creatureSayCallback(npc, creature, type, message) "Mr. West is a little paranoid. That's the reason for his immense private army of bodyguards. He could surely be helpful, especially as he rules over the former trade quarter. ...", "If you were able to reach him without killing his henchmen, you could probably convince him that you mean no harm to him. ...", "That would certainly cement our relationship without any needless bloodshed. Perhaps you could use the way through the sewers to avoid his men. ...", - "Mr. West is not a bad man. We should be able to work out some plans to reconstruct the city's safety as soon as he overcomes his paranoia towards us." + "Mr. West is not a bad man. We should be able to work out some plans to reconstruct the city's safety as soon as he overcomes his paranoia towards us.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 24) player:setStorageValue(Storage.InServiceofYalahar.Mission04, 2) -- StorageValue for Questlog "Mission 04: Good to be Kingpin" @@ -146,7 +146,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.InServiceofYalahar.Questline) == 25 and player:getStorageValue(Storage.InServiceofYalahar.MrWestStatus) == 1 then npcHandler:say({ "You did quite well in gaining a new friend who will work together with us. ...", - "I'm sure he'll still try to gain some profit but that's still better than his former one-man rule during which he dictated his own laws." + "I'm sure he'll still try to gain some profit but that's still better than his former one-man rule during which he dictated his own laws.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.GoodSide, player:getStorageValue(Storage.InServiceofYalahar.GoodSide) >= 0 and player:getStorageValue(Storage.InServiceofYalahar.GoodSide) + 1 or 0) player:setStorageValue(Storage.InServiceofYalahar.Questline, 26) @@ -156,7 +156,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Warbeasts? Is this true? People are already starving. ...", "How can we afford to feed an army of hungry beasts? They will not only strengthen the power of the Yalahari over the citizens, they also mean starvation and deathfor the poor. ...", - "Instead of breeding warbeasts, this druid should breed cattle to feed our people. Please I beg you, convince him to do that!" + "Instead of breeding warbeasts, this druid should breed cattle to feed our people. Please I beg you, convince him to do that!", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 29) player:setStorageValue(Storage.InServiceofYalahar.TamerinStatus, 0) @@ -171,7 +171,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.InServiceofYalahar.Questline) == 35 then npcHandler:say({ "What a sick idea to misuse tortured souls to power some device! Though, this charm might be useful to free these poor souls. ...", - "Please capture the souls as you have been instructed and then bring the charm to me. I will see to it that the souls are freed to go to the afterlife in peace." + "Please capture the souls as you have been instructed and then bring the charm to me. I will see to it that the souls are freed to go to the afterlife in peace.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 36) player:setStorageValue(Storage.InServiceofYalahar.Mission06, 2) -- StorageValue for Questlog "Mission 06: Frightening Fuel" @@ -180,7 +180,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeItem(8827, 1) then npcHandler:say({ "I thank you also in the name of these poor lost souls. I will send the charm to a priest who is able to release them. ...", - "Tell the Yalahari that the charm was destroyed by the energy it contained." + "Tell the Yalahari that the charm was destroyed by the energy it contained.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 38) player:setStorageValue(Storage.InServiceofYalahar.Mission06, 4) -- StorageValue for Questlog "Mission 06: Frightening Fuel" @@ -192,7 +192,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "The quara are indeed a threat. Yet, they are numerous and reproduce quickly. Slaying some of them will only enrage them even more. ...", "The quara have been there for many generations. They have never threatened anyone who stayed out of their watery realm. ...", - "It would be much more useful to find out what the quara are so upset about. Better avoid slaying their leaders as this will only further the animosities." + "It would be much more useful to find out what the quara are so upset about. Better avoid slaying their leaders as this will only further the animosities.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 41) player:setStorageValue(Storage.InServiceofYalahar.DoorToQuara, 1) @@ -208,7 +208,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "The constant unrest in the city is to a great extent caused by the lack of food. Weapons will only serve to suppress the poor. ...", "The factory you were sent to was once used for the production of food. Somewhere in the factory you might find an old pattern crystal for the production of food. ...", - "If you use it on the controls instead of the weapon pattern, you will ensure that our people are supplied with the desperately needed food. ..." + "If you use it on the controls instead of the weapon pattern, you will ensure that our people are supplied with the desperately needed food. ...", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 45) player:setStorageValue(Storage.InServiceofYalahar.DoorToMatrix, 1) @@ -217,7 +217,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.InServiceofYalahar.Questline) == 48 then npcHandler:say({ "Listen, I know you have worked for Azerus and his friends, but it is not too late to change your mind! I beg you to rethink your loyalties. ...", - "The fate of the whole city might depend on your decision! Think about your options carefully." + "The fate of the whole city might depend on your decision! Think about your options carefully.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 49) npcHandler:setTopic(playerId, 0) @@ -229,7 +229,7 @@ local function creatureSayCallback(npc, creature, type, message) "I cannot tell you how we acquired this information, but we have heard that a circle of Yalahari is planning some kind of ritual. ...", "They plan to create a portal for some powerful demons and to unleash them in the city to 'purge' it once and for all. ...", "I doubt those poor fools will be able to control such entities. I can't figure out how they came up with such an insane idea, but they have to be stopped. ...", - "The entrance to their inner sanctum has been opened for you. Please hurry and stop them before it's too late. Be prepared for a HARD battle! Better gather some friends to assist you." + "The entrance to their inner sanctum has been opened for you. Please hurry and stop them before it's too late. Be prepared for a HARD battle! Better gather some friends to assist you.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 51) player:setStorageValue(Storage.InServiceofYalahar.DoorToLastFight, 1) @@ -243,7 +243,7 @@ local function creatureSayCallback(npc, creature, type, message) "Quite the opposite, they were opportunistic and not exactly bold. Perhaps they were led by some greater power which stayed behind the scenes. ...", "I'm afraid we have not seen the last chapter of Yalahar's drama. But anyhow, I wish to thank you for putting your life at stake for our cause. ...", "I allow you to enter the Yalaharian treasure room. I'm sure that you can put what you find inside to better use than them. Choose one chest, but think before takingone! ...", - "Also, take this Yalaharian outfit. Depending on which side you chose previously, you can also acquire one specific addon. Thank you again for your help." + "Also, take this Yalaharian outfit. Depending on which side you chose previously, you can also acquire one specific addon. Thank you again for your help.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 53) player:setStorageValue(Storage.InServiceofYalahar.DoorToReward, 1) @@ -259,7 +259,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "I'm pleased to hear that. Rarely we meet outsiders that care about our problems. Most people come here looking for wealth and luxury. ...", "However, I have to tell you that our ranking system is quite rigid. So, I'm not allowed to entrust you with important missions as long as you haven't proven yourself as reliable. ...", - "If you are willing to work for the city of Yalahar, you can ask me for a {mission} any time, be it night or day." + "If you are willing to work for the city of Yalahar, you can ask me for a {mission} any time, be it night or day.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then @@ -274,7 +274,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.InServiceofYalahar.Questline, 7) npcHandler:say({ "You'll find our seven guards at the gates of each quarter. Just ask them for their report and they will tell you all you need to know.", - "I must warn you, the quarters are in a horrible state. I strongly advise you to stay on the main roads whenever possible while you get those reports. ..." + "I must warn you, the quarters are in a horrible state. I strongly advise you to stay on the main roads whenever possible while you get those reports. ...", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 4 then diff --git a/data-otservbr-global/npc/palomino.lua b/data-otservbr-global/npc/palomino.lua index 06a16c1fc59..6be58366c8b 100644 --- a/data-otservbr-global/npc/palomino.lua +++ b/data-otservbr-global/npc/palomino.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 39, lookLegs = 12, lookFeet = 97, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,22 +58,22 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'transport') then - npcHandler:say('We can bring you to Venore with one of our coaches for 125 gold. Are you interested?', npc, creature) + if MsgContains(message, "transport") then + npcHandler:say("We can bring you to Venore with one of our coaches for 125 gold. Are you interested?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif table.contains({ 'rent', 'horses' }, message) then - npcHandler:say('Do you want to rent a horse for one day at a price of 500 gold?', npc, creature) + elseif table.contains({ "rent", "horses" }, message) then + npcHandler:say("Do you want to rent a horse for one day at a price of 500 gold?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then local player = Player(creature) if npcHandler:getTopic(playerId) == 1 then if player:isPzLocked() then - npcHandler:say('First get rid of those blood stains!', npc, creature) + npcHandler:say("First get rid of those blood stains!", npc, creature) return true end if not player:removeMoneyBank(125) then - npcHandler:say('You don\'t have enough money.', npc, creature) + npcHandler:say("You don't have enough money.", npc, creature) return true end @@ -81,33 +81,33 @@ local function creatureSayCallback(npc, creature, type, message) local destination = Position(32850, 32124, 7) player:teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) - npcHandler:say('Have a nice trip!', npc, creature) + npcHandler:say("Have a nice trip!", npc, creature) elseif npcHandler:getTopic(playerId) == 2 then if player:getStorageValue(Storage.RentedHorseTimer) >= os.time() then - npcHandler:say('You already have a horse.', npc, creature) + npcHandler:say("You already have a horse.", npc, creature) return true end if not player:removeMoneyBank(500) then - npcHandler:say('You do not have enough money to rent a horse!', npc, creature) + npcHandler:say("You do not have enough money to rent a horse!", npc, creature) return true end local mountId = { 22, 25, 26 } player:addMount(mountId[math.random(#mountId)]) player:setStorageValue(Storage.RentedHorseTimer, os.time() + 86400) - player:addAchievement('Natural Born Cowboy') - npcHandler:say('I\'ll give you one of our experienced ones. Take care! Look out for low hanging branches.', npc, creature) + player:addAchievement("Natural Born Cowboy") + npcHandler:say("I'll give you one of our experienced ones. Take care! Look out for low hanging branches.", npc, creature) end npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) > 0 then - npcHandler:say('Then not.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) > 0 then + npcHandler:say("Then not.", npc, creature) npcHandler:setTopic(playerId, 0) end return true end -npcHandler:setMessage(MESSAGE_GREET, 'Salutations, |PLAYERNAME| I guess you are here for the {horses}.') +npcHandler:setMessage(MESSAGE_GREET, "Salutations, |PLAYERNAME| I guess you are here for the {horses}.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/paolo.lua b/data-otservbr-global/npc/paolo.lua index b9edb435653..462680cd2bd 100644 --- a/data-otservbr-global/npc/paolo.lua +++ b/data-otservbr-global/npc/paolo.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 77, lookBody = 44, lookLegs = 76, - lookFeet = 95 + lookFeet = 95, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/parlan.lua b/data-otservbr-global/npc/parlan.lua index d426414b9c1..ff4a8e901db 100644 --- a/data-otservbr-global/npc/parlan.lua +++ b/data-otservbr-global/npc/parlan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 36, lookLegs = 116, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/partos.lua b/data-otservbr-global/npc/partos.lua index 3e6b4842efe..2172e137a57 100644 --- a/data-otservbr-global/npc/partos.lua +++ b/data-otservbr-global/npc/partos.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 56, lookLegs = 95, lookFeet = 121, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,33 +58,33 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'supplies') then + if MsgContains(message, "supplies") then if player:getStorageValue(Storage.DjinnWar.EfreetFaction.Mission01) == 1 then npcHandler:say({ - 'What!? I bet, Baa\'leal sent you! ...', - 'I won\'t tell you anything! Shove off!' + "What!? I bet, Baa'leal sent you! ...", + "I won't tell you anything! Shove off!", }, npc, creature) player:setStorageValue(Storage.DjinnWar.EfreetFaction.Mission01, 2) else - npcHandler:say('I won\'t talk about that.', npc, creature) + npcHandler:say("I won't talk about that.", npc, creature) end - elseif MsgContains(message, 'ankrahmun') then + elseif MsgContains(message, "ankrahmun") then npcHandler:say({ - 'Yes, I\'ve lived in Ankrahmun for quite some time. Ahh, good old times! ...', - 'Unfortunately I had to relocate. ...', - 'Business reasons - you know.' + "Yes, I've lived in Ankrahmun for quite some time. Ahh, good old times! ...", + "Unfortunately I had to relocate. ...", + "Business reasons - you know.", }, npc, creature) end return true end -keywordHandler:addKeyword({ 'prison' }, StdModule.say, { npcHandler = npcHandler, text = 'You mean that\'s a JAIL? They told me it\'s the finest hotel in town! THAT explains the lousy roomservice!' }) -keywordHandler:addKeyword({ 'jail' }, StdModule.say, { npcHandler = npcHandler, text = 'You mean that\'s a JAIL? They told me it\'s the finest hotel in town! THAT explains the lousy roomservice!' }) -keywordHandler:addKeyword({ 'cell' }, StdModule.say, { npcHandler = npcHandler, text = 'You mean that\'s a JAIL? They told me it\'s the finest hotel in town! THAT explains the lousy roomservice!' }) +keywordHandler:addKeyword({ "prison" }, StdModule.say, { npcHandler = npcHandler, text = "You mean that's a JAIL? They told me it's the finest hotel in town! THAT explains the lousy roomservice!" }) +keywordHandler:addKeyword({ "jail" }, StdModule.say, { npcHandler = npcHandler, text = "You mean that's a JAIL? They told me it's the finest hotel in town! THAT explains the lousy roomservice!" }) +keywordHandler:addKeyword({ "cell" }, StdModule.say, { npcHandler = npcHandler, text = "You mean that's a JAIL? They told me it's the finest hotel in town! THAT explains the lousy roomservice!" }) -npcHandler:setMessage(MESSAGE_GREET, 'Welcome to my little kingdom, |PLAYERNAME|.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, visit me again. I will be here, promised.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye, visit me again. I will be here, promised.') +npcHandler:setMessage(MESSAGE_GREET, "Welcome to my little kingdom, |PLAYERNAME|.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, visit me again. I will be here, promised.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye, visit me again. I will be here, promised.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/pat_the_worker.lua b/data-otservbr-global/npc/pat_the_worker.lua index f38edae2012..7ee037d00b8 100644 --- a/data-otservbr-global/npc/pat_the_worker.lua +++ b/data-otservbr-global/npc/pat_the_worker.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 57, lookBody = 40, lookLegs = 78, - lookFeet = 96 + lookFeet = 96, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/paulie.lua b/data-otservbr-global/npc/paulie.lua index 0e2ed44c840..38c91e2b902 100644 --- a/data-otservbr-global/npc/paulie.lua +++ b/data-otservbr-global/npc/paulie.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 114, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/peaceful_pooka.lua b/data-otservbr-global/npc/peaceful_pooka.lua index fb2da0223ef..ead43f205b4 100644 --- a/data-otservbr-global/npc/peaceful_pooka.lua +++ b/data-otservbr-global/npc/peaceful_pooka.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/peggy.lua b/data-otservbr-global/npc/peggy.lua index 27cfc3188a2..f4e44a41efa 100644 --- a/data-otservbr-global/npc/peggy.lua +++ b/data-otservbr-global/npc/peggy.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 36, lookLegs = 48, lookFeet = 38, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -148,7 +148,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -159,7 +159,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/pemaret.lua b/data-otservbr-global/npc/pemaret.lua index 410976cf36b..3282088d4fa 100644 --- a/data-otservbr-global/npc/pemaret.lua +++ b/data-otservbr-global/npc/pemaret.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 10, lookLegs = 126, lookFeet = 126, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -81,23 +81,23 @@ end -- Travel local function addTravelKeyword(keyword, text, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Maybe later.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Maybe later.", reset = true }) end -addTravelKeyword('edron', 'Do you want to get to Edron for |TRAVELCOST|?', 20, Position(33176, 31764, 6)) -addTravelKeyword('eremo', 'Oh, you know the good old sage Eremo. I can bring you to his little island. Do you want me to do that?', 0, Position(33314, 31883, 7)) +addTravelKeyword("edron", "Do you want to get to Edron for |TRAVELCOST|?", 20, Position(33176, 31764, 6)) +addTravelKeyword("eremo", "Oh, you know the good old sage Eremo. I can bring you to his little island. Do you want me to do that?", 0, Position(33314, 31883, 7)) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33293, 31957, 6), Position(33294, 31955, 6), Position(33294, 31958, 6) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33293, 31957, 6), Position(33294, 31955, 6), Position(33294, 31958, 6) } }) -- Basic -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a fisherman and I take along people to Edron. You can also buy some fresh fish.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a fisherman and I take along people to Edron. You can also buy some fresh fish.' }) -keywordHandler:addKeyword({ 'fish' }, StdModule.say, { npcHandler = npcHandler, text = 'My fish is of the finest quality you could find. Ask me for a trade to check for yourself.' }) -keywordHandler:addKeyword({ 'cormaya' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s a lovely and peaceful isle. Did you already visit the nice sandy beach?' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Pemaret, the fisherman.' }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a fisherman and I take along people to Edron. You can also buy some fresh fish." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a fisherman and I take along people to Edron. You can also buy some fresh fish." }) +keywordHandler:addKeyword({ "fish" }, StdModule.say, { npcHandler = npcHandler, text = "My fish is of the finest quality you could find. Ask me for a trade to check for yourself." }) +keywordHandler:addKeyword({ "cormaya" }, StdModule.say, { npcHandler = npcHandler, text = "It's a lovely and peaceful isle. Did you already visit the nice sandy beach?" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Pemaret, the fisherman." }) npcHandler:setMessage(MESSAGE_GREET, "Greetings, young man. Looking for a passage or some fish, |PLAYERNAME|?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") @@ -112,7 +112,7 @@ npcConfig.shop = { { itemName = "marlin", clientId = 901, sell = 800 }, { itemName = "northern pike", clientId = 3580, sell = 100 }, { itemName = "rainbow trout", clientId = 7158, sell = 100 }, - { itemName = "shimmer swimmer", clientId = 12557, sell = 3000 } + { itemName = "shimmer swimmer", clientId = 12557, sell = 3000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -123,7 +123,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/penny.lua b/data-otservbr-global/npc/penny.lua index 991761c2e08..28296a2f62a 100644 --- a/data-otservbr-global/npc/penny.lua +++ b/data-otservbr-global/npc/penny.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 117, lookFeet = 59, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,14 +56,14 @@ local function greetCallback(npc, creature) return true end -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I am miss Penny, your secretary." }) -keywordHandler:addKeyword({ 'penny' }, StdModule.say, { npcHandler = npcHandler, text = "Yep, Penny's my name. You seem to be as smart as you're talkative." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I'm a secretary. I'm organising all those papers and your mail." }) -keywordHandler:addKeyword({ 'criminal' }, StdModule.say, { npcHandler = npcHandler, text = " It's an evil world, isn't it?" }) -keywordHandler:addKeyword({ 'record' }, StdModule.say, { npcHandler = npcHandler, text = " It's an evil world, isn't it?" }) -keywordHandler:addKeyword({ 'paper' }, StdModule.say, { npcHandler = npcHandler, text = " It's an evil world, isn't it?" }) -keywordHandler:addKeyword({ 'mail' }, StdModule.say, { npcHandler = npcHandler, text = "You can get a letter from me." }) -keywordHandler:addKeyword({ '?' }, StdModule.say, { npcHandler = npcHandler, text = "Don't stare at me." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am miss Penny, your secretary." }) +keywordHandler:addKeyword({ "penny" }, StdModule.say, { npcHandler = npcHandler, text = "Yep, Penny's my name. You seem to be as smart as you're talkative." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a secretary. I'm organising all those papers and your mail." }) +keywordHandler:addKeyword({ "criminal" }, StdModule.say, { npcHandler = npcHandler, text = " It's an evil world, isn't it?" }) +keywordHandler:addKeyword({ "record" }, StdModule.say, { npcHandler = npcHandler, text = " It's an evil world, isn't it?" }) +keywordHandler:addKeyword({ "paper" }, StdModule.say, { npcHandler = npcHandler, text = " It's an evil world, isn't it?" }) +keywordHandler:addKeyword({ "mail" }, StdModule.say, { npcHandler = npcHandler, text = "You can get a letter from me." }) +keywordHandler:addKeyword({ "?" }, StdModule.say, { npcHandler = npcHandler, text = "Don't stare at me." }) npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell, and may Justice be with you!") @@ -72,7 +72,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "cake", clientId = 6277, buy = 1 }, - { itemName = "letter", clientId = 3505, buy = 1 } + { itemName = "letter", clientId = 3505, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -83,7 +83,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/perac.lua b/data-otservbr-global/npc/perac.lua index 0574721c5f1..cad20a281a8 100644 --- a/data-otservbr-global/npc/perac.lua +++ b/data-otservbr-global/npc/perac.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 90, lookLegs = 68, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -60,7 +60,7 @@ npcConfig.shop = { { itemName = "crossbow", clientId = 3349, buy = 500 }, { itemName = "quiver", clientId = 35562, buy = 400 }, { itemName = "red quiver", clientId = 35849, buy = 400 }, - { itemName = "spear", clientId = 3277, buy = 10 } + { itemName = "spear", clientId = 3277, buy = 10 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -71,7 +71,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/percy_silverhand.lua b/data-otservbr-global/npc/percy_silverhand.lua index e8e926e0cd7..5e7f36c7c13 100644 --- a/data-otservbr-global/npc/percy_silverhand.lua +++ b/data-otservbr-global/npc/percy_silverhand.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 131, lookLegs = 35, lookFeet = 128, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/percybald.lua b/data-otservbr-global/npc/percybald.lua index 75b0ff88b88..821e3e71ce5 100644 --- a/data-otservbr-global/npc/percybald.lua +++ b/data-otservbr-global/npc/percybald.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 21, lookLegs = 21, lookFeet = 38, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,79 +58,79 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'disguise') then + if MsgContains(message, "disguise") then if player:getStorageValue(Storage.ThievesGuild.TheatreScript) < 0 then npcHandler:say({ - 'Hmpf. Why should I waste my time to help some amateur? I\'m afraid I can only offer my assistance to actors that are as great as I am. ...', - 'Though, your futile attempt to prove your worthiness could be amusing. Grab a copy of a script from the prop room at the theatre cellar. Then talk to me again about your test!' + "Hmpf. Why should I waste my time to help some amateur? I'm afraid I can only offer my assistance to actors that are as great as I am. ...", + "Though, your futile attempt to prove your worthiness could be amusing. Grab a copy of a script from the prop room at the theatre cellar. Then talk to me again about your test!", }, npc, creature) player:setStorageValue(Storage.ThievesGuild.TheatreScript, 0) end - elseif MsgContains(message, 'test') then + elseif MsgContains(message, "test") then if player:getStorageValue(Storage.ThievesGuild.Mission04) == 5 then - npcHandler:say('I hope you learnt your role! I\'ll tell you a line from the script and you\'ll have to answer with the corresponding line! Ready?', npc, creature) + npcHandler:say("I hope you learnt your role! I'll tell you a line from the script and you'll have to answer with the corresponding line! Ready?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('How dare you? Are you mad? I hold the princess hostage and you drop your weapons. You\'re all lost!', npc, creature) + npcHandler:say("How dare you? Are you mad? I hold the princess hostage and you drop your weapons. You're all lost!", npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 3 then - npcHandler:say('Too late puny knight. You can\'t stop my master plan anymore!', npc, creature) + npcHandler:say("Too late puny knight. You can't stop my master plan anymore!", npc, creature) npcHandler:setTopic(playerId, 4) elseif npcHandler:getTopic(playerId) == 5 then - npcHandler:say('What\'s this? Behind the doctor?', npc, creature) + npcHandler:say("What's this? Behind the doctor?", npc, creature) npcHandler:setTopic(playerId, 6) elseif npcHandler:getTopic(playerId) == 7 then - npcHandler:say('Grrr!', npc, creature) + npcHandler:say("Grrr!", npc, creature) npcHandler:setTopic(playerId, 8) elseif npcHandler:getTopic(playerId) == 9 then - npcHandler:say('You\'re such a monster!', npc, creature) + npcHandler:say("You're such a monster!", npc, creature) npcHandler:setTopic(playerId, 10) elseif npcHandler:getTopic(playerId) == 11 then - npcHandler:say('Ah well, I think you passed the test! Here is your disguise kit! Now get lost, fate awaits me!', npc, creature) + npcHandler:say("Ah well, I think you passed the test! Here is your disguise kit! Now get lost, fate awaits me!", npc, creature) player:setStorageValue(Storage.ThievesGuild.Mission04, 6) player:addItem(7865, 1) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'I don\'t think so, dear doctor!') then - npcHandler:say('Ok, ok. You\'ve got this one right! Ready for the next one?', npc, creature) + if MsgContains(message, "I don't think so, dear doctor!") then + npcHandler:say("Ok, ok. You've got this one right! Ready for the next one?", npc, creature) npcHandler:setTopic(playerId, 3) else - npcHandler:say('No no no! That is not correct!', npc, creature) + npcHandler:say("No no no! That is not correct!", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 4 then - if MsgContains(message, 'Watch out! It\'s a trap!') then - npcHandler:say('Ok, ok. You\'ve got this one right! Ready for the next one?', npc, creature) + if MsgContains(message, "Watch out! It's a trap!") then + npcHandler:say("Ok, ok. You've got this one right! Ready for the next one?", npc, creature) npcHandler:setTopic(playerId, 5) else - npcHandler:say('No no no! That is not correct!', npc, creature) + npcHandler:say("No no no! That is not correct!", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 6 then - if MsgContains(message, 'Look! It\'s Lucky, the wonder dog!') then - npcHandler:say('Ok, ok. You\'ve got this one right! Ready for the next one?', npc, creature) + if MsgContains(message, "Look! It's Lucky, the wonder dog!") then + npcHandler:say("Ok, ok. You've got this one right! Ready for the next one?", npc, creature) npcHandler:setTopic(playerId, 7) else - npcHandler:say('No no no! That is not correct!', npc, creature) + npcHandler:say("No no no! That is not correct!", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 8 then - if MsgContains(message, 'Ahhhhhh!') then - npcHandler:say('Ok, ok. You\'ve got this one right! Ready for the next one?', npc, creature) + if MsgContains(message, "Ahhhhhh!") then + npcHandler:say("Ok, ok. You've got this one right! Ready for the next one?", npc, creature) npcHandler:setTopic(playerId, 9) else - npcHandler:say('No no no! That is not correct!', npc, creature) + npcHandler:say("No no no! That is not correct!", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 10 then - if MsgContains(message, 'Hahaha! Now drop your weapons or else...') then - npcHandler:say('Ok, ok. You\'ve got this one right! Ready for the next one?', npc, creature) + if MsgContains(message, "Hahaha! Now drop your weapons or else...") then + npcHandler:say("Ok, ok. You've got this one right! Ready for the next one?", npc, creature) npcHandler:setTopic(playerId, 11) else - npcHandler:say('No no no! That is not correct!', npc, creature) + npcHandler:say("No no no! That is not correct!", npc, creature) npcHandler:setTopic(playerId, 0) end end diff --git a/data-otservbr-global/npc/peremin.lua b/data-otservbr-global/npc/peremin.lua index 4892a5591b8..c997a2724a3 100644 --- a/data-otservbr-global/npc/peremin.lua +++ b/data-otservbr-global/npc/peremin.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 86, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/perod.lua b/data-otservbr-global/npc/perod.lua index f84240e7c5a..46361f1e82a 100644 --- a/data-otservbr-global/npc/perod.lua +++ b/data-otservbr-global/npc/perod.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 125, lookLegs = 29, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Stop by before embarking on your great adventure! Distance weapons and general equipment on sale today!' } + { text = "Stop by before embarking on your great adventure! Distance weapons and general equipment on sale today!" }, } local keywordHandler = KeywordHandler:new() @@ -151,7 +151,7 @@ npcConfig.shop = { { itemName = "vortex bolt", clientId = 14252, buy = 6 }, { itemName = "watch", clientId = 6092, buy = 20 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -162,7 +162,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/peter.lua b/data-otservbr-global/npc/peter.lua index d4c4756eb7e..851d085b90b 100644 --- a/data-otservbr-global/npc/peter.lua +++ b/data-otservbr-global/npc/peter.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,8 +58,8 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "report")) then - if (player:getStorageValue(Storage.InServiceofYalahar.Questline) == 7 or player:getStorageValue(Storage.InServiceofYalahar.Questline) == 13) then + if MsgContains(message, "report") then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 7 or player:getStorageValue(Storage.InServiceofYalahar.Questline) == 13 then npcHandler:say("A report? What do they think is happening here? . ", npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, player:getStorageValue(Storage.InServiceofYalahar.Questline) + 1) player:setStorageValue(Storage.InServiceofYalahar.Mission02, player:getStorageValue(Storage.InServiceofYalahar.Mission02) + 1) -- StorageValue for Questlog "Mission 02: Watching the Watchmen" @@ -68,8 +68,8 @@ local function creatureSayCallback(npc, creature, type, message) elseif table.contains({ "pass", "gate" }, message:lower()) then npcHandler:say("Pass the gate? If it must be. Are you headed for the {factory} or the former {trade} quarter?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "factory")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "factory") then + if npcHandler:getTopic(playerId) == 1 then local destination = Position(32859, 31302, 7) player:teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) @@ -82,13 +82,13 @@ local function creatureSayCallback(npc, creature, type, message) end -- Travel without the need to say "pass", remove or comment this two lines if you want to keep the rpg -keywordHandler:addKeyword({ 'factory' }, StdModule.travel, { npcHandler = npcHandler, destination = Position(32859, 31302, 7) }) -keywordHandler:addKeyword({ 'trade' }, StdModule.travel, { npcHandler = npcHandler, destination = Position(32854, 31302, 7) }) +keywordHandler:addKeyword({ "factory" }, StdModule.travel, { npcHandler = npcHandler, destination = Position(32859, 31302, 7) }) +keywordHandler:addKeyword({ "trade" }, StdModule.travel, { npcHandler = npcHandler, destination = Position(32854, 31302, 7) }) local function onTradeRequest(npc, creature) local player = Player(creature) local playerId = player:getId() - if (npcHandler:getTopic(playerId) == 1) then + if npcHandler:getTopic(playerId) == 1 then local destination = Position(32854, 31302, 7) player:teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/npc/petros.lua b/data-otservbr-global/npc/petros.lua index 6945d14d481..228a3d7e4cb 100644 --- a/data-otservbr-global/npc/petros.lua +++ b/data-otservbr-global/npc/petros.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 10, lookLegs = 127, lookFeet = 127, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,32 +53,34 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, condition) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m sorry but I don\'t sail there.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "I'm sorry but I don't sail there." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('venore', 180, Position(32954, 32022, 6)) -addTravelKeyword('port hope', 50, Position(32527, 32784, 6)) -addTravelKeyword('liberty bay', 140, Position(32285, 32892, 6)) -addTravelKeyword('ankrahmun', 150, Position(33092, 32883, 6)) -addTravelKeyword('yalahar', 210, Position(32816, 31272, 6), function(player) return player:getStorageValue(Storage.SearoutesAroundYalahar.Darashia) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 end) -addTravelKeyword('gray island', 160, Position(33196, 31984, 7)) -addTravelKeyword('krailos', 200, Position(33493, 31712, 6)) -addTravelKeyword('issavi', 130, Position(33902, 31462, 6)) +addTravelKeyword("venore", 180, Position(32954, 32022, 6)) +addTravelKeyword("port hope", 50, Position(32527, 32784, 6)) +addTravelKeyword("liberty bay", 140, Position(32285, 32892, 6)) +addTravelKeyword("ankrahmun", 150, Position(33092, 32883, 6)) +addTravelKeyword("yalahar", 210, Position(32816, 31272, 6), function(player) + return player:getStorageValue(Storage.SearoutesAroundYalahar.Darashia) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 +end) +addTravelKeyword("gray island", 160, Position(33196, 31984, 7)) +addTravelKeyword("krailos", 200, Position(33493, 31712, 6)) +addTravelKeyword("issavi", 130, Position(33902, 31462, 6)) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33288, 32474, 6), Position(33291, 32474, 6), Position(33293, 32471, 6) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33288, 32474, 6), Position(33291, 32474, 6), Position(33293, 32471, 6) } }) -- Basic -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = "My boat is ready to bring you to {Venore}, {Port Hope}, {Liberty Bay}, {Yalahar}, {Gray Island}, {Ankrahmun}, {Krailos} or {Issavi}. Or to {Travora} - a place between the worlds." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go - {Krailos}, {Venore}, {Port Hope}, {Liberty Bay}, {Ankrahmun}, {Yalahar} or {Gray Island}?" }) -keywordHandler:addKeyword({ 'darashia' }, StdModule.say, { npcHandler = npcHandler, text = "That's where we are." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s Petros.' }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "My boat is ready to bring you to {Venore}, {Port Hope}, {Liberty Bay}, {Yalahar}, {Gray Island}, {Ankrahmun}, {Krailos} or {Issavi}. Or to {Travora} - a place between the worlds." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go - {Krailos}, {Venore}, {Port Hope}, {Liberty Bay}, {Ankrahmun}, {Yalahar} or {Gray Island}?" }) +keywordHandler:addKeyword({ "darashia" }, StdModule.say, { npcHandler = npcHandler, text = "That's where we are." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "It's Petros." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. Where can I {sail} you today?") npcHandler:setMessage(MESSAGE_FAREWELL, "Bye.") diff --git a/data-otservbr-global/npc/phillip.lua b/data-otservbr-global/npc/phillip.lua index e5cbfb1834f..eeb063bc127 100644 --- a/data-otservbr-global/npc/phillip.lua +++ b/data-otservbr-global/npc/phillip.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 54, lookLegs = 68, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,31 +50,31 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = "I am fine, thank you very much." }) -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { npcHandler = npcHandler, text = "My business is knowlegde and it is for free." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am honored to be teacher in this school." }) -keywordHandler:addKeyword({ 'teacher' }, StdModule.say, { npcHandler = npcHandler, text = "I run this school, there are other travelling teachers who we call Loremasters." }) -keywordHandler:addKeyword({ 'loremaster' }, StdModule.say, { npcHandler = npcHandler, text = "If you are lucky you'll meet one in your journeys." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "My name is Phillip." }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "It is |TIME|." }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = "I will provide you with all knowledge I have." }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = "Monsters come in different shape and power. It's said there is a zoo in the dwarfs' town." }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = "Dungeons are places of danger and puzzles. In some of them a bright mind will serve you more then a blade." }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { npcHandler = npcHandler, text = "An interesting place you should consider to visit." }) -keywordHandler:addKeyword({ 'thank you' }, StdModule.say, { npcHandler = npcHandler, text = "You don't have to thank me, it's only my duty." }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = "To learn about gods, visit the temples and talk to the priests." }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = "The southern king is called Tibianus. He and our queen Eloise are in a constant struggle." }) -keywordHandler:addKeyword({ 'queen' }, StdModule.say, { npcHandler = npcHandler, text = "The southern king is called Tibianus. He and our queen Eloise are in a constant struggle." }) -keywordHandler:addKeyword({ 'rumour' }, StdModule.say, { npcHandler = npcHandler, text = "I don't like rumours." }) -keywordHandler:addKeyword({ 'gossip' }, StdModule.say, { npcHandler = npcHandler, text = "I don't like rumours." }) -keywordHandler:addKeyword({ 'news' }, StdModule.say, { npcHandler = npcHandler, text = "I don't like rumours." }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = "To learn about weapons read appropriate books or talk to the smiths." }) -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = "To learn about magic talk to the guild leaders." }) -keywordHandler:addKeyword({ 'rebellion' }, StdModule.say, { npcHandler = npcHandler, text = "Rebellion? What for? We are contend with our situation." }) -keywordHandler:addKeyword({ 'in tod we trust' }, StdModule.say, { npcHandler = npcHandler, text = "Tod will come and save us all. He will bring freedom and beer to the men of Carlin." }) -keywordHandler:addKeyword({ 'lugri' }, StdModule.say, { npcHandler = npcHandler, text = "This servant of evil is protected by the dark gods and can't be harmed." }) -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { npcHandler = npcHandler, text = "He is a follower of evil. His powers were boosted by a sinister force and he is beyond human restrictions now." }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = "This weapon is said to be very powerful and unique. It was hidden in ancient times and now is thought to be lost." }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "I am fine, thank you very much." }) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, text = "My business is knowlegde and it is for free." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am honored to be teacher in this school." }) +keywordHandler:addKeyword({ "teacher" }, StdModule.say, { npcHandler = npcHandler, text = "I run this school, there are other travelling teachers who we call Loremasters." }) +keywordHandler:addKeyword({ "loremaster" }, StdModule.say, { npcHandler = npcHandler, text = "If you are lucky you'll meet one in your journeys." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Phillip." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It is |TIME|." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "I will provide you with all knowledge I have." }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Monsters come in different shape and power. It's said there is a zoo in the dwarfs' town." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "Dungeons are places of danger and puzzles. In some of them a bright mind will serve you more then a blade." }) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, text = "An interesting place you should consider to visit." }) +keywordHandler:addKeyword({ "thank you" }, StdModule.say, { npcHandler = npcHandler, text = "You don't have to thank me, it's only my duty." }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "To learn about gods, visit the temples and talk to the priests." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "The southern king is called Tibianus. He and our queen Eloise are in a constant struggle." }) +keywordHandler:addKeyword({ "queen" }, StdModule.say, { npcHandler = npcHandler, text = "The southern king is called Tibianus. He and our queen Eloise are in a constant struggle." }) +keywordHandler:addKeyword({ "rumour" }, StdModule.say, { npcHandler = npcHandler, text = "I don't like rumours." }) +keywordHandler:addKeyword({ "gossip" }, StdModule.say, { npcHandler = npcHandler, text = "I don't like rumours." }) +keywordHandler:addKeyword({ "news" }, StdModule.say, { npcHandler = npcHandler, text = "I don't like rumours." }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "To learn about weapons read appropriate books or talk to the smiths." }) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "To learn about magic talk to the guild leaders." }) +keywordHandler:addKeyword({ "rebellion" }, StdModule.say, { npcHandler = npcHandler, text = "Rebellion? What for? We are contend with our situation." }) +keywordHandler:addKeyword({ "in tod we trust" }, StdModule.say, { npcHandler = npcHandler, text = "Tod will come and save us all. He will bring freedom and beer to the men of Carlin." }) +keywordHandler:addKeyword({ "lugri" }, StdModule.say, { npcHandler = npcHandler, text = "This servant of evil is protected by the dark gods and can't be harmed." }) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, text = "He is a follower of evil. His powers were boosted by a sinister force and he is beyond human restrictions now." }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "This weapon is said to be very powerful and unique. It was hidden in ancient times and now is thought to be lost." }) npcHandler:setMessage(MESSAGE_GREET, "Hello, mighty adventurer |PLAYERNAME|. Can I teach you something you don't know?") npcHandler:setMessage(MESSAGE_FAREWELL, "Go and be careful. Remember what you have learned!") diff --git a/data-otservbr-global/npc/pig.lua b/data-otservbr-global/npc/pig.lua index 825ffc27ca7..749850386ae 100644 --- a/data-otservbr-global/npc/pig.lua +++ b/data-otservbr-global/npc/pig.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 60 + lookType = 60, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,11 +56,11 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "kiss")) then + if MsgContains(message, "kiss") then npcHandler:say("Do you want to try to release me with a kiss?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say("Mhm Uhhh. Not bad, not bad at all! But you can still improve your skill a LOT.", npc, creature) npcHandler:setTopic(playerId, 0) end diff --git a/data-otservbr-global/npc/pino.lua b/data-otservbr-global/npc/pino.lua index 22e206432d3..231625430ba 100644 --- a/data-otservbr-global/npc/pino.lua +++ b/data-otservbr-global/npc/pino.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 67, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Feel the wind in your hair during one of my carpet rides!' } + { text = "Feel the wind in your hair during one of my carpet rides!" }, } local keywordHandler = KeywordHandler:new() @@ -60,28 +60,32 @@ end local TheNewFrontier = Storage.Quest.U8_54.TheNewFrontier local function addTravelKeyword(keyword, text, cost, destination, condition, action) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Never heard about a place like this.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Never heard about a place like this." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a ride to ' .. text .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = 'Hold on!', cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'You shouldn\'t miss the experience.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a ride to " .. text .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = "Hold on!", cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) end -addTravelKeyword('farmine', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('zao', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('darashia', 'Darashia on Darama', 40, Position(33270, 32441, 6)) -addTravelKeyword('darama', 'Darashia on Darama', 40, Position(33270, 32441, 6)) -addTravelKeyword('kazordoon', 'Kazordoon', 70, Position(32588, 31941, 0)) -addTravelKeyword('kazor', 'Kazordoon', 70, Position(32588, 31941, 0)) -addTravelKeyword('femor hills', 'the Femor Hills', 60, Position(32536, 31837, 4)) -addTravelKeyword('hills', 'the Femor Hills', 60, Position(32536, 31837, 4)) -addTravelKeyword('svargrond', 'Svargrond', 60, Position(32253, 31097, 4)) -addTravelKeyword('issavi', 'Issavi', 100, Position(33957, 31515, 0)) -addTravelKeyword('marapur', 'Marapur', 70, Position(33805, 32767, 2)) +addTravelKeyword("farmine", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("zao", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("darashia", "Darashia on Darama", 40, Position(33270, 32441, 6)) +addTravelKeyword("darama", "Darashia on Darama", 40, Position(33270, 32441, 6)) +addTravelKeyword("kazordoon", "Kazordoon", 70, Position(32588, 31941, 0)) +addTravelKeyword("kazor", "Kazordoon", 70, Position(32588, 31941, 0)) +addTravelKeyword("femor hills", "the Femor Hills", 60, Position(32536, 31837, 4)) +addTravelKeyword("hills", "the Femor Hills", 60, Position(32536, 31837, 4)) +addTravelKeyword("svargrond", "Svargrond", 60, Position(32253, 31097, 4)) +addTravelKeyword("issavi", "Issavi", 100, Position(33957, 31515, 0)) +addTravelKeyword("marapur", "Marapur", 70, Position(33805, 32767, 2)) npcHandler:setMessage(MESSAGE_GREET, "Greetings, traveller |PLAYERNAME|. Where do you want me to {fly} you?") -keywordHandler:addKeyword({ 'fly' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, {Issavi}, {Svargrond}, {Kazordoon}, {Zao}, {Femor Hills} or to {Marapur} if you like. Where do you want to go?' }) +keywordHandler:addKeyword({ "fly" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, {Issavi}, {Svargrond}, {Kazordoon}, {Zao}, {Femor Hills} or to {Marapur} if you like. Where do you want to go?" }) npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye!") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye!") diff --git a/data-otservbr-global/npc/plunderpurse.lua b/data-otservbr-global/npc/plunderpurse.lua index 9f95451e95b..4e1d5bd1b10 100644 --- a/data-otservbr-global/npc/plunderpurse.lua +++ b/data-otservbr-global/npc/plunderpurse.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 131, lookLegs = 0, lookFeet = 20, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -28,7 +28,7 @@ npcConfig.voices = { chance = 50, { text = "Waste not, want not!" }, { text = "Don't burden yourself with too much cash - store it here!" }, - { text = "Don't take the money and run - deposit it and walk instead!" } + { text = "Don't take the money and run - deposit it and walk instead!" }, } local keywordHandler = KeywordHandler:new() @@ -75,14 +75,12 @@ local function creatureSayCallback(npc, creature, type, message) --Help if MsgContains(message, "bank account") then - npcHandler:say( - { - "Every Adventurer has one. \z + npcHandler:say({ + "Every Adventurer has one. \z The big advantage is that you can access your money in every branch of the World Bank! ...", - "Would you like to know more about the {basic} functions of your bank account, the {advanced} functions, \z - or are you already bored, perhaps?" - }, - npc, creature, 10) + "Would you like to know more about the {basic} functions of your bank account, the {advanced} functions, \z + or are you already bored, perhaps?", + }, npc, creature, 10) npcHandler:setTopic(playerId, 0) return true --Balance @@ -208,8 +206,12 @@ local function creatureSayCallback(npc, creature, type, message) Please let me know if there is something else I can do for you.", npc, creature) end else - npcHandler:say("Whoah, hold on, you have no room in your inventory to carry all those coins. \z - I don't want you to drop it on the floor, maybe come back with a cart!", npc, creature) + npcHandler:say( + "Whoah, hold on, you have no room in your inventory to carry all those coins. \z + I don't want you to drop it on the floor, maybe come back with a cart!", + npc, + creature + ) end npcHandler:setTopic(playerId, 0) elseif MsgContains(message, "no") then @@ -330,165 +332,124 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ "dawnport" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Yeah, well, some romantic at work there. \z - Island was reached at dawn, new heroes and adventurers forthcoming, stuff like that." - } -) -keywordHandler:addKeyword({ "change" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ah, wonderful stuff! That and a bottle o' rum, o'course! Harrharr. \z - You have some gold you want to deposit or withdraw, just tell me." - } -) -keywordHandler:addKeyword({ "bank" }, StdModule.say, - { - npcHandler = npcHandler, - text = "You can deposit and withdraw money from your bank account here." - } -) -keywordHandler:addKeyword({ "advanced" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Once you are on the Tibian mainland, you can access new functions of your bank account, \z - such as changing money, transferring money to other players safely or taking part in house auctions." - } -) -keywordHandler:addKeyword({ "name" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Abram Plunderpurse, at your service. " - } -) -keywordHandler:addKeyword({ "functions" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Here on Dawnport, I run the bank. I keep any gold you deposit safe, \z +keywordHandler:addKeyword({ "dawnport" }, StdModule.say, { + npcHandler = npcHandler, + text = "Yeah, well, some romantic at work there. \z + Island was reached at dawn, new heroes and adventurers forthcoming, stuff like that.", +}) +keywordHandler:addKeyword({ "change" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ah, wonderful stuff! That and a bottle o' rum, o'course! Harrharr. \z + You have some gold you want to deposit or withdraw, just tell me.", +}) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { + npcHandler = npcHandler, + text = "You can deposit and withdraw money from your bank account here.", +}) +keywordHandler:addKeyword({ "advanced" }, StdModule.say, { + npcHandler = npcHandler, + text = "Once you are on the Tibian mainland, you can access new functions of your bank account, \z + such as changing money, transferring money to other players safely or taking part in house auctions.", +}) +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "Abram Plunderpurse, at your service. ", +}) +keywordHandler:addKeyword({ "functions" }, StdModule.say, { + npcHandler = npcHandler, + text = "Here on Dawnport, I run the bank. I keep any gold you deposit safe, \z so you can't lose it when you're out fighting or dying, heh. \z - Ask me for your balance to learn how much money you've already saved" - } -) -keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Arrr. Not a very profitable place." - } -) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Arr! I'm a pira... er, I mean ... clerk. Banking clerk. \z - That's what I am. You need somethin'? Bank business, p'raps?" - } -) -keywordHandler:addKeyword({ "mainland" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Aye, Tibia is a vast world, my friend, with plenty of adventures, harbours, and loot! \z + Ask me for your balance to learn how much money you've already saved", +}) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { + npcHandler = npcHandler, + text = "Arrr. Not a very profitable place.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "Arr! I'm a pira... er, I mean ... clerk. Banking clerk. \z + That's what I am. You need somethin'? Bank business, p'raps?", +}) +keywordHandler:addKeyword({ "mainland" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Aye, Tibia is a vast world, my friend, with plenty of adventures, harbours, and loot! \z The Mainland is open to everyone; but there are many beautiful islands and more cities to explore, \z if you have premium rights and can use a ship.", - "Once you have reached level 8 here on this isle, you can choose your definite vocation and leave for the Mainland." - } - } -) -keywordHandler:addKeyword({ "vocation" }, StdModule.say, - { - npcHandler = npcHandler, - text = "There's a choice of four: knight, sorcerer, paladin or druid." - } -) -keywordHandler:addKeyword({ "transfer" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm afraid this service is not available to you until you reach the World mainland." - } -) -keywordHandler:addKeyword({ "inigo" }, StdModule.say, - { - npcHandler = npcHandler, - text = "He's an ol' trapper and knows his away around in Tibia, aye. \z - Ask him how a thing works and he'll be sure to have an answer. ..." - } -) -keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Gloomy sort. Keeps glaring at me for some reason. Or maybe for no reason, harr. \z - Formidable blacksmith, anyway. Sharpest sword blade I've seen in a long time." - } -) -keywordHandler:addKeyword({ "garamond" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Fetching white beard, I hope I grow one in due time, would impress the younger folk no end! \z + "Once you have reached level 8 here on this isle, you can choose your definite vocation and leave for the Mainland.", + }, +}) +keywordHandler:addKeyword({ "vocation" }, StdModule.say, { + npcHandler = npcHandler, + text = "There's a choice of four: knight, sorcerer, paladin or druid.", +}) +keywordHandler:addKeyword({ "transfer" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm afraid this service is not available to you until you reach the World mainland.", +}) +keywordHandler:addKeyword({ "inigo" }, StdModule.say, { + npcHandler = npcHandler, + text = "He's an ol' trapper and knows his away around in Tibia, aye. \z + Ask him how a thing works and he'll be sure to have an answer. ...", +}) +keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, { + npcHandler = npcHandler, + text = "Gloomy sort. Keeps glaring at me for some reason. Or maybe for no reason, harr. \z + Formidable blacksmith, anyway. Sharpest sword blade I've seen in a long time.", +}) +keywordHandler:addKeyword({ "garamond" }, StdModule.say, { + npcHandler = npcHandler, + text = "Fetching white beard, I hope I grow one in due time, would impress the younger folk no end! \z Knowing some sorcerer and druid spells like he does wouldn't come amiss, either. \z - Go to him if you need mage spells." - } -) -keywordHandler:addKeyword({ "hamish" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Could've used his talent to brew up some more explosive runes back in the sea fight against... \z - ah well, you wouldn't know the name anyway. Gotta admit, his potions are good stuff." - } -) -keywordHandler:addKeyword({ "richard" }, StdModule.say, - { - npcHandler = npcHandler, - text = " Well, maybe I did come across his ship some time. In bad weather. \z + Go to him if you need mage spells.", +}) +keywordHandler:addKeyword({ "hamish" }, StdModule.say, { + npcHandler = npcHandler, + text = "Could've used his talent to brew up some more explosive runes back in the sea fight against... \z + ah well, you wouldn't know the name anyway. Gotta admit, his potions are good stuff.", +}) +keywordHandler:addKeyword({ "richard" }, StdModule.say, { + npcHandler = npcHandler, + text = " Well, maybe I did come across his ship some time. In bad weather. \z And couldn't do a thing for those poor souls. And anyway, he swam ashore here. \z - So it all worked out in the end, see." - } -) -keywordHandler:addKeyword({ "mr morris" }, StdModule.say, - { - npcHandler = npcHandler, - text = "That's Mr Morris to you, friend. \z - Go get yourself a useful thing to do and ask him about a quest, will you." - } -) -keywordHandler:addKeyword({ "oressa" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Harrr, what a dame! Would like to buy her a pint one day. \z + So it all worked out in the end, see.", +}) +keywordHandler:addKeyword({ "mr morris" }, StdModule.say, { + npcHandler = npcHandler, + text = "That's Mr Morris to you, friend. \z + Go get yourself a useful thing to do and ask him about a quest, will you.", +}) +keywordHandler:addKeyword({ "oressa" }, StdModule.say, { + npcHandler = npcHandler, + text = "Harrr, what a dame! Would like to buy her a pint one day. \z Unless she kills me with one of her icy looks first. Anyway, decent healer. \z - Can help ya with choosing a vocation." - } -) -keywordHandler:addKeyword({ "plunderpurse" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Aye, what about my name? You don't like it? Well, you don't have to wear it! \z - And I am quite happy with that!" - } -) -keywordHandler:addKeyword({ "quest" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Not my line of trade, friend! Mr Morris next door will tell you what needs doin' around here." - } -) -keywordHandler:addKeyword({ "ser tybald" }, StdModule.say, - { - npcHandler = npcHandler, - text = " I could swear he looks like that old pal I met back on... \z + Can help ya with choosing a vocation.", +}) +keywordHandler:addKeyword({ "plunderpurse" }, StdModule.say, { + npcHandler = npcHandler, + text = "Aye, what about my name? You don't like it? Well, you don't have to wear it! \z + And I am quite happy with that!", +}) +keywordHandler:addKeyword({ "quest" }, StdModule.say, { + npcHandler = npcHandler, + text = "Not my line of trade, friend! Mr Morris next door will tell you what needs doin' around here.", +}) +keywordHandler:addKeyword({ "ser tybald" }, StdModule.say, { + npcHandler = npcHandler, + text = " I could swear he looks like that old pal I met back on... \z ah well, much salt water passed my ship since then. \z - If ye need a spell or two for a knight or paladin, he's the spell teacher to go to." - } -) -keywordHandler:addKeyword({ "wentworth" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Arrr. We go wayyyy back, Keeran an' me. Best you ask him, I'm no good at details." - } -) + If ye need a spell or two for a knight or paladin, he's the spell teacher to go to.", +}) +keywordHandler:addKeyword({ "wentworth" }, StdModule.say, { + npcHandler = npcHandler, + text = "Arrr. We go wayyyy back, Keeran an' me. Best you ask him, I'm no good at details.", +}) -npcHandler:setMessage(MESSAGE_GREET, "Welcome, young adventurer! Harr! {Deposit} your gold or {withdraw} \z - your money from your bank account. I can also explain the functions of your {bank} account to ya.") +npcHandler:setMessage( + MESSAGE_GREET, + "Welcome, young adventurer! Harr! {Deposit} your gold or {withdraw} \z + your money from your bank account. I can also explain the functions of your {bank} account to ya." +) npcHandler:setMessage(MESSAGE_FAREWELL, "Have a nice day.") npcHandler:setMessage(MESSAGE_WALKAWAY, "Have a nice day.") diff --git a/data-otservbr-global/npc/polly.lua b/data-otservbr-global/npc/polly.lua index 0a8a66276be..820541d5f15 100644 --- a/data-otservbr-global/npc/polly.lua +++ b/data-otservbr-global/npc/polly.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/pompan.lua b/data-otservbr-global/npc/pompan.lua index 2e48ea5be7d..78c25921fca 100644 --- a/data-otservbr-global/npc/pompan.lua +++ b/data-otservbr-global/npc/pompan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 13, lookLegs = 32, lookFeet = 108, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local tomes = Storage.Quest.U8_54.TheNewFrontier.TomeofKnowledge @@ -81,7 +81,7 @@ npcConfig.shop = { -- 2 tomes { name = "minotaur backpack", clientId = 10327, buy = 200, storageKey = tomes, storageValue = 2 }, -- 5 tomes - { name = "dragon backpack", clientId = 10326, buy = 200, storageKey = tomes, storageValue = 5 } + { name = "dragon backpack", clientId = 10326, buy = 200, storageKey = tomes, storageValue = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -92,8 +92,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -122,8 +121,8 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -npcHandler:setMessage(MESSAGE_GREET, 'Hello.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'It was a pleasure to help you, |PLAYERNAME|.') +npcHandler:setMessage(MESSAGE_GREET, "Hello.") +npcHandler:setMessage(MESSAGE_FAREWELL, "It was a pleasure to help you, |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_SENDTRADE, "Keep in mind you won't find better offers here. Just browse through my wares.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/prezil.lua b/data-otservbr-global/npc/prezil.lua index d75a769bacc..07813991e8e 100644 --- a/data-otservbr-global/npc/prezil.lua +++ b/data-otservbr-global/npc/prezil.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 66 + lookType = 66, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -46,86 +46,103 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Alia) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Alia) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Alia, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/prisoner.lua b/data-otservbr-global/npc/prisoner.lua index 06c6df3e0a9..0684cd94e30 100644 --- a/data-otservbr-global/npc/prisoner.lua +++ b/data-otservbr-global/npc/prisoner.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 76, lookFeet = 38, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -32,7 +32,7 @@ npcConfig.voices = { { text = "I repent!" }, { text = "Noooooo!" }, { text = "Please! I beg you to stop!" }, - { text = "Take it away! Please!" } + { text = "Take it away! Please!" }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/puffels.lua b/data-otservbr-global/npc/puffels.lua index 2894c8e604f..6fe3fb898a9 100644 --- a/data-otservbr-global/npc/puffels.lua +++ b/data-otservbr-global/npc/puffels.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 21 + lookType = 21, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,225 +45,175 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addSpellKeyword({ "find", "person" }, - { - npcHandler = npcHandler, - spellName = "Find Person", - price = 80, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "great", "light" }, - { - npcHandler = npcHandler, - spellName = "Great Light", - price = 500, - level = 13, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "light" }, - { - npcHandler = npcHandler, - spellName = "Light", - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "magic", "rope" }, - { - npcHandler = npcHandler, - spellName = "Magic Rope", - price = 200, - level = 9, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "cure", "poison" }, - { - npcHandler = npcHandler, - spellName = "Cure Poison", - price = 150, - level = 10, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "intense", "wound", "cleansing" }, - { - npcHandler = npcHandler, - spellName = "Intense Wound Cleansing", - price = 6000, - level = 80, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "wound", "cleansing" }, - { - npcHandler = npcHandler, - spellName = "Wound Cleansing", - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "levitate" }, - { - npcHandler = npcHandler, - spellName = "Levitate", - price = 500, - level = 12, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "haste" }, - { - npcHandler = npcHandler, - spellName = "Haste", - price = 600, - level = 14, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "brutal", "strike" }, - { - npcHandler = npcHandler, - spellName = "Brutal Strike", - price = 1000, - level = 16, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "charge" }, - { - npcHandler = npcHandler, - spellName = "Charge", - price = 1300, - level = 25, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "whirlwind", "throw" }, - { - npcHandler = npcHandler, - spellName = "Whirlwind Throw", - price = 1500, - level = 28, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "groundshaker" }, - { - npcHandler = npcHandler, - spellName = "Groundshaker", - price = 1500, - level = 33, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "fierce", "berserk" }, - { - npcHandler = npcHandler, - spellName = "Fierce Berserk", - price = 7500, - level = 90, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "berserk" }, - { - npcHandler = npcHandler, - spellName = "Berserk", - price = 2500, - level = 35, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "inflict", "wound" }, - { - npcHandler = npcHandler, - spellName = "Inflict Wound", - price = 2500, - level = 40, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "cure", "bleeding" }, - { - npcHandler = npcHandler, - spellName = "Cure Bleeding", - price = 2500, - level = 45, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "intense", "recovery" }, - { - npcHandler = npcHandler, - spellName = "Intense Recovery", - price = 10000, - level = 100, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "recovery" }, - { - npcHandler = npcHandler, - spellName = "Recovery", - price = 4000, - level = 50, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "front", "sweep" }, - { - npcHandler = npcHandler, - spellName = "Front Sweep", - price = 4000, - level = 70, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "annihilation" }, - { - npcHandler = npcHandler, - spellName = "Annihilation", - price = 20000, - level = 110, - vocation = VOCATION.BASE_ID.KNIGHT - } -) - -keywordHandler:addKeyword({ "healing", "spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Bruise Bane}', '{Cure Bleeding}', '{Wound Cleansing}', \z - '{Cure Poison}'', '{Intense Wound Cleansing}'', '{Recovery}'' and '{Intense Recovery}''." - } -) -keywordHandler:addKeyword({ "attack", "spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = { "In this category I have '{Whirlwind Throw}', '{Groundshaker}', '{Berserk}' and \z - '{Fierce Berserk}' as well as ...', ''{Brutal Strike}', '{Front Sweep}', '{Inflict Wound}' and '{Annihilation}'" } - } -) -keywordHandler:addKeyword({ "support", "spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Light}', '{Find Person}', '{Magic Rope}', '{Levitate}', \z - '{Haste}', '{Charge}' and '{Great Light}'." - } -) -keywordHandler:addKeyword({ "spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I can teach you {healing spells}, {attack spells} and {support spells}. \z +keywordHandler:addSpellKeyword({ "find", "person" }, { + npcHandler = npcHandler, + spellName = "Find Person", + price = 80, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "great", "light" }, { + npcHandler = npcHandler, + spellName = "Great Light", + price = 500, + level = 13, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "light" }, { + npcHandler = npcHandler, + spellName = "Light", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "magic", "rope" }, { + npcHandler = npcHandler, + spellName = "Magic Rope", + price = 200, + level = 9, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "poison" }, { + npcHandler = npcHandler, + spellName = "Cure Poison", + price = 150, + level = 10, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "intense", "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Intense Wound Cleansing", + price = 6000, + level = 80, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Wound Cleansing", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "levitate" }, { + npcHandler = npcHandler, + spellName = "Levitate", + price = 500, + level = 12, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "haste" }, { + npcHandler = npcHandler, + spellName = "Haste", + price = 600, + level = 14, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "brutal", "strike" }, { + npcHandler = npcHandler, + spellName = "Brutal Strike", + price = 1000, + level = 16, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "charge" }, { + npcHandler = npcHandler, + spellName = "Charge", + price = 1300, + level = 25, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "whirlwind", "throw" }, { + npcHandler = npcHandler, + spellName = "Whirlwind Throw", + price = 1500, + level = 28, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "groundshaker" }, { + npcHandler = npcHandler, + spellName = "Groundshaker", + price = 1500, + level = 33, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "fierce", "berserk" }, { + npcHandler = npcHandler, + spellName = "Fierce Berserk", + price = 7500, + level = 90, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "berserk" }, { + npcHandler = npcHandler, + spellName = "Berserk", + price = 2500, + level = 35, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "inflict", "wound" }, { + npcHandler = npcHandler, + spellName = "Inflict Wound", + price = 2500, + level = 40, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "bleeding" }, { + npcHandler = npcHandler, + spellName = "Cure Bleeding", + price = 2500, + level = 45, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "intense", "recovery" }, { + npcHandler = npcHandler, + spellName = "Intense Recovery", + price = 10000, + level = 100, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "recovery" }, { + npcHandler = npcHandler, + spellName = "Recovery", + price = 4000, + level = 50, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "front", "sweep" }, { + npcHandler = npcHandler, + spellName = "Front Sweep", + price = 4000, + level = 70, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "annihilation" }, { + npcHandler = npcHandler, + spellName = "Annihilation", + price = 20000, + level = 110, + vocation = VOCATION.BASE_ID.KNIGHT, +}) + +keywordHandler:addKeyword({ "healing", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Bruise Bane}', '{Cure Bleeding}', '{Wound Cleansing}', \z + '{Cure Poison}'', '{Intense Wound Cleansing}'', '{Recovery}'' and '{Intense Recovery}''.", +}) +keywordHandler:addKeyword({ "attack", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = { "In this category I have '{Whirlwind Throw}', '{Groundshaker}', '{Berserk}' and \z + '{Fierce Berserk}' as well as ...', ''{Brutal Strike}', '{Front Sweep}', '{Inflict Wound}' and '{Annihilation}'" }, +}) +keywordHandler:addKeyword({ "support", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Light}', '{Find Person}', '{Magic Rope}', '{Levitate}', \z + '{Haste}', '{Charge}' and '{Great Light}'.", +}) +keywordHandler:addKeyword({ "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can teach you {healing spells}, {attack spells} and {support spells}. \z What kind of spell do you wish to learn? \z - You can also tell me for which level you would like to learn a spell, if you prefer that." - } -) + You can also tell me for which level you would like to learn a spell, if you prefer that.", +}) npcHandler:setMessage(MESSAGE_GREET, "Yeah, another fool {disturbing} me, what a joy.") npcHandler:setMessage(MESSAGE_FAREWELL, "Whatever.") diff --git a/data-otservbr-global/npc/pugwah.lua b/data-otservbr-global/npc/pugwah.lua index 15a3f113882..56f497944d8 100644 --- a/data-otservbr-global/npc/pugwah.lua +++ b/data-otservbr-global/npc/pugwah.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 114, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -60,7 +60,7 @@ npcConfig.shop = { { itemName = "mug of beer", clientId = 2880, buy = 3, count = 3 }, { itemName = "mug of lemonade", clientId = 2880, buy = 2, count = 12 }, { itemName = "mug of milk", clientId = 2880, buy = 2, count = 6 }, - { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 } + { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -71,7 +71,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/pukosch.lua b/data-otservbr-global/npc/pukosch.lua index ed6692e7617..fad812c624e 100644 --- a/data-otservbr-global/npc/pukosch.lua +++ b/data-otservbr-global/npc/pukosch.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 70 + lookType = 70, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,7 +54,7 @@ local function creatureSayCallback(npc, creature, type, message) end -- WAGON TICKET - if (MsgContains(message, "ticket")) then + if MsgContains(message, "ticket") then if player:getStorageValue(Storage.WagonTicket) < os.time() then npcHandler:say("Do you want to purchase a weekly ticket for the ore wagons? With it you can travel freely and swiftly through Kazordoon for one week. 250 gold only. Deal?", npc, creature) npcHandler:setTopic(playerId, 1) @@ -62,8 +62,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Your weekly ticket is still valid. Would be a waste of money to purchase a second one", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then if player:getMoney() + player:getBankBalance() >= 250 then player:removeMoneyBank(250) player:setStorageValue(Storage.WagonTicket, os.time() + 7 * 24 * 60 * 60) @@ -73,8 +73,8 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 1) then - if (MsgContains(message, "no")) then + elseif npcHandler:getTopic(playerId) == 1 then + if MsgContains(message, "no") then npcHandler:say("No then.", npc, creature) npcHandler:setTopic(playerId, 0) end diff --git a/data-otservbr-global/npc/pydar.lua b/data-otservbr-global/npc/pydar.lua index 2553736bf61..a3d13e93916 100644 --- a/data-otservbr-global/npc/pydar.lua +++ b/data-otservbr-global/npc/pydar.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 132, lookFeet = 118, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,49 +51,51 @@ npcType.onCloseChannel = function(npc, creature) end -- Spark of the Phoenix -local blessKeyword = keywordHandler:addKeyword({ 'spark of the phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The Spark of the Phoenix is given by me and by the great geomancer of the local earth temple. Do you wish to receive my part of the Spark of the Phoenix for |BLESSCOST| gold?' }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the spark of the phoenix, pilgrim.', cost = '|BLESSCOST|', bless = 3 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Maybe another time.', reset = true }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addAliasKeyword({ 'phoenix' }) +local blessKeyword = keywordHandler:addKeyword({ "spark of the phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The Spark of the Phoenix is given by me and by the great geomancer of the local earth temple. Do you wish to receive my part of the Spark of the Phoenix for |BLESSCOST| gold?" }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the spark of the phoenix, pilgrim.", cost = "|BLESSCOST|", bless = 3 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Maybe another time.", reset = true }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addAliasKeyword({ "phoenix" }) -- Basic -keywordHandler:addKeyword({ 'gods' }, StdModule.say, { npcHandler = npcHandler, text = 'The ways of the gods are imprehensible to mortals. On the other hand, the elements are raw forces and can be understood and tamed.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the head pyromancer of Kazordoon.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Pydar Firefist, Son of Fire, from the Savage Axes.' }) -keywordHandler:addKeyword({ 'quest' }, StdModule.say, { npcHandler = npcHandler, text = 'Ask around. There\'s a lot to do, jawoll.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'That is our world.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s the fourth age of the yellow flame.' }) -keywordHandler:addKeyword({ 'monsters' }, StdModule.say, { npcHandler = npcHandler, text = 'May the great flame devour them all!' }) -keywordHandler:addKeyword({ 'life' }, StdModule.say, { npcHandler = npcHandler, text = 'Life feeds on fire and ultimately fire will feed on life.' }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = 'A weapon too powerful to be wielded by mortals. It has to be returned to the fire which gave birth to it.' }) -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { npcHandler = npcHandler, text = 'If he ever dares enter Kazordoon I will gladly dump him into the lava. Tthe sacred flame shall bring justice upon him.' }) -keywordHandler:addKeyword({ 'kazordoon' }, StdModule.say, { npcHandler = npcHandler, text = 'Our city was founded in ancient times. Abandoned by the gods we once fought for, we created a secure haven for our people.' }) -keywordHandler:addKeyword({ 'the big old one' }, StdModule.say, { npcHandler = npcHandler, text = 'This mountain is said to be the oldest in the world. It is the place where fire and earth meet and separate at the same time.' }) -keywordHandler:addKeyword({ 'bezil' }, StdModule.say, { npcHandler = npcHandler, text = 'Bezil and Nezil are buying and selling equipment of all kinds.' }) -keywordHandler:addKeyword({ 'nezil' }, StdModule.say, { npcHandler = npcHandler, text = 'Bezil and Nezil are buying and selling equipment of all kinds.' }) -keywordHandler:addKeyword({ 'duria' }, StdModule.say, { npcHandler = npcHandler, text = 'She is the first knight of Kazordoon. She is responsible for teaching our young warriors how to handle an axe.' }) -keywordHandler:addKeyword({ 'etzel' }, StdModule.say, { npcHandler = npcHandler, text = 'Etzel is a true master of the elements. He is a role-model for our youngsters, jawoll.' }) -keywordHandler:addKeyword({ 'jimbin' }, StdModule.say, { npcHandler = npcHandler, text = 'He and his wife are running the Jolly Axeman tavern.' }) -keywordHandler:addKeyword({ 'kroox' }, StdModule.say, { npcHandler = npcHandler, text = 'He is a smith. If you are looking for exquisite weapons and armour just talk to him.' }) -keywordHandler:addKeyword({ 'maryza' }, StdModule.say, { npcHandler = npcHandler, text = 'She and her husband are running the Jolly Axeman tavern.' }) -keywordHandler:addKeyword({ 'uzgod' }, StdModule.say, { npcHandler = npcHandler, text = 'Uzgod is a weaponsmith just like those in the old legends.' }) -keywordHandler:addKeyword({ 'durin' }, StdModule.say, { npcHandler = npcHandler, text = 'Though we are through with the so-called gods, Durin, the first dwarf to aquire divine powers of his own, is considered a protector of our race.' }) -keywordHandler:addKeyword({ 'fire' }, StdModule.say, { npcHandler = npcHandler, text = 'Unlike the gods, the elements don\'t use mortals as toys, A skilled mind can understand and even control them to some extent.' }) -keywordHandler:addKeyword({ 'keeper' }, StdModule.say, { npcHandler = npcHandler, text = 'The ways of the gods are imprehensible to mortals. On the other hand, the elements are raw forces and can be understood and tamed.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can receive the Spiritual Shielding in the Whiteflower Temple south of Thais.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'Ask for the Fire of the Suns in the Suntower near Ab\'Dendriel.' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin can provide you with the Embrace of Tibia.' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) return player:getCondition(CONDITION_FIRE) ~= nil end) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes.' }) -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the head pyromancer of Kazordoon. I guess you are here for healing or looking for a blessing.' }) -keywordHandler:addKeyword({ 'blessing' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five different blessings available in five sacred places. These blessings are: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}.' }) -keywordHandler:addKeyword({ 'pyromancer' }, StdModule.say, { npcHandler = npcHandler, text = 'We are the keepers and shepherds of the elemental force of {fire}.' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Be greeted |PLAYERNAME|! I can smell the scent of a phoenix on you!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the fire in your heart never die, |PLAYERNAME|!') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'May the fire in your heart never die.') +keywordHandler:addKeyword({ "gods" }, StdModule.say, { npcHandler = npcHandler, text = "The ways of the gods are imprehensible to mortals. On the other hand, the elements are raw forces and can be understood and tamed." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the head pyromancer of Kazordoon." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Pydar Firefist, Son of Fire, from the Savage Axes." }) +keywordHandler:addKeyword({ "quest" }, StdModule.say, { npcHandler = npcHandler, text = "Ask around. There's a lot to do, jawoll." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "That is our world." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It's the fourth age of the yellow flame." }) +keywordHandler:addKeyword({ "monsters" }, StdModule.say, { npcHandler = npcHandler, text = "May the great flame devour them all!" }) +keywordHandler:addKeyword({ "life" }, StdModule.say, { npcHandler = npcHandler, text = "Life feeds on fire and ultimately fire will feed on life." }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "A weapon too powerful to be wielded by mortals. It has to be returned to the fire which gave birth to it." }) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, text = "If he ever dares enter Kazordoon I will gladly dump him into the lava. Tthe sacred flame shall bring justice upon him." }) +keywordHandler:addKeyword({ "kazordoon" }, StdModule.say, { npcHandler = npcHandler, text = "Our city was founded in ancient times. Abandoned by the gods we once fought for, we created a secure haven for our people." }) +keywordHandler:addKeyword({ "the big old one" }, StdModule.say, { npcHandler = npcHandler, text = "This mountain is said to be the oldest in the world. It is the place where fire and earth meet and separate at the same time." }) +keywordHandler:addKeyword({ "bezil" }, StdModule.say, { npcHandler = npcHandler, text = "Bezil and Nezil are buying and selling equipment of all kinds." }) +keywordHandler:addKeyword({ "nezil" }, StdModule.say, { npcHandler = npcHandler, text = "Bezil and Nezil are buying and selling equipment of all kinds." }) +keywordHandler:addKeyword({ "duria" }, StdModule.say, { npcHandler = npcHandler, text = "She is the first knight of Kazordoon. She is responsible for teaching our young warriors how to handle an axe." }) +keywordHandler:addKeyword({ "etzel" }, StdModule.say, { npcHandler = npcHandler, text = "Etzel is a true master of the elements. He is a role-model for our youngsters, jawoll." }) +keywordHandler:addKeyword({ "jimbin" }, StdModule.say, { npcHandler = npcHandler, text = "He and his wife are running the Jolly Axeman tavern." }) +keywordHandler:addKeyword({ "kroox" }, StdModule.say, { npcHandler = npcHandler, text = "He is a smith. If you are looking for exquisite weapons and armour just talk to him." }) +keywordHandler:addKeyword({ "maryza" }, StdModule.say, { npcHandler = npcHandler, text = "She and her husband are running the Jolly Axeman tavern." }) +keywordHandler:addKeyword({ "uzgod" }, StdModule.say, { npcHandler = npcHandler, text = "Uzgod is a weaponsmith just like those in the old legends." }) +keywordHandler:addKeyword({ "durin" }, StdModule.say, { npcHandler = npcHandler, text = "Though we are through with the so-called gods, Durin, the first dwarf to aquire divine powers of his own, is considered a protector of our race." }) +keywordHandler:addKeyword({ "fire" }, StdModule.say, { npcHandler = npcHandler, text = "Unlike the gods, the elements don't use mortals as toys, A skilled mind can understand and even control them to some extent." }) +keywordHandler:addKeyword({ "keeper" }, StdModule.say, { npcHandler = npcHandler, text = "The ways of the gods are imprehensible to mortals. On the other hand, the elements are raw forces and can be understood and tamed." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can receive the Spiritual Shielding in the Whiteflower Temple south of Thais." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "Ask for the Fire of the Suns in the Suntower near Ab'Dendriel." }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin can provide you with the Embrace of Tibia." }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(CONDITION_FIRE) ~= nil +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes." }) +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the head pyromancer of Kazordoon. I guess you are here for healing or looking for a blessing." }) +keywordHandler:addKeyword({ "blessing" }, StdModule.say, { npcHandler = npcHandler, text = "There are five different blessings available in five sacred places. These blessings are: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}." }) +keywordHandler:addKeyword({ "pyromancer" }, StdModule.say, { npcHandler = npcHandler, text = "We are the keepers and shepherds of the elemental force of {fire}." }) + +npcHandler:setMessage(MESSAGE_GREET, "Be greeted |PLAYERNAME|! I can smell the scent of a phoenix on you!") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the fire in your heart never die, |PLAYERNAME|!") +npcHandler:setMessage(MESSAGE_WALKAWAY, "May the fire in your heart never die.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/pyro_peter.lua b/data-otservbr-global/npc/pyro_peter.lua index 6ba9b0f5e58..08aac25b87e 100644 --- a/data-otservbr-global/npc/pyro_peter.lua +++ b/data-otservbr-global/npc/pyro_peter.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 94, lookBody = 96, lookLegs = 78, - lookFeet = 79 + lookFeet = 79, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/pyromental.lua b/data-otservbr-global/npc/pyromental.lua index c5a66d1c317..3ff637599f9 100644 --- a/data-otservbr-global/npc/pyromental.lua +++ b/data-otservbr-global/npc/pyromental.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 242 + lookType = 242, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/pythius_the_rotten.lua b/data-otservbr-global/npc/pythius_the_rotten.lua index b1d858add71..f6c86c8b240 100644 --- a/data-otservbr-global/npc/pythius_the_rotten.lua +++ b/data-otservbr-global/npc/pythius_the_rotten.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 231 + lookType = 231, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -49,15 +49,16 @@ local treasureKeyword = keywordHandler:addKeyword({ "treasure" }, StdModule.say, treasureKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "ALRIGHT. BUT FIRST OF ALL I WANT YOU TO BRING ME SOMETHING IN EXCHANGE. SURPRISE ME....AND IF I LIKE IT, YOU MAY GET WHAT YOU DESERVE.", reset = true }) treasureKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "HAVE YOU SEEN THESE LEGENDARY ITEMS BACK THERE? WHO COULD REFUSE THE CHANCE OF OBTAINING ONE?!? SO WHAT IS YOUR ANSWER?" }) -local offerKeyword = keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "I GRANT YOU ACCESS TO THE DUNGEON IN THE NORTH. YOU'LL FIND SOME OF MY LIVING BROTHERS THERE....BUT.....EVERY TIME YOU WANT TO ENTER YOU HAVE TO GIVE ME SOMETHING PRECIOUS. ALRIGHT?" }, function(player) return player:getLevel() > 99 end) +local offerKeyword = keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "I GRANT YOU ACCESS TO THE DUNGEON IN THE NORTH. YOU'LL FIND SOME OF MY LIVING BROTHERS THERE....BUT.....EVERY TIME YOU WANT TO ENTER YOU HAVE TO GIVE ME SOMETHING PRECIOUS. ALRIGHT?" }, function(player) + return player:getLevel() > 99 +end) local mugKeyword = offerKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "AS YOU WISH. WHAT DO YOU HAVE TO OFFER?" }) -mugKeyword:addChildKeyword({ "golden mug" }, StdModule.say, { npcHandler = npcHandler, text = "I LIKE THAT AND GRANT YOU ACCESS TO THE DUNGEON IN THE NORTH FOR THE NEXT FEW MINUTES. COME BACK ANYTIME AND BRING ME MORE TREASURES.", reset = true }, - function(player) return player:getItemCount(2903) > 0 end, - function(player) - player:removeItem(2903, 1) - player:setStorageValue(Storage.HiddenCityOfBeregar.PythiusTheRotten, os.time() + 180) - end -) +mugKeyword:addChildKeyword({ "golden mug" }, StdModule.say, { npcHandler = npcHandler, text = "I LIKE THAT AND GRANT YOU ACCESS TO THE DUNGEON IN THE NORTH FOR THE NEXT FEW MINUTES. COME BACK ANYTIME AND BRING ME MORE TREASURES.", reset = true }, function(player) + return player:getItemCount(2903) > 0 +end, function(player) + player:removeItem(2903, 1) + player:setStorageValue(Storage.HiddenCityOfBeregar.PythiusTheRotten, os.time() + 180) +end) mugKeyword:addChildKeyword({ "golden mug" }, StdModule.say, { npcHandler = npcHandler, text = "THIS IS NOT WORTH BEING PART OF MY TREASURE! BRING ME SOMETHING ELSE.", reset = true }) mugKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "THIS IS NOT WORTH BEING PART OF MY TREASURE! BRING ME SOMETHING ELSE", reset = true }) offerKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "TELL ME IF YOU CHANGE YOUR MIND. MY TREASURE THIRSTS FOR GOLD.", reset = true }) diff --git a/data-otservbr-global/npc/quandons_ghost.lua b/data-otservbr-global/npc/quandons_ghost.lua index a359086e9a2..257424177cb 100644 --- a/data-otservbr-global/npc/quandons_ghost.lua +++ b/data-otservbr-global/npc/quandons_ghost.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 9, lookLegs = 85, lookFeet = 9, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/queen_eloise.lua b/data-otservbr-global/npc/queen_eloise.lua index 585af48683f..6b08660b923 100644 --- a/data-otservbr-global/npc/queen_eloise.lua +++ b/data-otservbr-global/npc/queen_eloise.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 331 + lookType = 331, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,19 +56,15 @@ local function creatureSayCallback(npc, creature, type, message) if (MsgContains(message, "outfit")) or (MsgContains(message, "addon")) then npcHandler:say("In exchange for a truly generous donation, I will offer a special outfit. Do you want to make a donation?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "yes")) then + elseif MsgContains(message, "yes") then -- vamos tratar todas condições para YES aqui if npcHandler:getTopic(playerId) == 1 then -- para o primeiro Yes, o npc deve explicar como obter o outfit - npcHandler:say( - { - "Excellent! Now, let me explain. If you donate 1.000.000.000 gold pieces, you will be entitled to wear a unique outfit. ...", - "You will be entitled to wear the {armor} for 500.000.000 gold pieces, {helmet} for an additional 250.000.000 and the {boots} for another 250.000.000 gold pieces. ...", - "What will it be?" - }, - npc, - creature - ) + npcHandler:say({ + "Excellent! Now, let me explain. If you donate 1.000.000.000 gold pieces, you will be entitled to wear a unique outfit. ...", + "You will be entitled to wear the {armor} for 500.000.000 gold pieces, {helmet} for an additional 250.000.000 and the {boots} for another 250.000.000 gold pieces. ...", + "What will it be?", + }, npc, creature) npcHandler:setTopic(playerId, 2) -- O NPC só vai oferecer os addons se o player já tiver escolhido. elseif npcHandler:getTopic(playerId) == 2 then @@ -171,84 +167,85 @@ local function creatureSayCallback(npc, creature, type, message) end -- Promotion -local node1 = keywordHandler:addKeyword({ 'promot' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'I can promote you for 20000 gold coins. Do you want me to promote you?' }) -node1:addChildKeyword({ 'yes' }, StdModule.promotePlayer, { npcHandler = npcHandler, cost = 20000, level = 20, text = 'Congratulations! You are now promoted.' }) -node1:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = 'Alright then, come back when you are ready.', reset = true }) +local node1 = keywordHandler:addKeyword({ "promot" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "I can promote you for 20000 gold coins. Do you want me to promote you?" }) +node1:addChildKeyword({ "yes" }, StdModule.promotePlayer, { npcHandler = npcHandler, cost = 20000, level = 20, text = "Congratulations! You are now promoted." }) +node1:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Alright then, come back when you are ready.", reset = true }) -- Postman -keywordHandler:addKeyword({ 'uniforms' }, StdModule.say, { npcHandler = npcHandler, text = 'I remember about those uniforms, they had a camouflage inlay so they could be worn the inside out too. I will send some color samples via mail to Mr. Postner.' }, - function(player) return player:getStorageValue(Storage.Postman.Mission06) == 5 end, - function(player) player:setStorageValue(Storage.Postman.Mission06, 6) end -) +keywordHandler:addKeyword({ "uniforms" }, StdModule.say, { npcHandler = npcHandler, text = "I remember about those uniforms, they had a camouflage inlay so they could be worn the inside out too. I will send some color samples via mail to Mr. Postner." }, function(player) + return player:getStorageValue(Storage.Postman.Mission06) == 5 +end, function(player) + player:setStorageValue(Storage.Postman.Mission06, 6) +end) -- Greeting -keywordHandler:addGreetKeyword({ 'hail queen' }, { npcHandler = npcHandler, text = 'I greet thee, my loyal {subject}.' }) -keywordHandler:addGreetKeyword({ 'salutations queen' }, { npcHandler = npcHandler, text = 'I greet thee, my loyal {subject}.' }) +keywordHandler:addGreetKeyword({ "hail queen" }, { npcHandler = npcHandler, text = "I greet thee, my loyal {subject}." }) +keywordHandler:addGreetKeyword({ "salutations queen" }, { npcHandler = npcHandler, text = "I greet thee, my loyal {subject}." }) -keywordHandler:addKeyword({ 'uniforms' }, StdModule.say, { npcHandler = npcHandler, text = 'The uniforms of our guards and soldiers are of unparraleled quality of course.' }) +keywordHandler:addKeyword({ "uniforms" }, StdModule.say, { npcHandler = npcHandler, text = "The uniforms of our guards and soldiers are of unparraleled quality of course." }) -- Basic -keywordHandler:addKeyword({ 'subject' }, StdModule.say, { npcHandler = npcHandler, text = 'I am {Queen} Eloise. It is my duty to reign over this marvellous {city} and the {lands} of the north.' }) -keywordHandler:addAliasKeyword({ 'job' }) -keywordHandler:addKeyword({ 'justice' }, StdModule.say, { npcHandler = npcHandler, text = 'We women try to bring justice and wisdom to all, even to males.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I am Queen Eloise. For you it\'s \'My Queen\' or \'Your Majesty\', of course.' }) -keywordHandler:addKeyword({ 'news' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t care about gossip like a simpleminded male would do.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'Soon the whole land will be ruled by women at last!' }) -keywordHandler:addAliasKeyword({ 'land' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'Thank you, I\'m fine.' }) -keywordHandler:addKeyword({ 'castle' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s my humble domain.' }) -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { npcHandler = npcHandler, text = 'Sell? Your question shows that you are a typical member of your gender!' }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = 'We honor the gods of good in our fair city, especially Crunor, of course.' }) -keywordHandler:addKeyword({ 'citizen' }, StdModule.say, { npcHandler = npcHandler, text = 'All citizens of Carlin are my subjects. I see them more as my childs, though, epecially the male population.' }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = 'This beast scared my cat away on my last diplomatic mission in this filthy town.' }) -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { npcHandler = npcHandler, text = 'He is the scourge of the whole continent!' }) -keywordHandler:addKeyword({ 'treasure' }, StdModule.say, { npcHandler = npcHandler, text = 'The royal treasure is hidden beyond the grasps of any thieves by magical means.' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'Go and hunt them! For queen and country!' }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'Visit the church or the townguards for help.' }) -keywordHandler:addKeyword({ 'quest' }, StdModule.say, { npcHandler = npcHandler, text = 'I will call for heroes as soon as the need arises again.' }) -keywordHandler:addAliasKeyword({ 'mission' }) -keywordHandler:addKeyword({ 'gold' }, StdModule.say, { npcHandler = npcHandler, text = 'Our city is rich and prospering.' }) -keywordHandler:addAliasKeyword({ 'money' }) -keywordHandler:addAliasKeyword({ 'tax' }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t want to talk about \'sewers\'.' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'Dungeons are places where males crawl around and look for trouble.' }) -keywordHandler:addKeyword({ 'equipment' }, StdModule.say, { npcHandler = npcHandler, text = 'Feel free to visit our town\'s magnificent shops.' }) -keywordHandler:addAliasKeyword({ 'food' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'Don\'t worry about time in the presence of your Queen.' }) -keywordHandler:addKeyword({ 'hero' }, StdModule.say, { npcHandler = npcHandler, text = 'We need the assistance of heroes now and then. Even males prove useful now and then.' }) -keywordHandler:addAliasKeyword({ 'adventure' }) -keywordHandler:addKeyword({ 'collector' }, StdModule.say, { npcHandler = npcHandler, text = 'The taxes in Carlin are not high, more a symbol than a sacrifice.' }) -keywordHandler:addKeyword({ 'queen' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the Queen, the only rightful ruler on the continent!' }) -keywordHandler:addKeyword({ 'army' }, StdModule.say, { npcHandler = npcHandler, text = 'Ask one of the soldiers about that.' }) -keywordHandler:addKeyword({ 'enemy' }, StdModule.say, { npcHandler = npcHandler, text = 'Our enemies are numerous. We have to fight vile monsters and have to watch this silly king in the south carefully.' }) -keywordHandler:addAliasKeyword({ 'enemies' }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = 'They dare to reject my reign over them!' }) -keywordHandler:addAliasKeyword({ 'south' }) -keywordHandler:addKeyword({ 'carlin' }, StdModule.say, { npcHandler = npcHandler, text = 'Isn\'t our city marvellous? Have you noticed the lovely gardens on the roofs?' }) -keywordHandler:addAliasKeyword({ 'city' }) -keywordHandler:addKeyword({ 'shop' }, StdModule.say, { npcHandler = npcHandler, text = 'My subjects maintain many fine shops. Go and have a look at their wares.' }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { npcHandler = npcHandler, text = 'Ask around about them.' }) -keywordHandler:addAliasKeyword({ 'craftsmen' }) -keywordHandler:addKeyword({ 'guild' }, StdModule.say, { npcHandler = npcHandler, text = 'The four major guilds are the Knights, the Paladins, the Druids, and the Sorcerers.' }) -keywordHandler:addKeyword({ 'minotaur' }, StdModule.say, { npcHandler = npcHandler, text = 'They haven\'t troubled our city lately. I guess, they fear the wrath of our druids.' }) -keywordHandler:addKeyword({ 'paladin' }, StdModule.say, { npcHandler = npcHandler, text = 'The paladins are great hunters.' }) -keywordHandler:addAliasKeyword({ 'legola' }) -keywordHandler:addKeyword({ 'elane' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s a shame that the High Paladin does not reside in Carlin.' }) -keywordHandler:addKeyword({ 'knight' }, StdModule.say, { npcHandler = npcHandler, text = 'The knights of Carlin are the bravest.' }) -keywordHandler:addAliasKeyword({ 'trisha' }) -keywordHandler:addKeyword({ 'sorc' }, StdModule.say, { npcHandler = npcHandler, text = 'The sorcerers have a small isle for their guild. So if they blow something up it does not burn the whole city to ruins.' }) -keywordHandler:addAliasKeyword({ 'lea' }) -keywordHandler:addKeyword({ 'druid' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids of Carlin are our protectors and advisors. Their powers provide us with wealth and food.' }) -keywordHandler:addAliasKeyword({ 'padreia' }) -keywordHandler:addKeyword({ 'good' }, StdModule.say, { npcHandler = npcHandler, text = 'Carlin is a center of the forces of good, of course.' }) -keywordHandler:addKeyword({ 'evil' }, StdModule.say, { npcHandler = npcHandler, text = 'The forces of evil have a firm grip on this puny city to the south.' }) -keywordHandler:addKeyword({ 'order' }, StdModule.say, { npcHandler = npcHandler, text = 'The order, Crunor gives the world, is essential for survival.' }) -keywordHandler:addKeyword({ 'chaos' }, StdModule.say, { npcHandler = npcHandler, text = 'Chaos is common in the southern regions, where they allow a man to reign over a realm.' }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = 'A mans tale ... that means \'nonsense\', of course.' }) -keywordHandler:addKeyword({ 'reward' }, StdModule.say, { npcHandler = npcHandler, text = 'If you want a reward, go and bring me something this silly King Tibianus wants dearly!' }) -keywordHandler:addKeyword({ 'tbi' }, StdModule.say, { npcHandler = npcHandler, text = 'A dusgusting organisation, which could be only created by men.' }) -keywordHandler:addKeyword({ 'eremo' }, StdModule.say, { npcHandler = npcHandler, text = 'It is said that he lives on a small island near Edron. Maybe the people there know more about him.' }) +keywordHandler:addKeyword({ "subject" }, StdModule.say, { npcHandler = npcHandler, text = "I am {Queen} Eloise. It is my duty to reign over this marvellous {city} and the {lands} of the north." }) +keywordHandler:addAliasKeyword({ "job" }) +keywordHandler:addKeyword({ "justice" }, StdModule.say, { npcHandler = npcHandler, text = "We women try to bring justice and wisdom to all, even to males." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am Queen Eloise. For you it's 'My Queen' or 'Your Majesty', of course." }) +keywordHandler:addKeyword({ "news" }, StdModule.say, { npcHandler = npcHandler, text = "I don't care about gossip like a simpleminded male would do." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "Soon the whole land will be ruled by women at last!" }) +keywordHandler:addAliasKeyword({ "land" }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "Thank you, I'm fine." }) +keywordHandler:addKeyword({ "castle" }, StdModule.say, { npcHandler = npcHandler, text = "It's my humble domain." }) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, text = "Sell? Your question shows that you are a typical member of your gender!" }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "We honor the gods of good in our fair city, especially Crunor, of course." }) +keywordHandler:addKeyword({ "citizen" }, StdModule.say, { npcHandler = npcHandler, text = "All citizens of Carlin are my subjects. I see them more as my childs, though, epecially the male population." }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "This beast scared my cat away on my last diplomatic mission in this filthy town." }) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, text = "He is the scourge of the whole continent!" }) +keywordHandler:addKeyword({ "treasure" }, StdModule.say, { npcHandler = npcHandler, text = "The royal treasure is hidden beyond the grasps of any thieves by magical means." }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Go and hunt them! For queen and country!" }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "Visit the church or the townguards for help." }) +keywordHandler:addKeyword({ "quest" }, StdModule.say, { npcHandler = npcHandler, text = "I will call for heroes as soon as the need arises again." }) +keywordHandler:addAliasKeyword({ "mission" }) +keywordHandler:addKeyword({ "gold" }, StdModule.say, { npcHandler = npcHandler, text = "Our city is rich and prospering." }) +keywordHandler:addAliasKeyword({ "money" }) +keywordHandler:addAliasKeyword({ "tax" }) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, text = "I don't want to talk about 'sewers'." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "Dungeons are places where males crawl around and look for trouble." }) +keywordHandler:addKeyword({ "equipment" }, StdModule.say, { npcHandler = npcHandler, text = "Feel free to visit our town's magnificent shops." }) +keywordHandler:addAliasKeyword({ "food" }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Don't worry about time in the presence of your Queen." }) +keywordHandler:addKeyword({ "hero" }, StdModule.say, { npcHandler = npcHandler, text = "We need the assistance of heroes now and then. Even males prove useful now and then." }) +keywordHandler:addAliasKeyword({ "adventure" }) +keywordHandler:addKeyword({ "collector" }, StdModule.say, { npcHandler = npcHandler, text = "The taxes in Carlin are not high, more a symbol than a sacrifice." }) +keywordHandler:addKeyword({ "queen" }, StdModule.say, { npcHandler = npcHandler, text = "I am the Queen, the only rightful ruler on the continent!" }) +keywordHandler:addKeyword({ "army" }, StdModule.say, { npcHandler = npcHandler, text = "Ask one of the soldiers about that." }) +keywordHandler:addKeyword({ "enemy" }, StdModule.say, { npcHandler = npcHandler, text = "Our enemies are numerous. We have to fight vile monsters and have to watch this silly king in the south carefully." }) +keywordHandler:addAliasKeyword({ "enemies" }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "They dare to reject my reign over them!" }) +keywordHandler:addAliasKeyword({ "south" }) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { npcHandler = npcHandler, text = "Isn't our city marvellous? Have you noticed the lovely gardens on the roofs?" }) +keywordHandler:addAliasKeyword({ "city" }) +keywordHandler:addKeyword({ "shop" }, StdModule.say, { npcHandler = npcHandler, text = "My subjects maintain many fine shops. Go and have a look at their wares." }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, text = "Ask around about them." }) +keywordHandler:addAliasKeyword({ "craftsmen" }) +keywordHandler:addKeyword({ "guild" }, StdModule.say, { npcHandler = npcHandler, text = "The four major guilds are the Knights, the Paladins, the Druids, and the Sorcerers." }) +keywordHandler:addKeyword({ "minotaur" }, StdModule.say, { npcHandler = npcHandler, text = "They haven't troubled our city lately. I guess, they fear the wrath of our druids." }) +keywordHandler:addKeyword({ "paladin" }, StdModule.say, { npcHandler = npcHandler, text = "The paladins are great hunters." }) +keywordHandler:addAliasKeyword({ "legola" }) +keywordHandler:addKeyword({ "elane" }, StdModule.say, { npcHandler = npcHandler, text = "It's a shame that the High Paladin does not reside in Carlin." }) +keywordHandler:addKeyword({ "knight" }, StdModule.say, { npcHandler = npcHandler, text = "The knights of Carlin are the bravest." }) +keywordHandler:addAliasKeyword({ "trisha" }) +keywordHandler:addKeyword({ "sorc" }, StdModule.say, { npcHandler = npcHandler, text = "The sorcerers have a small isle for their guild. So if they blow something up it does not burn the whole city to ruins." }) +keywordHandler:addAliasKeyword({ "lea" }) +keywordHandler:addKeyword({ "druid" }, StdModule.say, { npcHandler = npcHandler, text = "The druids of Carlin are our protectors and advisors. Their powers provide us with wealth and food." }) +keywordHandler:addAliasKeyword({ "padreia" }) +keywordHandler:addKeyword({ "good" }, StdModule.say, { npcHandler = npcHandler, text = "Carlin is a center of the forces of good, of course." }) +keywordHandler:addKeyword({ "evil" }, StdModule.say, { npcHandler = npcHandler, text = "The forces of evil have a firm grip on this puny city to the south." }) +keywordHandler:addKeyword({ "order" }, StdModule.say, { npcHandler = npcHandler, text = "The order, Crunor gives the world, is essential for survival." }) +keywordHandler:addKeyword({ "chaos" }, StdModule.say, { npcHandler = npcHandler, text = "Chaos is common in the southern regions, where they allow a man to reign over a realm." }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "A mans tale ... that means 'nonsense', of course." }) +keywordHandler:addKeyword({ "reward" }, StdModule.say, { npcHandler = npcHandler, text = "If you want a reward, go and bring me something this silly King Tibianus wants dearly!" }) +keywordHandler:addKeyword({ "tbi" }, StdModule.say, { npcHandler = npcHandler, text = "A dusgusting organisation, which could be only created by men." }) +keywordHandler:addKeyword({ "eremo" }, StdModule.say, { npcHandler = npcHandler, text = "It is said that he lives on a small island near Edron. Maybe the people there know more about him." }) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Farewell, |PLAYERNAME|!') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Farewell, |PLAYERNAME|!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/quentin.lua b/data-otservbr-global/npc/quentin.lua index f5a7fa6e7e2..905933053e3 100644 --- a/data-otservbr-global/npc/quentin.lua +++ b/data-otservbr-global/npc/quentin.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 57 + lookType = 57, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -46,118 +46,139 @@ npcType.onCloseChannel = function(npc, creature) end -- Wooden Stake Quest -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = { - 'A blessed stake to defeat evil spirits? I do know an old prayer which is said to grant sacred power and to be able to bind this power to someone, or something. ...', - 'However, this prayer needs the combined energy of ten priests. Each of them has to say one line of the prayer. ...', - 'I could start with the prayer, but since the next priest has to be in a different location, you probably will have to travel a lot. ...', - 'Is this stake really important enough to you so that you are willing to take this burden?', - } -}, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == -1 end -) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Alright, I guess you need a stake first. Maybe Gamon can help you, the leg of a chair or something could just do. Try asking him for a stake, and if you have one, bring it back to me.', reset = true, ungreet = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.DefaultStart, 1) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 1) - end) + "A blessed stake to defeat evil spirits? I do know an old prayer which is said to grant sacred power and to be able to bind this power to someone, or something. ...", + "However, this prayer needs the combined energy of ten priests. Each of them has to say one line of the prayer. ...", + "I could start with the prayer, but since the next priest has to be in a different location, you probably will have to travel a lot. ...", + "Is this stake really important enough to you so that you are willing to take this burden?", + }, +}, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == -1 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Alright, I guess you need a stake first. Maybe Gamon can help you, the leg of a chair or something could just do. Try asking him for a stake, and if you have one, bring it back to me.", reset = true, ungreet = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.DefaultStart, 1) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 1) +end) -- First prayer -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'I guess you couldn\'t convince Gamon to give you a stake, eh?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 1 and player:getItemCount(5941) == 0 end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "I guess you couldn't convince Gamon to give you a stake, eh?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 1 and player:getItemCount(5941) == 0 +end) -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I was informed what to do. Are you prepared to receive my line of the prayer?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 1 end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive my prayer: \'Light shall be near - and darkness afar\'. Now, bring your stake to Tibra in the Carlin church for the next line of the prayer. I will inform her what to do.', reset = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 2) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - end -) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'I will wait for you.', reset = true }) +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I was informed what to do. Are you prepared to receive my line of the prayer?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 1 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive my prayer: 'Light shall be near - and darkness afar'. Now, bring your stake to Tibra in the Carlin church for the next line of the prayer. I will inform her what to do.", reset = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 2) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "I will wait for you.", reset = true }) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You should visit Tibra in the Carlin church now.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 2 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You already received my line of the prayer.' }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You should visit Tibra in the Carlin church now." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 2 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You already received my line of the prayer." }) -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Quentin) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Quentin) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Quentin, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free or you want the {adventurer stone}?') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free or you want the {adventurer stone}?") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/quero.lua b/data-otservbr-global/npc/quero.lua index 1155fd4a976..5c62aef7f8e 100644 --- a/data-otservbr-global/npc/quero.lua +++ b/data-otservbr-global/npc/quero.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 30, lookLegs = 24, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ npcConfig.shop = { { itemName = "drum", clientId = 14253, buy = 140 }, { itemName = "lute", clientId = 2950, buy = 195 }, { itemName = "lyre", clientId = 2949, buy = 120 }, - { itemName = "simple fanfare", clientId = 2954, buy = 150 } + { itemName = "simple fanfare", clientId = 2954, buy = 150 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -67,7 +67,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/rabaz.lua b/data-otservbr-global/npc/rabaz.lua index 556d007ebd1..b6f7f188cf8 100644 --- a/data-otservbr-global/npc/rabaz.lua +++ b/data-otservbr-global/npc/rabaz.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 1, lookFeet = 1, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -70,7 +70,7 @@ local function creatureSayCallback(npc, creature, type, message) "Explore the anterior outskirts of Zao, use my almanach and find the two specimens with missing samples on their pages. The almanach can be found in a chest in my storage, next to my shop. It's the door over there. ...", "If you lose it I will have to write a new one and put it in there again - which will undoubtedly take me a while. So keep an eye on it on your travels. ...", "Once you find what I need, best use a knife to carefully cut and gather a leaf or a scrap of their integument and press it directly under their appropriate entry into my botanical almanach. ...", - "Simply return to me after you have done that and we will discuss your reward. What do you say, are you in?" + "Simply return to me after you have done that and we will discuss your reward. What do you say, are you in?", }, npc, creature) elseif player:getStorageValue(Storage.TibiaTales.AnInterestInBotany) == 3 then npcHandler:setTopic(playerId, 2) @@ -92,7 +92,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Ah, thank you. Now look at that texture and fine colour, simply marvellous. ...", "I hope the sun in the steppe did not exhaust you too much? Shellshock. A dangerous foe in the world of field science and exploration. ...", - "Here, I always wore this comfortable hat when travelling, take it. It may be of use for you on further reconnaissances in Zao. Again you have my thanks, friend." + "Here, I always wore this comfortable hat when travelling, take it. It may be of use for you on further reconnaissances in Zao. Again you have my thanks, friend.", }, npc, creature) npcHandler:setTopic(playerId, 0) else @@ -167,7 +167,7 @@ npcConfig.shop = { { itemName = "wand of inferno", clientId = 3071, buy = 15000 }, { itemName = "wand of starstorm", clientId = 8092, buy = 18000 }, { itemName = "wand of voodoo", clientId = 8094, buy = 22000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -178,7 +178,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/rachel.lua b/data-otservbr-global/npc/rachel.lua index edbefc1dcac..301f7ae2543 100644 --- a/data-otservbr-global/npc/rachel.lua +++ b/data-otservbr-global/npc/rachel.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 84, lookLegs = 86, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,16 +50,14 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ "magic" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Okay, then just browse through all of my wares." - } -) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { + npcHandler = npcHandler, + text = "Okay, then just browse through all of my wares.", +}) local items = { [VOCATION.BASE_ID.SORCERER] = 3074, - [VOCATION.BASE_ID.DRUID] = 3066 + [VOCATION.BASE_ID.DRUID] = 3066, } local function creatureSayCallback(npc, creature, type, message) @@ -101,8 +99,11 @@ npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setMessage(MESSAGE_GREET, "Welcome |PLAYERNAME|! Whats your need?") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye, |PLAYERNAME|.") -npcHandler:setMessage(MESSAGE_SENDTRADE, "Of course, just browse through my wares. \z - Or do you want to look only at {potions}, {wands} or {runes}?") +npcHandler:setMessage( + MESSAGE_SENDTRADE, + "Of course, just browse through my wares. \z + Or do you want to look only at {potions}, {wands} or {runes}?" +) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -156,7 +157,7 @@ npcConfig.shop = { { itemName = "wand of cosmic energy", clientId = 3073, buy = 10000 }, { itemName = "wand of decay", clientId = 3072, buy = 5000 }, { itemName = "wand of dragonbreath", clientId = 3075, buy = 1000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -167,7 +168,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/raffael.lua b/data-otservbr-global/npc/raffael.lua index 4e893a1da5b..1e88b2f4099 100644 --- a/data-otservbr-global/npc/raffael.lua +++ b/data-otservbr-global/npc/raffael.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/rafzan.lua b/data-otservbr-global/npc/rafzan.lua index 97f1a0f52ad..17718965a06 100644 --- a/data-otservbr-global/npc/rafzan.lua +++ b/data-otservbr-global/npc/rafzan.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 540 + lookType = 540, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,26 +45,27 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'task' }, StdModule.say, { npcHandler = npcHandler, text = 'Are you here to get a task or to report you finished task?' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'Me humble name is Rafzan. Good old goblin name meaning honest, generous and nice person, I swear!' }) -keywordHandler:addKeyword({ 'goblin' }, StdModule.say, { npcHandler = npcHandler, text = 'Most goblins so afraid of everything, that they fight everything. Me different. Me just want trade.' }) -keywordHandler:addKeyword({ 'human' }, StdModule.say, { npcHandler = npcHandler, text = 'You humans are so big, strong, clever and beautiful. Me really feel little and green beside you. Must be sooo fun to be human. You surely always make profit!' }) -keywordHandler:addKeyword({ 'profit' }, StdModule.say, { npcHandler = npcHandler, text = 'To be honest to me human friend, me only heard about it, never seen one. I imagine it\'s something cute and cuddly.' }) -keywordHandler:addKeyword({ 'swamp' }, StdModule.say, { npcHandler = npcHandler, text = 'Swamp is horrible. Slowly eating away at health of poor little goblin. No profit here at all. Me will die poor and desperate, probably eaten by giant mosquitoes.' }) -keywordHandler:addKeyword({ 'dwarf' }, StdModule.say, { npcHandler = npcHandler, text = 'Beardmen are nasty. Always want to kill little goblin. No trade at all. Not good, not good.' }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'So much to do, so little help. Me poor goblin desperately needs help. Me have a few tasks me need to be done. I can offer you all money I made if you only help me a little with stuff which is easy to strong smart human but impossible for poor, little me.' }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = 'Me heard Thais is big city with king! Must be strong and clever, to become chief of all humans. Me cannot imagine how many people you have to beat up to become king of all humans. Surely he makes lot of profit in his pretty city.' }) -keywordHandler:addKeyword({ 'elves' }, StdModule.say, { npcHandler = npcHandler, text = 'They are mean and cruel. Humble goblin rarely trades with them. They would rather kill poor me if not too greedy for stuff only me can get them. Still, they rob me of it for a few spare coins and there is noooo profit for poor goblin.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'Me job merchant is. Me trade with all kinds of things. Me not good trader though, so you get everything incredibly cheap! You might think me mad, but please don\'t rip off poor goblin too much. Me has four or five wives and dozens of kids to feed!' }) -keywordHandler:addKeyword({ 'venore' }, StdModule.say, { npcHandler = npcHandler, text = 'Humans so clever. Much, much smarter than poor, stupid goblin. They have big rich town. Goblin lives here poor and hungry. Me so impressed by you strong and smart humans. So much to learn from you. Poor goblin only sees pretty city from afar. Poor goblin too afraid to go there.' }) -keywordHandler:addKeyword({ 'gold' }, StdModule.say, - { - npcHandler = npcHandler, - text = - 'Me have seen a gold coin once or twice. So bright and shiny it hurt me poor eyes. You surely are incredibly rich human who has even three or four coins at once! Perhaps you want to exchange them for some things me offer? Just don\'t rob me too much, me little stupid goblin, have no idea what stuff is worth... you look honest, you surely pay fair price like I ask and tell if it\'s too cheap.' - }) -keywordHandler:addKeyword({ 'ratmen' }, StdModule.say, - { npcHandler = npcHandler, text = 'Furry guys are strange fellows. Always collecting things and stuff. Not easy to make them share, oh there is noooo profit for little, poor me to be made. They build underground dens that can stretch quite far. Rumour has it the corym have strange tunnels that connect their different networks all over the world.' }) +keywordHandler:addKeyword({ "task" }, StdModule.say, { npcHandler = npcHandler, text = "Are you here to get a task or to report you finished task?" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Me humble name is Rafzan. Good old goblin name meaning honest, generous and nice person, I swear!" }) +keywordHandler:addKeyword({ "goblin" }, StdModule.say, { npcHandler = npcHandler, text = "Most goblins so afraid of everything, that they fight everything. Me different. Me just want trade." }) +keywordHandler:addKeyword({ "human" }, StdModule.say, { npcHandler = npcHandler, text = "You humans are so big, strong, clever and beautiful. Me really feel little and green beside you. Must be sooo fun to be human. You surely always make profit!" }) +keywordHandler:addKeyword({ "profit" }, StdModule.say, { npcHandler = npcHandler, text = "To be honest to me human friend, me only heard about it, never seen one. I imagine it's something cute and cuddly." }) +keywordHandler:addKeyword({ "swamp" }, StdModule.say, { npcHandler = npcHandler, text = "Swamp is horrible. Slowly eating away at health of poor little goblin. No profit here at all. Me will die poor and desperate, probably eaten by giant mosquitoes." }) +keywordHandler:addKeyword({ "dwarf" }, StdModule.say, { npcHandler = npcHandler, text = "Beardmen are nasty. Always want to kill little goblin. No trade at all. Not good, not good." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "So much to do, so little help. Me poor goblin desperately needs help. Me have a few tasks me need to be done. I can offer you all money I made if you only help me a little with stuff which is easy to strong smart human but impossible for poor, little me." }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "Me heard Thais is big city with king! Must be strong and clever, to become chief of all humans. Me cannot imagine how many people you have to beat up to become king of all humans. Surely he makes lot of profit in his pretty city." }) +keywordHandler:addKeyword({ "elves" }, StdModule.say, { npcHandler = npcHandler, text = "They are mean and cruel. Humble goblin rarely trades with them. They would rather kill poor me if not too greedy for stuff only me can get them. Still, they rob me of it for a few spare coins and there is noooo profit for poor goblin." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Me job merchant is. Me trade with all kinds of things. Me not good trader though, so you get everything incredibly cheap! You might think me mad, but please don't rip off poor goblin too much. Me has four or five wives and dozens of kids to feed!" }) +keywordHandler:addKeyword({ "venore" }, StdModule.say, { npcHandler = npcHandler, text = "Humans so clever. Much, much smarter than poor, stupid goblin. They have big rich town. Goblin lives here poor and hungry. Me so impressed by you strong and smart humans. So much to learn from you. Poor goblin only sees pretty city from afar. Poor goblin too afraid to go there." }) +keywordHandler:addKeyword({ "gold" }, StdModule.say, { + npcHandler = npcHandler, + text = "Me have seen a gold coin once or twice. So bright and shiny it hurt me poor eyes. You surely are incredibly rich human who has even three or four coins at once! Perhaps you want to exchange them for some things me offer? Just don't rob me too much, me little stupid goblin, have no idea what stuff is worth... you look honest, you surely pay fair price like I ask and tell if it's too cheap.", +}) +keywordHandler:addKeyword( + { "ratmen" }, + StdModule.say, + { npcHandler = npcHandler, text = "Furry guys are strange fellows. Always collecting things and stuff. Not easy to make them share, oh there is noooo profit for little, poor me to be made. They build underground dens that can stretch quite far. Rumour has it the corym have strange tunnels that connect their different networks all over the world." } +) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -87,7 +88,7 @@ npcConfig.shop = { { itemName = "spiky club", clientId = 17859, sell = 300 }, { itemName = "torch", clientId = 2920, buy = 2 }, { itemName = "trunkhammer", clientId = 17676, buy = 150 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -98,7 +99,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/rahkem.lua b/data-otservbr-global/npc/rahkem.lua index 13deea23dc4..b585aa0ec9f 100644 --- a/data-otservbr-global/npc/rahkem.lua +++ b/data-otservbr-global/npc/rahkem.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 87, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Please, not so loud, not so loud. Some of us are trying to rest in peace here.' } + { text = "Please, not so loud, not so loud. Some of us are trying to rest in peace here." }, } local keywordHandler = KeywordHandler:new() @@ -57,98 +57,121 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 6 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 6 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Rahkem) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Rahkem) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Rahkem, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Wooden Stake -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'I think you have forgotten to bring your stake, pilgrim.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 8 and player:getItemCount(5941) == 0 end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "I think you have forgotten to bring your stake, pilgrim." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 8 and player:getItemCount(5941) == 0 +end) -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I was informed what to do. Are you prepared to receive my line of the prayer?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 8 end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive my prayer: \'Let there be power and compassion\'. Now, bring your stake to Brewster in Port Hope for the next line of the prayer. I will inform him what to do.', reset = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 9) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - end -) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'I will wait for you.', reset = true }) +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I was informed what to do. Are you prepared to receive my line of the prayer?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 8 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive my prayer: 'Let there be power and compassion'. Now, bring your stake to Brewster in Port Hope for the next line of the prayer. I will inform him what to do.", reset = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 9) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "I will wait for you.", reset = true }) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You should visit Brewster in Port Hope now.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 9 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You already received my line of the prayer.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 9 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'A blessed stake? That is a strange request. Maybe Quentin knows more, he is one of the oldest monks after all.' }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You should visit Brewster in Port Hope now." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 9 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You already received my line of the prayer." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 9 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "A blessed stake? That is a strange request. Maybe Quentin knows more, he is one of the oldest monks after all." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/ramina.lua b/data-otservbr-global/npc/ramina.lua index 7bd76b85865..1e9d7f06335 100644 --- a/data-otservbr-global/npc/ramina.lua +++ b/data-otservbr-global/npc/ramina.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 15, lookFeet = 79, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -65,7 +65,7 @@ npcConfig.shop = { { itemName = "orange", clientId = 3586, buy = 12 }, { itemName = "peas", clientId = 11683, buy = 5 }, { itemName = "vial of fruit juice", clientId = 2874, buy = 10, count = 14 }, - { itemName = "vial of water", clientId = 2874, buy = 2, count = 1 } + { itemName = "vial of water", clientId = 2874, buy = 2, count = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -76,7 +76,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/rapanaio.lua b/data-otservbr-global/npc/rapanaio.lua index a57484927a8..7a7c67fe056 100644 --- a/data-otservbr-global/npc/rapanaio.lua +++ b/data-otservbr-global/npc/rapanaio.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 0, lookBody = 21, lookLegs = 20, - lookFeet = 39 + lookFeet = 39, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,8 +45,8 @@ npcType.onThink = function(npc, interval) npcHandler:onThink(npc, interval) end -keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, text = 'Now that we have arrived you should waste no time and fight your way to the lair of evil and destroy its master before its too late!' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'Me humble name is Rapanaio. Good old goblin name meaning honest, generous and nice person, I swear!' }) +keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = "Now that we have arrived you should waste no time and fight your way to the lair of evil and destroy its master before its too late!" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Me humble name is Rapanaio. Good old goblin name meaning honest, generous and nice person, I swear!" }) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/rapanaio_boat.lua b/data-otservbr-global/npc/rapanaio_boat.lua index 4aff35b5644..c06a7277b9d 100644 --- a/data-otservbr-global/npc/rapanaio_boat.lua +++ b/data-otservbr-global/npc/rapanaio_boat.lua @@ -15,17 +15,17 @@ npcConfig.outfit = { lookHead = 0, lookBody = 21, lookLegs = 20, - lookFeet = 39 + lookFeet = 39, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passage to {Evil Isle}.' } + { text = "Passage to {Evil Isle}." }, } local keywordHandler = KeywordHandler:new() @@ -57,19 +57,19 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, action) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }, nil, action) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }, nil, action) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('evil isle', 0, Position(32668, 31457, 6)) +addTravelKeyword("evil isle", 0, Position(32668, 31457, 6)) -- Basic -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Rapanaio from the Royal Tibia Line.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this sailing-ship.' }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Rapanaio from the Royal Tibia Line." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this sailing-ship." }) -npcHandler:setMessage(MESSAGE_GREET, 'Welcome on board, |PLAYERNAME|. I can travel you to {evil isle}.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. I can travel you to {evil isle}.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/rapanaio_isle_of_evil.lua b/data-otservbr-global/npc/rapanaio_isle_of_evil.lua index 4d68e4f967a..48ad8236d76 100644 --- a/data-otservbr-global/npc/rapanaio_isle_of_evil.lua +++ b/data-otservbr-global/npc/rapanaio_isle_of_evil.lua @@ -15,17 +15,17 @@ npcConfig.outfit = { lookHead = 0, lookBody = 21, lookLegs = 20, - lookFeet = 39 + lookFeet = 39, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Passage to {Kazordoon}.' } + { text = "Passage to {Kazordoon}." }, } local keywordHandler = KeywordHandler:new() @@ -57,19 +57,19 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination, action) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }, nil, action) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }, nil, action) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('kazordoon', 0, Position(32699, 31993, 14)) +addTravelKeyword("kazordoon", 0, Position(32699, 31993, 14)) -- Basic -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Rapanaio from the Royal Tibia Line.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this sailing-ship.' }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Rapanaio from the Royal Tibia Line." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this sailing-ship." }) -npcHandler:setMessage(MESSAGE_GREET, 'Welcome on board, |PLAYERNAME|. I can travel you to {kazordoon}.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +npcHandler:setMessage(MESSAGE_GREET, "Welcome on board, |PLAYERNAME|. I can travel you to {kazordoon}.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/rashid.lua b/data-otservbr-global/npc/rashid.lua index eb49e3b9450..0fbea6a6774 100644 --- a/data-otservbr-global/npc/rashid.lua +++ b/data-otservbr-global/npc/rashid.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 100, lookLegs = 119, lookFeet = 115, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,171 +58,171 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "mission")) then - if (os.date("%A") == "Monday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission01) < 1) then + if MsgContains(message, "mission") then + if os.date("%A") == "Monday" then + if player:getStorageValue(Storage.TravellingTrader.Mission01) < 1 then npcHandler:say("Well, you could attempt the mission to become a recognised trader, but it requires a lot of travelling. Are you willing to try?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.TravellingTrader.Mission01) == 1) then + elseif player:getStorageValue(Storage.TravellingTrader.Mission01) == 1 then npcHandler:say("Have you managed to obtain a rare deer trophy for my customer?", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif (os.date("%A") == "Tuesday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission01) == 2 and player:getStorageValue(Storage.TravellingTrader.Mission02) < 1) then + elseif os.date("%A") == "Tuesday" then + if player:getStorageValue(Storage.TravellingTrader.Mission01) == 2 and player:getStorageValue(Storage.TravellingTrader.Mission02) < 1 then npcHandler:say("So, my friend, are you willing to proceed to the next mission to become a recognised trader?", npc, creature) npcHandler:setTopic(playerId, 4) - elseif (player:getStorageValue(Storage.TravellingTrader.Mission02) == 4) then + elseif player:getStorageValue(Storage.TravellingTrader.Mission02) == 4 then npcHandler:say("Did you bring me the package?", npc, creature) npcHandler:setTopic(playerId, 6) end - elseif (os.date("%A") == "Wednesday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission02) == 5 and player:getStorageValue(Storage.TravellingTrader.Mission03) < 1) then + elseif os.date("%A") == "Wednesday" then + if player:getStorageValue(Storage.TravellingTrader.Mission02) == 5 and player:getStorageValue(Storage.TravellingTrader.Mission03) < 1 then npcHandler:say("So, my friend, are you willing to proceed to the next mission to become a recognised trader?", npc, creature) npcHandler:setTopic(playerId, 7) - elseif (player:getStorageValue(Storage.TravellingTrader.Mission03) == 2) then + elseif player:getStorageValue(Storage.TravellingTrader.Mission03) == 2 then npcHandler:say("Have you brought the cheese?", npc, creature) npcHandler:setTopic(playerId, 9) end - elseif (os.date("%A") == "Thursday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission03) == 3 and player:getStorageValue(Storage.TravellingTrader.Mission04) < 1) then + elseif os.date("%A") == "Thursday" then + if player:getStorageValue(Storage.TravellingTrader.Mission03) == 3 and player:getStorageValue(Storage.TravellingTrader.Mission04) < 1 then npcHandler:say("So, my friend, are you willing to proceed to the next mission to become a recognised trader?", npc, creature) npcHandler:setTopic(playerId, 10) - elseif (player:getStorageValue(Storage.TravellingTrader.Mission04) == 2) then + elseif player:getStorageValue(Storage.TravellingTrader.Mission04) == 2 then npcHandler:say("Have you brought the vase?", npc, creature) npcHandler:setTopic(playerId, 12) end - elseif (os.date("%A") == "Friday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission04) == 3 and player:getStorageValue(Storage.TravellingTrader.Mission05) < 1) then + elseif os.date("%A") == "Friday" then + if player:getStorageValue(Storage.TravellingTrader.Mission04) == 3 and player:getStorageValue(Storage.TravellingTrader.Mission05) < 1 then npcHandler:say("So, my friend, are you willing to proceed to the next mission to become a recognised trader?", npc, creature) npcHandler:setTopic(playerId, 13) - elseif (player:getStorageValue(Storage.TravellingTrader.Mission05) == 2) then + elseif player:getStorageValue(Storage.TravellingTrader.Mission05) == 2 then npcHandler:say("Have you brought a cheap but good crimson sword?", npc, creature) npcHandler:setTopic(playerId, 15) end - elseif (os.date("%A") == "Saturday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission05) == 3 and player:getStorageValue(Storage.TravellingTrader.Mission06) < 1) then + elseif os.date("%A") == "Saturday" then + if player:getStorageValue(Storage.TravellingTrader.Mission05) == 3 and player:getStorageValue(Storage.TravellingTrader.Mission06) < 1 then npcHandler:say("So, my friend, are you willing to proceed to the next mission to become a recognised trader?", npc, creature) npcHandler:setTopic(playerId, 16) - elseif (player:getStorageValue(Storage.TravellingTrader.Mission06) == 1) then + elseif player:getStorageValue(Storage.TravellingTrader.Mission06) == 1 then npcHandler:say("Have you brought me a gold fish??", npc, creature) npcHandler:setTopic(playerId, 18) end - elseif (os.date("%A") == "Sunday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission06) == 2 and player:getStorageValue(Storage.TravellingTrader.Mission07) ~= 1) then + elseif os.date("%A") == "Sunday" then + if player:getStorageValue(Storage.TravellingTrader.Mission06) == 2 and player:getStorageValue(Storage.TravellingTrader.Mission07) ~= 1 then npcHandler:say("Ah, right. I hereby declare you - one of my recognised traders! Feel free to offer me your wares!", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission07, 1) - player:addAchievement('Recognised Trader') + player:addAchievement("Recognised Trader") npcHandler:setTopic(playerId, 0) end end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Very good! I need talented people who are able to handle my wares with care, find good offers and the like, so I'm going to test you. ...", "First, I'd like to see if you can dig up rare wares. Something like a ... mastermind shield! ...", "Haha, just kidding, fooled you there, didn't I? Always control your nerves, that's quite important during bargaining. ...", "Okay, all I want from you is one of these rare deer trophies. I have a customer here in Svargrond who ordered one, so I'd like you to deliver it tome while I'm in Svargrond. ...", - "Everything clear and understood?" + "Everything clear and understood?", }, npc, creature) npcHandler:setTopic(playerId, 2) - elseif (npcHandler:getTopic(playerId) == 2) then + elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say("Fine. Then get a hold of that deer trophy and bring it to me while I'm in Svargrond. Just ask me about your mission.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission01, 1) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 3) then + elseif npcHandler:getTopic(playerId) == 3 then if player:removeItem(7397, 1) then npcHandler:say("Well done! I'll take that from you. Come see me another day, I'll be busy for a while now. ", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission01, 2) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 4) then + elseif npcHandler:getTopic(playerId) == 4 then npcHandler:say({ "Alright, that's good to hear. From you as my trader and deliveryman, I expect more than finding rare items. ...", "You also need to be able to transport heavy wares, weaklings won't get far here. I have ordered a special package from Edron. ...", - "Pick it up from Willard and bring it back to me while I'm in Liberty Bay. Everything clear and understood?" + "Pick it up from Willard and bring it back to me while I'm in Liberty Bay. Everything clear and understood?", }, npc, creature) npcHandler:setTopic(playerId, 5) - elseif (npcHandler:getTopic(playerId) == 5) then + elseif npcHandler:getTopic(playerId) == 5 then npcHandler:say("Fine. Then off you go, just ask Willard about the 'package for Rashid'.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission02, 1) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 6) then + elseif npcHandler:getTopic(playerId) == 6 then if player:removeItem(145, 1) then npcHandler:say("Great. Just place it over there - yes, thanks, that's it. Come see me another day, I'll be busy for a while now. ", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission02, 5) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 7) then + elseif npcHandler:getTopic(playerId) == 7 then npcHandler:say({ "Well, that's good to hear. From you as my trader and deliveryman, I expect more than carrying heavy packages. ...", "You also need to be fast and deliver wares in time. I have ordered a very special cheese wheel made from Darashian milk. ...", "Unfortunately, the high temperature in the desert makes it rot really fast, so it must not stay in the sun for too long. ...", "I'm also afraid that you might not be able to use ships because of the smell of the cheese. ...", - "Please get the cheese from Miraia and bring it to me while I'm in Port Hope. Everything clear and understood?" + "Please get the cheese from Miraia and bring it to me while I'm in Port Hope. Everything clear and understood?", }, npc, creature) npcHandler:setTopic(playerId, 8) - elseif (npcHandler:getTopic(playerId) == 8) then + elseif npcHandler:getTopic(playerId) == 8 then npcHandler:say("Okay, then please find Miraia in Darashia and ask her about the {'scarab cheese'}.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission03, 1) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 9) then + elseif npcHandler:getTopic(playerId) == 9 then if player:removeItem(169, 1) then npcHandler:say("Mmmhh, the lovely odeur of scarab cheese! I really can't understand why most people can't stand it. Thanks, well done! ", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission03, 3) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 10) then + elseif npcHandler:getTopic(playerId) == 10 then npcHandler:say({ "Well, that's good to hear. From you as my trader and deliveryman, I expect more than bringing stinky cheese. ...", "I wonder if you are able to deliver goods so fragile they almost break when looked at. ...", - "I have ordered a special elven vase from Briasol in Ab'Dendriel. Get it from him and don't even touch it, just bring it to me while I'm in Ankrahmun. Everything clear and understood?" + "I have ordered a special elven vase from Briasol in Ab'Dendriel. Get it from him and don't even touch it, just bring it to me while I'm in Ankrahmun. Everything clear and understood?", }, npc, creature) npcHandler:setTopic(playerId, 11) - elseif (npcHandler:getTopic(playerId) == 11) then + elseif npcHandler:getTopic(playerId) == 11 then npcHandler:say("Okay, then please find {Briasol} in {Ab'Dendriel} and ask for a {'fine vase'}.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission04, 1) player:addMoney(1000) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 12) then + elseif npcHandler:getTopic(playerId) == 12 then if player:removeItem(227, 1) then npcHandler:say("I'm surprised that you managed to bring this vase without a single crack. That was what I needed to know, thank you. ", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission04, 3) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 13) then + elseif npcHandler:getTopic(playerId) == 13 then npcHandler:say({ "Fine! There's one more skill that I need to test and which is cruicial for a successful trader. ...", "Of course you must be able to haggle, else you won't survive long in this business. To make things as hard as possible for you, I have the perfect trade partner for you. ...", "Dwarves are said to be the most stubborn of all traders. Travel to {Kazordoon} and try to get the smith {Uzgod} to sell a {crimson sword} to you. ...", "Of course, it has to be cheap. Don't come back with anything more expensive than 400 gold. ...", "And the quality must not suffer, of course! Everything clear and understood?", - "Dwarves are said to be the most stubborn of all traders. Travel to Kazordoon and try to get the smith Uzgod to sell a crimson sword to you. ..." + "Dwarves are said to be the most stubborn of all traders. Travel to Kazordoon and try to get the smith Uzgod to sell a crimson sword to you. ...", }, npc, creature) npcHandler:setTopic(playerId, 14) - elseif (npcHandler:getTopic(playerId) == 14) then + elseif npcHandler:getTopic(playerId) == 14 then npcHandler:say("Okay, I'm curious how you will do with {Uzgod}. Good luck!", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission05, 1) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 15) then + elseif npcHandler:getTopic(playerId) == 15 then if player:removeItem(7385, 1) then npcHandler:say("Ha! You are clever indeed, well done! I'll take this from you. Come see me tomorrow, I think we two might get into business after all.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission05, 3) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 16) then + elseif npcHandler:getTopic(playerId) == 16 then npcHandler:say({ "My friend, it seems you have already learnt a lot about the art of trading. I think you are more than worthy to become a recognised trader. ...", "There is just one little favour that I would ask from you... something personal, actually, forgive my boldness. ...", "I have always dreamed to have a small pet, one that I could take with me and which wouldn't cause problems. ...", - "Could you - just maybe - bring me a small goldfish in a bowl? I know that you would be able to get one, wouldn't you?" + "Could you - just maybe - bring me a small goldfish in a bowl? I know that you would be able to get one, wouldn't you?", }, npc, creature) npcHandler:setTopic(playerId, 17) - elseif (npcHandler:getTopic(playerId) == 17) then + elseif npcHandler:getTopic(playerId) == 17 then npcHandler:say("Thanks so much! I'll be waiting eagerly for your return then.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission06, 1) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 18) then + elseif npcHandler:getTopic(playerId) == 18 then if player:removeItem(5929, 1) then npcHandler:say("Thank you!! Ah, this makes my day! I'll take the rest of the day off to get to know this little guy. Come see me tomorrow, if you like.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission06, 2) @@ -263,7 +263,7 @@ npcHandler:setMessage(MESSAGE_SENDTRADE, "Take all the time you need to decide w local function onTradeRequest(npc, creature) if Player(creature):getStorageValue(Storage.TravellingTrader.Mission07) ~= 1 then - npcHandler:say('Sorry, but you do not belong to my exclusive customers. I have to make sure that I can trust in the quality of your wares.', npc, creature) + npcHandler:say("Sorry, but you do not belong to my exclusive customers. I have to make sure that I can trust in the quality of your wares.", npc, creature) return false end @@ -431,7 +431,7 @@ npcConfig.shop = { { itemName = "war axe", clientId = 3342, sell = 12000 }, { itemName = "war horn", clientId = 2958, sell = 8000 }, { itemName = "witch hat", clientId = 9653, sell = 5000 }, - { itemName = "wyvern fang", clientId = 7408, sell = 1500 } + { itemName = "wyvern fang", clientId = 7408, sell = 1500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -442,7 +442,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/rashid_custom.lua b/data-otservbr-global/npc/rashid_custom.lua index 17e27ea32ee..c68e5aeec36 100644 --- a/data-otservbr-global/npc/rashid_custom.lua +++ b/data-otservbr-global/npc/rashid_custom.lua @@ -18,11 +18,11 @@ npcConfig.outfit = { lookBody = 100, lookLegs = 119, lookFeet = 115, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -60,171 +60,171 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "mission")) then - if (os.date("%A") == "Monday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission01) < 1) then + if MsgContains(message, "mission") then + if os.date("%A") == "Monday" then + if player:getStorageValue(Storage.TravellingTrader.Mission01) < 1 then npcHandler:say("Well, you could attempt the mission to become a recognised trader, but it requires a lot of travelling. Are you willing to try?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.TravellingTrader.Mission01) == 1) then + elseif player:getStorageValue(Storage.TravellingTrader.Mission01) == 1 then npcHandler:say("Have you managed to obtain a rare deer trophy for my customer?", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif (os.date("%A") == "Tuesday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission01) == 2 and player:getStorageValue(Storage.TravellingTrader.Mission02) < 1) then + elseif os.date("%A") == "Tuesday" then + if player:getStorageValue(Storage.TravellingTrader.Mission01) == 2 and player:getStorageValue(Storage.TravellingTrader.Mission02) < 1 then npcHandler:say("So, my friend, are you willing to proceed to the next mission to become a recognised trader?", npc, creature) npcHandler:setTopic(playerId, 4) - elseif (player:getStorageValue(Storage.TravellingTrader.Mission02) == 4) then + elseif player:getStorageValue(Storage.TravellingTrader.Mission02) == 4 then npcHandler:say("Did you bring me the package?", npc, creature) npcHandler:setTopic(playerId, 6) end - elseif (os.date("%A") == "Wednesday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission02) == 5 and player:getStorageValue(Storage.TravellingTrader.Mission03) < 1) then + elseif os.date("%A") == "Wednesday" then + if player:getStorageValue(Storage.TravellingTrader.Mission02) == 5 and player:getStorageValue(Storage.TravellingTrader.Mission03) < 1 then npcHandler:say("So, my friend, are you willing to proceed to the next mission to become a recognised trader?", npc, creature) npcHandler:setTopic(playerId, 7) - elseif (player:getStorageValue(Storage.TravellingTrader.Mission03) == 2) then + elseif player:getStorageValue(Storage.TravellingTrader.Mission03) == 2 then npcHandler:say("Have you brought the cheese?", npc, creature) npcHandler:setTopic(playerId, 9) end - elseif (os.date("%A") == "Thursday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission03) == 3 and player:getStorageValue(Storage.TravellingTrader.Mission04) < 1) then + elseif os.date("%A") == "Thursday" then + if player:getStorageValue(Storage.TravellingTrader.Mission03) == 3 and player:getStorageValue(Storage.TravellingTrader.Mission04) < 1 then npcHandler:say("So, my friend, are you willing to proceed to the next mission to become a recognised trader?", npc, creature) npcHandler:setTopic(playerId, 10) - elseif (player:getStorageValue(Storage.TravellingTrader.Mission04) == 2) then + elseif player:getStorageValue(Storage.TravellingTrader.Mission04) == 2 then npcHandler:say("Have you brought the vase?", npc, creature) npcHandler:setTopic(playerId, 12) end - elseif (os.date("%A") == "Friday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission04) == 3 and player:getStorageValue(Storage.TravellingTrader.Mission05) < 1) then + elseif os.date("%A") == "Friday" then + if player:getStorageValue(Storage.TravellingTrader.Mission04) == 3 and player:getStorageValue(Storage.TravellingTrader.Mission05) < 1 then npcHandler:say("So, my friend, are you willing to proceed to the next mission to become a recognised trader?", npc, creature) npcHandler:setTopic(playerId, 13) - elseif (player:getStorageValue(Storage.TravellingTrader.Mission05) == 2) then + elseif player:getStorageValue(Storage.TravellingTrader.Mission05) == 2 then npcHandler:say("Have you brought a cheap but good crimson sword?", npc, creature) npcHandler:setTopic(playerId, 15) end - elseif (os.date("%A") == "Saturday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission05) == 3 and player:getStorageValue(Storage.TravellingTrader.Mission06) < 1) then + elseif os.date("%A") == "Saturday" then + if player:getStorageValue(Storage.TravellingTrader.Mission05) == 3 and player:getStorageValue(Storage.TravellingTrader.Mission06) < 1 then npcHandler:say("So, my friend, are you willing to proceed to the next mission to become a recognised trader?", npc, creature) npcHandler:setTopic(playerId, 16) - elseif (player:getStorageValue(Storage.TravellingTrader.Mission06) == 1) then + elseif player:getStorageValue(Storage.TravellingTrader.Mission06) == 1 then npcHandler:say("Have you brought me a gold fish??", npc, creature) npcHandler:setTopic(playerId, 18) end - elseif (os.date("%A") == "Sunday") then - if (player:getStorageValue(Storage.TravellingTrader.Mission06) == 2 and player:getStorageValue(Storage.TravellingTrader.Mission07) ~= 1) then + elseif os.date("%A") == "Sunday" then + if player:getStorageValue(Storage.TravellingTrader.Mission06) == 2 and player:getStorageValue(Storage.TravellingTrader.Mission07) ~= 1 then npcHandler:say("Ah, right. I hereby declare you - one of my recognised traders! Feel free to offer me your wares!", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission07, 1) - player:addAchievement('Recognised Trader') + player:addAchievement("Recognised Trader") npcHandler:setTopic(playerId, 0) end end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Very good! I need talented people who are able to handle my wares with care, find good offers and the like, so I'm going to test you. ...", "First, I'd like to see if you can dig up rare wares. Something like a ... mastermind shield! ...", "Haha, just kidding, fooled you there, didn't I? Always control your nerves, that's quite important during bargaining. ...", "Okay, all I want from you is one of these rare deer trophies. I have a customer here in Svargrond who ordered one, so I'd like you to deliver it tome while I'm in Svargrond. ...", - "Everything clear and understood?" + "Everything clear and understood?", }, npc, creature) npcHandler:setTopic(playerId, 2) - elseif (npcHandler:getTopic(playerId) == 2) then + elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say("Fine. Then get a hold of that deer trophy and bring it to me while I'm in Svargrond. Just ask me about your mission.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission01, 1) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 3) then + elseif npcHandler:getTopic(playerId) == 3 then if player:removeItem(7397, 1) then npcHandler:say("Well done! I'll take that from you. Come see me another day, I'll be busy for a while now. ", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission01, 2) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 4) then + elseif npcHandler:getTopic(playerId) == 4 then npcHandler:say({ "Alright, that's good to hear. From you as my trader and deliveryman, I expect more than finding rare items. ...", "You also need to be able to transport heavy wares, weaklings won't get far here. I have ordered a special package from Edron. ...", - "Pick it up from Willard and bring it back to me while I'm in Liberty Bay. Everything clear and understood?" + "Pick it up from Willard and bring it back to me while I'm in Liberty Bay. Everything clear and understood?", }, npc, creature) npcHandler:setTopic(playerId, 5) - elseif (npcHandler:getTopic(playerId) == 5) then + elseif npcHandler:getTopic(playerId) == 5 then npcHandler:say("Fine. Then off you go, just ask Willard about the 'package for Rashid'.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission02, 1) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 6) then + elseif npcHandler:getTopic(playerId) == 6 then if player:removeItem(145, 1) then npcHandler:say("Great. Just place it over there - yes, thanks, that's it. Come see me another day, I'll be busy for a while now. ", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission02, 5) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 7) then + elseif npcHandler:getTopic(playerId) == 7 then npcHandler:say({ "Well, that's good to hear. From you as my trader and deliveryman, I expect more than carrying heavy packages. ...", "You also need to be fast and deliver wares in time. I have ordered a very special cheese wheel made from Darashian milk. ...", "Unfortunately, the high temperature in the desert makes it rot really fast, so it must not stay in the sun for too long. ...", "I'm also afraid that you might not be able to use ships because of the smell of the cheese. ...", - "Please get the cheese from Miraia and bring it to me while I'm in Port Hope. Everything clear and understood?" + "Please get the cheese from Miraia and bring it to me while I'm in Port Hope. Everything clear and understood?", }, npc, creature) npcHandler:setTopic(playerId, 8) - elseif (npcHandler:getTopic(playerId) == 8) then + elseif npcHandler:getTopic(playerId) == 8 then npcHandler:say("Okay, then please find Miraia in Darashia and ask her about the {'scarab cheese'}.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission03, 1) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 9) then + elseif npcHandler:getTopic(playerId) == 9 then if player:removeItem(169, 1) then npcHandler:say("Mmmhh, the lovely odeur of scarab cheese! I really can't understand why most people can't stand it. Thanks, well done! ", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission03, 3) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 10) then + elseif npcHandler:getTopic(playerId) == 10 then npcHandler:say({ "Well, that's good to hear. From you as my trader and deliveryman, I expect more than bringing stinky cheese. ...", "I wonder if you are able to deliver goods so fragile they almost break when looked at. ...", - "I have ordered a special elven vase from Briasol in Ab'Dendriel. Get it from him and don't even touch it, just bring it to me while I'm in Ankrahmun. Everything clear and understood?" + "I have ordered a special elven vase from Briasol in Ab'Dendriel. Get it from him and don't even touch it, just bring it to me while I'm in Ankrahmun. Everything clear and understood?", }, npc, creature) npcHandler:setTopic(playerId, 11) - elseif (npcHandler:getTopic(playerId) == 11) then + elseif npcHandler:getTopic(playerId) == 11 then npcHandler:say("Okay, then please find {Briasol} in {Ab'Dendriel} and ask for a {'fine vase'}.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission04, 1) player:addMoney(1000) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 12) then + elseif npcHandler:getTopic(playerId) == 12 then if player:removeItem(227, 1) then npcHandler:say("I'm surprised that you managed to bring this vase without a single crack. That was what I needed to know, thank you. ", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission04, 3) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 13) then + elseif npcHandler:getTopic(playerId) == 13 then npcHandler:say({ "Fine! There's one more skill that I need to test and which is cruicial for a successful trader. ...", "Of course you must be able to haggle, else you won't survive long in this business. To make things as hard as possible for you, I have the perfect trade partner for you. ...", "Dwarves are said to be the most stubborn of all traders. Travel to {Kazordoon} and try to get the smith {Uzgod} to sell a {crimson sword} to you. ...", "Of course, it has to be cheap. Don't come back with anything more expensive than 400 gold. ...", "And the quality must not suffer, of course! Everything clear and understood?", - "Dwarves are said to be the most stubborn of all traders. Travel to Kazordoon and try to get the smith Uzgod to sell a crimson sword to you. ..." + "Dwarves are said to be the most stubborn of all traders. Travel to Kazordoon and try to get the smith Uzgod to sell a crimson sword to you. ...", }, npc, creature) npcHandler:setTopic(playerId, 14) - elseif (npcHandler:getTopic(playerId) == 14) then + elseif npcHandler:getTopic(playerId) == 14 then npcHandler:say("Okay, I'm curious how you will do with {Uzgod}. Good luck!", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission05, 1) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 15) then + elseif npcHandler:getTopic(playerId) == 15 then if player:removeItem(7385, 1) then npcHandler:say("Ha! You are clever indeed, well done! I'll take this from you. Come see me tomorrow, I think we two might get into business after all.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission05, 3) npcHandler:setTopic(playerId, 0) end - elseif (npcHandler:getTopic(playerId) == 16) then + elseif npcHandler:getTopic(playerId) == 16 then npcHandler:say({ "My friend, it seems you have already learnt a lot about the art of trading. I think you are more than worthy to become a recognised trader. ...", "There is just one little favour that I would ask from you... something personal, actually, forgive my boldness. ...", "I have always dreamed to have a small pet, one that I could take with me and which wouldn't cause problems. ...", - "Could you - just maybe - bring me a small goldfish in a bowl? I know that you would be able to get one, wouldn't you?" + "Could you - just maybe - bring me a small goldfish in a bowl? I know that you would be able to get one, wouldn't you?", }, npc, creature) npcHandler:setTopic(playerId, 17) - elseif (npcHandler:getTopic(playerId) == 17) then + elseif npcHandler:getTopic(playerId) == 17 then npcHandler:say("Thanks so much! I'll be waiting eagerly for your return then.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission06, 1) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 18) then + elseif npcHandler:getTopic(playerId) == 18 then if player:removeItem(5929, 1) then npcHandler:say("Thank you!! Ah, this makes my day! I'll take the rest of the day off to get to know this little guy. Come see me tomorrow, if you like.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission06, 2) @@ -265,7 +265,7 @@ npcHandler:setMessage(MESSAGE_SENDTRADE, "Take all the time you need to decide w local function onTradeRequest(npc, creature) if toggleRashidStorage and Player(creature):getStorageValue(Storage.TravellingTrader.Mission07) ~= 1 then - npcHandler:say('Sorry, but you do not belong to my exclusive customers. I have to make sure that I can trust in the quality of your wares.', npc, creature) + npcHandler:say("Sorry, but you do not belong to my exclusive customers. I have to make sure that I can trust in the quality of your wares.", npc, creature) return false end @@ -433,7 +433,7 @@ npcConfig.shop = { { itemName = "war axe", clientId = 3342, sell = 12000 }, { itemName = "war horn", clientId = 2958, sell = 8000 }, { itemName = "witch hat", clientId = 9653, sell = 5000 }, - { itemName = "wyvern fang", clientId = 7408, sell = 1500 } + { itemName = "wyvern fang", clientId = 7408, sell = 1500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -444,7 +444,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/rata_mari.lua b/data-otservbr-global/npc/rata_mari.lua index fc0b0e45b78..03284edad00 100644 --- a/data-otservbr-global/npc/rata_mari.lua +++ b/data-otservbr-global/npc/rata_mari.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 21 + lookType = 21, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,41 +61,41 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'spy report') then + if MsgContains(message, "spy report") then local reportProgress = player:getStorageValue(Storage.DjinnWar.MaridFaction.RataMari) if reportProgress < 1 then npcHandler:say({ - 'You have come for the report? Great! I have been working hard on it during the last months. And nobody came to pick it up. I thought everybody had forgotten about me! ...', - 'Do you have any idea how difficult it is to hold a pen when you have claws instead of hands? ...', - 'But - you know - now I have worked so hard on this report I somehow don\'t want to part with it. At least not without some decent payment. ...', - 'All right - listen - I know Fa\'hradin would not approve of this, but I can\'t help it. I need some cheese! I need it now! ...', - 'And I will not give the report to you until you get me some! Meep!' + "You have come for the report? Great! I have been working hard on it during the last months. And nobody came to pick it up. I thought everybody had forgotten about me! ...", + "Do you have any idea how difficult it is to hold a pen when you have claws instead of hands? ...", + "But - you know - now I have worked so hard on this report I somehow don't want to part with it. At least not without some decent payment. ...", + "All right - listen - I know Fa'hradin would not approve of this, but I can't help it. I need some cheese! I need it now! ...", + "And I will not give the report to you until you get me some! Meep!", }, npc, creature) player:setStorageValue(Storage.DjinnWar.MaridFaction.RataMari, 1) elseif reportProgress == 1 then - npcHandler:say('Ok, have you brought me the cheese, I\'ve asked for?', npc, creature) + npcHandler:say("Ok, have you brought me the cheese, I've asked for?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('I already gave you the report. I\'m not going to write another one!', npc, creature) + npcHandler:say("I already gave you the report. I'm not going to write another one!", npc, creature) end elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not player:removeItem(3607, 1) then - npcHandler:say('No cheese - no report.', npc, creature) + npcHandler:say("No cheese - no report.", npc, creature) return true end player:setStorageValue(Storage.DjinnWar.MaridFaction.RataMari, 2) player:addItem(3232, 1) - npcHandler:say('Meep! Meep! Great! Here is the spyreport for you!', npc, creature) + npcHandler:say("Meep! Meep! Great! Here is the spyreport for you!", npc, creature) else - npcHandler:say('No cheese - no report.', npc, creature) + npcHandler:say("No cheese - no report.", npc, creature) end npcHandler:setTopic(playerId, 0) end return true end -keywordHandler:addKeyword({ 'rat' }, StdModule.say, { npcHandler = npcHandler, text = 'Your power of observation is stunning. Yes, I\'m a rat.' }) +keywordHandler:addKeyword({ "rat" }, StdModule.say, { npcHandler = npcHandler, text = "Your power of observation is stunning. Yes, I'm a rat." }) -- Greeting message keywordHandler:addGreetKeyword({ "piedpiper" }, { npcHandler = npcHandler, text = "Meep? I mean - hello! Sorry, |PLAYERNAME|... Being a {rat} has kind of grown on me." }) diff --git a/data-otservbr-global/npc/ray.lua b/data-otservbr-global/npc/ray.lua index 4245370a878..020c72c791f 100644 --- a/data-otservbr-global/npc/ray.lua +++ b/data-otservbr-global/npc/ray.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 115, lookLegs = 126, lookFeet = 58, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,7 +55,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -66,7 +66,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/raymond_striker.lua b/data-otservbr-global/npc/raymond_striker.lua index d5d49125889..37cb0dbe557 100644 --- a/data-otservbr-global/npc/raymond_striker.lua +++ b/data-otservbr-global/npc/raymond_striker.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 98, lookFeet = 95, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -72,9 +72,9 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 1) elseif player:getStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven) == 14 and player:getStorageValue(Storage.TheShatteredIsles.RaysMission1) < 1 then npcHandler:say({ - 'Indeed, I could use some help. The evil pirates of Nargor have convinced an alchemist from Edron to supply them with a substance called Fafnar\'s Fire ...', - 'It can burn even on water and is a threat to us all. I need you to travel to Edron and pretend to the alchemist Sandra that you are the one whom the other pirates sent to get the fire ...', - 'When she asks for a payment, tell her \'Your continued existence is payment enough\'. That should enrage any member of the Edron academy enough to refuse any further deals with the pirates.', + "Indeed, I could use some help. The evil pirates of Nargor have convinced an alchemist from Edron to supply them with a substance called Fafnar's Fire ...", + "It can burn even on water and is a threat to us all. I need you to travel to Edron and pretend to the alchemist Sandra that you are the one whom the other pirates sent to get the fire ...", + "When she asks for a payment, tell her 'Your continued existence is payment enough'. That should enrage any member of the Edron academy enough to refuse any further deals with the pirates.", }, npc, creature) player:setStorageValue(Storage.TheShatteredIsles.RaysMission1, 1) elseif player:getStorageValue(Storage.TheShatteredIsles.RaysMission1) == 2 then @@ -83,13 +83,13 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.TheShatteredIsles.RaysMission1, 3) elseif player:getStorageValue(Storage.TheShatteredIsles.RaysMission1) == 3 and player:getStorageValue(Storage.TheShatteredIsles.RaysMission2) < 1 then npcHandler:say({ - 'The mission on which I will send you is vital to our cause. It is a sabotage mission. Nargor is guarded by several heavy catapults. ...', - 'I need you to sabotage the most dangerous of those catapults which can be found right in their harbour, aiming at ships passing by the entrance. ...', - 'Get a fire bug - you can buy them in Liberty Bay - and set this catapult on fire. ...', - 'Make sure to use the bug on the left part of the catapult where its lever is. That is where it\'s most vulnerable. ...', - 'If you see a short explosion, you will know that it worked. I will tell Sebastian to bring you to Nargor, but beware. ...', - 'Of course, he can\'t drop you off directly in the pirate\'s base. However, we have discovered a secret way into the Howling Grotto. ...', - 'Try to make your way through the caves of Nargor to reach their harbour. This is where you will find the catapult in question.' + "The mission on which I will send you is vital to our cause. It is a sabotage mission. Nargor is guarded by several heavy catapults. ...", + "I need you to sabotage the most dangerous of those catapults which can be found right in their harbour, aiming at ships passing by the entrance. ...", + "Get a fire bug - you can buy them in Liberty Bay - and set this catapult on fire. ...", + "Make sure to use the bug on the left part of the catapult where its lever is. That is where it's most vulnerable. ...", + "If you see a short explosion, you will know that it worked. I will tell Sebastian to bring you to Nargor, but beware. ...", + "Of course, he can't drop you off directly in the pirate's base. However, we have discovered a secret way into the Howling Grotto. ...", + "Try to make your way through the caves of Nargor to reach their harbour. This is where you will find the catapult in question.", }, npc, creature) player:setStorageValue(Storage.TheShatteredIsles.AccessToNargor, 1) player:setStorageValue(Storage.TheShatteredIsles.RaysMission2, 1) @@ -99,19 +99,19 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.TheShatteredIsles.RaysMission2, 3) elseif player:getStorageValue(Storage.TheShatteredIsles.RaysMission2) == 3 and player:getStorageValue(Storage.TheShatteredIsles.RaysMission3) < 1 then npcHandler:say({ - 'If you manage to accomplish this vital mission you will prove yourself to be a worthy member of our community. Imight even grant you your own ship and pirate clothing! ...', - 'So listen to the first step of my plan. I want you to infiltrate their base. Try to enter their tavern, which meansthat you have to get past the guard. ...', - 'You will probably have to deceive him somehow, so that he thinks you are one of them. ...', - 'In the tavern, the pirates feel safe and plan their next strikes. Study ALL of their maps and plans lying around ...', - 'Afterwards, return here and report to me about your mission.' + "If you manage to accomplish this vital mission you will prove yourself to be a worthy member of our community. Imight even grant you your own ship and pirate clothing! ...", + "So listen to the first step of my plan. I want you to infiltrate their base. Try to enter their tavern, which meansthat you have to get past the guard. ...", + "You will probably have to deceive him somehow, so that he thinks you are one of them. ...", + "In the tavern, the pirates feel safe and plan their next strikes. Study ALL of their maps and plans lying around ...", + "Afterwards, return here and report to me about your mission.", }, npc, creature) player:setStorageValue(Storage.TheShatteredIsles.RaysMission3, 1) elseif player:getStorageValue(Storage.TheShatteredIsles.RaysMission3) == 1 and player:getStorageValue(Storage.TheShatteredIsles.TavernMap1) == 1 and player:getStorageValue(Storage.TheShatteredIsles.TavernMap2) == 1 and player:getStorageValue(Storage.TheShatteredIsles.TavernMap3) == 1 then npcHandler:say({ - 'Well done, my friend. That will help us a lot. Of course there are other things to be done though. ...', - 'I learned that Klaus, the owner of the tavern, wants me dead. He is offering any of those pirates a mission to kill me....', - 'If we could convince him that you fulfilled that mission, the pirates will have the party of their lives. This would beour chance for a sneak attack to damage their boats and steal their plunder! ...', - 'Obtain this mission from him and learn what he needs as a proof. Then return to me and report to me about yourmission so we can formulate an appropriate plan.' + "Well done, my friend. That will help us a lot. Of course there are other things to be done though. ...", + "I learned that Klaus, the owner of the tavern, wants me dead. He is offering any of those pirates a mission to kill me....", + "If we could convince him that you fulfilled that mission, the pirates will have the party of their lives. This would beour chance for a sneak attack to damage their boats and steal their plunder! ...", + "Obtain this mission from him and learn what he needs as a proof. Then return to me and report to me about yourmission so we can formulate an appropriate plan.", }, npc, creature) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 20) player:setStorageValue(Storage.TheShatteredIsles.RaysMission3, 3) @@ -122,9 +122,9 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.TheShatteredIsles.RaysMission4, 3) elseif player:getStorageValue(Storage.TheShatteredIsles.RaysMission4) == 4 then npcHandler:say({ - 'Incredible! You did what no other did even dare to think about! You are indeed a true hero to our cause ...', - 'Sadly I have no ship that lacks a captain, else you would of course be our first choice. I am still true to my word asbest as I am able. ...', - 'So take this as your very own ship. Oh, and remind me about the pirate outfit sometime.' + "Incredible! You did what no other did even dare to think about! You are indeed a true hero to our cause ...", + "Sadly I have no ship that lacks a captain, else you would of course be our first choice. I am still true to my word asbest as I am able. ...", + "So take this as your very own ship. Oh, and remind me about the pirate outfit sometime.", }, npc, creature) player:addItem(2994, 1) player:setStorageValue(Storage.TheShatteredIsles.ReputationInSabrehaven, 21) @@ -155,7 +155,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "The pirates on Nargor are becoming more and more of a threat to us each day. I wish someone could get rid of them once and for all, but unfortunately they just keep coming! ...", "Only a dead pirate is a good pirate. I think killing a large number of them would definitely help us to make Sabrehaven a safer place. ...", - "It doesn't matter how long it takes, but... would you be willing to kill 3000 pirates for us?" }, npc, creature) + "It doesn't matter how long it takes, but... would you be willing to kill 3000 pirates for us?", + }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.KillingInTheNameOf.PirateTask) == 0 then if player:getStorageValue(Storage.Quest.U8_5.KillingInTheNameOf.MonsterKillCount.PirateCount) >= 3000 then @@ -163,14 +164,16 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Hey, great. You've done well! As a small reward I give you some coins from our treasure box. Also, let me tell you an interesting piece of information. ...", "One of our spies told us about a secret hideout somewhere on Nargor. Supposedly, one of the four pirate leaders can be found there sometimes. If you dare go there, you might be able to face him or her in one on one combat. ...", - "Beware though - prepare yourself well and only flee if you must. This might be your only chance to get into there, so be careful and don't die!" }, npc, creature) + "Beware though - prepare yourself well and only flee if you must. This might be your only chance to get into there, so be careful and don't die!", + }, npc, creature) player:setStorageValue(Storage.KillingInTheNameOf.PirateTask, 1) player:addExperience(10000, true) player:addMoney(5000) elseif player:getStorageValue(REPEATSTORAGE_BASE + #tasks.GrizzlyAdams + 1) == 3 then npcHandler:say({ "This was probably the last time you will be able to enter that hideout. Well done, my friend, our thanks are with you. ...", - "You are most welcome to keep on killing pirates for us though for some bucks and experience. If you want to do so, just ask me about a {task} anytime." }, npc, creature) + "You are most welcome to keep on killing pirates for us though for some bucks and experience. If you want to do so, just ask me about a {task} anytime.", + }, npc, creature) player:setStorageValue(Storage.KillingInTheNameOf.PirateTask, 1) player:addExperience(10000, true) player:addMoney(5000) @@ -186,7 +189,8 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.KillingInTheNameOf.PirateTask) == 2 then npcHandler:say({ "So you went into the leaders' hideout? I hope you were successful and got what you were looking for! Thank you, my friend. Pirates still keep coming here, unfortunately. ...", - "Do you, by chance, would like to kill pirates again for us?" }, npc, creature) + "Do you, by chance, would like to kill pirates again for us?", + }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.KillingInTheNameOf.PirateTask) == 3 then npcHandler:say("Do you, by chance, would like to kill pirates again for us?", npc, creature) diff --git a/data-otservbr-global/npc/razan.lua b/data-otservbr-global/npc/razan.lua index e292a9c57fe..0882e172f62 100644 --- a/data-otservbr-global/npc/razan.lua +++ b/data-otservbr-global/npc/razan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 9, lookFeet = 58, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,46 +53,46 @@ end local topic = {} local config = { - ['ape fur'] = { + ["ape fur"] = { itemId = 5883, count = 100, storageValue = 1, text = { - 'Have you really managed to fulfil the task and brought me 100 pieces of ape fur?', - 'Only ape fur is good enough to touch the feet of our Caliph.', - 'Ahhh, this softness! I\'m impressed, |PLAYERNAME|. You\'re on the best way to earn that turban. Now, please retrieve 100 fish fins.' - } + "Have you really managed to fulfil the task and brought me 100 pieces of ape fur?", + "Only ape fur is good enough to touch the feet of our Caliph.", + "Ahhh, this softness! I'm impressed, |PLAYERNAME|. You're on the best way to earn that turban. Now, please retrieve 100 fish fins.", + }, }, - ['fish fins'] = { + ["fish fins"] = { itemId = 5895, count = 100, storageValue = 2, text = { - 'Were you able to discover the undersea race and retrieved 100 fish fins?', - 'I really wonder what the explorer society is up to. Actually I have no idea how they managed to dive unterwater.', - 'I never thought you\'d make it, |PLAYERNAME|. Now we only need two enchanted chicken wings to start our waterwalking test!' - } + "Were you able to discover the undersea race and retrieved 100 fish fins?", + "I really wonder what the explorer society is up to. Actually I have no idea how they managed to dive unterwater.", + "I never thought you'd make it, |PLAYERNAME|. Now we only need two enchanted chicken wings to start our waterwalking test!", + }, }, - ['enchanted chicken wings'] = { + ["enchanted chicken wings"] = { itemId = 5891, count = 2, storageValue = 3, text = { - 'Were you able to get hold of two enchanted chicken wings?', - 'Enchanted chicken wings are actually used to make boots of haste, so they could be magically extracted again. Djinns are said to be good at that.', - 'Great, thank you very much. Just bring me 100 pieces of blue cloth now and I will happily show you how to make a turban.' - } + "Were you able to get hold of two enchanted chicken wings?", + "Enchanted chicken wings are actually used to make boots of haste, so they could be magically extracted again. Djinns are said to be good at that.", + "Great, thank you very much. Just bring me 100 pieces of blue cloth now and I will happily show you how to make a turban.", + }, }, - ['blue cloth'] = { + ["blue cloth"] = { itemId = 5912, count = 100, storageValue = 4, text = { - 'Ah, have you brought the 100 pieces of blue cloth?', - 'It\'s a great material for turbans.', - 'Ah! Congratulations - even if you are not a true weaponmaster, you surely deserve to wear this turban. Here, I\'ll tie it for you.' - } - } + "Ah, have you brought the 100 pieces of blue cloth?", + "It's a great material for turbans.", + "Ah! Congratulations - even if you are not a true weaponmaster, you surely deserve to wear this turban. Here, I'll tie it for you.", + }, + }, } local function creatureSayCallback(npc, creature, type, message) @@ -103,17 +103,16 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'outfit') then - npcHandler:say(player:getSex() == PLAYERSEX_FEMALE and 'My turban? I know something better for a pretty girl like you. Why don\'t you go talk to Miraia?' or 'My turban? Eh no, you can\'t have it. Only oriental weaponmasters may wear it after having completed a difficult task.', npc, creature) - elseif MsgContains(message, 'task') then + if MsgContains(message, "outfit") then + npcHandler:say(player:getSex() == PLAYERSEX_FEMALE and "My turban? I know something better for a pretty girl like you. Why don't you go talk to Miraia?" or "My turban? Eh no, you can't have it. Only oriental weaponmasters may wear it after having completed a difficult task.", npc, creature) + elseif MsgContains(message, "task") then if player:getSex() == PLAYERSEX_FEMALE then - npcHandler:say('I really don\'t want to make girls work for me. If you are looking for a job, ask Miraia.', npc, creature) + npcHandler:say("I really don't want to make girls work for me. If you are looking for a job, ask Miraia.", npc, creature) return true end if player:getStorageValue(Storage.OutfitQuest.secondOrientalAddon) < 1 then - npcHandler:say('You mean, you would like to prove that you deserve to wear such a turban?', npc, creature) + npcHandler:say("You mean, you would like to prove that you deserve to wear such a turban?", npc, creature) npcHandler:setTopic(playerId, 1) end elseif config[message] and npcHandler:getTopic(playerId) == 0 then @@ -124,15 +123,15 @@ local function creatureSayCallback(npc, creature, type, message) else npcHandler:say(config[message].text[2], npc, creature) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - 'Alright, then listen to the following requirements. We are currently in dire need of ape fur since the Caliph has requested a new bathroom carpet. ...', - 'Thus, please bring me 100 pieces of ape fur. Secondly, it came to our ears that the explorer society has discovered a new undersea race of fishmen. ...', - 'Their fins are said to allow humans to walk on water! Please bring us 100 of these fish fin. ...', - 'Third, if the plan of walking on water should fail, we need enchanted chicken wings to prevent the testers from drowning. Please bring me two. ...', - 'Last but not least, just drop by with 100 pieces of blue cloth and I will happily show you how to make a turban. ...', - 'Did you understand everything I told you and are willing to handle this task?' + "Alright, then listen to the following requirements. We are currently in dire need of ape fur since the Caliph has requested a new bathroom carpet. ...", + "Thus, please bring me 100 pieces of ape fur. Secondly, it came to our ears that the explorer society has discovered a new undersea race of fishmen. ...", + "Their fins are said to allow humans to walk on water! Please bring us 100 of these fish fin. ...", + "Third, if the plan of walking on water should fail, we need enchanted chicken wings to prevent the testers from drowning. Please bring me two. ...", + "Last but not least, just drop by with 100 pieces of blue cloth and I will happily show you how to make a turban. ...", + "Did you understand everything I told you and are willing to handle this task?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then @@ -140,12 +139,12 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.DefaultStart, 1) end player:setStorageValue(Storage.OutfitQuest.secondOrientalAddon, 1) - npcHandler:say('Excellent! Come back to me once you have collected 100 pieces of ape fur.', npc, creature) + npcHandler:say("Excellent! Come back to me once you have collected 100 pieces of ape fur.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then local targetMessage = config[topic[playerId]] if not player:removeItem(targetMessage.itemId, targetMessage.count) then - npcHandler:say('That is a shameless lie.', npc, creature) + npcHandler:say("That is a shameless lie.", npc, creature) npcHandler:setTopic(playerId, 0) return true end @@ -159,8 +158,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say(targetMessage.text[3], npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) ~= 0 then - npcHandler:say('What a pity.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) ~= 0 then + npcHandler:say("What a pity.", npc, creature) npcHandler:setTopic(playerId, 0) end @@ -172,8 +171,8 @@ local function onReleaseFocus(npc, creature) topic[playerId] = nil end -npcHandler:setMessage(MESSAGE_GREET, 'Greetings |PLAYERNAME|. What leads you to me?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Daraman\'s blessings.') +npcHandler:setMessage(MESSAGE_GREET, "Greetings |PLAYERNAME|. What leads you to me?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Daraman's blessings.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/rebel.lua b/data-otservbr-global/npc/rebel.lua index df722569b9c..7d310082948 100644 --- a/data-otservbr-global/npc/rebel.lua +++ b/data-otservbr-global/npc/rebel.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 0, lookBody = 0, lookLegs = 0, - lookFeet = 0 + lookFeet = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/red_lilly.lua b/data-otservbr-global/npc/red_lilly.lua index 38cd767f546..6db25328893 100644 --- a/data-otservbr-global/npc/red_lilly.lua +++ b/data-otservbr-global/npc/red_lilly.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 28, lookFeet = 47, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Come visit my little pawnshop! General equipment and such. Don't miss it!" } + { text = "Come visit my little pawnshop! General equipment and such. Don't miss it!" }, } local keywordHandler = KeywordHandler:new() @@ -88,47 +88,48 @@ npcConfig.shop = { { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "waterskin of water", clientId = 2901, buy = 10, count = 1 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- Basic -keywordHandler:addKeyword({ 'charlotta' }, StdModule.say, { npcHandler = npcHandler, text = "Just between you and me hun, that woman is a witch. Love potions, poison, voodoo dolls to torture your neighbour. You name it, she got it." }) -keywordHandler:addKeyword({ 'cult' }, StdModule.say, { npcHandler = npcHandler, text = "Uh! There are ... rumours, you know? About bloody rituals and gruesome curses ... better don't talk aloud about such issues." }) -keywordHandler:addKeyword({ 'djinn' }, StdModule.say, { npcHandler = npcHandler, text = "Kshh!! No talks about ... the magic folk here ... This might draw their attention." }) -keywordHandler:addKeyword({ 'eleonore' }, StdModule.say, { npcHandler = npcHandler, text = "Hard to imagine that this fat man has such a pretty daughter." }) -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { npcHandler = npcHandler, text = "Don't mention HIM in my house you fool. You call evil and mayhem upon us." }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = "I am not dealing with food." }) -keywordHandler:addKeyword({ 'governor' }, StdModule.say, { npcHandler = npcHandler, text = "I won't say anything bad about such a high-born person. That's why I remain silent hun ." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I run this little pawnshop, hun, but I think you knew that already." }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = "What interest could a king have in this little settlement? If a king cares about us, there must be something important behind all this." }) -keywordHandler:addKeyword({ 'liberty bay' }, StdModule.say, { npcHandler = npcHandler, text = "Liberty comes, liberty goes, only the bay stays. Hehe." }) -keywordHandler:addKeyword({ 'light' }, StdModule.say, { npcHandler = npcHandler, text = "I sell torches, candelabra, and oil." }) - -keywordHandler:addKeyword({ 'loveless' }, StdModule.say, { npcHandler = npcHandler, text = "That guy is a shrewd trader, sweetie. I bet even I could learn a thing or two from him." }) -keywordHandler:addAliasKeyword({ 'theodore' }) - -keywordHandler:addKeyword({ 'offer' }, StdModule.say, { npcHandler = npcHandler, text = "I have shovels, picks, scythes, bags, ropes, backpacks, plates, scrolls, watches, some lightsources, and other stuff. Just ask me for a {trade}." }) -keywordHandler:addAliasKeyword({ 'buy' }) -keywordHandler:addAliasKeyword({ 'goods' }) -keywordHandler:addAliasKeyword({ 'sell' }) -keywordHandler:addAliasKeyword({ 'equipment' }) -keywordHandler:addAliasKeyword({ 'stuff' }) -keywordHandler:addAliasKeyword({ 'ware' }) - -keywordHandler:addKeyword({ 'pirate' }, StdModule.say, { npcHandler = npcHandler, text = "Mostly, pirates are bad for business. But sometimes, they are good for business." }) -keywordHandler:addKeyword({ 'plantations' }, StdModule.say, { npcHandler = npcHandler, text = "Sadly the workers have hardly enough money to buy something to eat and to drink. That is bad also for my business." }) +keywordHandler:addKeyword({ "charlotta" }, StdModule.say, { npcHandler = npcHandler, text = "Just between you and me hun, that woman is a witch. Love potions, poison, voodoo dolls to torture your neighbour. You name it, she got it." }) +keywordHandler:addKeyword({ "cult" }, StdModule.say, { npcHandler = npcHandler, text = "Uh! There are ... rumours, you know? About bloody rituals and gruesome curses ... better don't talk aloud about such issues." }) +keywordHandler:addKeyword({ "djinn" }, StdModule.say, { npcHandler = npcHandler, text = "Kshh!! No talks about ... the magic folk here ... This might draw their attention." }) +keywordHandler:addKeyword({ "eleonore" }, StdModule.say, { npcHandler = npcHandler, text = "Hard to imagine that this fat man has such a pretty daughter." }) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, text = "Don't mention HIM in my house you fool. You call evil and mayhem upon us." }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "I am not dealing with food." }) +keywordHandler:addKeyword({ "governor" }, StdModule.say, { npcHandler = npcHandler, text = "I won't say anything bad about such a high-born person. That's why I remain silent hun ." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I run this little pawnshop, hun, but I think you knew that already." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "What interest could a king have in this little settlement? If a king cares about us, there must be something important behind all this." }) +keywordHandler:addKeyword({ "liberty bay" }, StdModule.say, { npcHandler = npcHandler, text = "Liberty comes, liberty goes, only the bay stays. Hehe." }) +keywordHandler:addKeyword({ "light" }, StdModule.say, { npcHandler = npcHandler, text = "I sell torches, candelabra, and oil." }) + +keywordHandler:addKeyword({ "loveless" }, StdModule.say, { npcHandler = npcHandler, text = "That guy is a shrewd trader, sweetie. I bet even I could learn a thing or two from him." }) +keywordHandler:addAliasKeyword({ "theodore" }) + +keywordHandler:addKeyword({ "offer" }, StdModule.say, { npcHandler = npcHandler, text = "I have shovels, picks, scythes, bags, ropes, backpacks, plates, scrolls, watches, some lightsources, and other stuff. Just ask me for a {trade}." }) +keywordHandler:addAliasKeyword({ "buy" }) +keywordHandler:addAliasKeyword({ "goods" }) +keywordHandler:addAliasKeyword({ "sell" }) +keywordHandler:addAliasKeyword({ "equipment" }) +keywordHandler:addAliasKeyword({ "stuff" }) +keywordHandler:addAliasKeyword({ "ware" }) + +keywordHandler:addKeyword({ "pirate" }, StdModule.say, { npcHandler = npcHandler, text = "Mostly, pirates are bad for business. But sometimes, they are good for business." }) +keywordHandler:addKeyword({ "plantations" }, StdModule.say, { npcHandler = npcHandler, text = "Sadly the workers have hardly enough money to buy something to eat and to drink. That is bad also for my business." }) keywordHandler:addKeyword({ "quara" }, StdModule.say, { npcHandler = npcHandler, text = { "The quara are the curse of the sea. Everybody that dares to enrage the sea spirits has to fear their vengeance. They come at night to kidnap people who forgot their lucky charms at home ...", - "Sometimes those evil beings take the most naughty children to raise them as their own underwater." } + "Sometimes those evil beings take the most naughty children to raise them as their own underwater.", + }, }) -keywordHandler:addKeyword({ 'rum' }, StdModule.say, { npcHandler = npcHandler, text = "Ah, there is little in the world that comes close to the taste of rum." }) -keywordHandler:addKeyword({ 'striker' }, StdModule.say, { npcHandler = npcHandler, text = "I heard there is a fine bounty on his head. Would be a shame though to lose such a handsome man to the executioner ." }) -keywordHandler:addKeyword({ 'sugar' }, StdModule.say, { npcHandler = npcHandler, text = "Sugar lets the money flow. We depend heavily on it." }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = "Thais might be a splendid town, but this is of no use to us here. The situation in our town gets worse with every ship full of foreigners that arrives here." }) -keywordHandler:addKeyword({ 'venore' }, StdModule.say, { npcHandler = npcHandler, text = "I heard Venore will soon acquire several trade monopolies that will grant them wealth for centuries." }) -keywordHandler:addKeyword({ 'voodoo' }, StdModule.say, { npcHandler = npcHandler, text = "Well, there are several people around who know this or that about voodoo and not all of them are up to something good. Just buy some lucky charms from that old hag Charlotta to be on the safe side." }) -keywordHandler:addKeyword({ 'wyrmslicer' }, StdModule.say, { npcHandler = npcHandler, text = "A handsome man but a bit too stiff. I think no one has ever had a chance to see him smiling." }) +keywordHandler:addKeyword({ "rum" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, there is little in the world that comes close to the taste of rum." }) +keywordHandler:addKeyword({ "striker" }, StdModule.say, { npcHandler = npcHandler, text = "I heard there is a fine bounty on his head. Would be a shame though to lose such a handsome man to the executioner ." }) +keywordHandler:addKeyword({ "sugar" }, StdModule.say, { npcHandler = npcHandler, text = "Sugar lets the money flow. We depend heavily on it." }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "Thais might be a splendid town, but this is of no use to us here. The situation in our town gets worse with every ship full of foreigners that arrives here." }) +keywordHandler:addKeyword({ "venore" }, StdModule.say, { npcHandler = npcHandler, text = "I heard Venore will soon acquire several trade monopolies that will grant them wealth for centuries." }) +keywordHandler:addKeyword({ "voodoo" }, StdModule.say, { npcHandler = npcHandler, text = "Well, there are several people around who know this or that about voodoo and not all of them are up to something good. Just buy some lucky charms from that old hag Charlotta to be on the safe side." }) +keywordHandler:addKeyword({ "wyrmslicer" }, StdModule.say, { npcHandler = npcHandler, text = "A handsome man but a bit too stiff. I think no one has ever had a chance to see him smiling." }) -- keywordHandler:addKeyword({'vial'}, StdModule.say, {npcHandler = npcHandler, text = "I will pay you 5 gold for every empty vial. Ok?"}) -- keywordHandler:addKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, text = "Hmm, but please keep Tibia litter free."}) -- keywordHandler:addKeyword({'yes'}, StdModule.say, {npcHandler = npcHandler, text = "You don't have any empty vials."}) @@ -144,7 +145,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/redward.lua b/data-otservbr-global/npc/redward.lua index b95f8df79a0..bf717bdbd03 100644 --- a/data-otservbr-global/npc/redward.lua +++ b/data-otservbr-global/npc/redward.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 39, lookLegs = 45, lookFeet = 7, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,7 +55,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -66,7 +66,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/reed.lua b/data-otservbr-global/npc/reed.lua index 847e904604e..08f70a744bf 100644 --- a/data-otservbr-global/npc/reed.lua +++ b/data-otservbr-global/npc/reed.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,25 +58,25 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "report")) then - if (player:getStorageValue(Storage.InServiceofYalahar.Questline) == 10 or player:getStorageValue(Storage.InServiceofYalahar.Questline) == 11) then + if MsgContains(message, "report") then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 10 or player:getStorageValue(Storage.InServiceofYalahar.Questline) == 11 then npcHandler:say("You have NO idea what we have to endure each day .. . ", npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, player:getStorageValue(Storage.InServiceofYalahar.Questline) + 1) player:setStorageValue(Storage.InServiceofYalahar.Mission02, player:getStorageValue(Storage.InServiceofYalahar.Mission02) + 1) -- StorageValue for Questlog "Mission 02: Watching the Watchmen" npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "pass")) then + elseif MsgContains(message, "pass") then npcHandler:say("You can {pass} either to the {Cemetery Quarter} or {Magician Quarter}. Which one will it be?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "cemetery")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "cemetery") then + if npcHandler:getTopic(playerId) == 1 then local destination = Position(32799, 31103, 7) player:teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "magician")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "magician") then + if npcHandler:getTopic(playerId) == 1 then local destination = Position(32804, 31103, 7) player:teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/npc/rehon.lua b/data-otservbr-global/npc/rehon.lua index acc761ce5d7..4744851df00 100644 --- a/data-otservbr-global/npc/rehon.lua +++ b/data-otservbr-global/npc/rehon.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 70 + lookType = 70, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/repenter.lua b/data-otservbr-global/npc/repenter.lua index f27991cb206..cbaf1ddcf35 100644 --- a/data-otservbr-global/npc/repenter.lua +++ b/data-otservbr-global/npc/repenter.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 95, lookBody = 23, lookLegs = 22, - lookFeet = 20 + lookFeet = 20, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/richard.lua b/data-otservbr-global/npc/richard.lua index e79bb16c115..ff8c056b6c0 100644 --- a/data-otservbr-global/npc/richard.lua +++ b/data-otservbr-global/npc/richard.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 41, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { { itemName = "backpack", clientId = 2854, buy = 10, count = 1 }, @@ -40,7 +40,7 @@ npcConfig.shop = { { itemName = "scroll", clientId = 2815, buy = 5, count = 1 }, { itemName = "shovel", clientId = 3457, sell = 2, count = 1 }, { itemName = "torch", clientId = 2920, buy = 2, count = 1 }, - { itemName = "worm", clientId = 3492, buy = 1, count = 1 } + { itemName = "worm", clientId = 3492, buy = 1, count = 1 }, } -- On buy npc shop message @@ -52,8 +52,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcConfig.voices = { interval = 15000, @@ -65,8 +64,8 @@ npcConfig.voices = { { text = "Fresh meat! Durable provisions! Ropes and shovels!" }, { text = "Feeling like a bit of treasure-seeking? \z - Buy a shovel or a pick and investigate likely-looking stone piles and cracks!" - } + Buy a shovel or a pick and investigate likely-looking stone piles and cracks!", + }, } local keywordHandler = KeywordHandler:new() @@ -105,108 +104,85 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "job") then - npcHandler:say( - { - "I was a carpenter, back on Main. Wanted my own little shop. Didn't sit with the old man. \z + npcHandler:say({ + "I was a carpenter, back on Main. Wanted my own little shop. Didn't sit with the old man. \z So I shipped to somewhere else. Terrible storm.", - "Woke up on this island. Had to eat squirrels before the adventurers found me and took me in. End of story." - }, - npc, creature, 10) + "Woke up on this island. Had to eat squirrels before the adventurers found me and took me in. End of story.", + }, npc, creature, 10) npcHandler:setTopic(playerId, 0) elseif MsgContains(message, "rope") then - npcHandler:say( - { - "Only the best quality, I assure you. A rope in need is a friend indeed! Imagine you stumble into a rat \z + npcHandler:say({ + "Only the best quality, I assure you. A rope in need is a friend indeed! Imagine you stumble into a rat \z hole without a rope - heh, your bones will be gnawed clean before someone finds ya!", - "Now, about that rope - ask me for equipment to see my wares. " - }, - npc, creature, 10) + "Now, about that rope - ask me for equipment to see my wares. ", + }, npc, creature, 10) npcHandler:setTopic(playerId, 0) end return true end -keywordHandler:addKeyword({ 'name' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Richard. Just Richard. Lost my surname with my past in that storm. " - } -) -keywordHandler:addKeyword({ 'dawnport' }, StdModule.say, - { - npcHandler = npcHandler, - text = "This lovely island here. Once I didn't have to live off squirrels, it became quite enjoyable. \z - Nasty things though live underground, so take care where you tread and ALWAYS have a rope with you!" - } -) -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, - { - npcHandler = npcHandler, - text = " Never been, mate. Heard it's kinda cute, though." - } -) -keywordHandler:addKeyword({ 'coltrayne' }, StdModule.say, - { - npcHandler = npcHandler, - text = "You know, I really don't want to poke into someone else's private life. \z +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "Richard. Just Richard. Lost my surname with my past in that storm. ", +}) +keywordHandler:addKeyword({ "dawnport" }, StdModule.say, { + npcHandler = npcHandler, + text = "This lovely island here. Once I didn't have to live off squirrels, it became quite enjoyable. \z + Nasty things though live underground, so take care where you tread and ALWAYS have a rope with you!", +}) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { + npcHandler = npcHandler, + text = " Never been, mate. Heard it's kinda cute, though.", +}) +keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, { + npcHandler = npcHandler, + text = "You know, I really don't want to poke into someone else's private life. \z Suffice it to say that everyone has chapters of his life he doesn't want to mention. \z - Judging by Coltrayne's looks, we're looking at a trilogy here." - } -) -keywordHandler:addKeyword({ 'inigo' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Old Inigo was the one who found me, actually, and brought me to the outpost. \z - I was half starved by then. He taught me how to make better traps and how to fish... I owe much to Inigo." - } -) -keywordHandler:addKeyword({ 'garamond' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Can you believe how old he is? He won't say it, \z - but I wouldn't be surprised if he had been around for loooooong time." - } -) -keywordHandler:addKeyword({ 'squirrel' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Don't talk to ME about squirrels! Had to live off them the first days, \z - when they were the only thing to go into my self-made acorn traps. Nasty." - } -) -keywordHandler:addKeyword({ 'mr morris' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Don't know what to make of him. Great researcher in all Dawnport matters, though. \z - Always has a quest or two where he needs help, if you're looking for adventuring work." - } -) -keywordHandler:addKeyword({ 'oressa' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Quiet little lady, her. Knows her way around the isle, looking for herbs and stuff \z - but mostly spends her time in the temple, helping younglings like you choose a vocation." - } -) -keywordHandler:addKeyword({ 'plunderpurse' }, StdModule.say, - { - npcHandler = npcHandler, - text = "You know, on the day that ol' pirate decides to make off with all that gold in the bank, \z + Judging by Coltrayne's looks, we're looking at a trilogy here.", +}) +keywordHandler:addKeyword({ "inigo" }, StdModule.say, { + npcHandler = npcHandler, + text = "Old Inigo was the one who found me, actually, and brought me to the outpost. \z + I was half starved by then. He taught me how to make better traps and how to fish... I owe much to Inigo.", +}) +keywordHandler:addKeyword({ "garamond" }, StdModule.say, { + npcHandler = npcHandler, + text = "Can you believe how old he is? He won't say it, \z + but I wouldn't be surprised if he had been around for loooooong time.", +}) +keywordHandler:addKeyword({ "squirrel" }, StdModule.say, { + npcHandler = npcHandler, + text = "Don't talk to ME about squirrels! Had to live off them the first days, \z + when they were the only thing to go into my self-made acorn traps. Nasty.", +}) +keywordHandler:addKeyword({ "mr morris" }, StdModule.say, { + npcHandler = npcHandler, + text = "Don't know what to make of him. Great researcher in all Dawnport matters, though. \z + Always has a quest or two where he needs help, if you're looking for adventuring work.", +}) +keywordHandler:addKeyword({ "oressa" }, StdModule.say, { + npcHandler = npcHandler, + text = "Quiet little lady, her. Knows her way around the isle, looking for herbs and stuff \z + but mostly spends her time in the temple, helping younglings like you choose a vocation.", +}) +keywordHandler:addKeyword({ "plunderpurse" }, StdModule.say, { + npcHandler = npcHandler, + text = "You know, on the day that ol' pirate decides to make off with all that gold in the bank, \z I'm gonna come with him. Should be much more fun landing on a strange island with some gold \z - to spend on booze and babes! " - } -) -keywordHandler:addKeyword({ 'hamish' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Tries to act tough, but he's quite a witty and decent bloke who wouldn't hurt a fly. \z - We enjoy a good laugh together in the evenings." - } -) + to spend on booze and babes! ", +}) +keywordHandler:addKeyword({ "hamish" }, StdModule.say, { + npcHandler = npcHandler, + text = "Tries to act tough, but he's quite a witty and decent bloke who wouldn't hurt a fly. \z + We enjoy a good laugh together in the evenings.", +}) npcHandler:setMessage(MESSAGE_GREET, "Hello there, mate. Here for a {trade}? My stock's just been refilled.") -npcHandler:setMessage(MESSAGE_SENDTRADE, "Of course, just browse through my wares. \z - You can also have a look at food or {equipment} only.") +npcHandler:setMessage( + MESSAGE_SENDTRADE, + "Of course, just browse through my wares. \z + You can also have a look at food or {equipment} only." +) npcHandler:setMessage(MESSAGE_FAREWELL, "Have fun!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/riddler.lua b/data-otservbr-global/npc/riddler.lua index 2e48f6843c1..6f883e03483 100644 --- a/data-otservbr-global/npc/riddler.lua +++ b/data-otservbr-global/npc/riddler.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 48 + lookType = 48, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,19 +53,26 @@ local function creatureSayCallback(npc, creature, type, message) return false end - local storage = Storage.Quest.U7_24.TheParadoxTower if MsgContains(message, "test") then npcHandler:say("Death awaits those who fail the test of the three seals! Do you really want me to test you?", npc, creature) npcHandler:setTopic(playerId, 1) elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 then - npcHandler:say("FOOL! Now you're doomed! But well ... \z + npcHandler:say( + "FOOL! Now you're doomed! But well ... \z So be it! Let's start out with the Seal of Knowledge and the first question: \z - What name did the necromant king choose for himself?", npc, creature) + What name did the necromant king choose for himself?", + npc, + creature + ) npcHandler:setTopic(playerId, 2) elseif MsgContains(message, "goshnar") and npcHandler:getTopic(playerId) == 2 then - npcHandler:say("HOHO! You have learned your lesson well. \z - Question number two then: Who or what is the feared Hugo?", npc, creature) + npcHandler:say( + "HOHO! You have learned your lesson well. \z + Question number two then: Who or what is the feared Hugo?", + npc, + creature + ) npcHandler:setTopic(playerId, 3) elseif MsgContains(message, "demonbunny") and npcHandler:getTopic(playerId) == 3 then if player:getStorageValue(storage.TheFearedHugo) == 4 then @@ -85,8 +92,12 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("That was an easy one. Let's try the second: If you name it, you break it.", npc, creature) npcHandler:setTopic(playerId, 8) elseif MsgContains(message, "silence") and npcHandler:getTopic(playerId) == 8 then - npcHandler:say("Hm. I bet you think you're smart. All right. \z - How about this: What does everybody want to become but nobody to be?", npc, creature) + npcHandler:say( + "Hm. I bet you think you're smart. All right. \z + How about this: What does everybody want to become but nobody to be?", + npc, + creature + ) npcHandler:setTopic(playerId, 9) elseif MsgContains(message, "old") and npcHandler:getTopic(playerId) == 9 then npcHandler:say("ARGH! You did it again! Well all right. Do you wish to break the Seal of Madness?", npc, creature) @@ -98,12 +109,20 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(storage.FavoriteColour) < 1 then player:setStorageValue(storage.FavoriteColour, 1) end - npcHandler:say("UHM UH OH ... How could you guess that? Are you mad??? All right. \z - Penultimate question: What is the opposite?", npc, creature) + npcHandler:say( + "UHM UH OH ... How could you guess that? Are you mad??? All right. \z + Penultimate question: What is the opposite?", + npc, + creature + ) npcHandler:setTopic(playerId, 12) elseif MsgContains(message, "none") and npcHandler:getTopic(playerId) == 12 then - npcHandler:say("NO! NO! NO! That can't be true. You're not only mad, you are a complete idiot! \z - Ah well. Here is the last question: What is 1 plus 1?", npc, creature) + npcHandler:say( + "NO! NO! NO! That can't be true. You're not only mad, you are a complete idiot! \z + Ah well. Here is the last question: What is 1 plus 1?", + npc, + creature + ) npcHandler:setTopic(playerId, 13) elseif MsgContains(message, "1") then if npcHandler:getTopic(playerId) == 13 then diff --git a/data-otservbr-global/npc/robert.lua b/data-otservbr-global/npc/robert.lua index 4f1ba4ba60f..b4367eb6381 100644 --- a/data-otservbr-global/npc/robert.lua +++ b/data-otservbr-global/npc/robert.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 19, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -153,7 +153,7 @@ npcConfig.shop = { { itemName = "viking shield", clientId = 3431, buy = 260 }, { itemName = "vortex bolt", clientId = 14252, buy = 6 }, { itemName = "war hammer", clientId = 3279, buy = 10000 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -164,7 +164,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/robin.lua b/data-otservbr-global/npc/robin.lua index 2848346d86f..367ba918ce2 100644 --- a/data-otservbr-global/npc/robin.lua +++ b/data-otservbr-global/npc/robin.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 118, lookLegs = 118, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/robson.lua b/data-otservbr-global/npc/robson.lua index 3f56ac12de2..4dc1c69ce59 100644 --- a/data-otservbr-global/npc/robson.lua +++ b/data-otservbr-global/npc/robson.lua @@ -11,18 +11,18 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 66 + lookType = 66, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = '' }, - { text = 'Just great. Getting stranded on a remote underground isle was not that bad but now I\'m becoming a tourist attraction!' } + { text = "" }, + { text = "Just great. Getting stranded on a remote underground isle was not that bad but now I'm becoming a tourist attraction!" }, } local keywordHandler = KeywordHandler:new() @@ -60,38 +60,38 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'parcel') then - npcHandler:say('Do you want to buy a parcel for 15 gold?', npc, creature) + if MsgContains(message, "parcel") then + npcHandler:say("Do you want to buy a parcel for 15 gold?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'label') then - npcHandler:say('Do you want to buy a label for 1 gold?', npc, creature) + elseif MsgContains(message, "label") then + npcHandler:say("Do you want to buy a label for 1 gold?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then local player = Player(creature) if npcHandler:getTopic(playerId) == 1 then if not player:removeMoneyBank(15) then - npcHandler:say('Sorry, that\'s only dust in your purse.', npc, creature) + npcHandler:say("Sorry, that's only dust in your purse.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:addItem(3503, 1) - npcHandler:say('Fine.', npc, creature) + npcHandler:say("Fine.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then if not player:removeMoneyBank(1) then - npcHandler:say('Sorry, that\'s only dust in your purse.', npc, creature) + npcHandler:say("Sorry, that's only dust in your purse.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:addItem(3507, 1) - npcHandler:say('Fine.', npc, creature) + npcHandler:say("Fine.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if table.contains({ 1, 2 }, npcHandler:getTopic(playerId)) then - npcHandler:say('I knew I would be stuck with that stuff.', npc, creature) + npcHandler:say("I knew I would be stuck with that stuff.", npc, creature) npcHandler:setTopic(playerId, 0) end end diff --git a/data-otservbr-global/npc/rock_in_a_hard_place.lua b/data-otservbr-global/npc/rock_in_a_hard_place.lua index 93e263e020c..29c36f10442 100644 --- a/data-otservbr-global/npc/rock_in_a_hard_place.lua +++ b/data-otservbr-global/npc/rock_in_a_hard_place.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 13424 + lookTypeEx = 13424, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -251,7 +251,7 @@ npcConfig.shop = { { itemName = "wild growth rune", clientId = 3156, buy = 160 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, { itemName = "wooden shield", clientId = 3412, buy = 15, sell = 5 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -262,7 +262,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/rock_steady.lua b/data-otservbr-global/npc/rock_steady.lua index 2ca4af96e0c..761c75a2549 100644 --- a/data-otservbr-global/npc/rock_steady.lua +++ b/data-otservbr-global/npc/rock_steady.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 13424 + lookTypeEx = 13424, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,7 +53,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "addon") or MsgContains(message, "help") then if player:getStorageValue(72326) < 1 then npcHandler:say("If you want anything, you should talk to Old Rock Boy over there. I do {collect} stuff, though. So just ask if you're interested in helping me.", npc, creature) @@ -62,15 +61,11 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "collect") then if player:getStorageValue(72326) == 1 then - npcHandler:say( - { - "I collect everything that reflects light in strange ways. However, I am bored by my collection. And there wasn't anything new to add for years. ...", - "I like pearls for example - but I have already enough. I also like shells - but I can't even count how many I already own. ...", - "If you find anything of REAL VALUE - bring it to me. I will reward you well. You don't already have something for me by chance?" - }, - npc, - creature - ) + npcHandler:say({ + "I collect everything that reflects light in strange ways. However, I am bored by my collection. And there wasn't anything new to add for years. ...", + "I like pearls for example - but I have already enough. I also like shells - but I can't even count how many I already own. ...", + "If you find anything of REAL VALUE - bring it to me. I will reward you well. You don't already have something for me by chance?", + }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(72326) == 2 then npcHandler:say("Have you got anything for me today?", npc, creature) @@ -79,15 +74,11 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Have you got anything for me today?", npc, creature) npcHandler:setTopic(playerId, 3) elseif player:getStorageValue(72326) == 4 and player:removeItem(14021, 1) then - npcHandler:say( - { - "Have you got anything... what? You want what? A reward? HAHAHAHAAAA!! ...", - "No I'm just teasing you. I'm really happy about my collection now. ...", - "Well, I found some kind of weapon a long time ago. I believe it may be especially helpful underwater as it is from the deep folk. In any case it is of more use for you than it would be for me." - }, - npc, - creature - ) + npcHandler:say({ + "Have you got anything... what? You want what? A reward? HAHAHAHAAAA!! ...", + "No I'm just teasing you. I'm really happy about my collection now. ...", + "Well, I found some kind of weapon a long time ago. I believe it may be especially helpful underwater as it is from the deep folk. In any case it is of more use for you than it would be for me.", + }, npc, creature) player:addOutfitAddon(464, 1) player:addOutfitAddon(463, 1) player:setStorageValue(72326, 5) diff --git a/data-otservbr-global/npc/rock_with_a_soft_spot.lua b/data-otservbr-global/npc/rock_with_a_soft_spot.lua index 1447187b8ba..2709608d394 100644 --- a/data-otservbr-global/npc/rock_with_a_soft_spot.lua +++ b/data-otservbr-global/npc/rock_with_a_soft_spot.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 13422 + lookTypeEx = 13422, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -46,86 +46,103 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 6 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 6 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.RockWithASoftSpot) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.RockWithASoftSpot) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.RockWithASoftSpot, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, this is the {Gray Beach temple}, |PLAYERNAME|. Whether you are wounded, poisoned - or wait, don\'t tell me - yes, this is probably a case of being more emotionally hurt, I will do my best to {heal} you.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Only the best for you.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Goodbye then, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, this is the {Gray Beach temple}, |PLAYERNAME|. Whether you are wounded, poisoned - or wait, don't tell me - yes, this is probably a case of being more emotionally hurt, I will do my best to {heal} you.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Only the best for you.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Goodbye then, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/roderick.lua b/data-otservbr-global/npc/roderick.lua index b4ee9bfa962..54648c68e33 100644 --- a/data-otservbr-global/npc/roderick.lua +++ b/data-otservbr-global/npc/roderick.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 109, lookLegs = 109, lookFeet = 19, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/rodney.lua b/data-otservbr-global/npc/rodney.lua index 596f7e38f4b..cf2e5e839d8 100644 --- a/data-otservbr-global/npc/rodney.lua +++ b/data-otservbr-global/npc/rodney.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 100, lookLegs = 116, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,7 +59,7 @@ npcConfig.shop = { { itemName = "plum", clientId = 8011, buy = 3 }, { itemName = "raspberry", clientId = 8012, buy = 1 }, { itemName = "red apple", clientId = 3585, buy = 3 }, - { itemName = "sample of venorean spice", clientId = 8759, buy = 200 } + { itemName = "sample of venorean spice", clientId = 8759, buy = 200 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -70,7 +70,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/roger_the_worker.lua b/data-otservbr-global/npc/roger_the_worker.lua index 2511ee839af..1f4ecdc8bc5 100644 --- a/data-otservbr-global/npc/roger_the_worker.lua +++ b/data-otservbr-global/npc/roger_the_worker.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 77, lookBody = 40, lookLegs = 115, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/rokyn.lua b/data-otservbr-global/npc/rokyn.lua index 4ea4c503612..c3d170090e9 100644 --- a/data-otservbr-global/npc/rokyn.lua +++ b/data-otservbr-global/npc/rokyn.lua @@ -15,17 +15,17 @@ npcConfig.outfit = { lookHead = 58, lookBody = 87, lookLegs = 57, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/romella.lua b/data-otservbr-global/npc/romella.lua index 2d53261e3bb..ac19f2d0c67 100644 --- a/data-otservbr-global/npc/romella.lua +++ b/data-otservbr-global/npc/romella.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 39, lookLegs = 77, lookFeet = 115, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Check out my good and sturdy weapons!" } + { text = "Check out my good and sturdy weapons!" }, } local keywordHandler = KeywordHandler:new() @@ -101,22 +101,22 @@ npcConfig.shop = { { itemName = "sword", clientId = 3264, buy = 85, sell = 25 }, { itemName = "throwing knife", clientId = 3298, buy = 25, sell = 2 }, { itemName = "two handed sword", clientId = 3265, buy = 950, sell = 450 }, - { itemName = "war hammer", clientId = 3279, buy = 10000, sell = 470 } + { itemName = "war hammer", clientId = 3279, buy = 10000, sell = 470 }, } -- Basic -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I am Romella and I will be serving you today." }) -keywordHandler:addAliasKeyword({ 'job' }) - -keywordHandler:addKeyword({ 'weapons' }, StdModule.say, { npcHandler = npcHandler, text = "I have many weapons to offer. If you'd like to see my offers, ask me for a {trade}." }) -keywordHandler:addKeyword({ 'offers' }, StdModule.say, { npcHandler = npcHandler, text = "I sell and buy weapons. If you'd like to see my offers, ask me for a {trade}." }) -keywordHandler:addAliasKeyword({ 'ware' }) - -keywordHandler:addKeyword({ 'army' }, StdModule.say, { npcHandler = npcHandler, text = "Our warehouse is the main supplier of the local garrison." }) -keywordHandler:addKeyword({ 'news' }, StdModule.say, { npcHandler = npcHandler, text = "It says the amazons are looking for a certain magical weapon in this area." }) -keywordHandler:addKeyword({ 'amazons' }, StdModule.say, { npcHandler = npcHandler, text = "I wonder how they finance themselves. I bet they are secretly trading in some strange stuff." }) -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { npcHandler = npcHandler, text = "Make sure to buy some extra weapons before facing that one." }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = "I heard the amazons are after it." }) -keywordHandler:addKeyword({ 'swamps' }, StdModule.say, { npcHandler = npcHandler, text = "Don't go exploring without weapons. Especially you'll need a machete." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am Romella and I will be serving you today." }) +keywordHandler:addAliasKeyword({ "job" }) + +keywordHandler:addKeyword({ "weapons" }, StdModule.say, { npcHandler = npcHandler, text = "I have many weapons to offer. If you'd like to see my offers, ask me for a {trade}." }) +keywordHandler:addKeyword({ "offers" }, StdModule.say, { npcHandler = npcHandler, text = "I sell and buy weapons. If you'd like to see my offers, ask me for a {trade}." }) +keywordHandler:addAliasKeyword({ "ware" }) + +keywordHandler:addKeyword({ "army" }, StdModule.say, { npcHandler = npcHandler, text = "Our warehouse is the main supplier of the local garrison." }) +keywordHandler:addKeyword({ "news" }, StdModule.say, { npcHandler = npcHandler, text = "It says the amazons are looking for a certain magical weapon in this area." }) +keywordHandler:addKeyword({ "amazons" }, StdModule.say, { npcHandler = npcHandler, text = "I wonder how they finance themselves. I bet they are secretly trading in some strange stuff." }) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, text = "Make sure to buy some extra weapons before facing that one." }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "I heard the amazons are after it." }) +keywordHandler:addKeyword({ "swamps" }, StdModule.say, { npcHandler = npcHandler, text = "Don't go exploring without weapons. Especially you'll need a machete." }) npcHandler:setMessage(MESSAGE_GREET, "I welcome thee, |PLAYERNAME|! I suppose you are looking for a trade in fine weapons!") npcHandler:setMessage(MESSAGE_FAREWELL, "Goodbye and please bring more gold next time . I mean, it would be nice to see you again.") -- On buy npc shop message @@ -128,7 +128,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/romir.lua b/data-otservbr-global/npc/romir.lua index f533b6f31f8..e64a7ee0e97 100644 --- a/data-otservbr-global/npc/romir.lua +++ b/data-otservbr-global/npc/romir.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 48, lookLegs = 67, lookFeet = 126, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -112,7 +112,7 @@ npcConfig.shop = { { itemName = "wand of inferno", clientId = 3071, buy = 15000 }, { itemName = "wand of starstorm", clientId = 8092, buy = 18000 }, { itemName = "wand of voodoo", clientId = 8094, buy = 22000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -123,7 +123,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/rose.lua b/data-otservbr-global/npc/rose.lua index 43efd7d37f4..b8227b34f88 100644 --- a/data-otservbr-global/npc/rose.lua +++ b/data-otservbr-global/npc/rose.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 112, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -90,7 +90,7 @@ npcConfig.shop = { { itemName = "god flowers", clientId = 2981, buy = 5 }, { itemName = "honey flower", clientId = 2984, buy = 5 }, { itemName = "indoor plant kit", clientId = 2811, buy = 8 }, - { itemName = "potted flower", clientId = 2985, buy = 5 } + { itemName = "potted flower", clientId = 2985, buy = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -101,7 +101,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/rosemarie.lua b/data-otservbr-global/npc/rosemarie.lua index c3c2548b013..2355c6c9ff3 100644 --- a/data-otservbr-global/npc/rosemarie.lua +++ b/data-otservbr-global/npc/rosemarie.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 119, lookLegs = 102, lookFeet = 82, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/ross.lua b/data-otservbr-global/npc/ross.lua index 098e74fedf5..78b43afaa12 100644 --- a/data-otservbr-global/npc/ross.lua +++ b/data-otservbr-global/npc/ross.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 36, lookLegs = 116, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/roswitha.lua b/data-otservbr-global/npc/roswitha.lua index 57176d043ac..f13d91e7fe4 100644 --- a/data-otservbr-global/npc/roswitha.lua +++ b/data-otservbr-global/npc/roswitha.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 118, lookLegs = 113, lookFeet = 3, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,8 +54,8 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (MsgContains(message, "Harsin")) then - if (player:getStorageValue(Storage.DarkTrails.Mission13) == 1) then + if MsgContains(message, "Harsin") then + if player:getStorageValue(Storage.DarkTrails.Mission13) == 1 then npcHandler:say("I'm sorry, but Harsin no longer lives here. He ordered a local named Quandon to transport all his stuff somewhere. I don't know where he moved, but Quandon should be able to help you with this information.", npc, creature) player:setStorageValue(Storage.DarkTrails.Mission14, 1) player:setStorageValue(Storage.DarkTrails.DoorQuandon, 1) diff --git a/data-otservbr-global/npc/rotem_valos.lua b/data-otservbr-global/npc/rotem_valos.lua index 775f64685d2..67f093d88e4 100644 --- a/data-otservbr-global/npc/rotem_valos.lua +++ b/data-otservbr-global/npc/rotem_valos.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 79, lookFeet = 94, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = ' The world has grown complicated since my youth.' } + { text = " The world has grown complicated since my youth." }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/rottin_wood.lua b/data-otservbr-global/npc/rottin_wood.lua index 4c95bb63e66..b815737c4f3 100644 --- a/data-otservbr-global/npc/rottin_wood.lua +++ b/data-otservbr-global/npc/rottin_wood.lua @@ -16,17 +16,16 @@ npcConfig.outfit = { lookBody = 118, lookLegs = 116, lookFeet = 97, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) - npcType.onAppear = function(npc, creature) npcHandler:onAppear(npc, creature) end @@ -51,44 +50,36 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (MsgContains(message, "mission") or MsgContains(message, "task")) then + if MsgContains(message, "mission") or MsgContains(message, "task") then if (getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03) < 1) and getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Time) <= os.time() then npcHandler:say("Oh, you want some work? You can help us, alright. Did you know that the people of the city think those rabbit feet are actually lucky charms?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03) == 1) then + elseif getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03) == 1 then npcHandler:say("Good to see you back. Now, did you bring us the lucky charms?", npc, creature) npcHandler:setTopic(playerId, 3) elseif getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Time) > os.time() then npcHandler:say("You need wait some hours to take other mission again or you are still on a mission.", npc, creature) ------------------------ FINISH MISSION 01 ------------------------ - elseif (getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03) == 2) then - npcHandler:say( - { - "Of course, of course, there is indeed something you can help us with. Remember that we also have some tasks for you. So, are you ready for another quest to help the men of the forest?", - "There is a problem with one of our deer stands. Right. Well, there are two problems, our deer stands - and some of the walls of the buildings in the camp are broken. ...", - "You know, the guys built all of that themselves. Sure, at first it didn't quite work out as we planned and in the end we had to tear down half the forest - but - it was worth it. ...", - "Still, most of the camp is kind of... broken now. And someone with a good hammer and a steady hand needs to fix that. Or I am afraid we will have to freeze... during the cold evenings... well you know, hard times. ...", - "So what do you say, in for this one?" - }, - npc, - creature - ) + elseif getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03) == 2 then + npcHandler:say({ + "Of course, of course, there is indeed something you can help us with. Remember that we also have some tasks for you. So, are you ready for another quest to help the men of the forest?", + "There is a problem with one of our deer stands. Right. Well, there are two problems, our deer stands - and some of the walls of the buildings in the camp are broken. ...", + "You know, the guys built all of that themselves. Sure, at first it didn't quite work out as we planned and in the end we had to tear down half the forest - but - it was worth it. ...", + "Still, most of the camp is kind of... broken now. And someone with a good hammer and a steady hand needs to fix that. Or I am afraid we will have to freeze... during the cold evenings... well you know, hard times. ...", + "So what do you say, in for this one?", + }, npc, creature) npcHandler:setTopic(playerId, 4) elseif (getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03) == 3) and getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.RottinStart) > 4 then npcHandler:say("Ah there you are. So, did you repair all the broken structures?", npc, creature) npcHandler:setTopic(playerId, 5) ------------------------ FINISH MISSION 02 ------------------------ - elseif (getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03) == 4) then - npcHandler:say( - { - "Oh my good friend, good to see you! Today you will help us with a very important task. Very important indeed. ...", - "You know, a large group of merchants is travelling from Thais to Venore and they are crossing the forest to shorten their way - can you believe it? ...", - "They will enter the forest near our camp which is where you come in - uhm I mean you do want to help us with this, right?" - }, - npc, - creature - ) + elseif getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03) == 4 then + npcHandler:say({ + "Oh my good friend, good to see you! Today you will help us with a very important task. Very important indeed. ...", + "You know, a large group of merchants is travelling from Thais to Venore and they are crossing the forest to shorten their way - can you believe it? ...", + "They will enter the forest near our camp which is where you come in - uhm I mean you do want to help us with this, right?", + }, npc, creature) npcHandler:setTopic(playerId, 6) elseif (getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03) == 5) and getPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Corpse) == 4 then npcHandler:say("You did it!! And I assume you took only what you needed? Heh. No, I know it. Because my men took the rest. Thanks for helping us, you did a very good job. In fact I have a little 'extra' for you here, thanks again.", npc, creature) @@ -107,7 +98,7 @@ local function creatureSayCallback(npc, creature, type, message) [2] = { id = 12260, count = 1, chance = 25 }, } for i = 0, #items do - if (items[i].chance > math.random(1, 100)) then + if items[i].chance > math.random(1, 100) then doPlayerAddItem(creature, items[i].id, items[i].count) ---------------------------------------------------- npcHandler:setTopic(playerId, 0) @@ -115,21 +106,17 @@ local function creatureSayCallback(npc, creature, type, message) end end ------------------------ FINISH MISSION 03 ------------------------ - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say("Good, because that is exactly what you will help us with - getting more 'lucky charms'. If we won't get our hands on new charms in time, we will surely have to starve... during the autumn. That would be a hard time for all of us. So... you in?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif (npcHandler:getTopic(playerId) == 2) then - npcHandler:say( - { - "Fine, now hurry into the woods and find some rabbits. Find them and kill them that is. Use a sharp, thin knife to get the rabbit foot and be careful not to destroy it - no one would buy it in a bad condition after all. ...", - "Once you gathered some rabbit feet, put one of our - handcrafted by the guys - ribbons on each of them. That will make two lucky charms per rabbit. ...", - "We will need at least seven. And seven is a lucky number, don't you think? Heh. ...", - "If you need some more ribbons just come back to me and ask." - }, - npc, - creature - ) + elseif npcHandler:getTopic(playerId) == 2 then + npcHandler:say({ + "Fine, now hurry into the woods and find some rabbits. Find them and kill them that is. Use a sharp, thin knife to get the rabbit foot and be careful not to destroy it - no one would buy it in a bad condition after all. ...", + "Once you gathered some rabbit feet, put one of our - handcrafted by the guys - ribbons on each of them. That will make two lucky charms per rabbit. ...", + "We will need at least seven. And seven is a lucky number, don't you think? Heh. ...", + "If you need some more ribbons just come back to me and ask.", + }, npc, creature) setPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03, 1) setPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Questline, 1) -- quest log doPlayerAddItem(creature, 12171, 7) @@ -144,51 +131,39 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("You do not have sufficient rabbit's foot.", npc, creature) ------------------------ FINISH MISSION 01 ------------------------ - elseif (npcHandler:getTopic(playerId) == 4) then + elseif npcHandler:getTopic(playerId) == 4 then npcHandler:say("Good, good. Do you remember the old saying? If it ain't broken, it was not made by us. Now, off you go!", npc, creature) setPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03, 3) setPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Questline, 3) -- quest log npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 5) then - npcHandler:say( - { - "Mmmmh, I have to say - good workmanship. No doubt. Yes, the person who made that tool you used to fix all this was a pure professional. Something I can't say about your work, though. ...", - "The walls look as if they will come off in a matter of hours. Oh well, you can always come back and repair this mess, ask me for a task if you want to. Yeah, yeah and here's your reward for today." - }, - npc, - creature - ) + elseif npcHandler:getTopic(playerId) == 5 then + npcHandler:say({ + "Mmmmh, I have to say - good workmanship. No doubt. Yes, the person who made that tool you used to fix all this was a pure professional. Something I can't say about your work, though. ...", + "The walls look as if they will come off in a matter of hours. Oh well, you can always come back and repair this mess, ask me for a task if you want to. Yeah, yeah and here's your reward for today.", + }, npc, creature) setPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03, 4) setPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Questline, 6) -- quest log doPlayerAddItem(creature, 3035, 5) npcHandler:setTopic(playerId, 0) ------------------------ FINISH MISSION 02 ------------------------ - elseif (npcHandler:getTopic(playerId) == 6) then - npcHandler:say( - { - "Right, now before the merchants enter the woods, you will install several traps - nothing too dangerous, just nets and ropes. ...", - "When they enter said area which is located close to our hidden camp, they will be trapped and you can... lighten their heavy burden of valuable goods. ...", - "There is but a tiny little catch - we cannot help you laying these traps. You know, some of the guys became sick recently, we talk about several broken legs here, one almost lost his arm ...", - "So... it's entirely up to you, will you do this or not?" - }, - npc, - creature - ) + elseif npcHandler:getTopic(playerId) == 6 then + npcHandler:say({ + "Right, now before the merchants enter the woods, you will install several traps - nothing too dangerous, just nets and ropes. ...", + "When they enter said area which is located close to our hidden camp, they will be trapped and you can... lighten their heavy burden of valuable goods. ...", + "There is but a tiny little catch - we cannot help you laying these traps. You know, some of the guys became sick recently, we talk about several broken legs here, one almost lost his arm ...", + "So... it's entirely up to you, will you do this or not?", + }, npc, creature) npcHandler:setTopic(playerId, 7) - elseif (npcHandler:getTopic(playerId) == 7) then - npcHandler:say( - { - "Alright very good. Now the only thing you need to do is taking these traps and moving out to the area I have marked on your map where you need to place them. ...", - "Once you did that go to the large high seat near the camp and watch for the travelling merchants. ...", - "Once all of them are trapped in the nets, you can go down and gather anything of value you can find. But only take what we... you really need - around 100 gold should be enough for any man to take. ...", - "We have manners after all, haven't we. ...", - "My men will take their share of course and... help you relieve the merchants of any valuables. ...", - "You're done if you get at least... let's say 5 of these fools. Return to me and you will be rewarded. ...", - "Off you go and - good hunt, heh." - }, - npc, - creature - ) + elseif npcHandler:getTopic(playerId) == 7 then + npcHandler:say({ + "Alright very good. Now the only thing you need to do is taking these traps and moving out to the area I have marked on your map where you need to place them. ...", + "Once you did that go to the large high seat near the camp and watch for the travelling merchants. ...", + "Once all of them are trapped in the nets, you can go down and gather anything of value you can find. But only take what we... you really need - around 100 gold should be enough for any man to take. ...", + "We have manners after all, haven't we. ...", + "My men will take their share of course and... help you relieve the merchants of any valuables. ...", + "You're done if you get at least... let's say 5 of these fools. Return to me and you will be rewarded. ...", + "Off you go and - good hunt, heh.", + }, npc, creature) doPlayerAddItem(creature, 12186, 5) setPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Mission03, 5) setPlayerStorageValue(creature, Storage.RottinWoodAndMaried.Questline, 5) -- quest log diff --git a/data-otservbr-global/npc/roughington.lua b/data-otservbr-global/npc/roughington.lua index 4f52d3d2daf..a715a2a68cf 100644 --- a/data-otservbr-global/npc/roughington.lua +++ b/data-otservbr-global/npc/roughington.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 99, lookFeet = 57, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/rowenna.lua b/data-otservbr-global/npc/rowenna.lua index e3399faf043..37d343cca7d 100644 --- a/data-otservbr-global/npc/rowenna.lua +++ b/data-otservbr-global/npc/rowenna.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 76, lookFeet = 38, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Selling and buying fine weapons!' } + { text = "Selling and buying fine weapons!" }, } local keywordHandler = KeywordHandler:new() @@ -102,7 +102,7 @@ npcConfig.shop = { { itemName = "sword", clientId = 3264, buy = 85 }, { itemName = "throwing knife", clientId = 3298, buy = 25 }, { itemName = "two handed sword", clientId = 3265, buy = 950 }, - { itemName = "war hammer", clientId = 3279, buy = 10000 } + { itemName = "war hammer", clientId = 3279, buy = 10000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -113,7 +113,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/rudolph.lua b/data-otservbr-global/npc/rudolph.lua index f4aaffa9f91..ee94289686e 100644 --- a/data-otservbr-global/npc/rudolph.lua +++ b/data-otservbr-global/npc/rudolph.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 29, lookLegs = 78, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -66,7 +66,7 @@ npcConfig.shop = { { itemName = "leather legs", clientId = 3559, buy = 10 }, { itemName = "rangers cloak", clientId = 3571, buy = 550 }, { itemName = "sandals", clientId = 3551, buy = 2 }, - { itemName = "scarf", clientId = 3572, buy = 15 } + { itemName = "scarf", clientId = 3572, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -77,7 +77,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/runtel_blackspark.lua b/data-otservbr-global/npc/runtel_blackspark.lua index 68b0499abbb..2ea8e6d3418 100644 --- a/data-otservbr-global/npc/runtel_blackspark.lua +++ b/data-otservbr-global/npc/runtel_blackspark.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 0, lookFeet = 94, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -97,7 +97,7 @@ npcConfig.shop = { { itemName = "ultimate health potion", clientId = 7643, buy = 379 }, { itemName = "ultimate mana potion", clientId = 23373, buy = 438 }, { itemName = "ultimate spirit potion", clientId = 23374, buy = 438 }, - { itemName = "wild growth rune", clientId = 3156, buy = 160 } + { itemName = "wild growth rune", clientId = 3156, buy = 160 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -108,7 +108,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/ruprecht.lua b/data-otservbr-global/npc/ruprecht.lua index fd4e726c1f0..bad196ef5f2 100644 --- a/data-otservbr-global/npc/ruprecht.lua +++ b/data-otservbr-global/npc/ruprecht.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 115, lookLegs = 115, lookFeet = 38, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -73,7 +73,7 @@ local itemsTable = { ["orclops santa"] = { itemId = 24394, count = 250 }, ["raccoon santa"] = { itemId = 35692, count = 250 }, ["santa fox"] = { itemId = 27591, count = 250 }, - ["santa leech"] = { itemId = 32746, count = 250 } + ["santa leech"] = { itemId = 32746, count = 250 }, } local function creatureSayCallback(npc, creature, type, message) @@ -84,8 +84,7 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if (MsgContains(message, "offers")) then + if MsgContains(message, "offers") then local text = "I have these offers: " for i, v in pairs(itemsTable) do text = text .. "{" .. i .. "}, " @@ -96,7 +95,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 0 then local table = itemsTable[message] if table then - if (table.itemId ~= 6496) then + if table.itemId ~= 6496 then npcHandler:say("So you want to exchange " .. message .. ", for " .. table.count .. " christmas tokens?", npc, creature) storeTable[playerId] = message npcHandler:setTopic(playerId, 1) @@ -108,8 +107,8 @@ local function creatureSayCallback(npc, creature, type, message) end elseif npcHandler:getTopic(playerId) == 1 then if MsgContains(message, "yes") then - if (tonumber(storeTable[playerId]) == 6526) then - if (player:removeItem(6496, 1)) then + if tonumber(storeTable[playerId]) == 6526 then + if player:removeItem(6496, 1) then npcHandler:say("Thank you, here is your 1 christmas token.", npc, creature) player:addItem(6526, 1) npcHandler:setTopic(playerId, 0) @@ -146,7 +145,7 @@ local function creatureSayCallback(npc, creature, type, message) "And he learned that this way his fortune gave him more joy and pleasure than it ever did when he locked it away. ...", "Over the years he turned it into a game. He hid somewhere to reward those who found him ...", "But once every year, on a very special day which happens to be his curse's anniversary, he goes out and brings presents to the people, and especially to the children ...", - "Well, that is his story ... Nah, that's not a tear in my eye. It's just the wind, you know." + "Well, that is his story ... Nah, that's not a tear in my eye. It's just the wind, you know.", }, npc, creature) end return true diff --git a/data-otservbr-global/npc/saideh.lua b/data-otservbr-global/npc/saideh.lua index 780e96d0920..7b28c754a59 100644 --- a/data-otservbr-global/npc/saideh.lua +++ b/data-otservbr-global/npc/saideh.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 330 + lookType = 330, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -83,7 +83,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/salbra.lua b/data-otservbr-global/npc/salbra.lua index a963ab486af..06462cbf3b2 100644 --- a/data-otservbr-global/npc/salbra.lua +++ b/data-otservbr-global/npc/salbra.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/sam.lua b/data-otservbr-global/npc/sam.lua index 7bbb28b5e5b..35358f712e5 100644 --- a/data-otservbr-global/npc/sam.lua +++ b/data-otservbr-global/npc/sam.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 67, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Hello there, adventurer! Need a deal in weapons or armor? I\'m your man!' } + { text = "Hello there, adventurer! Need a deal in weapons or armor? I'm your man!" }, } local keywordHandler = KeywordHandler:new() @@ -64,15 +64,13 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'adorn') - or MsgContains(message, 'outfit') - or MsgContains(message, 'addon') then + if MsgContains(message, "adorn") or MsgContains(message, "outfit") or MsgContains(message, "addon") then local addonProgress = player:getStorageValue(Storage.OutfitQuest.Knight.AddonHelmet) if addonProgress == 5 then player:setStorageValue(Storage.OutfitQuest.Knight.MissionHelmet, 6) player:setStorageValue(Storage.OutfitQuest.Knight.AddonHelmet, 6) player:setStorageValue(Storage.OutfitQuest.Knight.AddonHelmetTimer, os.time() + 7200) - npcHandler:say('Oh, Gregor sent you? I see. It will be my pleasure to adorn your helmet. Please give me some time to finish it.', npc, creature) + npcHandler:say("Oh, Gregor sent you? I see. It will be my pleasure to adorn your helmet. Please give me some time to finish it.", npc, creature) elseif addonProgress == 6 then if player:getStorageValue(Storage.OutfitQuest.Knight.AddonHelmetTimer) < os.time() then player:setStorageValue(Storage.OutfitQuest.Knight.MissionHelmet, 0) @@ -81,32 +79,31 @@ local function creatureSayCallback(npc, creature, type, message) player:addOutfitAddon(131, 2) player:addOutfitAddon(139, 2) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - npcHandler:say('Just in time, |PLAYERNAME|. Your helmet is finished, I hope you like it.', npc, creature) + npcHandler:say("Just in time, |PLAYERNAME|. Your helmet is finished, I hope you like it.", npc, creature) else - npcHandler:say('Please have some patience, |PLAYERNAME|. Forging is hard work!', npc, creature) + npcHandler:say("Please have some patience, |PLAYERNAME|. Forging is hard work!", npc, creature) end elseif addonProgress == 7 then - npcHandler:say('I think it\'s one of my masterpieces.', npc, creature) + npcHandler:say("I think it's one of my masterpieces.", npc, creature) else - npcHandler:say('Sorry, but without the permission of Gregor I cannot help you with this matter.', npc, creature) + npcHandler:say("Sorry, but without the permission of Gregor I cannot help you with this matter.", npc, creature) end elseif MsgContains(message, "old backpack") or MsgContains(message, "backpack") then if player:getStorageValue(Storage.SamsOldBackpack) < 1 then npcHandler:say("What? Are you telling me you found my old adventurer's backpack that I lost years ago??", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, '2000 steel shields') then - if player:getStorageValue(Storage.WhatAFoolish.Questline) ~= 29 - or player:getStorageValue(Storage.WhatAFoolish.Contract) == 2 then - npcHandler:say('My offers are weapons, armors, helmets, legs, and shields. If you\'d like to see my offers, ask me for a {trade}.', npc, creature) + elseif MsgContains(message, "2000 steel shields") then + if player:getStorageValue(Storage.WhatAFoolish.Questline) ~= 29 or player:getStorageValue(Storage.WhatAFoolish.Contract) == 2 then + npcHandler:say("My offers are weapons, armors, helmets, legs, and shields. If you'd like to see my offers, ask me for a {trade}.", npc, creature) return true end - npcHandler:say('What? You want to buy 2000 steel shields??', npc, creature) + npcHandler:say("What? You want to buy 2000 steel shields??", npc, creature) npcHandler:setTopic(playerId, 2) - elseif MsgContains(message, 'contract') then + elseif MsgContains(message, "contract") then if player:getStorageValue(Storage.WhatAFoolish.Contract) == 0 then - npcHandler:say('Have you signed the contract?', npc, creature) + npcHandler:say("Have you signed the contract?", npc, creature) npcHandler:setTopic(playerId, 4) end elseif MsgContains(message, "yes") then @@ -114,31 +111,31 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeItem(3244, 1) then npcHandler:say({ "Thank you very much! This brings back good old memories! Please, as a reward, travel to Kazordoon and ask my old friend Kroox to provide you a special dwarven armor. ...", - "I will mail him about you immediately. Just tell him, his old buddy Sam is sending you." + "I will mail him about you immediately. Just tell him, his old buddy Sam is sending you.", }, npc, creature) player:setStorageValue(Storage.SamsOldBackpack, 1) - player:addAchievement('Backpack Tourist') + player:addAchievement("Backpack Tourist") else npcHandler:say("You don't have it...", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then - npcHandler:say('I can\'t believe it. Finally I will be rich! I could move to Edron and enjoy my retirement! But ... wait a minute! I will not start working without a contract! Are you willing to sign one?', npc, creature) + npcHandler:say("I can't believe it. Finally I will be rich! I could move to Edron and enjoy my retirement! But ... wait a minute! I will not start working without a contract! Are you willing to sign one?", npc, creature) npcHandler:setTopic(playerId, 3) elseif npcHandler:getTopic(playerId) == 3 then player:addItem(129, 1) player:setStorageValue(Storage.WhatAFoolish.Contract, 1) - npcHandler:say('Fine! Here is the contract. Please sign it. Talk to me about it again when you\'re done.', npc, creature) + npcHandler:say("Fine! Here is the contract. Please sign it. Talk to me about it again when you're done.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 4 then if not player:removeItem(128, 1) then - npcHandler:say('You don\'t have a signed contract.', npc, creature) + npcHandler:say("You don't have a signed contract.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:setStorageValue(Storage.WhatAFoolish.Contract, 2) - npcHandler:say('Excellent! I will start working right away! Now that I am going to be rich, I will take the opportunity to tell some people what I REALLY think about them!', npc, creature) + npcHandler:say("Excellent! I will start working right away! Now that I am going to be rich, I will take the opportunity to tell some people what I REALLY think about them!", npc, creature) npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "no") then @@ -152,7 +149,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am the blacksmith. If you need weapons or armor - just ask me." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the blacksmith. If you need weapons or armor - just ask me." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to my shop, adventurer |PLAYERNAME|! I {trade} with weapons and armor.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye and come again, |PLAYERNAME|.") @@ -236,7 +233,7 @@ npcConfig.shop = { { itemName = "viking helmet", clientId = 3367, buy = 265 }, { itemName = "viking shield", clientId = 3431, buy = 260 }, { itemName = "war hammer", clientId = 3279, buy = 10000 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -247,7 +244,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/samir.lua b/data-otservbr-global/npc/samir.lua index d9106fbf4a9..48d8b7bad70 100644 --- a/data-otservbr-global/npc/samir.lua +++ b/data-otservbr-global/npc/samir.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 59, lookLegs = 114, lookFeet = 114, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/sandomo.lua b/data-otservbr-global/npc/sandomo.lua index 36041267a9f..75d1015233b 100644 --- a/data-otservbr-global/npc/sandomo.lua +++ b/data-otservbr-global/npc/sandomo.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 2, lookFeet = 20, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,7 +54,7 @@ function Player.getInquisitionGold(self) local v = { math.max(0, self:getStorageValue(ROSHAMUUL_MORTAR_THROWN)) * 100, math.max(0, self:getStorageValue(ROSHAMUUL_KILLED_FRAZZLEMAWS)), - math.max(0, self:getStorageValue(ROSHAMUUL_KILLED_SILENCERS)) + math.max(0, self:getStorageValue(ROSHAMUUL_KILLED_SILENCERS)), } return v[1] + v[2] + v[3] end @@ -70,14 +70,14 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "mission") then npcHandler:say({ "First, you will help us rebuilding this wretched {bridge} we cannot cross. We need mortar and there are several types of monsters who try to keep us away from it. ...", - "Then there is this enormous wall in the distance. Once we crossed the bridge, we will have to breach this monument. As I see it, you are working for the Inquisition now, I will hear no objection. You may even earn our gratitude." + "Then there is this enormous wall in the distance. Once we crossed the bridge, we will have to breach this monument. As I see it, you are working for the Inquisition now, I will hear no objection. You may even earn our gratitude.", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif MsgContains(message, "bridge") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Our brother Mortis is constantly working on keeping the bridge intact. We tried some simple wood planks first but it didn't work out that... well. ...", - "What we need is enough {mortar} to actually build a durable traverse. And we will need even more mortar to maintain it as it constantly gets attacked by vile critters." + "What we need is enough {mortar} to actually build a durable traverse. And we will need even more mortar to maintain it as it constantly gets attacked by vile critters.", }, npc, creature) npcHandler:setTopic(playerId, 2) end @@ -88,7 +88,7 @@ local function creatureSayCallback(npc, creature, type, message) "However, the entrances are somewhat... twisted. The entrance we had mapped to a certain cave one day, would lead to a completely different cave on the next. ...", "And even when emerging from one of the caves you never know where you are since its exits are just as deceptive. ...", "Once you gathered some chalk, you should also find gravel on the island. If you have a pick and a bucket, you should be able to collect enough fine gravel to mix some mortar. ...", - "Do not forget to bring some buckets, if you are in short supply, brother Maun will hand some out to you - for a fee of course." + "Do not forget to bring some buckets, if you are in short supply, brother Maun will hand some out to you - for a fee of course.", }, npc, creature) npcHandler:setTopic(playerId, nil) end diff --git a/data-otservbr-global/npc/sandra.lua b/data-otservbr-global/npc/sandra.lua index bd61324e889..71d1eeb4774 100644 --- a/data-otservbr-global/npc/sandra.lua +++ b/data-otservbr-global/npc/sandra.lua @@ -16,18 +16,18 @@ npcConfig.outfit = { lookBody = 95, lookLegs = 125, lookFeet = 57, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, { text = "Great spirit potions as well as health and mana potions in different sizes!" }, - { text = "If you need alchemical fluids like slime and blood, get them here." } + { text = "If you need alchemical fluids like slime and blood, get them here." }, } local keywordHandler = KeywordHandler:new() @@ -67,11 +67,7 @@ local function creatureSayCallback(npc, creature, type, message) if table.contains({ "vial", "ticket", "bonus", "deposit" }, message) then if player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonBelt) < 1 then - npcHandler:say( - "You have " .. - player:getStorageValue(38412) .. - " credits. We have a special offer right now for depositing vials. Are you interested in hearing it?", - npc, creature) + npcHandler:say("You have " .. player:getStorageValue(38412) .. " credits. We have a special offer right now for depositing vials. Are you interested in hearing it?", npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonBelt) >= 1 then npcHandler:say("Would you like to get a lottery ticket instead of the deposit for your vials?", npc, creature) @@ -92,43 +88,44 @@ local function creatureSayCallback(npc, creature, type, message) "What?? How dare you?! I am a sorcerer of the most reknown academy on the face of this world. \ Do you think some lousy pirates could scare me? Get lost! Now! \ I will have no further dealings with the likes of you!", - npc, creature) + npc, + creature + ) player:setStorageValue(Storage.TheShatteredIsles.RaysMission1, 2) npcHandler:setTopic(playerId, 0) end end elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say( - { - "The Edron academy has introduced a bonus system. Each time you deposit 100 vials without \ + npcHandler:say({ + "The Edron academy has introduced a bonus system. Each time you deposit 100 vials without \ claiming the money for it, you will receive a lottery ticket. ...", - "Some of these lottery tickets will grant you a special potion belt accessory, \ + "Some of these lottery tickets will grant you a special potion belt accessory, \ if you bring the ticket to me. ...", - "If you join the bonus system now, I will ask you each time you are bringing back 100 or \ + "If you join the bonus system now, I will ask you each time you are bringing back 100 or \ more vials to me whether you claim your deposit or rather want a lottery ticket. ...", - "Of course, you can leave or join the bonus system at any time by just asking me for the 'bonus'. ...", - "Would you like to join the bonus system now?" - }, - npc, creature) + "Of course, you can leave or join the bonus system at any time by just asking me for the 'bonus'. ...", + "Would you like to join the bonus system now?", + }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say( "Great! I've signed you up for our bonus system. From now on, \ you will have the chance to win the potion belt addon!", - npc, creature) + npc, + creature + ) player:setStorageValue(Storage.OutfitQuest.MageSummoner.AddonBelt, 1) player:setStorageValue(Storage.OutfitQuest.DefaultStart, 1) --this for default start of Outfit and Addon Quests npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then - if player:getStorageValue(38412) >= 100 - or player:removeItem(283, 100) - or player:removeItem(284, 100) - or player:removeItem(285, 100) then + if player:getStorageValue(38412) >= 100 or player:removeItem(283, 100) or player:removeItem(284, 100) or player:removeItem(285, 100) then npcHandler:say( "Alright, thank you very much! Here is your lottery ticket, good luck. \ Would you like to deposit more vials that way?", - npc, creature) + npc, + creature + ) player:setStorageValue(38412, player:getStorageValue(38412) - 100) player:addItem(5957, 1) npcHandler:setTopic(playerId, 0) @@ -136,7 +133,9 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say( "Sorry, but you don't have 100 empty flasks or vials of the SAME kind and thus don't qualify for the lottery. \ Would you like to deposit the vials you have as usual and receive 5 gold per vial?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 4 then @@ -155,7 +154,9 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say( "Finally. You have no idea how difficult it is to keep something secret here. \ And you brought me all the crystal coins I demanded?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 6) end end @@ -163,14 +164,10 @@ local function creatureSayCallback(npc, creature, type, message) end end -keywordHandler:addKeyword( - { "shop" }, - StdModule.say, - { - npcHandler = npcHandler, - text = "I sell potions and fluids. If you'd like to see my offers, ask me for a {trade}." - } -) +keywordHandler:addKeyword({ "shop" }, StdModule.say, { + npcHandler = npcHandler, + text = "I sell potions and fluids. If you'd like to see my offers, ask me for a {trade}.", +}) npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|, welcome to the fluid and potion {shop} of Edron.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|, please come back soon.") @@ -204,7 +201,7 @@ npcConfig.shop = { { itemName = "vial of oil", clientId = 2874, buy = 20, count = 7 }, { itemName = "vial of slime", clientId = 2874, buy = 12, count = 6 }, { itemName = "vial of urine", clientId = 2874, buy = 10, count = 8 }, - { itemName = "vial of water", clientId = 2874, buy = 8, count = 1 } + { itemName = "vial of water", clientId = 2874, buy = 8, count = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -215,7 +212,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/sane_mage.lua b/data-otservbr-global/npc/sane_mage.lua index 5c92864df77..a018221d0cc 100644 --- a/data-otservbr-global/npc/sane_mage.lua +++ b/data-otservbr-global/npc/sane_mage.lua @@ -11,19 +11,19 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 394 + lookType = 394, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Hm? What is the meaning of all this?' }, - { text = 'What have I become? What is slime if it\'s not for everyone?' }, - { text = 'Slime! Everywhere! SLIME TIME! Or... not?' } + { text = "Hm? What is the meaning of all this?" }, + { text = "What have I become? What is slime if it's not for everyone?" }, + { text = "Slime! Everywhere! SLIME TIME! Or... not?" }, } local keywordHandler = KeywordHandler:new() @@ -53,12 +53,12 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I AM THE... I mean... I am - what is a mage, if he is not {mad}? If he isn't... raging? I am... I am just sane. A sane mage." }) -keywordHandler:addKeyword({ 'mad' }, StdModule.say, { npcHandler = npcHandler, text = "I am not mad... I- YES, that's the whole problem, isn't it? What's going on, what's happening to me? I don't even know anymore." }) -keywordHandler:addKeyword({ 'vacation' }, StdModule.say, { npcHandler = npcHandler, text = "Yes, well... I'm taking a break. It will take some time. I don't know how long I just... I want to get away from all this for some time, that's it." }) -keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, text = "Slime is my mission. Is there anything more important? There isn't. To me. Right now at least." }) -keywordHandler:addKeyword({ 'quest' }, StdModule.say, { npcHandler = npcHandler, text = "Slime is my mission. Is there anything more important? There isn't. To me. Right now at least." }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = "You want to help me? HELP me? You? Who... who are you anyway? Ah nevermind." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I AM THE... I mean... I am - what is a mage, if he is not {mad}? If he isn't... raging? I am... I am just sane. A sane mage." }) +keywordHandler:addKeyword({ "mad" }, StdModule.say, { npcHandler = npcHandler, text = "I am not mad... I- YES, that's the whole problem, isn't it? What's going on, what's happening to me? I don't even know anymore." }) +keywordHandler:addKeyword({ "vacation" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, well... I'm taking a break. It will take some time. I don't know how long I just... I want to get away from all this for some time, that's it." }) +keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = "Slime is my mission. Is there anything more important? There isn't. To me. Right now at least." }) +keywordHandler:addKeyword({ "quest" }, StdModule.say, { npcHandler = npcHandler, text = "Slime is my mission. Is there anything more important? There isn't. To me. Right now at least." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "You want to help me? HELP me? You? Who... who are you anyway? Ah nevermind." }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -70,17 +70,17 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "job") then npcHandler:say({ - 'Well I conduct experiments. Viscosity, consistency and overall elegance of {SLIME}. Fungus, I am currently working on a formula for the perfect {slime fungus}.', - 'Not... right now, though. I am currently... on {vacation}. {Vacation}, yes. All my experiments went wrong. WRONG. Everything. I tried everything but still.', - 'It\'s always the same, the {fungus} grows, I am EXCITED and... well... WHAAAAAM! It just EXPLODES! It spreads, covers everything.', - 'At least I have my trusty {servants} helping me to clean up. They do ALL the work. Removing ALL the slime. At least they\'re working as intended. I designed them, you know.', - 'However, sometimes people come and just... DESTROY them! Destroy my work!! Why? Do those people help me removing the slime instead? NO! Not at all.', - 'All they do is ruining my experiments, my perfect testing conditions. It makes me just FURIOUS! And boy do I get FURIOUS, I tell you.' + "Well I conduct experiments. Viscosity, consistency and overall elegance of {SLIME}. Fungus, I am currently working on a formula for the perfect {slime fungus}.", + "Not... right now, though. I am currently... on {vacation}. {Vacation}, yes. All my experiments went wrong. WRONG. Everything. I tried everything but still.", + "It's always the same, the {fungus} grows, I am EXCITED and... well... WHAAAAAM! It just EXPLODES! It spreads, covers everything.", + "At least I have my trusty {servants} helping me to clean up. They do ALL the work. Removing ALL the slime. At least they're working as intended. I designed them, you know.", + "However, sometimes people come and just... DESTROY them! Destroy my work!! Why? Do those people help me removing the slime instead? NO! Not at all.", + "All they do is ruining my experiments, my perfect testing conditions. It makes me just FURIOUS! And boy do I get FURIOUS, I tell you.", }, npc, creature) elseif table.contains({ "slime", "fungus" }, message) then npcHandler:say({ - 'My experiments, my work - not at the moment, however. I\'m on vacation. Trying to get away from it... it\'s all not right. Why... why am I doing this anyway.', - 'NO! I should not talk like that, I just... I shouldn\'t. That\'s not even ME. I... I used to be MAD. A MAD SCIENTIST! THE BEST! THE... the... WORST! A SUPERLATIVE! Ah, nevermind.' + "My experiments, my work - not at the moment, however. I'm on vacation. Trying to get away from it... it's all not right. Why... why am I doing this anyway.", + "NO! I should not talk like that, I just... I shouldn't. That's not even ME. I... I used to be MAD. A MAD SCIENTIST! THE BEST! THE... the... WORST! A SUPERLATIVE! Ah, nevermind.", }, npc, creature) end return true diff --git a/data-otservbr-global/npc/santa_claus.lua b/data-otservbr-global/npc/santa_claus.lua index f75ac65d363..6498113caf5 100644 --- a/data-otservbr-global/npc/santa_claus.lua +++ b/data-otservbr-global/npc/santa_claus.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 0, lookBody = 112, lookLegs = 93, - lookFeet = 95 + lookFeet = 95, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,14 +52,14 @@ local normalItems = { { 3051, 3097, 3098 }, { 10310 }, { 3039 }, - { 3036 } + { 3036 }, } local semiRareItems = { { 3057 }, { 9040 }, { 9058 }, - { 5080 } + { 5080 }, } local rareItems = { @@ -69,7 +69,7 @@ local rareItems = { { 10338 }, { 10339 }, { 6566 }, - { 2993 } + { 2993 }, } local veryRareItems = { @@ -77,19 +77,19 @@ local veryRareItems = { { 3001 }, { 3553 }, { 9604 }, - { 5804 } + { 5804 }, } local function getReward() local rewardTable = {} local random = math.random(100) - if (random <= 90) then + if random <= 90 then rewardTable = normalItems - elseif (random <= 70) then + elseif random <= 70 then rewardTable = semiRareItems - elseif (random <= 30) then + elseif random <= 30 then rewardTable = rareItems - elseif (random <= 10) then + elseif random <= 10 then rewardTable = veryRareItems end @@ -100,9 +100,9 @@ end local function creatureSayCallback(npc, creature, type, message) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or creature - if MsgContains(message, 'present') then + if MsgContains(message, "present") then local player = Player(creature) - if (player:getStorageValue(840293) == 1) then + if player:getStorageValue(840293) == 1 then npcHandler:say("You can't get other present.", npc, creature) return false end @@ -112,8 +112,7 @@ local function creatureSayCallback(npc, creature, type, message) local count = 1 for i = 1, #reward do - if (reward[i] == 2992 or - reward[i] == 3599) then + if reward[i] == 2992 or reward[i] == 3599 then count = 10 end diff --git a/data-otservbr-global/npc/santiago.lua b/data-otservbr-global/npc/santiago.lua index c88c2200d95..a893dd66e86 100644 --- a/data-otservbr-global/npc/santiago.lua +++ b/data-otservbr-global/npc/santiago.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 115, lookLegs = 87, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Evil little beasts... I hope someone helps me fight them.' }, - { text = 'Nasty creepy crawlies!' }, - { text = 'Hey! You over there, could you help me with a little quest? Just say \'hi\' or \'hello\' to talk to me!' }, - { text = 'Don\'t be shy, can\'t hurt to greet me with \'hello\' or \'hi\'!' } + { text = "Evil little beasts... I hope someone helps me fight them." }, + { text = "Nasty creepy crawlies!" }, + { text = "Hey! You over there, could you help me with a little quest? Just say 'hi' or 'hello' to talk to me!" }, + { text = "Don't be shy, can't hurt to greet me with 'hello' or 'hi'!" }, } local keywordHandler = KeywordHandler:new() @@ -59,7 +59,6 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - local storeTalkCid = {} local function greetCallback(npc, creature) local player = Player(creature) @@ -190,7 +189,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif storeTalkCid[playerId] == 7 then npcHandler:say({ "Here, take this fish which I've caught myself. Find it in your inventory, then 'Use' it to eat it. This will slowly refill your health. ...", - "By the way: If your hitpoints are below 150, you will regenerate back to 150 hitpoints after few seconds as long as you are not hungry, outside a protection zone and do not have a battle sign. {Easy}, yes?" + "By the way: If your hitpoints are below 150, you will regenerate back to 150 hitpoints after few seconds as long as you are not hungry, outside a protection zone and do not have a battle sign. {Easy}, yes?", }, npc, creature) player:setStorageValue(Storage.RookgaardTutorialIsland.SantiagoQuestLog, 9) player:addItem(3578, 1) diff --git a/data-otservbr-global/npc/sarina.lua b/data-otservbr-global/npc/sarina.lua index 4f1dde5def2..6a6efece896 100644 --- a/data-otservbr-global/npc/sarina.lua +++ b/data-otservbr-global/npc/sarina.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 72, lookLegs = 95, lookFeet = 96, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'General equipment and all sorts of goods. Visit my store!' } + { text = "General equipment and all sorts of goods. Visit my store!" }, } local keywordHandler = KeywordHandler:new() @@ -118,7 +118,7 @@ npcConfig.shop = { { itemName = "vial of oil", clientId = 2874, buy = 20, count = 7 }, { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -129,7 +129,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/satsu.lua b/data-otservbr-global/npc/satsu.lua index 96e35b15611..74ca8023e76 100644 --- a/data-otservbr-global/npc/satsu.lua +++ b/data-otservbr-global/npc/satsu.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 96, lookLegs = 118, lookFeet = 96, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -62,7 +62,7 @@ npcConfig.shop = { { itemName = "cocktail glass of rum", clientId = 9232, buy = 52, count = 13 }, { itemName = "cocktail glass of tea", clientId = 9232, buy = 52, count = 17 }, { itemName = "cocktail glass of water", clientId = 9232, buy = 52, count = 1 }, - { itemName = "cocktail glass of wine", clientId = 9232, buy = 52, count = 2 } + { itemName = "cocktail glass of wine", clientId = 9232, buy = 52, count = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -73,7 +73,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/scott.lua b/data-otservbr-global/npc/scott.lua index f26710d4132..90ae0c772b2 100644 --- a/data-otservbr-global/npc/scott.lua +++ b/data-otservbr-global/npc/scott.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 77, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Hey there, adventurer! Need a little rest in my inn? Have some food!' } + { text = "Hey there, adventurer! Need a little rest in my inn? Have some food!" }, } local keywordHandler = KeywordHandler:new() @@ -61,7 +61,7 @@ npcConfig.shop = { { itemName = "bread", clientId = 3600, buy = 4 }, { itemName = "cheese", clientId = 3607, buy = 6 }, { itemName = "ham", clientId = 3582, buy = 8 }, - { itemName = "meat", clientId = 3577, buy = 5 } + { itemName = "meat", clientId = 3577, buy = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -72,7 +72,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/scott_the_scout.lua b/data-otservbr-global/npc/scott_the_scout.lua index d531d37a4c1..3839a921cc2 100644 --- a/data-otservbr-global/npc/scott_the_scout.lua +++ b/data-otservbr-global/npc/scott_the_scout.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 81, lookLegs = 93, lookFeet = 0, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/scrutinon.lua b/data-otservbr-global/npc/scrutinon.lua index fc66febf5bb..86639f88bf9 100644 --- a/data-otservbr-global/npc/scrutinon.lua +++ b/data-otservbr-global/npc/scrutinon.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 19131 + lookTypeEx = 19131, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -46,36 +46,34 @@ npcType.onCloseChannel = function(npc, creature) end -- Travel local function addTravelKeyword(keyword, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want to sail ' .. keyword:titleCase() .. '?' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you want to sail " .. keyword:titleCase() .. "?" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('ab\'dendriel', Position(32734, 31668, 6)) -addTravelKeyword('edron', Position(33175, 31764, 6)) -addTravelKeyword('venore', Position(32954, 32022, 6)) -addTravelKeyword('darashia', Position(33289, 32480, 6)) +addTravelKeyword("ab'dendriel", Position(32734, 31668, 6)) +addTravelKeyword("edron", Position(33175, 31764, 6)) +addTravelKeyword("venore", Position(32954, 32022, 6)) +addTravelKeyword("darashia", Position(33289, 32480, 6)) -- Basic -keywordHandler:addKeyword({ 'name' }, StdModule.say, { +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = { "My name is Scrutinon. However, there are not many people calling my name nowadays. Not many captains even dare to land on this island. It is too close to {Quirefang}. ...", "Most of them do not know this island by that name. Some call it Demon Horn, others the Dragon's Tooth or the Gray Beach as none of them ever came closer than a fair distance. ...", - "There are drifts and storms surrounding that place that are far too dangerous to navigate through even for the most versed captains. They often sail not closer than to this island here and drop off whoever dares to explore near this dreaded coast." - } -} -) -keywordHandler:addKeyword({ 'quirefang' }, StdModule.say, { + "There are drifts and storms surrounding that place that are far too dangerous to navigate through even for the most versed captains. They often sail not closer than to this island here and drop off whoever dares to explore near this dreaded coast.", + }, +}) +keywordHandler:addKeyword({ "quirefang" }, StdModule.say, { npcHandler = npcHandler, text = { "This island is cleft. Go there only prepared or you will meet your end. The surface of this forgotten rock is a barren wasteland full of hostile creatures. ...", "Its visage is covered with holes and tunnels in which its leggy inhabitants are hiding. Its bowels filled with the strangest creatures, waiting to feast on whatever dares to disturb their hive. ...", "And you will find no shelter in Quirefang's black depths, where the creatures of the deep are fulfilling a dark prophecy. ...", - "It is impossible to reach it by ship or boat. However, there was one before you. A {visitor} who found a way to enter the island." - } -} -) + "It is impossible to reach it by ship or boat. However, there was one before you. A {visitor} who found a way to enter the island.", + }, +}) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/scutty.lua b/data-otservbr-global/npc/scutty.lua index b254a2ada15..fc0c65f5800 100644 --- a/data-otservbr-global/npc/scutty.lua +++ b/data-otservbr-global/npc/scutty.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 76, lookBody = 0, lookLegs = 19, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/sebastian.lua b/data-otservbr-global/npc/sebastian.lua index 903fc878b6b..ebe69258f1d 100644 --- a/data-otservbr-global/npc/sebastian.lua +++ b/data-otservbr-global/npc/sebastian.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 52, lookLegs = 109, lookFeet = 115, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,13 +54,13 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (MsgContains(message, "nargor")) then + if MsgContains(message, "nargor") then if player:getStorageValue(Storage.TheShatteredIsles.AccessToNargor) == 1 then npcHandler:say("Do you want to sail Nargor for 50 gold coins?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then if player:getStorageValue(Storage.TheShatteredIsles.AccessToNargor) == 1 then if player:removeMoneyBank(50) then npcHandler:say("Set the sails!", npc, creature) @@ -76,54 +76,42 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, - { - npcHandler = npcHandler, - text = 'Do you want to sail ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', - cost = cost, - discount = 'postman' - } - ) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, - { - npcHandler = npcHandler, - premium = false, - cost = cost, - discount = 'postman', - destination = destination - } - ) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'We would like to serve you some time.', - reset = true - } - ) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { + npcHandler = npcHandler, + text = "Do you want to sail " .. keyword:titleCase() .. " for |TRAVELCOST|?", + cost = cost, + discount = "postman", + }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { + npcHandler = npcHandler, + premium = false, + cost = cost, + discount = "postman", + destination = destination, + }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "We would like to serve you some time.", + reset = true, + }) end -addTravelKeyword('liberty bay', 50, Position(32316, 32702, 7)) -addTravelKeyword('nargor', 50, Position(32025, 32812, 7)) +addTravelKeyword("liberty bay", 50, Position(32316, 32702, 7)) +addTravelKeyword("nargor", 50, Position(32025, 32812, 7)) -- Basic -keywordHandler:addKeyword({ 'passage' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'Where do you want to go? To {Liberty bay} or to {Nargor}?' - } -) -keywordHandler:addKeyword({ 'job' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'I am the captain of this ship.' - } -) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'I am the captain of this ship.' - } -) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { + npcHandler = npcHandler, + text = "Where do you want to go? To {Liberty bay} or to {Nargor}?", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "I am the captain of this ship.", +}) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { + npcHandler = npcHandler, + text = "I am the captain of this ship.", +}) npcHandler:setMessage(MESSAGE_GREET, "Greetings, daring adventurer. If you need a {passage}, let me know.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") diff --git a/data-otservbr-global/npc/sebastian_nargor.lua b/data-otservbr-global/npc/sebastian_nargor.lua index 9571d172e0e..919d2963cb9 100644 --- a/data-otservbr-global/npc/sebastian_nargor.lua +++ b/data-otservbr-global/npc/sebastian_nargor.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 52, lookLegs = 109, lookFeet = 115, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,18 +52,18 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want to sail ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you want to sail " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('liberty bay', 100, Position(32316, 32702, 7)) -addTravelKeyword('meriana', 50, Position(32346, 32625, 7)) +addTravelKeyword("liberty bay", 100, Position(32316, 32702, 7)) +addTravelKeyword("meriana", 50, Position(32346, 32625, 7)) -- Basic -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Liberty bay} or to {Meriana}?' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Liberty bay} or to {Meriana}?" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) npcHandler:setMessage(MESSAGE_GREET, "Greetings, daring adventurer. If you need a {passage}, let me know.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") diff --git a/data-otservbr-global/npc/ser_tybald.lua b/data-otservbr-global/npc/ser_tybald.lua index b4ed49d91dd..cfe8604988b 100644 --- a/data-otservbr-global/npc/ser_tybald.lua +++ b/data-otservbr-global/npc/ser_tybald.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 60, lookFeet = 115, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,262 +51,202 @@ npcType.onCloseChannel = function(npc, creature) end -- spells for knight and paladin -keywordHandler:addSpellKeyword({ "findperson" }, - { - npcHandler = npcHandler, - spellName = "Find Person", - price = 80, - level = 8, - vocation = { - VOCATION.BASE_ID.PALADIN, - VOCATION.BASE_ID.KNIGHT - } - } -) -keywordHandler:addSpellKeyword({ "light" }, - { - npcHandler = npcHandler, - spellName = "Light", - price = 0, - level = 8, - vocation = { - VOCATION.BASE_ID.PALADIN, - VOCATION.BASE_ID.KNIGHT - } - } -) -keywordHandler:addSpellKeyword({ "magicrope" }, - { - npcHandler = npcHandler, - spellName = "Magic Rope", - price = 200, - level = 9, - vocation = { - VOCATION.BASE_ID.PALADIN, - VOCATION.BASE_ID.KNIGHT - } - } -) -keywordHandler:addSpellKeyword({ "curepoison" }, - { - npcHandler = npcHandler, - spellName = "Cure Poison", - price = 150, - level = 10, - vocation = { - VOCATION.BASE_ID.PALADIN, - VOCATION.BASE_ID.KNIGHT - } - } -) -keywordHandler:addSpellKeyword({ "levitate" }, - { - npcHandler = npcHandler, - spellName = "Levitate", - price = 500, - level = 12, - vocation = { - VOCATION.BASE_ID.PALADIN, - VOCATION.BASE_ID.KNIGHT - } - } -) -keywordHandler:addSpellKeyword({ "haste" }, - { - npcHandler = npcHandler, - spellName = "Haste", - price = 600, - level = 14, - vocation = { - VOCATION.BASE_ID.PALADIN, - VOCATION.BASE_ID.KNIGHT - } - } -) -keywordHandler:addSpellKeyword({ "greatlight" }, - { - npcHandler = npcHandler, - spellName = "Great Light", - price = 500, - level = 13, - vocation = { - VOCATION.BASE_ID.PALADIN, - VOCATION.BASE_ID.KNIGHT - } - } -) +keywordHandler:addSpellKeyword({ "findperson" }, { + npcHandler = npcHandler, + spellName = "Find Person", + price = 80, + level = 8, + vocation = { + VOCATION.BASE_ID.PALADIN, + VOCATION.BASE_ID.KNIGHT, + }, +}) +keywordHandler:addSpellKeyword({ "light" }, { + npcHandler = npcHandler, + spellName = "Light", + price = 0, + level = 8, + vocation = { + VOCATION.BASE_ID.PALADIN, + VOCATION.BASE_ID.KNIGHT, + }, +}) +keywordHandler:addSpellKeyword({ "magicrope" }, { + npcHandler = npcHandler, + spellName = "Magic Rope", + price = 200, + level = 9, + vocation = { + VOCATION.BASE_ID.PALADIN, + VOCATION.BASE_ID.KNIGHT, + }, +}) +keywordHandler:addSpellKeyword({ "curepoison" }, { + npcHandler = npcHandler, + spellName = "Cure Poison", + price = 150, + level = 10, + vocation = { + VOCATION.BASE_ID.PALADIN, + VOCATION.BASE_ID.KNIGHT, + }, +}) +keywordHandler:addSpellKeyword({ "levitate" }, { + npcHandler = npcHandler, + spellName = "Levitate", + price = 500, + level = 12, + vocation = { + VOCATION.BASE_ID.PALADIN, + VOCATION.BASE_ID.KNIGHT, + }, +}) +keywordHandler:addSpellKeyword({ "haste" }, { + npcHandler = npcHandler, + spellName = "Haste", + price = 600, + level = 14, + vocation = { + VOCATION.BASE_ID.PALADIN, + VOCATION.BASE_ID.KNIGHT, + }, +}) +keywordHandler:addSpellKeyword({ "greatlight" }, { + npcHandler = npcHandler, + spellName = "Great Light", + price = 500, + level = 13, + vocation = { + VOCATION.BASE_ID.PALADIN, + VOCATION.BASE_ID.KNIGHT, + }, +}) --spells for paladin -keywordHandler:addSpellKeyword({ "conjurebolt" }, - { - npcHandler = npcHandler, - spellName = "Conjure Bolt", - price = 750, - level = 17, - vocation = VOCATION.BASE_ID.PALADIN - } -) -keywordHandler:addSpellKeyword({ "conjurepoisonedarrow" }, - { - npcHandler = npcHandler, - spellName = "Conjure Poisoned Arrow", - price = 700, - level = 16, - vocation = VOCATION.BASE_ID.PALADIN - } -) -keywordHandler:addSpellKeyword({ "conjurearrow" }, - { - npcHandler = npcHandler, - spellName = "Conjure Arrow", - price = 450, - level = 13, - vocation = VOCATION.BASE_ID.PALADIN - } -) -keywordHandler:addSpellKeyword({ "lighthealing" }, - { - npcHandler = npcHandler, - spellName = "Light Healing", - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.PALADIN - } -) +keywordHandler:addSpellKeyword({ "conjurebolt" }, { + npcHandler = npcHandler, + spellName = "Conjure Bolt", + price = 750, + level = 17, + vocation = VOCATION.BASE_ID.PALADIN, +}) +keywordHandler:addSpellKeyword({ "conjurepoisonedarrow" }, { + npcHandler = npcHandler, + spellName = "Conjure Poisoned Arrow", + price = 700, + level = 16, + vocation = VOCATION.BASE_ID.PALADIN, +}) +keywordHandler:addSpellKeyword({ "conjurearrow" }, { + npcHandler = npcHandler, + spellName = "Conjure Arrow", + price = 450, + level = 13, + vocation = VOCATION.BASE_ID.PALADIN, +}) +keywordHandler:addSpellKeyword({ "lighthealing" }, { + npcHandler = npcHandler, + spellName = "Light Healing", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.PALADIN, +}) -- spells for knight -keywordHandler:addSpellKeyword({ "brutalstrike" }, - { - npcHandler = npcHandler, - spellName = "Brutal Strike", - price = 1000, - level = 16, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "woundcleansing" }, - { - npcHandler = npcHandler, - spellName = "Wound Cleansing", - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) +keywordHandler:addSpellKeyword({ "brutalstrike" }, { + npcHandler = npcHandler, + spellName = "Brutal Strike", + price = 1000, + level = 16, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "woundcleansing" }, { + npcHandler = npcHandler, + spellName = "Wound Cleansing", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) -keywordHandler:addKeyword({ "healing spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Lighthealing}', '{Healfriend}', and '{Curepoison}'." - } -) -keywordHandler:addKeyword({ "support spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Findperson}', '{Magicrope}', '{Levitate}', '{Light}', \z - '{Greatlight}', '{Haste}', '{Poisonfield}', '{Firefield}', '{Lightmagicmissile}' and '{Energyfield}'." - } -) -keywordHandler:addKeyword({ "attack spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Deathstrike}', '{Firewave}', '{Apprenticesstrike}', \z - '{Energystrike}', '{Terrastrike}', '{Flamestrike}', '{Icestrike}', '{Physicalstrike}', '{Icewave}'." - } -) -keywordHandler:addKeyword({ "spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I can teach you {healing spells}, {support spells} and {attack spells}. \z - What kind of spell do you wish to learn?" - } -) +keywordHandler:addKeyword({ "healing spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Lighthealing}', '{Healfriend}', and '{Curepoison}'.", +}) +keywordHandler:addKeyword({ "support spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Findperson}', '{Magicrope}', '{Levitate}', '{Light}', \z + '{Greatlight}', '{Haste}', '{Poisonfield}', '{Firefield}', '{Lightmagicmissile}' and '{Energyfield}'.", +}) +keywordHandler:addKeyword({ "attack spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Deathstrike}', '{Firewave}', '{Apprenticesstrike}', \z + '{Energystrike}', '{Terrastrike}', '{Flamestrike}', '{Icestrike}', '{Physicalstrike}', '{Icewave}'.", +}) +keywordHandler:addKeyword({ "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can teach you {healing spells}, {support spells} and {attack spells}. \z + What kind of spell do you wish to learn?", +}) -keywordHandler:addKeyword({ "name" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I am Garamond Starstream." - } -) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Did you not listen? I am the teacher of druid and sorcerer spells for level 8 to 18. \z - I teach young adventurers spells they can use once they have the proper vocation - druid or sorcerer." - } -) -keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I have an old friend there. Haven't heard from him in a while." - } -) -keywordHandler:addKeyword({ "dawnport" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Oh, it's not too bad here, believe me. At least I always get young and enthusiast disciples! \z - Though I must confess I miss the vastness of the Tibian plains. " - } -) -keywordHandler:addKeyword({ "inigo" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A kind old hunter. He loves to see young life around, taking on the ways and lays of the land. \z - If you have any question, ask Inigo for help." - } -) -keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Roughened and toughened by life's tragedies. A good man, but somber." - } -) -keywordHandler:addKeyword({ "garamond" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Yes, child. If you wish to learn a spell, tell me." - } -) -keywordHandler:addKeyword({ "hamish" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A very headstrong young man, though I appreciate his devotion to the craft of potion-making. \z - No respect for senior authority or age at all! Except maybe for a little soft spot for Mr Morris." - } -) -keywordHandler:addKeyword({ "mr morris" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A strange young man. He seems driven, to my mind. By what force, I do not know. \z - I take it the world needs adventurers such as him." - } -) -keywordHandler:addKeyword({ "plunderpurse" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Redeeming one's soul by becoming a clerk? Not very likely. Once a pirate, always a pirate. \z - But he's a charming old rogue." - } -) -keywordHandler:addKeyword({ "richard" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Not a half bad cook, truly. Must have been that squirrel diet, \z - it seems to have lead him to discover a new cuisine - everything to forget the bad taste of squirrels, he said." - } -) -keywordHandler:addKeyword({ "ser tybald" }, StdModule.say, - { - npcHandler = npcHandler, - text = "He is proficient in the martial arts. A very skilled teacher of spells for knights and paladins. \z - If that is your vocation, you should talk to Ser Tybald." - } -) -keywordHandler:addKeyword({ "wentworth" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ah, yes. Travelled with Plunderpurse a lot as I recall. Captain Plunderpurse, then. \z - Got his head full of numbers and statistics, that boy." - } -) +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "I am Garamond Starstream.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "Did you not listen? I am the teacher of druid and sorcerer spells for level 8 to 18. \z + I teach young adventurers spells they can use once they have the proper vocation - druid or sorcerer.", +}) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { + npcHandler = npcHandler, + text = "I have an old friend there. Haven't heard from him in a while.", +}) +keywordHandler:addKeyword({ "dawnport" }, StdModule.say, { + npcHandler = npcHandler, + text = "Oh, it's not too bad here, believe me. At least I always get young and enthusiast disciples! \z + Though I must confess I miss the vastness of the Tibian plains. ", +}) +keywordHandler:addKeyword({ "inigo" }, StdModule.say, { + npcHandler = npcHandler, + text = "A kind old hunter. He loves to see young life around, taking on the ways and lays of the land. \z + If you have any question, ask Inigo for help.", +}) +keywordHandler:addKeyword({ "coltrayne" }, StdModule.say, { + npcHandler = npcHandler, + text = "Roughened and toughened by life's tragedies. A good man, but somber.", +}) +keywordHandler:addKeyword({ "garamond" }, StdModule.say, { + npcHandler = npcHandler, + text = "Yes, child. If you wish to learn a spell, tell me.", +}) +keywordHandler:addKeyword({ "hamish" }, StdModule.say, { + npcHandler = npcHandler, + text = "A very headstrong young man, though I appreciate his devotion to the craft of potion-making. \z + No respect for senior authority or age at all! Except maybe for a little soft spot for Mr Morris.", +}) +keywordHandler:addKeyword({ "mr morris" }, StdModule.say, { + npcHandler = npcHandler, + text = "A strange young man. He seems driven, to my mind. By what force, I do not know. \z + I take it the world needs adventurers such as him.", +}) +keywordHandler:addKeyword({ "plunderpurse" }, StdModule.say, { + npcHandler = npcHandler, + text = "Redeeming one's soul by becoming a clerk? Not very likely. Once a pirate, always a pirate. \z + But he's a charming old rogue.", +}) +keywordHandler:addKeyword({ "richard" }, StdModule.say, { + npcHandler = npcHandler, + text = "Not a half bad cook, truly. Must have been that squirrel diet, \z + it seems to have lead him to discover a new cuisine - everything to forget the bad taste of squirrels, he said.", +}) +keywordHandler:addKeyword({ "ser tybald" }, StdModule.say, { + npcHandler = npcHandler, + text = "He is proficient in the martial arts. A very skilled teacher of spells for knights and paladins. \z + If that is your vocation, you should talk to Ser Tybald.", +}) +keywordHandler:addKeyword({ "wentworth" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ah, yes. Travelled with Plunderpurse a lot as I recall. Captain Plunderpurse, then. \z + Got his head full of numbers and statistics, that boy.", +}) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -317,65 +257,58 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "magic") then - npcHandler:say( - { - "Spells are very useful in combat - not only for mages, though of course we particularly \z + npcHandler:say({ + "Spells are very useful in combat - not only for mages, though of course we particularly \z rely on them for much of our damage output. ...", - "There's a broad variety of what spells can do, as you will see as you progress further. \z + "There's a broad variety of what spells can do, as you will see as you progress further. \z The next spells you can buy with level 8 and on. ...", - "Some attack spells can be directed at a single target while others affect an area, having an \z + "Some attack spells can be directed at a single target while others affect an area, having an \z effect either over time or instantaneous. Even other spells protect you, or can be used to create runes. ...", - "Each vocation has its own individual spells that none of the other vocations can use. \z + "Each vocation has its own individual spells that none of the other vocations can use. \z You can only learn spells at a spell trainer of your vocation. ...", - "The spells here on Dawnport are for trying out only, and you will forget them once \z + "The spells here on Dawnport are for trying out only, and you will forget them once \z you choose your definite vocation and leave for the Mainland. ...", - "There, you can go to a spell teacher in a city to permanently learn a spell." - }, - creature) + "There, you can go to a spell teacher in a city to permanently learn a spell.", + }, creature) elseif MsgContains(message, "mainland") then - npcHandler:say( - { - "The Mainland offers many more adventures, dangers and quests than this small isle, \z + npcHandler:say({ + "The Mainland offers many more adventures, dangers and quests than this small isle, \z and also has spell teachers where you can permanently learn a spell for your vocation. ...", - "Once you reach level 8 you may choose your definite vocation and leave for Main. \z + "Once you reach level 8 you may choose your definite vocation and leave for Main. \z Go to a city and seek out the spell trainer of your vocation to learn a spell. \z And make sure you have enough gold! ...", - "The art of spell teaching is complex and dangerous, and we will only impart our \z - valuable knowledge of a spell to a novice if they can pay the price." - }, - creature) + "The art of spell teaching is complex and dangerous, and we will only impart our \z + valuable knowledge of a spell to a novice if they can pay the price.", + }, creature) elseif MsgContains(message, "tibian") then - npcHandler:say( - { - "Ah, the beauty of our world! It is vast and extraordinarily diverse. Strange islands, \z + npcHandler:say({ + "Ah, the beauty of our world! It is vast and extraordinarily diverse. Strange islands, \z beautiful cities and fierce monsters that roam the wildernesses. \z Mysteries, adventures, danger around every corner. ...", - "Once you have reached level 8, you are ready to choose a vocation and go to the Tibian Mainland." - }, - creature) + "Once you have reached level 8, you are ready to choose a vocation and go to the Tibian Mainland.", + }, creature) elseif MsgContains(message, "vocation") then - npcHandler:say( - { - "Your choice of vocation will determine your life in Tibia, and the skills and fighting techniques you may use. ...", - "There are four vocation: knight, druid, paladin and sorcerer. \z + npcHandler:say({ + "Your choice of vocation will determine your life in Tibia, and the skills and fighting techniques you may use. ...", + "There are four vocation: knight, druid, paladin and sorcerer. \z If you want to know more about them, talk to Oressa in the temple. ...", - "I myself teach try-out spells for both the magical classes, \z - whereas Tybald in the next room specialises in knight and paladin spells." - }, - creature) + "I myself teach try-out spells for both the magical classes, \z + whereas Tybald in the next room specialises in knight and paladin spells.", + }, creature) elseif MsgContains(message, "oressa") then - npcHandler:say( - { - "A very intelligent girl. Prefers to listen to wild animals' noises instead of humans', \z + npcHandler:say({ + "A very intelligent girl. Prefers to listen to wild animals' noises instead of humans', \z which is quite understandable when you think about it. ...", - "However, she's also a very apt healer and can give you advice on your choice of vocation." - }, - creature) + "However, she's also a very apt healer and can give you advice on your choice of vocation.", + }, creature) end end -npcHandler:setMessage(MESSAGE_GREET, "Welcome, child. Have you come to learn about {magic}? \z - Then you are in the right place. I can teach you many useful {spells}.") +npcHandler:setMessage( + MESSAGE_GREET, + "Welcome, child. Have you come to learn about {magic}? \z + Then you are in the right place. I can teach you many useful {spells}." +) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/serafin.lua b/data-otservbr-global/npc/serafin.lua index 97599fd2add..3f4a763106b 100644 --- a/data-otservbr-global/npc/serafin.lua +++ b/data-otservbr-global/npc/serafin.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 123, lookLegs = 86, lookFeet = 98, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -70,7 +70,9 @@ local function creatureSayCallback(npc, creature, type, message) end end --Basic -keywordHandler:addKeyword({ "alori mort" }, StdModule.say, { npcHandler = npcHandler, text = "There's something about these words which makes me feel awkward. Or maybe it's you who causes that feeling. You better get lost." }, function(player) return player:getStorageValue(BloodBrothers.Mission03) == 1 end) +keywordHandler:addKeyword({ "alori mort" }, StdModule.say, { npcHandler = npcHandler, text = "There's something about these words which makes me feel awkward. Or maybe it's you who causes that feeling. You better get lost." }, function(player) + return player:getStorageValue(BloodBrothers.Mission03) == 1 +end) npcHandler:setMessage(MESSAGE_GREET, "Welcome to my fruit and vegetable store, |PLAYERNAME|! Ask me for a {trade} if you'd like to see my wares.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) @@ -92,7 +94,7 @@ npcConfig.shop = { { itemName = "potato", clientId = 8010, buy = 4 }, { itemName = "pumpkin", clientId = 3594, buy = 10 }, { itemName = "strawberry", clientId = 3591, buy = 2 }, - { itemName = "white mushroom", clientId = 3723, buy = 10 } + { itemName = "white mushroom", clientId = 3723, buy = 10 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -103,7 +105,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/servant_sentry.lua b/data-otservbr-global/npc/servant_sentry.lua index 24ff8a5a5c7..d1ff8453170 100644 --- a/data-otservbr-global/npc/servant_sentry.lua +++ b/data-otservbr-global/npc/servant_sentry.lua @@ -11,19 +11,19 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 396 + lookType = 396, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Heed. Your. Will. We. Will.' }, - { text = 'Intruder. Intrude. Must. Explain.' }, - { text = 'Ssssttttoooopppp.' } + { text = "Heed. Your. Will. We. Will." }, + { text = "Intruder. Intrude. Must. Explain." }, + { text = "Ssssttttoooopppp." }, } local keywordHandler = KeywordHandler:new() @@ -53,9 +53,11 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'master' }, StdModule.say, { npcHandler = npcHandler, text = "Our. Master. Is. Gone. You. Can. Not. Visit. Him! We. Stand. {Sentry}!" }) -keywordHandler:addKeyword({ 'sentry' }, StdModule.say, { npcHandler = npcHandler, text = "{Master}. Conducted. Experiments. Great. Problems. You. Must. Go!" }) -keywordHandler:addKeyword({ 'slime' }, StdModule.say, { npcHandler = npcHandler, text = "{Slime}. Dangerous. We. Have. It. Under. Control. ... We. Will. Stand. {Sentry}." }, function(player) return player:getStorageValue(Storage.TheirMastersVoice.SlimeGobblerReceived) == 1 end) +keywordHandler:addKeyword({ "master" }, StdModule.say, { npcHandler = npcHandler, text = "Our. Master. Is. Gone. You. Can. Not. Visit. Him! We. Stand. {Sentry}!" }) +keywordHandler:addKeyword({ "sentry" }, StdModule.say, { npcHandler = npcHandler, text = "{Master}. Conducted. Experiments. Great. Problems. You. Must. Go!" }) +keywordHandler:addKeyword({ "slime" }, StdModule.say, { npcHandler = npcHandler, text = "{Slime}. Dangerous. We. Have. It. Under. Control. ... We. Will. Stand. {Sentry}." }, function(player) + return player:getStorageValue(Storage.TheirMastersVoice.SlimeGobblerReceived) == 1 +end) local function greetCallback(npc, creature) local player = Player(creature) diff --git a/data-otservbr-global/npc/sessek.lua b/data-otservbr-global/npc/sessek.lua index 5d1ccbb3d2f..546c267515d 100644 --- a/data-otservbr-global/npc/sessek.lua +++ b/data-otservbr-global/npc/sessek.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 339 + lookType = 339, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,7 +59,7 @@ npcConfig.shop = { { itemName = "vial of fruit juice", clientId = 2874, buy = 6, count = 14 }, { itemName = "vial of tea", clientId = 2874, buy = 3, count = 17 }, { itemName = "vial of water", clientId = 2874, buy = 2, count = 1 }, - { itemName = "vial of wine", clientId = 2874, buy = 3, count = 2 } + { itemName = "vial of wine", clientId = 2874, buy = 3, count = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -70,7 +70,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/seymour.lua b/data-otservbr-global/npc/seymour.lua index 507c97b2ca4..bbfd4be4eda 100644 --- a/data-otservbr-global/npc/seymour.lua +++ b/data-otservbr-global/npc/seymour.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 69, lookLegs = 87, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Newcomers - visit me! I\'ll answer your questions!' }, - { text = 'Get some training in the academy!' }, - { text = 'Feeling lost? Ask me for help!' }, - { text = 'Gain some knowledge in the academy!' } + { text = "Newcomers - visit me! I'll answer your questions!" }, + { text = "Get some training in the academy!" }, + { text = "Feeling lost? Ask me for help!" }, + { text = "Gain some knowledge in the academy!" }, } local keywordHandler = KeywordHandler:new() @@ -61,179 +61,186 @@ npcType.onMove = function(npc, creature, fromPosition, toPosition) end -- Greeting and Farewell -local hiKeyword = keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = 'Hello, |PLAYERNAME|. Welcome to the Academy of Rookgaard. May I sign you up as a {student}?' }) -hiKeyword:addChildKeyword({ 'student' }, StdModule.say, { npcHandler = npcHandler, text = 'Brilliant! We need fine adventurers like you! If you are ready to learn, just ask me for a lesson. You can always ask for the differently coloured words - such as this one - to continue the lesson.', reset = true }) -hiKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Brilliant! We need fine adventurers like you! If you are ready to learn, just ask me for a lesson. You can always ask for the differently coloured words - such as this one - to continue the lesson.', reset = true }) -hiKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Only nonsense on your mind, eh?', reset = true }) -keywordHandler:addAliasKeyword({ 'hello' }) +local hiKeyword = keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Hello, |PLAYERNAME|. Welcome to the Academy of Rookgaard. May I sign you up as a {student}?" }) +hiKeyword:addChildKeyword({ "student" }, StdModule.say, { npcHandler = npcHandler, text = "Brilliant! We need fine adventurers like you! If you are ready to learn, just ask me for a lesson. You can always ask for the differently coloured words - such as this one - to continue the lesson.", reset = true }) +hiKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Brilliant! We need fine adventurers like you! If you are ready to learn, just ask me for a lesson. You can always ask for the differently coloured words - such as this one - to continue the lesson.", reset = true }) +hiKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Only nonsense on your mind, eh?", reset = true }) +keywordHandler:addAliasKeyword({ "hello" }) -keywordHandler:addFarewellKeyword({ 'bye' }, { npcHandler = npcHandler, text = 'Good bye, |PLAYERNAME|! And remember: No running up and down in the academy!' }) -keywordHandler:addAliasKeyword({ 'farewell' }) +keywordHandler:addFarewellKeyword({ "bye" }, { npcHandler = npcHandler, text = "Good bye, |PLAYERNAME|! And remember: No running up and down in the academy!" }) +keywordHandler:addAliasKeyword({ "farewell" }) -- Rats -local ratsKeyword = keywordHandler:addKeyword({ '%d+', 'dead', 'rat' }, StdModule.say, { npcHandler = npcHandler }, - function(player, data) - npcHandler.rats[player.uid] = data[1] - return data[1] and data[1] > 0 and data[1] < 0xFFFFFFFF - end, - function(player) - npcHandler:say(string.format('Have you brought %d dead rats to me to pick up your reward?', npcHandler.rats[player.uid]), player.uid) - end) -ratsKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Thank you! Here is your reward.', reset = true }, - function(player) return player:getItemCount(3994) >= npcHandler.rats[player.uid] end, - function(player) - player:removeItem(3994, npcHandler.rats[player.uid]) - player:addMoney(2 * npcHandler.rats[player.uid]) - end -) -ratsKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'HEY! You don\'t have so many!', reset = true }) -ratsKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Go and find some rats to kill!', reset = true }) - -local ratKeyword = keywordHandler:addKeyword({ 'dead', 'rat' }, StdModule.say, { npcHandler = npcHandler, text = 'Have you brought a dead rat to me to pick up your reward?' }) -ratKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Thank you! Here is your reward.', reset = true }, - function(player) return player:getItemCount(3994) > 0 end, - function(player) - player:removeItem(3994, 1) - player:addMoney(2) - end -) -ratKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'HEY! You don\'t have one! Stop playing tricks on me or I\'ll give you some extra work!', reset = true }) -ratKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Go and find some rats to kill!', reset = true }) +local ratsKeyword = keywordHandler:addKeyword({ "%d+", "dead", "rat" }, StdModule.say, { npcHandler = npcHandler }, function(player, data) + npcHandler.rats[player.uid] = data[1] + return data[1] and data[1] > 0 and data[1] < 0xFFFFFFFF +end, function(player) + npcHandler:say(string.format("Have you brought %d dead rats to me to pick up your reward?", npcHandler.rats[player.uid]), player.uid) +end) +ratsKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Thank you! Here is your reward.", reset = true }, function(player) + return player:getItemCount(3994) >= npcHandler.rats[player.uid] +end, function(player) + player:removeItem(3994, npcHandler.rats[player.uid]) + player:addMoney(2 * npcHandler.rats[player.uid]) +end) +ratsKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "HEY! You don't have so many!", reset = true }) +ratsKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Go and find some rats to kill!", reset = true }) + +local ratKeyword = keywordHandler:addKeyword({ "dead", "rat" }, StdModule.say, { npcHandler = npcHandler, text = "Have you brought a dead rat to me to pick up your reward?" }) +ratKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Thank you! Here is your reward.", reset = true }, function(player) + return player:getItemCount(3994) > 0 +end, function(player) + player:removeItem(3994, 1) + player:addMoney(2) +end) +ratKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "HEY! You don't have one! Stop playing tricks on me or I'll give you some extra work!", reset = true }) +ratKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Go and find some rats to kill!", reset = true }) -- Quest -local boxKeyword = keywordHandler:addKeyword({ 'box' }, StdModule.say, { npcHandler = npcHandler, text = 'Do you have a suitable present box for me?' }) -boxKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'THANK YOU! Here is a helmet that will serve you well.', reset = true }, - function(player) return player:getItemCount(2856) > 0 end, - function(player) - player:removeItem(2856, 1) - player:addItem(3374, 1) - end -) -boxKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'HEY! You don\'t have one! Stop playing tricks on me or I\'ll give you some extra work!', reset = true }) - -keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, I would like to send our king a little present but I do not have a suitable box. If you find a nice box, please bring it to me.' }, - function(player) return player:getLevel() >= 4 end) -keywordHandler:addAliasKeyword({ 'quest' }) -keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, text = 'You are pretty inexperienced. I think killing rats is a suitable challenge for you. For each fresh {dead rat} I will give you two shiny coins of gold.' }) -keywordHandler:addAliasKeyword({ 'quest' }) - -keywordHandler:addKeyword({ 'fuck' }, StdModule.say, { npcHandler = npcHandler, text = 'For this remark I will wash your mouth with soap, young lady!' }, - function(player) return player:getSex() == PLAYERSEX_FEMALE end, - function(player) player:getPosition():sendMagicEffect(CONST_ME_YELLOW_RINGS) end) -keywordHandler:addKeyword({ 'fuck' }, StdModule.say, { npcHandler = npcHandler, text = 'For this remark I will wash your mouth with soap, young man!' }, nil, - function(player) player:getPosition():sendMagicEffect(CONST_ME_YELLOW_RINGS) end) +local boxKeyword = keywordHandler:addKeyword({ "box" }, StdModule.say, { npcHandler = npcHandler, text = "Do you have a suitable present box for me?" }) +boxKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "THANK YOU! Here is a helmet that will serve you well.", reset = true }, function(player) + return player:getItemCount(2856) > 0 +end, function(player) + player:removeItem(2856, 1) + player:addItem(3374, 1) +end) +boxKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "HEY! You don't have one! Stop playing tricks on me or I'll give you some extra work!", reset = true }) + +keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = "Well, I would like to send our king a little present but I do not have a suitable box. If you find a nice box, please bring it to me." }, function(player) + return player:getLevel() >= 4 +end) +keywordHandler:addAliasKeyword({ "quest" }) +keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = "You are pretty inexperienced. I think killing rats is a suitable challenge for you. For each fresh {dead rat} I will give you two shiny coins of gold." }) +keywordHandler:addAliasKeyword({ "quest" }) + +keywordHandler:addKeyword({ "fuck" }, StdModule.say, { npcHandler = npcHandler, text = "For this remark I will wash your mouth with soap, young lady!" }, function(player) + return player:getSex() == PLAYERSEX_FEMALE +end, function(player) + player:getPosition():sendMagicEffect(CONST_ME_YELLOW_RINGS) +end) +keywordHandler:addKeyword({ "fuck" }, StdModule.say, { npcHandler = npcHandler, text = "For this remark I will wash your mouth with soap, young man!" }, nil, function(player) + player:getPosition():sendMagicEffect(CONST_ME_YELLOW_RINGS) +end) -- Basic keywords -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'island', 'of', 'destiny' }, StdModule.say, { npcHandler = npcHandler, text = 'This is an island with {vocation} teachers. You can learn all about the different vocations there once you are level 8.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s |TIME|, so you are late. Hurry!' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Seymour, but for you I am \'Sir\' Seymour.' }) -keywordHandler:addKeyword({ 'sir' }, StdModule.say, { npcHandler = npcHandler, text = 'At least you know how to address a man of my importance.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the master of this fine {academy}, giving {lessons} to my students.' }) -keywordHandler:addKeyword({ 'lesson' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, which lesson did you want to attend again? Was it {Rookgaard}, {fighting}, {equipment}, {citizens}, the {academy} or the {oracle}?' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'In a bank you can deposit your earned gold coins safely. Just go downstairs to {Paulie} and ask him to {deposit} your money.' }) -keywordHandler:addKeyword({ 'deposit' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, depositing your money will keep it safe, so it is a good idea to store it in the bank. Of course, you can always withdraw it again.' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, the {king} doesn\'t send troops anymore, the {academy} is dreadfully low on money, and the end of the world is pretty nigh. Apart from that I\'m reasonably fine, I suppose.' }) -keywordHandler:addKeyword({ 'citizen' }, StdModule.say, { npcHandler = npcHandler, text = 'Most of the citizens here are {merchants}. You can give me the name of any non-player character and I will tell you something about him or her.' }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { npcHandler = npcHandler, text = 'Merchants buy and sell goods. Just ask them for a {trade} to see what they offer or buy from you.' }) -keywordHandler:addKeyword({ 'troll' }, StdModule.say, { npcHandler = npcHandler, text = 'Trolls are quite nasty monsters which you shouldn\'t face before level 3 or 4 depending on your {equipment}. Ask the bridge {guards} for their locations!' }) -keywordHandler:addKeyword({ 'guard' }, StdModule.say, { npcHandler = npcHandler, text = 'The guards {Dallheim} and {Zerbrus} protect our village from {monsters} trying to enter. They also mark useful {dungeon} locations on your map.' }) -keywordHandler:addKeyword({ 'vocation' }, StdModule.say, { npcHandler = npcHandler, text = 'There are four vocations: {knights}, {paladins}, {sorcerers} and {druids}. You can choose your vocation once you are level 8 and have talked to the {oracle}.' }) -keywordHandler:addKeyword({ 'sorcerer' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorcerers are talented elemental magicians. You will learn all about them once you are level 8 and reached the Island of {Destiny}.' }) -keywordHandler:addKeyword({ 'knight' }, StdModule.say, { npcHandler = npcHandler, text = 'Knights are strong melee fighters. You will learn all about them once you are level 8 and reached the Island of {Destiny}.' }) -keywordHandler:addKeyword({ 'druid' }, StdModule.say, { npcHandler = npcHandler, text = 'Druids are nature magic users and great healers. You will learn all about them once you are level 8 and reached the Island of {Destiny}.' }) -keywordHandler:addKeyword({ 'paladin' }, StdModule.say, { npcHandler = npcHandler, text = 'Paladins are swift distance fighters. You will learn all about them once you are level 8 and reached the Island of {Destiny}.' }) -keywordHandler:addKeyword({ 'shop' }, StdModule.say, { npcHandler = npcHandler, text = 'We have a {weapon} and an {armor} shop south of the academy. {Equipment} such as {ropes} are sold to the north-west. {Potions} can be bought to the south. And then there are the {farms}.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'The world of Tibia is very large with tons of places to explore. Vast deserts, Caribbean islands, deep jungles, green meadows and jagged mountains await you!' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'The temple is the place to go when you are very low on {health} or poisoned. Ask {Cipfried} for a heal - he usually notices emergencies by himself.' }) -keywordHandler:addKeyword({ 'health' }, StdModule.say, { npcHandler = npcHandler, text = 'Your current health is shown by the red bar on the right side. {Death} awaits you if it goes down to zero.' }) -keywordHandler:addKeyword({ 'death' }, StdModule.say, { npcHandler = npcHandler, text = 'Dying in Tibia is painful, so try to avoid it. You will lose part of your {experience} points and also equipment. Make sure your {health} always stays up!' }) -keywordHandler:addKeyword({ 'experience' }, StdModule.say, { npcHandler = npcHandler, text = 'You gain experience when fighting {monsters}. You can take a look at your skill window to check your progress.' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'Good monsters to start hunting are {rats}. They live in the {sewers} below the village.' }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { npcHandler = npcHandler, text = 'One entrance to the sewers is south of this {academy}. Look for a sewer grate, then use it to climb down.' }) -keywordHandler:addKeyword({ 'academy' }, StdModule.say, { npcHandler = npcHandler, text = 'The academy is the building you are standing in. We have a {library}, a {bank} and the room of the {oracle}.' }) -keywordHandler:addKeyword({ 'library' }, StdModule.say, { npcHandler = npcHandler, text = 'There are many books in the bookcases around you, unless some naughty kids stole them again. Read them for more and detailed information.' }) -keywordHandler:addKeyword({ 'equip' }, StdModule.say, { npcHandler = npcHandler, text = 'Don\'t go hunting without proper equipment. You need at least a suitable {weapon}, {armor}, {shield}, {rope} and {shovel}. A {torch} is also good as well as {legs}, a {helmet} and {shoes}.' }) -keywordHandler:addKeyword({ 'money' }, StdModule.say, { npcHandler = npcHandler, text = 'Make money by killing {monsters} and picking up their {loot}. You can sell many of the things they carry.' }) -keywordHandler:addKeyword({ 'loot' }, StdModule.say, { npcHandler = npcHandler, text = 'Once a monster is dead, you can select \'Open\' on the {corpse} to check what\'s inside. Sometimes they carry {money} or other items which you can sell to {merchants}.' }) -keywordHandler:addKeyword({ 'corpse' }, StdModule.say, { npcHandler = npcHandler, text = 'You can even sell some corpses! For example, you can sell fresh dead rats to {Tom} the tanner or me. He also buys other dead creatures, just ask him for a {trade}.' }) -keywordHandler:addKeyword({ 'rope' }, StdModule.say, { npcHandler = npcHandler, text = 'You definitely need a rope to progress in dungeons, else you might end up stuck. Buy one from {Al Dee} or {Lee\'Delle}.' }) -keywordHandler:addKeyword({ 'shovel' }, StdModule.say, { npcHandler = npcHandler, text = 'A shovel is needed to dig some {dungeon} entrances open. \'Use\' it on a loose stone pile to make a hole large enough to enter.' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'You should not descend into dungeons without proper {equipment}. Once you are all prepared, ask the bridge {guards} for suitable {monsters}.' }) -keywordHandler:addKeyword({ 'torch' }, StdModule.say, { npcHandler = npcHandler, text = 'A torch will provide you with light in dark {dungeons}. \'Use\' it to light it. You can buy them from {Al Dee} or {Lee\'Delle}.' }) -keywordHandler:addKeyword({ 'student' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, I could give you valuable {lessons} or some general {hints} about the game, or a small {quest} if you\'re interested.' }) -keywordHandler:addKeyword({ 'armor' }, StdModule.say, { npcHandler = npcHandler, text = 'The starter armor, a coat, does not protect you well. First of all, earn some money and try to get a sturdy leather armor from {Dixi}\'s or {Lee\'Delle}\'s shop. Simply ask for a {trade}.' }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = 'The starter weapon, a club, won\'t get you far. You should earn some {money} and buy a better weapon such as a sabre from {Obi}\'s or {Lee\'Delle}\'s shop. Simply ask for a {trade}.' }) -keywordHandler:addKeyword({ 'helmet' }, StdModule.say, { npcHandler = npcHandler, text = 'A sturdy leather helmet is a good choice for a beginner. You can either buy it from {Dixi} and {Lee\'Delle}, or, once you are strong enough, {loot} them from {trolls}.' }) -keywordHandler:addKeyword({ 'shield' }, StdModule.say, { npcHandler = npcHandler, text = 'I fear you have to buy your first shield by yourself. A wooden shield from {Dixi} or {Lee\'Delle} is a good choice.' }) -keywordHandler:addKeyword({ 'shoe' }, StdModule.say, { npcHandler = npcHandler, text = 'Leather boots are basic shoes which will protect you well. You can either buy them from {Dixi} and {Lee\'Delle}, or, once you are strong enough, {loot} them from {trolls}.' }) -keywordHandler:addKeyword({ 'leg' }, StdModule.say, { npcHandler = npcHandler, text = 'Leather legs might be a good basic protection. You can buy them from {Dixi} or {Lee\'Delle}. Or, once you are strong enough, hunt {trolls}. They sometimes carry them in their {loot}.' }) -keywordHandler:addKeyword({ 'food' }, StdModule.say, { npcHandler = npcHandler, text = 'Many monsters, such as rabbits or deer, are excellent food providers. You can also buy food from {Willie} or {Billy}, the farmers.' }) -keywordHandler:addKeyword({ 'premium' }, StdModule.say, { npcHandler = npcHandler, text = 'Paying for your Tibia account will turn it into a premium account. This means access to more areas and functions of the game as well as other neat features.' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'Hail to King Tibianus! Long live our king! Not that he cares for an old veteran who is stuck on this godforsaken island...' }) -keywordHandler:addKeyword({ 'potion' }, StdModule.say, { npcHandler = npcHandler, text = 'Use a small health potion in case of emergencies to fill up around 75 health points. You can buy them at {Lily}\'s shop. She also has {antidote} potions.' }) -keywordHandler:addKeyword({ 'antidote' }, StdModule.say, { npcHandler = npcHandler, text = 'Some monsters poison you. To heal poison, use an antidote potion on yourself. Buy them at {Lily}\'s store.' }) -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, { npcHandler = npcHandler, text = 'Rookgaard is the name of this {village} as well as of the whole {island}. It belongs to the kingdom of {Thais}, in our world which is called {Tibia}.' }) -keywordHandler:addKeyword({ 'island' }, StdModule.say, { npcHandler = npcHandler, text = 'The island is separated into a {premium} side and a non-premium side. On both sides you will find {dungeons}, but the premium side tends to be a little less crowded with other players.' }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = 'The city of Thais is reigned by King Tibianus. Of course, there are many other cities but you will learn about them later.' }) -keywordHandler:addKeyword({ 'village' }, StdModule.say, { npcHandler = npcHandler, text = 'The most important places in this village are the {temple}, the different {shops}, the {academy} and the {bridges}.' }) -keywordHandler:addKeyword({ 'bridge' }, StdModule.say, { npcHandler = npcHandler, text = 'There is a bridge to the north and one to the west which lead outside the village. You should only leave once you are well {equipped} and at least level 2.' }) -keywordHandler:addKeyword({ 'main' }, StdModule.say, { npcHandler = npcHandler, text = 'You can leave for mainland once you are level 8. To do so talk to the {oracle}.' }) -keywordHandler:addKeyword({ 'fighting' }, StdModule.say, { npcHandler = npcHandler, text = 'You have to fight {monsters} to train your {skills} and {level}. If you lose {health}, eat {food} to regain it or use a {potion}.' }) -keywordHandler:addKeyword({ 'skill' }, StdModule.say, { npcHandler = npcHandler, text = 'The more you fight with a weapon, the better will be your skill handling this weapon. Don\'t worry about that right now though, this will become important once you have a {vocation}.' }) -keywordHandler:addKeyword({ 'level' }, StdModule.say, { npcHandler = npcHandler, text = 'Once you gained enough experience for a level, you will advance. This means - among other things - more {health} points, a faster walking speed and more strength to carry things.' }) -keywordHandler:addKeyword({ 'farm' }, StdModule.say, { npcHandler = npcHandler, text = 'The farms are west of here. You can buy and sell {food} there which you need to regain {health}.' }) -keywordHandler:addKeyword({ 'rat' }, StdModule.say, { npcHandler = npcHandler, text = 'To attack a rat, simply click on it in your battle list. Make sure that you have proper {equipment}, though! Also, I give you 2 gold coins for each {dead rat}.' }) -keywordHandler:addKeyword({ 'trade' }, StdModule.say, { npcHandler = npcHandler, text = 'I personally don\'t have anything to trade, but you can ask {merchants} for a trade. That will open a window where you can see their offers and the things they buy from you.' }) - -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, I could give you valuable {lessons} or some general {hints} about the game, or a small {quest} if you\'re interested.' }) -keywordHandler:addAliasKeyword({ 'information' }) - -local destinyKeyword = keywordHandler:addKeyword({ 'destiny' }, StdModule.say, { npcHandler = npcHandler, text = 'Shall I try and take a guess at your destiny?' }, function(player) return player:getStorageValue(Storage.RookgaardDestiny) == -1 end) -destinyKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, reset = true }, nil, - function(player) - local destiny = math.random(1, 4) - if destiny == 1 then - npcHandler:say('Hmmm, let me look at you. You got that intelligent sparkle in your eyes and you\'d love to handle great power - that must be a future sorcerer!', player.uid) - elseif destiny == 2 then - npcHandler:say('Hmmm, let me look at you. You have an aura of great wisdom and may have healing hands as well as a sense for the powers of nature - I think you\'re a natural born druid!', player.uid) - elseif destiny == 3 then - npcHandler:say('Hmmm, let me look at you. !', player.uid) - elseif destiny == 4 then - npcHandler:say('Hmmm, let me look at you. Strong and sturdy, with a determined look in your eyes - no doubt the knight profession would be suited for you!', player.uid) - end - player:setStorageValue(Storage.RookgaardDestiny, destiny) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "island", "of", "destiny" }, StdModule.say, { npcHandler = npcHandler, text = "This is an island with {vocation} teachers. You can learn all about the different vocations there once you are level 8." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It's |TIME|, so you are late. Hurry!" }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Seymour, but for you I am 'Sir' Seymour." }) +keywordHandler:addKeyword({ "sir" }, StdModule.say, { npcHandler = npcHandler, text = "At least you know how to address a man of my importance." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the master of this fine {academy}, giving {lessons} to my students." }) +keywordHandler:addKeyword({ "lesson" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, which lesson did you want to attend again? Was it {Rookgaard}, {fighting}, {equipment}, {citizens}, the {academy} or the {oracle}?" }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "In a bank you can deposit your earned gold coins safely. Just go downstairs to {Paulie} and ask him to {deposit} your money." }) +keywordHandler:addKeyword({ "deposit" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, depositing your money will keep it safe, so it is a good idea to store it in the bank. Of course, you can always withdraw it again." }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "Well, the {king} doesn't send troops anymore, the {academy} is dreadfully low on money, and the end of the world is pretty nigh. Apart from that I'm reasonably fine, I suppose." }) +keywordHandler:addKeyword({ "citizen" }, StdModule.say, { npcHandler = npcHandler, text = "Most of the citizens here are {merchants}. You can give me the name of any non-player character and I will tell you something about him or her." }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, text = "Merchants buy and sell goods. Just ask them for a {trade} to see what they offer or buy from you." }) +keywordHandler:addKeyword({ "troll" }, StdModule.say, { npcHandler = npcHandler, text = "Trolls are quite nasty monsters which you shouldn't face before level 3 or 4 depending on your {equipment}. Ask the bridge {guards} for their locations!" }) +keywordHandler:addKeyword({ "guard" }, StdModule.say, { npcHandler = npcHandler, text = "The guards {Dallheim} and {Zerbrus} protect our village from {monsters} trying to enter. They also mark useful {dungeon} locations on your map." }) +keywordHandler:addKeyword({ "vocation" }, StdModule.say, { npcHandler = npcHandler, text = "There are four vocations: {knights}, {paladins}, {sorcerers} and {druids}. You can choose your vocation once you are level 8 and have talked to the {oracle}." }) +keywordHandler:addKeyword({ "sorcerer" }, StdModule.say, { npcHandler = npcHandler, text = "Sorcerers are talented elemental magicians. You will learn all about them once you are level 8 and reached the Island of {Destiny}." }) +keywordHandler:addKeyword({ "knight" }, StdModule.say, { npcHandler = npcHandler, text = "Knights are strong melee fighters. You will learn all about them once you are level 8 and reached the Island of {Destiny}." }) +keywordHandler:addKeyword({ "druid" }, StdModule.say, { npcHandler = npcHandler, text = "Druids are nature magic users and great healers. You will learn all about them once you are level 8 and reached the Island of {Destiny}." }) +keywordHandler:addKeyword({ "paladin" }, StdModule.say, { npcHandler = npcHandler, text = "Paladins are swift distance fighters. You will learn all about them once you are level 8 and reached the Island of {Destiny}." }) +keywordHandler:addKeyword({ "shop" }, StdModule.say, { npcHandler = npcHandler, text = "We have a {weapon} and an {armor} shop south of the academy. {Equipment} such as {ropes} are sold to the north-west. {Potions} can be bought to the south. And then there are the {farms}." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "The world of Tibia is very large with tons of places to explore. Vast deserts, Caribbean islands, deep jungles, green meadows and jagged mountains await you!" }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "The temple is the place to go when you are very low on {health} or poisoned. Ask {Cipfried} for a heal - he usually notices emergencies by himself." }) +keywordHandler:addKeyword({ "health" }, StdModule.say, { npcHandler = npcHandler, text = "Your current health is shown by the red bar on the right side. {Death} awaits you if it goes down to zero." }) +keywordHandler:addKeyword({ "death" }, StdModule.say, { npcHandler = npcHandler, text = "Dying in Tibia is painful, so try to avoid it. You will lose part of your {experience} points and also equipment. Make sure your {health} always stays up!" }) +keywordHandler:addKeyword({ "experience" }, StdModule.say, { npcHandler = npcHandler, text = "You gain experience when fighting {monsters}. You can take a look at your skill window to check your progress." }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Good monsters to start hunting are {rats}. They live in the {sewers} below the village." }) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, text = "One entrance to the sewers is south of this {academy}. Look for a sewer grate, then use it to climb down." }) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { npcHandler = npcHandler, text = "The academy is the building you are standing in. We have a {library}, a {bank} and the room of the {oracle}." }) +keywordHandler:addKeyword({ "library" }, StdModule.say, { npcHandler = npcHandler, text = "There are many books in the bookcases around you, unless some naughty kids stole them again. Read them for more and detailed information." }) +keywordHandler:addKeyword({ "equip" }, StdModule.say, { npcHandler = npcHandler, text = "Don't go hunting without proper equipment. You need at least a suitable {weapon}, {armor}, {shield}, {rope} and {shovel}. A {torch} is also good as well as {legs}, a {helmet} and {shoes}." }) +keywordHandler:addKeyword({ "money" }, StdModule.say, { npcHandler = npcHandler, text = "Make money by killing {monsters} and picking up their {loot}. You can sell many of the things they carry." }) +keywordHandler:addKeyword({ "loot" }, StdModule.say, { npcHandler = npcHandler, text = "Once a monster is dead, you can select 'Open' on the {corpse} to check what's inside. Sometimes they carry {money} or other items which you can sell to {merchants}." }) +keywordHandler:addKeyword({ "corpse" }, StdModule.say, { npcHandler = npcHandler, text = "You can even sell some corpses! For example, you can sell fresh dead rats to {Tom} the tanner or me. He also buys other dead creatures, just ask him for a {trade}." }) +keywordHandler:addKeyword({ "rope" }, StdModule.say, { npcHandler = npcHandler, text = "You definitely need a rope to progress in dungeons, else you might end up stuck. Buy one from {Al Dee} or {Lee'Delle}." }) +keywordHandler:addKeyword({ "shovel" }, StdModule.say, { npcHandler = npcHandler, text = "A shovel is needed to dig some {dungeon} entrances open. 'Use' it on a loose stone pile to make a hole large enough to enter." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "You should not descend into dungeons without proper {equipment}. Once you are all prepared, ask the bridge {guards} for suitable {monsters}." }) +keywordHandler:addKeyword({ "torch" }, StdModule.say, { npcHandler = npcHandler, text = "A torch will provide you with light in dark {dungeons}. 'Use' it to light it. You can buy them from {Al Dee} or {Lee'Delle}." }) +keywordHandler:addKeyword({ "student" }, StdModule.say, { npcHandler = npcHandler, text = "Well, I could give you valuable {lessons} or some general {hints} about the game, or a small {quest} if you're interested." }) +keywordHandler:addKeyword({ "armor" }, StdModule.say, { npcHandler = npcHandler, text = "The starter armor, a coat, does not protect you well. First of all, earn some money and try to get a sturdy leather armor from {Dixi}'s or {Lee'Delle}'s shop. Simply ask for a {trade}." }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "The starter weapon, a club, won't get you far. You should earn some {money} and buy a better weapon such as a sabre from {Obi}'s or {Lee'Delle}'s shop. Simply ask for a {trade}." }) +keywordHandler:addKeyword({ "helmet" }, StdModule.say, { npcHandler = npcHandler, text = "A sturdy leather helmet is a good choice for a beginner. You can either buy it from {Dixi} and {Lee'Delle}, or, once you are strong enough, {loot} them from {trolls}." }) +keywordHandler:addKeyword({ "shield" }, StdModule.say, { npcHandler = npcHandler, text = "I fear you have to buy your first shield by yourself. A wooden shield from {Dixi} or {Lee'Delle} is a good choice." }) +keywordHandler:addKeyword({ "shoe" }, StdModule.say, { npcHandler = npcHandler, text = "Leather boots are basic shoes which will protect you well. You can either buy them from {Dixi} and {Lee'Delle}, or, once you are strong enough, {loot} them from {trolls}." }) +keywordHandler:addKeyword({ "leg" }, StdModule.say, { npcHandler = npcHandler, text = "Leather legs might be a good basic protection. You can buy them from {Dixi} or {Lee'Delle}. Or, once you are strong enough, hunt {trolls}. They sometimes carry them in their {loot}." }) +keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "Many monsters, such as rabbits or deer, are excellent food providers. You can also buy food from {Willie} or {Billy}, the farmers." }) +keywordHandler:addKeyword({ "premium" }, StdModule.say, { npcHandler = npcHandler, text = "Paying for your Tibia account will turn it into a premium account. This means access to more areas and functions of the game as well as other neat features." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "Hail to King Tibianus! Long live our king! Not that he cares for an old veteran who is stuck on this godforsaken island..." }) +keywordHandler:addKeyword({ "potion" }, StdModule.say, { npcHandler = npcHandler, text = "Use a small health potion in case of emergencies to fill up around 75 health points. You can buy them at {Lily}'s shop. She also has {antidote} potions." }) +keywordHandler:addKeyword({ "antidote" }, StdModule.say, { npcHandler = npcHandler, text = "Some monsters poison you. To heal poison, use an antidote potion on yourself. Buy them at {Lily}'s store." }) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { npcHandler = npcHandler, text = "Rookgaard is the name of this {village} as well as of the whole {island}. It belongs to the kingdom of {Thais}, in our world which is called {Tibia}." }) +keywordHandler:addKeyword({ "island" }, StdModule.say, { npcHandler = npcHandler, text = "The island is separated into a {premium} side and a non-premium side. On both sides you will find {dungeons}, but the premium side tends to be a little less crowded with other players." }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "The city of Thais is reigned by King Tibianus. Of course, there are many other cities but you will learn about them later." }) +keywordHandler:addKeyword({ "village" }, StdModule.say, { npcHandler = npcHandler, text = "The most important places in this village are the {temple}, the different {shops}, the {academy} and the {bridges}." }) +keywordHandler:addKeyword({ "bridge" }, StdModule.say, { npcHandler = npcHandler, text = "There is a bridge to the north and one to the west which lead outside the village. You should only leave once you are well {equipped} and at least level 2." }) +keywordHandler:addKeyword({ "main" }, StdModule.say, { npcHandler = npcHandler, text = "You can leave for mainland once you are level 8. To do so talk to the {oracle}." }) +keywordHandler:addKeyword({ "fighting" }, StdModule.say, { npcHandler = npcHandler, text = "You have to fight {monsters} to train your {skills} and {level}. If you lose {health}, eat {food} to regain it or use a {potion}." }) +keywordHandler:addKeyword({ "skill" }, StdModule.say, { npcHandler = npcHandler, text = "The more you fight with a weapon, the better will be your skill handling this weapon. Don't worry about that right now though, this will become important once you have a {vocation}." }) +keywordHandler:addKeyword({ "level" }, StdModule.say, { npcHandler = npcHandler, text = "Once you gained enough experience for a level, you will advance. This means - among other things - more {health} points, a faster walking speed and more strength to carry things." }) +keywordHandler:addKeyword({ "farm" }, StdModule.say, { npcHandler = npcHandler, text = "The farms are west of here. You can buy and sell {food} there which you need to regain {health}." }) +keywordHandler:addKeyword({ "rat" }, StdModule.say, { npcHandler = npcHandler, text = "To attack a rat, simply click on it in your battle list. Make sure that you have proper {equipment}, though! Also, I give you 2 gold coins for each {dead rat}." }) +keywordHandler:addKeyword({ "trade" }, StdModule.say, { npcHandler = npcHandler, text = "I personally don't have anything to trade, but you can ask {merchants} for a trade. That will open a window where you can see their offers and the things they buy from you." }) + +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "Well, I could give you valuable {lessons} or some general {hints} about the game, or a small {quest} if you're interested." }) +keywordHandler:addAliasKeyword({ "information" }) + +local destinyKeyword = keywordHandler:addKeyword({ "destiny" }, StdModule.say, { npcHandler = npcHandler, text = "Shall I try and take a guess at your destiny?" }, function(player) + return player:getStorageValue(Storage.RookgaardDestiny) == -1 +end) +destinyKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, reset = true }, nil, function(player) + local destiny = math.random(1, 4) + if destiny == 1 then + npcHandler:say("Hmmm, let me look at you. You got that intelligent sparkle in your eyes and you'd love to handle great power - that must be a future sorcerer!", player.uid) + elseif destiny == 2 then + npcHandler:say("Hmmm, let me look at you. You have an aura of great wisdom and may have healing hands as well as a sense for the powers of nature - I think you're a natural born druid!", player.uid) + elseif destiny == 3 then + npcHandler:say("Hmmm, let me look at you. !", player.uid) + elseif destiny == 4 then + npcHandler:say("Hmmm, let me look at you. Strong and sturdy, with a determined look in your eyes - no doubt the knight profession would be suited for you!", player.uid) end -) - -keywordHandler:addKeyword({ 'destiny' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, like I told you before, I really think you got that spirit of a sorcerer in you. But of course it\'s completely up to you!' }, function(player) return player:getStorageValue(Storage.RookgaardDestiny) == 1 end) -keywordHandler:addKeyword({ 'destiny' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, like I told you before, I really think you got that spirit of a druid in you. But of course it\'s completely up to you!' }, function(player) return player:getStorageValue(Storage.RookgaardDestiny) == 2 end) -keywordHandler:addKeyword({ 'destiny' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, like I told you before, I really think you got that spirit of a paladin in you. But of course it\'s completely up to you!' }, function(player) return player:getStorageValue(Storage.RookgaardDestiny) == 3 end) -keywordHandler:addKeyword({ 'destiny' }, StdModule.say, { npcHandler = npcHandler, text = 'Well, like I told you before, I really think you got that spirit of a knight in you. But of course it\'s completely up to you!' }, function(player) return player:getStorageValue(Storage.RookgaardDestiny) == 4 end) + player:setStorageValue(Storage.RookgaardDestiny, destiny) +end) + +keywordHandler:addKeyword({ "destiny" }, StdModule.say, { npcHandler = npcHandler, text = "Well, like I told you before, I really think you got that spirit of a sorcerer in you. But of course it's completely up to you!" }, function(player) + return player:getStorageValue(Storage.RookgaardDestiny) == 1 +end) +keywordHandler:addKeyword({ "destiny" }, StdModule.say, { npcHandler = npcHandler, text = "Well, like I told you before, I really think you got that spirit of a druid in you. But of course it's completely up to you!" }, function(player) + return player:getStorageValue(Storage.RookgaardDestiny) == 2 +end) +keywordHandler:addKeyword({ "destiny" }, StdModule.say, { npcHandler = npcHandler, text = "Well, like I told you before, I really think you got that spirit of a paladin in you. But of course it's completely up to you!" }, function(player) + return player:getStorageValue(Storage.RookgaardDestiny) == 3 +end) +keywordHandler:addKeyword({ "destiny" }, StdModule.say, { npcHandler = npcHandler, text = "Well, like I told you before, I really think you got that spirit of a knight in you. But of course it's completely up to you!" }, function(player) + return player:getStorageValue(Storage.RookgaardDestiny) == 4 +end) -- Names -keywordHandler:addKeyword({ 'obi' }, StdModule.say, { npcHandler = npcHandler, text = 'Obi sells and buys {weapons}. You can find his shop south of the academy.' }) -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'Norma has recently opened a bar here meaning she sells drinks and snacks. Nothing of importance to you, young student.' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'Oh, let\'s not talk about Loui.' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'A fine and helpful man. Without him, many new adventurers would be quite clueless.' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'This is Tom the tanner\'s mother. Other than that, I don\'t think she is of importance.' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'Al Dee has a general {equipment} store in the north-western part of the village. He sells useful stuff such as {ropes}.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'A traveller from the {main} continent. I wonder what brought her here. No one comes here of his own free will.' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'Billy is {Willie}\'s cousin, but he has his farm on the {premium} side of the village.' }) -keywordHandler:addKeyword({ 'willie' }, StdModule.say, { npcHandler = npcHandler, text = 'Willie is a fine farmer, although he is short-tempered. He sells and buys {food}.' }) -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = 'A humble monk living in the {temple} south of here. He can heal you if you are wounded or poisoned.' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'Dixi sells and buys {armors}, {shields}, {helmets} and {legs}. You can find her shop south of the academy, just go up the stairs in {Obi}\'s shop.' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'A mysterious druid who lives somewhere in the wilderness. He sells small health {potions} just like {Lily}.' }) -keywordHandler:addKeyword({ 'lee\'delle' }, StdModule.say, { npcHandler = npcHandler, text = 'Lee\'Delle\'s shop is in the western part of town, on the {premium} side. She sells everything cheaper.' }) -keywordHandler:addKeyword({ 'lily' }, StdModule.say, { npcHandler = npcHandler, text = 'In the southern part of town, Lily sells {potions} which might come in handy once you are deep in a dungeon and need {health}.' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'The oracle is a mysterious being just upstairs. It will bring you to the {Island of Destiny} to choose your {vocation} once you are level 8.' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, Paulie is very important. He is the local {bank} clerk.' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'Sir Seymour, yes, that\'s me.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'Tom the tanner buys fresh {corpses}, minotaur leather and paws. Always good to make some {money} if you can carry the corpses there fast enough.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s the guard on the north {bridge} and a great fighter. He can show you {monster} locations. Just ask him about monsters!' }) -keywordHandler:addKeyword({ 'zerbrus' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s the guard on the west {bridge} and a great fighter. He can show you {monster} locations. Just ask him about monsters!' }) - -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye! And remember: No running up and down in the academy!') +keywordHandler:addKeyword({ "obi" }, StdModule.say, { npcHandler = npcHandler, text = "Obi sells and buys {weapons}. You can find his shop south of the academy." }) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "Norma has recently opened a bar here meaning she sells drinks and snacks. Nothing of importance to you, young student." }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, let's not talk about Loui." }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "A fine and helpful man. Without him, many new adventurers would be quite clueless." }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "This is Tom the tanner's mother. Other than that, I don't think she is of importance." }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "Al Dee has a general {equipment} store in the north-western part of the village. He sells useful stuff such as {ropes}." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "A traveller from the {main} continent. I wonder what brought her here. No one comes here of his own free will." }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "Billy is {Willie}'s cousin, but he has his farm on the {premium} side of the village." }) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { npcHandler = npcHandler, text = "Willie is a fine farmer, although he is short-tempered. He sells and buys {food}." }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = "A humble monk living in the {temple} south of here. He can heal you if you are wounded or poisoned." }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "Dixi sells and buys {armors}, {shields}, {helmets} and {legs}. You can find her shop south of the academy, just go up the stairs in {Obi}'s shop." }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "A mysterious druid who lives somewhere in the wilderness. He sells small health {potions} just like {Lily}." }) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { npcHandler = npcHandler, text = "Lee'Delle's shop is in the western part of town, on the {premium} side. She sells everything cheaper." }) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { npcHandler = npcHandler, text = "In the southern part of town, Lily sells {potions} which might come in handy once you are deep in a dungeon and need {health}." }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "The oracle is a mysterious being just upstairs. It will bring you to the {Island of Destiny} to choose your {vocation} once you are level 8." }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, Paulie is very important. He is the local {bank} clerk." }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "Sir Seymour, yes, that's me." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "Tom the tanner buys fresh {corpses}, minotaur leather and paws. Always good to make some {money} if you can carry the corpses there fast enough." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "He's the guard on the north {bridge} and a great fighter. He can show you {monster} locations. Just ask him about monsters!" }) +keywordHandler:addKeyword({ "zerbrus" }, StdModule.say, { npcHandler = npcHandler, text = "He's the guard on the west {bridge} and a great fighter. He can show you {monster} locations. Just ask him about monsters!" }) + +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye! And remember: No running up and down in the academy!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/shadowpunch.lua b/data-otservbr-global/npc/shadowpunch.lua index 17e7ee29545..ae880026511 100644 --- a/data-otservbr-global/npc/shadowpunch.lua +++ b/data-otservbr-global/npc/shadowpunch.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 91, lookLegs = 93, lookFeet = 91, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/shalmar.lua b/data-otservbr-global/npc/shalmar.lua index 567869ff15f..6559e517333 100644 --- a/data-otservbr-global/npc/shalmar.lua +++ b/data-otservbr-global/npc/shalmar.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 7, lookLegs = 65, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/shanar.lua b/data-otservbr-global/npc/shanar.lua index d6f81ccdfee..46240b6e9a1 100644 --- a/data-otservbr-global/npc/shanar.lua +++ b/data-otservbr-global/npc/shanar.lua @@ -15,18 +15,18 @@ npcConfig.outfit = { lookHead = 0, lookBody = 94, lookLegs = 105, - lookFeet = 76 + lookFeet = 76, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Fine elven armor and weapons. Have a look.' }, - { text = 'Looking for protective spells for druids? I can teach you.' } + { text = "Fine elven armor and weapons. Have a look." }, + { text = "Looking for protective spells for druids? I can teach you." }, } local keywordHandler = KeywordHandler:new() @@ -112,7 +112,7 @@ npcConfig.shop = { { itemName = "staff", clientId = 3289, buy = 40 }, { itemName = "steel shield", clientId = 3409, buy = 240 }, { itemName = "throwing knife", clientId = 3298, buy = 25 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -123,7 +123,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/shanoya.lua b/data-otservbr-global/npc/shanoya.lua index 73286a56abd..977f02b283e 100644 --- a/data-otservbr-global/npc/shanoya.lua +++ b/data-otservbr-global/npc/shanoya.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/sharon.lua b/data-otservbr-global/npc/sharon.lua index 33e54d3097e..f7cd10c703b 100644 --- a/data-otservbr-global/npc/sharon.lua +++ b/data-otservbr-global/npc/sharon.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 103, lookLegs = 8, lookFeet = 78, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/shauna.lua b/data-otservbr-global/npc/shauna.lua index a34666b6aa8..fc6fd4fbf7e 100644 --- a/data-otservbr-global/npc/shauna.lua +++ b/data-otservbr-global/npc/shauna.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 95, lookLegs = 38, lookFeet = 58, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -68,17 +68,18 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "Oh, there's a waterpipe in one of my cells? ...", - "I guess my last {prisoner} forgot it there." + "I guess my last {prisoner} forgot it there.", }, npc, creature) npcHandler:setTopic(playerId, 2) end elseif MsgContains(message, "prisoner") then if npcHandler:getTopic(playerId) == 2 then npcHandler:say({ - "My last prisoner? Hmm. ...", "I think he was some guy from Darama. Can't remember his name. ...", + "My last prisoner? Hmm. ...", + "I think he was some guy from Darama. Can't remember his name. ...", "He was here just for one night, because he got drunk and annoyed our citizens. ...", "Obviously he wasn't pleased with this place, because he headed for Thais the next day. ...", - "Something tells me that he won't stay out of trouble for too long." + "Something tells me that he won't stay out of trouble for too long.", }, npc, creature) Player(creature):setStorageValue(Storage.DjinnWar.EfreetFaction.Mission01, 3) npcHandler:setTopic(playerId, 0) @@ -88,40 +89,40 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'news' }, StdModule.say, { npcHandler = npcHandler, text = "No news are good news." }) -keywordHandler:addKeyword({ 'queen' }, StdModule.say, { npcHandler = npcHandler, text = "HAIL TO QUEEN ELOISE!" }) -keywordHandler:addKeyword({ 'leader' }, StdModule.say, { npcHandler = npcHandler, text = "HAIL TO QUEEN ELOISE!" }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = "Just fine." }) -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { npcHandler = npcHandler, text = "Would you like to buy the general key to the town?" }) -keywordHandler:addKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = "Yeah, I bet you'd like to do that! HO, HO, HO!" }) -keywordHandler:addKeyword({ 'army' }, StdModule.say, { npcHandler = npcHandler, text = "If they make trouble, I'll put them behind bars like all others." }) -keywordHandler:addKeyword({ 'guard' }, StdModule.say, { npcHandler = npcHandler, text = "If they make trouble, I'll put them behind bars like all others." }) -keywordHandler:addKeyword({ 'general' }, StdModule.say, { npcHandler = npcHandler, text = "The Bonecrusher family is ideally suited for military jobs." }) -keywordHandler:addKeyword({ 'bonecrusher' }, StdModule.say, { npcHandler = npcHandler, text = "The Bonecrusher family is ideally suited for military jobs." }) -keywordHandler:addKeyword({ 'enemies' }, StdModule.say, { npcHandler = npcHandler, text = "If you have a crime to report and clues, then do it, but don't waste my time." }) -keywordHandler:addKeyword({ 'enemy' }, StdModule.say, { npcHandler = npcHandler, text = "If you have a crime to report and clues, then do it, but don't waste my time." }) -keywordHandler:addKeyword({ 'criminal' }, StdModule.say, { npcHandler = npcHandler, text = "If you have a crime to report and clues, then do it, but don't waste my time." }) -keywordHandler:addKeyword({ 'murderer' }, StdModule.say, { npcHandler = npcHandler, text = "If you have a crime to report and clues, then do it, but don't waste my time." }) -keywordHandler:addKeyword({ 'castle' }, StdModule.say, { npcHandler = npcHandler, text = "The castle is one of the safest places in Carlin." }) -keywordHandler:addKeyword({ 'subject' }, StdModule.say, { npcHandler = npcHandler, text = "Our people are fine and peaceful." }) -keywordHandler:addKeyword({ 'tbi' }, StdModule.say, { npcHandler = npcHandler, text = "I bet they spy on us... not my business, however." }) -keywordHandler:addKeyword({ 'todd' }, StdModule.say, { npcHandler = npcHandler, text = "I scared this bigmouth so much that he left the town by night. HO, HO, HO!" }) -keywordHandler:addKeyword({ 'city' }, StdModule.say, { npcHandler = npcHandler, text = "The city is is a peaceful place, and it's up to me to keep it this way." }) -keywordHandler:addKeyword({ 'hain' }, StdModule.say, { npcHandler = npcHandler, text = "He is the guy responsible to keep the sewers working. Someone has to do such kind of jobs. I can't handle all the garbage of the city myself." }) -keywordHandler:addKeyword({ 'rowenna' }, StdModule.say, { npcHandler = npcHandler, text = "Rowenna is one of our local smiths. When you look for weapons, look for Rowenna." }) -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = "Rowenna is one of our local smiths. When you look for weapons, look for Rowenna." }) -keywordHandler:addKeyword({ 'cornelia' }, StdModule.say, { npcHandler = npcHandler, text = "Cornelia is one of our local smiths. When you look for armor, look for Cornelia." }) -keywordHandler:addKeyword({ 'armor' }, StdModule.say, { npcHandler = npcHandler, text = "Cornelia is one of our local smiths. When you look for armor, look for Cornelia." }) -keywordHandler:addKeyword({ 'legola' }, StdModule.say, { npcHandler = npcHandler, text = "She has the sharpest eye in the region, I'd say." }) -keywordHandler:addKeyword({ 'padreia' }, StdModule.say, { npcHandler = npcHandler, text = "Her peacefulness is sometimes near stupidity." }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = "I worship Banor of course." }) -keywordHandler:addKeyword({ 'banor' }, StdModule.say, { npcHandler = npcHandler, text = "For me, he's the god of justice." }) -keywordHandler:addKeyword({ 'zathroth' }, StdModule.say, { npcHandler = npcHandler, text = "His cult is forbidden in our town." }) -keywordHandler:addKeyword({ 'brog' }, StdModule.say, { npcHandler = npcHandler, text = "Wouldn't wonder if some males worship him secretly. HO, HO, HO!" }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = "I deal more with the human mosters, you know? HO, HO, HO!" }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = "Would certainly make a good butterknife. HO, HO, HO!" }) -keywordHandler:addKeyword({ 'rebellion' }, StdModule.say, { npcHandler = npcHandler, text = "The only thing that rebels here now and then is the stomach of a male after trying to make illegal alcohol. HO, HO, HO!" }) -keywordHandler:addKeyword({ 'alcohol' }, StdModule.say, { npcHandler = npcHandler, text = "For obvious reasons it's forbidden in our city." }) +keywordHandler:addKeyword({ "news" }, StdModule.say, { npcHandler = npcHandler, text = "No news are good news." }) +keywordHandler:addKeyword({ "queen" }, StdModule.say, { npcHandler = npcHandler, text = "HAIL TO QUEEN ELOISE!" }) +keywordHandler:addKeyword({ "leader" }, StdModule.say, { npcHandler = npcHandler, text = "HAIL TO QUEEN ELOISE!" }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "Just fine." }) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, text = "Would you like to buy the general key to the town?" }) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Yeah, I bet you'd like to do that! HO, HO, HO!" }) +keywordHandler:addKeyword({ "army" }, StdModule.say, { npcHandler = npcHandler, text = "If they make trouble, I'll put them behind bars like all others." }) +keywordHandler:addKeyword({ "guard" }, StdModule.say, { npcHandler = npcHandler, text = "If they make trouble, I'll put them behind bars like all others." }) +keywordHandler:addKeyword({ "general" }, StdModule.say, { npcHandler = npcHandler, text = "The Bonecrusher family is ideally suited for military jobs." }) +keywordHandler:addKeyword({ "bonecrusher" }, StdModule.say, { npcHandler = npcHandler, text = "The Bonecrusher family is ideally suited for military jobs." }) +keywordHandler:addKeyword({ "enemies" }, StdModule.say, { npcHandler = npcHandler, text = "If you have a crime to report and clues, then do it, but don't waste my time." }) +keywordHandler:addKeyword({ "enemy" }, StdModule.say, { npcHandler = npcHandler, text = "If you have a crime to report and clues, then do it, but don't waste my time." }) +keywordHandler:addKeyword({ "criminal" }, StdModule.say, { npcHandler = npcHandler, text = "If you have a crime to report and clues, then do it, but don't waste my time." }) +keywordHandler:addKeyword({ "murderer" }, StdModule.say, { npcHandler = npcHandler, text = "If you have a crime to report and clues, then do it, but don't waste my time." }) +keywordHandler:addKeyword({ "castle" }, StdModule.say, { npcHandler = npcHandler, text = "The castle is one of the safest places in Carlin." }) +keywordHandler:addKeyword({ "subject" }, StdModule.say, { npcHandler = npcHandler, text = "Our people are fine and peaceful." }) +keywordHandler:addKeyword({ "tbi" }, StdModule.say, { npcHandler = npcHandler, text = "I bet they spy on us... not my business, however." }) +keywordHandler:addKeyword({ "todd" }, StdModule.say, { npcHandler = npcHandler, text = "I scared this bigmouth so much that he left the town by night. HO, HO, HO!" }) +keywordHandler:addKeyword({ "city" }, StdModule.say, { npcHandler = npcHandler, text = "The city is is a peaceful place, and it's up to me to keep it this way." }) +keywordHandler:addKeyword({ "hain" }, StdModule.say, { npcHandler = npcHandler, text = "He is the guy responsible to keep the sewers working. Someone has to do such kind of jobs. I can't handle all the garbage of the city myself." }) +keywordHandler:addKeyword({ "rowenna" }, StdModule.say, { npcHandler = npcHandler, text = "Rowenna is one of our local smiths. When you look for weapons, look for Rowenna." }) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "Rowenna is one of our local smiths. When you look for weapons, look for Rowenna." }) +keywordHandler:addKeyword({ "cornelia" }, StdModule.say, { npcHandler = npcHandler, text = "Cornelia is one of our local smiths. When you look for armor, look for Cornelia." }) +keywordHandler:addKeyword({ "armor" }, StdModule.say, { npcHandler = npcHandler, text = "Cornelia is one of our local smiths. When you look for armor, look for Cornelia." }) +keywordHandler:addKeyword({ "legola" }, StdModule.say, { npcHandler = npcHandler, text = "She has the sharpest eye in the region, I'd say." }) +keywordHandler:addKeyword({ "padreia" }, StdModule.say, { npcHandler = npcHandler, text = "Her peacefulness is sometimes near stupidity." }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "I worship Banor of course." }) +keywordHandler:addKeyword({ "banor" }, StdModule.say, { npcHandler = npcHandler, text = "For me, he's the god of justice." }) +keywordHandler:addKeyword({ "zathroth" }, StdModule.say, { npcHandler = npcHandler, text = "His cult is forbidden in our town." }) +keywordHandler:addKeyword({ "brog" }, StdModule.say, { npcHandler = npcHandler, text = "Wouldn't wonder if some males worship him secretly. HO, HO, HO!" }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "I deal more with the human mosters, you know? HO, HO, HO!" }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "Would certainly make a good butterknife. HO, HO, HO!" }) +keywordHandler:addKeyword({ "rebellion" }, StdModule.say, { npcHandler = npcHandler, text = "The only thing that rebels here now and then is the stomach of a male after trying to make illegal alcohol. HO, HO, HO!" }) +keywordHandler:addKeyword({ "alcohol" }, StdModule.say, { npcHandler = npcHandler, text = "For obvious reasons it's forbidden in our city." }) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setMessage(MESSAGE_GREET, "Howdy, |PLAYERNAME|!") diff --git a/data-otservbr-global/npc/sherry_mcronald.lua b/data-otservbr-global/npc/sherry_mcronald.lua index 358cf335050..fd5e36647ec 100644 --- a/data-otservbr-global/npc/sherry_mcronald.lua +++ b/data-otservbr-global/npc/sherry_mcronald.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 19, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Isn\'t this a beautiful day? Perfect for farming.' } + { text = "Isn't this a beautiful day? Perfect for farming." }, } local keywordHandler = KeywordHandler:new() @@ -67,7 +67,7 @@ npcConfig.shop = { { itemName = "cheese", clientId = 3607, buy = 5 }, { itemName = "cherry", clientId = 3590, buy = 1 }, { itemName = "melon", clientId = 3593, buy = 8 }, - { itemName = "pumpkin", clientId = 3594, buy = 10 } + { itemName = "pumpkin", clientId = 3594, buy = 10 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -78,7 +78,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/shiantis.lua b/data-otservbr-global/npc/shiantis.lua index 56261f2ca24..4551f83083f 100644 --- a/data-otservbr-global/npc/shiantis.lua +++ b/data-otservbr-global/npc/shiantis.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 36, lookLegs = 13, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Containers, decoration and general goods, all here!' } + { text = "Containers, decoration and general goods, all here!" }, } local keywordHandler = KeywordHandler:new() @@ -143,7 +143,7 @@ npcConfig.shop = { { itemName = "watch", clientId = 6092, buy = 20 }, { itemName = "water pipe", clientId = 2974, buy = 40 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -154,7 +154,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/shimun.lua b/data-otservbr-global/npc/shimun.lua index 245ef544f6c..c3607feccd8 100644 --- a/data-otservbr-global/npc/shimun.lua +++ b/data-otservbr-global/npc/shimun.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 74, lookLegs = 10, lookFeet = 79, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,8 +57,7 @@ local function greetCallback(npc, creature) if player:getStorageValue(Storage.Kilmaresh.First.Access) < 1 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) - and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then + elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 15) elseif player:getStorageValue(Storage.Kilmaresh.First.Mission) == 4 then @@ -116,7 +115,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/shiriel.lua b/data-otservbr-global/npc/shiriel.lua index 236e88f1df9..8793fe4940c 100644 --- a/data-otservbr-global/npc/shiriel.lua +++ b/data-otservbr-global/npc/shiriel.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 1, lookBody = 103, lookLegs = 0, - lookFeet = 95 + lookFeet = 95, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -106,7 +106,7 @@ npcConfig.shop = { { itemName = "wand of cosmic energy", clientId = 3073, buy = 10000 }, { itemName = "wand of decay", clientId = 3072, buy = 5000 }, { itemName = "wand of dragonbreath", clientId = 3075, buy = 1000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -117,7 +117,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/shirith.lua b/data-otservbr-global/npc/shirith.lua index a1753a240bc..7ece0c03a4f 100644 --- a/data-otservbr-global/npc/shirith.lua +++ b/data-otservbr-global/npc/shirith.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 59, lookBody = 39, lookLegs = 58, - lookFeet = 76 + lookFeet = 76, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/shoddy_beggar.lua b/data-otservbr-global/npc/shoddy_beggar.lua index 401884690ae..14707c2e050 100644 --- a/data-otservbr-global/npc/shoddy_beggar.lua +++ b/data-otservbr-global/npc/shoddy_beggar.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 39, lookLegs = 39, lookFeet = 116, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = '*mumbles*' }, - { text = 'That astronomer of the academy simply has no idea what he is dealing with...' }, - { text = 'Some secrets should better be left uncovered.' }, - { text = 'Ha, ha... *mumbles* Hmm.' } + { text = "*mumbles*" }, + { text = "That astronomer of the academy simply has no idea what he is dealing with..." }, + { text = "Some secrets should better be left uncovered." }, + { text = "Ha, ha... *mumbles* Hmm." }, } local keywordHandler = KeywordHandler:new() @@ -67,99 +67,98 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'spare') then - npcHandler:say('Hmm, if you can spare a coin... we can talk. What do you say?', npc, creature) + if MsgContains(message, "spare") then + npcHandler:say("Hmm, if you can spare a coin... we can talk. What do you say?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'device') then + elseif MsgContains(message, "device") then if player:getStorageValue(Storage.SeaOfLight.Questline) == 1 then - npcHandler:say('Persistent little nuisance, aren\'t we? Well, I like your spirit so I will tell you a secret. I may not look the part but I was once a {scientist}. The academy seemed to not like my... attitude and never actually invited me.', npc, creature) + npcHandler:say("Persistent little nuisance, aren't we? Well, I like your spirit so I will tell you a secret. I may not look the part but I was once a {scientist}. The academy seemed to not like my... attitude and never actually invited me.", npc, creature) end - elseif MsgContains(message, 'scientist') then + elseif MsgContains(message, "scientist") then if player:getStorageValue(Storage.SeaOfLight.Questline) == 1 then - npcHandler:say('Indeed, I was one myself a long time ago. I may seem a little... distracted by now, but I was working on many important projects. I even created a device to... well, it will cost you another gold coin if you want me to tell you the whole story. You\'re in?', npc, creature) + npcHandler:say("Indeed, I was one myself a long time ago. I may seem a little... distracted by now, but I was working on many important projects. I even created a device to... well, it will cost you another gold coin if you want me to tell you the whole story. You're in?", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then if not player:removeMoneyBank(1) then - npcHandler:say(player:getStorageValue(Storage.SeaOfLight.Questline) ~= 1 and 'Is that all you have? That would be less than I have... *mumbles*' or 'Mh, it seems you don\'t have any coins.', npc, creature) + npcHandler:say(player:getStorageValue(Storage.SeaOfLight.Questline) ~= 1 and "Is that all you have? That would be less than I have... *mumbles*" or "Mh, it seems you don't have any coins.", npc, creature) npcHandler:setTopic(playerId, 0) return true end - npcHandler:say(player:getStorageValue(Storage.SeaOfLight.Questline) ~= 1 and 'Very kind indeed. Maybe you are not such a bad guy after all. Maybe I can even give it back to you one day... you know I was not always like that *mumbles*.' or 'Thank you very much... plans you say? I don\'t know what you are talking about. Plans for a magic... device? And the people call ME crazy.', npc, creature) + npcHandler:say(player:getStorageValue(Storage.SeaOfLight.Questline) ~= 1 and "Very kind indeed. Maybe you are not such a bad guy after all. Maybe I can even give it back to you one day... you know I was not always like that *mumbles*." or "Thank you very much... plans you say? I don't know what you are talking about. Plans for a magic... device? And the people call ME crazy.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then if not player:removeMoneyBank(1) then - npcHandler:say('Well, if that is all you can spare... better keep it.', npc, creature) + npcHandler:say("Well, if that is all you can spare... better keep it.", npc, creature) npcHandler:setTopic(playerId, 0) return true end - npcHandler:say('Alright, it seems you are serious about this. I will tell you about my device. Every night I looked up to the stars and wondered what worlds we would be able to find if we could just look where we wanted to. So... hey are you still listening?', npc, creature) + npcHandler:say("Alright, it seems you are serious about this. I will tell you about my device. Every night I looked up to the stars and wondered what worlds we would be able to find if we could just look where we wanted to. So... hey are you still listening?", npc, creature) npcHandler:setTopic(playerId, 3) elseif npcHandler:getTopic(playerId) == 3 then - npcHandler:say('Good, good. So eventually I found a way and invented a magic device I called the Lightboat. It was a large construction you could sit in and... well, judging by your looks you don\'t believe a word. Do you want to hear the story or not?', npc, creature) + npcHandler:say("Good, good. So eventually I found a way and invented a magic device I called the Lightboat. It was a large construction you could sit in and... well, judging by your looks you don't believe a word. Do you want to hear the story or not?", npc, creature) npcHandler:setTopic(playerId, 4) elseif npcHandler:getTopic(playerId) == 4 then - npcHandler:say('Fine. For years I gathered all the necessary items to build the device. I travelled, traded and took advantage of some rare opportunities. With luck and patience I eventually got every component I needed. Can you imagine the excitement I experienced?', npc, creature) + npcHandler:say("Fine. For years I gathered all the necessary items to build the device. I travelled, traded and took advantage of some rare opportunities. With luck and patience I eventually got every component I needed. Can you imagine the excitement I experienced?", npc, creature) npcHandler:setTopic(playerId, 5) elseif npcHandler:getTopic(playerId) == 5 then - npcHandler:say('And there I stood before my greatest invention. Door to unknown places, mysterious worlds... yet one of my components was flawed. A small crack in a vital element of my construction quickly led to the failure of the whole project. Still following?', npc, creature) + npcHandler:say("And there I stood before my greatest invention. Door to unknown places, mysterious worlds... yet one of my components was flawed. A small crack in a vital element of my construction quickly led to the failure of the whole project. Still following?", npc, creature) npcHandler:setTopic(playerId, 6) elseif npcHandler:getTopic(playerId) == 6 then - npcHandler:say('The device was ultimately destroyed. I barely escaped the chaos with my life. My laboratory was shattered, as were all the components of the cursed device. With nothing left, I started to lead a new, different life. Do you know what that means?', npc, creature) + npcHandler:say("The device was ultimately destroyed. I barely escaped the chaos with my life. My laboratory was shattered, as were all the components of the cursed device. With nothing left, I started to lead a new, different life. Do you know what that means?", npc, creature) npcHandler:setTopic(playerId, 7) elseif npcHandler:getTopic(playerId) == 7 then - npcHandler:say('Pah!! You have NO idea, leave me alone now.', npc, creature) + npcHandler:say("Pah!! You have NO idea, leave me alone now.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 8 then - npcHandler:say('Right... I\'m glad everything was destroyed. I don\'t even know why I kept the remaining copy of the plans all those years... oh, did I say this aloud?', npc, creature) + npcHandler:say("Right... I'm glad everything was destroyed. I don't even know why I kept the remaining copy of the plans all those years... oh, did I say this aloud?", npc, creature) npcHandler:setTopic(playerId, 9) elseif npcHandler:getTopic(playerId) == 9 then - npcHandler:say('Yes, well... I do have one remaining copy of the plans. I will keep them as a... reminder. Such ill-fated devices only cause trouble and despair. Mankind would be better off, without them, right?', npc, creature) + npcHandler:say("Yes, well... I do have one remaining copy of the plans. I will keep them as a... reminder. Such ill-fated devices only cause trouble and despair. Mankind would be better off, without them, right?", npc, creature) npcHandler:setTopic(playerId, 10) elseif npcHandler:getTopic(playerId) == 10 then - npcHandler:say('Ah, you think you are wise but you know nothing, nothing about science, nothing about the opportunities it offers... You will never understand scientists like me.', npc, creature) + npcHandler:say("Ah, you think you are wise but you know nothing, nothing about science, nothing about the opportunities it offers... You will never understand scientists like me.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 11 then player:addItem(9696, 1) player:setStorageValue(Storage.SeaOfLight.Questline, 2) player:setStorageValue(Storage.SeaOfLight.Mission1, 2) - npcHandler:say('Well, to be honest, I envy him a little. He can continue his research in his laboratory. He still has working equipment... I sometimes read his publications. He is an able man, but completely on the wrong track... give these plans to him.', npc, creature) + npcHandler:say("Well, to be honest, I envy him a little. He can continue his research in his laboratory. He still has working equipment... I sometimes read his publications. He is an able man, but completely on the wrong track... give these plans to him.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Mean, heartless... go and leave me be.', npc, creature) + npcHandler:say("Mean, heartless... go and leave me be.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then - npcHandler:say('Well, whatever then...', npc, creature) + npcHandler:say("Well, whatever then...", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then - npcHandler:say('Then stop bothering me.', npc, creature) + npcHandler:say("Then stop bothering me.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 4 then - npcHandler:say('Your decision.', npc, creature) + npcHandler:say("Your decision.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 5 then - npcHandler:say('Yes and I, I... you mean what? Can\'t imagine? Well, then there is no purpose to continue telling you this story.', npc, creature) + npcHandler:say("Yes and I, I... you mean what? Can't imagine? Well, then there is no purpose to continue telling you this story.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 6 then - npcHandler:say('*mumbles*', npc, creature) + npcHandler:say("*mumbles*", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 7 then - npcHandler:say('Thought so. It means starting anew, without any home, money or goal in your life. However, it also opens up opportunities... don\'t you agree?', npc, creature) + npcHandler:say("Thought so. It means starting anew, without any home, money or goal in your life. However, it also opens up opportunities... don't you agree?", npc, creature) npcHandler:setTopic(playerId, 8) elseif npcHandler:getTopic(playerId) == 8 then - npcHandler:say('No, no, you are right, I should have tried to rebuild it, I should have been more careful, I should... ah, why did I even tell you this.', npc, creature) + npcHandler:say("No, no, you are right, I should have tried to rebuild it, I should have been more careful, I should... ah, why did I even tell you this.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 9 then - npcHandler:say('Phew... alright, it was nice talking to you.', npc, creature) + npcHandler:say("Phew... alright, it was nice talking to you.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 10 then - npcHandler:say('Hm, maybe you are right. You could give these plans to someone who might be able to finish this project. Someone who will not make the mistakes I made. Someone... hm, do you know the astronomer Spectulus?', npc, creature) + npcHandler:say("Hm, maybe you are right. You could give these plans to someone who might be able to finish this project. Someone who will not make the mistakes I made. Someone... hm, do you know the astronomer Spectulus?", npc, creature) npcHandler:setTopic(playerId, 11) end end diff --git a/data-otservbr-global/npc/sholley.lua b/data-otservbr-global/npc/sholley.lua index 6ed11c9f63f..b1f41912793 100644 --- a/data-otservbr-global/npc/sholley.lua +++ b/data-otservbr-global/npc/sholley.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 12, lookFeet = 92, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,14 +54,14 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if (MsgContains(message, "friend")) then + if MsgContains(message, "friend") then if player:getStorageValue(Storage.DarkTrails.Mission12) == 1 then npcHandler:say("So you have proven yourself a true friend of our city. It's hard to believe but I think your words only give substance to suspicions my heart had harboured since quite a while. ...", npc, creature) npcHandler:say("So Harsin is probably not the person he appeared to be. Actually I haven't heard from him for quite a while. He was resident in the local bed and breakfast hotel. You should be able to find him there or at least to learn about his whereabouts.", npc, creature) player:setStorageValue(Storage.DarkTrails.Mission13, 1) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "quandon")) then + elseif MsgContains(message, "quandon") then if player:setStorageValue(Storage.DarkTrails.Mission14) == 2 then npcHandler:say("A transporter dead? This is more then alarming. It seems Harsin is up to something and whatever it is, it's nothing good at all. But not all is lost. A local medium, Barnabas, has truly the gift to speak to the dead. ...", npc, creature) npcHandler:say("I'll mark his home on your map. He should be able to get the information you need to locate Harsin.", npc, creature) diff --git a/data-otservbr-global/npc/shortsighted_dwarf.lua b/data-otservbr-global/npc/shortsighted_dwarf.lua index 380c3eb6d74..d1c86fa3dcb 100644 --- a/data-otservbr-global/npc/shortsighted_dwarf.lua +++ b/data-otservbr-global/npc/shortsighted_dwarf.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/siestaar.lua b/data-otservbr-global/npc/siestaar.lua index 8126b032a9e..d5c62f22cb7 100644 --- a/data-otservbr-global/npc/siestaar.lua +++ b/data-otservbr-global/npc/siestaar.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 128, lookLegs = 72, lookFeet = 94, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Don\'t forget to deposit your money here in the Tibian Bank before you head out for adventure.', yell = false } + { text = "Don't forget to deposit your money here in the Tibian Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/siflind.lua b/data-otservbr-global/npc/siflind.lua index e10aa9cf083..959d916f99a 100644 --- a/data-otservbr-global/npc/siflind.lua +++ b/data-otservbr-global/npc/siflind.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 81, lookLegs = 95, lookFeet = 114, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -121,7 +121,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "I am pleased to hear that. On the isle of Tyrsung foreign hunters have set up camp. They are hunting the animals there with no mercy. We will haveto find something that distracts them from hunting ...", "Take this jug here and travel to the jungle of Tiquanda. There you will find a race of wood eating ants called termites. Use the jug on one of their hills to catch some of them ...", - "Then find someone in Svargrond that brings you to Tyrsung. There, release the termites on the bottom of a mast in the hull of the hunters' ship. If you are done, report to me about your mission." + "Then find someone in Svargrond that brings you to Tyrsung. There, release the termites on the bottom of a mast in the hull of the hunters' ship. If you are done, report to me about your mission.", }, npc, creature) player:setStorageValue(Storage.TheIceIslands.Questline, 6) player:setStorageValue(Storage.TheIceIslands.Mission03, 1) -- Questlog The Ice Islands Quest, Nibelor 2: Ecological Terrorism @@ -275,7 +275,7 @@ npcConfig.shop = { { itemName = "wand of inferno", clientId = 3071, buy = 15000 }, { itemName = "wand of starstorm", clientId = 8092, buy = 18000 }, { itemName = "wand of voodoo", clientId = 8094, buy = 22000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -286,7 +286,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/sigurd.lua b/data-otservbr-global/npc/sigurd.lua index da5592e4db4..78b630963dd 100644 --- a/data-otservbr-global/npc/sigurd.lua +++ b/data-otservbr-global/npc/sigurd.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 69 + lookType = 69, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -96,7 +96,7 @@ npcConfig.shop = { { itemName = "wand of cosmic energy", clientId = 3073, buy = 10000 }, { itemName = "wand of decay", clientId = 3072, buy = 5000 }, { itemName = "wand of dragonbreath", clientId = 3075, buy = 1000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -107,7 +107,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/silas.lua b/data-otservbr-global/npc/silas.lua index 021358e38a9..3dd4ffba22c 100644 --- a/data-otservbr-global/npc/silas.lua +++ b/data-otservbr-global/npc/silas.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 118, lookLegs = 117, lookFeet = 97, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -77,7 +77,7 @@ npcConfig.shop = { { itemName = "spectral bolt", clientId = 35902, buy = 70 }, { itemName = "tarsal arrow", clientId = 14251, buy = 6 }, { itemName = "throwing star", clientId = 3287, buy = 42 }, - { itemName = "vortex bolt", clientId = 14252, buy = 6 } + { itemName = "vortex bolt", clientId = 14252, buy = 6 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -88,7 +88,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/simon_the_beggar.lua b/data-otservbr-global/npc/simon_the_beggar.lua index 10e1aa27753..3cc14f697e2 100644 --- a/data-otservbr-global/npc/simon_the_beggar.lua +++ b/data-otservbr-global/npc/simon_the_beggar.lua @@ -16,14 +16,14 @@ npcConfig.outfit = { lookBody = 123, lookLegs = 123, lookFeet = 40, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { - { itemName = "shovel", clientId = 3457, count = 1 } + { itemName = "shovel", clientId = 3457, count = 1 }, } -- On buy npc shop message @@ -35,15 +35,14 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcConfig.voices = { interval = 15000, chance = 50, { text = "Alms! Alms for the poor!" }, { text = "Sir, Ma'am, have a gold coin to spare?" }, - { text = "I need help! Please help me!" } + { text = "I need help! Please help me!" }, } local keywordHandler = KeywordHandler:new() @@ -130,8 +129,7 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "cookie") then - if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 - and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.SimonTheBeggar) ~= 1 then + if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.SimonTheBeggar) ~= 1 then npcHandler:say("Have you brought a cookie for the poor?", npc, creature) npcHandler:setTopic(playerId, 1) end @@ -152,9 +150,13 @@ local function creatureSayCallback(npc, creature, type, message) end npc:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) - npcHandler:say("Well, it's the least you can do for those who live in dire poverty. \z + npcHandler:say( + "Well, it's the least you can do for those who live in dire poverty. \z A single cookie is a bit less than I'd expected, but better than ... WHA ... WHAT?? \z - MY BEARD! MY PRECIOUS BEARD! IT WILL TAKE AGES TO CLEAR IT OF THIS CONFETTI!", npc, creature) + MY BEARD! MY PRECIOUS BEARD! IT WILL TAKE AGES TO CLEAR IT OF THIS CONFETTI!", + npc, + creature + ) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) elseif npcHandler:getTopic(playerId) == 2 then @@ -173,8 +175,12 @@ local function creatureSayCallback(npc, creature, type, message) return true end - npcHandler:say("That's great! I have stolen something from Dermot. \z - You can buy it for 200 gold. Do you want to buy it?", npc, creature) + npcHandler:say( + "That's great! I have stolen something from Dermot. \z + You can buy it for 200 gold. Do you want to buy it?", + npc, + creature + ) npcHandler:setTopic(playerId, 4) elseif npcHandler:getTopic(playerId) == 4 then if not player:removeMoneyBank(200) then @@ -206,71 +212,55 @@ local function creatureSayCallback(npc, creature, type, message) end -- Node 1 -local node1 = keywordHandler:addKeyword({ "addon" }, StdModule.say, - { - npcHandler = npcHandler, - text = "For the small fee of 20000 gold pieces I will help you mix this potion. \z - Just bring me 100 pieces of ape fur, which are necessary to create this potion. ... Do we have a deal?" - } -) +local node1 = keywordHandler:addKeyword({ "addon" }, StdModule.say, { + npcHandler = npcHandler, + text = "For the small fee of 20000 gold pieces I will help you mix this potion. \z + Just bring me 100 pieces of ape fur, which are necessary to create this potion. ... Do we have a deal?", +}) node1:addChildKeyword({ "yes" }, BeggarSecond, {}) -node1:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Alright then. Come back when you got all neccessary items.", - reset = true - } -) +node1:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Alright then. Come back when you got all neccessary items.", + reset = true, +}) -- Node 2 -local node2 = keywordHandler:addKeyword({ "dress" }, StdModule.say, - { - npcHandler = npcHandler, - text = "For the small fee of 20000 gold pieces I will help you mix this potion. \z - Just bring me 100 pieces of ape fur, which are necessary to create this potion. ...Do we have a deal?" - } -) +local node2 = keywordHandler:addKeyword({ "dress" }, StdModule.say, { + npcHandler = npcHandler, + text = "For the small fee of 20000 gold pieces I will help you mix this potion. \z + Just bring me 100 pieces of ape fur, which are necessary to create this potion. ...Do we have a deal?", +}) node2:addChildKeyword({ "yes" }, BeggarFirst, {}) -node2:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Alright then. Come back when you got all neccessary items.", - reset = true - } -) +node2:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Alright then. Come back when you got all neccessary items.", + reset = true, +}) -- Node 3 -local node3 = keywordHandler:addKeyword({ "staff" }, StdModule.say, - { - npcHandler = npcHandler, - text = "To get beggar staff you need to give me simon the beggar's staff. Do you have it with you?" - } -) +local node3 = keywordHandler:addKeyword({ "staff" }, StdModule.say, { + npcHandler = npcHandler, + text = "To get beggar staff you need to give me simon the beggar's staff. Do you have it with you?", +}) node3:addChildKeyword({ "yes" }, BeggarSecond, {}) -node3:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Alright then. Come back when you got all neccessary items.", - reset = true - } -) +node3:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Alright then. Come back when you got all neccessary items.", + reset = true, +}) -- Node 4 -local node4 = keywordHandler:addKeyword({ "outfit" }, StdModule.say, - { - npcHandler = npcHandler, - text = "For the small fee of 20000 gold pieces I will help you mix this potion. \z - Just bring me 100 pieces of ape fur, which are necessary to create this potion. ...Do we have a deal?" - } -) +local node4 = keywordHandler:addKeyword({ "outfit" }, StdModule.say, { + npcHandler = npcHandler, + text = "For the small fee of 20000 gold pieces I will help you mix this potion. \z + Just bring me 100 pieces of ape fur, which are necessary to create this potion. ...Do we have a deal?", +}) node4:addChildKeyword({ "yes" }, BeggarFirst, {}) -node4:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Alright then. Come back when you got all neccessary items.", - reset = true - } -) +node4:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Alright then. Come back when you got all neccessary items.", + reset = true, +}) npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|. I am a poor man. Please help me.") npcHandler:setMessage(MESSAGE_FAREWELL, "Have a nice day.") diff --git a/data-otservbr-global/npc/sinatuki.lua b/data-otservbr-global/npc/sinatuki.lua index 3f272031eba..74809d5a351 100644 --- a/data-otservbr-global/npc/sinatuki.lua +++ b/data-otservbr-global/npc/sinatuki.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 0, lookBody = 0, lookLegs = 0, - lookFeet = 0 + lookFeet = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -49,14 +49,14 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'Chuqua' }, StdModule.say, { npcHandler = npcHandler, text = "Chuqua jamjam!! Tiyopa Sinatuki?" }) +keywordHandler:addKeyword({ "Chuqua" }, StdModule.say, { npcHandler = npcHandler, text = "Chuqua jamjam!! Tiyopa Sinatuki?" }) local fishsID = { 7158, 7159 } local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) - if MsgContains(message, 'Nupi') then + if MsgContains(message, "Nupi") then if player:getStorageValue(Storage.BarbarianTest.Questline) >= 3 and player:getStorageValue(Storage.TheIceIslands.Questline) >= 5 then for i = 1, #fishsID do if player:getItemCount(fishsID[i]) >= 100 then diff --git a/data-otservbr-global/npc/sinclair.lua b/data-otservbr-global/npc/sinclair.lua index fded415fa71..d2f47964d89 100644 --- a/data-otservbr-global/npc/sinclair.lua +++ b/data-otservbr-global/npc/sinclair.lua @@ -16,20 +16,20 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 19, lookFeet = 95, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Indeed, there has to be some other way.' }, - { text = 'Mmh, interesting.' }, - { text = 'Yes indeed, all of the equipment should be checked and calibrated regularly.' }, - { text = 'No, we have to give this another go.' } + { text = "Indeed, there has to be some other way." }, + { text = "Mmh, interesting." }, + { text = "Yes indeed, all of the equipment should be checked and calibrated regularly." }, + { text = "No, we have to give this another go." }, } local keywordHandler = KeywordHandler:new() @@ -76,16 +76,13 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'mission') then + if MsgContains(message, "mission") then local qStorage = player:getStorageValue(Storage.SpiritHunters.Mission01) if qStorage == 3 then npcHandler:say("So, did you find anything worth examining? Did you actually catch a ghost?", npc, creature) npcHandler:setTopic(playerId, 3) elseif qStorage == 2 then - npcHandler:say({ "So you have passed Spectulus' acceptance test. Well, I'm sure you will live up to that. ...", - "We are trying to get this business up and running and need any help we can get. Did he tell you about the spirit cage?" - }, npc, creature) + npcHandler:say({ "So you have passed Spectulus' acceptance test. Well, I'm sure you will live up to that. ...", "We are trying to get this business up and running and need any help we can get. Did he tell you about the spirit cage?" }, npc, creature) npcHandler:setTopic(playerId, 1) elseif qStorage > 2 then npcHandler:say("You already done this quest.", npc, creature) @@ -94,11 +91,12 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Talk research with spectulus to take some mission.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say({ "Excellent. Now we need to concentrate on testing that thing. The spirit cage has been calibrated based on some tests we made - as well as your recent findings over at the graveyard. ...", + npcHandler:say({ + "Excellent. Now we need to concentrate on testing that thing. The spirit cage has been calibrated based on some tests we made - as well as your recent findings over at the graveyard. ...", "Using the device on the remains of a ghost right after its defeat should capture it inside this trap. We could then transfer it into our spirit chamber which is in fact a magical barrier. ..", - "At first, however, we need you to find a specimen and bring it here for us to test the capacity of the device. Are you ready for this?" + "At first, however, we need you to find a specimen and bring it here for us to test the capacity of the device. Are you ready for this?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then @@ -108,11 +106,12 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then if player:getStorageValue(Storage.SpiritHunters.CharmUse) == 1 then - npcHandler:say({ "Fascinating, let me see. ...", + npcHandler:say({ + "Fascinating, let me see. ...", "Amazing! I will transfer this to our spirit chamber right about - now! ...", "Alright, the device is holding it. The magical barrier should be able to contain nearly 20 times the current load. That's a complete success! Spectulus, are you seeing this? We did it! ...", "Well, you did! You really helped us pulling this off. Thank you Lord Stalks! ...", - "I doubt we will have much time to hunt for new specimens ourselves in the near future. If you like, you can continue helping us by finding and capturing more and different ghosts. Just talk to me to receive a new task." + "I doubt we will have much time to hunt for new specimens ourselves in the near future. If you like, you can continue helping us by finding and capturing more and different ghosts. Just talk to me to receive a new task.", }, npc, creature) player:setStorageValue(Storage.SpiritHunters.Mission01, 4) player:addExperience(500, true) @@ -125,11 +124,12 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 4 then - npcHandler:say({ "Magnificent! Alright, we will at least need 5 caught ghosts. We will pay some more if you can catch 5 nightstalkers. Of course you will earn some more if you bring us 5 souleaters. ...", + npcHandler:say({ + "Magnificent! Alright, we will at least need 5 caught ghosts. We will pay some more if you can catch 5 nightstalkers. Of course you will earn some more if you bring us 5 souleaters. ...", "I heard they dwell somewhere in that new continent - Zao? Well anyway, if you feel you've got enough, just return with what you've got and we will see. Good luck! ...", "Keep in mind that the specimens are only of any worth to us if the exact amount of 5 per specimen is reached. ...", "Furhtermore, to successfully bind Nightstalkers to the cage, you will need to have caught at least 5 Ghosts. To bind Souleaters, you will need at least 5 Ghosts and 5 Nightstalkers. ...", - "The higher the amount of spirit energy in the cage, the higher its effective capacity. Oh and always come back and tell me if you lose your spirit cage." + "The higher the amount of spirit energy in the cage, the higher its effective capacity. Oh and always come back and tell me if you lose your spirit cage.", }, npc, creature) player:setStorageValue(Storage.SpiritHunters.Mission01, 5) npcHandler:setTopic(playerId, 0) @@ -152,11 +152,12 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 0) end end - elseif MsgContains(message, 'research') then + elseif MsgContains(message, "research") then local qStorage = player:getStorageValue(Storage.SpiritHunters.Mission01) if qStorage == 4 then - npcHandler:say({ "We are still in need of more research concerning environmental as well as psychic ecto-magical influences. Besides more common ghosts we also need some of the harder to come by nightstalkers and - if you're really hardboiled - souleaters. ...", - "We will of course pay for every ghost you catch. You will receive more if you hunt for some of the tougher fellows - but don't overdue it. What do you say?" + npcHandler:say({ + "We are still in need of more research concerning environmental as well as psychic ecto-magical influences. Besides more common ghosts we also need some of the harder to come by nightstalkers and - if you're really hardboiled - souleaters. ...", + "We will of course pay for every ghost you catch. You will receive more if you hunt for some of the tougher fellows - but don't overdue it. What do you say?", }, npc, creature) npcHandler:setTopic(playerId, 4) elseif qStorage == 5 then diff --git a/data-otservbr-global/npc/sirik.lua b/data-otservbr-global/npc/sirik.lua index ede2bc45015..c30406a10f6 100644 --- a/data-otservbr-global/npc/sirik.lua +++ b/data-otservbr-global/npc/sirik.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 116, lookFeet = 116, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/sissek.lua b/data-otservbr-global/npc/sissek.lua index 82d48c2d8cb..0b070d4132e 100644 --- a/data-otservbr-global/npc/sissek.lua +++ b/data-otservbr-global/npc/sissek.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 115 + lookType = 115, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/sister_of_jack.lua b/data-otservbr-global/npc/sister_of_jack.lua index 81c991e5b9c..6414d9ad56f 100644 --- a/data-otservbr-global/npc/sister_of_jack.lua +++ b/data-otservbr-global/npc/sister_of_jack.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 128, lookLegs = 110, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -29,7 +29,7 @@ npcConfig.voices = { { text = "Where did I put my broom? Mother?" }, { text = "Mother?! Oh no, now I have to do this all over again" }, { text = "Mhmhmhmhm." }, - { text = "Lalala..." } + { text = "Lalala..." }, } local keywordHandler = KeywordHandler:new() @@ -68,45 +68,40 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "jack") then - if (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 5) then - if - (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Mother == 1) and - (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Sister)) < 1) - then + if player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 5 then + if player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Mother == 1) and (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.Sister)) < 1 then npcHandler:say("Why are you asking, he didn't get himself into something again did he?", npc, creature) npcHandler:setTopic(playerId, 1) end end elseif MsgContains(message, "spectulus") then - if (npcHandler:getTopic(playerId) == 3) then + if npcHandler:getTopic(playerId) == 3 then npcHandler:say( "Spelltolust?! That sounds awfully nasty! What was he doing there - are you telling \z me he lived an alternate life and he didn't even tell {mother}?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 4) end elseif MsgContains(message, "yes") then - if (npcHandler:getTopic(playerId) == 1) then - npcHandler:say( - { - "I knew it! He likes taking extended walks outside, leaving all the cleaning to me - \z + if npcHandler:getTopic(playerId) == 1 then + npcHandler:say({ + "I knew it! He likes taking extended walks outside, leaving all the cleaning to me - \z especially when he is working on this sculpture, this... 'thing' he tries to create. ...", - "What did he do? Since you look like a guy from the city, I bet he went to Edron in \z - secrecy or something like that, didn't he? And you are here because of that?" - }, - npc, creature) + "What did he do? Since you look like a guy from the city, I bet he went to Edron in \z + secrecy or something like that, didn't he? And you are here because of that?", + }, npc, creature) npcHandler:setTopic(playerId, 2) - elseif (npcHandler:getTopic(playerId) == 2) then + elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say("What?! And what did he do there? Who did he visit there?", npc, creature) npcHandler:setTopic(playerId, 3) - elseif (npcHandler:getTopic(playerId) == 4) then - npcHandler:say( - { - "Yesss! So this time he will get it for a change! And he lived there...? He helped whom? \z + elseif npcHandler:getTopic(playerId) == 4 then + npcHandler:say({ + "Yesss! So this time he will get it for a change! And he lived there...? He helped whom? \z Ha! He won't get away this time! What did he do there? I see... interesting! ...", - "Wait till mother hears that! Oh he will be in for a surprise, I can tell you that. Ma!! Maaaaa!!" - }, - npc, creature) + "Wait till mother hears that! Oh he will be in for a surprise, I can tell you that. Ma!! Maaaaa!!", + }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.Sister, 1) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine, 6) diff --git a/data-otservbr-global/npc/skeleton_guard.lua b/data-otservbr-global/npc/skeleton_guard.lua index f41d182ff61..33a2ec18760 100644 --- a/data-otservbr-global/npc/skeleton_guard.lua +++ b/data-otservbr-global/npc/skeleton_guard.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/skip.lua b/data-otservbr-global/npc/skip.lua index b92331eb442..abf119d6288 100644 --- a/data-otservbr-global/npc/skip.lua +++ b/data-otservbr-global/npc/skip.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/skjaar.lua b/data-otservbr-global/npc/skjaar.lua index bc661f55eb3..bb65966c48f 100644 --- a/data-otservbr-global/npc/skjaar.lua +++ b/data-otservbr-global/npc/skjaar.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 9 + lookType = 9, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,31 +53,31 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'key') then - npcHandler:say('I will give the key to the crypt only to the closest followers of my master. Would you like me to test you?', npc, creature) + if MsgContains(message, "key") then + npcHandler:say("I will give the key to the crypt only to the closest followers of my master. Would you like me to test you?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Before we start I must ask you for a small donation of 1000 gold coins. Are you willing to pay 1000 gold coins for the test?', npc, creature) + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 then + npcHandler:say("Before we start I must ask you for a small donation of 1000 gold coins. Are you willing to pay 1000 gold coins for the test?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 2 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 2 then if player:removeMoneyBank(1000) then - npcHandler:say('All right then. Here comes the first question. What was the name of Dago\'s favourite pet?', npc, creature) + npcHandler:say("All right then. Here comes the first question. What was the name of Dago's favourite pet?", npc, creature) npcHandler:setTopic(playerId, 3) else - npcHandler:say('You don\'t have enough money', npc, creature) + npcHandler:say("You don't have enough money", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'redips') and npcHandler:getTopic(playerId) == 3 then - npcHandler:say('Perhaps you knew him after all. Tell me - how many fingers did he have when he died?', npc, creature) + elseif MsgContains(message, "redips") and npcHandler:getTopic(playerId) == 3 then + npcHandler:say("Perhaps you knew him after all. Tell me - how many fingers did he have when he died?", npc, creature) npcHandler:setTopic(playerId, 4) - elseif MsgContains(message, '7') and npcHandler:getTopic(playerId) == 4 then - npcHandler:say('Also true. But can you also tell me the colour of the deamons in which master specialized?', npc, creature) + elseif MsgContains(message, "7") and npcHandler:getTopic(playerId) == 4 then + npcHandler:say("Also true. But can you also tell me the colour of the deamons in which master specialized?", npc, creature) npcHandler:setTopic(playerId, 5) - elseif MsgContains(message, 'black') and npcHandler:getTopic(playerId) == 5 then - npcHandler:say('It seems you are worthy after all. Do you want the key to the crypt?', npc, creature) + elseif MsgContains(message, "black") and npcHandler:getTopic(playerId) == 5 then + npcHandler:say("It seems you are worthy after all. Do you want the key to the crypt?", npc, creature) npcHandler:setTopic(playerId, 6) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 6 then - npcHandler:say('Here you are', npc, creature) + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 6 then + npcHandler:say("Here you are", npc, creature) local key = player:addItem(2970, 1) if key then key:setActionId(3142) diff --git a/data-otservbr-global/npc/smiley.lua b/data-otservbr-global/npc/smiley.lua index 5a0ea6cf9d9..ae213965bf3 100644 --- a/data-otservbr-global/npc/smiley.lua +++ b/data-otservbr-global/npc/smiley.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/snake_eye.lua b/data-otservbr-global/npc/snake_eye.lua index c9bb08bd11c..557dea0334b 100644 --- a/data-otservbr-global/npc/snake_eye.lua +++ b/data-otservbr-global/npc/snake_eye.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 30, lookLegs = 40, lookFeet = 50, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,16 +58,16 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'package for rashid') then + if MsgContains(message, "package for rashid") then if player:getStorageValue(Storage.TravellingTrader.Mission02) >= 1 and player:getStorageValue(Storage.TravellingTrader.Mission02) < 3 then - npcHandler:say('So you\'re the delivery boy? Go ahead, but I warn you, it\'s quite heavy. You can take it from the box over there.', npc, creature) + npcHandler:say("So you're the delivery boy? Go ahead, but I warn you, it's quite heavy. You can take it from the box over there.", npc, creature) player:setStorageValue(Storage.TravellingTrader.Mission02, 3) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'documents') then + elseif MsgContains(message, "documents") then if player:getStorageValue(Storage.ThievesGuild.Mission04) == 1 then player:setStorageValue(Storage.ThievesGuild.Mission04, 2) - npcHandler:say('Funny thing that everyone thinks we have forgers for fake documents here. But no, we don\'t. The best forger is old Ahmet in Ankrahmun.', npc, creature) + npcHandler:say("Funny thing that everyone thinks we have forgers for fake documents here. But no, we don't. The best forger is old Ahmet in Ankrahmun.", npc, creature) end end return true @@ -81,7 +81,7 @@ npcConfig.shop = { { itemName = "fish", clientId = 3578, buy = 5 }, { itemName = "meat", clientId = 3577, buy = 6 }, { itemName = "mug of beer", clientId = 2880, buy = 5, count = 3 }, - { itemName = "mug of wine", clientId = 2880, buy = 6, count = 2 } + { itemName = "mug of wine", clientId = 2880, buy = 6, count = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -92,7 +92,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/soilance.lua b/data-otservbr-global/npc/soilance.lua index d9f69a2894b..c4a717e39db 100644 --- a/data-otservbr-global/npc/soilance.lua +++ b/data-otservbr-global/npc/soilance.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 48, lookLegs = 57, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,7 +54,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "ham", clientId = 3582, buy = 5 }, - { itemName = "meat", clientId = 3577, buy = 3 } + { itemName = "meat", clientId = 3577, buy = 3 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -65,7 +65,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/sorcerer_estrella.lua b/data-otservbr-global/npc/sorcerer_estrella.lua index 61228d4345b..a70e2d7bb04 100644 --- a/data-otservbr-global/npc/sorcerer_estrella.lua +++ b/data-otservbr-global/npc/sorcerer_estrella.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 132, lookLegs = 94, lookFeet = 114, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/spectulus.lua b/data-otservbr-global/npc/spectulus.lua index c599784d731..1b00895c4ec 100644 --- a/data-otservbr-global/npc/spectulus.lua +++ b/data-otservbr-global/npc/spectulus.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 78, lookFeet = 97, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -29,7 +29,7 @@ npcConfig.voices = { { text = "Precisely." }, { text = "So my initial calculations had been correct!" }, { text = "Looks like I have to find another way then." }, - { text = "Hm, I need to recapitulate my equipment..." } + { text = "Hm, I need to recapitulate my equipment..." }, } local keywordHandler = KeywordHandler:new() @@ -64,16 +64,10 @@ local function greetCallback(npc, creature) local player = Player(creature) if player:getStorageValue(Storage.SeaOfLight.Questline) < 10 then - npcHandler:setMessage( - MESSAGE_GREET, - "Hello |PLAYERNAME|! You're late, do you have no concept of time? My mission is of utmost importance. If you are not interested in helping me, you might as well just leave." - ) + npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|! You're late, do you have no concept of time? My mission is of utmost importance. If you are not interested in helping me, you might as well just leave.") npcHandler:setTopic(playerId, 0) else - npcHandler:setMessage( - MESSAGE_GREET, - "Ah hello again |PLAYERNAME|! I still have one or two other {missions} for you. There are also some {tasks} someone needs to attend to." - ) + npcHandler:setMessage(MESSAGE_GREET, "Ah hello again |PLAYERNAME|! I still have one or two other {missions} for you. There are also some {tasks} someone needs to attend to.") npcHandler:setTopic(playerId, 0) end return true @@ -101,37 +95,31 @@ local function creatureSayCallback(npc, creature, type, message) local tombsStorage = player:getStorageValue(Storage.SpiritHunters.TombUse) if qStorage == -1 then if npcHandler:getTopic(playerId) == 17 then - npcHandler:say( - { - "Alright. Let's go. At first we need to find out more about ghosts in general. ...", - "I still need more information and values to properly calibrate the magical orientation of orange \z + npcHandler:say({ + "Alright. Let's go. At first we need to find out more about ghosts in general. ...", + "I still need more information and values to properly calibrate the magical orientation of orange \z and turquoise sparkle attractors which we will need to actually contain ghost-emissions. ...", - "So are you in?" - }, - npc, creature) + "So are you in?", + }, npc, creature) npcHandler:setTopic(playerId, 18) else - npcHandler:say( - { - "I fine-tuned another set of devices. You are the lucky candidate to first lay eyes on some revolutionary \z + npcHandler:say({ + "I fine-tuned another set of devices. You are the lucky candidate to first lay eyes on some revolutionary \z new concepts. ...", - "Are you ready to help science once again?" - }, - npc, creature) + "Are you ready to help science once again?", + }, npc, creature) npcHandler:setTopic(playerId, 12) end elseif qStorage == 1 and tombsStorage >= 2 then npcHandler:say("You are back, how did the measurements go? Did you recognise anything of interest?", npc, creature) npcHandler:setTopic(playerId, 19) elseif qStorage == 2 then - npcHandler:say( - { - "Alright, now that we have enough results, the analysing can start. While I do this, I will need you \z + npcHandler:say({ + "Alright, now that we have enough results, the analysing can start. While I do this, I will need you \z to test the magically enhanced cage Sinclair developed to contain spirits effectively. ...", - "Take the spirit cage from him and use it on the essence of a common ghost. Its essence will then be \z - sucked into the cage and we can study him right here in the safety of the academy walls." - }, - npc, creature) + "Take the spirit cage from him and use it on the essence of a common ghost. Its essence will then be \z + sucked into the cage and we can study him right here in the safety of the academy walls.", + }, npc, creature) npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "mission") then @@ -140,19 +128,25 @@ local function creatureSayCallback(npc, creature, type, message) "Alright, you look bright enough to fulfil my requests - at least you do not fall asleep while standing there. \z Ahem... I heard about a certain inventor who created a {magic device} to actually sail the {sea of light}. \z Will you help me find him?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.SeaOfLight.Questline) == 1 then npcHandler:say( "You should find the beggar somewhere in Edron. Stay persistent, \z I'm sure he knows more than he wants to tell us.", - npc, creature) + npc, + creature + ) elseif player:getStorageValue(Storage.SeaOfLight.Questline) == 2 then if not player:removeItem(9696, 1) then npcHandler:say( "o have you talked to the beggar? What did he tell you? Where are the plans...? Wh...? He did? He is? \z You've already got the plans? Beautiful!! Amazing! Alright it will take some time to recapitulate these plans.", - npc, creature) + npc, + creature + ) return true end @@ -163,7 +157,9 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say( "So have you talked to the beggar? What did he tell you? Where are the plans...? Wh...? He did? He is? \z You've already got the plans? Beautiful!! Amazing! Alright it will take some time to recapitulate these plans.", - npc, creature) + npc, + creature + ) addEvent(function() releasePlayer(npc, creature) end, 1000) @@ -173,39 +169,45 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say( "It will take some time to work out the initial problem of the device. Come back when I've found the \z component needed to finish it. Alright, B connects to D and another two nails marked with S go... hmmm.", - npc, creature) + npc, + creature + ) elseif timeStorage > 0 and timeStorage < os.time() then npcHandler:say( "...connects to N942. Alright!! That's it! I just finished a prototype device! And it looks like I \z figured out the initial failure. A very special crystal is needed for the device to work. Aren't \z you as curious as me to know what went wrong?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 2) end elseif player:getStorageValue(Storage.SeaOfLight.Questline) == 4 then npcHandler:say( "Did you enter the Lost Mines yet? They are west of Edron, close to the sea. You will also need a \z pick once you get to the crystal deposit.", - npc, creature) + npc, + creature + ) elseif player:getStorageValue(Storage.SeaOfLight.Questline) == 5 then if player:getItemCount(9697) == 0 then npcHandler:say( "Hm, so did you find a rare crystal? Show me... hey! That's not a rare crystal. What... where did \z you get that anyway? Please return to me with the right crystal.", - npc, creature) + npc, + creature + ) return true end player:addExperience(500, true) player:setStorageValue(Storage.SeaOfLight.Questline, 6) player:setStorageValue(Storage.SeaOfLight.Mission2, 3) - npcHandler:say( - { - "Did you find a rare crystal? Show me... Amazing, absolutely amazing. This crystal alone is worth \z + npcHandler:say({ + "Did you find a rare crystal? Show me... Amazing, absolutely amazing. This crystal alone is worth \z a small fortune. Ahem, of course I'm glad you brought it to me for further research instead of \z bringing it to a merchant. ...", - "Please return here if you want to continue helping me with another mission." - }, - npc, creature) + "Please return here if you want to continue helping me with another mission.", + }, npc, creature) addEvent(function() releasePlayer(npc, creature) end, 3000) @@ -213,41 +215,50 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say( "Well, the only thing left to do would be to offer the crystal at the well of the collector. There \z must be a pedestal near the well, where you need to put your donation. Ha, do you think you could do that?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 5) elseif player:getStorageValue(Storage.SeaOfLight.Questline) == 7 then npcHandler:say( "Found the well yet? Look on one of the ice isles near Carlin. I'm perfectly sure that the well \z with the pedestal is located on one of them. And be careful with the carrying device, I only have \z this one prototype.", - npc, creature) + npc, + creature + ) elseif player:getStorageValue(Storage.SeaOfLight.Questline) == 8 then npcHandler:say( "So have you found the well and entered the lair? I hope you can find the {mirror crystal}\z in there. It is the only way to finish the {Lightboat}.", - npc, creature) + npc, + creature + ) elseif player:getStorageValue(Storage.SeaOfLight.Questline) == 9 then if player:getItemCount(9699) == 0 then npcHandler:say( "Put the mirror crystal into the special carrying device \z I gave you and bring it directly to me.", - npc, creature) + npc, + creature + ) return true end npcHandler:say( "Do you have the mirror crystal? Unbelievable! Alright I will extract the crystal from the device \z myself, would you please give me the device with the crystal and step back?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 7) - elseif - (player:getStorageValue(Storage.SeaOfLight.Questline) == 10) and - (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) < 1) - then + elseif (player:getStorageValue(Storage.SeaOfLight.Questline) == 10) and (player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) < 1) then npcHandler:say( "After the debacle with the crystal, I started focussing on other things. There are also some {tasks} \z that still need to be done. If you can spare the time to continue helping me, it shall not be to your \z disadvantage. So are you in for another mission?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 27) elseif player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 2 then npcHandler:say("So you found him? Have you talked to {Jack} yet?", npc, creature) @@ -256,7 +267,9 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say( "You're back from {Jack}! Mh, by the looks of your face I doubt our little redecoration \z project yielded any success. But I had an even better idea while you were gone - ready to give it another try?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 32) elseif player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 6 then npcHandler:say("So, did you talk to his family? Were you able to convince them?", npc, creature) @@ -265,29 +278,29 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say( "Did you find out what hobby {Jack} has? Did you separate him from this activity? \z Only if he has a free mind, he can truly get back to his former self! Now all you need to do is talk to him again!", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 9 then - npcHandler:say( - { - "Oh you are back already. Hm... I doubt it worked, did it? It DID? Oh well... good job. Really! \z + npcHandler:say({ + "Oh you are back already. Hm... I doubt it worked, did it? It DID? Oh well... good job. Really! \z Now... the thing is - the actual {Jack} wrote. No, no wait. Calm down first. ...", - "You remember me explaining the fold in time, causing a tiny disturbance in infinity? Well, as I \z + "You remember me explaining the fold in time, causing a tiny disturbance in infinity? Well, as I \z already told you, {Jack} was indeed not transported to the future... but to the past. ...", - "I received some kind of letter this morning that has been stored for me by the Academy for \z + "I received some kind of letter this morning that has been stored for me by the Academy for \z about 70 years now. ...", - "It said it should be opened at a specific day 20 years ago to prevent this whole incident but I \z + "It said it should be opened at a specific day 20 years ago to prevent this whole incident but I \z wasn't even at the Academy by that time. Someone just found the letter earlier today and brought \z it to my attention. ...", - "So our {Jack} here was in fact... a completely different person. Now, now... don't get upset, \z + "So our {Jack} here was in fact... a completely different person. Now, now... don't get upset, \z there was no chance for me to warn you earlier! ...", - "And it wasn't all that bad, was it? Heh... I mean... everyone needs a change in life now and then! \z + "And it wasn't all that bad, was it? Heh... I mean... everyone needs a change in life now and then! \z And he can still come here if he likes to! ...", - "Or wait - erm... better not tell him where exactly I live, I have some kind of presentiment concerning \z + "Or wait - erm... better not tell him where exactly I live, I have some kind of presentiment concerning \z that whole affair... yes, we should just leave everything as it is now, indeed we should. ...", - "Anyway you did a great job and I thank you for... putting your hands into my fire Player... once again." - }, - npc, creature) + "Anyway you did a great job and I thank you for... putting your hands into my fire Player... once again.", + }, npc, creature) player:addExperience(6000, true) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine, 10) npcHandler:setTopic(playerId, 0) @@ -297,13 +310,11 @@ local function creatureSayCallback(npc, creature, type, message) player:addExperience(100, true) player:setStorageValue(Storage.SeaOfLight.Questline, 1) player:setStorageValue(Storage.SeaOfLight.Mission1, 1) - npcHandler:say( - { - "That's the spirit! As time is of the essence, we should start right now. ...", - "A beggar here in Edron brags about how smart he is and that he knows about a man who lost his \z - sanity because of an experiment, but he won't tell anyone any details. Maybe he knows more." - }, - npc, creature) + npcHandler:say({ + "That's the spirit! As time is of the essence, we should start right now. ...", + "A beggar here in Edron brags about how smart he is and that he knows about a man who lost his \z + sanity because of an experiment, but he won't tell anyone any details. Maybe he knows more.", + }, npc, creature) addEvent(function() releasePlayer(npc, creature) end, 3000) @@ -312,36 +323,40 @@ local function creatureSayCallback(npc, creature, type, message) "The device needs a special crystal. It's called {mirror crystal}. The inventor somehow damaged it \z - with fatal results. He had to give up, as no second crystal was left to try. I, however, know of \z another one... but are you up to the task?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 3) elseif npcHandler:getTopic(playerId) == 3 then npcHandler:say( "One remaining mirror crystal is in the hands of a creature called the collector which collects all \z kinds of crystals. The only way to get access to its lair is to donate a very rare crystal to a secret \z well. I need you to get one, will you help me?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 4) elseif npcHandler:getTopic(playerId) == 4 then player:setStorageValue(Storage.SeaOfLight.Questline, 4) player:setStorageValue(Storage.SeaOfLight.Mission1, 4) player:setStorageValue(Storage.SeaOfLight.Mission2, 1) player:addMapMark(Position(33103, 31811, 7), MAPMARK_CROSS, "Lost Mines") - npcHandler:say( - { - "Alright, now listen. West of Edron, near the ocean, you'll find the Lost Mines. Go down there \z + npcHandler:say({ + "Alright, now listen. West of Edron, near the ocean, you'll find the Lost Mines. Go down there \z to recover one of its rare crystals. But beware, people say the mine workers who died there years \z ago in an horrible accident are still digging. ...", - "I will mark the location of the mines on your map. Be careful when entering these muddy depths and \z - don't forget that you will need a pick to gather the crystals." - }, - npc, creature) + "I will mark the location of the mines on your map. Be careful when entering these muddy depths and \z + don't forget that you will need a pick to gather the crystals.", + }, npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 5 then npcHandler:say( "Good, because if you wouldn't do it... listen, this well is on one of the isles near Carlin. \z There you offer the crystal. Once you get access to its lair, find the collector and... convince it to give \z you the mirror crystal. Understood?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 6) elseif npcHandler:getTopic(playerId) == 6 then player:setStorageValue(Storage.SeaOfLight.Questline, 7) @@ -351,7 +366,9 @@ local function creatureSayCallback(npc, creature, type, message) "To collect the unbelievably rare, practically unique mirror crystal, you will need to use this \z special carrying device I developed. If you find the crystal, use it to store it and transport it \z safely to me. There is no second one.", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 7 then if not player:removeItem(9699, 1) then @@ -364,16 +381,14 @@ local function creatureSayCallback(npc, creature, type, message) player:addExperience(1000, true) player:setStorageValue(Storage.SeaOfLight.Mission3, 4) player:setStorageValue(Storage.SeaOfLight.Questline, 10) - npcHandler:say( - { - "Ah yes, slowly, carefully, careful ...", - "...and how shiny it is, almost there ...", - "...now wh- no, NO, NOOO! It just ...", - "...slipped. And cracked. Don't look at me like that ...", - "...I need some time to get over this. What? Oh, yes you can take the remains if you like. \z - Just get it out of my sight." - }, - npc, creature) + npcHandler:say({ + "Ah yes, slowly, carefully, careful ...", + "...and how shiny it is, almost there ...", + "...now wh- no, NO, NOOO! It just ...", + "...slipped. And cracked. Don't look at me like that ...", + "...I need some time to get over this. What? Oh, yes you can take the remains if you like. \z + Just get it out of my sight.", + }, npc, creature) addEvent(function() releasePlayer(npc, creature) end, 5000) @@ -381,42 +396,44 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say( "Of course you are. And here we go. I have to ask some questions first. One: You aint \z afraid of no ghost, right?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 13) elseif npcHandler:getTopic(playerId) == 13 then npcHandler:say( "Good. Two: You know that ghosts exist and/or have found and/or defeated \z one or more of them?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 14) elseif npcHandler:getTopic(playerId) == 14 then - npcHandler:say( - { - "Alright. Let's see - yes. ...", - "Three: You can explain at least three of the following terms, infestations, \z + npcHandler:say({ + "Alright. Let's see - yes. ...", + "Three: You can explain at least three of the following terms, infestations, \z collective apparitions, ectoplasmic segregations, ecto-magical field phenomena, \z - neuro-speculative sub-conscious awareness of spirits, ghosts and/or ghasts." - }, - npc, creature) + neuro-speculative sub-conscious awareness of spirits, ghosts and/or ghasts.", + }, npc, creature) npcHandler:setTopic(playerId, 15) elseif npcHandler:getTopic(playerId) == 16 then - npcHandler:say( - { - "I recently teamed up with a fellow scientist and friend Sinclair, who is also more \z + npcHandler:say({ + "I recently teamed up with a fellow scientist and friend Sinclair, who is also more \z of an explorer than me, to combine our discoveries in the field of complex phenomena \z not that easily to describe just by today's state of magic. ...", - "Of course I am talking about ghosts. I know, I know. Hard to believe in those times \z + "Of course I am talking about ghosts. I know, I know. Hard to believe in those times \z of highly advanced magic we live in. Yet there are some things, we fail to explain. ...", - "And that is exactly where we come in! Oh, and you of course. We will not only explain \z - them - we will ''remove'' them. Just tell me whenever you are ready to help us with our research." - }, - npc, creature) + "And that is exactly where we come in! Oh, and you of course. We will not only explain \z + them - we will ''remove'' them. Just tell me whenever you are ready to help us with our research.", + }, npc, creature) npcHandler:setTopic(playerId, 17) elseif npcHandler:getTopic(playerId) == 18 then npcHandler:say( "Good. Take this wand - we call it a spirit meter - and go to the graveyard I have \z marked on your map and take a few measurements on the graves.", - npc, creature) + npc, + creature + ) player:setStorageValue(Storage.SpiritHunters.Mission01, 1) player:addItem(4049, 1) npcHandler:setTopic(playerId, 0) @@ -425,7 +442,9 @@ local function creatureSayCallback(npc, creature, type, message) "Let me see the spirit meter. Hmmm... those are grave news you bring - uhm, you \z know what I mean. But this is awesome! Now I know for sure that the calibration is \z only some short bursts of magically enhanced energy away.", - npc, creature) + npc, + creature + ) player:addExperience(500, true) player:addItem(3035, 5) addEvent(function() @@ -434,58 +453,52 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.SpiritHunters.Mission01, 2) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 27 then - npcHandler:say( - { - "Very well, hmmm, but this one might get a bit - unpleasant. What? No no, not for you. Probably only \z + npcHandler:say({ + "Very well, hmmm, but this one might get a bit - unpleasant. What? No no, not for you. Probably only \z for the person I want you to help me with. You know, I once had an {intern}. His name was {Jack}. ...", - "He was as eager as you to help me - quite a nice person, really. At the time he was still around I was \z + "He was as eager as you to help me - quite a nice person, really. At the time he was still around I was \z working on a device to transport its user to any specified point in time - be it back or to the future \z if you know what I mean. ...", - "He was helping me quite a lot, no matter which task I applied to him. And one day we finally did it, our \z + "He was helping me quite a lot, no matter which task I applied to him. And one day we finally did it, our \z tempus machina was up and running. He was certainly all man of action when he actually stepped into the \z machine for our first run. ...", - "The device was designed for one person with enough room for some provisions and one or two books for reading \z + "The device was designed for one person with enough room for some provisions and one or two books for reading \z if one would land in some drab solitude. You never know, you know? So we fired it up and yes, it actually \z worked! ...", - "He completely disappeared right before my eyes! Eureka! Well ahem, there was but one tiny little problem. ...", - "As all magical calibration was done from my lab I never thought about adding some sort of control to its \z + "He completely disappeared right before my eyes! Eureka! Well ahem, there was but one tiny little problem. ...", + "As all magical calibration was done from my lab I never thought about adding some sort of control to its \z interior. In other words {Jack} has travelled in time, without any means to come back. ...", - "Sleepless days of intensive research, however, brought me to the conclusion that he was not actually \z + "Sleepless days of intensive research, however, brought me to the conclusion that he was not actually \z travelling to the future, but to another {dimension}, {parallel} to ours. There is still a chance to rescue \z - him - and you can help me. What do you say?" - }, - npc, creature) + him - and you can help me. What do you say?", + }, npc, creature) npcHandler:setTopic(playerId, 28) elseif npcHandler:getTopic(playerId) == 28 then - npcHandler:say( - { - "You know, in some way you remind me of {Jack}. Well, I am glad you are up to this task - we just have \z + npcHandler:say({ + "You know, in some way you remind me of {Jack}. Well, I am glad you are up to this task - we just have \z to get him back. I owe that to him and I owe it to science. Alright, now let me explain that whole \z {dimensional} problem. ...", - "The bad news is, using the device at that state was not a good idea. We effectively caused a magical \z + "The bad news is, using the device at that state was not a good idea. We effectively caused a magical \z distortion in the fabric of time, space and thus folded infinity - just a little. ...", - "The good news is that {Jack} is still on our world, and not even inconveniently far away. ...", - "Unfortunately in the current state of time, he was never interested in attending Edron Academy, he \z + "The good news is that {Jack} is still on our world, and not even inconveniently far away. ...", + "Unfortunately in the current state of time, he was never interested in attending Edron Academy, he \z never looked for a job to finance his studies and of course has never been one of my interns. ...", - "Since he was in the magic sphere during the launch, the time fold only affected his own {dimensional} \z + "Since he was in the magic sphere during the launch, the time fold only affected his own {dimensional} \z anchoring. ...", - "The number of parallel {dimensions} is endless and the fold made him slip into one completely different \z + "The number of parallel {dimensions} is endless and the fold made him slip into one completely different \z course of time where he never was the person I once knew. ...", - "Now you know it all. Still want to help?" - }, - npc, creature) + "Now you know it all. Still want to help?", + }, npc, creature) npcHandler:setTopic(playerId, 29) elseif npcHandler:getTopic(playerId) == 29 then - npcHandler:say( - { - "Thank you. So here we are - now how to get {Jack} back to our {dimension}? Well, the answer to that \z + npcHandler:say({ + "Thank you. So here we are - now how to get {Jack} back to our {dimension}? Well, the answer to that \z is easy. It is simply not possible. All my tests concerning the reversal of the process failed. ...", - "But {Jack} is not yet lost to us - if we can get him back to his former self! You have to tell him \z + "But {Jack} is not yet lost to us - if we can get him back to his former self! You have to tell him \z about his former life, convince him, change his environment. But at first you will need to talk to him \z and find out who exactly we are dealing with now. ...", - "I will mark his current location on your map, just ask him about me and see what happens - good luck." - }, - npc, creature) + "I will mark his current location on your map, just ask him about me and see what happens - good luck.", + }, npc, creature) player:setStorageValue(Storage.SeaOfLight.Questline, 11) player:setStorageValue(Storage.TibiaTales.DefaultStart, 1) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine, 1) @@ -494,67 +507,61 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say( "Yes? And he didn't remember anything? Not even me? That's not good. Then we will have to \z do everything ourselves. Are you ready to continue?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 31) elseif npcHandler:getTopic(playerId) == 31 then - npcHandler:say( - { - "A trigger is needed to make him recall what happened. First thing should be to change his \z + npcHandler:say({ + "A trigger is needed to make him recall what happened. First thing should be to change his \z environment to be more... familiar. As soon as he will have the things he used to have around \z him, his memories will come back. ...", - "I know that he used to have a very comfy red cushioned chair and an old globe which sat near \z + "I know that he used to have a very comfy red cushioned chair and an old globe which sat near \z the middle of the room. He also used a smaller telescope and he had that extremely large amphora \z in a corner. And... there was one other thing. ...", - "A rocking horse. He just loved it! Find these items, buy them if you need to and place them \z - where {Jack} lives. Ask him about the furniture and don't forget to tell me about his reaction!" - }, - npc, creature) + "A rocking horse. He just loved it! Find these items, buy them if you need to and place them \z + where {Jack} lives. Ask him about the furniture and don't forget to tell me about his reaction!", + }, npc, creature) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine, 3) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 32 then - npcHandler:say( - { - "Alright listen. As long as his social environment accepts him as the person he is now, \z + npcHandler:say({ + "Alright listen. As long as his social environment accepts him as the person he is now, \z he will never come free from the shackles that bind him to this alternate self. ...", - "Oh, he has a sister you say? And his mother is living with them? ...", - "Hm... that's strange, I don't even recall his family. Never knew he had a mother and a \z + "Oh, he has a sister you say? And his mother is living with them? ...", + "Hm... that's strange, I don't even recall his family. Never knew he had a mother and a \z sister. Tell them the truth about him - maybe they will understand and even help him getting \z this over with. ...", - "But be careful, the {dimensional} shift could mean that they will not even know what you're \z - talking about since they are more closely linked to him than anyone else." - }, - npc, creature) + "But be careful, the {dimensional} shift could mean that they will not even know what you're \z + talking about since they are more closely linked to him than anyone else.", + }, npc, creature) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine, 5) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 33 then - npcHandler:say( - { - "Success!! Now it will be far easier to convince him of his true self! Excellent work. \z + npcHandler:say({ + "Success!! Now it will be far easier to convince him of his true self! Excellent work. \z Now the only thing left to do is to separate him from whatever still binds him to that place. \z Did he develop any habits perhaps? ...", - "A hobby or something! Yes, ask him about his hobbies! Convince him somehow that anything he is \z + "A hobby or something! Yes, ask him about his hobbies! Convince him somehow that anything he is \z doing there does not match his true self - he didn't have any hobbies except a healthy interest in \z science - you MUST convince him, no matter what! ...", - "Or everything we achieved would be in vain. We can still save Jack! Now go and do what you must do." - }, - npc, creature) + "Or everything we achieved would be in vain. We can still save Jack! Now go and do what you must do.", + }, npc, creature) player:setStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine, 7) npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "jack") then if player:getStorageValue(Storage.TibiaTales.JackFutureQuest.QuestLine) == 10 then - npcHandler:say( - { - "Well you know Jack - after all you talked to him in person. He will get over it. \z + npcHandler:say({ + "Well you know Jack - after all you talked to him in person. He will get over it. \z As for the real Jack, my former intern... I am glad that nothing serious happened to him. ...", - "According to his letter, he did just fine so many years ago. He somehow managed to make a \z + "According to his letter, he did just fine so many years ago. He somehow managed to make a \z name of himself when he cast some magic we enhanced through our research - of course no one \z back then had ever seen such spells. ...", - "Oh and he sends his regards to... how did he put it - 'whoever is currently helping me getting \z + "Oh and he sends his regards to... how did he put it - 'whoever is currently helping me getting \z out of whatever mess I am currently in'. I... don't really know how this was meant but I \z - guess this is directed at... you!" - }, - npc, creature) + guess this is directed at... you!", + }, npc, creature) npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "collective apparitions") then @@ -564,7 +571,9 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say( "Ah well, let's forget about the scientific details - you will do just fine as \z long as you do exactly what I say. Ready for me to go on with your task?", - npc, creature) + npc, + creature + ) npcHandler:setTopic(playerId, 16) end end @@ -573,12 +582,16 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say( "Yes, maybe it was the right decision. Astronomical research is \z nothing for the faint-hearted.", - npc, creature) + npc, + creature + ) elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say( "Well, the... what? You... mean you're no longer interested? I see, well \z maybe I overestimated your spirit after all.", - npc, creature) + npc, + creature + ) elseif npcHandler:getTopic(playerId) == 3 then npcHandler:say("Alright, alright. You'll never find out the true secrets of life with such attitude, hm.", npc, creature) elseif npcHandler:getTopic(playerId) == 4 then @@ -594,79 +607,62 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "machine") and player:getStorageValue(Storage.LiquidBlackQuest.Visitor) == 3 then - npcHandler:say( - { - "Ah, the machine you found at that island. Well, I built this thing to venture far beneath \z + npcHandler:say({ + "Ah, the machine you found at that island. Well, I built this thing to venture far beneath \z the very soil we walk on. I suspected something there. Something deep down below. Something evil. \z Even more so than the dreaded bugs which are crawling my study. ...", - "Drilling hole after hole only to get stuck in another hard, unbreakable sediment again and again, \z + "Drilling hole after hole only to get stuck in another hard, unbreakable sediment again and again, \z I was about to quit this pointless enterprise. ...", - "However, the very last day I lingered on that island, I finally fell into a large hollow right \z + "However, the very last day I lingered on that island, I finally fell into a large hollow right \z under the beach. My drill was shattered and the machine was not mobile anymore. ...", - "I am well aware that this may sound laughable now - at this part all of my colleagues burst into \z + "I am well aware that this may sound laughable now - at this part all of my colleagues burst into \z laughter anyway - but suddenly there were stairs. Incredibly large stairs that led to the underworld. \z - A world deep under the sea - can you believe this?" - }, - npc, creature) + A world deep under the sea - can you believe this?", + }, npc, creature) npcHandler:setTopic(playerId, 21) - elseif - MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 21 and - player:getStorageValue(Storage.LiquidBlackQuest.Visitor) == 3 - then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 21 and player:getStorageValue(Storage.LiquidBlackQuest.Visitor) == 3 then if player:getStorageValue(Storage.LiquidBlackQuest.Visitor) == 3 then - npcHandler:say( - { - "You do? Well, the end of this story was that I had to leave the place. ...", - "I couldnt explore what lies below the stairs as there was an unpredictable stream. Diving \z + npcHandler:say({ + "You do? Well, the end of this story was that I had to leave the place. ...", + "I couldnt explore what lies below the stairs as there was an unpredictable stream. Diving \z into these waters would have been an uncontrollable risk, even with the means to survive without any air. ...", - "So I used the portable teleporting device I installed into my machine in case of an emergency and went home. \z + "So I used the portable teleporting device I installed into my machine in case of an emergency and went home. \z I could only take the most important research documents with me and had to leave \z most of my equipment in the cave. ...", - "Of course I also left my final notes with the coordinates there. And for the life of me I cannot remember where \z + "Of course I also left my final notes with the coordinates there. And for the life of me I cannot remember where \z I dug that stupid hole. ...", - "When I arrived at home I immediately started looking for a way to manoeuvre in these chaotic conditions once \z + "When I arrived at home I immediately started looking for a way to manoeuvre in these chaotic conditions once \z I rediscovered the lost entrance. I never remembered it, but it seems you found it as you \z indeed have my original notes. ...", - "Oh and just in case you want to complete what I have started - feel free to do so. Up to it?" - }, - npc, creature) + "Oh and just in case you want to complete what I have started - feel free to do so. Up to it?", + }, npc, creature) npcHandler:setTopic(playerId, 22) end - elseif - MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 22 and - player:getStorageValue(Storage.LiquidBlackQuest.Visitor) == 3 - then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 22 and player:getStorageValue(Storage.LiquidBlackQuest.Visitor) == 3 then if player:getStorageValue(Storage.LiquidBlackQuest.Visitor) == 3 then - npcHandler:say( - { - "Well, if you really want to delve into this - I could use some help. So you have \z + npcHandler:say({ + "Well, if you really want to delve into this - I could use some help. So you have \z found my {machine} on that island? And you found the notes with the coordinates? \z Then you can find the entrance! ...", - "Just look for a large staircase with sprawling steps. There is an unpassable stream \z + "Just look for a large staircase with sprawling steps. There is an unpassable stream \z there that will prevent you from venturing further on. But fear not, you can indeed \z travel down there - with these small {enhancements} I created. ...", - "At first, take this gold for the passage by ship and return to the Gray Island from \z + "At first, take this gold for the passage by ship and return to the Gray Island from \z where I started my expedition many years ago. From there you should find a way to reach \z the Gray Beach of Quirefang as no ordinary ship can land there. ...", - "I will put this under your footgear. Here you go. And this in your nose. There. And \z + "I will put this under your footgear. Here you go. And this in your nose. There. And \z there will be no further problems for you down there. Except- ah, well youll find \z - out yourself soon enough, wont you?" - }, - npc, creature) + out yourself soon enough, wont you?", + }, npc, creature) npcHandler:setTopic(playerId, 23) end - elseif - MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 23 and - player:getStorageValue(Storage.LiquidBlackQuest.Visitor) == 3 - then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 23 and player:getStorageValue(Storage.LiquidBlackQuest.Visitor) == 3 then if player:getStorageValue(Storage.LiquidBlackQuest.Visitor) == 3 then - npcHandler:say( - { - "Then off you go! Im sorry that I cannot offer you any further help but Im \z + npcHandler:say({ + "Then off you go! Im sorry that I cannot offer you any further help but Im \z sure you will find support along your way. And - be careful. The sea can \z - appear pitch black down there." - }, - npc, creature) + appear pitch black down there.", + }, npc, creature) player:setStorageValue(Storage.LiquidBlackQuest.Visitor, 4) npcHandler:setTopic(playerId, 24) end @@ -676,25 +672,21 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "rumours") then - npcHandler:say( - { - "There are rumours of aggressive fishmen in northern Tiquanda. We have to \z + npcHandler:say({ + "There are rumours of aggressive fishmen in northern Tiquanda. We have to \z find out if this is even remotely connected to the Njey. ...", - "What's puzzling me is that they were sighted above ground and then retreated \z + "What's puzzling me is that they were sighted above ground and then retreated \z into a temple ruin. If we find that ruin, we could find out if there's a relation. ...", - "Are you willing to help me?" - }, - npc, creature) + "Are you willing to help me?", + }, npc, creature) npcHandler:setTopic(playerId, 25) elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 25 then if npcHandler:getTopic(playerId) == 25 then - npcHandler:say( - { - "Excellent, excellent. The rumours pointed to the north of Tiquanda, a \z + npcHandler:say({ + "Excellent, excellent. The rumours pointed to the north of Tiquanda, a \z sunken temple probably half drowned in water. Return to me if you find \z - anything interesting!" - }, - npc, creature) + anything interesting!", + }, npc, creature) player:setStorageValue(Storage.TheSecretLibrary.LiquidDeath, 1) npcHandler:setTopic(playerId, 0) end @@ -702,85 +694,53 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword( - { "jack" }, - StdModule.say, - { - npcHandler = npcHandler, - text = "He was the first one I ever hired as an intern to help me with my studies and research. He \z +keywordHandler:addKeyword({ "jack" }, StdModule.say, { + npcHandler = npcHandler, + text = "He was the first one I ever hired as an intern to help me with my studies and research. He \z did an exceptionally good job and I certainly don't know where I would stand today without him. \z - We have to save him |PLAYERNAME|!" - } -) -keywordHandler:addKeyword( - { "device" }, - StdModule.say, - { - npcHandler = npcHandler, - text = "I heard of a device which would allow man to sail the sea of light. I call it the {Lightboat}, \z + We have to save him |PLAYERNAME|!", +}) +keywordHandler:addKeyword({ "device" }, StdModule.say, { + npcHandler = npcHandler, + text = "I heard of a device which would allow man to sail the sea of light. I call it the {Lightboat}, \z probably the most important invention in our history. And I will not rest until I have found a way to \z - put the plan of its inventor into action." - } -) -keywordHandler:addKeyword( - { "lightboat" }, - StdModule.say, - { - npcHandler = npcHandler, - text = "I heard of a device which would allow man to sail the sea of light. I call it the {Lightboat}, \z + put the plan of its inventor into action.", +}) +keywordHandler:addKeyword({ "lightboat" }, StdModule.say, { + npcHandler = npcHandler, + text = "I heard of a device which would allow man to sail the sea of light. I call it the {Lightboat}, \z probably the most important invention in our history. And I will not rest until I have found a way to \z - put the plan of its inventor into action." - } -) -keywordHandler:addKeyword( - { "magic device" }, - StdModule.say, - { - npcHandler = npcHandler, - text = "I heard of a device which would allow man to sail the sea of light. I call it the {Lightboat}, \z + put the plan of its inventor into action.", +}) +keywordHandler:addKeyword({ "magic device" }, StdModule.say, { + npcHandler = npcHandler, + text = "I heard of a device which would allow man to sail the sea of light. I call it the {Lightboat}, \z probably the most important invention in our history. And I will not rest until I have found a way to \z - put the plan of its inventor into action." - } -) -keywordHandler:addKeyword( - { "sea of light" }, - StdModule.say, - { - npcHandler = npcHandler, - text = "The sea of light is what I call the endless arrangement of shiny stars in the night sky. If we \z - fail to complete the {magic device}, science will probably never uncover its secrets." - } -) -keywordHandler:addKeyword( - { "mirror crystal" }, - StdModule.say, - { - npcHandler = npcHandler, - text = "I found the cause of the initial failure. A rare component, a mirror crystal was used to store \z + put the plan of its inventor into action.", +}) +keywordHandler:addKeyword({ "sea of light" }, StdModule.say, { + npcHandler = npcHandler, + text = "The sea of light is what I call the endless arrangement of shiny stars in the night sky. If we \z + fail to complete the {magic device}, science will probably never uncover its secrets.", +}) +keywordHandler:addKeyword({ "mirror crystal" }, StdModule.say, { + npcHandler = npcHandler, + text = "I found the cause of the initial failure. A rare component, a mirror crystal was used to store \z magical energy. Miscalculations within the construction damaged this fragile power source. The unleashed \z - energy must have been devastating." - } -) -keywordHandler:addKeyword( - { "lost mines" }, - StdModule.say, - { - npcHandler = npcHandler, - text = "The people of Edron were digging there for minerals and gold. It seemed all that work was of \z + energy must have been devastating.", +}) +keywordHandler:addKeyword({ "lost mines" }, StdModule.say, { + npcHandler = npcHandler, + text = "The people of Edron were digging there for minerals and gold. It seemed all that work was of \z no avail when they finally hit the motherlode. Gems, rare crystals and... water. So much that it flooded \z - the whole system. And not a single soul escaped." - } -) -keywordHandler:addKeyword( - { "collector" }, - StdModule.say, - { - npcHandler = npcHandler, - text = "I heard rumours of a fabled creature whose traces were found on an island near Carlin. It \z + the whole system. And not a single soul escaped.", +}) +keywordHandler:addKeyword({ "collector" }, StdModule.say, { + npcHandler = npcHandler, + text = "I heard rumours of a fabled creature whose traces were found on an island near Carlin. It \z lives solely to collect all kinds of rare gems, crystals and minerals. Offering an item it does not \z - already own, reportedly allows passage into its lair." - } -) + already own, reportedly allows passage into its lair.", +}) npcHandler:setMessage( MESSAGE_GREET, diff --git a/data-otservbr-global/npc/stan.lua b/data-otservbr-global/npc/stan.lua index 4af7e14bf35..fa6f6bf87b4 100644 --- a/data-otservbr-global/npc/stan.lua +++ b/data-otservbr-global/npc/stan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 128, lookLegs = 81, lookFeet = 128, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,7 +55,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "costume bag", clientId = 654, buy = 1000 }, { itemName = "party hat", clientId = 6578, buy = 600 }, - { itemName = "party trumpet", clientId = 6572, buy = 80 } + { itemName = "party trumpet", clientId = 6572, buy = 80 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -66,7 +66,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/storkus.lua b/data-otservbr-global/npc/storkus.lua index 31d4375587f..f6c763f9a68 100644 --- a/data-otservbr-global/npc/storkus.lua +++ b/data-otservbr-global/npc/storkus.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 57, lookBody = 59, lookLegs = 118, - lookFeet = 114 + lookFeet = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,38 +57,38 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "mission")) then - if (player:getStorageValue(Storage.TheInquisition.Questline) == 6) then - if (player:getStorageValue(Storage.TheInquisition.StorkusVampiredust) < 0) then + if MsgContains(message, "mission") then + if player:getStorageValue(Storage.TheInquisition.Questline) == 6 then + if player:getStorageValue(Storage.TheInquisition.StorkusVampiredust) < 0 then player:setStorageValue(Storage.TheInquisition.StorkusVampiredust, 0) end - if (player:getStorageValue(Storage.TheInquisition.StorkusVampiredust) < 20) then + if player:getStorageValue(Storage.TheInquisition.StorkusVampiredust) < 20 then npcHandler:say("So far ye've brought me " .. player:getItemCount(5905) .. " of 20 {vampire dusts}. Do ye' have any more with ye'? ", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.TheInquisition.StorkusVampiredust) == 20) then + elseif player:getStorageValue(Storage.TheInquisition.StorkusVampiredust) == 20 then npcHandler:say("Fine, you're done! Ye' should talk to me about your {mission} again now.", npc, creature) npcHandler:setTopic(playerId, 2) player:setStorageValue(Storage.TheInquisition.Questline, 7) player:setStorageValue(Storage.TheInquisition.Mission03, 2) -- The Inquisition Questlog- "Mission 3: Vampire Hunt" end - elseif (player:getStorageValue(Storage.TheInquisition.Questline) == 7) then + elseif player:getStorageValue(Storage.TheInquisition.Questline) == 7 then npcHandler:say({ "While ye' were keeping the lower ranks busy, I could get valuable information about some vampire lords. ...", "One of them is hiding somewhere beneath the Green Claw Swamp. I expect ye' to find him and kill him. ...", "But be warned: Without good preparation, ye' might get into trouble. I hope for ye' he will be sleeping in his coffin when ye' arrive. ...", "Before ye' open his coffin and drag that beast out to destroy it, I advise ye' to place some garlic necklaces on the stone slabs next to his coffin. That will weaken him considerably. ...", - "Bring me his ring as proof for his death. And now hurry and good hunt to ye'." + "Bring me his ring as proof for his death. And now hurry and good hunt to ye'.", }, npc, creature) player:setStorageValue(Storage.TheInquisition.Questline, 8) player:setStorageValue(Storage.TheInquisition.Mission03, 3) -- The Inquisition Questlog- "Mission 3: Vampire Hunt" npcHandler:setTopic(playerId, 0) - elseif (player:getStorageValue(Storage.TheInquisition.Questline) == 8 or player:getStorageValue(Storage.TheInquisition.Questline) == 9) then - if (player:removeItem(7924, 1)) then + elseif player:getStorageValue(Storage.TheInquisition.Questline) == 8 or player:getStorageValue(Storage.TheInquisition.Questline) == 9 then + if player:removeItem(7924, 1) then npcHandler:say({ "Ding, dong, the vampire is dead, eh? So I guess ye' can return to Henricus and tell him that ye' finished your job here. I'm quite sure he has some more challenging task up his sleeve. ...", "One more thing before ye' leave: I already mentioned the master vampires. ...", "They are quite hard to find. If ye' stumble across one of them and manage to kill him, he will surely drop some token that proves his death. Bring me these tokens. ...", - "If ye' kill enough of them, I might have a little surprise for ye'." + "If ye' kill enough of them, I might have a little surprise for ye'.", }, npc, creature) player:setStorageValue(Storage.TheInquisition.Questline, 10) player:setStorageValue(Storage.TheInquisition.Mission03, 5) -- The Inquisition Questlog- "Mission 3: Vampire Hunt" @@ -97,38 +97,38 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "vampire lord token") and player:getStorageValue(Storage.TheInquisition.Questline) == 10) then - if (player:getStorageValue(Storage.VampireHunter.Rank) < 1) then + elseif MsgContains(message, "vampire lord token") and player:getStorageValue(Storage.TheInquisition.Questline) == 10 then + if player:getStorageValue(Storage.VampireHunter.Rank) < 1 then npcHandler:say("Would ye' like to give me vampire tokens?", npc, creature) npcHandler:setTopic(playerId, 3) - elseif (player:getStorageValue(Storage.VampireHunter.Rank) == 1) then + elseif player:getStorageValue(Storage.VampireHunter.Rank) == 1 then npcHandler:say("Would ye' like to give me vampire tokens?", npc, creature) npcHandler:setTopic(playerId, 4) - elseif (player:getStorageValue(Storage.VampireHunter.Rank) == 2) then + elseif player:getStorageValue(Storage.VampireHunter.Rank) == 2 then npcHandler:say("Would ye' like to give me vampire tokens?", npc, creature) npcHandler:setTopic(playerId, 5) - elseif (player:getStorageValue(Storage.VampireHunter.Rank) == 3) then + elseif player:getStorageValue(Storage.VampireHunter.Rank) == 3 then npcHandler:say("Would ye' like to give me vampire tokens?", npc, creature) npcHandler:setTopic(playerId, 6) - elseif (player:getStorageValue(Storage.VampireHunter.Rank) == 4) then + elseif player:getStorageValue(Storage.VampireHunter.Rank) == 4 then npcHandler:say("Would ye' like to give me vampire tokens?", npc, creature) npcHandler:setTopic(playerId, 7) - elseif (player:getStorageValue(Storage.VampireHunter.Rank) == 5) then + elseif player:getStorageValue(Storage.VampireHunter.Rank) == 5 then npcHandler:say("Would ye' like to give me vampire tokens?", npc, creature) npcHandler:setTopic(playerId, 8) end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then local count = player:getItemCount(5905) local requiredCount = 20 - player:getStorageValue(Storage.TheInquisition.StorkusVampiredust) - if (count > requiredCount) then + if count > requiredCount then count = requiredCount end player:setStorageValue(Storage.TheInquisition.StorkusVampiredust, player:getStorageValue(Storage.TheInquisition.StorkusVampiredust) + count) player:removeItem(5905, count) - npcHandler:say("Ye've brought me " .. count .. " vampire dusts. " .. (20 - player:getStorageValue(Storage.TheInquisition.StorkusVampiredust)) == 0 and ("Ask me for a {mission} to continue your quest.") or ("Ye' need to bring " .. (20 - player:getStorageValue(Storage.TheInquisition.StorkusVampiredust)) .. " more."), npc, creature) + npcHandler:say("Ye've brought me " .. count .. " vampire dusts. " .. (20 - player:getStorageValue(Storage.TheInquisition.StorkusVampiredust)) == 0 and "Ask me for a {mission} to continue your quest." or ("Ye' need to bring " .. (20 - player:getStorageValue(Storage.TheInquisition.StorkusVampiredust)) .. " more."), npc, creature) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 3) then + elseif npcHandler:getTopic(playerId) == 3 then if player:removeItem(8192, 1) then npcHandler:say("Ye' brought the token needed to advance to the first vampire hunter rank. I consider that a fluke, but still, congrats! Let me share some of my experience with ye'.", npc, creature) player:setStorageValue(Storage.VampireHunter.Rank, 1) @@ -137,7 +137,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Ye' don't have enought tokens.", npc, creature) end npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 4) then + elseif npcHandler:getTopic(playerId) == 4 then if player:removeItem(8192, 4) then npcHandler:say("Ye' brought the four tokens needed to advance to the second vampire hunter rank. Pretty lucky ye' are! Let me share some of my experience with ye'.", npc, creature) player:setStorageValue(Storage.VampireHunter.Rank, 2) @@ -146,7 +146,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Ye' don't have enought tokens.", npc, creature) end npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 5) then + elseif npcHandler:getTopic(playerId) == 5 then if player:removeItem(8192, 5) then npcHandler:say("Ye' brought the five tokens needed to advance to the third vampire hunter rank. Wow, you're pretty determined! Let me share some of my experience with ye'.", npc, creature) player:setStorageValue(Storage.VampireHunter.Rank, 3) @@ -155,7 +155,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Ye' don't have enought tokens.", npc, creature) end npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 6) then + elseif npcHandler:getTopic(playerId) == 6 then if player:removeItem(8192, 10) then npcHandler:say("Ye' brought the ten tokens needed to advance to the fourth vampire hunter rank. You're absolutely painstaking! Let me share some of my experience with ye'.", npc, creature) player:setStorageValue(Storage.VampireHunter.Rank, 4) @@ -164,7 +164,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Ye' don't have enought tokens.", npc, creature) end npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 7) then + elseif npcHandler:getTopic(playerId) == 7 then if player:removeItem(8192, 30) then npcHandler:say("Ye' brought the thirty tokens needed to advance to the fifth vampire hunter rank. You're completely obliterative, kid! Let me share some of my experience with ye'.", npc, creature) player:setStorageValue(Storage.VampireHunter.Rank, 5) @@ -173,7 +173,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Ye' don't have enought tokens.", npc, creature) end npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 8) then + elseif npcHandler:getTopic(playerId) == 8 then if player:removeItem(8192, 50) then npcHandler:say("Ye' brought the fifty tokens needed to advance to the last vampire hunter rank. Now that's something. You're razing-amazing! Let me share some of my experience and a little something with ye'!", npc, creature) player:setStorageValue(Storage.VampireHunter.Rank, 6) diff --git a/data-otservbr-global/npc/strange_pipe.lua b/data-otservbr-global/npc/strange_pipe.lua index 82cb3b227f7..2e526f5210b 100644 --- a/data-otservbr-global/npc/strange_pipe.lua +++ b/data-otservbr-global/npc/strange_pipe.lua @@ -16,14 +16,13 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } - local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -52,10 +51,10 @@ npcType.onCloseChannel = function(npc, creature) end -- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! -keywordHandler:addKeyword({ 'importance' }, StdModule.say, { npcHandler = npcHandler, text = 'I can\'t reveal much to you right now as time is of the essence. I can tell you though that the glooth plant and the whole town are in danger and we have to act to stop a {madman} and his schemes.' }) -keywordHandler:addKeyword({ 'laboratory' }, StdModule.say, { npcHandler = npcHandler, text = 'I defeated him there in the past. It has been abandoned for many {years}, but I suspected him to return from the dead eventually, as he has done so often before.' }) -keywordHandler:addKeyword({ 'plan' }, StdModule.say, { npcHandler = npcHandler, text = 'The creature is powerful but not very clever. It seems it can be easily {enraged} and then it would likely let slip all caution and would relentlessly attack without regard for its safety.' }) -keywordHandler:addKeyword({ 'years' }, StdModule.say, { npcHandler = npcHandler, text = 'I used the time to prepare. You\'ll find my talking tubes all the {way} to his lair, and I can provide you with vital information about the things ahead.' }) +keywordHandler:addKeyword({ "importance" }, StdModule.say, { npcHandler = npcHandler, text = "I can't reveal much to you right now as time is of the essence. I can tell you though that the glooth plant and the whole town are in danger and we have to act to stop a {madman} and his schemes." }) +keywordHandler:addKeyword({ "laboratory" }, StdModule.say, { npcHandler = npcHandler, text = "I defeated him there in the past. It has been abandoned for many {years}, but I suspected him to return from the dead eventually, as he has done so often before." }) +keywordHandler:addKeyword({ "plan" }, StdModule.say, { npcHandler = npcHandler, text = "The creature is powerful but not very clever. It seems it can be easily {enraged} and then it would likely let slip all caution and would relentlessly attack without regard for its safety." }) +keywordHandler:addKeyword({ "years" }, StdModule.say, { npcHandler = npcHandler, text = "I used the time to prepare. You'll find my talking tubes all the {way} to his lair, and I can provide you with vital information about the things ahead." }) local function greetCallback(npc, creature) local playerId = creature:getId() @@ -75,33 +74,33 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "madman") then npcHandler:say({ "He is an old enemy of the city and I've battled him often in the past. ...", - "Now he has returned for vengeance, he reclaimed an old abandoned underground {laboratory} and he has acquired new powerful {allies}." + "Now he has returned for vengeance, he reclaimed an old abandoned underground {laboratory} and he has acquired new powerful {allies}.", }, npc, creature) end - if MsgContains(message, 'allies') then + if MsgContains(message, "allies") then npcHandler:say({ "His allies are an enigma even to me. It seems they belong to some unknown race that lives deep under the earth. ...", - "They seem to have supplied him with resources and workforce and a powerful {guardian} to prevent anyone from entering the passages to his lair." + "They seem to have supplied him with resources and workforce and a powerful {guardian} to prevent anyone from entering the passages to his lair.", }, npc, creature) end - if MsgContains(message, 'guardian') then + if MsgContains(message, "guardian") then npcHandler:say({ "It's a fearsome subterranean beast like nothing I've ever encountered. It is dangerous and almost unbeatable because its main body is hidden beneath the ground ...", - "And it has an endless supply of tentacles. But not all is lost, as I have devised a {plan} to battle the beast." + "And it has an endless supply of tentacles. But not all is lost, as I have devised a {plan} to battle the beast.", }, npc, creature) end - if MsgContains(message, 'enraged') then + if MsgContains(message, "enraged") then npcHandler:say({ "While it's buried, it only uses his tentacles to attack. If one is destroyed it will simply use another set of tentacles and its supply seems endless. ...", "If you manage though to kill all the tentacles it is using within a few heartbeats, it will become confused by its momentary helplessness and will probably attack with its main body. ...", - "That is when you have a chance to destroy it. Pass through its chamber and look for another of my tubes to contact me. Please hurry! End of communication." + "That is when you have a chance to destroy it. Pass through its chamber and look for another of my tubes to contact me. Please hurry! End of communication.", }, npc, creature) end - if MsgContains(message, 'way') then + if MsgContains(message, "way") then npcHandler:say({ "You will have to leave the plant through the eastern door on the lowest level. I have arranged for it to be 'accidentally' open. ...", "As in the past, our enemy still uses a series of machines to open the way to the next section of his lair. You have to turn them all on to proceed. ...", - "They will only work for a certain amount of time though, so you will have to hurry or some of the machines will turn inactive again." + "They will only work for a certain amount of time though, so you will have to hurry or some of the machines will turn inactive again.", }, npc, creature) end return true diff --git a/data-otservbr-global/npc/strange_pipe1.lua b/data-otservbr-global/npc/strange_pipe1.lua index a4aa4dd7f28..91bd56ad79d 100644 --- a/data-otservbr-global/npc/strange_pipe1.lua +++ b/data-otservbr-global/npc/strange_pipe1.lua @@ -16,14 +16,13 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } - local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -52,10 +51,10 @@ npcType.onCloseChannel = function(npc, creature) end -- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! -keywordHandler:addKeyword({ 'importance' }, StdModule.say, { npcHandler = npcHandler, text = 'I can\'t reveal much to you right now as time is of the essence. I can tell you though that the glooth plant and the whole town are in danger and we have to act to stop a {madman} and his schemes.' }) -keywordHandler:addKeyword({ 'laboratory' }, StdModule.say, { npcHandler = npcHandler, text = 'I defeated him there in the past. It has been abandoned for many {years}, but I suspected him to return from the dead eventually, as he has done so often before.' }) -keywordHandler:addKeyword({ 'plan' }, StdModule.say, { npcHandler = npcHandler, text = 'The creature is powerful but not very clever. It seems it can be easily {enraged} and then it would likely let slip all caution and would relentlessly attack without regard for its safety.' }) -keywordHandler:addKeyword({ 'years' }, StdModule.say, { npcHandler = npcHandler, text = 'I used the time to prepare. You\'ll find my talking tubes all the {way} to his lair, and I can provide you with vital information about the things ahead.' }) +keywordHandler:addKeyword({ "importance" }, StdModule.say, { npcHandler = npcHandler, text = "I can't reveal much to you right now as time is of the essence. I can tell you though that the glooth plant and the whole town are in danger and we have to act to stop a {madman} and his schemes." }) +keywordHandler:addKeyword({ "laboratory" }, StdModule.say, { npcHandler = npcHandler, text = "I defeated him there in the past. It has been abandoned for many {years}, but I suspected him to return from the dead eventually, as he has done so often before." }) +keywordHandler:addKeyword({ "plan" }, StdModule.say, { npcHandler = npcHandler, text = "The creature is powerful but not very clever. It seems it can be easily {enraged} and then it would likely let slip all caution and would relentlessly attack without regard for its safety." }) +keywordHandler:addKeyword({ "years" }, StdModule.say, { npcHandler = npcHandler, text = "I used the time to prepare. You'll find my talking tubes all the {way} to his lair, and I can provide you with vital information about the things ahead." }) local function greetCallback(npc, creature) local playerId = creature:getId() @@ -75,33 +74,33 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "madman") then npcHandler:say({ "He is an old enemy of the city and I've battled him often in the past. ...", - "Now he has returned for vengeance, he reclaimed an old abandoned underground {laboratory} and he has acquired new powerful {allies}." + "Now he has returned for vengeance, he reclaimed an old abandoned underground {laboratory} and he has acquired new powerful {allies}.", }, npc, creature) end - if MsgContains(message, 'allies') then + if MsgContains(message, "allies") then npcHandler:say({ "His allies are an enigma even to me. It seems they belong to some unknown race that lives deep under the earth. ...", - "They seem to have supplied him with resources and workforce and a powerful {guardian} to prevent anyone from entering the passages to his lair." + "They seem to have supplied him with resources and workforce and a powerful {guardian} to prevent anyone from entering the passages to his lair.", }, npc, creature) end - if MsgContains(message, 'guardian') then + if MsgContains(message, "guardian") then npcHandler:say({ "It's a fearsome subterranean beast like nothing I've ever encountered. It is dangerous and almost unbeatable because its main body is hidden beneath the ground ...", - "And it has an endless supply of tentacles. But not all is lost, as I have devised a {plan} to battle the beast." + "And it has an endless supply of tentacles. But not all is lost, as I have devised a {plan} to battle the beast.", }, npc, creature) end - if MsgContains(message, 'enraged') then + if MsgContains(message, "enraged") then npcHandler:say({ "While it's buried, it only uses his tentacles to attack. If one is destroyed it will simply use another set of tentacles and its supply seems endless. ...", "If you manage though to kill all the tentacles it is using within a few heartbeats, it will become confused by its momentary helplessness and will probably attack with its main body. ...", - "That is when you have a chance to destroy it. Pass through its chamber and look for another of my tubes to contact me. Please hurry! End of communication." + "That is when you have a chance to destroy it. Pass through its chamber and look for another of my tubes to contact me. Please hurry! End of communication.", }, npc, creature) end - if MsgContains(message, 'way') then + if MsgContains(message, "way") then npcHandler:say({ "You will have to leave the plant through the eastern door on the lowest level. I have arranged for it to be 'accidentally' open. ...", "As in the past, our enemy still uses a series of machines to open the way to the next section of his lair. You have to turn them all on to proceed. ...", - "They will only work for a certain amount of time though, so you will have to hurry or some of the machines will turn inactive again." + "They will only work for a certain amount of time though, so you will have to hurry or some of the machines will turn inactive again.", }, npc, creature) end return true diff --git a/data-otservbr-global/npc/strange_pipe2.lua b/data-otservbr-global/npc/strange_pipe2.lua index fd889130438..fccdfd80f5d 100644 --- a/data-otservbr-global/npc/strange_pipe2.lua +++ b/data-otservbr-global/npc/strange_pipe2.lua @@ -16,14 +16,13 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } - local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -52,10 +51,10 @@ npcType.onCloseChannel = function(npc, creature) end -- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! -keywordHandler:addKeyword({ 'importance' }, StdModule.say, { npcHandler = npcHandler, text = 'I can\'t reveal much to you right now as time is of the essence. I can tell you though that the glooth plant and the whole town are in danger and we have to act to stop a {madman} and his schemes.' }) -keywordHandler:addKeyword({ 'laboratory' }, StdModule.say, { npcHandler = npcHandler, text = 'I defeated him there in the past. It has been abandoned for many {years}, but I suspected him to return from the dead eventually, as he has done so often before.' }) -keywordHandler:addKeyword({ 'plan' }, StdModule.say, { npcHandler = npcHandler, text = 'The creature is powerful but not very clever. It seems it can be easily {enraged} and then it would likely let slip all caution and would relentlessly attack without regard for its safety.' }) -keywordHandler:addKeyword({ 'years' }, StdModule.say, { npcHandler = npcHandler, text = 'I used the time to prepare. You\'ll find my talking tubes all the {way} to his lair, and I can provide you with vital information about the things ahead.' }) +keywordHandler:addKeyword({ "importance" }, StdModule.say, { npcHandler = npcHandler, text = "I can't reveal much to you right now as time is of the essence. I can tell you though that the glooth plant and the whole town are in danger and we have to act to stop a {madman} and his schemes." }) +keywordHandler:addKeyword({ "laboratory" }, StdModule.say, { npcHandler = npcHandler, text = "I defeated him there in the past. It has been abandoned for many {years}, but I suspected him to return from the dead eventually, as he has done so often before." }) +keywordHandler:addKeyword({ "plan" }, StdModule.say, { npcHandler = npcHandler, text = "The creature is powerful but not very clever. It seems it can be easily {enraged} and then it would likely let slip all caution and would relentlessly attack without regard for its safety." }) +keywordHandler:addKeyword({ "years" }, StdModule.say, { npcHandler = npcHandler, text = "I used the time to prepare. You'll find my talking tubes all the {way} to his lair, and I can provide you with vital information about the things ahead." }) local function greetCallback(npc, creature) local playerId = creature:getId() @@ -75,33 +74,33 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "madman") then npcHandler:say({ "He is an old enemy of the city and I've battled him often in the past. ...", - "Now he has returned for vengeance, he reclaimed an old abandoned underground {laboratory} and he has acquired new powerful {allies}." + "Now he has returned for vengeance, he reclaimed an old abandoned underground {laboratory} and he has acquired new powerful {allies}.", }, npc, creature) end - if MsgContains(message, 'allies') then + if MsgContains(message, "allies") then npcHandler:say({ "His allies are an enigma even to me. It seems they belong to some unknown race that lives deep under the earth. ...", - "They seem to have supplied him with resources and workforce and a powerful {guardian} to prevent anyone from entering the passages to his lair." + "They seem to have supplied him with resources and workforce and a powerful {guardian} to prevent anyone from entering the passages to his lair.", }, npc, creature) end - if MsgContains(message, 'guardian') then + if MsgContains(message, "guardian") then npcHandler:say({ "It's a fearsome subterranean beast like nothing I've ever encountered. It is dangerous and almost unbeatable because its main body is hidden beneath the ground ...", - "And it has an endless supply of tentacles. But not all is lost, as I have devised a {plan} to battle the beast." + "And it has an endless supply of tentacles. But not all is lost, as I have devised a {plan} to battle the beast.", }, npc, creature) end - if MsgContains(message, 'enraged') then + if MsgContains(message, "enraged") then npcHandler:say({ "While it's buried, it only uses his tentacles to attack. If one is destroyed it will simply use another set of tentacles and its supply seems endless. ...", "If you manage though to kill all the tentacles it is using within a few heartbeats, it will become confused by its momentary helplessness and will probably attack with its main body. ...", - "That is when you have a chance to destroy it. Pass through its chamber and look for another of my tubes to contact me. Please hurry! End of communication." + "That is when you have a chance to destroy it. Pass through its chamber and look for another of my tubes to contact me. Please hurry! End of communication.", }, npc, creature) end - if MsgContains(message, 'way') then + if MsgContains(message, "way") then npcHandler:say({ "You will have to leave the plant through the eastern door on the lowest level. I have arranged for it to be 'accidentally' open. ...", "As in the past, our enemy still uses a series of machines to open the way to the next section of his lair. You have to turn them all on to proceed. ...", - "They will only work for a certain amount of time though, so you will have to hurry or some of the machines will turn inactive again." + "They will only work for a certain amount of time though, so you will have to hurry or some of the machines will turn inactive again.", }, npc, creature) end return true diff --git a/data-otservbr-global/npc/strange_pipe3.lua b/data-otservbr-global/npc/strange_pipe3.lua index 3df42cce011..bb3b81329ca 100644 --- a/data-otservbr-global/npc/strange_pipe3.lua +++ b/data-otservbr-global/npc/strange_pipe3.lua @@ -16,14 +16,13 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } - local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -52,10 +51,10 @@ npcType.onCloseChannel = function(npc, creature) end -- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! -keywordHandler:addKeyword({ 'importance' }, StdModule.say, { npcHandler = npcHandler, text = 'I can\'t reveal much to you right now as time is of the essence. I can tell you though that the glooth plant and the whole town are in danger and we have to act to stop a {madman} and his schemes.' }) -keywordHandler:addKeyword({ 'laboratory' }, StdModule.say, { npcHandler = npcHandler, text = 'I defeated him there in the past. It has been abandoned for many {years}, but I suspected him to return from the dead eventually, as he has done so often before.' }) -keywordHandler:addKeyword({ 'plan' }, StdModule.say, { npcHandler = npcHandler, text = 'The creature is powerful but not very clever. It seems it can be easily {enraged} and then it would likely let slip all caution and would relentlessly attack without regard for its safety.' }) -keywordHandler:addKeyword({ 'years' }, StdModule.say, { npcHandler = npcHandler, text = 'I used the time to prepare. You\'ll find my talking tubes all the {way} to his lair, and I can provide you with vital information about the things ahead.' }) +keywordHandler:addKeyword({ "importance" }, StdModule.say, { npcHandler = npcHandler, text = "I can't reveal much to you right now as time is of the essence. I can tell you though that the glooth plant and the whole town are in danger and we have to act to stop a {madman} and his schemes." }) +keywordHandler:addKeyword({ "laboratory" }, StdModule.say, { npcHandler = npcHandler, text = "I defeated him there in the past. It has been abandoned for many {years}, but I suspected him to return from the dead eventually, as he has done so often before." }) +keywordHandler:addKeyword({ "plan" }, StdModule.say, { npcHandler = npcHandler, text = "The creature is powerful but not very clever. It seems it can be easily {enraged} and then it would likely let slip all caution and would relentlessly attack without regard for its safety." }) +keywordHandler:addKeyword({ "years" }, StdModule.say, { npcHandler = npcHandler, text = "I used the time to prepare. You'll find my talking tubes all the {way} to his lair, and I can provide you with vital information about the things ahead." }) local function greetCallback(npc, creature) local playerId = creature:getId() @@ -75,33 +74,33 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "madman") then npcHandler:say({ "He is an old enemy of the city and I've battled him often in the past. ...", - "Now he has returned for vengeance, he reclaimed an old abandoned underground {laboratory} and he has acquired new powerful {allies}." + "Now he has returned for vengeance, he reclaimed an old abandoned underground {laboratory} and he has acquired new powerful {allies}.", }, npc, creature) end - if MsgContains(message, 'allies') then + if MsgContains(message, "allies") then npcHandler:say({ "His allies are an enigma even to me. It seems they belong to some unknown race that lives deep under the earth. ...", - "They seem to have supplied him with resources and workforce and a powerful {guardian} to prevent anyone from entering the passages to his lair." + "They seem to have supplied him with resources and workforce and a powerful {guardian} to prevent anyone from entering the passages to his lair.", }, npc, creature) end - if MsgContains(message, 'guardian') then + if MsgContains(message, "guardian") then npcHandler:say({ "It's a fearsome subterranean beast like nothing I've ever encountered. It is dangerous and almost unbeatable because its main body is hidden beneath the ground ...", - "And it has an endless supply of tentacles. But not all is lost, as I have devised a {plan} to battle the beast." + "And it has an endless supply of tentacles. But not all is lost, as I have devised a {plan} to battle the beast.", }, npc, creature) end - if MsgContains(message, 'enraged') then + if MsgContains(message, "enraged") then npcHandler:say({ "While it's buried, it only uses his tentacles to attack. If one is destroyed it will simply use another set of tentacles and its supply seems endless. ...", "If you manage though to kill all the tentacles it is using within a few heartbeats, it will become confused by its momentary helplessness and will probably attack with its main body. ...", - "That is when you have a chance to destroy it. Pass through its chamber and look for another of my tubes to contact me. Please hurry! End of communication." + "That is when you have a chance to destroy it. Pass through its chamber and look for another of my tubes to contact me. Please hurry! End of communication.", }, npc, creature) end - if MsgContains(message, 'way') then + if MsgContains(message, "way") then npcHandler:say({ "You will have to leave the plant through the eastern door on the lowest level. I have arranged for it to be 'accidentally' open. ...", "As in the past, our enemy still uses a series of machines to open the way to the next section of his lair. You have to turn them all on to proceed. ...", - "They will only work for a certain amount of time though, so you will have to hurry or some of the machines will turn inactive again." + "They will only work for a certain amount of time though, so you will have to hurry or some of the machines will turn inactive again.", }, npc, creature) end return true diff --git a/data-otservbr-global/npc/stricken_soul.lua b/data-otservbr-global/npc/stricken_soul.lua index 255748b8a94..88857dfb1e1 100644 --- a/data-otservbr-global/npc/stricken_soul.lua +++ b/data-otservbr-global/npc/stricken_soul.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 48 + lookType = 48, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,7 +45,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "Esperando Script." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Esperando Script." }) npcHandler:setMessage(MESSAGE_GREET, "Greetings, |PLAYERNAME|.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/stutch.lua b/data-otservbr-global/npc/stutch.lua index 30f8449a808..a6fa1e0aeed 100644 --- a/data-otservbr-global/npc/stutch.lua +++ b/data-otservbr-global/npc/stutch.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 79, lookLegs = 79, lookFeet = 79, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,8 +50,8 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'hi' }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the king greet with his title!" }) -keywordHandler:addKeyword({ 'hello' }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the king greet with his title!" }) +keywordHandler:addKeyword({ "hi" }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the king greet with his title!" }) +keywordHandler:addKeyword({ "hello" }, StdModule.say, { npcHandler = npcHandler, onlyUnfocus = true, text = "MIND YOUR MANNERS COMMONER! To address the king greet with his title!" }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -61,7 +61,7 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if table.contains({ 'fuck', 'idiot', 'asshole', 'ass', 'fag', 'stupid', 'tyrant', 'shit', 'lunatic' }, message) then + if table.contains({ "fuck", "idiot", "asshole", "ass", "fag", "stupid", "tyrant", "shit", "lunatic" }, message) then local player = Player(creature) local conditions = { CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, CONDITION_BLEEDING, CONDITION_PARALYZE, CONDITION_DROWN, CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED } for i = 1, #conditions do @@ -71,18 +71,18 @@ local function creatureSayCallback(npc, creature, type, message) end player:getPosition():sendMagicEffect(CONST_ME_EXPLOSIONAREA) player:addHealth(1 - player:getHealth()) - npcHandler:say('Take this!', npc, creature) + npcHandler:say("Take this!", npc, creature) npc:getPosition():sendMagicEffect(CONST_ME_YELLOW_RINGS) end return true end -- Greeting -keywordHandler:addGreetKeyword({ 'hail king' }, { npcHandler = npcHandler, text = 'HAIL TO THE KING!' }) -keywordHandler:addGreetKeyword({ 'salutations king' }, { npcHandler = npcHandler, text = 'HAIL TO THE KING!' }) +keywordHandler:addGreetKeyword({ "hail king" }, { npcHandler = npcHandler, text = "HAIL TO THE KING!" }) +keywordHandler:addGreetKeyword({ "salutations king" }, { npcHandler = npcHandler, text = "HAIL TO THE KING!" }) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'LONG LIVE THE KING!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'LONG LIVE THE KING! You may leave now!') +npcHandler:setMessage(MESSAGE_WALKAWAY, "LONG LIVE THE KING!") +npcHandler:setMessage(MESSAGE_FAREWELL, "LONG LIVE THE KING! You may leave now!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/sundara.lua b/data-otservbr-global/npc/sundara.lua index 39cbac1b440..b919dbca971 100644 --- a/data-otservbr-global/npc/sundara.lua +++ b/data-otservbr-global/npc/sundara.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 52, lookLegs = 19, lookFeet = 0, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -90,7 +90,7 @@ npcConfig.shop = { { itemName = "ultimate health potion", clientId = 7643, buy = 379 }, { itemName = "ultimate mana potion", clientId = 23373, buy = 438 }, { itemName = "ultimate spirit potion", clientId = 23374, buy = 438 }, - { itemName = "vial", clientId = 2874, sell = 5 } + { itemName = "vial", clientId = 2874, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -101,7 +101,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/suzy.lua b/data-otservbr-global/npc/suzy.lua index 300b823a3b6..1c9115b2700 100644 --- a/data-otservbr-global/npc/suzy.lua +++ b/data-otservbr-global/npc/suzy.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 10, lookLegs = 115, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/sven.lua b/data-otservbr-global/npc/sven.lua index 809829c1d52..c141daec378 100644 --- a/data-otservbr-global/npc/sven.lua +++ b/data-otservbr-global/npc/sven.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 115, lookFeet = 40, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -74,7 +74,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "test") then npcHandler:say({ "All of our juveniles have to take the barbarian test to become a true member of our community. Foreigners who manage to master the test are granted the title of an honorary barbarian and the respect of our people ...", - "Are you willing to take the barbarian test?" + "Are you willing to take the barbarian test?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif MsgContains(message, "mead") then @@ -86,7 +86,7 @@ local function creatureSayCallback(npc, creature, type, message) "An impressive start. Here, take your own mead horn to fill it at the mead bucket as often as you like ...", "But there is much left to be done. Your next test will be to hug a bear ...", "You will find one in a cave north of the town. If you are lucky, it's still sleeping. If not ... well that might hurt ...", - "Unless you feel that you hugged the bear, the test is not passed. Once you are done, talk to me about the bear hugging." + "Unless you feel that you hugged the bear, the test is not passed. Once you are done, talk to me about the bear hugging.", }, npc, creature) player:setStorageValue(Storage.BarbarianTest.Questline, 4) player:setStorageValue(Storage.BarbarianTest.Mission02, 1) -- Questlog Barbarian Test Quest Barbarian Test 2: The Bear Hugging @@ -98,7 +98,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Amazing. That was as clever and brave as a barbarian is supposed to be. But a barbarian also has to be strong and fearless. To prove that you will have to knock over a mammoth ...", "Did your face just turn into the color of fresh snow? However, you will find a lonely mammoth north west of the town in the wilderness. Knock it over to prove to be a true barbarian ...", - "Return to me and talk about the {mammoth} pushing when you are done." + "Return to me and talk about the {mammoth} pushing when you are done.", }, npc, creature) player:setStorageValue(Storage.BarbarianTest.Questline, 6) player:setStorageValue(Storage.BarbarianTest.Mission03, 1) -- Questlog Barbarian Test Quest Barbarian Test 3: The Mammoth Pushing @@ -108,10 +108,10 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.BarbarianTest.Questline) == 7 then npcHandler:say({ "As you have passed all three tests, I welcome you in our town as an honorary barbarian. You can now become a citizen. Don't forget to talk to the people here. Some of them might need some help ...", - "We usually solve our problems on our own but some of the people might have a mission for you. Old Iskan, on the ice in the northern part of the town had some trouble with his dogs lately." + "We usually solve our problems on our own but some of the people might have a mission for you. Old Iskan, on the ice in the northern part of the town had some trouble with his dogs lately.", }, npc, creature) player:setStorageValue(Storage.BarbarianTest.Questline, 8) - player:addAchievement('Honorary Barbarian') + player:addAchievement("Honorary Barbarian") npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "yes") then @@ -129,13 +129,13 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "That's the spirit! The barbarian test consists of a few tasks you will have to fulfill. All are rather simple - for a barbarian that is...", "Your first task is to drink some barbarian mead. But be warned, it's a strong brew that could even knock out a bear. You need to make at least ten sips of mead in a row without passing out to pass the test ...", - "Do you think you can do this?" + "Do you think you can do this?", }, npc, creature) npcHandler:setTopic(playerId, 3) elseif npcHandler:getTopic(playerId) == 3 then npcHandler:say({ "Good, but to make barbarian mead we need some honey which is rare here. I'd hate to waste mead just to learn you're not worth it ...", - "Therefore, you have to get your own honey. You'll probably need more than one try so better get some extra honeycombs. Then talk to me again about barbarian {mead}." + "Therefore, you have to get your own honey. You'll probably need more than one try so better get some extra honeycombs. Then talk to me again about barbarian {mead}.", }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.BarbarianTest.Questline, 1) diff --git a/data-otservbr-global/npc/svenson.lua b/data-otservbr-global/npc/svenson.lua index 73e5dbfade3..b10b539bdea 100644 --- a/data-otservbr-global/npc/svenson.lua +++ b/data-otservbr-global/npc/svenson.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 105, lookFeet = 86, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -79,19 +79,19 @@ end -- Travel local function addTravelKeyword(keyword, text, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you want to sail ' .. text, cost = cost }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you want to sail " .. text, cost = cost }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('tibia', 'back to Tibia?', 0, Position(32235, 31674, 7)) -addTravelKeyword('senja', 'Senja for |TRAVELCOST|?', 10, Position(32128, 31664, 7)) -addTravelKeyword('vega', 'Vega for |TRAVELCOST|?', 10, Position(32020, 31692, 7)) +addTravelKeyword("tibia", "back to Tibia?", 0, Position(32235, 31674, 7)) +addTravelKeyword("senja", "Senja for |TRAVELCOST|?", 10, Position(32128, 31664, 7)) +addTravelKeyword("vega", "Vega for |TRAVELCOST|?", 10, Position(32020, 31692, 7)) -- Basic -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'Where do you want to go? To {Tibia}, {Senja} or {Vega}?' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) -keywordHandler:addKeyword({ 'captain' }, StdModule.say, { npcHandler = npcHandler, text = 'I am the captain of this ship.' }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Where do you want to go? To {Tibia}, {Senja} or {Vega}?" }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) +keywordHandler:addKeyword({ "captain" }, StdModule.say, { npcHandler = npcHandler, text = "I am the captain of this ship." }) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/swolt.lua b/data-otservbr-global/npc/swolt.lua index ccf6b9505d9..ebe8cada59d 100644 --- a/data-otservbr-global/npc/swolt.lua +++ b/data-otservbr-global/npc/swolt.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 80, lookLegs = 79, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -85,7 +85,7 @@ npcConfig.shop = { { itemName = "meat", clientId = 3577, buy = 5 }, { itemName = "mug of beer", clientId = 2880, buy = 2, count = 3 }, { itemName = "mug of water", clientId = 2880, buy = 1, count = 1 }, - { itemName = "terramite eggs", clientId = 10453, sell = 50 } + { itemName = "terramite eggs", clientId = 10453, sell = 50 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -96,8 +96,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end -- Basic keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Well, you see me standing behind a bar. Selling drinks. Food. And stuff. Now try figuring out what I could be making a living of down here." }) keywordHandler:addKeyword({ "food" }, StdModule.say, { npcHandler = npcHandler, text = "I can offer you bread, cheese, ham, or meat. And as drinks we serve beer and water. If you'd like to see what we have to offer, just ask me for a trade." }) diff --git a/data-otservbr-global/npc/sylvester.lua b/data-otservbr-global/npc/sylvester.lua index b329a998b55..5b08f039486 100644 --- a/data-otservbr-global/npc/sylvester.lua +++ b/data-otservbr-global/npc/sylvester.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 113, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/taegen.lua b/data-otservbr-global/npc/taegen.lua index 7cce9ca51f8..3d055a52243 100644 --- a/data-otservbr-global/npc/taegen.lua +++ b/data-otservbr-global/npc/taegen.lua @@ -16,19 +16,19 @@ npcConfig.outfit = { lookBody = 41, lookLegs = 94, lookFeet = 41, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Id like to take a walk with Aurita.' }, - { text = 'I miss Aurita golden hair.*sigh*' }, - { text = 'Pas in boldly tyll thow com to an hall the feyrist undir sky ... *sings*' } + { text = "Id like to take a walk with Aurita." }, + { text = "I miss Aurita golden hair.*sigh*" }, + { text = "Pas in boldly tyll thow com to an hall the feyrist undir sky ... *sings*" }, } local keywordHandler = KeywordHandler:new() @@ -84,7 +84,7 @@ npcConfig.shop = { { itemName = "spectral bolt", clientId = 35902, buy = 70 }, { itemName = "tarsal arrow", clientId = 14251, buy = 6 }, { itemName = "throwing star", clientId = 3287, buy = 42 }, - { itemName = "vortex bolt", clientId = 14252, buy = 6 } + { itemName = "vortex bolt", clientId = 14252, buy = 6 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -95,8 +95,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local ThreatenedDreams = Storage.Quest.U11_40.ThreatenedDreams local function creatureSayCallback(npc, creature, type, message) @@ -112,19 +111,18 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Yes, there is something. It's a bit embarassing, you must promise not to tell anyone else. I'm in love with Aurita. Well, that wouldn't be a reson to be ashamed, but she is a mermaid. ...", "A faun on the other hand is inhabiting the forests, dancing with fairies and, well, nymphs. But I lost my heart to the lovely Aurita. I can't help it. We would love to spend some time together, but not just sitting on the beach. ...", - "I'd love to show her the deep forest I love so much. I have an idea but I can't do it alone. Would you help me?" + "I'd love to show her the deep forest I love so much. I have an idea but I can't do it alone. Would you help me?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(ThreatenedDreams.Mission03[1]) == 1 then npcHandler:say({ - "There is a fairy who once told me about this spell. Perhaps she will share her knowledge. You can find her in a small fairy village in the southwest of Feyrist." + "There is a fairy who once told me about this spell. Perhaps she will share her knowledge. You can find her in a small fairy village in the southwest of Feyrist.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif player:getStorageValue(ThreatenedDreams.Mission03[1]) == 2 - and player:getItemCount(25782) >= 1 then + elseif player:getStorageValue(ThreatenedDreams.Mission03[1]) == 2 and player:getItemCount(25782) >= 1 then npcHandler:say({ "We are so happy. Now Aurita can take a walk on the beach. But I still can't visit her secret underwater grotto. To achieve this, we need something else: a very rare plant called raven herb. ...", - "If eaten it allows an air breathing creature to breathe underwater for a while. Please find this plant for me. But know that you'll only find it at night. It resembles a common fern but its leaves are of a lighter green." + "If eaten it allows an air breathing creature to breathe underwater for a while. Please find this plant for me. But know that you'll only find it at night. It resembles a common fern but its leaves are of a lighter green.", }, npc, creature) player:removeItem(25782, 1) player:setStorageValue(ThreatenedDreams.Mission03[1], 3) @@ -132,20 +130,20 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 0) else npcHandler:say({ - "Thank you! We are so happy. Now Aurita can take a walk on the beach. And I can visit her secret underwater grotto." + "Thank you! We are so happy. Now Aurita can take a walk on the beach. And I can visit her secret underwater grotto.", }, npc, creature) npcHandler:setTopic(playerId, 0) end elseif MsgContains(message, "sun catcher") then if player:getStorageValue(ThreatenedDreams.Mission03[1]) == 3 then npcHandler:say({ - "Have you found some raven herb?" + "Have you found some raven herb?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(ThreatenedDreams.Mission03[1]) == 4 then npcHandler:say({ "Thank you again, mortal being. A sun catcher is similar to a dream catcher but other than the latter it can preserve sunlight rather than bad dreams. I can craft one out of enchanted branches of a fairy tree as well as several enchanted gems. ...", - "The branches are no problem, I will find some in the forest. But I don't have any gems. If you bring me some, I can craft a sun catcher for you. Do you have gems?" + "The branches are no problem, I will find some in the forest. But I don't have any gems. If you bring me some, I can craft a sun catcher for you. Do you have gems?", }, npc, creature) npcHandler:setTopic(playerId, 3) end @@ -153,7 +151,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "That's very kind of you, my friend! Listen: I know there is a spell to transform her fishtail into legs. It is a temporary effect, so she could return to the ocean as soon as the spell ends. Unfortunately I don't know how to cast this spell. ...", - "But there is a fairy who once told me about it. Perhaps she will share her knowledge. You can find her in a small fairy village in the southwest of Feyrist." + "But there is a fairy who once told me about it. Perhaps she will share her knowledge. You can find her in a small fairy village in the southwest of Feyrist.", }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission03[1], 1) player:setStorageValue(ThreatenedDreams.Mission03.UnlikelyCouple, 1) @@ -161,29 +159,25 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 2 then if player:getItemCount(5953) > 0 then npcHandler:say({ - "Thank you, friend! Now I can visit Aurita in her underwater grotto!" + "Thank you, friend! Now I can visit Aurita in her underwater grotto!", }, npc, creature) player:removeItem(5953, 1) npcHandler:setTopic(playerId, 3) player:setStorageValue(ThreatenedDreams.Mission03[1], 4) else npcHandler:say({ - "Please find this plant for me. But know that you'll only find it at night. It resembles a common fern but its leaves are of a lighter green." + "Please find this plant for me. But know that you'll only find it at night. It resembles a common fern but its leaves are of a lighter green.", }, npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 3 then if player:getStorageValue(ThreatenedDreams.Mission03.DarkSunCatcher) == 1 then npcHandler:say({ - "I already crafted one sun catcher for you." + "I already crafted one sun catcher for you.", }, npc, creature) - elseif player:getItemCount(675) >= 2 - and player:getItemCount(676) >= 2 - and player:getItemCount(677) >= 2 - and player:getItemCount(678) >= 2 - and player:getStorageValue(ThreatenedDreams.Mission03.DarkSunCatcher) < 1 then + elseif player:getItemCount(675) >= 2 and player:getItemCount(676) >= 2 and player:getItemCount(677) >= 2 and player:getItemCount(678) >= 2 and player:getStorageValue(ThreatenedDreams.Mission03.DarkSunCatcher) < 1 then npcHandler:say({ - "Alright, I will craft a sun catcher for you." + "Alright, I will craft a sun catcher for you.", }, npc, creature) player:removeItem(675, 2) player:removeItem(676, 2) @@ -194,7 +188,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 0) else npcHandler:say({ - "I don't have any gems. If you bring me some, I can craft a sun catcher for you. Do you have gems?" + "I don't have any gems. If you bring me some, I can craft a sun catcher for you. Do you have gems?", }, npc, creature) npcHandler:setTopic(playerId, 0) end diff --git a/data-otservbr-global/npc/talesia.lua b/data-otservbr-global/npc/talesia.lua index bd52d884dd2..6572bc42b3c 100644 --- a/data-otservbr-global/npc/talesia.lua +++ b/data-otservbr-global/npc/talesia.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 97, lookLegs = 58, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/talila.lua b/data-otservbr-global/npc/talila.lua index be4bf4a32d7..ac14feedbe6 100644 --- a/data-otservbr-global/npc/talila.lua +++ b/data-otservbr-global/npc/talila.lua @@ -11,24 +11,24 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 982 + lookType = 982, } npcConfig.respawnType = { period = RESPAWNPERIOD_NIGHT, - underground = false + underground = false, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Are you interested in a trade?' }, - { text = 'Dont touch the wings, theyre delicate.' }, - { text = 'Tralllalalla.' } + { text = "Are you interested in a trade?" }, + { text = "Dont touch the wings, theyre delicate." }, + { text = "Tralllalalla." }, } local keywordHandler = KeywordHandler:new() @@ -195,7 +195,7 @@ npcConfig.shop = { { itemName = "wild flowers", clientId = 25691, sell = 120 }, { itemName = "wild growth rune", clientId = 3156, buy = 160 }, { itemName = "wood cape", clientId = 3575, sell = 5000 }, - { itemName = "wooden spellbook", clientId = 25699, sell = 12000 } + { itemName = "wooden spellbook", clientId = 25699, sell = 12000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -206,7 +206,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/talphion.lua b/data-otservbr-global/npc/talphion.lua index cbd8844ec25..c9e6e28a9c4 100644 --- a/data-otservbr-global/npc/talphion.lua +++ b/data-otservbr-global/npc/talphion.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 27, lookBody = 86, lookLegs = 126, - lookFeet = 127 + lookFeet = 127, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -86,7 +86,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "bolt", clientId = 3446, buy = 5 }, - { itemName = "crossbow", clientId = 3349, buy = 1150 } + { itemName = "crossbow", clientId = 3349, buy = 1150 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -97,7 +97,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/tamara.lua b/data-otservbr-global/npc/tamara.lua index c7d84016425..19df51fee9f 100644 --- a/data-otservbr-global/npc/tamara.lua +++ b/data-otservbr-global/npc/tamara.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 47, lookLegs = 105, lookFeet = 105, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/tamed_lion.lua b/data-otservbr-global/npc/tamed_lion.lua index 3e4bed81a83..1fd5333b8ec 100644 --- a/data-otservbr-global/npc/tamed_lion.lua +++ b/data-otservbr-global/npc/tamed_lion.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 571 + lookType = 571, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/tamerin.lua b/data-otservbr-global/npc/tamerin.lua index d2ce37ecd53..83bef272577 100644 --- a/data-otservbr-global/npc/tamerin.lua +++ b/data-otservbr-global/npc/tamerin.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 119, lookLegs = 120, lookFeet = 121, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -76,7 +76,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 29 then npcHandler:say({ "Why should I do something for another human being? I have been on my own for all those years. Hmm, but actually there is something I could need some assistance with. ... ", - "If you help me to solve my problems, I will help you with your mission. Do you accept?" + "If you help me to solve my problems, I will help you with your mission. Do you accept?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.InServiceofYalahar.Questline) == 32 then diff --git a/data-otservbr-global/npc/tamoril.lua b/data-otservbr-global/npc/tamoril.lua index c9f8093ea82..c0dc87bbb85 100644 --- a/data-otservbr-global/npc/tamoril.lua +++ b/data-otservbr-global/npc/tamoril.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 39 + lookType = 39, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -64,9 +64,9 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "draconic incitements") and npcHandler:getTopic(playerId) == 3 then npcHandler:setTopic(playerId, 4) npcHandler:say({ - 'Each kind of dragon has its own incitement, an important aspect that impels them and occupies their mind. For the common dragons this is the lust for power, for the dragon lords the greed for treasures. ...', - 'The frost dragons\' incitement is the thirst for knowledge und for the undead dragons it\'s the desire for life, as they regret their ancestor\'s mistake. ...', - 'These incitements are also a kind of trial that has to be undergone if one wants to {find} the First Dragon\'s four descendants.' + "Each kind of dragon has its own incitement, an important aspect that impels them and occupies their mind. For the common dragons this is the lust for power, for the dragon lords the greed for treasures. ...", + "The frost dragons' incitement is the thirst for knowledge und for the undead dragons it's the desire for life, as they regret their ancestor's mistake. ...", + "These incitements are also a kind of trial that has to be undergone if one wants to {find} the First Dragon's four descendants.", }, npc, creature) elseif MsgContains(message, "find") then npcHandler:setTopic(playerId, 5) @@ -74,16 +74,16 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 5 then npcHandler:setTopic(playerId, 6) npcHandler:say({ - ' Fine! I\'ll tell you where to find our ancestors. You now may ask yourself why I should want you to go there and fight them. It\'s quite simple: I am a straight descendant of Kalyassa herself. She was not really a caring mother. ...', - 'No, she called herself an empress and behaved exactly like that. She was domineering, farouche and conceited and this finally culminated in a serious quarrel between us. ...', - 'I sought support by my aunt and my uncles but they were not a bit better than my mother was! So, feel free to go to their lairs and challenge them. I doubt you will succeed but then again that\'s not my problem. ...', - 'So, you want to know about their secret lairs?' + " Fine! I'll tell you where to find our ancestors. You now may ask yourself why I should want you to go there and fight them. It's quite simple: I am a straight descendant of Kalyassa herself. She was not really a caring mother. ...", + "No, she called herself an empress and behaved exactly like that. She was domineering, farouche and conceited and this finally culminated in a serious quarrel between us. ...", + "I sought support by my aunt and my uncles but they were not a bit better than my mother was! So, feel free to go to their lairs and challenge them. I doubt you will succeed but then again that's not my problem. ...", + "So, you want to know about their secret lairs?", }, npc, creature) elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 6 then npcHandler:say({ - 'So listen: The lairs are secluded and you can only reach them by using a magical gem teleporter. You will find a teleporter carved out of a giant emerald in the dragon lairs deep beneath the Darama desert, which will lead you to Tazhadur\'s lair. ...', - 'A ruby teleporter located in the western Dragonblaze Peaks allows you to enter the lair of Kalyassa. A teleporter carved out of sapphire is on the island Okolnir and leads you to Gelidrazah\'s lair. ...', - 'And finally an amethyst teleporter in undead-infested caverns underneath Edron allows you to enter the lair of Zorvorax.' + "So listen: The lairs are secluded and you can only reach them by using a magical gem teleporter. You will find a teleporter carved out of a giant emerald in the dragon lairs deep beneath the Darama desert, which will lead you to Tazhadur's lair. ...", + "A ruby teleporter located in the western Dragonblaze Peaks allows you to enter the lair of Kalyassa. A teleporter carved out of sapphire is on the island Okolnir and leads you to Gelidrazah's lair. ...", + "And finally an amethyst teleporter in undead-infested caverns underneath Edron allows you to enter the lair of Zorvorax.", }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.FirstDragon.Questline, 1) @@ -105,7 +105,7 @@ npcConfig.shop = { { itemName = "red gem", clientId = 3039, sell = 1000 }, { itemName = "violet gem", clientId = 3036, sell = 10000 }, { itemName = "white gem", clientId = 32769, sell = 12000 }, - { itemName = "yellow gem", clientId = 3037, sell = 1000 } + { itemName = "yellow gem", clientId = 3037, sell = 1000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -116,7 +116,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/tanaro.lua b/data-otservbr-global/npc/tanaro.lua index 05349bf83a6..0f843a24d83 100644 --- a/data-otservbr-global/npc/tanaro.lua +++ b/data-otservbr-global/npc/tanaro.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 97, lookFeet = 115, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -66,7 +66,7 @@ npcConfig.shop = { { itemName = "roll", clientId = 3601, buy = 2 }, { itemName = "salmon", clientId = 3579, buy = 6 }, { itemName = "valentine's cake", clientId = 6392, buy = 100 }, - { itemName = "white mushroom", clientId = 3723, buy = 6 } + { itemName = "white mushroom", clientId = 3723, buy = 6 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -77,7 +77,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/tandros.lua b/data-otservbr-global/npc/tandros.lua index c23cc734917..efc5ee49a57 100644 --- a/data-otservbr-global/npc/tandros.lua +++ b/data-otservbr-global/npc/tandros.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 79, lookLegs = 113, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -111,7 +111,7 @@ npcConfig.shop = { { itemName = "wand of inferno", clientId = 3071, buy = 15000 }, { itemName = "wand of starstorm", clientId = 8092, buy = 18000 }, { itemName = "wand of voodoo", clientId = 8094, buy = 22000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -122,7 +122,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/tanyt.lua b/data-otservbr-global/npc/tanyt.lua index cfc67a4afdf..31a762b4be6 100644 --- a/data-otservbr-global/npc/tanyt.lua +++ b/data-otservbr-global/npc/tanyt.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 45, lookFeet = 3, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Feel the wind in your hair during one of my carpet rides!' } + { text = "Feel the wind in your hair during one of my carpet rides!" }, } local keywordHandler = KeywordHandler:new() @@ -60,42 +60,46 @@ end local TheNewFrontier = Storage.Quest.U8_54.TheNewFrontier local function addTravelKeyword(keyword, text, cost, destination, condition, action) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Never heard about a place like this.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Never heard about a place like this." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }, nil, action) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }, nil, action) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('farmine', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('zao', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('darashia', 'Darashia on Darama', 40, Position(33270, 32441, 6)) -addTravelKeyword('darama', 'Darashia on Darama', 40, Position(33270, 32441, 6)) -addTravelKeyword('kazordoon', 'Kazordoon', 70, Position(32588, 31941, 0)) -addTravelKeyword('kazor', 'Kazordoon', 70, Position(32588, 31941, 0)) -addTravelKeyword('femor hills', 'the Femor Hills', 60, Position(32536, 31837, 4)) -addTravelKeyword('hills', 'the Femor Hills', 60, Position(32536, 31837, 4)) -addTravelKeyword('svargrond', 'Svargrond', 60, Position(32253, 31097, 4)) -addTravelKeyword('edron', 'Edron', 60, Position(33193, 31784, 3)) -addTravelKeyword('marapur', 'Marapur', 70, Position(33805, 32767, 2)) +addTravelKeyword("farmine", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("zao", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("darashia", "Darashia on Darama", 40, Position(33270, 32441, 6)) +addTravelKeyword("darama", "Darashia on Darama", 40, Position(33270, 32441, 6)) +addTravelKeyword("kazordoon", "Kazordoon", 70, Position(32588, 31941, 0)) +addTravelKeyword("kazor", "Kazordoon", 70, Position(32588, 31941, 0)) +addTravelKeyword("femor hills", "the Femor Hills", 60, Position(32536, 31837, 4)) +addTravelKeyword("hills", "the Femor Hills", 60, Position(32536, 31837, 4)) +addTravelKeyword("svargrond", "Svargrond", 60, Position(32253, 31097, 4)) +addTravelKeyword("edron", "Edron", 60, Position(33193, 31784, 3)) +addTravelKeyword("marapur", "Marapur", 70, Position(33805, 32767, 2)) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33958, 31512, 1), Position(33959, 31512, 1) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33958, 31512, 1), Position(33959, 31512, 1) } }) -- Basic -keywordHandler:addKeyword({ 'trip' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'route' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'fly' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, {Edron}, {Issavi}, {Svargrond}, {Kazordoon}, {Zao} or to {Femor Hills} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'destination' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'go' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Ah, the wind brings in another visitor. Welcome, dear guest. Are you looking for a {passage} with my carpet?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +keywordHandler:addKeyword({ "trip" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "route" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "fly" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, {Edron}, {Issavi}, {Svargrond}, {Kazordoon}, {Zao} or to {Femor Hills} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "destination" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "go" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, {Edron} or to {Marapur} if you like. Where do you want to go?" }) + +npcHandler:setMessage(MESSAGE_GREET, "Ah, the wind brings in another visitor. Welcome, dear guest. Are you looking for a {passage} with my carpet?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/tarak_inner.lua b/data-otservbr-global/npc/tarak_inner.lua index b4d10fd6116..a713687b682 100644 --- a/data-otservbr-global/npc/tarak_inner.lua +++ b/data-otservbr-global/npc/tarak_inner.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 31, lookLegs = 66, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/tarak_sunken.lua b/data-otservbr-global/npc/tarak_sunken.lua index 386129453ab..e9716849720 100644 --- a/data-otservbr-global/npc/tarak_sunken.lua +++ b/data-otservbr-global/npc/tarak_sunken.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 31, lookLegs = 66, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/tarun.lua b/data-otservbr-global/npc/tarun.lua index 03929ef4919..6c153469ead 100644 --- a/data-otservbr-global/npc/tarun.lua +++ b/data-otservbr-global/npc/tarun.lua @@ -17,11 +17,11 @@ npcConfig.outfit = { lookLegs = 0, lookFeet = 67, lookAddons = 2, - lookMount = 0 + lookMount = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -77,7 +77,7 @@ npcConfig.shop = { { itemName = "ultimate health potion", clientId = 7643, buy = 379 }, { itemName = "ultimate mana potion", clientId = 23373, buy = 438 }, { itemName = "ultimate spirit potion", clientId = 23374, buy = 438 }, - { itemName = "vial", clientId = 2874, sell = 5 } + { itemName = "vial", clientId = 2874, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -88,7 +88,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/tefrit.lua b/data-otservbr-global/npc/tefrit.lua index da82c6d8403..8ef2c821bd6 100644 --- a/data-otservbr-global/npc/tefrit.lua +++ b/data-otservbr-global/npc/tefrit.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 74, lookLegs = 10, lookFeet = 79, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,8 +57,7 @@ local function greetCallback(npc, creature) if player:getStorageValue(Storage.Kilmaresh.First.Access) < 1 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) - and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then + elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 15) elseif player:getStorageValue(Storage.Kilmaresh.First.Mission) == 4 then @@ -117,7 +116,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/tehlim.lua b/data-otservbr-global/npc/tehlim.lua index c1ca8d5f8fe..f91c17adf39 100644 --- a/data-otservbr-global/npc/tehlim.lua +++ b/data-otservbr-global/npc/tehlim.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/telas.lua b/data-otservbr-global/npc/telas.lua index 577ae7ebe4d..235d0d22c44 100644 --- a/data-otservbr-global/npc/telas.lua +++ b/data-otservbr-global/npc/telas.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 76, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,55 +61,38 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "farmine") and player:getStorageValue(TheNewFrontier.Questline) == 14 then if player:getStorageValue(TheNewFrontier.Mission05.Telas) == 1 then - npcHandler:say( - "I have heard only little about this mine. I am a bit absorbed in my studies. But what does this mine have to do with me?", - npc, creature) + npcHandler:say("I have heard only little about this mine. I am a bit absorbed in my studies. But what does this mine have to do with me?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say( - "You are starting this discussion again? Why should I listen to you this time, do you have anything to convince me to let you even try?", - npc, creature) + npcHandler:say("You are starting this discussion again? Why should I listen to you this time, do you have anything to convince me to let you even try?", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif MsgContains(message, "reason") or MsgContains(message, "flatter") and - player:getStorageValue(TheNewFrontier.Mission05.TelasKeyword) <= 2 and - player:getStorageValue(TheNewFrontier.Mission05.Telas) == 1 then + elseif MsgContains(message, "reason") or MsgContains(message, "flatter") and player:getStorageValue(TheNewFrontier.Mission05.TelasKeyword) <= 2 and player:getStorageValue(TheNewFrontier.Mission05.Telas) == 1 then if npcHandler:getTopic(playerId) == 1 then if MsgContains(message, "reason") and player:getStorageValue(TheNewFrontier.Mission05.TelasKeyword) == 1 then - npcHandler:say( - "Well it sounds like a good idea to test my golems in some real environment. I think it is acceptable to send some of them to Farmine.", - npc, creature) + npcHandler:say("Well it sounds like a good idea to test my golems in some real environment. I think it is acceptable to send some of them to Farmine.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Telas, 3) - elseif MsgContains(message, "flatter") and player:getStorageValue(TheNewFrontier.Mission05.TelasKeyword) == - 2 then - npcHandler:say( - "Well, of course my worker golems are quite usefull and it might indeed be a good idea to see who they operate on realistic conditions. I will send some to farmine soon.", - npc, creature) + elseif MsgContains(message, "flatter") and player:getStorageValue(TheNewFrontier.Mission05.TelasKeyword) == 2 then + npcHandler:say("Well, of course my worker golems are quite usefull and it might indeed be a good idea to see who they operate on realistic conditions. I will send some to farmine soon.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Telas, 3) end player:setStorageValue(TheNewFrontier.Mission05.TelasKeyword, 3) end - elseif MsgContains(message, "plea") and player:getStorageValue(TheNewFrontier.Mission05.TelasKeyword) == 3 and - player:getStorageValue(TheNewFrontier.Mission05.Telas) == 1 then + elseif MsgContains(message, "plea") and player:getStorageValue(TheNewFrontier.Mission05.TelasKeyword) == 3 and player:getStorageValue(TheNewFrontier.Mission05.Telas) == 1 then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say( - "Well, if the situation is that desperate I think it is possible to send some of the golems to help the poor dwarfs out of their misery.", - npc, creature) + npcHandler:say("Well, if the situation is that desperate I think it is possible to send some of the golems to help the poor dwarfs out of their misery.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Telas, 3) end elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 2 then if player:getStorageValue(TheNewFrontier.Mission05.Telas) == 2 and player:removeItem(10027, 1) then - npcHandler:say( - "Oh how nice of you. I might have misjudged you. So let us return to this matter of worker golems. Do you have any better arguments this time?", - npc, creature) + npcHandler:say("Oh how nice of you. I might have misjudged you. So let us return to this matter of worker golems. Do you have any better arguments this time?", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Telas, 1) npcHandler:setTopic(playerId, 1) end end else - if player:getStorageValue(TheNewFrontier.Questline) == 14 and - player:getStorageValue(TheNewFrontier.Mission05.Telas) == 1 then + if player:getStorageValue(TheNewFrontier.Questline) == 14 and player:getStorageValue(TheNewFrontier.Mission05.Telas) == 1 then npcHandler:say("Wrong Word.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Telas, 2) end @@ -146,7 +129,7 @@ npcConfig.shop = { { itemName = "stone nose", clientId = 16137, sell = 590 }, { itemName = "sulphurous stone", clientId = 10315, sell = 100 }, { itemName = "vein of ore", clientId = 16135, sell = 330 }, - { itemName = "war crystal", clientId = 9654, sell = 460 } + { itemName = "war crystal", clientId = 9654, sell = 460 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -157,7 +140,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/telas_golem.lua b/data-otservbr-global/npc/telas_golem.lua index 7c0df4012b1..535cdd84e1a 100644 --- a/data-otservbr-global/npc/telas_golem.lua +++ b/data-otservbr-global/npc/telas_golem.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 304 + lookType = 304, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'What .. happened?' } + { text = "What .. happened?" }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/tereban.lua b/data-otservbr-global/npc/tereban.lua index 4057d4e135b..5fdd0773ce7 100644 --- a/data-otservbr-global/npc/tereban.lua +++ b/data-otservbr-global/npc/tereban.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 48, lookLegs = 20, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/tereban_functions.lua b/data-otservbr-global/npc/tereban_functions.lua index 0874f7db4c2..40ba653228d 100644 --- a/data-otservbr-global/npc/tereban_functions.lua +++ b/data-otservbr-global/npc/tereban_functions.lua @@ -1,101 +1,105 @@ local topic = {} local storages = { - Storage.FathersBurden.Sinew, Storage.FathersBurden.Wood, - Storage.FathersBurden.Cloth, Storage.FathersBurden.Silk, - Storage.FathersBurden.Crystal, Storage.FathersBurden.Root, - Storage.FathersBurden.Iron, Storage.FathersBurden.Scale + Storage.FathersBurden.Sinew, + Storage.FathersBurden.Wood, + Storage.FathersBurden.Cloth, + Storage.FathersBurden.Silk, + Storage.FathersBurden.Crystal, + Storage.FathersBurden.Root, + Storage.FathersBurden.Iron, + Storage.FathersBurden.Scale, } TerebanConfig = { - ['strong sinew'] = { + ["strong sinew"] = { storage = Storage.FathersBurden.Sinew, messages = { - deliever = 'Do you have the required sinew?', - success = 'Ah, not only did you bring some sinew to me, you also made the world a safer place by killing Heoni.', - failure = 'Sorry, you must be wrong. Perhaps Heoni was out to hunt when you were looking for it. Search in the mountains of Edron. I put my trust in your abilities.', - no = 'Perhaps Heoni was out to hunt when you were looking for it. Search in the mountains of Edron. I put my trust in your abilities.', - done = 'Your bravery earned us this excellent sinew.' + deliever = "Do you have the required sinew?", + success = "Ah, not only did you bring some sinew to me, you also made the world a safer place by killing Heoni.", + failure = "Sorry, you must be wrong. Perhaps Heoni was out to hunt when you were looking for it. Search in the mountains of Edron. I put my trust in your abilities.", + no = "Perhaps Heoni was out to hunt when you were looking for it. Search in the mountains of Edron. I put my trust in your abilities.", + done = "Your bravery earned us this excellent sinew.", }, - itemId = 10592 -- Strong sinew + itemId = 10592, -- Strong sinew }, - ['exquisite wood'] = { + ["exquisite wood"] = { storage = Storage.FathersBurden.Wood, messages = { - deliever = 'Could you find the wood we were talking about?', - success = 'Thank you. I feel somewhat embarrassed to put you into such a danger for some birthday present but I am sure you can handle it.', - failure = { 'Sorry, you must be wrong. The wood that I need should be in one of the barbarian camps. ...', 'It seems logical to search the most northern camp first, it is closest to the place where the tree was cut. Please hurry, there is still so much to do before the birthday.' }, - no = 'The wood that I need should be in one of the barbarian camps. It seems logical to search the most northern camp first, it is closest to the place where the tree was cut. Please hurry, there is still so much to do before the birthday.', - done = 'The wood you have found is just what we needed.' + deliever = "Could you find the wood we were talking about?", + success = "Thank you. I feel somewhat embarrassed to put you into such a danger for some birthday present but I am sure you can handle it.", + failure = { "Sorry, you must be wrong. The wood that I need should be in one of the barbarian camps. ...", "It seems logical to search the most northern camp first, it is closest to the place where the tree was cut. Please hurry, there is still so much to do before the birthday." }, + no = "The wood that I need should be in one of the barbarian camps. It seems logical to search the most northern camp first, it is closest to the place where the tree was cut. Please hurry, there is still so much to do before the birthday.", + done = "The wood you have found is just what we needed.", }, - itemId = 10591 -- Exquisite wood + itemId = 10591, -- Exquisite wood }, - ['spectral cloth'] = { + ["spectral cloth"] = { storage = Storage.FathersBurden.Cloth, messages = { - deliever = 'Could you find the cloth I am looking for?', - success = 'It looks a bit scary but I guess sorcerers might even find that appealing. Thank you very much.', - failure = 'Sorry, you must be wrong. You will find it somewhere in the crypts under the Isle of the Kings. You will probably have to look for hidden caves when you don\'t find it at an obvious place. Perhaps you even need a shovel or a pick.', - no = 'Don\'t forget, you will find it somewhere in the crypts under the Isle of the Kings. You will probably have to look for hidden caves when you don\'t find it at an obvious place. Perhaps you even need a shovel or a pick.', - done = 'Thanks to your efforts we have a suitable piece of spectral cloth.' + deliever = "Could you find the cloth I am looking for?", + success = "It looks a bit scary but I guess sorcerers might even find that appealing. Thank you very much.", + failure = "Sorry, you must be wrong. You will find it somewhere in the crypts under the Isle of the Kings. You will probably have to look for hidden caves when you don't find it at an obvious place. Perhaps you even need a shovel or a pick.", + no = "Don't forget, you will find it somewhere in the crypts under the Isle of the Kings. You will probably have to look for hidden caves when you don't find it at an obvious place. Perhaps you even need a shovel or a pick.", + done = "Thanks to your efforts we have a suitable piece of spectral cloth.", }, - itemId = 10590 -- Spectral cloth + itemId = 10590, -- Spectral cloth }, - ['exquisite silk'] = { + ["exquisite silk"] = { storage = Storage.FathersBurden.Silk, messages = { - deliever = 'So you\'ve found the silk that I need?', - success = 'Great. I better don\'t think about how big a spider has to be to produce such strands of silk.', - failure = 'Sorry, you must be wrong. Search the spider caves of the continent Zao for the silk. They have to be somewhere in the east of Zao\'s southern part. My sources claim there you will find the silk that we need.', - no = 'Then search the spider caves of the continent Zao for the silk. They have to be somewhere in the east of Zao\'s southern part. My sources claim there you will find the silk that we need.', - done = 'The silk you have brought me is exquisite indeed.' + deliever = "So you've found the silk that I need?", + success = "Great. I better don't think about how big a spider has to be to produce such strands of silk.", + failure = "Sorry, you must be wrong. Search the spider caves of the continent Zao for the silk. They have to be somewhere in the east of Zao's southern part. My sources claim there you will find the silk that we need.", + no = "Then search the spider caves of the continent Zao for the silk. They have to be somewhere in the east of Zao's southern part. My sources claim there you will find the silk that we need.", + done = "The silk you have brought me is exquisite indeed.", }, - itemId = 10589 -- Exquisite silk + itemId = 10589, -- Exquisite silk }, - ['magic crystal'] = { + ["magic crystal"] = { storage = Storage.FathersBurden.Crystal, messages = { - deliever = 'Did you find the required crystal?', - success = 'Oh look at the colours and sparkles. This crystal is truly remarkable, thank you.', - failure = { 'Sorry, you must be wrong. It is probably not easy to find the crystal that we need in such a huge desert which may contain several tombs, but please don\'t give up. ...', 'According to my sources the tomb we are looking for is east of Ankrahmun. You probably need a shovel to enter it. We still have some time and I am convinced you will find it.' }, - no = { 'It is probably not easy to find the crystal that we need in such a huge desert which may contain several tombs, but please don\'t give up. ...', 'According to my sources the tomb we are looking for is east of Ankrahmun. You probably need a shovel to enter it. We still have some time and I am convinced you will find it.' }, - done = 'The crystal you have found is absolutely flawless. You did a great job indeed.' + deliever = "Did you find the required crystal?", + success = "Oh look at the colours and sparkles. This crystal is truly remarkable, thank you.", + failure = { "Sorry, you must be wrong. It is probably not easy to find the crystal that we need in such a huge desert which may contain several tombs, but please don't give up. ...", "According to my sources the tomb we are looking for is east of Ankrahmun. You probably need a shovel to enter it. We still have some time and I am convinced you will find it." }, + no = { "It is probably not easy to find the crystal that we need in such a huge desert which may contain several tombs, but please don't give up. ...", "According to my sources the tomb we are looking for is east of Ankrahmun. You probably need a shovel to enter it. We still have some time and I am convinced you will find it." }, + done = "The crystal you have found is absolutely flawless. You did a great job indeed.", }, - itemId = 10596 -- Magical crystal + itemId = 10596, -- Magical crystal }, - ['mystic root'] = { + ["mystic root"] = { storage = Storage.FathersBurden.Root, messages = { - deliever = 'Could you find the root which we are looking for?', - success = 'You are admirably determined in fulfilling your task. I will make sure that my sons appreciate what you did for their presents.', - failure = 'Sorry, you must be wrong. The best advice I can give you is to look underground beneath the city for a suitable root.', - no = 'The best advice I can give you is to look underground beneath the city for a suitable root.', - done = 'It is even recognisable for me that the root you gave me is filled with magic.' + deliever = "Could you find the root which we are looking for?", + success = "You are admirably determined in fulfilling your task. I will make sure that my sons appreciate what you did for their presents.", + failure = "Sorry, you must be wrong. The best advice I can give you is to look underground beneath the city for a suitable root.", + no = "The best advice I can give you is to look underground beneath the city for a suitable root.", + done = "It is even recognisable for me that the root you gave me is filled with magic.", }, - itemId = 10595 -- Mystic root + itemId = 10595, -- Mystic root }, - ['old iron'] = { + ["old iron"] = { storage = Storage.FathersBurden.Iron, messages = { - deliever = 'Have you found the iron that we need for the present?', - success = 'I wish there\'d an easier way to get that iron but those dwarfs are so stubborn. However, now we got what we need.', - failure = 'Sorry, you must be wrong. I know it\'s not easy to find this iron but there has to be some in the deposits beneath the old Kazordoon mines. I doubt that it can be found in the newer mines outside of Kazordoon.', - no = 'I know it\'s not easy to find this iron but there has to be some in the deposits beneath the old Kazordoon mines. I doubt it that it can be found in the newer mines outside of Kazordoon.', - done = 'The iron that you\'ve found will make an ideal base for a shield.' + deliever = "Have you found the iron that we need for the present?", + success = "I wish there'd an easier way to get that iron but those dwarfs are so stubborn. However, now we got what we need.", + failure = "Sorry, you must be wrong. I know it's not easy to find this iron but there has to be some in the deposits beneath the old Kazordoon mines. I doubt that it can be found in the newer mines outside of Kazordoon.", + no = "I know it's not easy to find this iron but there has to be some in the deposits beneath the old Kazordoon mines. I doubt it that it can be found in the newer mines outside of Kazordoon.", + done = "The iron that you've found will make an ideal base for a shield.", }, - itemId = 10593 -- Old iron + itemId = 10593, -- Old iron }, - ['flexible dragon scale'] = { + ["flexible dragon scale"] = { storage = Storage.FathersBurden.Scale, messages = { - deliever = 'Could you get Glitterscale\'s scales yet?', - success = 'These scales must have belonged to a fearsome beast. I envy you for your bravery.', - failure = 'Sorry, you must be wrong. Oh please, search for Glitterscale. It should not be too hard to find it in those caves north of Thais.', - no = 'Oh please, search for Glitterscale. It should not be too hard to find it in those caves north of Thais.', - done = 'Only someone as daring as you could slay the beast to get the necessary scales.' + deliever = "Could you get Glitterscale's scales yet?", + success = "These scales must have belonged to a fearsome beast. I envy you for your bravery.", + failure = "Sorry, you must be wrong. Oh please, search for Glitterscale. It should not be too hard to find it in those caves north of Thais.", + no = "Oh please, search for Glitterscale. It should not be too hard to find it in those caves north of Thais.", + done = "Only someone as daring as you could slay the beast to get the necessary scales.", }, - itemId = 10594 -- Flexibe dragon scale - } + itemId = 10594, -- Flexibe dragon scale + }, } local ThreatenedDreams = Storage.Quest.U11_40.ThreatenedDreams @@ -111,16 +115,15 @@ function ParseTerebanSay(npc, creature, message, npcHandler) if npcHandler:getTopic(playerId) == 0 then if MsgContains(message, "cloak") then if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 12 then - npcHandler:say( - { - "I met this troll when he was hanging around near the town. He carried something I would consider rather uncharacteristic for a troll: a stunningly beautiful cloak entirely made of white feathers. I was curious and asked him if he would sell it. ...", - "He seemed to be more interested in some of my coins and a piece of meat than in this unusual garment. Therefore, we made a trade: He got some meat and coins and I got the cloak. ...", - "I had a clue that it was a magical item but nobody in Edron knew something about it. As I have a very lettered friend in Darashia I took a magical carpet flight to visit him and ask him about the cloak. ...", - "But then something very annoying happened: During the flight the wind blew so strongly that it tattered the cloak. Feather after feather was blown off the carpet but I didn't realise it. ...", - "When I reached Darashia there was no cloak just a handful of feathers. *sighs* I'm not sure whether it makes sense to search for these feathers. There was a small wind gust when we were still above Edron. ...", - "But the actual storm began when we were in the air above the Darama. The feathers are now scattered all over the desert I guess. Rather futile to look out for them but if you really want to try: ...", - "The magic carpet made a beeline from Edron to Darashia. You should search along this line on the ground. Good luck!" - }, npc, creature) + npcHandler:say({ + "I met this troll when he was hanging around near the town. He carried something I would consider rather uncharacteristic for a troll: a stunningly beautiful cloak entirely made of white feathers. I was curious and asked him if he would sell it. ...", + "He seemed to be more interested in some of my coins and a piece of meat than in this unusual garment. Therefore, we made a trade: He got some meat and coins and I got the cloak. ...", + "I had a clue that it was a magical item but nobody in Edron knew something about it. As I have a very lettered friend in Darashia I took a magical carpet flight to visit him and ask him about the cloak. ...", + "But then something very annoying happened: During the flight the wind blew so strongly that it tattered the cloak. Feather after feather was blown off the carpet but I didn't realise it. ...", + "When I reached Darashia there was no cloak just a handful of feathers. *sighs* I'm not sure whether it makes sense to search for these feathers. There was a small wind gust when we were still above Edron. ...", + "But the actual storm began when we were in the air above the Darama. The feathers are now scattered all over the desert I guess. Rather futile to look out for them but if you really want to try: ...", + "The magic carpet made a beeline from Edron to Darashia. You should search along this line on the ground. Good luck!", + }, npc, creature) player:setStorageValue(ThreatenedDreams.Mission01[1], 13) player:setStorageValue(ThreatenedDreams.Mission01.FeathersCount, 0) -- Start Mission 'Tattered Swan Feathers' else @@ -137,25 +140,23 @@ function ParseTerebanSay(npc, creature, message, npcHandler) player:setStorageValue(Storage.FathersBurden.Status, 2) player:addItem(oldCape, 1) player:addExperience(8000, true) - npcHandler:say( - { - "I'm so glad I finally have all the parts for the presents. Your reward is my eternal gratitude. Well, that and some gold of course. ...", - "Take this sachet over there, I wrapped the coins into this old cape I had still lying around here from a barter with a stranger, it is of no use for me anyway. Farewell and thank you once again." - }, npc, creature) + npcHandler:say({ + "I'm so glad I finally have all the parts for the presents. Your reward is my eternal gratitude. Well, that and some gold of course. ...", + "Take this sachet over there, I wrapped the coins into this old cape I had still lying around here from a barter with a stranger, it is of no use for me anyway. Farewell and thank you once again.", + }, npc, creature) elseif player:getStorageValue(Storage.FathersBurden.Status) == 2 then npcHandler:say("Thank you for your help!", npc, creature) return true else - npcHandler:say( - { - "I have four sons which are very dear to me. Though they were born on the same day and even in the same hour, they took quite different paths in life. ...", - "Each of them chose a different vocation, one will become a knight, one a sorcerer, one a druid, and the other a paladin. In a few weeks they will reach adulthood and I am holding a birthday party for them. ...", - "It should become a day to remember and so I want to give them something special as a present. I searched the land for the finest craftsmen so they could create suitable presents for my sons. ...", - "But something of fine craftsmanship will just not cut it. So I asked them what they would need to create something special. They all came up with lists of rare and expensive items necessary for the task ahead. ...", - "I spent a small fortune to buy most of the materials but in the end the key components are that rare that they cannot be simply bought somewhere. ...", - "As far as I understood it, the places where you can get these items are quite dangerous and so it would take some adventurer to get them. ...", - "That would be your mission if you are interested. Uhm, so are you interested?" - }, npc, creature) + npcHandler:say({ + "I have four sons which are very dear to me. Though they were born on the same day and even in the same hour, they took quite different paths in life. ...", + "Each of them chose a different vocation, one will become a knight, one a sorcerer, one a druid, and the other a paladin. In a few weeks they will reach adulthood and I am holding a birthday party for them. ...", + "It should become a day to remember and so I want to give them something special as a present. I searched the land for the finest craftsmen so they could create suitable presents for my sons. ...", + "But something of fine craftsmanship will just not cut it. So I asked them what they would need to create something special. They all came up with lists of rare and expensive items necessary for the task ahead. ...", + "I spent a small fortune to buy most of the materials but in the end the key components are that rare that they cannot be simply bought somewhere. ...", + "As far as I understood it, the places where you can get these items are quite dangerous and so it would take some adventurer to get them. ...", + "That would be your mission if you are interested. Uhm, so are you interested?", + }, npc, creature) npcHandler:setTopic(playerId, 1) end elseif TerebanConfig[message:lower()] then @@ -191,10 +192,7 @@ function ParseTerebanSay(npc, creature, message, npcHandler) end player:setStorageValue(targetMessage.storage, 2) - player:setStorageValue( - Storage.FathersBurden.Progress, - player:getStorageValue(Storage.FathersBurden.Progress) + 1 - ) + player:setStorageValue(Storage.FathersBurden.Progress, player:getStorageValue(Storage.FathersBurden.Progress) + 1) player:addExperience(2500, true) npcHandler:say(targetMessage.messages.success, npc, creature) elseif MsgContains(message, "no") then diff --git a/data-otservbr-global/npc/terrence.lua b/data-otservbr-global/npc/terrence.lua index 0e9b5f99866..fa1597f0fa2 100644 --- a/data-otservbr-global/npc/terrence.lua +++ b/data-otservbr-global/npc/terrence.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 28, lookLegs = 28, lookFeet = 51, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,7 +55,7 @@ local function creatureSayCallback(npc, creature, type, message) local playerId = player:getId() -- Missing script for complete the mission 16 of dark trails - if (MsgContains(message, "mission")) then + if MsgContains(message, "mission") then if player:getStorageValue(Storage.DarkTrails.Mission16) == 1 then npcHandler:say("Ahhhhhhhh! Find and investigate the hideout, the mission 17", npc, creature) setPlayerStorageValue(creature, Storage.DarkTrails.Mission17, 1) diff --git a/data-otservbr-global/npc/tesha.lua b/data-otservbr-global/npc/tesha.lua index a42372185eb..59575877193 100644 --- a/data-otservbr-global/npc/tesha.lua +++ b/data-otservbr-global/npc/tesha.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 32, lookLegs = 81, lookFeet = 94, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() @@ -140,7 +140,7 @@ npcConfig.shop = { { itemName = "watermelon tourmaline", clientId = 33780, sell = 230000 }, { itemName = "wedding ring", clientId = 3004, buy = 990 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -151,7 +151,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/testserver_assistant.lua b/data-otservbr-global/npc/testserver_assistant.lua index a0a77d2617f..0962c3e9850 100644 --- a/data-otservbr-global/npc/testserver_assistant.lua +++ b/data-otservbr-global/npc/testserver_assistant.lua @@ -3,7 +3,7 @@ local npcType = Game.createNpcType(internalNpcName) local npcConfig = { amountMoney = 100, --1kk amountLevel = 100, - maxLevel = 800 + maxLevel = 800, } npcConfig.name = internalNpcName @@ -20,11 +20,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,16 +61,16 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'money') or MsgContains(message, "gold") then - npcHandler:say('There you have', npc, creature) + if MsgContains(message, "money") or MsgContains(message, "gold") then + npcHandler:say("There you have", npc, creature) player:addItem(3043, npcConfig.amountMoney) end if MsgContains(message, "exp") or MsgContains(message, "experience") then if player:getLevel() > npcConfig.maxLevel then - npcHandler:say('You can not take it anymore', npc, creature) + npcHandler:say("You can not take it anymore", npc, creature) else - npcHandler:say('Here you are |PLAYERNAME|.', npc, creature) + npcHandler:say("Here you are |PLAYERNAME|.", npc, creature) local level = player:getLevel() + npcConfig.amountLevel - 1 local experience = ((50 * level * level * level) - (150 * level * level) + (400 * level)) / 3 player:addExperience(experience - player:getExperience(), true, true) @@ -79,7 +79,9 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "bless") or MsgContains(message, "blessing") then local hasToF = Blessings.Config.HasToF and player:hasBlessing(1) or true - donthavefilter = function(p, b) return not p:hasBlessing(b) end + donthavefilter = function(p, b) + return not p:hasBlessing(b) + end local missingBless = player:getBlessings(nil, donthavefilter) local missingBlessAmt = #missingBless + (hasToF and 0 or 1) @@ -103,7 +105,7 @@ local function creatureSayCallback(npc, creature, type, message) local experience = ((50 * level * level * level) - (150 * level * level) + (400 * level)) / 3 player:removeExperience(player:getExperience() - experience) else - npcHandler:say('You can not take it anymore', npc, creature) + npcHandler:say("You can not take it anymore", npc, creature) end end @@ -111,8 +113,7 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) -npcHandler:setMessage(MESSAGE_GREET, "Hey |PLAYERNAME|. I'm Testserver Assistant and I can give {money}, {experience} and {blessing} which will be useful for testing on " - .. configManager.getString(configKeys.SERVER_NAME) .. " server." .. " You can too to back to level 8 with {reset}.") +npcHandler:setMessage(MESSAGE_GREET, "Hey |PLAYERNAME|. I'm Testserver Assistant and I can give {money}, {experience} and {blessing} which will be useful for testing on " .. configManager.getString(configKeys.SERVER_NAME) .. " server." .. " You can too to back to level 8 with {reset}.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) -- npcType registering the npcConfig table diff --git a/data-otservbr-global/npc/tezila.lua b/data-otservbr-global/npc/tezila.lua index dc504d977e7..f6580c6b602 100644 --- a/data-otservbr-global/npc/tezila.lua +++ b/data-otservbr-global/npc/tezila.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 3, lookBody = 92, lookLegs = 91, - lookFeet = 128 + lookFeet = 128, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -104,7 +104,7 @@ npcConfig.shop = { { itemName = "violet crystal shard", clientId = 16120, sell = 1500 }, { itemName = "wedding ring", clientId = 3004, buy = 990 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -115,7 +115,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/thanita.lua b/data-otservbr-global/npc/thanita.lua index 0e05241be7c..43a61f8e0d7 100644 --- a/data-otservbr-global/npc/thanita.lua +++ b/data-otservbr-global/npc/thanita.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 71, lookLegs = 82, lookFeet = 71, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/the_beggar_king.lua b/data-otservbr-global/npc/the_beggar_king.lua index 58a26dddab6..4e1eb70f7ca 100644 --- a/data-otservbr-global/npc/the_beggar_king.lua +++ b/data-otservbr-global/npc/the_beggar_king.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 94, lookFeet = 78, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -68,14 +68,10 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say( - { - "Fine. But the first thing you have to know is that we are not the city's problem. We are just trying to survive. We usually seek shelter in the sewers.", - "There we are comparatively warm and safe. At least we were. But recently something has changed. There is {something} in the sewers. And it is hunting us." - }, - npc, - creature - ) + npcHandler:say({ + "Fine. But the first thing you have to know is that we are not the city's problem. We are just trying to survive. We usually seek shelter in the sewers.", + "There we are comparatively warm and safe. At least we were. But recently something has changed. There is {something} in the sewers. And it is hunting us.", + }, npc, creature) npcHandler:setTopic(playerId, 2) end elseif MsgContains(message, "something") then @@ -95,7 +91,7 @@ local function creatureSayCallback(npc, creature, type, message) "That part was never truly well liked. There were rumours that the workers found some ancient structures there and that it was ripe with accidents during the construction. ...", "The city sealed those parts off, and I have no idea how anything could get in or out without the permission of the magistrate. ... ", "But since you are investigating on their behalf, you might work out some agreement with them, if you're mad enough to enter the sewers at all. ... ", - "However, you will have to talk to one of the Glooth Brothers who are responsible for the sewer system's maintenance. You'll find them somewhere down there." + "However, you will have to talk to one of the Glooth Brothers who are responsible for the sewer system's maintenance. You'll find them somewhere down there.", }, npc, creature, 10) player:setStorageValue(Storage.DarkTrails.Mission02, 2) -- Mission 2 end player:setStorageValue(Storage.DarkTrails.Mission03, 1) -- Mission 3 start @@ -106,7 +102,7 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:setMessage(MESSAGE_GREET, "Hi! You look like someone on a {mission}.") -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye!') -- Need revision +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye!") -- Need revision npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/the_blind_prophet.lua b/data-otservbr-global/npc/the_blind_prophet.lua index 91b8d120cde..682cc34446e 100644 --- a/data-otservbr-global/npc/the_blind_prophet.lua +++ b/data-otservbr-global/npc/the_blind_prophet.lua @@ -16,14 +16,13 @@ npcConfig.outfit = { lookBody = 20, lookLegs = 30, lookFeet = 40, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } - local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -52,18 +51,18 @@ npcType.onCloseChannel = function(npc, creature) end -- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'Me put name away name long ago. Now only blind prophet of ape people are.' }) -keywordHandler:addKeyword({ 'blind prophet' }, StdModule.say, { npcHandler = npcHandler, text = 'Me is who in dreams speak to holy banana. Me divine the will of banana.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'Me {prophet} and {guardian} is.' }) -keywordHandler:addKeyword({ 'prophet' }, StdModule.say, { npcHandler = npcHandler, text = 'Me is who in dreams speak to holy banana. Me divine the will of banana.' }) -keywordHandler:addKeyword({ 'guardian' }, StdModule.say, { npcHandler = npcHandler, text = 'Me guard the forbidden land behind the great palisade. If any want to enter, he must ask me for transport.' }) -keywordHandler:addKeyword({ 'forbidden land' }, StdModule.say, { npcHandler = npcHandler, text = 'Me guard the forbidden land behind the great palisade. If any want to enter, he must ask me for transport.' }) -keywordHandler:addKeyword({ 'hairycles' }, StdModule.say, { npcHandler = npcHandler, text = 'Good ape he is. Has to work hard to make other apes listen but you helped a lot.' }) -keywordHandler:addKeyword({ 'bong' }, StdModule.say, { npcHandler = npcHandler, text = ' Our holy ancestor he is. Big as mountain. Lizards say they built palisade to keep him but we not believe ... We think Bong palisade built to have peace from pesky lizards. We respect peace of Bong, keep people away from forbidden land.' }) -keywordHandler:addKeyword({ 'lizards' }, StdModule.say, { npcHandler = npcHandler, text = ' The lizards evil and vengeful are. Ape people on guard must be.' }) -keywordHandler:addKeyword({ 'ape' }, StdModule.say, { npcHandler = npcHandler, text = 'Our people a lot to learn have. One day we might live in peace with you hairless apes, who knows.' }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = 'Me not know. Me seldom have visions of not banana related objects.' }) -keywordHandler:addKeyword({ 'port hope' }, StdModule.say, { npcHandler = npcHandler, text = 'Hairless apes strange people are. ' }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Me put name away name long ago. Now only blind prophet of ape people are." }) +keywordHandler:addKeyword({ "blind prophet" }, StdModule.say, { npcHandler = npcHandler, text = "Me is who in dreams speak to holy banana. Me divine the will of banana." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "Me {prophet} and {guardian} is." }) +keywordHandler:addKeyword({ "prophet" }, StdModule.say, { npcHandler = npcHandler, text = "Me is who in dreams speak to holy banana. Me divine the will of banana." }) +keywordHandler:addKeyword({ "guardian" }, StdModule.say, { npcHandler = npcHandler, text = "Me guard the forbidden land behind the great palisade. If any want to enter, he must ask me for transport." }) +keywordHandler:addKeyword({ "forbidden land" }, StdModule.say, { npcHandler = npcHandler, text = "Me guard the forbidden land behind the great palisade. If any want to enter, he must ask me for transport." }) +keywordHandler:addKeyword({ "hairycles" }, StdModule.say, { npcHandler = npcHandler, text = "Good ape he is. Has to work hard to make other apes listen but you helped a lot." }) +keywordHandler:addKeyword({ "bong" }, StdModule.say, { npcHandler = npcHandler, text = " Our holy ancestor he is. Big as mountain. Lizards say they built palisade to keep him but we not believe ... We think Bong palisade built to have peace from pesky lizards. We respect peace of Bong, keep people away from forbidden land." }) +keywordHandler:addKeyword({ "lizards" }, StdModule.say, { npcHandler = npcHandler, text = " The lizards evil and vengeful are. Ape people on guard must be." }) +keywordHandler:addKeyword({ "ape" }, StdModule.say, { npcHandler = npcHandler, text = "Our people a lot to learn have. One day we might live in peace with you hairless apes, who knows." }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "Me not know. Me seldom have visions of not banana related objects." }) +keywordHandler:addKeyword({ "port hope" }, StdModule.say, { npcHandler = npcHandler, text = "Hairless apes strange people are. " }) local function greetCallback(npc, creature) local playerId = creature:getId() @@ -83,13 +82,13 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("You want me to transport you to forbidden land?", npc, creature) npcHandler:setTopic(playerId, 1) elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then npcHandler:say("Take care!", npc, creature) local destination = Position(33025, 32580, 6) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then npcHandler:say("Wise decision maybe.", npc, creature) end end diff --git a/data-otservbr-global/npc/the_bone_master.lua b/data-otservbr-global/npc/the_bone_master.lua index d61ae8b983c..0d94d2bac86 100644 --- a/data-otservbr-global/npc/the_bone_master.lua +++ b/data-otservbr-global/npc/the_bone_master.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -64,7 +64,7 @@ local function creatureSayCallback(npc, creature, type, message) "The Brotherhood of Bones has suffered greatly in the past, but we did survive as we always will ...", "You have proven resourceful by beating the silly riddles the Nightmare Knights set up to test their candidates ...", "It's an amusing thought that after passing their test you might choose to join the ranks of their sworn enemies ...", - "For the irony of this I ask you, |PLAYERNAME|: Do you want to join the Brotherhood of Bones?" + "For the irony of this I ask you, |PLAYERNAME|: Do you want to join the Brotherhood of Bones?", }, npc, creature) npcHandler:setTopic(playerId, 1) end @@ -83,17 +83,17 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "But know that your decision will be irrevocable. You will abandon the opportunity to join any order whose doctrine is incontrast to our own ...", - "Do you still want to join the Brotherhood?" + "Do you still want to join the Brotherhood?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say({ "Welcome to the Brotherhood! From now on you will walk the path of Bones. A life full of promises and power has just beenoffered to you ...", "Take it, if you are up to that challenge ... or perish in agony if you deserve this fate ...", - "You can always ask me about your current rank and about the privileges the ranks grant to those who hold them." + "You can always ask me about your current rank and about the privileges the ranks grant to those who hold them.", }, npc, creature) player:setStorageValue(Storage.OutfitQuest.BrotherhoodOutfit, 1) - player:addAchievement('Bone Brother') + player:addAchievement("Bone Brother") npcHandler:setTopic(playerId, 0) player:addItem(768, 1) elseif npcHandler:getTopic(playerId) == 3 then @@ -112,7 +112,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.BrotherhoodOutfit, 3) player:addItem(770, 1) player:addItem(6432, 1) - player:addAchievement('Skull and Bones') + player:addAchievement("Skull and Bones") npcHandler:say("You advanced to {Death Dealer} rank!", npc, creature) else npcHandler:say("Come back when you gather all essences.", npc, creature) @@ -124,7 +124,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.BrotherhoodOutfit, 4) player:setStorageValue(Storage.OutfitQuest.BrotherhoodDoor, 1) player:setStorageValue(Storage.KnightwatchTowerDoor, 1) - player:addAchievement('Dread Lord') + player:addAchievement("Dread Lord") npcHandler:say("You advanced to {Dread Lord} rank! You are now able to use teleports of fourth floor of Knightwatch Tower and to create addon scrolls.", npc, creature) else npcHandler:say("Come back when you gather all essences.", npc, creature) diff --git a/data-otservbr-global/npc/the_crone.lua b/data-otservbr-global/npc/the_crone.lua index 8f5835b8ba8..95cad7c5639 100644 --- a/data-otservbr-global/npc/the_crone.lua +++ b/data-otservbr-global/npc/the_crone.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 78 + lookType = 78, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Let me mourn in peace.' } + { text = "Let me mourn in peace." }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/the_destiny_seer.lua b/data-otservbr-global/npc/the_destiny_seer.lua index cb378287ffd..9af69cbdbad 100644 --- a/data-otservbr-global/npc/the_destiny_seer.lua +++ b/data-otservbr-global/npc/the_destiny_seer.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/the_dream_master.lua b/data-otservbr-global/npc/the_dream_master.lua index fb463f17971..cee652f28ee 100644 --- a/data-otservbr-global/npc/the_dream_master.lua +++ b/data-otservbr-global/npc/the_dream_master.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 39, lookLegs = 20, lookFeet = 58, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -63,7 +63,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "The Nightmare Knights are almost extinct now, and as far as I know I am the only teacher that is left. But you might beright and its time to accept new disciples ...", "After all you have passed the Dream Challenge to reach this place, which used to be the process of initiation in the past...", - "So I ask you: do you wish to become a member of the ancient order of the Nightmare Knights, |PLAYERNAME|?" + "So I ask you: do you wish to become a member of the ancient order of the Nightmare Knights, |PLAYERNAME|?", }, npc, creature) npcHandler:setTopic(playerId, 1) end @@ -86,11 +86,11 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say({ "So I welcome you as the latest member of the order of the Nightmare Knights. You entered this place as a stranger, butyou will leave this place as a friend ...", - "You can always ask me about your current rank and about the privileges the ranks grant to those who hold them." + "You can always ask me about your current rank and about the privileges the ranks grant to those who hold them.", }, npc, creature) player:addItem(768, 1) player:setStorageValue(Storage.OutfitQuest.NightmareOutfit, 1) - player:addAchievement('Nightmare Knight') + player:addAchievement("Nightmare Knight") npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then if player:removeItem(6499, 500) then @@ -108,7 +108,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.NightmareOutfit, 3) player:addItem(770, 1) player:addItem(6390, 1) - player:addAchievement('Nightmare Walker') + player:addAchievement("Nightmare Walker") npcHandler:say("You advanced to {Dreamer} rank!", npc, creature) else npcHandler:say("Come back when you gather all essences.", npc, creature) @@ -120,7 +120,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.NightmareOutfit, 4) player:setStorageValue(Storage.OutfitQuest.NightmareDoor, 1) player:setStorageValue(Storage.KnightwatchTowerDoor, 1) - player:addAchievement('Lord Protector') + player:addAchievement("Lord Protector") npcHandler:say("You advanced to {Lord Protector} rank! You are now able to use teleports of fourth floor of Knightwatch Tower and to create addon scrolls.", npc, creature) else npcHandler:say("Come back when you gather all essences.", npc, creature) diff --git a/data-otservbr-global/npc/the_empress.lua b/data-otservbr-global/npc/the_empress.lua index 6763c024e77..fdc475b546e 100644 --- a/data-otservbr-global/npc/the_empress.lua +++ b/data-otservbr-global/npc/the_empress.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 3, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,7 +61,7 @@ local function greetCallback(npc, creature) "The Cult of Fafnar is a serious problem for Issavi. The cultists are roaming the sewers and catacombs beneath the city now and again but this time they are really up to something. ...", "As a member of the Sapphire Blade found out, they are planning to cause a major earthquake, that could severely damage or even destroy Issavi. You may wonder how. ...", "Well, they want to activate five Fafnar statues which they have already enchanted. They are hidden in the catacombs underneath the city. Please go down and search for the statues. ...", - "Then use this sceptre to bless them in the name of Suon and Bastesh. This will destroy the disastrous enchantment and Issavi will be safe again." + "Then use this sceptre to bless them in the name of Suon and Bastesh. This will destroy the disastrous enchantment and Issavi will be safe again.", }) player:setStorageValue(Storage.Kilmaresh.Sixth.Favor, 1) player:setStorageValue(Storage.Kilmaresh.Sixth.FourMasks, 0) @@ -73,18 +73,19 @@ local function greetCallback(npc, creature) return true end -local masksDialogue = keywordHandler:addKeyword( - { "mission" }, StdModule.say, { - npcHandler = npcHandler, - text = "Did you take all the masks and enchant all the statues?" - }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Sixth.Favor) == 10 end -) +local masksDialogue = keywordHandler:addKeyword({ "mission" }, StdModule.say, { + npcHandler = npcHandler, + text = "Did you take all the masks and enchant all the statues?", +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Sixth.Favor) == 10 +end) masksDialogue:addChildKeyword( - { "yes" }, StdModule.say, { + { "yes" }, + StdModule.say, + { npcHandler = npcHandler, - text = "Thank you." + text = "Thank you.", }, nil, function(player) @@ -93,7 +94,7 @@ masksDialogue:addChildKeyword( end ) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/the_first_dragon.lua b/data-otservbr-global/npc/the_first_dragon.lua index 501ad338587..64b10bc4cf5 100644 --- a/data-otservbr-global/npc/the_first_dragon.lua +++ b/data-otservbr-global/npc/the_first_dragon.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookHead = 113, lookBody = 117, lookLegs = 119, - lookFeet = 80 + lookFeet = 80, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,89 +54,89 @@ local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) local playerId = player:getId() - if MsgContains(message, 'reward') and npcHandler:getTopic(playerId) == 0 and player:getStorageValue(34013) < 1 then + if MsgContains(message, "reward") and npcHandler:getTopic(playerId) == 0 and player:getStorageValue(34013) < 1 then npcHandler:say({ "Have a look at the chests over there. Feel free to take the things you find within. You know, gold, gems and the like. There's also a garment I'm storing here for a while. As it doesn't fit me I have no need for it. ...", - "But it might be a nice outfit for a little human. You also can take the porcelain mask and the feathers. There's a wizard named Muriel in Thais who reportedly embellishes outfits with stuff like this." + "But it might be a nice outfit for a little human. You also can take the porcelain mask and the feathers. There's a wizard named Muriel in Thais who reportedly embellishes outfits with stuff like this.", }, npc, creature) player:addOutfit(929, 1) player:addOutfit(931, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) player:setStorageValue(34013, 1) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'fight') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "fight") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ - "Even in {retirement} I sometimes succumb to the temptation of sweet battle. Fighting was so different back in the old {times}. You can read about it in my {memoirs}. There should be a copy lying here somewhere." + "Even in {retirement} I sometimes succumb to the temptation of sweet battle. Fighting was so different back in the old {times}. You can read about it in my {memoirs}. There should be a copy lying here somewhere.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'retirement') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "retirement") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "When you are young, you are much more tolerant towards the burden of life. At a certain age even a {dragon} will start to think about if things will go on forever. ...", - "Eventually there comes a time when you decide all the {hassle} isn't worth it anymore and you decide to concentrate on the {finer} things life has to offer." + "Eventually there comes a time when you decide all the {hassle} isn't worth it anymore and you decide to concentrate on the {finer} things life has to offer.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'memoirs') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "memoirs") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "I dictated my memoirs to a human servant. I like the idea to share my thoughts and memories with humanity with the help of a {book}. ...", "You are my greatest fans after all. ...", "If it becomes popular, I might consider an orcish translation or even one in bonelord language. ...", - "By the way, it's a funny story how I learnt the bonelord language. However, I saved it for a possible part two of my memoirs." + "By the way, it's a funny story how I learnt the bonelord language. However, I saved it for a possible part two of my memoirs.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'hassle') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "hassle") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "I really enjoy a good fight now and then. ...", - "A real pain, however, is the constant annoyance caused by tedious fights against adventurers with more healing pots than brain." + "A real pain, however, is the constant annoyance caused by tedious fights against adventurers with more healing pots than brain.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'worthy') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "worthy") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "To be honest, the first dragon hunters weren't {worthy}. ...", - "They used {weaknesses} to their advantage. It took some time before a dragon could be killed in a fair fight." + "They used {weaknesses} to their advantage. It took some time before a dragon could be killed in a fair fight.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'weaknesses') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "weaknesses") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "The first awoken dragons were quite disoriented when leaving the {mists} and re-entering reality. ...", - "This led to certain vulnerabilities. However, the dragons overcame such shortcomings quickly and soon took their rightful place in the food chain, so to say." + "This led to certain vulnerabilities. However, the dragons overcame such shortcomings quickly and soon took their rightful place in the food chain, so to say.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'mists') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "mists") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "There was a time before the gods cast the mists of healing over the world. At that time the dragons ruled and burnt the {world}. ...", - "In hindsight I'm not too proud of this. This was some kind of juvenile bullying." + "In hindsight I'm not too proud of this. This was some kind of juvenile bullying.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'world') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "world") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "The world has changed so much; I'm beginning to feel really old. People have changed, the face of the world has changed, even the laws of nature are no longer the same. ...", - "I think it is the greatest advantage of you {humans} to be more flexible and adaptable." + "I think it is the greatest advantage of you {humans} to be more flexible and adaptable.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'books') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "books") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "Your books are an amazing thing. Draconic glyphs are so different. ...", "They are not only more complicated but also more specific. A single word which always keeps the same meaning is astonishingly effective in its primitive way. ...", "It helps you to conserve thoughts, stories and history and to share them with others - a {concept} I really appreciate. ...", - "Books are a wonderful {invention}. If you are ever tired of your heroic exploits, take the time to read one." + "Books are a wonderful {invention}. If you are ever tired of your heroic exploits, take the time to read one.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'invention') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "invention") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "Being powerful creatures themselves, dragons had no need for inventions. ...", - "However, now that times have changed and the pressure increases, even my kin might slowly start to change in order to {adapt}." + "However, now that times have changed and the pressure increases, even my kin might slowly start to change in order to {adapt}.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'adapt') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "adapt") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "Well, surely some of my kin might whine and complain as they always do. ...", - "You have no idea how backwards thinking some dragons can be. A few are even still idealising the times before the {mists}." + "You have no idea how backwards thinking some dragons can be. A few are even still idealising the times before the {mists}.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'finer') and npcHandler:getTopic(playerId) == 0 then + elseif MsgContains(message, "finer") and npcHandler:getTopic(playerId) == 0 then npcHandler:say({ "The definition of finer things is different for a dragon than for a human. ...", - "A young dragon appreciates diving into a lava pool, while an old dragon just can't stand to get rid of the {lava} afterwards and prefers bathing in boiling water." + "A young dragon appreciates diving into a lava pool, while an old dragon just can't stand to get rid of the {lava} afterwards and prefers bathing in boiling water.", }, npc, creature) npcHandler:setTopic(playerId, 0) end @@ -144,12 +144,12 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'times' }, StdModule.say, { npcHandler = npcHandler, text = "Times have changed . In the past dragons were feared and respected. Only the {demons} rivalled our notoriety." }) -keywordHandler:addKeyword({ 'demons' }, StdModule.say, { npcHandler = npcHandler, text = "Those upstarts! I wonder why would anyone care about them. They lack our style. For them it is all about brute force and showing-off." }) -keywordHandler:addKeyword({ 'style' }, StdModule.say, { npcHandler = npcHandler, text = "Breathing fire is an art! Instead of setting everything on fire, you exhale a cone of fire to give a worthy opponent a chance to avoid it." }) -keywordHandler:addKeyword({ 'humans' }, StdModule.say, { npcHandler = npcHandler, text = "Your lives are so short and meaningless and yet you are here! And as a race you even have your own history and remember things with the help of {books}, which amazes me." }) -keywordHandler:addKeyword({ 'concept' }, StdModule.say, { npcHandler = npcHandler, text = "I like the idea of books so much that I acquired a human servant to record my memoirs. You find a copy somewhere in my lair." }) -keywordHandler:addKeyword({ 'lava' }, StdModule.say, { npcHandler = npcHandler, text = "Lava is only fun as long as it doesn't harden - then it turns into an annoyance." }) +keywordHandler:addKeyword({ "times" }, StdModule.say, { npcHandler = npcHandler, text = "Times have changed . In the past dragons were feared and respected. Only the {demons} rivalled our notoriety." }) +keywordHandler:addKeyword({ "demons" }, StdModule.say, { npcHandler = npcHandler, text = "Those upstarts! I wonder why would anyone care about them. They lack our style. For them it is all about brute force and showing-off." }) +keywordHandler:addKeyword({ "style" }, StdModule.say, { npcHandler = npcHandler, text = "Breathing fire is an art! Instead of setting everything on fire, you exhale a cone of fire to give a worthy opponent a chance to avoid it." }) +keywordHandler:addKeyword({ "humans" }, StdModule.say, { npcHandler = npcHandler, text = "Your lives are so short and meaningless and yet you are here! And as a race you even have your own history and remember things with the help of {books}, which amazes me." }) +keywordHandler:addKeyword({ "concept" }, StdModule.say, { npcHandler = npcHandler, text = "I like the idea of books so much that I acquired a human servant to record my memoirs. You find a copy somewhere in my lair." }) +keywordHandler:addKeyword({ "lava" }, StdModule.say, { npcHandler = npcHandler, text = "Lava is only fun as long as it doesn't harden - then it turns into an annoyance." }) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/the_gate_keeper.lua b/data-otservbr-global/npc/the_gate_keeper.lua index e8be078fcc1..52fdbdfb61f 100644 --- a/data-otservbr-global/npc/the_gate_keeper.lua +++ b/data-otservbr-global/npc/the_gate_keeper.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 551 + lookType = 551, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/the_librarian.lua b/data-otservbr-global/npc/the_librarian.lua index 7bffa700d9f..8837ad5451c 100644 --- a/data-otservbr-global/npc/the_librarian.lua +++ b/data-otservbr-global/npc/the_librarian.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -28,7 +28,7 @@ npcConfig.voices = { chance = 50, { text = "I really have to find this scroll. Where did I put it?" }, { text = "Too much dust here. I should tidy up on occasion." }, - { text = "Someone opened the Grimoire of Flames without permission. Egregious!" } + { text = "Someone opened the Grimoire of Flames without permission. Egregious!" }, } local keywordHandler = KeywordHandler:new() @@ -58,24 +58,22 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword( - { "ring" }, StdModule.say, { - npcHandler = npcHandler, - text = { - "To extract memories from the ring, you have to enter a trance-like state with the help of a hallucinogen. Like this you can see all memories that are stored in the ring. Ask {Faloriel} for a respective potion. ...", - "Drink it while wearing the ring in the Temple of {Bastesh} and say: \'Sa Katesa Tarsani na\'. If the legends are true you will be able to take memories with you in the form of memory shards." - } +keywordHandler:addKeyword({ "ring" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "To extract memories from the ring, you have to enter a trance-like state with the help of a hallucinogen. Like this you can see all memories that are stored in the ring. Ask {Faloriel} for a respective potion. ...", + "Drink it while wearing the ring in the Temple of {Bastesh} and say: 'Sa Katesa Tarsani na'. If the legends are true you will be able to take memories with you in the form of memory shards.", }, - function(player) return player:getStorageValue(Storage.Kilmaresh.Fourth.Moe) == 4 end, - function(player) - player:setStorageValue(Storage.Kilmaresh.Fifth.Memories, 1) - player:setStorageValue(Storage.Kilmaresh.Fifth.MemoriesShards, 0) - player:setStorageValue(Storage.Kilmaresh.Fourth.Moe, 5) - end -) +}, function(player) + return player:getStorageValue(Storage.Kilmaresh.Fourth.Moe) == 4 +end, function(player) + player:setStorageValue(Storage.Kilmaresh.Fifth.Memories, 1) + player:setStorageValue(Storage.Kilmaresh.Fifth.MemoriesShards, 0) + player:setStorageValue(Storage.Kilmaresh.Fourth.Moe, 5) +end) -npcHandler:setMessage(MESSAGE_GREET, 'Greetings, dear guest. If you are interested in paperware such as books or scrolls, ask me for a trade.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_GREET, "Greetings, dear guest. If you are interested in paperware such as books or scrolls, ask me for a trade.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) @@ -103,7 +101,7 @@ npcConfig.shop = { { itemName = "quill", clientId = 28567, sell = 1100 }, { itemName = "scroll", clientId = 2815, buy = 10 }, { itemName = "silken bookmark", clientId = 28566, sell = 1300 }, - { itemName = "valentine's card", clientId = 6538, buy = 40 } + { itemName = "valentine's card", clientId = 6538, buy = 40 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -114,7 +112,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/the_lootmonger.lua b/data-otservbr-global/npc/the_lootmonger.lua index d21ddb4de53..666743b0532 100644 --- a/data-otservbr-global/npc/the_lootmonger.lua +++ b/data-otservbr-global/npc/the_lootmonger.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 101, lookLegs = 120, lookFeet = 120, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -1385,7 +1385,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/the_oracle.lua b/data-otservbr-global/npc/the_oracle.lua index f7854fc03fa..b23fee01d6d 100644 --- a/data-otservbr-global/npc/the_oracle.lua +++ b/data-otservbr-global/npc/the_oracle.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 2031 + lookTypeEx = 2031, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,26 +51,26 @@ local config = { towns = { ["venore"] = TOWNS_LIST.VENORE, ["thais"] = TOWNS_LIST.THAIS, - ["carlin"] = TOWNS_LIST.CARLIN + ["carlin"] = TOWNS_LIST.CARLIN, }, vocations = { ["sorcerer"] = { text = "A SORCERER! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", - vocationId = VOCATION.ID.SORCERER + vocationId = VOCATION.ID.SORCERER, }, ["druid"] = { text = "A DRUID! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", - vocationId = VOCATION.ID.DRUID + vocationId = VOCATION.ID.DRUID, }, ["paladin"] = { text = "A PALADIN! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", - vocationId = VOCATION.ID.PALADIN + vocationId = VOCATION.ID.PALADIN, }, ["knight"] = { text = "A KNIGHT! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", - vocationId = VOCATION.ID.KNIGHT - } - } + vocationId = VOCATION.ID.KNIGHT, + }, + }, } local function greetCallback(npc, creature) diff --git a/data-otservbr-global/npc/the_orc_king.lua b/data-otservbr-global/npc/the_orc_king.lua index 7da4eb1006b..c835f57e314 100644 --- a/data-otservbr-global/npc/the_orc_king.lua +++ b/data-otservbr-global/npc/the_orc_king.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 238 + lookType = 238, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,7 +45,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -local creatures = { 'Slime', 'Slime', 'Slime', 'Orc Warlord', 'Orc Warlord', 'Orc Leader', 'Orc Leader', 'Orc Leader' } +local creatures = { "Slime", "Slime", "Slime", "Orc Warlord", "Orc Warlord", "Orc Leader", "Orc Leader", "Orc Leader" } local function greetCallback(npc, creature) local player = Player(creature) local playerId = player:getId() @@ -55,10 +55,10 @@ local function greetCallback(npc, creature) for i = 1, #creatures do Game.createMonster(creatures[i], npc:getPosition()) end - npcHandler:say('Arrrrgh! A dirty paleskin! To me my children! Kill them my guards!', npc, creature, 1000, TALKTYPE_SAY) + npcHandler:say("Arrrrgh! A dirty paleskin! To me my children! Kill them my guards!", npc, creature, 1000, TALKTYPE_SAY) return false else - npcHandler:setMessage(MESSAGE_GREET, 'Harrrrk! You think you are strong now? You shall never escape my wrath! I am immortal!') + npcHandler:setMessage(MESSAGE_GREET, "Harrrrk! You think you are strong now? You shall never escape my wrath! I am immortal!") end return true end @@ -73,27 +73,27 @@ local function creatureSayCallback(npc, creature, type, message) local efreet, marid = player:getStorageValue(Storage.DjinnWar.EfreetFaction.Mission03), player:getStorageValue(Storage.DjinnWar.MaridFaction.Mission03) -- Mission 3 - Orc Fortress - if MsgContains(message, 'lamp') then + if MsgContains(message, "lamp") then if efreet == 1 or marid == 1 then if player:getStorageValue(Storage.DjinnWar.ReceivedLamp) ~= 1 then npcHandler:say({ - 'I can sense your evil intentions to imprison a djinn! You are longing for the lamp, which I still possess. ...', - 'Who do you want to trap in this cursed lamp?' + "I can sense your evil intentions to imprison a djinn! You are longing for the lamp, which I still possess. ...", + "Who do you want to trap in this cursed lamp?", }, npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('For eons he was trapped in an enchanted lamp by some ancient race. Now he\'s free to roam the world again. Although he cheated me I appreciate what he and his brethren will do to this world, now it\'s the time of the Djinn again!', npc, creature) + npcHandler:say("For eons he was trapped in an enchanted lamp by some ancient race. Now he's free to roam the world again. Although he cheated me I appreciate what he and his brethren will do to this world, now it's the time of the Djinn again!", npc, creature) end end - elseif MsgContains(message, 'cookie') then + elseif MsgContains(message, "cookie") then if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.OrcKing) ~= 1 then - npcHandler:say('You bring me a stinking cookie???', npc, creature) + npcHandler:say("You bring me a stinking cookie???", npc, creature) npcHandler:setTopic(playerId, 2) end -- Mission 3 - Orc Fortress elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'malor') then + if MsgContains(message, "malor") then if efreet == 1 then player:setStorageValue(Storage.DjinnWar.EfreetFaction.DoorToLamp, 1) elseif marid == 1 then @@ -102,54 +102,56 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.DjinnWar.ReceivedLamp, 1) player:addItem(3231, 1) - npcHandler:say('I was waiting for this day! Take the lamp and let Malor feel my wrath!', npc, creature) + npcHandler:say("I was waiting for this day! Take the lamp and let Malor feel my wrath!", npc, creature) else - npcHandler:say('I don\'t know your enemy, paleskin! Begone!', npc, creature) + npcHandler:say("I don't know your enemy, paleskin! Begone!", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if not player:removeItem(130, 1) then - npcHandler:say('You have no cookie that I\'d like.', npc, creature) + npcHandler:say("You have no cookie that I'd like.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:setStorageValue(Storage.WhatAFoolish.CookieDelivery.OrcKing, 1) if player:getCookiesDelivered() == 10 then - player:addAchievement('Allow Cookies?') + player:addAchievement("Allow Cookies?") end npc:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) - npcHandler:say('Well, I hope it stinks a lot. I like stinking cookies best ... BY MY THOUSAND SONS! YOU ARE SO DEAD HUMAN! DEAD!', npc, creature) + npcHandler:say("Well, I hope it stinks a lot. I like stinking cookies best ... BY MY THOUSAND SONS! YOU ARE SO DEAD HUMAN! DEAD!", npc, creature) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) - elseif MsgContains(message, 'no') then - npcHandler:say('I see.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("I see.", npc, creature) npcHandler:setTopic(playerId, 0) end end return true end -keywordHandler:addKeyword({ 'immortal' }, StdModule.say, { npcHandler = npcHandler, text = 'I am Charkahn the Slayer! The immortal father of the {orcs} and master of this {hive}.' }) -keywordHandler:addKeyword({ 'orcs' }, StdModule.say, { npcHandler = npcHandler, text = 'The orcs are the bearers of Blogs rage. This makes us the ultimate fighters and the most powerful of all races.' }) -keywordHandler:addKeyword({ 'divine' }, StdModule.say, { npcHandler = npcHandler, text = 'The orcs are the bearers of Blogs rage. This makes us the ultimate fighters and the most powerful of all races.' }) -keywordHandler:addKeyword({ 'hive' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense the presence and the feelings of my underlings and {minions}. I embrace the rage of the horde.' }) -keywordHandler:addKeyword({ 'minions' }, StdModule.say, { npcHandler = npcHandler, text = 'The orcish horde of this hive is under my control. I sense their emotions and their needs and provide them with the leadership they need to focus their hate and rage' }) -keywordHandler:addKeyword({ 'hate' }, StdModule.say, { npcHandler = npcHandler, text = 'Hate and rage are the true blessings of Blog, since they are powerful weapons. They give the hive strength. I provide them with direction and focus.' }) -keywordHandler:addKeyword({ 'blog' }, StdModule.say, { npcHandler = npcHandler, text = 'The Raging One blessed us with his burning hate. We are truly his children and therefore {divine}.' }) -keywordHandler:addKeyword({ 'direction' }, StdModule.say, { npcHandler = npcHandler, text = 'To conquer, to destroy and to dominate. Orcs are born to rule the {world}.' }) -keywordHandler:addKeyword({ 'world' }, StdModule.say, { npcHandler = npcHandler, text = 'One day I will rule the world, even when turned into a {slime}.' }) -keywordHandler:addKeyword({ 'slime' }, StdModule.say, { npcHandler = npcHandler, text = 'Pah! Don\'t mock me, mortal! This shape is a curse which the evil {djinn} bestowed upon me!' }) -keywordHandler:addKeyword({ 'djinn' }, StdModule.say, { npcHandler = npcHandler, text = 'This cursed djinn king! I set him free from an enchanted {lamp}, and he {cheated} me!' }) -keywordHandler:addKeyword({ 'cheated' }, StdModule.say, { npcHandler = npcHandler, text = 'Because I freed him he granted me three wishes. He was true to his word in the first two {wishes}.' }) -keywordHandler:addKeyword({ 'wishes' }, StdModule.say, { npcHandler = npcHandler, text = 'He built this fortress over Uldrek\'s grave within a single night. Also, he granted me my second wish and gave me immortality. Test it and try to kill me if you want. Har Har!' }) -keywordHandler:addKeyword({ 'third' }, StdModule.say, { npcHandler = npcHandler, text = 'I wished to father more healthy and fertile children as any orc has ever done. But the djinn cheated me and made me a slime! Then he laughed at me and left for his abandoned fortress in the {Deathwish} Mountains.' }) -keywordHandler:addKeyword({ 'deathwish' }, StdModule.say, { npcHandler = npcHandler, text = 'His ancient fortress on Darama was deserted as the evil Djinn fled this world after his imprisonment. Now the time has come for the evil Djinns to return to their master although this will certainly awaken the {good Djinn} too.' }) -keywordHandler:addKeyword({ 'good djinn' }, StdModule.say, { npcHandler = npcHandler, text = 'I will not share anything more about that topic with you {paleskins}.' }) -keywordHandler:addKeyword({ 'paleskins' }, StdModule.say, { npcHandler = npcHandler, text = 'You are as ugly as maggots, although not quite as as tasty.' }) -keywordHandler:addKeyword({ 'malor' }, StdModule.say, { npcHandler = npcHandler, text = 'This cursed djinn king! I set him free from an enchanted lamp, and he cheated me!' }, function(player) return player:getStorageValue(Storage.DjinnWar.ReceivedLamp) == 1 end) +keywordHandler:addKeyword({ "immortal" }, StdModule.say, { npcHandler = npcHandler, text = "I am Charkahn the Slayer! The immortal father of the {orcs} and master of this {hive}." }) +keywordHandler:addKeyword({ "orcs" }, StdModule.say, { npcHandler = npcHandler, text = "The orcs are the bearers of Blogs rage. This makes us the ultimate fighters and the most powerful of all races." }) +keywordHandler:addKeyword({ "divine" }, StdModule.say, { npcHandler = npcHandler, text = "The orcs are the bearers of Blogs rage. This makes us the ultimate fighters and the most powerful of all races." }) +keywordHandler:addKeyword({ "hive" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense the presence and the feelings of my underlings and {minions}. I embrace the rage of the horde." }) +keywordHandler:addKeyword({ "minions" }, StdModule.say, { npcHandler = npcHandler, text = "The orcish horde of this hive is under my control. I sense their emotions and their needs and provide them with the leadership they need to focus their hate and rage" }) +keywordHandler:addKeyword({ "hate" }, StdModule.say, { npcHandler = npcHandler, text = "Hate and rage are the true blessings of Blog, since they are powerful weapons. They give the hive strength. I provide them with direction and focus." }) +keywordHandler:addKeyword({ "blog" }, StdModule.say, { npcHandler = npcHandler, text = "The Raging One blessed us with his burning hate. We are truly his children and therefore {divine}." }) +keywordHandler:addKeyword({ "direction" }, StdModule.say, { npcHandler = npcHandler, text = "To conquer, to destroy and to dominate. Orcs are born to rule the {world}." }) +keywordHandler:addKeyword({ "world" }, StdModule.say, { npcHandler = npcHandler, text = "One day I will rule the world, even when turned into a {slime}." }) +keywordHandler:addKeyword({ "slime" }, StdModule.say, { npcHandler = npcHandler, text = "Pah! Don't mock me, mortal! This shape is a curse which the evil {djinn} bestowed upon me!" }) +keywordHandler:addKeyword({ "djinn" }, StdModule.say, { npcHandler = npcHandler, text = "This cursed djinn king! I set him free from an enchanted {lamp}, and he {cheated} me!" }) +keywordHandler:addKeyword({ "cheated" }, StdModule.say, { npcHandler = npcHandler, text = "Because I freed him he granted me three wishes. He was true to his word in the first two {wishes}." }) +keywordHandler:addKeyword({ "wishes" }, StdModule.say, { npcHandler = npcHandler, text = "He built this fortress over Uldrek's grave within a single night. Also, he granted me my second wish and gave me immortality. Test it and try to kill me if you want. Har Har!" }) +keywordHandler:addKeyword({ "third" }, StdModule.say, { npcHandler = npcHandler, text = "I wished to father more healthy and fertile children as any orc has ever done. But the djinn cheated me and made me a slime! Then he laughed at me and left for his abandoned fortress in the {Deathwish} Mountains." }) +keywordHandler:addKeyword({ "deathwish" }, StdModule.say, { npcHandler = npcHandler, text = "His ancient fortress on Darama was deserted as the evil Djinn fled this world after his imprisonment. Now the time has come for the evil Djinns to return to their master although this will certainly awaken the {good Djinn} too." }) +keywordHandler:addKeyword({ "good djinn" }, StdModule.say, { npcHandler = npcHandler, text = "I will not share anything more about that topic with you {paleskins}." }) +keywordHandler:addKeyword({ "paleskins" }, StdModule.say, { npcHandler = npcHandler, text = "You are as ugly as maggots, although not quite as as tasty." }) +keywordHandler:addKeyword({ "malor" }, StdModule.say, { npcHandler = npcHandler, text = "This cursed djinn king! I set him free from an enchanted lamp, and he cheated me!" }, function(player) + return player:getStorageValue(Storage.DjinnWar.ReceivedLamp) == 1 +end) npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/the_queen_of_the_banshees.lua b/data-otservbr-global/npc/the_queen_of_the_banshees.lua index f1b0b5e56bc..14ac38f4170 100644 --- a/data-otservbr-global/npc/the_queen_of_the_banshees.lua +++ b/data-otservbr-global/npc/the_queen_of_the_banshees.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 78 + lookType = 78, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Uhhhhhh....' } + { text = "Uhhhhhh...." }, } local keywordHandler = KeywordHandler:new() @@ -60,14 +60,22 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "seventh seal") then - npcHandler:say("If you have passed the first six seals and entered the blue fires that lead to \z + npcHandler:say( + "If you have passed the first six seals and entered the blue fires that lead to \z the chamber of the seal you might receive my {kiss} ... It will open the last seal. \z - Do you think you are ready?", npc, creature) + Do you think you are ready?", + npc, + creature + ) npcHandler:setTopic(playerId, 1) elseif MsgContains(message, "kiss") and npcHandler:getTopic(playerId) == 7 then if player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.LastSeal) < 1 then - npcHandler:say("Are you prepared to receive my kiss, even though this will mean that your \z - death as well as a part of your soul will forever belong to me, my dear?", npc, creature) + npcHandler:say( + "Are you prepared to receive my kiss, even though this will mean that your \z + death as well as a part of your soul will forever belong to me, my dear?", + npc, + creature + ) npcHandler:setTopic(playerId, 8) else npcHandler:say("You have already received my kiss. You should know better then to ask for it.", npc, creature) @@ -75,15 +83,23 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "spectral dress") then if player:getStorageValue(Storage.ExplorerSociety.TheSpectralDress) == 48 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 48 and player:getStorageValue(Storage.ExplorerSociety.BansheeDoor) < 1 then - npcHandler:say("Your wish for a spectral dress is silly. \z + npcHandler:say( + "Your wish for a spectral dress is silly. \z Although I will grant you the permission to take one. \z - My maidens left one in a box in a room, directly south of here.", npc, creature) + My maidens left one in a box in a room, directly south of here.", + npc, + creature + ) player:setStorageValue(Storage.ExplorerSociety.BansheeDoor, 1) end elseif MsgContains(message, "addon") then if player:getStorageValue(Storage.OutfitQuest.WizardAddon) == 5 then - npcHandler:say("Say... I have been longing for something for an eternity now... \z - if you help me retrieve it, I will reward you. Do you consent to this arrangement?", npc, creature) + npcHandler:say( + "Say... I have been longing for something for an eternity now... \z + if you help me retrieve it, I will reward you. Do you consent to this arrangement?", + npc, + creature + ) npcHandler:setTopic(playerId, 9) end elseif MsgContains(message, "orchid") or MsgContains(message, "holy orchid") then @@ -94,8 +110,12 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then if player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.FourthSeal) == 1 then - npcHandler:say("The Queen of the Banshee: Yessss, I can sense you have passed the seal of sacrifice. \z - Have you passed any other seal yet?", npc, creature) + npcHandler:say( + "The Queen of the Banshee: Yessss, I can sense you have passed the seal of sacrifice. \z + Have you passed any other seal yet?", + npc, + creature + ) npcHandler:setTopic(playerId, 2) else npcHandler:say("You have not passed the seal of sacrifice yet. Return to me when you are better prepared.", npc, creature) @@ -103,8 +123,12 @@ local function creatureSayCallback(npc, creature, type, message) end elseif npcHandler:getTopic(playerId) == 2 then if player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.FirstSeal) == 1 then - npcHandler:say("The Queen of the Banshee: I sense you have passed the hidden seal as well. \z - Have you passed any other seal yet?", npc, creature) + npcHandler:say( + "The Queen of the Banshee: I sense you have passed the hidden seal as well. \z + Have you passed any other seal yet?", + npc, + creature + ) npcHandler:setTopic(playerId, 3) else npcHandler:say("You have not found the hidden seal yet. Return when you are better prepared.", npc, creature) @@ -112,8 +136,12 @@ local function creatureSayCallback(npc, creature, type, message) end elseif npcHandler:getTopic(playerId) == 3 then if player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.SecondSeal) == 1 then - npcHandler:say("The Queen of the Banshee: Oh yes, you have braved the plague seal. \z - Have you passed any other seal yet?", npc, creature) + npcHandler:say( + "The Queen of the Banshee: Oh yes, you have braved the plague seal. \z + Have you passed any other seal yet?", + npc, + creature + ) npcHandler:setTopic(playerId, 4) else npcHandler:say("You have not faced the plagueseal yet. Return to me when you are better prepared.", npc, creature) @@ -121,8 +149,12 @@ local function creatureSayCallback(npc, creature, type, message) end elseif npcHandler:getTopic(playerId) == 4 then if player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.ThirdSeal) == 1 then - npcHandler:say("The Queen of the Banshee: Ah, I can sense the power of the seal of \z - demonrage burning in your heart. Have you passed any other seal yet?", npc, creature) + npcHandler:say( + "The Queen of the Banshee: Ah, I can sense the power of the seal of \z + demonrage burning in your heart. Have you passed any other seal yet?", + npc, + creature + ) npcHandler:setTopic(playerId, 5) else npcHandler:say("You are not filled with the fury of the imprisoned demon. Return when you are better prepared.", npc, creature) @@ -130,8 +162,12 @@ local function creatureSayCallback(npc, creature, type, message) end elseif npcHandler:getTopic(playerId) == 5 then if player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.FifthSeal) == 1 then - npcHandler:say("The Queen of the Banshee: So, you have managed to pass the seal of the true path. \z - Have you passed any other seal yet?", npc, creature) + npcHandler:say( + "The Queen of the Banshee: So, you have managed to pass the seal of the true path. \z + Have you passed any other seal yet?", + npc, + creature + ) npcHandler:setTopic(playerId, 6) else npcHandler:say("You have not found your true path yet. Return when you are better prepared.", npc, creature) @@ -139,9 +175,13 @@ local function creatureSayCallback(npc, creature, type, message) end elseif npcHandler:getTopic(playerId) == 6 then if player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.SixthSeal) == 1 then - npcHandler:say("The Queen of the Banshee: I see! You have mastered the seal of logic. \z + npcHandler:say( + "The Queen of the Banshee: I see! You have mastered the seal of logic. \z You have made the sacrifice, you have seen the unseen, you possess fortitude, \z - you have filled yourself with power and found your path. You may ask me for my {kiss} now.", npc, creature) + you have filled yourself with power and found your path. You may ask me for my {kiss} now.", + npc, + creature + ) npcHandler:setTopic(playerId, 7) else npcHandler:say("You have not found your true path yet. Return to meh when you are better prepared.", npc, creature) @@ -157,8 +197,12 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.LastSealDoor, 1) player:setStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.BansheeDoor, 1) else - npcHandler:say("You have spilled too much blood recently and the dead are hungry for your soul. \z - Perhaps return when you regained you inner balance.", npc, creature) + npcHandler:say( + "You have spilled too much blood recently and the dead are hungry for your soul. \z + Perhaps return when you regained you inner balance.", + npc, + creature + ) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 9 then @@ -166,7 +210,7 @@ local function creatureSayCallback(npc, creature, type, message) "Listen... there are no blooming flowers down here and the only smell present is that of death and decay. ...", "I wish that I could breathe the lovely smell of beautiful flowers just one more time, \z especially those which elves cultivate. ...", - "Could you please bring me 50 holy orchids?" + "Could you please bring me 50 holy orchids?", }, npc, creature) npcHandler:setTopic(playerId, 10) elseif npcHandler:getTopic(playerId) == 10 then @@ -179,7 +223,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.WizardAddon, 7) player:addOutfitAddon(145, 1) player:addOutfitAddon(149, 1) - player:addAchievement('Warlock') + player:addAchievement("Warlock") npcHandler:setTopic(playerId, 0) else npcHandler:say("You need 50 holy orchid.", npc, creature) @@ -196,62 +240,46 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'stay' }, StdModule.say, - { - npcHandler = npcHandler, - text = "It's my curse to be the eternal {guardian} of this ancient {place}." - } -) -keywordHandler:addKeyword({ 'guardian' }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm the {guardian} of the {SEVENTH} and final seal. The seal to open the last door before ... \z - but perhaps it's better to see it with your own eyes." - } -) -keywordHandler:addKeyword({ 'place' }, StdModule.say, - { - npcHandler = npcHandler, - text = "It served as a temple, a source of power and ... \z - as a sender for an ancient {race} which lived a long time ago and has long been forgotten." - } -) -keywordHandler:addKeyword({ 'race' }, StdModule.say, - { - npcHandler = npcHandler, - text = "The race that built this edifice came to this place from the stars. \z +keywordHandler:addKeyword({ "stay" }, StdModule.say, { + npcHandler = npcHandler, + text = "It's my curse to be the eternal {guardian} of this ancient {place}.", +}) +keywordHandler:addKeyword({ "guardian" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm the {guardian} of the {SEVENTH} and final seal. The seal to open the last door before ... \z + but perhaps it's better to see it with your own eyes.", +}) +keywordHandler:addKeyword({ "place" }, StdModule.say, { + npcHandler = npcHandler, + text = "It served as a temple, a source of power and ... \z + as a sender for an ancient {race} which lived a long time ago and has long been forgotten.", +}) +keywordHandler:addKeyword({ "race" }, StdModule.say, { + npcHandler = npcHandler, + text = "The race that built this edifice came to this place from the stars. \z They ran from an enemy even more horrible than themselves. \z - But they carried the {seed} of their own destruction in them." - } -) -keywordHandler:addKeyword({ 'seed' }, StdModule.say, - { - npcHandler = npcHandler, - text = "This ancient race was annihilated by its own doings, that's all I know. \z - Aeons have passed since then, but the sheer presence of this {complex} is still defiling and desecrating this area." - } -) -keywordHandler:addKeyword({ 'complex' }, StdModule.say, - { - npcHandler = npcHandler, - text = "Its constructors were too strange for you or even me to understand. \z + But they carried the {seed} of their own destruction in them.", +}) +keywordHandler:addKeyword({ "seed" }, StdModule.say, { + npcHandler = npcHandler, + text = "This ancient race was annihilated by its own doings, that's all I know. \z + Aeons have passed since then, but the sheer presence of this {complex} is still defiling and desecrating this area.", +}) +keywordHandler:addKeyword({ "complex" }, StdModule.say, { + npcHandler = npcHandler, + text = "Its constructors were too strange for you or even me to understand. \z We don't know what this ... thing they built was supposed to be good for. \z - I feel a constant twisting and binding of souls, though, that is probably only a side-effect." - } -) -keywordHandler:addKeyword({ 'ghostlands' }, StdModule.say, - { - npcHandler = npcHandler, - text = "The place you know as the Ghostlands had a different name once ... \z - and many names after. Too many to remember them all." - } -) -keywordHandler:addKeyword({ 'banshee' }, StdModule.say, - { - npcHandler = npcHandler, - text = "They are my maidens. They give me comfort in my eternal watch over the last seal." - } -) + I feel a constant twisting and binding of souls, though, that is probably only a side-effect.", +}) +keywordHandler:addKeyword({ "ghostlands" }, StdModule.say, { + npcHandler = npcHandler, + text = "The place you know as the Ghostlands had a different name once ... \z + and many names after. Too many to remember them all.", +}) +keywordHandler:addKeyword({ "banshee" }, StdModule.say, { + npcHandler = npcHandler, + text = "They are my maidens. They give me comfort in my eternal watch over the last seal.", +}) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/theodore_loveless.lua b/data-otservbr-global/npc/theodore_loveless.lua index 0fdf6b2b05e..23182106883 100644 --- a/data-otservbr-global/npc/theodore_loveless.lua +++ b/data-otservbr-global/npc/theodore_loveless.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 95, lookLegs = 76, lookFeet = 114, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,10 +58,10 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'cigar') then - npcHandler:say('Oh my. Have you gotten an exquisite cigar for me, my young friend?', npc, creature) + if MsgContains(message, "cigar") then + npcHandler:say("Oh my. Have you gotten an exquisite cigar for me, my young friend?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 1 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 then local player = Player(creature) if not player:removeItem(141, 1) then npcHandler:setTopic(playerId, 0) @@ -71,12 +71,12 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.WhatAFoolish.Cigar, 1) npc:getPosition():sendMagicEffect(CONST_ME_EXPLOSIONHIT) npcHandler:say({ - 'Ah what a fine blend. I really ...', - 'OUCH! What have you done you fool? How dare you???' + "Ah what a fine blend. I really ...", + "OUCH! What have you done you fool? How dare you???", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Oh, then there must be a misunderstanding.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 1 then + npcHandler:say("Oh, then there must be a misunderstanding.", npc, creature) npcHandler:setTopic(playerId, 0) end diff --git a/data-otservbr-global/npc/thomas.lua b/data-otservbr-global/npc/thomas.lua index b3c9c6e7fc5..f56305ee22a 100644 --- a/data-otservbr-global/npc/thomas.lua +++ b/data-otservbr-global/npc/thomas.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 11, lookLegs = 100, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -67,7 +67,7 @@ npcConfig.shop = { { itemName = "parchment", clientId = 2817, buy = 8 }, { itemName = "scroll", clientId = 2815, buy = 5 }, { itemName = "spellbook", clientId = 3059, buy = 150 }, - { itemName = "valentines card", clientId = 6538, buy = 30 } + { itemName = "valentines card", clientId = 6538, buy = 30 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -78,7 +78,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/thorgrin.lua b/data-otservbr-global/npc/thorgrin.lua index 26fb0d11bdd..976c404af57 100644 --- a/data-otservbr-global/npc/thorgrin.lua +++ b/data-otservbr-global/npc/thorgrin.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 66 + lookType = 66, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Ask me for a passage...' } + { text = "Ask me for a passage..." }, } local keywordHandler = KeywordHandler:new() @@ -53,16 +53,16 @@ end -- Travel local function addTravelKeyword(keyword, cost, destination) - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a ride to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'Then not.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a ride to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "Then not.", reset = true }) end -addTravelKeyword('kazordoon', 210, Position(32659, 31957, 15)) -addTravelKeyword('cormaya', 110, Position(33310, 31988, 15)) -addTravelKeyword('gnomprona', { 'Would you like to travel to Gnomprona for |TRAVELCOST|?', 'Full steam ahead!', 'Then not.' }, 200, 'postman', Position(33516, 32856, 14)) +addTravelKeyword("kazordoon", 210, Position(32659, 31957, 15)) +addTravelKeyword("cormaya", 110, Position(33310, 31988, 15)) +addTravelKeyword("gnomprona", { "Would you like to travel to Gnomprona for |TRAVELCOST|?", "Full steam ahead!", "Then not." }, 200, "postman", Position(33516, 32856, 14)) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = "Do you want me take you to {Cormaya}, {Kazordoon} or {Gnomprona}?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "Do you want me take you to {Cormaya}, {Kazordoon} or {Gnomprona}?" }) npcHandler:setMessage(MESSAGE_GREET, "Welcome, |PLAYERNAME|! May earth protect you on the rocky grounds. If you need a {passage} back, I can help you.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.") diff --git a/data-otservbr-global/npc/thorwulf.lua b/data-otservbr-global/npc/thorwulf.lua index 7e1ea1f227b..cfcba9efc44 100644 --- a/data-otservbr-global/npc/thorwulf.lua +++ b/data-otservbr-global/npc/thorwulf.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 58, lookLegs = 97, lookFeet = 116, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,229 +50,179 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addSpellKeyword({ 'find', 'person' }, - { - npcHandler = npcHandler, - spellName = 'Find Person', - price = 80, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'great', 'light' }, - { - npcHandler = npcHandler, - spellName = 'Great Light', - price = 500, - level = 13, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'light' }, - { - npcHandler = npcHandler, - spellName = 'Light', - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'magic', 'rope' }, - { - npcHandler = npcHandler, - spellName = 'Magic Rope', - price = 200, - level = 9, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'cure', 'poison' }, - { - npcHandler = npcHandler, - spellName = 'Cure Poison', - price = 150, - level = 10, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'intense', 'wound', 'cleansing' }, - { - npcHandler = npcHandler, - spellName = 'Intense Wound Cleansing', - price = 6000, - level = 80, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'wound', 'cleansing' }, - { - npcHandler = npcHandler, - spellName = 'Wound Cleansing', - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'levitate' }, - { - npcHandler = npcHandler, - spellName = 'Levitate', - price = 500, - level = 12, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'haste' }, - { - npcHandler = npcHandler, - spellName = 'Haste', - price = 600, - level = 14, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'brutal', 'strike' }, - { - npcHandler = npcHandler, - spellName = 'Brutal Strike', - price = 1000, - level = 16, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'charge' }, - { - npcHandler = npcHandler, - spellName = 'Charge', - price = 1300, - level = 25, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'whirlwind', 'throw' }, - { - npcHandler = npcHandler, - spellName = 'Whirlwind Throw', - price = 1500, - level = 28, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'groundshaker' }, - { - npcHandler = npcHandler, - spellName = 'Groundshaker', - price = 1500, - level = 33, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'fierce', 'berserk' }, - { - npcHandler = npcHandler, - spellName = 'Fierce Berserk', - price = 7500, - level = 90, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'berserk' }, - { - npcHandler = npcHandler, - spellName = 'Berserk', - price = 2500, - level = 35, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'inflict', 'wound' }, - { - npcHandler = npcHandler, - spellName = 'Inflict Wound', - price = 2500, - level = 40, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'cure', 'bleeding' }, - { - npcHandler = npcHandler, - spellName = 'Cure Bleeding', - price = 2500, - level = 45, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'intense', 'recovery' }, - { - npcHandler = npcHandler, - spellName = 'Intense Recovery', - price = 10000, - level = 100, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'recovery' }, - { - npcHandler = npcHandler, - spellName = 'Recovery', - price = 4000, - level = 50, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'front', 'sweep' }, - { - npcHandler = npcHandler, - spellName = 'Front Sweep', - price = 4000, - level = 70, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'annihilation' }, - { - npcHandler = npcHandler, - spellName = 'Annihilation', - price = 20000, - level = 110, - vocation = VOCATION.BASE_ID.KNIGHT - } -) - -keywordHandler:addKeyword({ 'healing', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Bruise Bane}', '{Cure Bleeding}', '{Wound Cleansing}', \z - '{Cure Poison}', '{Intense Wound Cleansing}', '{Recovery}' and '{Intense Recovery}'." - } -) -keywordHandler:addKeyword({ 'attack', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = { "In this category I have '{Whirlwind Throw}', '{Groundshaker}', '{Berserk}' and '{Fierce Berserk}' \z - as well as ...", "'{Brutal Strike}', '{Front Sweep}', '{Inflict Wound}' and '{Annihilation}'" } - } -) -keywordHandler:addKeyword({ 'support', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Light}', '{Find Person}', '{Magic Rope}', '{Levitate}', '{Haste}', \z - '{Charge}' and '{Great Light}'." - } -) -keywordHandler:addKeyword({ 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'I can teach you {healing spells}, {attack spells} and {support spells}. \z +keywordHandler:addSpellKeyword({ "find", "person" }, { + npcHandler = npcHandler, + spellName = "Find Person", + price = 80, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "great", "light" }, { + npcHandler = npcHandler, + spellName = "Great Light", + price = 500, + level = 13, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "light" }, { + npcHandler = npcHandler, + spellName = "Light", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "magic", "rope" }, { + npcHandler = npcHandler, + spellName = "Magic Rope", + price = 200, + level = 9, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "poison" }, { + npcHandler = npcHandler, + spellName = "Cure Poison", + price = 150, + level = 10, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "intense", "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Intense Wound Cleansing", + price = 6000, + level = 80, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Wound Cleansing", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "levitate" }, { + npcHandler = npcHandler, + spellName = "Levitate", + price = 500, + level = 12, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "haste" }, { + npcHandler = npcHandler, + spellName = "Haste", + price = 600, + level = 14, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "brutal", "strike" }, { + npcHandler = npcHandler, + spellName = "Brutal Strike", + price = 1000, + level = 16, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "charge" }, { + npcHandler = npcHandler, + spellName = "Charge", + price = 1300, + level = 25, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "whirlwind", "throw" }, { + npcHandler = npcHandler, + spellName = "Whirlwind Throw", + price = 1500, + level = 28, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "groundshaker" }, { + npcHandler = npcHandler, + spellName = "Groundshaker", + price = 1500, + level = 33, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "fierce", "berserk" }, { + npcHandler = npcHandler, + spellName = "Fierce Berserk", + price = 7500, + level = 90, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "berserk" }, { + npcHandler = npcHandler, + spellName = "Berserk", + price = 2500, + level = 35, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "inflict", "wound" }, { + npcHandler = npcHandler, + spellName = "Inflict Wound", + price = 2500, + level = 40, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "bleeding" }, { + npcHandler = npcHandler, + spellName = "Cure Bleeding", + price = 2500, + level = 45, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "intense", "recovery" }, { + npcHandler = npcHandler, + spellName = "Intense Recovery", + price = 10000, + level = 100, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "recovery" }, { + npcHandler = npcHandler, + spellName = "Recovery", + price = 4000, + level = 50, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "front", "sweep" }, { + npcHandler = npcHandler, + spellName = "Front Sweep", + price = 4000, + level = 70, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "annihilation" }, { + npcHandler = npcHandler, + spellName = "Annihilation", + price = 20000, + level = 110, + vocation = VOCATION.BASE_ID.KNIGHT, +}) + +keywordHandler:addKeyword({ "healing", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Bruise Bane}', '{Cure Bleeding}', '{Wound Cleansing}', \z + '{Cure Poison}', '{Intense Wound Cleansing}', '{Recovery}' and '{Intense Recovery}'.", +}) +keywordHandler:addKeyword({ "attack", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = { "In this category I have '{Whirlwind Throw}', '{Groundshaker}', '{Berserk}' and '{Fierce Berserk}' \z + as well as ...", "'{Brutal Strike}', '{Front Sweep}', '{Inflict Wound}' and '{Annihilation}'" }, +}) +keywordHandler:addKeyword({ "support", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Light}', '{Find Person}', '{Magic Rope}', '{Levitate}', '{Haste}', \z + '{Charge}' and '{Great Light}'.", +}) +keywordHandler:addKeyword({ "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can teach you {healing spells}, {attack spells} and {support spells}. \z What kind of spell do you wish to learn? \z - You can also tell me for which level you would like to learn a spell, if you prefer that.' - } -) + You can also tell me for which level you would like to learn a spell, if you prefer that.", +}) -npcHandler:setMessage(MESSAGE_GREET, 'Hi |PLAYERNAME|.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Bye |PLAYERNAME|.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Bye.') +npcHandler:setMessage(MESSAGE_GREET, "Hi |PLAYERNAME|.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Bye |PLAYERNAME|.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Bye.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/tibra.lua b/data-otservbr-global/npc/tibra.lua index a3b73b5a92f..3746347f1a6 100644 --- a/data-otservbr-global/npc/tibra.lua +++ b/data-otservbr-global/npc/tibra.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 92, lookLegs = 90, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,85 +51,91 @@ npcType.onCloseChannel = function(npc, creature) end -- Wooden Stake -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'I think you have forgotten to bring your stake, my child.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 2 and player:getItemCount(5941) == 0 end) - -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I was informed what to do. Are you prepared to receive my line of the prayer?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 2 end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive my prayer: \'Hope may fill your heart - doubt shall be banned\'. Now, bring your stake to Maealil in the elven settlement for the next line of the prayer. I will inform him what to do.', reset = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 3) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - end -) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'I will wait for you.', reset = true }) - -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You should visit Maealil in the elven settlement now, my child.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 3 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You already received my line of the prayer, dear child.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 3 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'A blessed stake? That is a strange request, my child. Maybe Quentin knows more, he is one of the oldest monks after all.' }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "I think you have forgotten to bring your stake, my child." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 2 and player:getItemCount(5941) == 0 +end) + +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I was informed what to do. Are you prepared to receive my line of the prayer?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 2 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive my prayer: 'Hope may fill your heart - doubt shall be banned'. Now, bring your stake to Maealil in the elven settlement for the next line of the prayer. I will inform him what to do.", reset = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 3) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "I will wait for you.", reset = true }) + +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You should visit Maealil in the elven settlement now, my child." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 3 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You already received my line of the prayer, dear child." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 3 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "A blessed stake? That is a strange request, my child. Maybe Quentin knows more, he is one of the oldest monks after all." }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I am a priest of the great pantheon.' }) -keywordHandler:addKeyword({ 'life' }, StdModule.say, { npcHandler = npcHandler, text = 'The teachings of Crunor tell us to honor life and not to harm it.' }) -keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, text = 'It is my mission to bring the teachings of the gods to everyone.' }) -keywordHandler:addKeyword({ 'quest' }, StdModule.say, { npcHandler = npcHandler, text = 'It is my mission to bring the teachings of the gods to everyone.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Tibra. Your soul tells me that you are |PLAYERNAME|.' }) -keywordHandler:addKeyword({ 'queen' }, StdModule.say, { npcHandler = npcHandler, text = 'Queen Eloise is wise to listen to the proposals of the druidic followers of Crunor.' }) -keywordHandler:addKeyword({ 'sell' }, StdModule.say, { npcHandler = npcHandler, text = 'The grace of the gods must be earned, it cannot be bought!' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'The world of Tibia is the creation of the gods.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'Now, it is |TIME|.' }) -keywordHandler:addKeyword({ 'crypt' }, StdModule.say, { npcHandler = npcHandler, text = 'There\'s something strange in its neighbourhood. But whom we gonna call for help if not the gods?' }) -keywordHandler:addKeyword({ 'monsters' }, StdModule.say, { npcHandler = npcHandler, text = 'Remind: Not everything you call monster is evil to the core!' }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = 'The mythical blade was hidden in ancient times. Its said that powerful wards protect it.' }) -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { npcHandler = npcHandler, text = 'The fallen one should be mourned, not feared.' }) -keywordHandler:addKeyword({ 'lugri' }, StdModule.say, { npcHandler = npcHandler, text = 'Only a man can fall as low as he did. His soul rotted away already.' }) -keywordHandler:addKeyword({ 'gods' }, StdModule.say, { npcHandler = npcHandler, text = 'The gods of good guard us and guide us, the gods of evil want to destroy us and steal our souls!' }) -keywordHandler:addKeyword({ 'gods of good' }, StdModule.say, { npcHandler = npcHandler, text = 'The gods we call the good ones are Fardos, Uman, the Elements, Suon, Crunor, Nornur, Bastesh, Kirok, Toth, and Banor.' }) -keywordHandler:addKeyword({ 'fardos' }, StdModule.say, { npcHandler = npcHandler, text = 'Fardos is the creator. The great obsever. He is our caretaker.' }) -keywordHandler:addKeyword({ 'uman' }, StdModule.say, { npcHandler = npcHandler, text = 'Uman is the positive aspect of magic. He brings us the secrets of the arcane arts.' }) -keywordHandler:addKeyword({ 'air' }, StdModule.say, { npcHandler = npcHandler, text = 'Air is one of the primal elemental forces, sometimes worshipped by tribal shamans.' }) -keywordHandler:addKeyword({ 'fire' }, StdModule.say, { npcHandler = npcHandler, text = 'Fire is one of the primal elemental forces, sometimes worshipped by tribal shamans.' }) -keywordHandler:addKeyword({ 'sula' }, StdModule.say, { npcHandler = npcHandler, text = 'Sula is the essence of the elemental power of water.' }) -keywordHandler:addKeyword({ 'suon' }, StdModule.say, { npcHandler = npcHandler, text = 'Suon is the lifebringing sun. He observes the creation with love.' }) -keywordHandler:addKeyword({ 'crunor' }, StdModule.say, { npcHandler = npcHandler, text = 'Crunor, the great tree, is the father of all plantlife. He is a prominent god for many druids.' }) -keywordHandler:addKeyword({ 'nornur' }, StdModule.say, { npcHandler = npcHandler, text = 'Nornur is the mysterious god of fate. Who knows if he is its creator or just a chronist?' }) -keywordHandler:addKeyword({ 'bastesh' }, StdModule.say, { npcHandler = npcHandler, text = 'Bastesh, the deep one, is the goddess of the sea and its creatures.' }) -keywordHandler:addKeyword({ 'kirok' }, StdModule.say, { npcHandler = npcHandler, text = 'Kirok, the mad one, is the god of scientists and jesters.' }) -keywordHandler:addKeyword({ 'toth' }, StdModule.say, { npcHandler = npcHandler, text = 'Toth, Lord of Death, is the keeper of the souls, the guardian of the afterlife.' }) -keywordHandler:addKeyword({ 'banor' }, StdModule.say, { npcHandler = npcHandler, text = 'Banor, the heavenly warrior, is the patron of all fighters against evil. He is the gift of the gods to inspire humanity.' }) -keywordHandler:addKeyword({ 'evil' }, StdModule.say, { npcHandler = npcHandler, text = 'The gods we call the evil ones are Zathroth, Fafnar, Brog, Urgith, and the Archdemons!' }) -keywordHandler:addKeyword({ 'zathroth' }, StdModule.say, { npcHandler = npcHandler, text = 'Zathroth is the destructive aspect of magic. He is the deciver and the thief of souls.' }) -keywordHandler:addKeyword({ 'fafnar' }, StdModule.say, { npcHandler = npcHandler, text = 'Fafnar is the scorching sun. She observes the creation with hate and jealousy.' }) -keywordHandler:addKeyword({ 'brog' }, StdModule.say, { npcHandler = npcHandler, text = 'Brog, the raging one, is the great destroyer. The berserk of darkness.' }) -keywordHandler:addKeyword({ 'urgith' }, StdModule.say, { npcHandler = npcHandler, text = 'The bonemaster Urgith is the lord of the undead and keeper of the damned souls.' }) -keywordHandler:addKeyword({ 'archdemons' }, StdModule.say, { npcHandler = npcHandler, text = 'The demons are followers of Zathroth. The cruelest are known as the ruthless seven.' }) -keywordHandler:addKeyword({ 'ruthless seven' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t want to talk about that subject!' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome in the name of the gods, pilgrim |PLAYERNAME|!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye, |PLAYERNAME|. May the gods be with you to guard and guide you, my child!') +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am a priest of the great pantheon." }) +keywordHandler:addKeyword({ "life" }, StdModule.say, { npcHandler = npcHandler, text = "The teachings of Crunor tell us to honor life and not to harm it." }) +keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = "It is my mission to bring the teachings of the gods to everyone." }) +keywordHandler:addKeyword({ "quest" }, StdModule.say, { npcHandler = npcHandler, text = "It is my mission to bring the teachings of the gods to everyone." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Tibra. Your soul tells me that you are |PLAYERNAME|." }) +keywordHandler:addKeyword({ "queen" }, StdModule.say, { npcHandler = npcHandler, text = "Queen Eloise is wise to listen to the proposals of the druidic followers of Crunor." }) +keywordHandler:addKeyword({ "sell" }, StdModule.say, { npcHandler = npcHandler, text = "The grace of the gods must be earned, it cannot be bought!" }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "The world of Tibia is the creation of the gods." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Now, it is |TIME|." }) +keywordHandler:addKeyword({ "crypt" }, StdModule.say, { npcHandler = npcHandler, text = "There's something strange in its neighbourhood. But whom we gonna call for help if not the gods?" }) +keywordHandler:addKeyword({ "monsters" }, StdModule.say, { npcHandler = npcHandler, text = "Remind: Not everything you call monster is evil to the core!" }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "The mythical blade was hidden in ancient times. Its said that powerful wards protect it." }) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, text = "The fallen one should be mourned, not feared." }) +keywordHandler:addKeyword({ "lugri" }, StdModule.say, { npcHandler = npcHandler, text = "Only a man can fall as low as he did. His soul rotted away already." }) +keywordHandler:addKeyword({ "gods" }, StdModule.say, { npcHandler = npcHandler, text = "The gods of good guard us and guide us, the gods of evil want to destroy us and steal our souls!" }) +keywordHandler:addKeyword({ "gods of good" }, StdModule.say, { npcHandler = npcHandler, text = "The gods we call the good ones are Fardos, Uman, the Elements, Suon, Crunor, Nornur, Bastesh, Kirok, Toth, and Banor." }) +keywordHandler:addKeyword({ "fardos" }, StdModule.say, { npcHandler = npcHandler, text = "Fardos is the creator. The great obsever. He is our caretaker." }) +keywordHandler:addKeyword({ "uman" }, StdModule.say, { npcHandler = npcHandler, text = "Uman is the positive aspect of magic. He brings us the secrets of the arcane arts." }) +keywordHandler:addKeyword({ "air" }, StdModule.say, { npcHandler = npcHandler, text = "Air is one of the primal elemental forces, sometimes worshipped by tribal shamans." }) +keywordHandler:addKeyword({ "fire" }, StdModule.say, { npcHandler = npcHandler, text = "Fire is one of the primal elemental forces, sometimes worshipped by tribal shamans." }) +keywordHandler:addKeyword({ "sula" }, StdModule.say, { npcHandler = npcHandler, text = "Sula is the essence of the elemental power of water." }) +keywordHandler:addKeyword({ "suon" }, StdModule.say, { npcHandler = npcHandler, text = "Suon is the lifebringing sun. He observes the creation with love." }) +keywordHandler:addKeyword({ "crunor" }, StdModule.say, { npcHandler = npcHandler, text = "Crunor, the great tree, is the father of all plantlife. He is a prominent god for many druids." }) +keywordHandler:addKeyword({ "nornur" }, StdModule.say, { npcHandler = npcHandler, text = "Nornur is the mysterious god of fate. Who knows if he is its creator or just a chronist?" }) +keywordHandler:addKeyword({ "bastesh" }, StdModule.say, { npcHandler = npcHandler, text = "Bastesh, the deep one, is the goddess of the sea and its creatures." }) +keywordHandler:addKeyword({ "kirok" }, StdModule.say, { npcHandler = npcHandler, text = "Kirok, the mad one, is the god of scientists and jesters." }) +keywordHandler:addKeyword({ "toth" }, StdModule.say, { npcHandler = npcHandler, text = "Toth, Lord of Death, is the keeper of the souls, the guardian of the afterlife." }) +keywordHandler:addKeyword({ "banor" }, StdModule.say, { npcHandler = npcHandler, text = "Banor, the heavenly warrior, is the patron of all fighters against evil. He is the gift of the gods to inspire humanity." }) +keywordHandler:addKeyword({ "evil" }, StdModule.say, { npcHandler = npcHandler, text = "The gods we call the evil ones are Zathroth, Fafnar, Brog, Urgith, and the Archdemons!" }) +keywordHandler:addKeyword({ "zathroth" }, StdModule.say, { npcHandler = npcHandler, text = "Zathroth is the destructive aspect of magic. He is the deciver and the thief of souls." }) +keywordHandler:addKeyword({ "fafnar" }, StdModule.say, { npcHandler = npcHandler, text = "Fafnar is the scorching sun. She observes the creation with hate and jealousy." }) +keywordHandler:addKeyword({ "brog" }, StdModule.say, { npcHandler = npcHandler, text = "Brog, the raging one, is the great destroyer. The berserk of darkness." }) +keywordHandler:addKeyword({ "urgith" }, StdModule.say, { npcHandler = npcHandler, text = "The bonemaster Urgith is the lord of the undead and keeper of the damned souls." }) +keywordHandler:addKeyword({ "archdemons" }, StdModule.say, { npcHandler = npcHandler, text = "The demons are followers of Zathroth. The cruelest are known as the ruthless seven." }) +keywordHandler:addKeyword({ "ruthless seven" }, StdModule.say, { npcHandler = npcHandler, text = "I don't want to talk about that subject!" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome in the name of the gods, pilgrim |PLAYERNAME|!") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|. May the gods be with you to guard and guide you, my child!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/tigo.lua b/data-otservbr-global/npc/tigo.lua index 525b4a85072..70646d20e40 100644 --- a/data-otservbr-global/npc/tigo.lua +++ b/data-otservbr-global/npc/tigo.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 6, lookLegs = 121, lookFeet = 120, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -69,7 +69,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - -- Começou a quest if MsgContains(message, "barkless") and npcHandler:getTopic(playerId) == 1 then npcHandler:say({ "You are now one of us. Learn to endure this world's suffering in every facet and take delight in the soothing eternity that waits for the {purest} of us on the other side." }, npc, creature) @@ -87,19 +86,21 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 2) npcHandler:setTopic(playerId, 2) elseif MsgContains(message, "trial") and npcHandler:getTopic(playerId) == 3 then - npcHandler:say({ "The trial consists of three steps. The trial of tar, where you will suffer unbearable heat and embrace the stigma of misfortune. ...", + npcHandler:say({ + "The trial consists of three steps. The trial of tar, where you will suffer unbearable heat and embrace the stigma of misfortune. ...", "The trial of sulphur, where you will bathe in burning sulphur and embrace the stigma of vanity. Then, there is the trial of purification. The truest of us will be purified to face judgement from the {Penitent}.", "To purge your soul, your body will have to be near absolute zero, the point where life becomes impossible. ...", "Something about you is different. I know that you will find a way to return even if you should die during the purification. And if you do... Leiden will become aware of you and retreat. ...", "If he does, follow him into his own chambers. Barkless are neither allowed to go near the throne room, aside from being judged, nor can we actually enter it.", - "He should be easy to defeat with his back to the wall, find him - and delvier us from whatever became of the Penitent." }, npc, creature) + "He should be easy to defeat with his back to the wall, find him - and delvier us from whatever became of the Penitent.", + }, npc, creature) npcHandler:setTopic(playerId, 0) npcHandler:setTopic(playerId, 0) end return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/tim_the_guard.lua b/data-otservbr-global/npc/tim_the_guard.lua index 79a2eeb4b07..d5920f42205 100644 --- a/data-otservbr-global/npc/tim_the_guard.lua +++ b/data-otservbr-global/npc/tim_the_guard.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 19, lookFeet = 19, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -85,7 +85,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "It's my duty to protect the city." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "It's my duty to protect the city." }) npcHandler:setMessage(MESSAGE_GREET, "LONG LIVE THE KING!") npcHandler:setMessage(MESSAGE_FAREWELL, "LONG LIVE THE KING!") diff --git a/data-otservbr-global/npc/timothy.lua b/data-otservbr-global/npc/timothy.lua index 9bc34b78e80..601043bebf3 100644 --- a/data-otservbr-global/npc/timothy.lua +++ b/data-otservbr-global/npc/timothy.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 61, lookLegs = 25, lookFeet = 57, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,18 +58,18 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "research notes")) then + if MsgContains(message, "research notes") then if player:getStorageValue(Storage.TheWayToYalahar.QuestLine) == 1 then npcHandler:say({ "Oh, you are the contact person of the academy? Here are the notes that contain everything I have found out so far. ...", "This city is absolutely fascinating, I tell you! If there hadn't been all this trouble and chaos in the past, this city would certainly be the greatest centre of knowledge in the world. ...", "Oh, by the way, speaking about all the trouble here reminds me of Palimuth, a friend of mine. He is a native who was quite helpful in gathering all these information. ...", - "I'd like to pay him back for his kindness by sending him some experienced helper that assists him in his effort to restore some order in this city. Maybe you are interested in this job?" + "I'd like to pay him back for his kindness by sending him some experienced helper that assists him in his effort to restore some order in this city. Maybe you are interested in this job?", }, npc, creature) npcHandler:setTopic(playerId, 1) end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then player:setStorageValue(Storage.TheWayToYalahar.QuestLine, 2) npcHandler:say("Excellent! You will find Palimuth near the entrance of the city centre. Just ask him if you can assist him in a few missions.", npc, creature) player:addItem(9171, 1) diff --git a/data-otservbr-global/npc/timur.lua b/data-otservbr-global/npc/timur.lua index c9467025332..9780e9d9c7f 100644 --- a/data-otservbr-global/npc/timur.lua +++ b/data-otservbr-global/npc/timur.lua @@ -16,18 +16,18 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 63, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Equipment and general goods!' }, - { text = 'Selling ammunition and buying bows and crossbows!' } + { text = "Equipment and general goods!" }, + { text = "Selling ammunition and buying bows and crossbows!" }, } local keywordHandler = KeywordHandler:new() @@ -92,7 +92,7 @@ npcConfig.shop = { { itemName = "viking helmet", clientId = 3367, buy = 265, sell = 66 }, { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -103,7 +103,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/tired_tree.lua b/data-otservbr-global/npc/tired_tree.lua index e3c7080e593..0ac8d3e240c 100644 --- a/data-otservbr-global/npc/tired_tree.lua +++ b/data-otservbr-global/npc/tired_tree.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/todd.lua b/data-otservbr-global/npc/todd.lua index 7da2093f09f..b6038a0c5f4 100644 --- a/data-otservbr-global/npc/todd.lua +++ b/data-otservbr-global/npc/todd.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 67, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,24 +61,24 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "interesting") then npcHandler:say({ "I'd really like to rebuild my reputation someday and maybe find a nice girl. If you come across scrolls of heroic deeds or addresses of lovely maidens... let me know! ...", - "Oh no, it doesn't matter what name is on the scrolls. I'm, uhm... flexible! And money - yes, I can pay. My, erm... uncle died recently and left me a pretty sum. Yes." + "Oh no, it doesn't matter what name is on the scrolls. I'm, uhm... flexible! And money - yes, I can pay. My, erm... uncle died recently and left me a pretty sum. Yes.", }, npc, creature) end end -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am... a traveler. Just leave me alone if you have nothing {interesting} to talk about." }) -keywordHandler:addKeyword({ 'want' }, StdModule.say, { npcHandler = npcHandler, text = "I am... a traveler. Just leave me alone if you have nothing {interesting} to talk about." }) -keywordHandler:addKeyword({ 'head' }, StdModule.say, { npcHandler = npcHandler, text = "Uhhh ohhhh one of the beers yesterday must have been bad." }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "My Name? I am To... ahm... hum... My name is {Hugo}." }) -keywordHandler:addKeyword({ 'hugo' }, StdModule.say, { npcHandler = npcHandler, text = "Yes, that's my name of course." }) -keywordHandler:addKeyword({ 'todd' }, StdModule.say, { npcHandler = npcHandler, text = "Uh .. I... I met a Todd on the road. He told me he was traveling to Venore, look there for your Todd." }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = "I love that city." }) -keywordHandler:addKeyword({ 'carlin' }, StdModule.say, { npcHandler = npcHandler, text = "I never was there. Now leave me alone." }) -keywordHandler:addKeyword({ 'resistance' }, StdModule.say, { npcHandler = npcHandler, text = "Resistance is futile... uhm... I wonder where I picked that saying up. Oh my head..." }) -keywordHandler:addKeyword({ 'money' }, StdModule.say, { npcHandler = npcHandler, text = "I don't know anything about money, missing or not." }) -keywordHandler:addKeyword({ 'eclesius' }, StdModule.say, { npcHandler = npcHandler, text = "He often comes here. But his constant confusion gives me a worse headache than Frodo's beer. I rather avoid him." }) -keywordHandler:addKeyword({ 'karl' }, StdModule.say, { npcHandler = npcHandler, text = "Uhm, never heard about him... and you can't prove otherwise." }) -keywordHandler:addKeyword({ 'william' }, StdModule.say, { npcHandler = npcHandler, text = "Thats a common name, perhaps I met a William, not sure about that." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am... a traveler. Just leave me alone if you have nothing {interesting} to talk about." }) +keywordHandler:addKeyword({ "want" }, StdModule.say, { npcHandler = npcHandler, text = "I am... a traveler. Just leave me alone if you have nothing {interesting} to talk about." }) +keywordHandler:addKeyword({ "head" }, StdModule.say, { npcHandler = npcHandler, text = "Uhhh ohhhh one of the beers yesterday must have been bad." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My Name? I am To... ahm... hum... My name is {Hugo}." }) +keywordHandler:addKeyword({ "hugo" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, that's my name of course." }) +keywordHandler:addKeyword({ "todd" }, StdModule.say, { npcHandler = npcHandler, text = "Uh .. I... I met a Todd on the road. He told me he was traveling to Venore, look there for your Todd." }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "I love that city." }) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { npcHandler = npcHandler, text = "I never was there. Now leave me alone." }) +keywordHandler:addKeyword({ "resistance" }, StdModule.say, { npcHandler = npcHandler, text = "Resistance is futile... uhm... I wonder where I picked that saying up. Oh my head..." }) +keywordHandler:addKeyword({ "money" }, StdModule.say, { npcHandler = npcHandler, text = "I don't know anything about money, missing or not." }) +keywordHandler:addKeyword({ "eclesius" }, StdModule.say, { npcHandler = npcHandler, text = "He often comes here. But his constant confusion gives me a worse headache than Frodo's beer. I rather avoid him." }) +keywordHandler:addKeyword({ "karl" }, StdModule.say, { npcHandler = npcHandler, text = "Uhm, never heard about him... and you can't prove otherwise." }) +keywordHandler:addKeyword({ "william" }, StdModule.say, { npcHandler = npcHandler, text = "Thats a common name, perhaps I met a William, not sure about that." }) npcHandler:setMessage(MESSAGE_GREET, "Uhm oh hello |PLAYERNAME|... not so loud please... my {head}... What ... do you {want}?") npcHandler:setMessage(MESSAGE_FAREWELL, "Yes, goodbye |PLAYERNAME|, just leave me alone.") @@ -89,7 +89,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "scroll of heroic deeds", clientId = 11510, sell = 230 }, - { itemName = "small notebook", clientId = 11450, sell = 480 } + { itemName = "small notebook", clientId = 11450, sell = 480 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -100,7 +100,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/tokel.lua b/data-otservbr-global/npc/tokel.lua index 775e8fd555f..1c8978a0326 100644 --- a/data-otservbr-global/npc/tokel.lua +++ b/data-otservbr-global/npc/tokel.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 96, lookLegs = 30, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ npcConfig.shop = { { itemName = "bread", clientId = 3600, buy = 3 }, { itemName = "cheese", clientId = 3607, buy = 5 }, { itemName = "ham", clientId = 3582, buy = 8 }, - { itemName = "meat", clientId = 3577, buy = 5 } + { itemName = "meat", clientId = 3577, buy = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -67,7 +67,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/tom.lua b/data-otservbr-global/npc/tom.lua index eb9b0db0637..680b6cc98af 100644 --- a/data-otservbr-global/npc/tom.lua +++ b/data-otservbr-global/npc/tom.lua @@ -16,19 +16,19 @@ npcConfig.outfit = { lookBody = 115, lookLegs = 58, lookFeet = 115, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Buying fresh corpses of rats, rabbits and wolves.' }, - { text = 'Oh yeah, I\'m also interested in wolf paws and bear paws.' }, - { text = 'Also buying minotaur leather.' } + { text = "Buying fresh corpses of rats, rabbits and wolves." }, + { text = "Oh yeah, I'm also interested in wolf paws and bear paws." }, + { text = "Also buying minotaur leather." }, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,6 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - local function greetCallback(npc, creature) local playerId = creature:getId() local player = Player(creature) @@ -92,36 +91,36 @@ end -- The Rookie Guard Quest - Mission 06: Run Like a Wolf -- Mission 6: Start -local mission6 = keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "I can help you get boots, but I can't give them to you for free. Besides, you'd want good boots, not that stuff made from rat leather. The best leather you'd find on Rook is wolf leather. ...", - "War wolf leather, to be precise. Problem is - war wolves are rare, and you can't hope to fight and defeat them. So your only chance is to find an already dead war wolf, take his skin, and escape really fast. ...", - "What an interesting coincidence that I've seen a poacher sneak into the wolf den just a few hours ago. I'm not exactly a fan of poachers - they kill too many of our wolves. ...", - "Sooo... what I'm suggesting is: follow his traces into the wolf den, and if you get lucky, you'll be able to take one of his illegally obtained war wolf skins. ...", - "That's why I wouldn't call it 'stealing', what an ugly word... anyway, if you bring the skin back to me, I'll make some great war wolf boots from them. What do you say?" - } +local mission6 = keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "I can help you get boots, but I can't give them to you for free. Besides, you'd want good boots, not that stuff made from rat leather. The best leather you'd find on Rook is wolf leather. ...", + "War wolf leather, to be precise. Problem is - war wolves are rare, and you can't hope to fight and defeat them. So your only chance is to find an already dead war wolf, take his skin, and escape really fast. ...", + "What an interesting coincidence that I've seen a poacher sneak into the wolf den just a few hours ago. I'm not exactly a fan of poachers - they kill too many of our wolves. ...", + "Sooo... what I'm suggesting is: follow his traces into the wolf den, and if you get lucky, you'll be able to take one of his illegally obtained war wolf skins. ...", + "That's why I wouldn't call it 'stealing', what an ugly word... anyway, if you bring the skin back to me, I'll make some great war wolf boots from them. What do you say?", }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission06) == 1 end -) +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission06) == 1 +end) keywordHandler:addAliasKeyword({ "mission" }) -- Mission 6: Decline start -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Alright. Can I help you with something else then?" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission06) == 1 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Alright. Can I help you with something else then?", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission06) == 1 +end) -- Mission 6: Accept -mission6:addChildKeyword({ "yes" }, StdModule.say, +mission6:addChildKeyword( + { "yes" }, + StdModule.say, { npcHandler = npcHandler, text = "That's what I thought. I marked the wolf den on your map. To go there, exit the village to the north and walk north-east. Good luck finding that poacher and figuring out a plan to take those skins! Hehe.", - ungreet = true + ungreet = true, }, nil, function(player) @@ -131,96 +130,92 @@ mission6:addChildKeyword({ "yes" }, StdModule.say, ) -- Mission 6: Decline -mission6:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, then walk Rookgaard barefoot. It's up to you!", - reset = true - }) +mission6:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, then walk Rookgaard barefoot. It's up to you!", + reset = true, +}) -- Mission 6: Finish - Confirm (Give skin) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Hmm... unfortunately the skin is damaged too badly. Whoever skinned this wolf wasn't very skilled at it. Hmm. ...", - "Ah, no need to fret. Tell you what kid, I'm gonna give you some normal leather boots instead. They should keep your feet warm as well. Here you go. ...", - "By the way... that running you did to get out of the cave will be your normal walking speed when you are several levels higher. With each level you gain, you'll also become a little faster. ...", - "There are also other items, spells and equipment that increase your speed. ...", - "You can also tame creatures to ride on that will also increase your speed. So don't worry if you're out of breath now - you won't always be that slow. Now off with you and back to Vascalir, I have work to do." - } +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Hmm... unfortunately the skin is damaged too badly. Whoever skinned this wolf wasn't very skilled at it. Hmm. ...", + "Ah, no need to fret. Tell you what kid, I'm gonna give you some normal leather boots instead. They should keep your feet warm as well. Here you go. ...", + "By the way... that running you did to get out of the cave will be your normal walking speed when you are several levels higher. With each level you gain, you'll also become a little faster. ...", + "There are also other items, spells and equipment that increase your speed. ...", + "You can also tame creatures to ride on that will also increase your speed. So don't worry if you're out of breath now - you won't always be that slow. Now off with you and back to Vascalir, I have work to do.", }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission06) == 6 and player:getItemCount(12740) >= 1 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission06, 7) - player:removeItem(12740, 1) - player:addItemEx(Game.createItem(3552, 1), true, CONST_SLOT_WHEREEVER) - end -) +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission06) == 6 and player:getItemCount(12740) >= 1 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission06, 7) + player:removeItem(12740, 1) + player:addItemEx(Game.createItem(3552, 1), true, CONST_SLOT_WHEREEVER) +end) -- Mission 6: Finish - Decline (Give skin) -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Are you sure? I think I see some war wolf leather on you. You should reply with {yes}." - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission06) == 6 and player:getItemCount(12740) >= 1 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Are you sure? I think I see some war wolf leather on you. You should reply with {yes}.", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission06) == 6 and player:getItemCount(12740) >= 1 +end) -- Basic keywords -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'My name is Tom the tanner.' }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the local {tanner}. I buy fresh animal {corpses}, tan them, and convert them into fine leather clothes which I then sell to {merchants}.' }) -keywordHandler:addKeyword({ 'merchant' }, StdModule.say, { npcHandler = npcHandler, text = '{Dixi} and {Lee\'Delle} sell my leather clothes in their shops.' }) -keywordHandler:addKeyword({ 'tanner' }, StdModule.say, { npcHandler = npcHandler, text = 'That\'s my job. It can be dirty at times but it provides enough income for my living.' }) -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'Do I look like a tourist information centre? Go ask someone else.' }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'Help? I will give you a few gold coins if you have some fresh dead {animals} for me. Note the word {fresh}.' }) -keywordHandler:addKeyword({ 'fresh' }, StdModule.say, { npcHandler = npcHandler, text = 'Fresh means: shortly after their death.' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'Much to do these days.' }) -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'Good monsters to start with are rats. They live in the {sewers} under the village of {Rookgaard}.' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'Dungeons can be dangerous without proper {equipment}.' }) -keywordHandler:addKeyword({ 'equipment' }, StdModule.say, { npcHandler = npcHandler, text = 'You need at least a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, I haven\'t been outside for a while, so I don\'t know.' }) - -keywordHandler:addKeyword({ 'troll' }, StdModule.say, { npcHandler = npcHandler, text = 'Troll leather stinks. Can\'t use it.' }) -keywordHandler:addKeyword({ 'orc' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t buy orcs. Their skin is too scratchy.' }) -keywordHandler:addKeyword({ 'human' }, StdModule.say, { npcHandler = npcHandler, text = 'Are you crazy?!', ungreet = true }) - -keywordHandler:addKeyword({ 'backpack' }, StdModule.say, { npcHandler = npcHandler, text = 'Nope, sorry, don\'t sell that. Go see {Al Dee} or {Lee\'Delle}.' }) -keywordHandler:addAliasKeyword({ 'rope' }) - -keywordHandler:addKeyword({ 'armor' }, StdModule.say, { npcHandler = npcHandler, text = 'Nope, sorry, don\'t sell that. Ask {Dixi} or {Lee\'Delle}.' }) -keywordHandler:addAliasKeyword({ 'shield' }) - -keywordHandler:addKeyword({ 'weapon' }, StdModule.say, { npcHandler = npcHandler, text = 'Nope, sorry, don\'t sell that. Ask {Obi} or {Lee\'Delle}.' }) - -keywordHandler:addKeyword({ 'corpse' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m buying fresh {corpses} of rats, rabbits and wolves. I don\'t buy half-decayed ones. If you have any for sale, {trade} with me.' }) -keywordHandler:addAliasKeyword({ 'wares' }) -keywordHandler:addAliasKeyword({ 'animal' }) -keywordHandler:addAliasKeyword({ 'sell' }) -keywordHandler:addAliasKeyword({ 'buy' }) -keywordHandler:addAliasKeyword({ 'offer' }) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "My name is Tom the tanner." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the local {tanner}. I buy fresh animal {corpses}, tan them, and convert them into fine leather clothes which I then sell to {merchants}." }) +keywordHandler:addKeyword({ "merchant" }, StdModule.say, { npcHandler = npcHandler, text = "{Dixi} and {Lee'Delle} sell my leather clothes in their shops." }) +keywordHandler:addKeyword({ "tanner" }, StdModule.say, { npcHandler = npcHandler, text = "That's my job. It can be dirty at times but it provides enough income for my living." }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "Do I look like a tourist information centre? Go ask someone else." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "Help? I will give you a few gold coins if you have some fresh dead {animals} for me. Note the word {fresh}." }) +keywordHandler:addKeyword({ "fresh" }, StdModule.say, { npcHandler = npcHandler, text = "Fresh means: shortly after their death." }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "Much to do these days." }) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Good monsters to start with are rats. They live in the {sewers} under the village of {Rookgaard}." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "Dungeons can be dangerous without proper {equipment}." }) +keywordHandler:addKeyword({ "equipment" }, StdModule.say, { npcHandler = npcHandler, text = "You need at least a {backpack}, a {rope}, a {shovel}, a {weapon}, an {armor} and a {shield}." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, I haven't been outside for a while, so I don't know." }) + +keywordHandler:addKeyword({ "troll" }, StdModule.say, { npcHandler = npcHandler, text = "Troll leather stinks. Can't use it." }) +keywordHandler:addKeyword({ "orc" }, StdModule.say, { npcHandler = npcHandler, text = "I don't buy orcs. Their skin is too scratchy." }) +keywordHandler:addKeyword({ "human" }, StdModule.say, { npcHandler = npcHandler, text = "Are you crazy?!", ungreet = true }) + +keywordHandler:addKeyword({ "backpack" }, StdModule.say, { npcHandler = npcHandler, text = "Nope, sorry, don't sell that. Go see {Al Dee} or {Lee'Delle}." }) +keywordHandler:addAliasKeyword({ "rope" }) + +keywordHandler:addKeyword({ "armor" }, StdModule.say, { npcHandler = npcHandler, text = "Nope, sorry, don't sell that. Ask {Dixi} or {Lee'Delle}." }) +keywordHandler:addAliasKeyword({ "shield" }) + +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { npcHandler = npcHandler, text = "Nope, sorry, don't sell that. Ask {Obi} or {Lee'Delle}." }) + +keywordHandler:addKeyword({ "corpse" }, StdModule.say, { npcHandler = npcHandler, text = "I'm buying fresh {corpses} of rats, rabbits and wolves. I don't buy half-decayed ones. If you have any for sale, {trade} with me." }) +keywordHandler:addAliasKeyword({ "wares" }) +keywordHandler:addAliasKeyword({ "animal" }) +keywordHandler:addAliasKeyword({ "sell" }) +keywordHandler:addAliasKeyword({ "buy" }) +keywordHandler:addAliasKeyword({ "offer" }) -- Names -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s an apple polisher.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'Now that\'s an interesting woman.' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s a better cook than his cousin {Willie}, actually.' }) -keywordHandler:addKeyword({ 'willie' }, StdModule.say, { npcHandler = npcHandler, text = 'I kinda like him. At least he says what he thinks.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'Yep.' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'He sticks his nose too much in books.' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'My mother?? Did you meet my mother??' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t have a problem with him.' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'Typical pencil pusher.' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s in the academy, just above Seymour. Go there once you are level 8 to leave this place.' }) -keywordHandler:addKeyword({ 'obi' }, StdModule.say, { npcHandler = npcHandler, text = 'He is such a hypocrite.' }) -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'I like her beer.' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'She buys my fine leather clothes.' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'I wonder what spectacular monsters he has found.' }) -keywordHandler:addKeyword({ 'lee\'delle' }, StdModule.say, { npcHandler = npcHandler, text = 'Her nose is a little high in the air, I think. She never shakes my hand.' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'I wonder if he\'s angry because his potion monopoly fell.' }) -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m not what you\'d call a \'believer\'.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s okay.' }) -keywordHandler:addAliasKeyword({ 'zerbrus' }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "He's an apple polisher." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "Now that's an interesting woman." }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "He's a better cook than his cousin {Willie}, actually." }) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { npcHandler = npcHandler, text = "I kinda like him. At least he says what he thinks." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "Yep." }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "He sticks his nose too much in books." }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "My mother?? Did you meet my mother??" }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "I don't have a problem with him." }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "Typical pencil pusher." }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "It's in the academy, just above Seymour. Go there once you are level 8 to leave this place." }) +keywordHandler:addKeyword({ "obi" }, StdModule.say, { npcHandler = npcHandler, text = "He is such a hypocrite." }) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "I like her beer." }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "She buys my fine leather clothes." }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "I wonder what spectacular monsters he has found." }) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { npcHandler = npcHandler, text = "Her nose is a little high in the air, I think. She never shakes my hand." }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "I wonder if he's angry because his potion monopoly fell." }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = "I'm not what you'd call a 'believer'." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "He's okay." }) +keywordHandler:addAliasKeyword({ "zerbrus" }) local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) @@ -265,8 +260,8 @@ end npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_FAREWELL, farewellCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'D\'oh?') -npcHandler:setMessage(MESSAGE_SENDTRADE, 'Sure, check what I buy.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "D'oh?") +npcHandler:setMessage(MESSAGE_SENDTRADE, "Sure, check what I buy.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) @@ -287,7 +282,7 @@ npcConfig.shop = { { itemName = "poison spider shell", clientId = 11485, sell = 3 }, { itemName = "spider fangs", clientId = 8031, sell = 4 }, { itemName = "wolf paw", clientId = 5897, sell = 7 }, - { itemName = "wool", clientId = 10319, sell = 10 } + { itemName = "wool", clientId = 10319, sell = 10 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -298,7 +293,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/tomruk_the_ruddy.lua b/data-otservbr-global/npc/tomruk_the_ruddy.lua index a6596ced74e..9fe479e2d77 100644 --- a/data-otservbr-global/npc/tomruk_the_ruddy.lua +++ b/data-otservbr-global/npc/tomruk_the_ruddy.lua @@ -11,20 +11,20 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 553 + lookType = 553, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Interesting reaction. Bloodcurdling. Must inspect further.' }, - { text = 'This is really sanguine!' }, - { text = 'Hmm... the conductors are too dry to transmit energy.' }, - { text = 'Ah, fresh blood. My favourite.' } + { text = "Interesting reaction. Bloodcurdling. Must inspect further." }, + { text = "This is really sanguine!" }, + { text = "Hmm... the conductors are too dry to transmit energy." }, + { text = "Ah, fresh blood. My favourite." }, } local keywordHandler = KeywordHandler:new() @@ -62,33 +62,33 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, 'scroll') or MsgContains(message, 'mission')) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission35) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission36) < 1 then + if (MsgContains(message, "scroll") or MsgContains(message, "mission")) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission35) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission36) < 1 then npcHandler:say({ "So someone sent you after a scroll, eh? A stroll for a scroll! Sounds like an old-fashioned necromancer thing. ...", "Well, this piece here is a rather fascinating thing - see those strange blood stains? - ...", "My predecessors have had it for quite a while without finding out more - I was hoping to investigate, but there's always so much to do! ...", - "Ah, so you want it, too? Well, do me a favour: fetch two samples and assist in my experiment, in exchange for the scroll piece. Yes?" + "Ah, so you want it, too? Well, do me a favour: fetch two samples and assist in my experiment, in exchange for the scroll piece. Yes?", }, npc, creature) npcHandler:setTopic(playerId, 1) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission35) == 1 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission35) == 1 then npcHandler:say({ "Sanguine! I need two different blood samples - The first one from the necromancer's pure blood chamber. ... ", "I was barred from the premises. For my research! Shameful! I'm a martyr to the cause - oh, the second sample you said? ...", "The second sample you must retrieve from the sacrificial chamber in the ancient vampire crypts, first floor, far west. ...", - "Take these two sterilised vials, one for each blood basin. Oh, I wish I could go myself! Come back when you have filled both vials." + "Take these two sterilised vials, one for each blood basin. Oh, I wish I could go myself! Come back when you have filled both vials.", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission36, 1) player:addItem(19100, 2) npcHandler:setTopic(playerId, 0) - elseif (MsgContains(message, 'scroll') or MsgContains(message, 'mission') or MsgContains(message, 'blood')) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission37) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission38) < 1 then + elseif (MsgContains(message, "scroll") or MsgContains(message, "mission") or MsgContains(message, "blood")) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission37) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission38) < 1 then npcHandler:say("Hello hello! Did you bring those blood samples?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 2 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission37) == 1 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 2 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission37) == 1 then if player:getItemCount(19102) >= 1 and player:getItemCount(19101) >= 1 then npcHandler:say({ "Now, let me see... yes... yes... very good. Let me add THIS ..... swill it... there. Sanguine! ...", "We're not finished yet. Take this tainted blood vial ...", - "Dab some drops from it on to the four blood pagodas in the inner circle here. Then pull the lightning lever over there." + "Dab some drops from it on to the four blood pagodas in the inner circle here. Then pull the lightning lever over there.", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission38, 1) player:removeItem(19101, 1) @@ -99,22 +99,22 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("You haven't got any blood.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, 'scroll') or MsgContains(message, 'mission')) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission40) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission41) < 1 then + elseif (MsgContains(message, "scroll") or MsgContains(message, "mission")) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission40) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission41) < 1 then npcHandler:say("Hello hello! Did Hello hello! Well now, painted all those blood pagodas properly?", npc, creature) npcHandler:setTopic(playerId, 3) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 3 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission40) == 1 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 3 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission40) == 1 then npcHandler:say({ "Sanguine! Did you see those sparks! We definitely had some energy transfer! Well done! Now, for your reward. ...", "Err... I would awfully like to know more about the scroll ...", "Would you settle for a heartfelt handshake instead - oh, you wouldn't? Well, er, okay ...", - "Give me a minute or two to retrieve it. Ask me for the {scroll} or the {mission}" + "Give me a minute or two to retrieve it. Ask me for the {scroll} or the {mission}", }, npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission41, 1) npcHandler:setTopic(playerId, 0) - elseif (MsgContains(message, 'scroll') or MsgContains(message, 'mission')) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission41) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission42) < 1 then + elseif (MsgContains(message, "scroll") or MsgContains(message, "mission")) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission41) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission42) < 1 then npcHandler:say("Hello hell- oh, you've come for the scroll, haven't you?", npc, creature) npcHandler:setTopic(playerId, 4) - elseif MsgContains(message, 'yes') and npcHandler:getTopic(playerId) == 4 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission41) == 1 then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 4 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission41) == 1 then npcHandler:say("My heart bleeds to part from it. Here. Extend your hand - I'll just retrieve some blood from in exchange - HOLD STILL.", npc, creature) player:setStorageValue(Storage.GravediggerOfDrefia.Mission42, 1) player:addItem(18933, 1) diff --git a/data-otservbr-global/npc/tony.lua b/data-otservbr-global/npc/tony.lua index a47173948a7..c35b9288494 100644 --- a/data-otservbr-global/npc/tony.lua +++ b/data-otservbr-global/npc/tony.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -68,13 +68,13 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "pass") then npcHandler:say("You can {pass} either to the {Arena Quarter} or {Foreigner Quarter}. Which one will it be?", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "arena")) then + elseif MsgContains(message, "arena") then if npcHandler:getTopic(playerId) == 1 then player:teleportTo(Position(32695, 31254, 7)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) npcHandler:setTopic(playerId, 0) end - elseif (MsgContains(message, "foreigner")) then + elseif MsgContains(message, "foreigner") then if npcHandler:getTopic(playerId) == 1 then player:teleportTo(Position(32695, 31259, 7)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/npc/tooth_fairy.lua b/data-otservbr-global/npc/tooth_fairy.lua index 32e6388eada..ef0b6e43360 100644 --- a/data-otservbr-global/npc/tooth_fairy.lua +++ b/data-otservbr-global/npc/tooth_fairy.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/toothless_tim.lua b/data-otservbr-global/npc/toothless_tim.lua index 5383a7c9db5..d964ffa17ae 100644 --- a/data-otservbr-global/npc/toothless_tim.lua +++ b/data-otservbr-global/npc/toothless_tim.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 20, lookLegs = 116, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/topsy.lua b/data-otservbr-global/npc/topsy.lua index 6f2cac72cde..06d4353dd66 100644 --- a/data-otservbr-global/npc/topsy.lua +++ b/data-otservbr-global/npc/topsy.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 52, lookLegs = 100, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Runes, wands, rods, health and mana potions! Have a look!" } + { text = "Runes, wands, rods, health and mana potions! Have a look!" }, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,7 @@ end local items = { [VOCATION.BASE_ID.SORCERER] = 3074, - [VOCATION.BASE_ID.DRUID] = 3066 + [VOCATION.BASE_ID.DRUID] = 3066, } local function creatureSayCallback(npc, creature, type, message) @@ -97,8 +97,11 @@ end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) -npcHandler:setMessage(MESSAGE_GREET, "Hello, dear |PLAYERNAME|. How can I help you? \z - If you need magical equipment such as runes or wands, just ask me for a trade. ") +npcHandler:setMessage( + MESSAGE_GREET, + "Hello, dear |PLAYERNAME|. How can I help you? \z + If you need magical equipment such as runes or wands, just ask me for a trade. " +) npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|. Do come again!") npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye, |PLAYERNAME|. Do come again!") @@ -153,7 +156,7 @@ npcConfig.shop = { { itemName = "wand of cosmic energy", clientId = 3073, buy = 10000 }, { itemName = "wand of decay", clientId = 3072, buy = 5000 }, { itemName = "wand of dragonbreath", clientId = 3075, buy = 1000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -164,7 +167,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/torence.lua b/data-otservbr-global/npc/torence.lua index dd90ff925b3..ed14e1ca8e4 100644 --- a/data-otservbr-global/npc/torence.lua +++ b/data-otservbr-global/npc/torence.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 36, lookLegs = 116, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/tothdral.lua b/data-otservbr-global/npc/tothdral.lua index 4a213fb23d5..b5833cdc405 100644 --- a/data-otservbr-global/npc/tothdral.lua +++ b/data-otservbr-global/npc/tothdral.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 65 + lookType = 65, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,7 +61,7 @@ npcConfig.shop = { { itemName = "flask of embalming fluid", clientId = 11466, sell = 30 }, { itemName = "strange symbol", clientId = 3058, sell = 200 }, { itemName = "unholy bone", clientId = 10316, sell = 480 }, - { itemName = "witch broom", clientId = 9652, sell = 60 } + { itemName = "witch broom", clientId = 9652, sell = 60 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -72,7 +72,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/towncryer.lua b/data-otservbr-global/npc/towncryer.lua index 6272512b881..6e17b94b420 100644 --- a/data-otservbr-global/npc/towncryer.lua +++ b/data-otservbr-global/npc/towncryer.lua @@ -16,34 +16,34 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 10, lookFeet = 114, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, { text = "Hear me! Hear me! The mage Wyrdin in the Edron academy is looking for brave adventurers to undertake a task!" }, - { text = "Hear me! Hear me! The postmaster\'s guild has open spots for aspiring postmen! Contact Kevin Postner at the post office in the plains south of Kazordoon!" }, - { text = "Hear me! Hear me! The inquisition is looking for daring people to fight evil! Apply at the inquisition headquarters next to the Thaian jail!" } + { text = "Hear me! Hear me! The postmaster's guild has open spots for aspiring postmen! Contact Kevin Postner at the post office in the plains south of Kazordoon!" }, + { text = "Hear me! Hear me! The inquisition is looking for daring people to fight evil! Apply at the inquisition headquarters next to the Thaian jail!" }, } local worldChanges = { { storage = GlobalStorage.FuryGates, - text = "Hear ye! Hear ye! A fiery gate has opened, threatening a city! Guard the people frightened, their death would be a pity!" + text = "Hear ye! Hear ye! A fiery gate has opened, threatening a city! Guard the people frightened, their death would be a pity!", }, { storage = GlobalStorage.Yasir, - text = "Hear ye! Hear ye! What a lucky and beautiful day! Visit Carlin, Ankrahmun, or Liberty Bay. Yasir, the oriental trader might be there. Gather your creature products, for this chance is rare." + text = "Hear ye! Hear ye! What a lucky and beautiful day! Visit Carlin, Ankrahmun, or Liberty Bay. Yasir, the oriental trader might be there. Gather your creature products, for this chance is rare.", }, { storage = GlobalStorage.NightmareIsle, - text = "Hear me! Hear me! A river is flooding, south of the outlaw base. Explore a new isle, an unknown place. Don\'t be afraid, but ready your blade." - } + text = "Hear me! Hear me! A river is flooding, south of the outlaw base. Explore a new isle, an unknown place. Don't be afraid, but ready your blade.", + }, } for i = 1, #worldChanges do diff --git a/data-otservbr-global/npc/trimegis.lua b/data-otservbr-global/npc/trimegis.lua index 0d489db51ba..2c56385811f 100644 --- a/data-otservbr-global/npc/trimegis.lua +++ b/data-otservbr-global/npc/trimegis.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 109, lookLegs = 94, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/trisha.lua b/data-otservbr-global/npc/trisha.lua index 0798a03904c..1dbafeb7024 100644 --- a/data-otservbr-global/npc/trisha.lua +++ b/data-otservbr-global/npc/trisha.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 67, lookLegs = 38, lookFeet = 95, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,10 +57,10 @@ local config = { wrongValue = "Well, I'll give you a little hint. They can sometimes be extracted from creatures \z that consist only of - you guessed it, bones. You need an obsidian knife though.", deliever = "How are you faring with your mission? Have you collected all 100 hardened bones?", - success = "I'm surprised. That's pretty good for a man. Now, bring us the 100 turtle shells." + success = "I'm surprised. That's pretty good for a man. Now, bring us the 100 turtle shells.", }, itemId = 5925, - count = 100 + count = 100, }, ["turtle shells"] = { value = 2, @@ -68,10 +68,10 @@ local config = { wrongValue = "Turtles can be found on some idyllic islands which have recently been discovered.", deliever = "Did you get us 100 turtle shells so we can make new shields?", success = "Well done - for a man. These shells are enough to build many strong new shields. \z - Thank you! Now - show me fighting spirit." + Thank you! Now - show me fighting spirit.", }, itemId = 5899, - count = 100 + count = 100, }, ["fighting spirit"] = { value = 3, @@ -80,9 +80,9 @@ local config = { Sorry, but you have to figure this one out by yourself. Unless someone grants you a wish.", deliever = "So, can you show me your fighting spirit?", success = "Correct - pretty smart for a man. But the hardest task is yet to come: \z - the claw from a lord among the dragon lords." + the claw from a lord among the dragon lords.", }, - itemId = 5884 + itemId = 5884, }, ["dragon claw"] = { value = 4, @@ -91,10 +91,10 @@ local config = { It requires a special one, a lord among the lords.", deliever = "Have you actually managed to obtain the dragon claw I asked for?", success = "You did it! I have seldom seen a man as courageous as you. \z - I really have to say that you deserve to wear a spike. Go ask Cornelia to adorn your armour." + I really have to say that you deserve to wear a spike. Go ask Cornelia to adorn your armour.", }, - itemId = 5919 - } + itemId = 5919, + }, } local topic = {} @@ -117,18 +117,30 @@ local function creatureSayCallback(npc, creature, type, message) local player, storage = Player(creature), Storage.OutfitQuest.WarriorShoulderAddon if npcHandler:getTopic(playerId) == 0 then if table.contains({ "outfit", "addon" }, message) then - npcHandler:say("Are you talking about my spiky shoulder pad? You can't buy one of these. \z - They have to be {earned}.", npc, creature) + npcHandler:say( + "Are you talking about my spiky shoulder pad? You can't buy one of these. \z + They have to be {earned}.", + npc, + creature + ) elseif MsgContains(message, "earn") then if player:getStorageValue(storage) < 1 then - npcHandler:say("I'm not sure if you are enough of a hero to earn them. \z - You could try, though. What do you think?", npc, creature) + npcHandler:say( + "I'm not sure if you are enough of a hero to earn them. \z + You could try, though. What do you think?", + npc, + creature + ) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(storage) >= 1 and player:getStorageValue(storage) < 5 then npcHandler:say("Before I can nominate you for an award, please complete your task.", npc, creature) elseif player:getStorageValue(storage) == 5 then - npcHandler:say("You did it! I have seldom seen a man as courageous as you. \z - I really have to say that you deserve to wear a spike. Go ask Cornelia to adorn your armour.", npc, creature) + npcHandler:say( + "You did it! I have seldom seen a man as courageous as you. \z + I really have to say that you deserve to wear a spike. Go ask Cornelia to adorn your armour.", + npc, + creature + ) end elseif config[message:lower()] then local targetMessage = config[message:lower()] @@ -151,7 +163,7 @@ local function creatureSayCallback(npc, creature, type, message) "It is said that excellent shields can be created from these. ...", "Alright, um, afterwards show me that you have fighting spirit. Any true hero needs plenty of that. ...", "The last task is the hardest. You will need to bring me a claw from a mighty dragon king. ...", - "Did you understand everything I told you and are willing to handle this task?" + "Did you understand everything I told you and are willing to handle this task?", }, npc, creature, 100) npcHandler:setTopic(playerId, 2) elseif MsgContains(message, "no") then @@ -187,69 +199,53 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addSpellKeyword({ "find", "person" }, - { - npcHandler = npcHandler, - spellName = "Find Person", - price = 80, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "light" }, - { - npcHandler = npcHandler, - spellName = "Light", - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "cure", "poison" }, - { - npcHandler = npcHandler, - spellName = "Cure Poison", - price = 150, - level = 10, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "wound", "cleansing" }, - { - npcHandler = npcHandler, - spellName = "Wound Cleansing", - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ "great", "light" }, - { - npcHandler = npcHandler, - spellName = "Great Light", - price = 500, - level = 13, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addKeyword({ "healing", "spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Wound Cleansing}'' and '{Cure Poison}''." - } -) -keywordHandler:addKeyword({ "support", "spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Light}', '{Find Person}' and '{Great Light}'." - } -) -keywordHandler:addKeyword({ "spells" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I can teach you {healing spells} and {support spells}. What kind of spell do you wish to learn? You can also tell me for which level you would like to learn a spell, if you prefer that." - } -) +keywordHandler:addSpellKeyword({ "find", "person" }, { + npcHandler = npcHandler, + spellName = "Find Person", + price = 80, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "light" }, { + npcHandler = npcHandler, + spellName = "Light", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "poison" }, { + npcHandler = npcHandler, + spellName = "Cure Poison", + price = 150, + level = 10, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Wound Cleansing", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "great", "light" }, { + npcHandler = npcHandler, + spellName = "Great Light", + price = 500, + level = 13, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addKeyword({ "healing", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Wound Cleansing}'' and '{Cure Poison}''.", +}) +keywordHandler:addKeyword({ "support", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Light}', '{Find Person}' and '{Great Light}'.", +}) +keywordHandler:addKeyword({ "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can teach you {healing spells} and {support spells}. What kind of spell do you wish to learn? You can also tell me for which level you would like to learn a spell, if you prefer that.", +}) npcHandler:setMessage(MESSAGE_WALKAWAY, "Be careful on your journeys.") npcHandler:setMessage(MESSAGE_FAREWELL, "Don't hurt yourself with that weapon, little one.") diff --git a/data-otservbr-global/npc/tristan.lua b/data-otservbr-global/npc/tristan.lua index e51368f630d..ab1c8b393fe 100644 --- a/data-otservbr-global/npc/tristan.lua +++ b/data-otservbr-global/npc/tristan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 47, lookLegs = 48, lookFeet = 38, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,220 +50,170 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addSpellKeyword({ 'find', 'person' }, - { - npcHandler = npcHandler, - spellName = 'Find Person', - price = 80, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'great', 'light' }, - { - npcHandler = npcHandler, - spellName = 'Great Light', - price = 500, - level = 13, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'light' }, - { - npcHandler = npcHandler, - spellName = 'Light', - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'magic', 'rope' }, - { - npcHandler = npcHandler, - spellName = 'Magic Rope', - price = 200, - level = 9, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'cure', 'poison' }, - { - npcHandler = npcHandler, - spellName = 'Cure Poison', - price = 150, - level = 10, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'intense', 'wound', 'cleansing' }, - { - npcHandler = npcHandler, - spellName = 'Intense Wound Cleansing', - price = 6000, - level = 80, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'wound', 'cleansing' }, - { - npcHandler = npcHandler, - spellName = 'Wound Cleansing', - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'levitate' }, - { - npcHandler = npcHandler, - spellName = 'Levitate', - price = 500, - level = 12, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'haste' }, - { - npcHandler = npcHandler, - spellName = 'Haste', - price = 600, - level = 14, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'brutal', 'strike' }, - { - npcHandler = npcHandler, - spellName = 'Brutal Strike', - price = 1000, - level = 16, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'charge' }, - { - npcHandler = npcHandler, - spellName = 'Charge', - price = 1300, - level = 25, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'whirlwind', 'throw' }, - { - npcHandler = npcHandler, - spellName = 'Whirlwind Throw', - price = 1500, - level = 28, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'groundshaker' }, - { - npcHandler = npcHandler, - spellName = 'Groundshaker', - price = 1500, - level = 33, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'fierce', 'berserk' }, - { - npcHandler = npcHandler, - spellName = 'Fierce Berserk', - price = 7500, - level = 90, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'berserk' }, - { - npcHandler = npcHandler, - spellName = 'Berserk', - price = 2500, - level = 35, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'inflict', 'wound' }, - { - npcHandler = npcHandler, - spellName = 'Inflict Wound', - price = 2500, - level = 40, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'cure', 'bleeding' }, - { - npcHandler = npcHandler, - spellName = 'Cure Bleeding', - price = 2500, - level = 45, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'intense', 'recovery' }, - { - npcHandler = npcHandler, - spellName = 'Intense Recovery', - price = 10000, - level = 100, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'recovery' }, - { - npcHandler = npcHandler, - spellName = 'Recovery', - price = 4000, - level = 50, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'front', 'sweep' }, - { - npcHandler = npcHandler, - spellName = 'Front Sweep', - price = 4000, - level = 70, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'annihilation' }, - { - npcHandler = npcHandler, - spellName = 'Annihilation', - price = 20000, - level = 110, - vocation = VOCATION.BASE_ID.KNIGHT - } -) +keywordHandler:addSpellKeyword({ "find", "person" }, { + npcHandler = npcHandler, + spellName = "Find Person", + price = 80, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "great", "light" }, { + npcHandler = npcHandler, + spellName = "Great Light", + price = 500, + level = 13, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "light" }, { + npcHandler = npcHandler, + spellName = "Light", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "magic", "rope" }, { + npcHandler = npcHandler, + spellName = "Magic Rope", + price = 200, + level = 9, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "poison" }, { + npcHandler = npcHandler, + spellName = "Cure Poison", + price = 150, + level = 10, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "intense", "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Intense Wound Cleansing", + price = 6000, + level = 80, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Wound Cleansing", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "levitate" }, { + npcHandler = npcHandler, + spellName = "Levitate", + price = 500, + level = 12, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "haste" }, { + npcHandler = npcHandler, + spellName = "Haste", + price = 600, + level = 14, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "brutal", "strike" }, { + npcHandler = npcHandler, + spellName = "Brutal Strike", + price = 1000, + level = 16, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "charge" }, { + npcHandler = npcHandler, + spellName = "Charge", + price = 1300, + level = 25, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "whirlwind", "throw" }, { + npcHandler = npcHandler, + spellName = "Whirlwind Throw", + price = 1500, + level = 28, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "groundshaker" }, { + npcHandler = npcHandler, + spellName = "Groundshaker", + price = 1500, + level = 33, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "fierce", "berserk" }, { + npcHandler = npcHandler, + spellName = "Fierce Berserk", + price = 7500, + level = 90, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "berserk" }, { + npcHandler = npcHandler, + spellName = "Berserk", + price = 2500, + level = 35, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "inflict", "wound" }, { + npcHandler = npcHandler, + spellName = "Inflict Wound", + price = 2500, + level = 40, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "bleeding" }, { + npcHandler = npcHandler, + spellName = "Cure Bleeding", + price = 2500, + level = 45, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "intense", "recovery" }, { + npcHandler = npcHandler, + spellName = "Intense Recovery", + price = 10000, + level = 100, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "recovery" }, { + npcHandler = npcHandler, + spellName = "Recovery", + price = 4000, + level = 50, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "front", "sweep" }, { + npcHandler = npcHandler, + spellName = "Front Sweep", + price = 4000, + level = 70, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "annihilation" }, { + npcHandler = npcHandler, + spellName = "Annihilation", + price = 20000, + level = 110, + vocation = VOCATION.BASE_ID.KNIGHT, +}) -keywordHandler:addKeyword({ 'healing', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Bruise Bane}', '{Cure Bleeding}', '{Wound Cleansing}', '{Cure Poison}', '{Intense Wound Cleansing}', '{Recovery}' and '{Intense Recovery}'." - } -) -keywordHandler:addKeyword({ 'attack', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = { "In this category I have '{Whirlwind Throw}', '{Groundshaker}', '{Berserk}' and '{Fierce Berserk}' as well as ...", "'{Brutal Strike}', '{Front Sweep}', '{Inflict Wound}' and '{Annihilation}'" } - } -) -keywordHandler:addKeyword({ 'support', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Light}', '{Find Person}', '{Magic Rope}', '{Levitate}', '{Haste}', '{Charge}' and '{Great Light}'." - } -) -keywordHandler:addKeyword({ 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'I can teach you {healing spells}, {attack spells} and {support spells}. What kind of spell do you wish to learn? You can also tell me for which level you would like to learn a spell, if you prefer that.' - } -) +keywordHandler:addKeyword({ "healing", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Bruise Bane}', '{Cure Bleeding}', '{Wound Cleansing}', '{Cure Poison}', '{Intense Wound Cleansing}', '{Recovery}' and '{Intense Recovery}'.", +}) +keywordHandler:addKeyword({ "attack", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = { "In this category I have '{Whirlwind Throw}', '{Groundshaker}', '{Berserk}' and '{Fierce Berserk}' as well as ...", "'{Brutal Strike}', '{Front Sweep}', '{Inflict Wound}' and '{Annihilation}'" }, +}) +keywordHandler:addKeyword({ "support", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Light}', '{Find Person}', '{Magic Rope}', '{Levitate}', '{Haste}', '{Charge}' and '{Great Light}'.", +}) +keywordHandler:addKeyword({ "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can teach you {healing spells}, {attack spells} and {support spells}. What kind of spell do you wish to learn? You can also tell me for which level you would like to learn a spell, if you prefer that.", +}) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) -- npcType registering the npcConfig table diff --git a/data-otservbr-global/npc/tulf.lua b/data-otservbr-global/npc/tulf.lua index 63e1818f943..c6e789d9d27 100644 --- a/data-otservbr-global/npc/tulf.lua +++ b/data-otservbr-global/npc/tulf.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 71 + lookType = 71, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/turvy.lua b/data-otservbr-global/npc/turvy.lua index 869f3b63ac8..675056b8679 100644 --- a/data-otservbr-global/npc/turvy.lua +++ b/data-otservbr-global/npc/turvy.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 52, lookLegs = 100, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Courageous adventurers, come buy your weapons and armors here!' } + { text = "Courageous adventurers, come buy your weapons and armors here!" }, } local keywordHandler = KeywordHandler:new() @@ -137,7 +137,7 @@ npcConfig.shop = { { itemName = "viking helmet", clientId = 3367, buy = 265 }, { itemName = "viking shield", clientId = 3431, buy = 260 }, { itemName = "war hammer", clientId = 3279, buy = 10000 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -148,7 +148,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/tylius.lua b/data-otservbr-global/npc/tylius.lua index b7ca4d5d61d..86dc27dfc1d 100644 --- a/data-otservbr-global/npc/tylius.lua +++ b/data-otservbr-global/npc/tylius.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/tyrias.lua b/data-otservbr-global/npc/tyrias.lua index 780606c6467..16dd2dd4ab7 100644 --- a/data-otservbr-global/npc/tyrias.lua +++ b/data-otservbr-global/npc/tyrias.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 95, lookFeet = 113, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,104 +51,128 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 6 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 6 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Tyrias) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Tyrias) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Tyrias, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Wooden Stake -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You don\'t even have that strange stake with you.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 10 and player:getItemCount(5941) == 0 end) - -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Brewster sent me a strange message about some strange hocus-pocus. I think it\'s nonsense, but since you have come that far, I\'ll play along. Are you ready?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 10 end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive my prayer: \'Your mind shall be a vessel for joy, light and wisdom\' - uh, wow, something happened. Well, I guess that\'s it, but next time if you need some mumbo jumbo rather go to Chondur.', reset = true }, - function(player) return player:getItemCount(5941) > 0 end, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 11) - player:removeItem(5941, 1) - player:addItem(5942, 1) - end -) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'You don\'t even have that strange stake with you.', reset = true }) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem, I have other things to do.', reset = true }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You don't even have that strange stake with you." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 10 and player:getItemCount(5941) == 0 +end) + +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Brewster sent me a strange message about some strange hocus-pocus. I think it's nonsense, but since you have come that far, I'll play along. Are you ready?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 10 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive my prayer: 'Your mind shall be a vessel for joy, light and wisdom' - uh, wow, something happened. Well, I guess that's it, but next time if you need some mumbo jumbo rather go to Chondur.", reset = true }, function(player) + return player:getItemCount(5941) > 0 +end, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 11) + player:removeItem(5941, 1) + player:addItem(5942, 1) +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "You don't even have that strange stake with you.", reset = true }) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem, I have other things to do.", reset = true }) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'A blessed stake? I don\'t believe in things like that. If anyone does, it\'s probably old Quentin.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) < 10 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'I won\'t do that rubbish again. Go pester Chondur with your hocus-pocus.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 11 end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "A blessed stake? I don't believe in things like that. If anyone does, it's probably old Quentin." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) < 10 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "I won't do that rubbish again. Go pester Chondur with your hocus-pocus." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 11 +end) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/ubaid.lua b/data-otservbr-global/npc/ubaid.lua index 990903c376d..f6fd3e814af 100644 --- a/data-otservbr-global/npc/ubaid.lua +++ b/data-otservbr-global/npc/ubaid.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 51 + lookType = 51, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,22 +50,22 @@ local function greetCallback(npc, creature, message) local playerId = player:getId() if not MsgContains(message, "djanni'hah") and player:getStorageValue(Storage.DjinnWar.Faction.EfreetDoor) ~= 1 then - npcHandler:say('Shove off, little one! Humans are not welcome here, |PLAYERNAME|!', npc, creature) + npcHandler:say("Shove off, little one! Humans are not welcome here, |PLAYERNAME|!", npc, creature) return false end if player:getStorageValue(Storage.DjinnWar.Faction.Greeting) == -1 then npcHandler:say({ - 'Hahahaha! ...', - '|PLAYERNAME|, that almost sounded like the word of greeting. Humans - cute they are!' + "Hahahaha! ...", + "|PLAYERNAME|, that almost sounded like the word of greeting. Humans - cute they are!", }, npc, creature) return false end if player:getStorageValue(Storage.DjinnWar.Faction.EfreetDoor) ~= 1 then - npcHandler:setMessage(MESSAGE_GREET, 'What? You know the word, |PLAYERNAME|? All right then - I won\'t kill you. At least, not now. What brings you {here}?') + npcHandler:setMessage(MESSAGE_GREET, "What? You know the word, |PLAYERNAME|? All right then - I won't kill you. At least, not now. What brings you {here}?") else - npcHandler:setMessage(MESSAGE_GREET, 'Still alive, |PLAYERNAME|? What brings you {here}?') + npcHandler:setMessage(MESSAGE_GREET, "Still alive, |PLAYERNAME|? What brings you {here}?") end return true end @@ -78,71 +78,72 @@ local function creatureSayCallback(npc, creature, type, message) return false end - -- To Appease the Mighty Quest if MsgContains(message, "mission") and player:getStorageValue(Storage.TibiaTales.ToAppeaseTheMightyQuest) == 2 then npcHandler:say({ - 'You have the smell of the Marid on you. Tell me who sent you?' }, npc, creature) + "You have the smell of the Marid on you. Tell me who sent you?", + }, npc, creature) npcHandler:setTopic(playerId, 9) elseif MsgContains(message, "kazzan") and npcHandler:getTopic(playerId) == 9 then npcHandler:say({ - 'And he is sending a worm like you to us!?! The mighty Efreet!! Tell him that we won\'t be part in his \'great\' plans and now LEAVE!! ...', - '...or do you want to join us and fight those stinking Marid who claim themselves to be noble and righteous?!? Just let me know.' }, npc, creature) + "And he is sending a worm like you to us!?! The mighty Efreet!! Tell him that we won't be part in his 'great' plans and now LEAVE!! ...", + "...or do you want to join us and fight those stinking Marid who claim themselves to be noble and righteous?!? Just let me know.", + }, npc, creature) player:setStorageValue(Storage.TibiaTales.ToAppeaseTheMightyQuest, player:getStorageValue(Storage.TibiaTales.ToAppeaseTheMightyQuest) + 1) end - if MsgContains(message, 'passage') then + if MsgContains(message, "passage") then if player:getStorageValue(Storage.DjinnWar.Faction.EfreetDoor) ~= 1 then npcHandler:say({ - 'Only the mighty Efreet, the true djinn of Tibia, may enter Mal\'ouquah! ...', - 'All Marid and little worms like yourself should leave now or something bad may happen. Am I right?' + "Only the mighty Efreet, the true djinn of Tibia, may enter Mal'ouquah! ...", + "All Marid and little worms like yourself should leave now or something bad may happen. Am I right?", }, npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('You already pledged loyalty to king Malor!', npc, creature) + npcHandler:say("You already pledged loyalty to king Malor!", npc, creature) end - elseif MsgContains(message, 'here') then + elseif MsgContains(message, "here") then npcHandler:say({ - 'Only the mighty Efreet, the true djinn of Tibia, may enter Mal\'ouquah! ...', - 'All Marid and little worms like yourself should leave now or something bad may happen. Am I right?' + "Only the mighty Efreet, the true djinn of Tibia, may enter Mal'ouquah! ...", + "All Marid and little worms like yourself should leave now or something bad may happen. Am I right?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then - npcHandler:say('Of course. Then don\'t waste my time and shove off.', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("Of course. Then don't waste my time and shove off.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if player:getStorageValue(Storage.DjinnWar.Faction.MaridDoor) == 1 then - npcHandler:say('Who do you think you are? A Marid? Shove off you worm!', npc, creature) + npcHandler:say("Who do you think you are? A Marid? Shove off you worm!", npc, creature) npcHandler:setTopic(playerId, 0) else npcHandler:say({ - 'Of cour... Huh!? No!? I can\'t believe it! ...', - 'You... you got some nerves... Hmm. ...', - 'Maybe we have some use for someone like you. Would you be interested in working for us. Helping to fight the Marid?' + "Of cour... Huh!? No!? I can't believe it! ...", + "You... you got some nerves... Hmm. ...", + "Maybe we have some use for someone like you. Would you be interested in working for us. Helping to fight the Marid?", }, npc, creature) npcHandler:setTopic(playerId, 2) end end elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then - npcHandler:say('So you pledge loyalty to king Malor and you are willing to never ever set foot on Marid\'s territory, unless you want to kill them? Yes?', npc, creature) + if MsgContains(message, "yes") then + npcHandler:say("So you pledge loyalty to king Malor and you are willing to never ever set foot on Marid's territory, unless you want to kill them? Yes?", npc, creature) npcHandler:setTopic(playerId, 3) - elseif MsgContains(message, 'no') then - npcHandler:say('Of course. Then don\'t waste my time and shove off.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Of course. Then don't waste my time and shove off.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 3 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then npcHandler:say({ - 'Well then - welcome to Mal\'ouquah. ...', - 'Go now to general Baa\'leal and don\'t forget to greet him correctly! ...', - 'And don\'t touch anything!' + "Well then - welcome to Mal'ouquah. ...", + "Go now to general Baa'leal and don't forget to greet him correctly! ...", + "And don't touch anything!", }, npc, creature) player:setStorageValue(Storage.DjinnWar.Faction.EfreetDoor, 1) player:setStorageValue(Storage.DjinnWar.Faction.Greeting, 0) - elseif MsgContains(message, 'no') then - npcHandler:say('Of course. Then don\'t waste my time and shove off.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Of course. Then don't waste my time and shove off.", npc, creature) end npcHandler:setTopic(playerId, 0) end @@ -152,8 +153,8 @@ end -- Greeting keywordHandler:addGreetKeyword({ "djanni'hah" }, { npcHandler = npcHandler, text = "Shove off, little one! Humans are not welcome here, |PLAYERNAME|" }) -npcHandler:setMessage(MESSAGE_FAREWELL, 'Farewell human!') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Farewell human!') +npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell human!") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Farewell human!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/ukea.lua b/data-otservbr-global/npc/ukea.lua index 8724aaa66ad..222d26ba4e3 100644 --- a/data-otservbr-global/npc/ukea.lua +++ b/data-otservbr-global/npc/ukea.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 78, lookBody = 39, lookLegs = 101, - lookFeet = 58 + lookFeet = 58, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -153,7 +153,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -164,7 +164,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/ula.lua b/data-otservbr-global/npc/ula.lua index 2b366a8a190..208bf2f5830 100644 --- a/data-otservbr-global/npc/ula.lua +++ b/data-otservbr-global/npc/ula.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/ulala.lua b/data-otservbr-global/npc/ulala.lua index 19298c16e33..46582cfc734 100644 --- a/data-otservbr-global/npc/ulala.lua +++ b/data-otservbr-global/npc/ulala.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 57, lookBody = 57, lookLegs = 57, - lookFeet = 57 + lookFeet = 57, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -62,7 +62,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "The great hunt! About to begin, but gods are not in favour of us yet. We need all help we get. We please Krunus with special nature dance. ...", "You seen Krunus altar south in camp, on mountain top? This is where dance is. If you do right steps Krunus will give you sign. If wrong, he not pleased. ...", - "Do Krunus dance for us! Step and dance and turn around! You will know when you do good. Make {Krunus} happy and support our great hunt!" + "Do Krunus dance for us! Step and dance and turn around! You will know when you do good. Make {Krunus} happy and support our great hunt!", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.UnnaturalSelection.Questline) == 6 then @@ -72,7 +72,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "You born dancer! Krunus is pleased and support the great hunt. But he easy to please! Pandor much harder. We weak, so he sad about us. ...", "Maybe we can please with sacrifice of body parts of our enemies. But you need help us get it! We much too weak. ...", - "If you bring us 5 teeth of green men, 5 skin of horned ones and 5 skin of snakemen that already be good. Please help tribe make Pandor happy!" + "If you bring us 5 teeth of green men, 5 skin of horned ones and 5 skin of snakemen that already be good. Please help tribe make Pandor happy!", }, npc, creature) player:setStorageValue(Storage.UnnaturalSelection.Questline, 8) player:setStorageValue(Storage.UnnaturalSelection.Mission04, 1) --Questlog, Unnatural Selection Quest "Mission 4: Bits and Pieces" @@ -84,7 +84,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "We need make sure Fasuon is on our side. There is laaaaaaaarge crystal on top of mountain. Don't know where come from, was there before us. Problem is - way is infested with creatures! ...", "Creatures from the other side of mountain. Bony! Scary! We too weak to go through there, can just run and hope to survive.. but you do better! ...", - "Please find great crystal of Fasuon and pray there for his support!" + "Please find great crystal of Fasuon and pray there for his support!", }, npc, creature) player:setStorageValue(Storage.UnnaturalSelection.Questline, 10) player:setStorageValue(Storage.UnnaturalSelection.Mission05, 1) --Questlog, Unnatural Selection Quest "Mission 5: Ray of Light" @@ -100,7 +100,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.UnnaturalSelection.Questline) == 12 then npcHandler:say({ "Uzroth very easy to anger. You been great help so far but me think that need to pray to Uzroth meself. Only me understand what he wants at time and he is veeeeeery moody. Cannot risk to make angry! ...", - "So me will do when you gone. But me thank you very much. Go speak Lazaran and tell the gods are pleased now." + "So me will do when you gone. But me thank you very much. Go speak Lazaran and tell the gods are pleased now.", }, npc, creature) player:setStorageValue(Storage.UnnaturalSelection.Questline, 13) player:setStorageValue(Storage.UnnaturalSelection.Mission06, 1) --Questlog, Unnatural Selection Quest "Mission 6: Firewater Burn" diff --git a/data-otservbr-global/npc/ulrik.lua b/data-otservbr-global/npc/ulrik.lua index f01e0ca5b0f..7596431e1ab 100644 --- a/data-otservbr-global/npc/ulrik.lua +++ b/data-otservbr-global/npc/ulrik.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 70, lookLegs = 97, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -120,7 +120,7 @@ npcConfig.shop = { { itemName = "viking helmet", clientId = 3367, buy = 265 }, { itemName = "viking shield", clientId = 3431, buy = 260 }, { itemName = "war hammer", clientId = 3279, buy = 10000 }, - { itemName = "wooden shield", clientId = 3412, buy = 15 } + { itemName = "wooden shield", clientId = 3412, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -131,7 +131,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/umar.lua b/data-otservbr-global/npc/umar.lua index e6969431342..51865a19cbb 100644 --- a/data-otservbr-global/npc/umar.lua +++ b/data-otservbr-global/npc/umar.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 80 + lookType = 80, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -49,27 +49,27 @@ local function greetCallback(npc, creature, message) local player = Player(creature) local playerId = player:getId() - if not MsgContains(message, 'djanni\'hah') and player:getStorageValue(Storage.DjinnWar.Faction.MaridDoor) ~= 1 then - npcHandler:say('Whoa! A human! This is no place for you, |PLAYERNAME|. Go and play somewhere else.', npc, creature) + if not MsgContains(message, "djanni'hah") and player:getStorageValue(Storage.DjinnWar.Faction.MaridDoor) ~= 1 then + npcHandler:say("Whoa! A human! This is no place for you, |PLAYERNAME|. Go and play somewhere else.", npc, creature) return false end if player:getStorageValue(Storage.DjinnWar.Faction.Greeting) == -1 then npcHandler:say({ - 'Hahahaha! ...', - '|PLAYERNAME|, that almost sounded like the word of greeting. Humans - cute they are!' + "Hahahaha! ...", + "|PLAYERNAME|, that almost sounded like the word of greeting. Humans - cute they are!", }, npc, creature) return false end if player:getStorageValue(Storage.DjinnWar.Faction.MaridDoor) ~= 1 then npcHandler:setMessage(MESSAGE_GREET, { - 'Whoa? You know the word! Amazing, |PLAYERNAME|! ...', - 'I should go and tell Fa\'hradin. ...', - 'Well. Why are you here anyway, |PLAYERNAME|?' + "Whoa? You know the word! Amazing, |PLAYERNAME|! ...", + "I should go and tell Fa'hradin. ...", + "Well. Why are you here anyway, |PLAYERNAME|?", }) else - npcHandler:setMessage(MESSAGE_GREET, '|PLAYERNAME|! How\'s it going these days? What brings you {here}?') + npcHandler:setMessage(MESSAGE_GREET, "|PLAYERNAME|! How's it going these days? What brings you {here}?") end return true end @@ -82,53 +82,54 @@ local function creatureSayCallback(npc, creature, type, message) return false end - -- To Appease the Mighty Quest if MsgContains(message, "mission") and player:getStorageValue(Storage.TibiaTales.ToAppeaseTheMightyQuest) == 1 then npcHandler:say({ - 'I should go and tell Fa\'hradin. ...', - 'I am impressed you know our address of welcome! I honour that. So tell me who sent you on a mission to our fortress?' }, npc, creature) + "I should go and tell Fa'hradin. ...", + "I am impressed you know our address of welcome! I honour that. So tell me who sent you on a mission to our fortress?", + }, npc, creature) npcHandler:setTopic(playerId, 9) elseif MsgContains(message, "kazzan") and npcHandler:getTopic(playerId) == 9 then npcHandler:say({ - 'How dare you lie to me?!? The caliph should choose his envoys more carefully. We will not accept his peace-offering ...', - '...but we are always looking for support in our fight against the evil Efreets. Tell me if you would like to join our fight.' }, npc, creature) + "How dare you lie to me?!? The caliph should choose his envoys more carefully. We will not accept his peace-offering ...", + "...but we are always looking for support in our fight against the evil Efreets. Tell me if you would like to join our fight.", + }, npc, creature) player:setStorageValue(Storage.TibiaTales.ToAppeaseTheMightyQuest, player:getStorageValue(Storage.TibiaTales.ToAppeaseTheMightyQuest) + 1) end - if MsgContains(message, 'passage') then + if MsgContains(message, "passage") then if player:getStorageValue(Storage.DjinnWar.Faction.MaridDoor) ~= 1 then npcHandler:say({ - 'If you want to enter our fortress you have to become one of us and fight the Efreet. ...', - 'So, are you willing to do so?' + "If you want to enter our fortress you have to become one of us and fight the Efreet. ...", + "So, are you willing to do so?", }, npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('You already have the permission to enter Ashta\'daramai.', npc, creature) + npcHandler:say("You already have the permission to enter Ashta'daramai.", npc, creature) end elseif npcHandler:getTopic(playerId) == 1 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if player:getStorageValue(Storage.DjinnWar.Faction.EfreetDoor) ~= 1 then - npcHandler:say('Are you sure? You pledge loyalty to king Gabel, who is... you know. And you are willing to never ever set foot on Efreets\' territory, unless you want to kill them? Yes?', npc, creature) + npcHandler:say("Are you sure? You pledge loyalty to king Gabel, who is... you know. And you are willing to never ever set foot on Efreets' territory, unless you want to kill them? Yes?", npc, creature) npcHandler:setTopic(playerId, 2) else - npcHandler:say('I don\'t believe you! You better go now.', npc, creature) + npcHandler:say("I don't believe you! You better go now.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') then - npcHandler:say('This isn\'t your war anyway, human.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("This isn't your war anyway, human.", npc, creature) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 2 then - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then npcHandler:say({ - 'Oh. Ok. Welcome then. You may pass. ...', - 'And don\'t forget to kill some Efreets, now and then.' + "Oh. Ok. Welcome then. You may pass. ...", + "And don't forget to kill some Efreets, now and then.", }, npc, creature) player:setStorageValue(Storage.DjinnWar.Faction.MaridDoor, 1) player:setStorageValue(Storage.DjinnWar.Faction.Greeting, 0) - elseif MsgContains(message, 'no') then - npcHandler:say('This isn\'t your war anyway, human.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("This isn't your war anyway, human.", npc, creature) end npcHandler:setTopic(playerId, 0) end @@ -138,8 +139,8 @@ end -- Greeting keywordHandler:addGreetKeyword({ "djanni'hah" }, { npcHandler = npcHandler, text = "Whoa! A human! This is no place for you, |PLAYERNAME|. Go and play somewhere else" }) -npcHandler:setMessage(MESSAGE_FAREWELL, 'Aaaa -tention!') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Aaaa -tention!') +npcHandler:setMessage(MESSAGE_FAREWELL, "Aaaa -tention!") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Aaaa -tention!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) diff --git a/data-otservbr-global/npc/uncle.lua b/data-otservbr-global/npc/uncle.lua index e108e09e95e..cfe4b85d5f2 100644 --- a/data-otservbr-global/npc/uncle.lua +++ b/data-otservbr-global/npc/uncle.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 20, lookFeet = 95, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,49 +57,49 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then player:setStorageValue(Storage.SecretService.Quest, 1) player:addAchievement("Secret Agent") - npcHandler:say('Then welcome to the family.', npc, creature) + npcHandler:say("Then welcome to the family.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 2 then player:setStorageValue(Storage.SecretService.AVINMission01, 4) player:setStorageValue(Storage.SecretService.Quest, 3) - npcHandler:say('I hope you did not make this little pest too nervous. He isn\'t serving us too well by hiding under some stone or something like that. However, nicely done for your first job.', npc, creature) + npcHandler:say("I hope you did not make this little pest too nervous. He isn't serving us too well by hiding under some stone or something like that. However, nicely done for your first job.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then if player:removeItem(403, 1) then player:setStorageValue(Storage.SecretService.AVINMission02, 2) player:setStorageValue(Storage.SecretService.Quest, 5) - npcHandler:say('Ah, yes. This will be a most interesting lecture.', npc, creature) + npcHandler:say("Ah, yes. This will be a most interesting lecture.", npc, creature) else - npcHandler:say('Please bring me the file AH-X17L89.', npc, creature) + npcHandler:say("Please bring me the file AH-X17L89.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 4 then player:setStorageValue(Storage.SecretService.AVINMission03, 4) player:setStorageValue(Storage.SecretService.Quest, 7) - npcHandler:say('Does it not warm up your heart if you can bring a little joy to the people while doing your job? Well, don\'t get carried away, most part of your job is not warming up hearts but tearing them out.', npc, creature) + npcHandler:say("Does it not warm up your heart if you can bring a little joy to the people while doing your job? Well, don't get carried away, most part of your job is not warming up hearts but tearing them out.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 5 then player:setStorageValue(Storage.SecretService.AVINMission04, 3) player:setStorageValue(Storage.SecretService.Quest, 9) - npcHandler:say('Good work getting rid of that nuisance.', npc, creature) + npcHandler:say("Good work getting rid of that nuisance.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 6 then if player:removeItem(406, 1) then player:setStorageValue(Storage.SecretService.AVINMission05, 2) player:setStorageValue(Storage.SecretService.Quest, 11) - npcHandler:say('Fine, fine. This will serve us quite well. Ah, don\'t give me that look... you are not that stupid, are you?', npc, creature) + npcHandler:say("Fine, fine. This will serve us quite well. Ah, don't give me that look... you are not that stupid, are you?", npc, creature) else - npcHandler:say('Come back when you\'ve found the ring.', npc, creature) + npcHandler:say("Come back when you've found the ring.", npc, creature) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 7 then player:setStorageValue(Storage.SecretService.AVINMission06, 3) player:setStorageValue(Storage.SecretService.Quest, 13) - npcHandler:say('Even if the present has not improved our relations, the weapons will enable the barbarians to put more pressure on Svargrond and Carlin. So in any case we profited from the present.', npc, creature) + npcHandler:say("Even if the present has not improved our relations, the weapons will enable the barbarians to put more pressure on Svargrond and Carlin. So in any case we profited from the present.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 8 then if player:removeItem(396, 1) then @@ -108,109 +108,109 @@ local function creatureSayCallback(npc, creature, type, message) player:addAchievement("Top AVIN Agent") player:addItem(899, 1) npcHandler:say({ - 'You have proven yourself as very efficient. The future may hold great things for you in store ...', - 'Take this token of gratitude. I hope you can use well what you will find inside!' + "You have proven yourself as very efficient. The future may hold great things for you in store ...", + "Take this token of gratitude. I hope you can use well what you will find inside!", }, npc, creature) else - npcHandler:say('Please bring me proof of the mad technomancers defeat!', npc, creature) + npcHandler:say("Please bring me proof of the mad technomancers defeat!", npc, creature) end npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') then - npcHandler:say('As you wish.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("As you wish.", npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'join') then + elseif MsgContains(message, "join") then if player:getStorageValue(Storage.SecretService.Quest) < 1 then npcHandler:say({ - 'Well, well, well! As you might know, we are entrusted by the Venorean tradesmen to ensure the safety of their ventures ...', - 'This task often puts our representatives in rather dangerous and challenging situations. On the other hand, you can expect a generous compensation for your efforts on our behalf...', - 'Just keep in mind though that we expect quick action and that we are rather intolerant to needless questions and moral doubts ...', - 'If you join our ranks, you cannot join the service of another city! So do I understand you correctly, you want to join our small business?' + "Well, well, well! As you might know, we are entrusted by the Venorean tradesmen to ensure the safety of their ventures ...", + "This task often puts our representatives in rather dangerous and challenging situations. On the other hand, you can expect a generous compensation for your efforts on our behalf...", + "Just keep in mind though that we expect quick action and that we are rather intolerant to needless questions and moral doubts ...", + "If you join our ranks, you cannot join the service of another city! So do I understand you correctly, you want to join our small business?", }, npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'mission') then + elseif MsgContains(message, "mission") then if player:getStorageValue(Storage.SecretService.Quest) == 1 and player:getStorageValue(Storage.SecretService.TBIMission01) < 1 and player:getStorageValue(Storage.SecretService.CGBMission01) < 1 then player:setStorageValue(Storage.SecretService.Quest, 2) player:setStorageValue(Storage.SecretService.AVINMission01, 1) player:addItem(402, 1) - npcHandler:say('Let\'s start with a rather simple job. There is a contact in Thais with that we need to get in touch again. Deliver this note to Gamel in Thais. Get an answer from him. If he is a bit reluctant, be \'persuasive\'.', npc, creature) + npcHandler:say("Let's start with a rather simple job. There is a contact in Thais with that we need to get in touch again. Deliver this note to Gamel in Thais. Get an answer from him. If he is a bit reluctant, be 'persuasive'.", npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.AVINMission01) == 3 then - npcHandler:say('Do you have news to make old Uncle happy?', npc, creature) + npcHandler:say("Do you have news to make old Uncle happy?", npc, creature) npcHandler:setTopic(playerId, 2) elseif player:getStorageValue(Storage.SecretService.AVINMission01) == 4 and player:getStorageValue(Storage.SecretService.Quest) == 3 then player:setStorageValue(Storage.SecretService.Quest, 4) player:setStorageValue(Storage.SecretService.AVINMission02, 1) npcHandler:say({ - 'Our Thaian allies are sometimes a bit forgetful. For this reason we are not always informed timely about certain activities. We won\'t insult our great king by pointing out this flaw ...', - 'Still, we are in dire need of these information so we are forced to take action on our own. Travel to the Thaian castle and \'find\' the documents we need. They have the file name AH-X17L89. ...', - 'Now go to Thaian castle and get the File.' + "Our Thaian allies are sometimes a bit forgetful. For this reason we are not always informed timely about certain activities. We won't insult our great king by pointing out this flaw ...", + "Still, we are in dire need of these information so we are forced to take action on our own. Travel to the Thaian castle and 'find' the documents we need. They have the file name AH-X17L89. ...", + "Now go to Thaian castle and get the File.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.AVINMission02) == 1 then - npcHandler:say('Do you have news to make old Uncle happy?', npc, creature) + npcHandler:say("Do you have news to make old Uncle happy?", npc, creature) npcHandler:setTopic(playerId, 3) elseif player:getStorageValue(Storage.SecretService.AVINMission02) == 2 and player:getStorageValue(Storage.SecretService.Quest) == 5 then player:setStorageValue(Storage.SecretService.Quest, 6) player:setStorageValue(Storage.SecretService.AVINMission03, 1) player:addItem(404, 1) npcHandler:say({ - 'The oppression of Carlin\'s men by their lunatic women is unbearable to some of our authorities. We see it as our honourable duty to support the male resistance in Carlin ...', - 'The poor guys have some speakeasy in the sewers. Bring them this barrel of beer with our kind regards to strengthen their resistance.' + "The oppression of Carlin's men by their lunatic women is unbearable to some of our authorities. We see it as our honourable duty to support the male resistance in Carlin ...", + "The poor guys have some speakeasy in the sewers. Bring them this barrel of beer with our kind regards to strengthen their resistance.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.AVINMission03) == 3 then - npcHandler:say('Do you have news to make old Uncle happy?', npc, creature) + npcHandler:say("Do you have news to make old Uncle happy?", npc, creature) npcHandler:setTopic(playerId, 4) elseif player:getStorageValue(Storage.SecretService.AVINMission03) == 4 and player:getStorageValue(Storage.SecretService.Quest) == 7 then player:setStorageValue(Storage.SecretService.Quest, 8) player:setStorageValue(Storage.SecretService.AVINMission04, 1) npcHandler:say({ - 'As you know, our lovely city is a bastion of civilisation surrounded by numerous hazards. The nearby Plains of Havoc and the hostile elven town Shadowthorn are only a few of the obstacles we have to overcome on an almost daily basis ...', - 'Against all odds, we managed to gain some modest profit by exploiting these circumstances in one way or the other. Recently though, one of our neighbours went too far...', - 'In some ruin in the midst of the Green Claw Swamp, a dark knight had fancied himself as the lord of the swamp for quite a while ...', - 'For some years, we had some sort of gentleman\'s agreement. In exchange for some supplies and luxuries, the deranged knight used his ominous influence over the local bonelord species to supply us with ... certain goods ...', - 'However, lately the black knight has proven himself to be no gentleman at all. In a fit of unprovoked rage, he slew our emissary and almost all of his henchmen ...', - 'Even though we can live with this loss, it becomes obvious that the knight\'s madness gets worse which makes him unbearable as a neighbour. Find him in his hideout in the Green Claw Swamp and get rid of him.' + "As you know, our lovely city is a bastion of civilisation surrounded by numerous hazards. The nearby Plains of Havoc and the hostile elven town Shadowthorn are only a few of the obstacles we have to overcome on an almost daily basis ...", + "Against all odds, we managed to gain some modest profit by exploiting these circumstances in one way or the other. Recently though, one of our neighbours went too far...", + "In some ruin in the midst of the Green Claw Swamp, a dark knight had fancied himself as the lord of the swamp for quite a while ...", + "For some years, we had some sort of gentleman's agreement. In exchange for some supplies and luxuries, the deranged knight used his ominous influence over the local bonelord species to supply us with ... certain goods ...", + "However, lately the black knight has proven himself to be no gentleman at all. In a fit of unprovoked rage, he slew our emissary and almost all of his henchmen ...", + "Even though we can live with this loss, it becomes obvious that the knight's madness gets worse which makes him unbearable as a neighbour. Find him in his hideout in the Green Claw Swamp and get rid of him.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.AVINMission04) == 2 then - npcHandler:say('Do you have news to make old Uncle happy?', npc, creature) + npcHandler:say("Do you have news to make old Uncle happy?", npc, creature) npcHandler:setTopic(playerId, 5) elseif player:getStorageValue(Storage.SecretService.AVINMission04) == 3 and player:getStorageValue(Storage.SecretService.Quest) == 9 then player:setStorageValue(Storage.SecretService.Quest, 10) player:setStorageValue(Storage.SecretService.AVINMission05, 1) - npcHandler:say('I need you to locate a lost ring on the Isle of the Kings for me, get back to me once you have it.', npc, creature) + npcHandler:say("I need you to locate a lost ring on the Isle of the Kings for me, get back to me once you have it.", npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.AVINMission05) == 1 then - npcHandler:say('Do you have news to make old Uncle happy?', npc, creature) + npcHandler:say("Do you have news to make old Uncle happy?", npc, creature) npcHandler:setTopic(playerId, 6) elseif player:getStorageValue(Storage.SecretService.AVINMission05) == 2 and player:getStorageValue(Storage.SecretService.Quest) == 11 then player:setStorageValue(Storage.SecretService.Quest, 12) player:setStorageValue(Storage.SecretService.AVINMission06, 1) player:addItem(405, 1) npcHandler:say({ - 'We try to establish new trade agreements with various potential customers. Sometimes we have to offer some presents in advance to ensure that trade is prospering and flourishing. It will be your task to deliver one of those little presents ...', - 'The northern barbarians are extremely hostile to us. The ones living in Svargrond are poisoned by the lies of agitators from Carlin. The barbarians that are also known as raiders are another story though ...', - 'Of course they are extremely wild and hostile but we believe that we will sooner or later profit from it when we are able to improve our relations. Please deliver this chest of weapons to the barbarians as a sign of our good will ...', - 'Unfortunately, most of them will attack you on sight. It will probably take some time until you find somebody that is willing to talk to you and to accept the weapons.' + "We try to establish new trade agreements with various potential customers. Sometimes we have to offer some presents in advance to ensure that trade is prospering and flourishing. It will be your task to deliver one of those little presents ...", + "The northern barbarians are extremely hostile to us. The ones living in Svargrond are poisoned by the lies of agitators from Carlin. The barbarians that are also known as raiders are another story though ...", + "Of course they are extremely wild and hostile but we believe that we will sooner or later profit from it when we are able to improve our relations. Please deliver this chest of weapons to the barbarians as a sign of our good will ...", + "Unfortunately, most of them will attack you on sight. It will probably take some time until you find somebody that is willing to talk to you and to accept the weapons.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.AVINMission06) == 2 then - npcHandler:say('Do you have news to make old Uncle happy?', npc, creature) + npcHandler:say("Do you have news to make old Uncle happy?", npc, creature) npcHandler:setTopic(playerId, 7) elseif player:getStorageValue(Storage.SecretService.AVINMission06) == 3 and player:getStorageValue(Storage.SecretService.Quest) == 13 then player:setStorageValue(Storage.SecretService.Quest, 14) player:setStorageValue(Storage.SecretService.Mission07, 1) npcHandler:say({ - 'Some dwarven criminal called Blowbeard dares to blackmail our city. He threatens to destroy the whole city and demands an insane amount of gold ...', - 'Of course we are not willing to give him a single gold coin. It will be your job to get rid of this problem. Go and kill this infamous dwarf ...', - 'His laboratory is near the technomancer hall. Bring me his beard as proof of his demise.' + "Some dwarven criminal called Blowbeard dares to blackmail our city. He threatens to destroy the whole city and demands an insane amount of gold ...", + "Of course we are not willing to give him a single gold coin. It will be your job to get rid of this problem. Go and kill this infamous dwarf ...", + "His laboratory is near the technomancer hall. Bring me his beard as proof of his demise.", }, npc, creature) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.SecretService.AVINMission06) == 3 and player:getStorageValue(Storage.SecretService.Mission07) == 1 then - npcHandler:say('Do you have news to make old Uncle happy?', npc, creature) + npcHandler:say("Do you have news to make old Uncle happy?", npc, creature) npcHandler:setTopic(playerId, 8) end end diff --git a/data-otservbr-global/npc/undal.lua b/data-otservbr-global/npc/undal.lua index 3804e63780c..786487fea2c 100644 --- a/data-otservbr-global/npc/undal.lua +++ b/data-otservbr-global/npc/undal.lua @@ -17,11 +17,11 @@ npcConfig.outfit = { lookLegs = 49, lookFeet = 87, lookAddons = 0, - lookMount = 0 + lookMount = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/urkalio.lua b/data-otservbr-global/npc/urkalio.lua index 6331e9746be..bb0e79010b8 100644 --- a/data-otservbr-global/npc/urkalio.lua +++ b/data-otservbr-global/npc/urkalio.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 59, lookLegs = 120, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,7 +61,7 @@ npcConfig.shop = { { itemName = "mug of beer", clientId = 2880, buy = 2, count = 3 }, { itemName = "mug of lemonade", clientId = 2880, buy = 2, count = 12 }, { itemName = "mug of water", clientId = 2880, buy = 1, count = 1 }, - { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 } + { itemName = "mug of wine", clientId = 2880, buy = 3, count = 2 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -72,7 +72,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/urks_the_mute.lua b/data-otservbr-global/npc/urks_the_mute.lua index 77f6cf049b9..0ac2ec82ee2 100644 --- a/data-otservbr-global/npc/urks_the_mute.lua +++ b/data-otservbr-global/npc/urks_the_mute.lua @@ -11,15 +11,14 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 66 + lookType = 66, } npcConfig.flags = { - floorchange = false + floorchange = false, } -npcConfig.voices = { -} +npcConfig.voices = {} local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -54,25 +53,26 @@ local function addTravelKeyword(keyword, text, cost, discount, destination, cond if condition then keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, - text = { 'Well, you might be just the hero they need there. To tell you the truth, some our most reliable ore mines have started to run low. ...', - 'This is why we developed new steamship technologies to be able to further explore and cartograph the great subterraneous rivers. Our brothers have established a base on a continent far, far away. ...', - 'We call that the far, far away base. But since it will hopefully become a flourishing mine one day, most of us started to call it {Farmine}. The dwarfs there could really use some help right now.' - } + text = { + "Well, you might be just the hero they need there. To tell you the truth, some our most reliable ore mines have started to run low. ...", + "This is why we developed new steamship technologies to be able to further explore and cartograph the great subterraneous rivers. Our brothers have established a base on a continent far, far away. ...", + "We call that the far, far away base. But since it will hopefully become a flourishing mine one day, most of us started to call it {Farmine}. The dwarfs there could really use some help right now.", + }, }, condition, action) end local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = { text[1] }, cost = cost, discount = discount }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = text[2], cost = cost, discount = discount, destination = destination }) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = text[3], reset = true }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = text[2], cost = cost, discount = discount, destination = destination }) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = text[3], reset = true }) end -addTravelKeyword('kazordoon', { '', '', '' }, 200, 'postman', Position(32660, 31957, 15)) -addTravelKeyword('cormaya', { '', '', '' }, 200, 'postman', Position(33311, 31989, 15)) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = ' ' }) +addTravelKeyword("kazordoon", { "", "", "" }, 200, "postman", Position(32660, 31957, 15)) +addTravelKeyword("cormaya", { "", "", "" }, 200, "postman", Position(33311, 31989, 15)) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = " " }) -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, |PLAYERNAME|! Lovely steamboat, ain\'t it? I can even offer you a {passage} if you like.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Until next time.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Until next time.') +npcHandler:setMessage(MESSAGE_GREET, "Welcome, |PLAYERNAME|! Lovely steamboat, ain't it? I can even offer you a {passage} if you like.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Until next time.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Until next time.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/ursula.lua b/data-otservbr-global/npc/ursula.lua index c53a211446c..f635b09b19d 100644 --- a/data-otservbr-global/npc/ursula.lua +++ b/data-otservbr-global/npc/ursula.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 54 + lookType = 54, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/uso.lua b/data-otservbr-global/npc/uso.lua index cf19fe59f71..7b606a6cb46 100644 --- a/data-otservbr-global/npc/uso.lua +++ b/data-otservbr-global/npc/uso.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 59, lookLegs = 96, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,220 +50,170 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addSpellKeyword({ 'find', 'person' }, - { - npcHandler = npcHandler, - spellName = 'Find Person', - price = 80, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'great', 'light' }, - { - npcHandler = npcHandler, - spellName = 'Great Light', - price = 500, - level = 13, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'light' }, - { - npcHandler = npcHandler, - spellName = 'Light', - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'magic', 'rope' }, - { - npcHandler = npcHandler, - spellName = 'Magic Rope', - price = 200, - level = 9, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'cure', 'poison' }, - { - npcHandler = npcHandler, - spellName = 'Cure Poison', - price = 150, - level = 10, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'intense', 'wound', 'cleansing' }, - { - npcHandler = npcHandler, - spellName = 'Intense Wound Cleansing', - price = 6000, - level = 80, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'wound', 'cleansing' }, - { - npcHandler = npcHandler, - spellName = 'Wound Cleansing', - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'levitate' }, - { - npcHandler = npcHandler, - spellName = 'Levitate', - price = 500, - level = 12, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'haste' }, - { - npcHandler = npcHandler, - spellName = 'Haste', - price = 600, - level = 14, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'brutal', 'strike' }, - { - npcHandler = npcHandler, - spellName = 'Brutal Strike', - price = 1000, - level = 16, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'charge' }, - { - npcHandler = npcHandler, - spellName = 'Charge', - price = 1300, - level = 25, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'whirlwind', 'throw' }, - { - npcHandler = npcHandler, - spellName = 'Whirlwind Throw', - price = 1500, - level = 28, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'groundshaker' }, - { - npcHandler = npcHandler, - spellName = 'Groundshaker', - price = 1500, - level = 33, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'fierce', 'berserk' }, - { - npcHandler = npcHandler, - spellName = 'Fierce Berserk', - price = 7500, - level = 90, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'berserk' }, - { - npcHandler = npcHandler, - spellName = 'Berserk', - price = 2500, - level = 35, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'inflict', 'wound' }, - { - npcHandler = npcHandler, - spellName = 'Inflict Wound', - price = 2500, - level = 40, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'cure', 'bleeding' }, - { - npcHandler = npcHandler, - spellName = 'Cure Bleeding', - price = 2500, - level = 45, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'intense', 'recovery' }, - { - npcHandler = npcHandler, - spellName = 'Intense Recovery', - price = 10000, - level = 100, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'recovery' }, - { - npcHandler = npcHandler, - spellName = 'Recovery', - price = 4000, - level = 50, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'front', 'sweep' }, - { - npcHandler = npcHandler, - spellName = 'Front Sweep', - price = 4000, - level = 70, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'annihilation' }, - { - npcHandler = npcHandler, - spellName = 'Annihilation', - price = 20000, - level = 110, - vocation = VOCATION.BASE_ID.KNIGHT - } -) +keywordHandler:addSpellKeyword({ "find", "person" }, { + npcHandler = npcHandler, + spellName = "Find Person", + price = 80, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "great", "light" }, { + npcHandler = npcHandler, + spellName = "Great Light", + price = 500, + level = 13, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "light" }, { + npcHandler = npcHandler, + spellName = "Light", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "magic", "rope" }, { + npcHandler = npcHandler, + spellName = "Magic Rope", + price = 200, + level = 9, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "poison" }, { + npcHandler = npcHandler, + spellName = "Cure Poison", + price = 150, + level = 10, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "intense", "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Intense Wound Cleansing", + price = 6000, + level = 80, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Wound Cleansing", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "levitate" }, { + npcHandler = npcHandler, + spellName = "Levitate", + price = 500, + level = 12, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "haste" }, { + npcHandler = npcHandler, + spellName = "Haste", + price = 600, + level = 14, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "brutal", "strike" }, { + npcHandler = npcHandler, + spellName = "Brutal Strike", + price = 1000, + level = 16, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "charge" }, { + npcHandler = npcHandler, + spellName = "Charge", + price = 1300, + level = 25, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "whirlwind", "throw" }, { + npcHandler = npcHandler, + spellName = "Whirlwind Throw", + price = 1500, + level = 28, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "groundshaker" }, { + npcHandler = npcHandler, + spellName = "Groundshaker", + price = 1500, + level = 33, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "fierce", "berserk" }, { + npcHandler = npcHandler, + spellName = "Fierce Berserk", + price = 7500, + level = 90, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "berserk" }, { + npcHandler = npcHandler, + spellName = "Berserk", + price = 2500, + level = 35, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "inflict", "wound" }, { + npcHandler = npcHandler, + spellName = "Inflict Wound", + price = 2500, + level = 40, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "bleeding" }, { + npcHandler = npcHandler, + spellName = "Cure Bleeding", + price = 2500, + level = 45, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "intense", "recovery" }, { + npcHandler = npcHandler, + spellName = "Intense Recovery", + price = 10000, + level = 100, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "recovery" }, { + npcHandler = npcHandler, + spellName = "Recovery", + price = 4000, + level = 50, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "front", "sweep" }, { + npcHandler = npcHandler, + spellName = "Front Sweep", + price = 4000, + level = 70, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "annihilation" }, { + npcHandler = npcHandler, + spellName = "Annihilation", + price = 20000, + level = 110, + vocation = VOCATION.BASE_ID.KNIGHT, +}) -keywordHandler:addKeyword({ 'healing', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Bruise Bane}', '{Cure Bleeding}', '{Wound Cleansing}', '{Cure Poison}', '{Intense Wound Cleansing}', '{Recovery}' and '{Intense Recovery}'." - } -) -keywordHandler:addKeyword({ 'attack', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = { "In this category I have '{Whirlwind Throw}', '{Groundshaker}', '{Berserk}' and '{Fierce Berserk}' as well as ...", "'{Brutal Strike}', '{Front Sweep}', '{Inflict Wound}' and '{Annihilation}'" } - } -) -keywordHandler:addKeyword({ 'support', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Light}', '{Find Person}', '{Magic Rope}', '{Levitate}', '{Haste}', '{Charge}' and '{Great Light}'." - } -) -keywordHandler:addKeyword({ 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = 'I can teach you {healing spells}, {attack spells} and {support spells}. What kind of spell do you wish to learn? You can also tell me for which level you would like to learn a spell, if you prefer that.' - } -) +keywordHandler:addKeyword({ "healing", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Bruise Bane}', '{Cure Bleeding}', '{Wound Cleansing}', '{Cure Poison}', '{Intense Wound Cleansing}', '{Recovery}' and '{Intense Recovery}'.", +}) +keywordHandler:addKeyword({ "attack", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = { "In this category I have '{Whirlwind Throw}', '{Groundshaker}', '{Berserk}' and '{Fierce Berserk}' as well as ...", "'{Brutal Strike}', '{Front Sweep}', '{Inflict Wound}' and '{Annihilation}'" }, +}) +keywordHandler:addKeyword({ "support", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Light}', '{Find Person}', '{Magic Rope}', '{Levitate}', '{Haste}', '{Charge}' and '{Great Light}'.", +}) +keywordHandler:addKeyword({ "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can teach you {healing spells}, {attack spells} and {support spells}. What kind of spell do you wish to learn? You can also tell me for which level you would like to learn a spell, if you prefer that.", +}) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/ustan.lua b/data-otservbr-global/npc/ustan.lua index c1f93745177..237efa88c60 100644 --- a/data-otservbr-global/npc/ustan.lua +++ b/data-otservbr-global/npc/ustan.lua @@ -16,14 +16,13 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 76, lookFeet = 95, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } - local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -94,7 +93,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "bear paw", clientId = 5896, sell = 100 }, { itemName = "wolf paw", clientId = 5897, sell = 70 }, - { itemName = "wolf tooth chain", clientId = 3012, sell = 100 } + { itemName = "wolf tooth chain", clientId = 3012, sell = 100 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -105,7 +104,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/uzgod.lua b/data-otservbr-global/npc/uzgod.lua index 501bc4a943c..13e14998a4b 100644 --- a/data-otservbr-global/npc/uzgod.lua +++ b/data-otservbr-global/npc/uzgod.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 96, lookBody = 60, lookLegs = 97, - lookFeet = 116 + lookFeet = 116, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,10 +57,10 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "piece of draconian steel")) then + if MsgContains(message, "piece of draconian steel") then npcHandler:say("You bringing me draconian steel and obsidian lance in exchange for obsidian knife?", npc, creature) npcHandler:setTopic(playerId, 15) - elseif (MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 15) then + elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 15 then if player:getItemCount(5889) >= 1 and player:getItemCount(3313) >= 1 then if player:removeItem(5889, 1) and player:removeItem(3313, 1) then npcHandler:say("Here you have it.", npc, creature) @@ -68,36 +68,36 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, 0) end else - npcHandler:say("You don\'t have these items.", npc, creature) + npcHandler:say("You don't have these items.", npc, creature) npcHandler:setTopic(playerId, 0) end end - if (MsgContains(message, "pickaxe")) then + if MsgContains(message, "pickaxe") then if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) == 1 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 1 then npcHandler:say("True dwarven pickaxes having to be maded by true weaponsmith! You wanting to get pickaxe for explorer society?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif (MsgContains(message, "crimson sword")) then + elseif MsgContains(message, "crimson sword") then if player:getStorageValue(Storage.TravellingTrader.Mission05) == 1 then npcHandler:say("Me don't sell crimson sword.", npc, creature) npcHandler:setTopic(playerId, 5) end - elseif (MsgContains(message, "forge")) then - if (npcHandler:getTopic(playerId) == 5) then + elseif MsgContains(message, "forge") then + if npcHandler:getTopic(playerId) == 5 then npcHandler:say("You telling me to forge one?! Especially for you? You making fun of me?", npc, creature) npcHandler:setTopic(playerId, 6) end - elseif (MsgContains(message, "brooch")) then + elseif MsgContains(message, "brooch") then if player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) == 3 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) == 3 then npcHandler:say("You got me brooch?", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif (MsgContains(message, "yes")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "yes") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say("Me order book quite full is. But telling you what: You getting me something me lost and Uzgod seeing that your pickaxe comes first. Jawoll! You interested?", npc, creature) npcHandler:setTopic(playerId, 2) - elseif (npcHandler:getTopic(playerId) == 2) then + elseif npcHandler:getTopic(playerId) == 2 then npcHandler:say("Good good. You listening: Me was stolen valuable heirloom. Brooch from my family. Good thing is criminal was caught. Bad thing is, criminal now in dwarven prison of dwacatra is and must have taken brooch with him ...", npc, creature) npcHandler:say("To get into dwacatra you having to get several keys. Each key opening way to other key until you get key to dwarven prison ...", npc, creature) npcHandler:say("Last key should be in the generals quarter near armory. Only General might have key to enter there too. But me not knowing how to enter Generals private room at barracks. You looking on your own ...", npc, creature) @@ -106,18 +106,18 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.ExplorerSociety.JoiningTheExplorers, 2) player:setStorageValue(Storage.ExplorerSociety.DwacatraDoor, 1) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 2) - elseif (npcHandler:getTopic(playerId) == 3) then + elseif npcHandler:getTopic(playerId) == 3 then if player:removeItem(4834, 1) then ----- npcHandler:say("Thanking you for brooch. Me guessing you now want your pickaxe?", npc, creature) npcHandler:setTopic(playerId, 4) end - elseif (npcHandler:getTopic(playerId) == 4) then + elseif npcHandler:getTopic(playerId) == 4 then npcHandler:say("Here you have it.", npc, creature) player:addItem(4845, 1) ----- player:setStorageValue(Storage.ExplorerSociety.JoiningTheExplorers, 4) player:setStorageValue(Storage.ExplorerSociety.QuestLine, 4) npcHandler:setTopic(playerId, 0) - elseif (npcHandler:getTopic(playerId) == 9) then + elseif npcHandler:getTopic(playerId) == 9 then if player:getMoney() + player:getBankBalance() >= 250 and player:getItemCount(5880) >= 3 then if player:removeMoneyBank(250) and player:removeItem(5880, 3) then npcHandler:say("Ah, that's how me like me customers. Ok, me do this... ... another fine swing of the hammer here and there... ... here you have it!", npc, creature) @@ -127,14 +127,14 @@ local function creatureSayCallback(npc, creature, type, message) end end end - elseif (MsgContains(message, "no")) then - if (npcHandler:getTopic(playerId) == 6) then + elseif MsgContains(message, "no") then + if npcHandler:getTopic(playerId) == 6 then npcHandler:say("Well. Thinking about it, me a smith, so why not. 1000 gold for your personal crimson sword. Ok?", npc, creature) npcHandler:setTopic(playerId, 7) - elseif (npcHandler:getTopic(playerId) == 7) then + elseif npcHandler:getTopic(playerId) == 7 then npcHandler:say("Too expensive?! You think me work is cheap? Well, if you want cheap, I can make cheap. Hrmpf. I make cheap sword for 300 gold. Ok?", npc, creature) npcHandler:setTopic(playerId, 8) - elseif (npcHandler:getTopic(playerId) == 8) then + elseif npcHandler:getTopic(playerId) == 8 then npcHandler:say("Cheap but good quality? Impossible. Unless... you bring material. Three iron ores, 250 gold. Okay?", npc, creature) npcHandler:setTopic(playerId, 9) end @@ -192,7 +192,7 @@ npcConfig.shop = { { itemName = "sword", clientId = 3264, buy = 85 }, { itemName = "throwing knife", clientId = 3298, buy = 25 }, { itemName = "two handed sword", clientId = 3265, buy = 950 }, - { itemName = "war hammer", clientId = 3279, buy = 10000 } + { itemName = "war hammer", clientId = 3279, buy = 10000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -203,7 +203,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/uzon.lua b/data-otservbr-global/npc/uzon.lua index dedf78a2f35..bc53d46b60c 100644 --- a/data-otservbr-global/npc/uzon.lua +++ b/data-otservbr-global/npc/uzon.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 4, lookLegs = 17, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Feel the wind in your hair during one of my carpet rides!' } + { text = "Feel the wind in your hair during one of my carpet rides!" }, } local keywordHandler = KeywordHandler:new() @@ -60,47 +60,57 @@ end local TheNewFrontier = Storage.Quest.U8_54.TheNewFrontier local function addTravelKeyword(keyword, text, cost, destination, condition, action) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Never heard about a place like this.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Never heard about a place like this." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = 'Hold on!', cost = cost, discount = 'postman', destination = destination }, nil, action) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'You shouldn\'t miss the experience.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = text, cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, text = "Hold on!", cost = cost, discount = "postman", destination = destination }, nil, action) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "You shouldn't miss the experience.", reset = true }) end -addTravelKeyword('eclipse', 'Oh no, so the time has come? Do you really want me to fly you to this unholy place?', 110, Position(32659, 31915, 0), function(player) return player:getStorageValue(Storage.TheInquisition.Questline) ~= 4 and player:getStorageValue(Storage.TheInquisition.Questline) ~= 5 end) -addTravelKeyword('farmine', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('zao', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('edron', 'Do you seek a ride to Edron for |TRAVELCOST|?', 60, Position(33193, 31783, 3), nil, function(player) if player:getStorageValue(Storage.Postman.Mission01) == 2 then player:setStorageValue(Storage.Postman.Mission01, 3) end end) -addTravelKeyword('darashia', 'Do you seek a ride to Darashia on Darama for |TRAVELCOST|?', 60, Position(33270, 32441, 6)) -addTravelKeyword('darama', 'Do you seek a ride to Darashia on Darama for |TRAVELCOST|?', 60, Position(33270, 32441, 6)) -addTravelKeyword('svargrond', 'Do you seek a ride to Svargrond for |TRAVELCOST|?', 60, Position(32253, 31097, 4)) -addTravelKeyword('kazordoon', 'Do you seek a ride to Kazordoon for |TRAVELCOST|?', 70, Position(32588, 31942, 0)) -addTravelKeyword('kazor', 'Do you seek a ride to Kazordoon for |TRAVELCOST|?', 70, Position(32588, 31942, 0)) -addTravelKeyword('issavi', 'Do you seek a ride to Issavi for |TRAVELCOST|?', 100, Position(33957, 31515, 0)) +addTravelKeyword("eclipse", "Oh no, so the time has come? Do you really want me to fly you to this unholy place?", 110, Position(32659, 31915, 0), function(player) + return player:getStorageValue(Storage.TheInquisition.Questline) ~= 4 and player:getStorageValue(Storage.TheInquisition.Questline) ~= 5 +end) +addTravelKeyword("farmine", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("zao", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("edron", "Do you seek a ride to Edron for |TRAVELCOST|?", 60, Position(33193, 31783, 3), nil, function(player) + if player:getStorageValue(Storage.Postman.Mission01) == 2 then + player:setStorageValue(Storage.Postman.Mission01, 3) + end +end) +addTravelKeyword("darashia", "Do you seek a ride to Darashia on Darama for |TRAVELCOST|?", 60, Position(33270, 32441, 6)) +addTravelKeyword("darama", "Do you seek a ride to Darashia on Darama for |TRAVELCOST|?", 60, Position(33270, 32441, 6)) +addTravelKeyword("svargrond", "Do you seek a ride to Svargrond for |TRAVELCOST|?", 60, Position(32253, 31097, 4)) +addTravelKeyword("kazordoon", "Do you seek a ride to Kazordoon for |TRAVELCOST|?", 70, Position(32588, 31942, 0)) +addTravelKeyword("kazor", "Do you seek a ride to Kazordoon for |TRAVELCOST|?", 70, Position(32588, 31942, 0)) +addTravelKeyword("issavi", "Do you seek a ride to Issavi for |TRAVELCOST|?", 100, Position(33957, 31515, 0)) -- Basic -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = "I am known as Uzon Ibn Kalith." }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am a licensed Darashian carpet pilot. I can bring you to {Darashia}, {Kazordoon}, {Svargrond} or {Edron}." }) -keywordHandler:addKeyword({ 'caliph' }, StdModule.say, { npcHandler = npcHandler, text = "The caliph welcomes travellers to his land." }) -keywordHandler:addKeyword({ 'kazzan' }, StdModule.say, { npcHandler = npcHandler, text = "The caliph welcomes travellers to his land." }) -keywordHandler:addKeyword({ 'daraman' }, StdModule.say, { npcHandler = npcHandler, text = "Oh, there is so much to tell about Daraman. You better travel to Darama to learn about his teachings." }) -keywordHandler:addKeyword({ 'ferumbras' }, StdModule.say, { npcHandler = npcHandler, text = "I would never transport this one." }) -keywordHandler:addKeyword({ 'drefia' }, StdModule.say, { npcHandler = npcHandler, text = "So you heard about haunted Drefia? Many adventures travel there to test their skills against the undead: vampires, mummies, and ghosts." }) -keywordHandler:addKeyword({ 'excalibug' }, StdModule.say, { npcHandler = npcHandler, text = "Some people claim it is hidden somewhere under the endless sands of the devourer desert in Darama." }) -keywordHandler:addKeyword({ 'thais' }, StdModule.say, { npcHandler = npcHandler, text = "Thais is noisy and overcrowded. That's why I like Darashia more." }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = "I have seen almost every place on the continent." }) -keywordHandler:addKeyword({ 'continent' }, StdModule.say, { npcHandler = npcHandler, text = "I could retell the tales of my travels for hours. Sadly another flight is scheduled soon." }) -keywordHandler:addKeyword({ 'carlin' }, StdModule.say, { npcHandler = npcHandler, text = "Just another Thais but with women to lead them." }) -keywordHandler:addKeyword({ 'flying' }, StdModule.say, { npcHandler = npcHandler, text = "You can buy flying carpets only in Darashia." }) -keywordHandler:addKeyword({ 'fly' }, StdModule.say, { npcHandler = npcHandler, text = "I transport travellers to the continent of Darama for a small fee. So many want to see the wonders of the desert and learn the secrets of Darama." }) -keywordHandler:addKeyword({ 'new' }, StdModule.say, { npcHandler = npcHandler, text = "I heard too many news to recall them all." }) -keywordHandler:addKeyword({ 'rumors' }, StdModule.say, { npcHandler = npcHandler, text = "I heard too many news to recall them all." }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on Darama, {Kazordoon}, {Svargrond}, {Issavi}, {Farmine} or {Edron} if you like. Where do you want to go?" }) -keywordHandler:addKeyword({ 'transport' }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on Darama, {Kazordoon}, {Svargrond} or {Edron} if you like. Where do you want to go?" }) -keywordHandler:addKeyword({ 'ride' }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on Darama, {Kazordoon}, {Svargrond} or {Edron} if you like. Where do you want to go?" }) -keywordHandler:addKeyword({ 'trip' }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on Darama, {Kazordoon}, {Svargrond} or {Edron} if you like. Where do you want to go?" }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = "It's 3:42 pm right now. The next flight is scheduled soon." }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "I am known as Uzon Ibn Kalith." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am a licensed Darashian carpet pilot. I can bring you to {Darashia}, {Kazordoon}, {Svargrond} or {Edron}." }) +keywordHandler:addKeyword({ "caliph" }, StdModule.say, { npcHandler = npcHandler, text = "The caliph welcomes travellers to his land." }) +keywordHandler:addKeyword({ "kazzan" }, StdModule.say, { npcHandler = npcHandler, text = "The caliph welcomes travellers to his land." }) +keywordHandler:addKeyword({ "daraman" }, StdModule.say, { npcHandler = npcHandler, text = "Oh, there is so much to tell about Daraman. You better travel to Darama to learn about his teachings." }) +keywordHandler:addKeyword({ "ferumbras" }, StdModule.say, { npcHandler = npcHandler, text = "I would never transport this one." }) +keywordHandler:addKeyword({ "drefia" }, StdModule.say, { npcHandler = npcHandler, text = "So you heard about haunted Drefia? Many adventures travel there to test their skills against the undead: vampires, mummies, and ghosts." }) +keywordHandler:addKeyword({ "excalibug" }, StdModule.say, { npcHandler = npcHandler, text = "Some people claim it is hidden somewhere under the endless sands of the devourer desert in Darama." }) +keywordHandler:addKeyword({ "thais" }, StdModule.say, { npcHandler = npcHandler, text = "Thais is noisy and overcrowded. That's why I like Darashia more." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "I have seen almost every place on the continent." }) +keywordHandler:addKeyword({ "continent" }, StdModule.say, { npcHandler = npcHandler, text = "I could retell the tales of my travels for hours. Sadly another flight is scheduled soon." }) +keywordHandler:addKeyword({ "carlin" }, StdModule.say, { npcHandler = npcHandler, text = "Just another Thais but with women to lead them." }) +keywordHandler:addKeyword({ "flying" }, StdModule.say, { npcHandler = npcHandler, text = "You can buy flying carpets only in Darashia." }) +keywordHandler:addKeyword({ "fly" }, StdModule.say, { npcHandler = npcHandler, text = "I transport travellers to the continent of Darama for a small fee. So many want to see the wonders of the desert and learn the secrets of Darama." }) +keywordHandler:addKeyword({ "new" }, StdModule.say, { npcHandler = npcHandler, text = "I heard too many news to recall them all." }) +keywordHandler:addKeyword({ "rumors" }, StdModule.say, { npcHandler = npcHandler, text = "I heard too many news to recall them all." }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on Darama, {Kazordoon}, {Svargrond}, {Issavi}, {Farmine} or {Edron} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "transport" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on Darama, {Kazordoon}, {Svargrond} or {Edron} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "ride" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on Darama, {Kazordoon}, {Svargrond} or {Edron} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "trip" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia} on Darama, {Kazordoon}, {Svargrond} or {Edron} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "It's 3:42 pm right now. The next flight is scheduled soon." }) npcHandler:setMessage(MESSAGE_GREET, "Daraman's blessings, traveller |PLAYERNAME|.") npcHandler:setMessage(MESSAGE_FAREWELL, "Daraman's blessings") diff --git a/data-otservbr-global/npc/vad_inchi.lua b/data-otservbr-global/npc/vad_inchi.lua index cd4ca0d8300..c8d639a2b53 100644 --- a/data-otservbr-global/npc/vad_inchi.lua +++ b/data-otservbr-global/npc/vad_inchi.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 114, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/valentina.lua b/data-otservbr-global/npc/valentina.lua index 0010fd6baf8..c6a2f228e53 100644 --- a/data-otservbr-global/npc/valentina.lua +++ b/data-otservbr-global/npc/valentina.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 98, lookFeet = 45, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Love is beautiful, we are loved.' } + { text = "Love is beautiful, we are loved." }, } npcConfig.shop = { @@ -37,7 +37,7 @@ npcConfig.shop = { { itemName = "sweetheart ring", clientId = 21955, buy = 500 }, { itemName = "truelove teddy", clientId = 21953, buy = 1000 }, { itemName = "valentines cake", clientId = 6392, buy = 30 }, - { itemName = "valentines card", clientId = 6538, buy = 5 } + { itemName = "valentines card", clientId = 6538, buy = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -48,8 +48,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -79,7 +78,7 @@ npcType.onCloseChannel = function(npc, creature) end -- Basic -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = "I am known as the saleswoman of love, as a cupid." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I am known as the saleswoman of love, as a cupid." }) npcHandler:setMessage(MESSAGE_GREET, "Welcome to Valentine's Store. Let's {trade} something?") npcHandler:setMessage(MESSAGE_FAREWELL, "Please come back from time to time.") diff --git a/data-otservbr-global/npc/valindara.lua b/data-otservbr-global/npc/valindara.lua index 5c3d9aeca94..52d7762eded 100644 --- a/data-otservbr-global/npc/valindara.lua +++ b/data-otservbr-global/npc/valindara.lua @@ -16,24 +16,24 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 114, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.respawnType = { period = RESPAWNPERIOD_DAY, - underground = false + underground = false, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Im eager for a bath in the lake.' }, - { text = 'Im interested in shiny precious things, if you have some.' }, - { text = 'No, you cant have this cloak.' } + { text = "Im eager for a bath in the lake." }, + { text = "Im interested in shiny precious things, if you have some." }, + { text = "No, you cant have this cloak." }, } local keywordHandler = KeywordHandler:new() @@ -200,7 +200,7 @@ npcConfig.shop = { { itemName = "wild flowers", clientId = 25691, sell = 120 }, { itemName = "wild growth rune", clientId = 3156, buy = 160 }, { itemName = "wood cape", clientId = 3575, sell = 5000 }, - { itemName = "wooden spellbook", clientId = 25699, sell = 12000 } + { itemName = "wooden spellbook", clientId = 25699, sell = 12000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -211,7 +211,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/vanys.lua b/data-otservbr-global/npc/vanys.lua index f26adb8154a..0d7c1e009ea 100644 --- a/data-otservbr-global/npc/vanys.lua +++ b/data-otservbr-global/npc/vanys.lua @@ -17,11 +17,11 @@ npcConfig.outfit = { lookLegs = 34, lookFeet = 73, lookAddons = 0, - lookMount = 0 + lookMount = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/vascalir.lua b/data-otservbr-global/npc/vascalir.lua index 78a7bba3de0..0f07ecaf73d 100644 --- a/data-otservbr-global/npc/vascalir.lua +++ b/data-otservbr-global/npc/vascalir.lua @@ -16,18 +16,18 @@ npcConfig.outfit = { lookBody = 121, lookLegs = 79, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Talk to me if you want to help protecting the village.' }, - { text = 'Rookgaard needs your help more than ever.' } + { text = "Talk to me if you want to help protecting the village." }, + { text = "Rookgaard needs your help more than ever." }, } local keywordHandler = KeywordHandler:new() @@ -70,7 +70,7 @@ local function greetCallback(npc, creature) "|PLAYERNAME| - a small word of advice before we continue this mission. You are level 8 now, while it is possible to reach higher levels while still on Rookgaard, you should consider leaving Rookgaard at about level 9. ...", "You can still go on with this mission, but you won't be able to finish the quest once you've reached level 9. So only kill the monsters you absolutely have to kill - if you want to finish this quest! ...", "If you don't care about that, you can also simply leave Rookgaard now and learn a vocation by talking to the oracle above the academy. It's up to you. Or - I could simply clean up your questlog, if you prefer. ...", - "What would you like to do? {Continue} the mission or {delete} the unfinished questline from your questlog?" + "What would you like to do? {Continue} the mission or {delete} the unfinished questline from your questlog?", }) -- Completed all missions elseif player:getStorageValue(Storage.TheRookieGuard.Questline) == 2 then @@ -187,40 +187,40 @@ local function greetCallback(npc, creature) end -- Mission 2: Start -local mission2 = keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Have you ever heard of Kraknaknork? He's a powerful orc shaman who has recently risen from the orc tribe and started to terrorise Rookgaard. Maybe we can kill several birds with one stone. Listen: ...", - "What would you say about you defeat Kraknaknork, save Rookgaard and earn some experience and better equipment on the way? Sounds good?" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission02) == -1 end -) +local mission2 = keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Have you ever heard of Kraknaknork? He's a powerful orc shaman who has recently risen from the orc tribe and started to terrorise Rookgaard. Maybe we can kill several birds with one stone. Listen: ...", + "What would you say about you defeat Kraknaknork, save Rookgaard and earn some experience and better equipment on the way? Sounds good?", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission02) == -1 +end) keywordHandler:addAliasKeyword({ "mission" }) -- Mission 2: Decline -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, if you change your mind you know where to find me. Remember that if you help Rookgaard, Rookgaard might be able to help you.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission02) == -1 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, if you change your mind you know where to find me. Remember that if you help Rookgaard, Rookgaard might be able to help you.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission02) == -1 +end) -local mission02Reject = KeywordNode:new({ "no" }, StdModule.say, { npcHandler = npcHandler, text = 'OK, dude!' }) +local mission02Reject = KeywordNode:new({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "OK, dude!" }) -- Mission 2: Accept -local mission2Accept = mission2:addChildKeyword({ "yes" }, StdModule.say, +local mission2Accept = mission2:addChildKeyword( + { "yes" }, + StdModule.say, { npcHandler = npcHandler, text = { "Great. We best start by reinforcing our defences. There are four large catapults positioned on roofs high over the village. If you want to fight, you have to build up some muscles. ...", "Go into the barn just a few steps to the north-west of here and down the ladder into the cellar. You'll find a huge stone pile down there. Use it to pick up one of the big stones. ...", "Carry one stone to at least two of the four catapults located on Norma's roof to the north, this academy and Obi's roof to the south. ...", - "Use the stone on the catapult to load it. You can load each catapult only once, so try spotting two different catapults. Have you understood all of that?" - } + "Use the stone on the catapult to load it. You can load each catapult only once, so try spotting two different catapults. Have you understood all of that?", + }, }, nil, function(player) @@ -233,84 +233,79 @@ local mission2Accept = mission2:addChildKeyword({ "yes" }, StdModule.say, end ) -mission2Accept:addChildKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Awesome! Off to work with you. I've marked the barn on your map.", - ungreet = true - }) +mission2Accept:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Awesome! Off to work with you. I've marked the barn on your map.", + ungreet = true, +}) -mission2Accept:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Let me explain again then. We best start by reinforcing our defences. There are four large catapults positioned on roofs high over the village. If you want to fight, you have to build up some muscles. ...", - "Go into the barn just a few steps to the north-west of here and down the ladder into the cellar. You'll find a huge stone pile down there. Use it to pick up one of the big stones. ...", - "Carry one stone to at least two of the four catapults located on Norma's roof to the north, this academy and Obi's roof to the south. ...", - "Use the stone on the catapult to load it. You can load each catapult only once, so try spotting two different catapults. Have you understood all of that?" - }, - moveup = 1 - }) +mission2Accept:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Let me explain again then. We best start by reinforcing our defences. There are four large catapults positioned on roofs high over the village. If you want to fight, you have to build up some muscles. ...", + "Go into the barn just a few steps to the north-west of here and down the ladder into the cellar. You'll find a huge stone pile down there. Use it to pick up one of the big stones. ...", + "Carry one stone to at least two of the four catapults located on Norma's roof to the north, this academy and Obi's roof to the south. ...", + "Use the stone on the catapult to load it. You can load each catapult only once, so try spotting two different catapults. Have you understood all of that?", + }, + moveup = 1, +}) -- Mission 2: Finish - Confirm -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Well done! The villagers are much safer now that the catapults are ready to fire. You also look like you've built some muscles. ...", - "Great - so the piece of equipment I just gave you will not go to waste. Take this studded shield and put it to good use! ...", - "Actually I have some more equipment I could give to you, but first I want to see how you fight. You have fought before, haven't you?" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission02) == 4 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission02, 5) - player:addItemEx(Game.createItem(3426, 1), true, CONST_SLOT_WHEREEVER) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Well done! The villagers are much safer now that the catapults are ready to fire. You also look like you've built some muscles. ...", + "Great - so the piece of equipment I just gave you will not go to waste. Take this studded shield and put it to good use! ...", + "Actually I have some more equipment I could give to you, but first I want to see how you fight. You have fought before, haven't you?", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission02) == 4 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission02, 5) + player:addItemEx(Game.createItem(3426, 1), true, CONST_SLOT_WHEREEVER) +end) -- Mission 2: Finish - Decline -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Oh, but you have... you should say {yes}!" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission02) == 4 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Oh, but you have... you should say {yes}!", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission02) == 4 +end) -- Mission 3: Start -local mission3 = keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Ah, that came with confidence. Suited monsters to do some basic fighting would be rats - they actually fight back, but they don't hit that hard. Just make sure you wear your new studded shield and a sword. ...", - "You can find rats in the sewers. In case you might think so, this task is not a lame excuse to help us with some rat infestation, we got the rat population quite under control. ...", - "So, back to the topic - please kill 5 rats and then come back to me. Shouldn't be too hard, should it? Just pay attention they don't trap you in a narrow passage and take on one at a time. ...", - "If you run low on health, go on full defence - click the little shield icon - and leave the dungeon. Nothing corwardish about running, because dying hurts. Are you ready to go?" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission02) == 5 and player:getStorageValue(Storage.TheRookieGuard.Mission03) == -1 end -) +local mission3 = keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Ah, that came with confidence. Suited monsters to do some basic fighting would be rats - they actually fight back, but they don't hit that hard. Just make sure you wear your new studded shield and a sword. ...", + "You can find rats in the sewers. In case you might think so, this task is not a lame excuse to help us with some rat infestation, we got the rat population quite under control. ...", + "So, back to the topic - please kill 5 rats and then come back to me. Shouldn't be too hard, should it? Just pay attention they don't trap you in a narrow passage and take on one at a time. ...", + "If you run low on health, go on full defence - click the little shield icon - and leave the dungeon. Nothing corwardish about running, because dying hurts. Are you ready to go?", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission02) == 5 and player:getStorageValue(Storage.TheRookieGuard.Mission03) == -1 +end) -- Mission 3: Decline -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "No worries, let's refresh your memory. To fight a monster, click on it in the battle list and you'll automatically attack it. It's as easy as that! If you want to practice, just hunt a few harmless rabbits south of here. Remember it now?" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission02) == 5 and player:getStorageValue(Storage.TheRookieGuard.Mission03) == -1 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "No worries, let's refresh your memory. To fight a monster, click on it in the battle list and you'll automatically attack it. It's as easy as that! If you want to practice, just hunt a few harmless rabbits south of here. Remember it now?", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission02) == 5 and player:getStorageValue(Storage.TheRookieGuard.Mission03) == -1 +end) -- Mission 3: Accept -mission3:addChildKeyword({ "yes" }, StdModule.say, +mission3:addChildKeyword( + { "yes" }, + StdModule.say, { npcHandler = npcHandler, text = { "Nice. I've marked two rat dungeons on your map. Kill 5 rats and return to me. Smart adventurers try to face one creature at a time - use the environment to your advantage. ...", "If you should happen to forget how many you have killed in the meantime, simply check your questlog. ...", "Once you reach level 8, you should leave this island. While it is possible to reach higher levels, this quest is meant to be played up to level 8. ...", - "No need to be scared, just saying you don't need to plan large hunting sessions while helping me with this mission or kill more rats than I've asked you to. So, good hunting!" - } + "No need to be scared, just saying you don't need to plan large hunting sessions while helping me with this mission or kill more rats than I've asked you to. So, good hunting!", + }, }, nil, function(player) @@ -322,165 +317,151 @@ mission3:addChildKeyword({ "yes" }, StdModule.say, ) -- Mission 3: Decline -mission3:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "I'll explain it again then. Suited monsters to do some basic fighting would be rats - they actually fight back, but they don't hit that hard. Just make sure you wear your new studded shield and a sword. ...", - "You can find rats in the sewers. In case you might think so, this task is not a lame excuse to help us with some rat infestation, we got the rat population quite under control. ...", - "So, back to the topic - please kill 5 rats and then come back to me. Shouldn't be too hard, should it? Just pay attention they don't trap you in a narrow passage and take on one at a time. ...", - "If you run low on health, go on full defence - click the little shield icon - and leave the dungeon. Nothing corwardish about running, because dying hurts. Are you ready to go?" - }, - moveup = 1 - }) +mission3:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "I'll explain it again then. Suited monsters to do some basic fighting would be rats - they actually fight back, but they don't hit that hard. Just make sure you wear your new studded shield and a sword. ...", + "You can find rats in the sewers. In case you might think so, this task is not a lame excuse to help us with some rat infestation, we got the rat population quite under control. ...", + "So, back to the topic - please kill 5 rats and then come back to me. Shouldn't be too hard, should it? Just pay attention they don't trap you in a narrow passage and take on one at a time. ...", + "If you run low on health, go on full defence - click the little shield icon - and leave the dungeon. Nothing corwardish about running, because dying hurts. Are you ready to go?", + }, + moveup = 1, +}) -- Mission 3: Complain not finished -keywordHandler:addKeyword({ "yes" }, nil, - {}, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission03) == 1 and player:getStorageValue(Storage.TheRookieGuard.RatKills) < 5 end, - function(player) - local ratKills = player:getStorageValue(Storage.TheRookieGuard.RatKills) - npcHandler:say("You still need to kill " .. (5 - ratKills) .. " more rats. Come back once you've killed enough for some experience and equipment!", player.uid) - end -) +keywordHandler:addKeyword({ "yes" }, nil, {}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission03) == 1 and player:getStorageValue(Storage.TheRookieGuard.RatKills) < 5 +end, function(player) + local ratKills = player:getStorageValue(Storage.TheRookieGuard.RatKills) + npcHandler:say("You still need to kill " .. (5 - ratKills) .. " more rats. Come back once you've killed enough for some experience and equipment!", player.uid) +end) keywordHandler:addAliasKeyword({ "no" }) -- Mission 3: Finish - Confirm -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Good job. Here's your promised reward - a sabre. You can replace your wooden sword with it, if you still have it - the sabre does more damage. ...", - "If you look at a piece of equipment, you can check its stats. By the way, if you use sword weapons such as sabres or swords, you are training your 'sword fighting skill'. ...", - "This is quite important if you plan on becoming a melee fighter - the better your sword fighting skill, the higher the damage you do will be. ...", - "There are also club and axe type weapons - they train different skills, so maybe you should choose one type of weapon you always want to use. It doesn't make that much difference, but swords often have a good balance between offence and defence. ...", - "Anyway, I think you're well enough equipped now to leave the village of Rookgaard for another small task. Find Lily south-west of here, she will tell you what she needs done." - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission03) == 1 and player:getStorageValue(Storage.TheRookieGuard.RatKills) == 5 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission03, 2) - player:setStorageValue(Storage.TheRookieGuard.Mission04, 1) - player:addExperience(30, true) - player:addItemEx(Game.createItem(3273, 1), true, CONST_SLOT_WHEREEVER) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Good job. Here's your promised reward - a sabre. You can replace your wooden sword with it, if you still have it - the sabre does more damage. ...", + "If you look at a piece of equipment, you can check its stats. By the way, if you use sword weapons such as sabres or swords, you are training your 'sword fighting skill'. ...", + "This is quite important if you plan on becoming a melee fighter - the better your sword fighting skill, the higher the damage you do will be. ...", + "There are also club and axe type weapons - they train different skills, so maybe you should choose one type of weapon you always want to use. It doesn't make that much difference, but swords often have a good balance between offence and defence. ...", + "Anyway, I think you're well enough equipped now to leave the village of Rookgaard for another small task. Find Lily south-west of here, she will tell you what she needs done.", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission03) == 1 and player:getStorageValue(Storage.TheRookieGuard.RatKills) == 5 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission03, 2) + player:setStorageValue(Storage.TheRookieGuard.Mission04, 1) + player:addExperience(30, true) + player:addItemEx(Game.createItem(3273, 1), true, CONST_SLOT_WHEREEVER) +end) -- Mission 3: Finish - Decline -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Actually I think you have killed enough. You should reply with {yes}!" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission03) == 1 and player:getStorageValue(Storage.TheRookieGuard.RatKills) == 5 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Actually I think you have killed enough. You should reply with {yes}!", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission03) == 1 and player:getStorageValue(Storage.TheRookieGuard.RatKills) == 5 +end) -- Mission 4: Finish - Confirm -keywordHandler:addKeyword({ "help" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "That's the spirit Rookgaard needs. Listen, while you were gone I thought about a way to weaken and fight Kraknaknork - that orc shaman who terrorises Rookgaard. ...", - "Even if we could make our way into his stronghold past all his minions, we cannot hope to defeat him as long as he is powerful enough to summon demons and access other dimensions. ...", - "While studying the fauna of Rookgaard I came across an interesting specimen that might help us in our battle. Deep in the underground tunnels, there is a spider queen - a tarantula, who is bigger and deadlier than all the other spiders here. ...", - "Her web is enormous - and causes a strong paralysis. If you could get a small sample of her web, I might be able to craft a trap that we can use to paralyse the orcs so you can get past their defences. ...", - "Do you dare sneak into the tarantula's lair and retrieve a sample of her web?" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 5 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission04, 6) - end -) +keywordHandler:addKeyword({ "help" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "That's the spirit Rookgaard needs. Listen, while you were gone I thought about a way to weaken and fight Kraknaknork - that orc shaman who terrorises Rookgaard. ...", + "Even if we could make our way into his stronghold past all his minions, we cannot hope to defeat him as long as he is powerful enough to summon demons and access other dimensions. ...", + "While studying the fauna of Rookgaard I came across an interesting specimen that might help us in our battle. Deep in the underground tunnels, there is a spider queen - a tarantula, who is bigger and deadlier than all the other spiders here. ...", + "Her web is enormous - and causes a strong paralysis. If you could get a small sample of her web, I might be able to craft a trap that we can use to paralyse the orcs so you can get past their defences. ...", + "Do you dare sneak into the tarantula's lair and retrieve a sample of her web?", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 5 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission04, 6) +end) -- Mission 4: Finish - Wrong Confirm -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "What do you mean? If you're ready to {help} me again, just say so." - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 5 end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "What do you mean? If you're ready to {help} me again, just say so.", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 5 +end) keywordHandler:addAliasKeyword({ "no" }) -- Mission 5: Accept - Explain again -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "That's very courageous. I'll mark the spider lair on your map. If you leave the village to the north again like before, but walk north-west and cross the bridge, you will find it. ...", - "Listen, I have some more important information regarding your task. It will likely be dark in the cave, so maybe you'll want to buy a torch or two from Al Dee's shop to the left of the barn. ...", - "The spider queen is far too strong for you to fight and if she catches you, you might end up in her stomach. The good news is that she is almost blind and relies on her sense of smelling to find her prey. ...", - "Deep in her lair you'll find some blue greasy stones. If you use them, you'll rub some of the smelly grease on your body. From that moment on you'll be invisible to her, but only for a short time. ...", - "If you run into her lair, you should have enough time to retrieve a sample of her web before she catches you. Just USE one of her intact cobwebs in her lair. Good luck!" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 6 and player:getStorageValue(Storage.TheRookieGuard.Mission05) == -1 or (player:getStorageValue(Storage.TheRookieGuard.Mission05) >= 1 and player:getStorageValue(Storage.TheRookieGuard.Mission05) <= 2) end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission05, 1) - player:addMapMark({ x = 32051, y = 32110, z = 7 }, MAPMARK_GREENSOUTH, "Spider Lair") - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "That's very courageous. I'll mark the spider lair on your map. If you leave the village to the north again like before, but walk north-west and cross the bridge, you will find it. ...", + "Listen, I have some more important information regarding your task. It will likely be dark in the cave, so maybe you'll want to buy a torch or two from Al Dee's shop to the left of the barn. ...", + "The spider queen is far too strong for you to fight and if she catches you, you might end up in her stomach. The good news is that she is almost blind and relies on her sense of smelling to find her prey. ...", + "Deep in her lair you'll find some blue greasy stones. If you use them, you'll rub some of the smelly grease on your body. From that moment on you'll be invisible to her, but only for a short time. ...", + "If you run into her lair, you should have enough time to retrieve a sample of her web before she catches you. Just USE one of her intact cobwebs in her lair. Good luck!", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 6 and player:getStorageValue(Storage.TheRookieGuard.Mission05) == -1 or (player:getStorageValue(Storage.TheRookieGuard.Mission05) >= 1 and player:getStorageValue(Storage.TheRookieGuard.Mission05) <= 2) +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission05, 1) + player:addMapMark({ x = 32051, y = 32110, z = 7 }, MAPMARK_GREENSOUTH, "Spider Lair") +end) -- Mission 5: Decline - Explain again -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, if you change your mind, let me know.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 6 and player:getStorageValue(Storage.TheRookieGuard.Mission05) == -1 or (player:getStorageValue(Storage.TheRookieGuard.Mission05) >= 1 and player:getStorageValue(Storage.TheRookieGuard.Mission05) <= 2) end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, if you change your mind, let me know.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission04) == 6 and player:getStorageValue(Storage.TheRookieGuard.Mission05) == -1 or (player:getStorageValue(Storage.TheRookieGuard.Mission05) >= 1 and player:getStorageValue(Storage.TheRookieGuard.Mission05) <= 2) +end) -- Mission 5: Finish - Accept Reward (Studded armor) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Here, this studded armor will protect you much better. Fits you perfectly! Now - let's work on your footwear. Tom the Tanner can create great boots out of quality leather. You should pay him a visit!", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission05) == 5 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission05, 6) - player:setStorageValue(Storage.TheRookieGuard.Mission06, 1) - player:addItemEx(Game.createItem(3378, 1), true, CONST_SLOT_WHEREEVER) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Here, this studded armor will protect you much better. Fits you perfectly! Now - let's work on your footwear. Tom the Tanner can create great boots out of quality leather. You should pay him a visit!", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission05) == 5 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission05, 6) + player:setStorageValue(Storage.TheRookieGuard.Mission06, 1) + player:addItemEx(Game.createItem(3378, 1), true, CONST_SLOT_WHEREEVER) +end) -- Mission 5: Finish - Reject Reward (Studded armor) -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Seriously, don't reject that offer. I'm going to give you a studded armor. No one refuses free stuff! If you don't like it, you can sell it - I don't need it anymore. I promise it's not too used or smelly. Want it?" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission05) == 5 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Seriously, don't reject that offer. I'm going to give you a studded armor. No one refuses free stuff! If you don't like it, you can sell it - I don't need it anymore. I promise it's not too used or smelly. Want it?", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission05) == 5 +end) -- Mission 7: Start -local mission7 = keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Time is of the essence now. The library vault is on fire! It's where Rookgaard's oldest and most important books are stored. ...", - "The trolls from the northern ruins somehow found their way into the vault by digging a tunnel from the other side and set everything on fire. ...", - "You HAVE to go down there and look for our copy of the book of orc language - while I'm thinking of a reason why I can't go myself. ...", - "Just kidding, I need to find out just how the trolls got in there before they wreak more havoc. I think there's something bigger behind all this. ...", - "The vault is likely set on fire - be careful down there, and don't run into open fire, it can and will hurt you. There should be a rune in the vault that can at least weaken fire, just in case. ...", - "Are you ready to go?" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission06) == 7 and player:getStorageValue(Storage.TheRookieGuard.Mission07) == -1 end -) +local mission7 = keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Time is of the essence now. The library vault is on fire! It's where Rookgaard's oldest and most important books are stored. ...", + "The trolls from the northern ruins somehow found their way into the vault by digging a tunnel from the other side and set everything on fire. ...", + "You HAVE to go down there and look for our copy of the book of orc language - while I'm thinking of a reason why I can't go myself. ...", + "Just kidding, I need to find out just how the trolls got in there before they wreak more havoc. I think there's something bigger behind all this. ...", + "The vault is likely set on fire - be careful down there, and don't run into open fire, it can and will hurt you. There should be a rune in the vault that can at least weaken fire, just in case. ...", + "Are you ready to go?", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission06) == 7 and player:getStorageValue(Storage.TheRookieGuard.Mission07) == -1 +end) --keywordHandler:addAliasKeyword({"no"}) -- Mission 7: Accept -mission7:addChildKeyword({ "yes" }, StdModule.say, +mission7:addChildKeyword( + { "yes" }, + StdModule.say, { npcHandler = npcHandler, text = { "You can find the vault if you go down the stairs in the northern part of the academy. The book should be in a large blue chest somewhere down there - I hope it's not burnt yet. ...", - "Make sure you're healthy - if you are wounded, ask Cipfried in the temple for a healing first. Good luck!" - } + "Make sure you're healthy - if you are wounded, ask Cipfried in the temple for a healing first. Good luck!", + }, }, nil, function(player) @@ -490,289 +471,261 @@ mission7:addChildKeyword({ "yes" }, StdModule.say, ) -- Mission 7: Decline -mission7:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Then do whatever you have to do first, but please hurry!", - ungreet = true - }) +mission7:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Then do whatever you have to do first, but please hurry!", + ungreet = true, +}) -- Mission 7: Finish - Confirm/Decline (Without having the book) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "What happened, you say? The book was already burnt to ashes? That's too bad... well, you deserve a reward for your courage anyway. Thanks for at least trying. ...", - "I was trying to figure out a way to get into the orc fortress by maybe using their language... but that won't work now I fear. ...", - "We do have to stop the trolls though before taking care of the orcs. I found their tunnel in the northern ruins. Are you prepared for your next mission?" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission07) == 1 and player:getStorageValue(Storage.TheRookieGuard.LibraryChest) == 1 and player:getItemCount(12675) <= 0 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission07, 2) - player:setStorageValue(Storage.TheRookieGuard.LibraryDoor, -1) - player:addExperience(100, true) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "What happened, you say? The book was already burnt to ashes? That's too bad... well, you deserve a reward for your courage anyway. Thanks for at least trying. ...", + "I was trying to figure out a way to get into the orc fortress by maybe using their language... but that won't work now I fear. ...", + "We do have to stop the trolls though before taking care of the orcs. I found their tunnel in the northern ruins. Are you prepared for your next mission?", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission07) == 1 and player:getStorageValue(Storage.TheRookieGuard.LibraryChest) == 1 and player:getItemCount(12675) <= 0 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission07, 2) + player:setStorageValue(Storage.TheRookieGuard.LibraryDoor, -1) + player:addExperience(100, true) +end) keywordHandler:addAliasKeyword({ "no" }) -- Mission 7: Finish - Confirm (Having the book) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Great job down there! You do deserve a reward for your courage. Here is a platinum coin for you, worth 100 gold coins. Let me take a look at the book... ...", - "Argh... the pages are barely readable anymore. I was trying to figure out a way to get into the orc fortress by maybe using their language... but that won't work now I fear. ...", - "We do have to stop the trolls though before taking care of the orcs. I found their tunnel in the northern ruins. Are you prepared for your next mission?" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission07) == 1 and player:getStorageValue(Storage.TheRookieGuard.LibraryChest) == 1 and player:getItemCount(12675) >= 1 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission07, 2) - player:setStorageValue(Storage.TheRookieGuard.LibraryDoor, -1) - player:removeItem(12675, 1) - player:addExperience(100, true) - player:addItemEx(Game.createItem(3035, 1), true, CONST_SLOT_WHEREEVER) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Great job down there! You do deserve a reward for your courage. Here is a platinum coin for you, worth 100 gold coins. Let me take a look at the book... ...", + "Argh... the pages are barely readable anymore. I was trying to figure out a way to get into the orc fortress by maybe using their language... but that won't work now I fear. ...", + "We do have to stop the trolls though before taking care of the orcs. I found their tunnel in the northern ruins. Are you prepared for your next mission?", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission07) == 1 and player:getStorageValue(Storage.TheRookieGuard.LibraryChest) == 1 and player:getItemCount(12675) >= 1 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission07, 2) + player:setStorageValue(Storage.TheRookieGuard.LibraryDoor, -1) + player:removeItem(12675, 1) + player:addExperience(100, true) + player:addItemEx(Game.createItem(3035, 1), true, CONST_SLOT_WHEREEVER) +end) -- Mission 7: Finish - Decline (Having the book) -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Oh, but you have it! Great job down there! You do deserve a reward for your courage. Here is a platinum coin for you, worth 100 gold coins. Let me take a look at the book... ...", - "Argh... the pages are barely readable anymore. I was trying to figure out a way to get into the orc fortress by maybe using their language... but that won't work now I fear. ...", - "We do have to stop the trolls though before taking care of the orcs. I found their tunnel in the northern ruins. Are you prepared for your next mission?" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission07) == 1 and player:getStorageValue(Storage.TheRookieGuard.LibraryChest) == 1 and player:getItemCount(12675) >= 1 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission07, 2) - player:setStorageValue(Storage.TheRookieGuard.LibraryDoor, -1) - player:removeItem(12675, 1) - player:addExperience(100, true) - player:addItemEx(Game.createItem(3035, 1), true, CONST_SLOT_WHEREEVER) - end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Oh, but you have it! Great job down there! You do deserve a reward for your courage. Here is a platinum coin for you, worth 100 gold coins. Let me take a look at the book... ...", + "Argh... the pages are barely readable anymore. I was trying to figure out a way to get into the orc fortress by maybe using their language... but that won't work now I fear. ...", + "We do have to stop the trolls though before taking care of the orcs. I found their tunnel in the northern ruins. Are you prepared for your next mission?", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission07) == 1 and player:getStorageValue(Storage.TheRookieGuard.LibraryChest) == 1 and player:getItemCount(12675) >= 1 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission07, 2) + player:setStorageValue(Storage.TheRookieGuard.LibraryDoor, -1) + player:removeItem(12675, 1) + player:addExperience(100, true) + player:addItemEx(Game.createItem(3035, 1), true, CONST_SLOT_WHEREEVER) +end) -- Mission 8: Accept -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "First things first. I think by now you should have gathered some money, and it's better to play things safely instead of rushing into the trolls' lair. You might have seen the Bank of Rookgaard downstairs. ...", - "Each Tibian inhabitant has a bank account where you can store your money safely - so in case you die, you won't lose it. ...", - "You don't have to worry about item loss here on Rookgaard, but as soon as you grow stronger and learn a vocation, it can happen to you that you lose some of your items when dying. ...", - "It's probably safer to get used to depositing all of your money on your bank account before you leave for a hunt. ...", - "Go downstairs and talk to Paulie. I'm sure he can explain to you everything you need to know, and he might also give you a small bonus for your account." - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission07) == 2 and player:getStorageValue(Storage.TheRookieGuard.Mission08) == -1 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission08, 1) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "First things first. I think by now you should have gathered some money, and it's better to play things safely instead of rushing into the trolls' lair. You might have seen the Bank of Rookgaard downstairs. ...", + "Each Tibian inhabitant has a bank account where you can store your money safely - so in case you die, you won't lose it. ...", + "You don't have to worry about item loss here on Rookgaard, but as soon as you grow stronger and learn a vocation, it can happen to you that you lose some of your items when dying. ...", + "It's probably safer to get used to depositing all of your money on your bank account before you leave for a hunt. ...", + "Go downstairs and talk to Paulie. I'm sure he can explain to you everything you need to know, and he might also give you a small bonus for your account.", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission07) == 2 and player:getStorageValue(Storage.TheRookieGuard.Mission08) == -1 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission08, 1) +end) -- Mission 8: Decline -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Take a small break then and return to me when you have recovered... and cleaned your face.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission07) == 2 and player:getStorageValue(Storage.TheRookieGuard.Mission08) == -1 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Take a small break then and return to me when you have recovered... and cleaned your face.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission07) == 2 and player:getStorageValue(Storage.TheRookieGuard.Mission08) == -1 +end) -- Mission 9: Accept -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Very well. What I know is the following: somewhere in the northern ruins, the trolls have found a way to dig a tunnel that leads to the library vault. That's how they were able to set fire to it. ...", - "You need to discover that tunnel and find a way to make it collapse. Maybe you're able to use some of the trolls' tools. Make sure that they can't enter the village via that tunnel anymore! ...", - "And please don't hurt yourself in the process. You'll probably have to fight them, so bring food and maybe a potion. If you need to buy something, don't forget that you can withdraw money from your bank account. Good luck!" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission08) == 2 and player:getStorageValue(Storage.TheRookieGuard.Mission09) == -1 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission09, 1) - player:setStorageValue(Storage.TheRookieGuard.TrollChests, 0) - player:setStorageValue(Storage.TheRookieGuard.TunnelPillars, 0) - player:addMapMark({ x = 32094, y = 32137, z = 7 }, MAPMARK_GREENSOUTH, "Troll Caves") - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Very well. What I know is the following: somewhere in the northern ruins, the trolls have found a way to dig a tunnel that leads to the library vault. That's how they were able to set fire to it. ...", + "You need to discover that tunnel and find a way to make it collapse. Maybe you're able to use some of the trolls' tools. Make sure that they can't enter the village via that tunnel anymore! ...", + "And please don't hurt yourself in the process. You'll probably have to fight them, so bring food and maybe a potion. If you need to buy something, don't forget that you can withdraw money from your bank account. Good luck!", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission08) == 2 and player:getStorageValue(Storage.TheRookieGuard.Mission09) == -1 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission09, 1) + player:setStorageValue(Storage.TheRookieGuard.TrollChests, 0) + player:setStorageValue(Storage.TheRookieGuard.TunnelPillars, 0) + player:addMapMark({ x = 32094, y = 32137, z = 7 }, MAPMARK_GREENSOUTH, "Troll Caves") +end) -- Mission 9: Decline -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Alright, then just let me know when you're ready. Don't take too much time though.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission08) == 2 and player:getStorageValue(Storage.TheRookieGuard.Mission09) == -1 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Alright, then just let me know when you're ready. Don't take too much time though.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission08) == 2 and player:getStorageValue(Storage.TheRookieGuard.Mission09) == -1 +end) -- Mission 9: Finish - Accept Reward (Brass helmet) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "This brass helmet will make sure you don't hurt your head. I probably should have given that to you BEFORE you made a rocky tunnel collapse! Take your well-deserved break. Once you're ready for the next mission, talk to me again.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission09) == 9 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission09, 10) - player:addItemEx(Game.createItem(3354, 1), true, CONST_SLOT_WHEREEVER) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "This brass helmet will make sure you don't hurt your head. I probably should have given that to you BEFORE you made a rocky tunnel collapse! Take your well-deserved break. Once you're ready for the next mission, talk to me again.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission09) == 9 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission09, 10) + player:addItemEx(Game.createItem(3354, 1), true, CONST_SLOT_WHEREEVER) +end) -- Mission 9: Finish - Reject Reward (Brass helmet) -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Seriously, don't reject that offer. I'm going to give you a brass helmet. No one refuses free stuff! If you don't like it, you can sell it - I don't need it anymore. I promise there are no fleas in it. Want it?" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission09) == 9 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Seriously, don't reject that offer. I'm going to give you a brass helmet. No one refuses free stuff! If you don't like it, you can sell it - I don't need it anymore. I promise there are no fleas in it. Want it?", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission09) == 9 +end) -- Mission 10: Accept -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Now that we got rid of the troll threat, it's about time we get back to the imminent danger coming from the orc side of Rookgaard. The spider web you retrieved was only the first step - I've thought of something else. ...", - "To infiltrate the orc fortress, we're going to make use of a technique I've learnt on the battlefield - distraction! I'll explain the plan to you when everything's ready, but for now I have a small favour to ask. ...", - "Please go to the graveyard east of the village, enter the crypt and retrieve a bone. Now I know this is a little morbid, but it would be best if it still had some meat on it. ...", - "The graveyard hasn't been used by the villagers for a long time. It's cursed - skeletons are roaming around, so be careful. Take this garlic necklace just in case. ...", - "Undead monsters tend to drain your life - because their own life force is gone. If you wear it, you'll be protected from it. Search around in the coffins in the crypt, one of them should hold a nice fleshy bone. See you soon!" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission09) == 10 and player:getStorageValue(Storage.TheRookieGuard.Mission10) == -1 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission10, 1) - player:setStorageValue(Storage.TheRookieGuard.UnholyCryptDoor, 1) - player:setStorageValue(Storage.TheRookieGuard.UnholyCryptChests, 0) - player:addItemEx(Game.createItem(3083, 1), true, CONST_SLOT_WHEREEVER) - player:addMapMark({ x = 32131, y = 32201, z = 7 }, MAPMARK_GREENSOUTH, "Unholy Crypt") - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Now that we got rid of the troll threat, it's about time we get back to the imminent danger coming from the orc side of Rookgaard. The spider web you retrieved was only the first step - I've thought of something else. ...", + "To infiltrate the orc fortress, we're going to make use of a technique I've learnt on the battlefield - distraction! I'll explain the plan to you when everything's ready, but for now I have a small favour to ask. ...", + "Please go to the graveyard east of the village, enter the crypt and retrieve a bone. Now I know this is a little morbid, but it would be best if it still had some meat on it. ...", + "The graveyard hasn't been used by the villagers for a long time. It's cursed - skeletons are roaming around, so be careful. Take this garlic necklace just in case. ...", + "Undead monsters tend to drain your life - because their own life force is gone. If you wear it, you'll be protected from it. Search around in the coffins in the crypt, one of them should hold a nice fleshy bone. See you soon!", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission09) == 10 and player:getStorageValue(Storage.TheRookieGuard.Mission10) == -1 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission10, 1) + player:setStorageValue(Storage.TheRookieGuard.UnholyCryptDoor, 1) + player:setStorageValue(Storage.TheRookieGuard.UnholyCryptChests, 0) + player:addItemEx(Game.createItem(3083, 1), true, CONST_SLOT_WHEREEVER) + player:addMapMark({ x = 32131, y = 32201, z = 7 }, MAPMARK_GREENSOUTH, "Unholy Crypt") +end) -- Mission 10: Decline -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Let me know when you're ready. This should be fun.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission09) == 10 and player:getStorageValue(Storage.TheRookieGuard.Mission10) == -1 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Let me know when you're ready. This should be fun.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission09) == 10 and player:getStorageValue(Storage.TheRookieGuard.Mission10) == -1 +end) -- Mission 10: Confirm (Explain again) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "Please go to the graveyard east of the village, enter the crypt and retrieve a bone. Now I know this is a little morbid, but it would be best if it still had some meat on it. ...", - "The graveyard hasn't been used by the villagers for a long time. It's cursed - skeletons are roaming around, so be careful. ...", - "Undead monsters tend to drain your life - because their own life force is gone. If you wear the garlic necklace I gave you, you'll be protected from it. Search around in the coffins in the crypt, one of them should hold a nice fleshy bone. See you soon!" - } +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Please go to the graveyard east of the village, enter the crypt and retrieve a bone. Now I know this is a little morbid, but it would be best if it still had some meat on it. ...", + "The graveyard hasn't been used by the villagers for a long time. It's cursed - skeletons are roaming around, so be careful. ...", + "Undead monsters tend to drain your life - because their own life force is gone. If you wear the garlic necklace I gave you, you'll be protected from it. Search around in the coffins in the crypt, one of them should hold a nice fleshy bone. See you soon!", }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 1 and player:getStorageValue(Storage.TheRookieGuard.Sarcophagus) == -1 end -) +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 1 and player:getStorageValue(Storage.TheRookieGuard.Sarcophagus) == -1 +end) -- Mission 10: Decline (Explain again) -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Okay, then good hunting.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 1 and player:getStorageValue(Storage.TheRookieGuard.Sarcophagus) == -1 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Okay, then good hunting.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 1 and player:getStorageValue(Storage.TheRookieGuard.Sarcophagus) == -1 +end) -- Mission 10: Finish - Confirm/Decline (Having the fleshy bone) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well done, this bone is exactly what I needed! Great. I have to do some preparations, but as reward for your great work, I have a shiny new weapon for you. Here, would you like to have this sword?" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 1 and player:getStorageValue(Storage.TheRookieGuard.Sarcophagus) == 1 and player:getItemCount(12674) >= 1 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission10, 2) - player:addExperience(150, true) - player:removeItem(12674, 1) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well done, this bone is exactly what I needed! Great. I have to do some preparations, but as reward for your great work, I have a shiny new weapon for you. Here, would you like to have this sword?", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 1 and player:getStorageValue(Storage.TheRookieGuard.Sarcophagus) == 1 and player:getItemCount(12674) >= 1 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission10, 2) + player:addExperience(150, true) + player:removeItem(12674, 1) +end) keywordHandler:addAliasKeyword({ "no" }) -- Mission 10: Finish - Confirm/Decline (Without having the fleshy bone) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Ah... well, if you lost that bone on the way, that's too bad. I just hope you didn't get hungry and nibbled on it. I wouldn't eat cursed flesh if I were you. Anyway, you can still have this old sword as reward, do you want it?" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 1 and player:getStorageValue(Storage.TheRookieGuard.Sarcophagus) == 1 and player:getItemCount(12674) == 0 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission10, 2) - player:addExperience(80, true) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Ah... well, if you lost that bone on the way, that's too bad. I just hope you didn't get hungry and nibbled on it. I wouldn't eat cursed flesh if I were you. Anyway, you can still have this old sword as reward, do you want it?", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 1 and player:getStorageValue(Storage.TheRookieGuard.Sarcophagus) == 1 and player:getItemCount(12674) == 0 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission10, 2) + player:addExperience(80, true) +end) keywordHandler:addAliasKeyword({ "no" }) -- Mission 10: Finish - Accept Reward (Sword) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "This sword has helped me in many fierce battles. I hope you can put it to good use. Once you're ready for the next mission, talk to me again.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 2 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission10, 3) - player:addItemEx(Game.createItem(3264, 1), true, CONST_SLOT_WHEREEVER) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "This sword has helped me in many fierce battles. I hope you can put it to good use. Once you're ready for the next mission, talk to me again.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 2 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission10, 3) + player:addItemEx(Game.createItem(3264, 1), true, CONST_SLOT_WHEREEVER) +end) -- Mission 10: Finish - Reject Reward (Sword) -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Seriously, don't reject that offer. Just take that sword, it's free. If you don't like it, you can sell it - I don't need it anymore. I promise there are no blood stains on it. Want it?" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 2 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Seriously, don't reject that offer. Just take that sword, it's free. If you don't like it, you can sell it - I don't need it anymore. I promise there are no blood stains on it. Want it?", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 2 +end) -- Mission 11: Start -local mission11 = keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "I'm happy to hear that! We already have the paralyse trap and the fleshy bone, and now we need one final ingredient to weaken Kraknaknork so that you stand a chance against him. ...", - "Wasp poison! There are many toxic creatures - like snakes or poison spiders - but none is as deadly as the wasp. At least none on Rookgaard. If we could poison Kraknaknork with it, I think he won't be able to make use of his spells for quite a while. ...", - "The only problem is - to get it, you need to get close to a wasp, kill it and extract some poison from its dead body. Wasps are located on the north-western side of Rookgaard, which is quite dangerous. ...", - "However, I can give you something for protection - a silver amulet. As long as you wear it, poison can't harm you as much as it usually would do. I'll also give you the flask which you have to use on a fresh, dead wasp. Are you prepared for that mission?" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 3 and player:getStorageValue(Storage.TheRookieGuard.Mission11) == -1 end -) +local mission11 = keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "I'm happy to hear that! We already have the paralyse trap and the fleshy bone, and now we need one final ingredient to weaken Kraknaknork so that you stand a chance against him. ...", + "Wasp poison! There are many toxic creatures - like snakes or poison spiders - but none is as deadly as the wasp. At least none on Rookgaard. If we could poison Kraknaknork with it, I think he won't be able to make use of his spells for quite a while. ...", + "The only problem is - to get it, you need to get close to a wasp, kill it and extract some poison from its dead body. Wasps are located on the north-western side of Rookgaard, which is quite dangerous. ...", + "However, I can give you something for protection - a silver amulet. As long as you wear it, poison can't harm you as much as it usually would do. I'll also give you the flask which you have to use on a fresh, dead wasp. Are you prepared for that mission?", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 3 and player:getStorageValue(Storage.TheRookieGuard.Mission11) == -1 +end) -- Mission 11: Decline Start -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, then just let me know when you're ready.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 3 and player:getStorageValue(Storage.TheRookieGuard.Mission11) == -1 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, then just let me know when you're ready.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission10) == 3 and player:getStorageValue(Storage.TheRookieGuard.Mission11) == -1 +end) -- Mission 11: Accept -mission11:addChildKeyword({ "yes" }, StdModule.say, +mission11:addChildKeyword( + { "yes" }, + StdModule.say, { npcHandler = npcHandler, text = "Alright. Here is the empty flask to use on a dead wasp. I also marked the wasps' nest on your map. Be careful and don't forget to wear your silver amulet for poison protection!", - ungreet = true + ungreet = true, }, nil, function(player) @@ -784,91 +737,84 @@ mission11:addChildKeyword({ "yes" }, StdModule.say, ) -- Mission 11: Decline -mission11:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Should I explain it again?", - reset = true - }) +mission11:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Should I explain it again?", + reset = true, +}) -- Mission 11: Confirm - Lost Flask (Having it) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Oh, but there you have it in your inventory! Yeah, your backpack is a bit of a mess. I understand you overlooked it. Dig deeper!", - ungreet = true - }, - function(player) return (player:getStorageValue(Storage.TheRookieGuard.Mission11) == 1 or player:getStorageValue(Storage.TheRookieGuard.Mission11) == 2) and player:getItemCount(12785) > 0 end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Oh, but there you have it in your inventory! Yeah, your backpack is a bit of a mess. I understand you overlooked it. Dig deeper!", + ungreet = true, +}, function(player) + return (player:getStorageValue(Storage.TheRookieGuard.Mission11) == 1 or player:getStorageValue(Storage.TheRookieGuard.Mission11) == 2) and player:getItemCount(12785) > 0 +end) -- Mission 11: Confirm - Lost Flask (Without having it) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "No problem. Here's a new one. I can only give you one per hour though, so try not to lose it again this time.", - ungreet = true - }, - function(player) return (player:getStorageValue(Storage.TheRookieGuard.Mission11) == 1 or player:getStorageValue(Storage.TheRookieGuard.Mission11) == 2) and player:getItemCount(12785) == 0 end, - function(player) - player:addItemEx(Game.createItem(12785, 1), true, CONST_SLOT_WHEREEVER) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "No problem. Here's a new one. I can only give you one per hour though, so try not to lose it again this time.", + ungreet = true, +}, function(player) + return (player:getStorageValue(Storage.TheRookieGuard.Mission11) == 1 or player:getStorageValue(Storage.TheRookieGuard.Mission11) == 2) and player:getItemCount(12785) == 0 +end, function(player) + player:addItemEx(Game.createItem(12785, 1), true, CONST_SLOT_WHEREEVER) +end) -- Mission 11: Decline - Lost Flask -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Great, then please find the wasps' nest, kill one and use the empty flask on its dead body.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 1 or player:getStorageValue(Storage.TheRookieGuard.Mission11) == 2 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Great, then please find the wasps' nest, kill one and use the empty flask on its dead body.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 1 or player:getStorageValue(Storage.TheRookieGuard.Mission11) == 2 +end) -- Mission 11: Finish - Confirm Give (Wasp poison flask, having it) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "|PLAYERNAME|, I must say I'm impressed. Not everyone would dare go into that region of Rookgaard and face creatures as strong as wasps. Wait, let me give something to you... ...", - "Here, with a drop of the wasp poison this potion turned into an effective antidote. Should you get poisoned again and are losing a lot of health, use the antidote potion to cure yourself. ...", - "There is also a rune and a spell to remove poison available once you leave this island and arrive on the mainland. It's always good to protect yourself! ...", - "And I have a good shield for you, too. Here, can you carry it?" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 3 and player:getItemCount(12784) > 0 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission11, 4) - player:removeItem(12784, 1) - player:addItemEx(Game.createItem(7644, 1), true, CONST_SLOT_WHEREEVER) - player:addExperience(150, true) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "|PLAYERNAME|, I must say I'm impressed. Not everyone would dare go into that region of Rookgaard and face creatures as strong as wasps. Wait, let me give something to you... ...", + "Here, with a drop of the wasp poison this potion turned into an effective antidote. Should you get poisoned again and are losing a lot of health, use the antidote potion to cure yourself. ...", + "There is also a rune and a spell to remove poison available once you leave this island and arrive on the mainland. It's always good to protect yourself! ...", + "And I have a good shield for you, too. Here, can you carry it?", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 3 and player:getItemCount(12784) > 0 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission11, 4) + player:removeItem(12784, 1) + player:addItemEx(Game.createItem(7644, 1), true, CONST_SLOT_WHEREEVER) + player:addExperience(150, true) +end) -- Mission 11: Finish - Decline Give (Wasp poison flask) -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Well, please come back with the poison soon. We won't have much time until Kraknaknork's next attack.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 3 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Well, please come back with the poison soon. We won't have much time until Kraknaknork's next attack.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 3 +end) -- Mission 11: Finish - Confirm Give (Wasp poison flask, without having it) -local mission11Reset = keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Oh, but you don't carry any - did you lose the flask? I can give you a new empty one, but that will also reset your mission, meaning you have to extract new poison. Would you like that?" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 3 and player:getItemCount(12784) == 0 end -) +local mission11Reset = keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Oh, but you don't carry any - did you lose the flask? I can give you a new empty one, but that will also reset your mission, meaning you have to extract new poison. Would you like that?", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 3 and player:getItemCount(12784) == 0 +end) -- Mission 11: Confirm - Reset Mission -mission11Reset:addChildKeyword({ "yes" }, StdModule.say, +mission11Reset:addChildKeyword( + { "yes" }, + StdModule.say, { npcHandler = npcHandler, text = "Alright. Here is the empty flask to use on a dead wasp. Don't lose it this time!", - ungreet = true + ungreet = true, }, nil, function(player) @@ -878,127 +824,113 @@ mission11Reset:addChildKeyword({ "yes" }, StdModule.say, ) -- Mission 11: Decline - Reset Mission -mission11Reset:addChildKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Great, then please find the wasps' nest, kill one and use the empty flask on its dead body.", - ungreet = true - } -) +mission11Reset:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Great, then please find the wasps' nest, kill one and use the empty flask on its dead body.", + ungreet = true, +}) -- Mission 11: Finish - Accept Reward (Brass shield) -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "This brass shield is actually brand-new. It's never been used! I hope it will serve you well. Take a small break, regenerate your health, and then talk to me again for your final mission!", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 4 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission11, 5) - player:addItemEx(Game.createItem(3411, 1), true, CONST_SLOT_WHEREEVER) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "This brass shield is actually brand-new. It's never been used! I hope it will serve you well. Take a small break, regenerate your health, and then talk to me again for your final mission!", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 4 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission11, 5) + player:addItemEx(Game.createItem(3411, 1), true, CONST_SLOT_WHEREEVER) +end) -- Mission 11: Finish - Reject Reward (Brass shield) -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Seriously, don't reject that offer. Just take that shield, it's free. If you don't like it, you can sell it - I don't need it anymore. I promise it's really brand-new. Want it?" - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 4 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Seriously, don't reject that offer. Just take that shield, it's free. If you don't like it, you can sell it - I don't need it anymore. I promise it's really brand-new. Want it?", +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 4 +end) -- Mission 12: Accept -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "The air smells like victory today. I've kept the items you brought from your journeys safe - the time has come to use them. ...", - "Enter the small treasure room under the academy - just down the stairs and to the right, near Paulie - and open the large blue chest to retrieve them. You'll find a rolling pin, the fleshy bone, the wasp poison and a tarantula trap. ...", - "Now let me explain the plan in detail. Go to the orc fortress - you've already been nearby when hunting for the wasp poison, it's the same way, but I'll mark it on your map just in case. ...", - "There you will have to find a way to sneak past the guards, they are much too strong for you. The rolling pin might come in handy during that part. Afterwards, the fleshy bone will help to create a distraction to get into the fortress. ...", - "Once you're inside the fortress, find the orc kitchen and pour the wasp poison into Kraknaknork's soup! The tarantula trap will come in handy if you meet a guard who might seem simply too fast for you. You can use it on him to slow him down. ...", - "|PLAYERNAME|, take the items and go claim your victory. I know you will do us proud. Good luck!" - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 5 and player:getStorageValue(Storage.TheRookieGuard.Mission12) == -1 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission12, 1) - player:setStorageValue(Storage.TheRookieGuard.AcademyDoor, 1) - player:setStorageValue(Storage.TheRookieGuard.OrcFortressChests, 0) - player:setStorageValue(Storage.TheRookieGuard.KraknaknorkChests, 0) - player:addMapMark({ x = 31976, y = 32156, z = 7 }, MAPMARK_SKULL, "Orc Fortress") - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "The air smells like victory today. I've kept the items you brought from your journeys safe - the time has come to use them. ...", + "Enter the small treasure room under the academy - just down the stairs and to the right, near Paulie - and open the large blue chest to retrieve them. You'll find a rolling pin, the fleshy bone, the wasp poison and a tarantula trap. ...", + "Now let me explain the plan in detail. Go to the orc fortress - you've already been nearby when hunting for the wasp poison, it's the same way, but I'll mark it on your map just in case. ...", + "There you will have to find a way to sneak past the guards, they are much too strong for you. The rolling pin might come in handy during that part. Afterwards, the fleshy bone will help to create a distraction to get into the fortress. ...", + "Once you're inside the fortress, find the orc kitchen and pour the wasp poison into Kraknaknork's soup! The tarantula trap will come in handy if you meet a guard who might seem simply too fast for you. You can use it on him to slow him down. ...", + "|PLAYERNAME|, take the items and go claim your victory. I know you will do us proud. Good luck!", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 5 and player:getStorageValue(Storage.TheRookieGuard.Mission12) == -1 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission12, 1) + player:setStorageValue(Storage.TheRookieGuard.AcademyDoor, 1) + player:setStorageValue(Storage.TheRookieGuard.OrcFortressChests, 0) + player:setStorageValue(Storage.TheRookieGuard.KraknaknorkChests, 0) + player:addMapMark({ x = 31976, y = 32156, z = 7 }, MAPMARK_SKULL, "Orc Fortress") +end) -- Mission 12: Decline -keywordHandler:addKeyword({ "no" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Rest for a bit, but don't take too much time to come back.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 5 and player:getStorageValue(Storage.TheRookieGuard.Mission12) == -1 end -) +keywordHandler:addKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Rest for a bit, but don't take too much time to come back.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission11) == 5 and player:getStorageValue(Storage.TheRookieGuard.Mission12) == -1 +end) -- Mission 12: Finish - Confirm/Decline -keywordHandler:addKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = { - "You DID kill him indeed! Incredible! This little village can finally live in peace again - and you've grown so strong, too. I'm proud of you, Synanceia Horrida. My work here is done, and yours too. Thank you for all you've done for us. ...", - "Now all that is left for you to do here is to talk to the oracle above the academy and travel to the Isle of Destiny. There, you will determine your future - which I'm sure is a bright one. ...", - "What will become of you? A mighty sorcerer? A fierce knight? A skilled paladin? Or a powerful druid? Only you can decide. ...", - "Rookgaard will miss you, but the whole world of Tibia is open to you now. Take care, |PLAYERNAME|. It's good to know you." - } - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Mission12) == 14 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Mission12, 15) - player:setStorageValue(Storage.TheRookieGuard.Questline, 2) - player:setStorageValue(Storage.TheRookieGuard.AcademyDoor, -1) - end -) +keywordHandler:addKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "You DID kill him indeed! Incredible! This little village can finally live in peace again - and you've grown so strong, too. I'm proud of you, Synanceia Horrida. My work here is done, and yours too. Thank you for all you've done for us. ...", + "Now all that is left for you to do here is to talk to the oracle above the academy and travel to the Isle of Destiny. There, you will determine your future - which I'm sure is a bright one. ...", + "What will become of you? A mighty sorcerer? A fierce knight? A skilled paladin? Or a powerful druid? Only you can decide. ...", + "Rookgaard will miss you, but the whole world of Tibia is open to you now. Take care, |PLAYERNAME|. It's good to know you.", + }, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Mission12) == 14 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Mission12, 15) + player:setStorageValue(Storage.TheRookieGuard.Questline, 2) + player:setStorageValue(Storage.TheRookieGuard.AcademyDoor, -1) +end) keywordHandler:addAliasKeyword({ "no" }) -- Missions: Confirm - Continue (Level 8) -keywordHandler:addKeyword({ "continue" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Alright. Talk to me again to continue with your mission, but heed my words!", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Questline) == 1 and player:getLevel() == 8 and player:getStorageValue(Storage.TheRookieGuard.Level8Warning) == -1 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Level8Warning, 1) - end -) +keywordHandler:addKeyword({ "continue" }, StdModule.say, { + npcHandler = npcHandler, + text = "Alright. Talk to me again to continue with your mission, but heed my words!", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Questline) == 1 and player:getLevel() == 8 and player:getStorageValue(Storage.TheRookieGuard.Level8Warning) == -1 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Level8Warning, 1) +end) -- Missions: Confirm - Delete (Level 8) -keywordHandler:addKeyword({ "delete" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Alright.", - ungreet = true - }, - function(player) return player:getStorageValue(Storage.TheRookieGuard.Questline) == 1 and player:getLevel() == 8 and player:getStorageValue(Storage.TheRookieGuard.Level8Warning) == -1 end, - function(player) - player:setStorageValue(Storage.TheRookieGuard.Questline, -1) - player:setStorageValue(Storage.TheRookieGuard.Mission01, -1) - player:setStorageValue(Storage.TheRookieGuard.Mission02, -1) - player:setStorageValue(Storage.TheRookieGuard.Mission03, -1) - player:setStorageValue(Storage.TheRookieGuard.Mission04, -1) - player:setStorageValue(Storage.TheRookieGuard.Mission05, -1) - player:setStorageValue(Storage.TheRookieGuard.Mission06, -1) - player:setStorageValue(Storage.TheRookieGuard.Mission07, -1) - player:setStorageValue(Storage.TheRookieGuard.Mission08, -1) - player:setStorageValue(Storage.TheRookieGuard.Mission09, -1) - player:setStorageValue(Storage.TheRookieGuard.Mission10, -1) - player:setStorageValue(Storage.TheRookieGuard.Mission11, -1) - player:setStorageValue(Storage.TheRookieGuard.Mission12, -1) - end -) +keywordHandler:addKeyword({ "delete" }, StdModule.say, { + npcHandler = npcHandler, + text = "Alright.", + ungreet = true, +}, function(player) + return player:getStorageValue(Storage.TheRookieGuard.Questline) == 1 and player:getLevel() == 8 and player:getStorageValue(Storage.TheRookieGuard.Level8Warning) == -1 +end, function(player) + player:setStorageValue(Storage.TheRookieGuard.Questline, -1) + player:setStorageValue(Storage.TheRookieGuard.Mission01, -1) + player:setStorageValue(Storage.TheRookieGuard.Mission02, -1) + player:setStorageValue(Storage.TheRookieGuard.Mission03, -1) + player:setStorageValue(Storage.TheRookieGuard.Mission04, -1) + player:setStorageValue(Storage.TheRookieGuard.Mission05, -1) + player:setStorageValue(Storage.TheRookieGuard.Mission06, -1) + player:setStorageValue(Storage.TheRookieGuard.Mission07, -1) + player:setStorageValue(Storage.TheRookieGuard.Mission08, -1) + player:setStorageValue(Storage.TheRookieGuard.Mission09, -1) + player:setStorageValue(Storage.TheRookieGuard.Mission10, -1) + player:setStorageValue(Storage.TheRookieGuard.Mission11, -1) + player:setStorageValue(Storage.TheRookieGuard.Mission12, -1) +end) npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell.") diff --git a/data-otservbr-global/npc/velvet.lua b/data-otservbr-global/npc/velvet.lua index c3c8d2c8b02..f63137e9836 100644 --- a/data-otservbr-global/npc/velvet.lua +++ b/data-otservbr-global/npc/velvet.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 96, lookLegs = 115, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -75,7 +75,7 @@ npcConfig.shop = { { itemName = "small white pillow", clientId = 2392, buy = 20 }, { itemName = "white tapestry", clientId = 2667, buy = 25 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -86,7 +86,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/vera.lua b/data-otservbr-global/npc/vera.lua index 9227bd4bd91..a9aad92fc80 100644 --- a/data-otservbr-global/npc/vera.lua +++ b/data-otservbr-global/npc/vera.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 115, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Have you moved to a new home? I\'m the specialist for equipping it.' } + { text = "Have you moved to a new home? I'm the specialist for equipping it." }, } local keywordHandler = KeywordHandler:new() @@ -151,7 +151,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -162,7 +162,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/vescu.lua b/data-otservbr-global/npc/vescu.lua index dd6368727cf..b5bb19f773f 100644 --- a/data-otservbr-global/npc/vescu.lua +++ b/data-otservbr-global/npc/vescu.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 120, lookLegs = 119, lookFeet = 101, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,34 +53,50 @@ end local topic = {} local config = { - ['30 bonelord eyes'] = { storageValue = 1, text = { 'Have you really managed to bring me 30 bonelord eyes? ', 'Do bonelord eyes continue blinking when they are seperated from the bonelord? That is a scary thought.', 'Aw-awsome! Squishy! Now, please bring me 10 {red dragon scales}.' }, itemId = 5898, count = 30 }, - ['bonelord eyes'] = { storageValue = 1, text = { 'Have you really managed to bring me 30 bonelord eyes? ', 'Do bonelord eyes continue blinking when they are seperated from the bonelord? That is a scary thought.', 'Aw-awsome! Squishy! Now, please bring me 10 {red dragon scales}.' }, itemId = 5898, count = 30 }, - ['bonelord eye'] = { storageValue = 1, text = { 'Have you really managed to bring me 30 bonelord eyes? ', 'Do bonelord eyes continue blinking when they are seperated from the bonelord? That is a scary thought.', 'Aw-awsome! Squishy! Now, please bring me 10 {red dragon scales}.' }, itemId = 5898, count = 30 }, - ['10 red dragon scales'] = { storageValue = 2, text = { 'D-did you get all of the 10 red dragon scales? ', 'Have you ever wondered if a red dragon means \'stop\' whereas a green dragon means \'go\'?', 'G-good work, ... wha-what\'s your name again? Anyway... come back with 30 {lizard scales}.' }, itemId = 5882, count = 10 }, - ['red dragon scales'] = { storageValue = 2, text = { 'D-did you get all of the 10 red dragon scales? ', 'Have you ever wondered if a red dragon means \'stop\' whereas a green dragon means \'go\'?', 'G-good work, ... wha-what\'s your name again? Anyway... come back with 30 {lizard scales}.' }, itemId = 5882, count = 10 }, - ['red dragon scale'] = { storageValue = 2, text = { 'D-did you get all of the 10 red dragon scales? ', 'Have you ever wondered if a red dragon means \'stop\' whereas a green dragon means \'go\'?', 'G-good work, ... wha-what\'s your name again? Anyway... come back with 30 {lizard scales}.' }, itemId = 5882, count = 10 }, - ['30 lizard scales'] = { storageValue = 3, text = { 'Ah, are those - - the 30 lizard scales?', 'I once had a girlfriend c-called L-lizzie. She had s-scales too.', 'This potion will become p-pretty scaly. I\'m not sure yet if I want to d-drink that. I think the 20 {fish fins} which come next won\'t really improve it. ' }, itemId = 5881, count = 30 }, - ['lizard scales'] = { storageValue = 3, text = { 'Ah, are those - - the 30 lizard scales?', 'I once had a girlfriend c-called L-lizzie. She had s-scales too.', 'This potion will become p-pretty scaly. I\'m not sure yet if I want to d-drink that. I think the 20 {fish fins} which come next won\'t really improve it. ' }, itemId = 5881, count = 30 }, - ['lizard scale'] = { storageValue = 3, text = { 'Ah, are those - - the 30 lizard scales?', 'I once had a girlfriend c-called L-lizzie. She had s-scales too.', 'This potion will become p-pretty scaly. I\'m not sure yet if I want to d-drink that. I think the 20 {fish fins} which come next won\'t really improve it. ' }, itemId = 5881, count = 30 }, - ['20 fish fins'] = { storageValue = 4, text = { 'Eww, is that disgusting smell coming from the 20 fish fins? ', 'Not normal fish fins of course. We need Quara fish fins. If you haven\'t h-heard about them, ask the - - plorer society.', 'Alrrrrrrright! Thanks for the f-fish. Get me the 20 ounces of {vampire dust} now. I\'ll have another b-beer.' }, itemId = 5895, count = 20 }, - ['fish fins'] = { storageValue = 4, text = { 'Eww, is that disgusting smell coming from the 20 fish fins? ', 'Not normal fish fins of course. We need Quara fish fins. If you haven\'t h-heard about them, ask the - - plorer society.', 'Alrrrrrrright! Thanks for the f-fish. Get me the 20 ounces of {vampire dust} now. I\'ll have another b-beer.' }, itemId = 5895, count = 20 }, - ['fish fin'] = { storageValue = 4, text = { 'Eww, is that disgusting smell coming from the 20 fish fins? ', 'Not normal fish fins of course. We need Quara fish fins. If you haven\'t h-heard about them, ask the - - plorer society.', 'Alrrrrrrright! Thanks for the f-fish. Get me the 20 ounces of {vampire dust} now. I\'ll have another b-beer.' }, itemId = 5895, count = 20 }, - ['20 vampire dust'] = { storageValue = 5, text = { 'Have you collected 20 ounces of vampire d-dust? ', 'Don\'t you think vampires have something - - romantic about them? I think you need a b-blessed steak though to turn them into d-dust.', 'Tha-thank you. Trolls are good for something a-after all. Bring me the 10 ounces of {demon dust} now. ' }, itemId = 5905, count = 20 }, - ['vampire dust'] = { storageValue = 5, text = { 'Have you collected 20 ounces of vampire d-dust? ', 'Don\'t you think vampires have something - - romantic about them? I think you need a b-blessed steak though to turn them into d-dust.', 'Tha-thank you. Trolls are good for something a-after all. Bring me the 10 ounces of {demon dust} now. ' }, itemId = 5905, count = 20 }, - ['10 demon dust'] = { storageValue = 6, text = { 'Have you slain enough d-demons to gather 10 ounces of demon dust? ', 'I like d-demons. They are just as pretty as flamingos. But you need a blessed stake or something to get demon dust. ', - 'G-great. You\'re a reeeal k-killer like me, eh? I think I\'ll g-give you something fun when the potion is complete. But first, b-bring me {warrior\'s sweat}.' }, itemId = 5906, count = 10 }, - ['demon dust'] = { storageValue = 6, text = { 'Have you slain enough d-demons to gather 10 ounces of demon dust? ', 'I like d-demons. They are just as pretty as flamingos. But you need a blessed stake or something to get demon dust. ', - 'G-great. You\'re a reeeal k-killer like me, eh? I think I\'ll g-give you something fun when the potion is complete. But first, b-bring me {warrior\'s sweat}.' }, itemId = 5906, count = 10 }, - ['warrior\'s sweat'] = { storageValue = 7, text = { 'This s-smells even worse than the fish fins. Is that warrior\'s sweat?', 'If you can\'t sweat enough yourself, go ask a Djinn. They do - magical - tractions. Err, extractions.', - 'Yahaha! Here we g-go. I\'ll just take a small sip - . Okay, this is disgusting, but it seems to work. I\'ll teach you something fun, remind me to tell you a {secret} sometime.' }, itemId = 5885 } + ["30 bonelord eyes"] = { storageValue = 1, text = { "Have you really managed to bring me 30 bonelord eyes? ", "Do bonelord eyes continue blinking when they are seperated from the bonelord? That is a scary thought.", "Aw-awsome! Squishy! Now, please bring me 10 {red dragon scales}." }, itemId = 5898, count = 30 }, + ["bonelord eyes"] = { storageValue = 1, text = { "Have you really managed to bring me 30 bonelord eyes? ", "Do bonelord eyes continue blinking when they are seperated from the bonelord? That is a scary thought.", "Aw-awsome! Squishy! Now, please bring me 10 {red dragon scales}." }, itemId = 5898, count = 30 }, + ["bonelord eye"] = { storageValue = 1, text = { "Have you really managed to bring me 30 bonelord eyes? ", "Do bonelord eyes continue blinking when they are seperated from the bonelord? That is a scary thought.", "Aw-awsome! Squishy! Now, please bring me 10 {red dragon scales}." }, itemId = 5898, count = 30 }, + ["10 red dragon scales"] = { storageValue = 2, text = { "D-did you get all of the 10 red dragon scales? ", "Have you ever wondered if a red dragon means 'stop' whereas a green dragon means 'go'?", "G-good work, ... wha-what's your name again? Anyway... come back with 30 {lizard scales}." }, itemId = 5882, count = 10 }, + ["red dragon scales"] = { storageValue = 2, text = { "D-did you get all of the 10 red dragon scales? ", "Have you ever wondered if a red dragon means 'stop' whereas a green dragon means 'go'?", "G-good work, ... wha-what's your name again? Anyway... come back with 30 {lizard scales}." }, itemId = 5882, count = 10 }, + ["red dragon scale"] = { storageValue = 2, text = { "D-did you get all of the 10 red dragon scales? ", "Have you ever wondered if a red dragon means 'stop' whereas a green dragon means 'go'?", "G-good work, ... wha-what's your name again? Anyway... come back with 30 {lizard scales}." }, itemId = 5882, count = 10 }, + ["30 lizard scales"] = { storageValue = 3, text = { "Ah, are those - - the 30 lizard scales?", "I once had a girlfriend c-called L-lizzie. She had s-scales too.", "This potion will become p-pretty scaly. I'm not sure yet if I want to d-drink that. I think the 20 {fish fins} which come next won't really improve it. " }, itemId = 5881, count = 30 }, + ["lizard scales"] = { storageValue = 3, text = { "Ah, are those - - the 30 lizard scales?", "I once had a girlfriend c-called L-lizzie. She had s-scales too.", "This potion will become p-pretty scaly. I'm not sure yet if I want to d-drink that. I think the 20 {fish fins} which come next won't really improve it. " }, itemId = 5881, count = 30 }, + ["lizard scale"] = { storageValue = 3, text = { "Ah, are those - - the 30 lizard scales?", "I once had a girlfriend c-called L-lizzie. She had s-scales too.", "This potion will become p-pretty scaly. I'm not sure yet if I want to d-drink that. I think the 20 {fish fins} which come next won't really improve it. " }, itemId = 5881, count = 30 }, + ["20 fish fins"] = { + storageValue = 4, + text = { "Eww, is that disgusting smell coming from the 20 fish fins? ", "Not normal fish fins of course. We need Quara fish fins. If you haven't h-heard about them, ask the - - plorer society.", "Alrrrrrrright! Thanks for the f-fish. Get me the 20 ounces of {vampire dust} now. I'll have another b-beer." }, + itemId = 5895, + count = 20, + }, + ["fish fins"] = { storageValue = 4, text = { "Eww, is that disgusting smell coming from the 20 fish fins? ", "Not normal fish fins of course. We need Quara fish fins. If you haven't h-heard about them, ask the - - plorer society.", "Alrrrrrrright! Thanks for the f-fish. Get me the 20 ounces of {vampire dust} now. I'll have another b-beer." }, itemId = 5895, count = 20 }, + ["fish fin"] = { storageValue = 4, text = { "Eww, is that disgusting smell coming from the 20 fish fins? ", "Not normal fish fins of course. We need Quara fish fins. If you haven't h-heard about them, ask the - - plorer society.", "Alrrrrrrright! Thanks for the f-fish. Get me the 20 ounces of {vampire dust} now. I'll have another b-beer." }, itemId = 5895, count = 20 }, + ["20 vampire dust"] = { storageValue = 5, text = { "Have you collected 20 ounces of vampire d-dust? ", "Don't you think vampires have something - - romantic about them? I think you need a b-blessed steak though to turn them into d-dust.", "Tha-thank you. Trolls are good for something a-after all. Bring me the 10 ounces of {demon dust} now. " }, itemId = 5905, count = 20 }, + ["vampire dust"] = { storageValue = 5, text = { "Have you collected 20 ounces of vampire d-dust? ", "Don't you think vampires have something - - romantic about them? I think you need a b-blessed steak though to turn them into d-dust.", "Tha-thank you. Trolls are good for something a-after all. Bring me the 10 ounces of {demon dust} now. " }, itemId = 5905, count = 20 }, + ["10 demon dust"] = { + storageValue = 6, + text = { "Have you slain enough d-demons to gather 10 ounces of demon dust? ", "I like d-demons. They are just as pretty as flamingos. But you need a blessed stake or something to get demon dust. ", "G-great. You're a reeeal k-killer like me, eh? I think I'll g-give you something fun when the potion is complete. But first, b-bring me {warrior's sweat}." }, + itemId = 5906, + count = 10, + }, + ["demon dust"] = { + storageValue = 6, + text = { "Have you slain enough d-demons to gather 10 ounces of demon dust? ", "I like d-demons. They are just as pretty as flamingos. But you need a blessed stake or something to get demon dust. ", "G-great. You're a reeeal k-killer like me, eh? I think I'll g-give you something fun when the potion is complete. But first, b-bring me {warrior's sweat}." }, + itemId = 5906, + count = 10, + }, + ["warrior's sweat"] = { + storageValue = 7, + text = { "This s-smells even worse than the fish fins. Is that warrior's sweat?", "If you can't sweat enough yourself, go ask a Djinn. They do - magical - tractions. Err, extractions.", "Yahaha! Here we g-go. I'll just take a small sip - . Okay, this is disgusting, but it seems to work. I'll teach you something fun, remind me to tell you a {secret} sometime." }, + itemId = 5885, + }, } local function greetCallback(npc, creature) local playerId = creature:getId() if Player(creature):getCondition(CONDITION_DRUNK) then - npcHandler:setMessage(MESSAGE_GREET, 'Hey t-there, you look like someone who enjoys a good {booze}.') + npcHandler:setMessage(MESSAGE_GREET, "Hey t-there, you look like someone who enjoys a good {booze}.") else - npcHandler:say('Oh, two t-trolls. Hellooo, wittle twolls. ', npc, creature) + npcHandler:say("Oh, two t-trolls. Hellooo, wittle twolls. ", npc, creature) return false end return true @@ -94,10 +110,9 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'potion') then + if MsgContains(message, "potion") then if player:getStorageValue(Storage.OutfitQuest.AssassinBaseOutfit) < 1 then - npcHandler:say('It\'s so hard to know the exact time when to stop drinking. C-could you help me to brew such a potion?', npc, creature) + npcHandler:say("It's so hard to know the exact time when to stop drinking. C-could you help me to brew such a potion?", npc, creature) npcHandler:setTopic(playerId, 1) end elseif config[message] and npcHandler:getTopic(playerId) == 0 then @@ -108,22 +123,22 @@ local function creatureSayCallback(npc, creature, type, message) else npcHandler:say(config[message].text[2], npc, creature) end - elseif MsgContains(message, 'secret') then + elseif MsgContains(message, "secret") then if player:getStorageValue(Storage.OutfitQuest.AssassinBaseOutfit) == 8 then - npcHandler:say('Right. Since you helped me to b-brew that potion and thus ensured the high quality of my work , I\'ll give you my old assassin costume. It lacks the head part, but it\'s almost like new. Don\'t pretend to be me though, \'kay? ', npc, creature) + npcHandler:say("Right. Since you helped me to b-brew that potion and thus ensured the high quality of my work , I'll give you my old assassin costume. It lacks the head part, but it's almost like new. Don't pretend to be me though, 'kay? ", npc, creature) player:addOutfit(156) player:addOutfit(152) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) player:setStorageValue(Storage.OutfitQuest.AssassinBaseOutfit, 9) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then npcHandler:say({ - 'You\'re a true buddy. I promise I will t-try to avoid killing you even if someone asks me to. ...', - 'Listen, I have this old formula from my grandma. It says... 30 {bonelord eyes}... 10 {red dragon scales}. ...', - 'Then 30 {lizard scales}... 20 {fish fins} - ew, this sounds disgusting, I wonder if this is really a potion or rather a cleaning agent. ...', - 'Add 20 ounces of {vampire dust}, 10 ounces of {demon dust} and mix well with one flask of {warrior\'s sweat}. ...', - 'Okayyy, this is a lot... we\'ll take this step by step. Will you help me gathering 30 {bonelord eyes}?' + "You're a true buddy. I promise I will t-try to avoid killing you even if someone asks me to. ...", + "Listen, I have this old formula from my grandma. It says... 30 {bonelord eyes}... 10 {red dragon scales}. ...", + "Then 30 {lizard scales}... 20 {fish fins} - ew, this sounds disgusting, I wonder if this is really a potion or rather a cleaning agent. ...", + "Add 20 ounces of {vampire dust}, 10 ounces of {demon dust} and mix well with one flask of {warrior's sweat}. ...", + "Okayyy, this is a lot... we'll take this step by step. Will you help me gathering 30 {bonelord eyes}?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then @@ -131,13 +146,13 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.OutfitQuest.DefaultStart, 1) end player:setStorageValue(Storage.OutfitQuest.AssassinBaseOutfit, 1) - npcHandler:say('G-good. Go get them, I\'ll have a beer in the meantime.', npc, creature) + npcHandler:say("G-good. Go get them, I'll have a beer in the meantime.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 3 then local targetMessage = config[topic[playerId]] local count = targetMessage.count or 1 if not player:removeItem(targetMessage.itemId, count) then - npcHandler:say('Next time you lie to me I\'ll k-kill you. Don\'t think I can\'t aim well just because I\'m d-drunk.', npc, creature) + npcHandler:say("Next time you lie to me I'll k-kill you. Don't think I can't aim well just because I'm d-drunk.", npc, creature) npcHandler:setTopic(playerId, 0) return true end @@ -146,11 +161,11 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say(targetMessage.text[3], npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) ~= 3 then - npcHandler:say('Then not .', npc, creature) + npcHandler:say("Then not .", npc, creature) elseif npcHandler:getTopic(playerId) == 3 then - npcHandler:say('H-hurry up! I have to start working soon.', npc, creature) + npcHandler:say("H-hurry up! I have to start working soon.", npc, creature) end npcHandler:setTopic(playerId, 0) end @@ -162,16 +177,16 @@ local function onReleaseFocus(npc, creature) topic[playerId] = nil end -keywordHandler:addKeyword({ 'addon' }, StdModule.say, { npcHandler = npcHandler, text = 'I can give you a scar as an addon. Nyahahah.' }) -keywordHandler:addKeyword({ 'booze' }, StdModule.say, { npcHandler = npcHandler, text = 'Did I say booze? I meant, {flamingo}. Pink birds are kinda cool, don\'t you think? Especially on a painting.' }) -keywordHandler:addKeyword({ 'flamingo' }, StdModule.say, { npcHandler = npcHandler, text = 'You have to enjoy the word. Like, {flayyyminnngoooo}. Say it with me. ' }) -keywordHandler:addKeyword({ 'flayyyminnngoooo' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, you got it! Hahaha, we understand each other. Good {job}. ' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a killer! Yeshindeed! A masterful assassin. I prefer that too \'Peekay\'. ' }) -keywordHandler:addKeyword({ 'outfit' }, StdModule.say, { npcHandler = npcHandler, text = 'O-outfit? You already have a t-troll outfit. That\'s good enough for you. ' }) -keywordHandler:addKeyword({ 'sober' }, StdModule.say, { npcHandler = npcHandler, text = 'I wish there was like a {potion} which makes you sober in an instant. Dwarven rings wear off so fast. ' }) +keywordHandler:addKeyword({ "addon" }, StdModule.say, { npcHandler = npcHandler, text = "I can give you a scar as an addon. Nyahahah." }) +keywordHandler:addKeyword({ "booze" }, StdModule.say, { npcHandler = npcHandler, text = "Did I say booze? I meant, {flamingo}. Pink birds are kinda cool, don't you think? Especially on a painting." }) +keywordHandler:addKeyword({ "flamingo" }, StdModule.say, { npcHandler = npcHandler, text = "You have to enjoy the word. Like, {flayyyminnngoooo}. Say it with me. " }) +keywordHandler:addKeyword({ "flayyyminnngoooo" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, you got it! Hahaha, we understand each other. Good {job}. " }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a killer! Yeshindeed! A masterful assassin. I prefer that too 'Peekay'. " }) +keywordHandler:addKeyword({ "outfit" }, StdModule.say, { npcHandler = npcHandler, text = "O-outfit? You already have a t-troll outfit. That's good enough for you. " }) +keywordHandler:addKeyword({ "sober" }, StdModule.say, { npcHandler = npcHandler, text = "I wish there was like a {potion} which makes you sober in an instant. Dwarven rings wear off so fast. " }) -npcHandler:setMessage(MESSAGE_FAREWELL, 'T-time for another b-beer. ') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Oh, two t-trolls. Hellooo, wittle twolls. ') +npcHandler:setMessage(MESSAGE_FAREWELL, "T-time for another b-beer. ") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Oh, two t-trolls. Hellooo, wittle twolls. ") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/victor.lua b/data-otservbr-global/npc/victor.lua index ef8163789c6..b2f6f2520f2 100644 --- a/data-otservbr-global/npc/victor.lua +++ b/data-otservbr-global/npc/victor.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 78, lookLegs = 38, lookFeet = 95, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,7 +52,7 @@ npcConfig.shop = { { itemName = "great health potion", clientId = 239, buy = 300 }, { itemName = "health potion", clientId = 266, buy = 75 }, { itemName = "strong health potion", clientId = 236, buy = 150 }, - { itemName = "ultimate health potion", clientId = 7643, buy = 500 } + { itemName = "ultimate health potion", clientId = 7643, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -63,7 +63,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/vigintius.lua b/data-otservbr-global/npc/vigintius.lua index 82a2766279d..a592a8773df 100644 --- a/data-otservbr-global/npc/vigintius.lua +++ b/data-otservbr-global/npc/vigintius.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 88, lookFeet = 61, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/vincent.lua b/data-otservbr-global/npc/vincent.lua index e6d443dfaa8..f05050af223 100644 --- a/data-otservbr-global/npc/vincent.lua +++ b/data-otservbr-global/npc/vincent.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 61, lookLegs = 25, lookFeet = 57, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -78,7 +78,7 @@ npcConfig.shop = { { itemName = "spectral bolt", clientId = 35902, buy = 70 }, { itemName = "tarsal arrow", clientId = 14251, buy = 6 }, { itemName = "throwing star", clientId = 3287, buy = 42 }, - { itemName = "vortex bolt", clientId = 14252, buy = 6 } + { itemName = "vortex bolt", clientId = 14252, buy = 6 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -89,7 +89,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/virgil.lua b/data-otservbr-global/npc/virgil.lua index 5992448a4c2..4667ef30af1 100644 --- a/data-otservbr-global/npc/virgil.lua +++ b/data-otservbr-global/npc/virgil.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 98, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Don\'t forget to deposit your money here in the Tibian Bank before you head out for adventure.', yell = false } + { text = "Don't forget to deposit your money here in the Tibian Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/vladruc.lua b/data-otservbr-global/npc/vladruc.lua index 2550866a924..3d79cc19e3c 100644 --- a/data-otservbr-global/npc/vladruc.lua +++ b/data-otservbr-global/npc/vladruc.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/vulturenose.lua b/data-otservbr-global/npc/vulturenose.lua index 5ef78f36970..97610fff906 100644 --- a/data-otservbr-global/npc/vulturenose.lua +++ b/data-otservbr-global/npc/vulturenose.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 96 + lookType = 96, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,20 +53,22 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'enter') then - if player:getStorageValue(Storage.TheShatteredIsles.RaysMission3) == 1 - and player:getStorageValue(Storage.TheShatteredIsles.YavernDoor) < 0 then + if MsgContains(message, "enter") then + if player:getStorageValue(Storage.TheShatteredIsles.RaysMission3) == 1 and player:getStorageValue(Storage.TheShatteredIsles.YavernDoor) < 0 then local headItem = player:getSlotItem(CONST_SLOT_HEAD) local armorItem = player:getSlotItem(CONST_SLOT_ARMOR) local legsItem = player:getSlotItem(CONST_SLOT_LEGS) local feetItem = player:getSlotItem(CONST_SLOT_FEET) - if headItem and headItem.itemid == 6096 and armorItem and armorItem.itemid == 6095 - and legsItem and legsItem.itemid == 5918 and feetItem and feetItem.itemid == 5461 then - npcHandler:say('Hey, I rarely see a dashing pirate like you! Get in, matey!', npc, creature) + if headItem and headItem.itemid == 6096 and armorItem and armorItem.itemid == 6095 and legsItem and legsItem.itemid == 5918 and feetItem and feetItem.itemid == 5461 then + npcHandler:say("Hey, I rarely see a dashing pirate like you! Get in, matey!", npc, creature) player:setStorageValue(Storage.TheShatteredIsles.YavernDoor, 1) else - npcHandler:say("YOU WILL NOT PASS! Erm ... \ - I mean you don't look like a true pirate to me. You won't get in.", npc, creature) + npcHandler:say( + "YOU WILL NOT PASS! Erm ... \ + I mean you don't look like a true pirate to me. You won't get in.", + npc, + creature + ) end end end diff --git a/data-otservbr-global/npc/vuzrog.lua b/data-otservbr-global/npc/vuzrog.lua index 69c91bd0db5..17d02c6dab3 100644 --- a/data-otservbr-global/npc/vuzrog.lua +++ b/data-otservbr-global/npc/vuzrog.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 0, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/wally.lua b/data-otservbr-global/npc/wally.lua index f52dadd2932..a8a19422c90 100644 --- a/data-otservbr-global/npc/wally.lua +++ b/data-otservbr-global/npc/wally.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 95, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,7 +55,7 @@ npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { { itemName = "label", clientId = 3507, buy = 1 }, { itemName = "letter", clientId = 3505, buy = 8 }, - { itemName = "parcel", clientId = 3503, buy = 15 } + { itemName = "parcel", clientId = 3503, buy = 15 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -66,7 +66,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/walter_jaeger.lua b/data-otservbr-global/npc/walter_jaeger.lua index a10f0613fd4..5ddd2463376 100644 --- a/data-otservbr-global/npc/walter_jaeger.lua +++ b/data-otservbr-global/npc/walter_jaeger.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 5, lookLegs = 5, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -59,70 +59,72 @@ local config = { outfit = 1000, mount = 2000, trophy = 3000, - furniture = 4000 + furniture = 4000, }, outifts = { [1] = { name = "Falconer", looktype = { - male = 1282, female = 1283 + male = 1282, + female = 1283, }, points = { base = 100000, addons = { - first = 35000, second = 35000 - } - } - } + first = 35000, + second = 35000, + }, + }, + }, }, mounts = { [1] = { name = "Antelope", id = 163, - points = 145000 - } + points = 145000, + }, }, trophies = { [1] = { name = "gozzler trophy", id = 32751, - points = 3000 + points = 3000, }, [2] = { name = "bronze hunter trophy", id = 32754, - points = 3000 + points = 3000, }, [3] = { name = "sea serpent trophy", id = 32752, - points = 15000 + points = 15000, }, [4] = { name = "silver hunter trophy", id = 32755, - points = 15000 + points = 15000, }, [5] = { name = "many faces trophy", id = 36749, - points = 50000 + points = 50000, }, [6] = { name = "hellflayer trophy", id = 32753, - points = 80000 + points = 80000, }, [7] = { name = "gold hunter trophy", id = 32756, - points = 80000 + points = 80000, }, [8] = { name = "brachiodemon trophy", id = 36748, - points = 80000 - } + points = 80000, + }, }, furniture = { --[1] = { @@ -133,9 +135,9 @@ local config = { [1] = { name = "falcon pet", id = 36750, - points = 135000 + points = 135000, }, - } + }, } local function getOfferIndex(name, offer, topic) @@ -188,7 +190,7 @@ local function getOfferByName(name, offer, topic) firstAddon = offerTable.points.addons.first, secondAddon = offerTable.points.addons.second, male = offerTable.looktype.male, - female = offerTable.looktype.female + female = offerTable.looktype.female, } elseif topic == config.topics.mount then return { @@ -196,7 +198,7 @@ local function getOfferByName(name, offer, topic) name = offerTable.name, offerTopic = topic, value = offerTable.points, - mountId = offerTable.id + mountId = offerTable.id, } elseif topic == config.topics.trophy or topic == config.topics.furniture then return { @@ -204,7 +206,7 @@ local function getOfferByName(name, offer, topic) name = offerTable.name, offerTopic = topic, value = offerTable.points, - itemId = offerTable.id + itemId = offerTable.id, } end end @@ -229,7 +231,7 @@ local function getOfferByIndex(offerIndex, offer, topic) firstAddon = offerTable.points.addons.first, secondAddon = offerTable.points.addons.second, male = offerTable.looktype.male, - female = offerTable.looktype.female + female = offerTable.looktype.female, } elseif topic == config.topics.mount then return { @@ -237,7 +239,7 @@ local function getOfferByIndex(offerIndex, offer, topic) name = offerTable.name, offerTopic = topic, value = offerTable.points, - mountId = offerTable.id + mountId = offerTable.id, } elseif topic == config.topics.trophy or topic == config.topics.furniture then return { @@ -245,7 +247,7 @@ local function getOfferByIndex(offerIndex, offer, topic) name = offerTable.name, offerTopic = topic, value = offerTable.points, - itemId = offerTable.id + itemId = offerTable.id, } end end @@ -275,7 +277,7 @@ local function getOfferString(name, offer, topic) end local function processItemInboxPurchase(player, name, id) - if not (player) then + if not player then return false end @@ -302,7 +304,7 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "rewards") then npcHandler:say({ "Finishing prey hunting tasks will give you hunting task points (HTP). These can be exchanged for items of the following categories: {outfit}, {mount}, {trophies} and {furniture}. ...", - "Please note, that all items will be put into your Store inbox!" + "Please note, that all items will be put into your Store inbox!", }, npc, creature, 100) npcHandler:setTopic(playerId, 1) elseif MsgContains(message, "tasks") then @@ -319,27 +321,27 @@ local function creatureSayCallback(npc, creature, type, message) -- Rewards topic elseif npcHandler:getTopic(playerId) == 1 then - if not (config.enable) then + if not config.enable then npcHandler:say("Sorry, i have no offer to make for you today.", npc, creature) npcHandler:setTopic(playerId, 0) elseif MsgContains(message, "outfit") then - if config == nil or config.outifts == nil or #(config.outifts) == 0 then + if config == nil or config.outifts == nil or #config.outifts == 0 then npcHandler:say("I have no outfit offer to make.", npc, creature) npcHandler:setTopic(playerId, 0) else - npcHandler:say("I offer you the " .. getOffersString(config.outifts, false) .. " outfit" .. (#(config.outifts) >= 1 and "s." or "."), npc, creature) + npcHandler:say("I offer you the " .. getOffersString(config.outifts, false) .. " outfit" .. (#config.outifts >= 1 and "s." or "."), npc, creature) npcHandler:setTopic(playerId, config.topics.outfit) end elseif MsgContains(message, "mount") then - if config == nil or config.mounts == nil or #(config.mounts) == 0 then + if config == nil or config.mounts == nil or #config.mounts == 0 then npcHandler:say("I have no mount offer to make.", npc, creature) npcHandler:setTopic(playerId, 0) else - npcHandler:say("I offer you the " .. getOffersString(config.mounts, false) .. " mount" .. (#(config.mounts) >= 1 and "s." or "."), npc, creature) + npcHandler:say("I offer you the " .. getOffersString(config.mounts, false) .. " mount" .. (#config.mounts >= 1 and "s." or "."), npc, creature) npcHandler:setTopic(playerId, config.topics.mount) end elseif MsgContains(message, "trophies") then - if config == nil or config.trophies == nil or #(config.trophies) == 0 then + if config == nil or config.trophies == nil or #config.trophies == 0 then npcHandler:say("I have no trophie offer to make.", npc, creature) npcHandler:setTopic(playerId, 0) else @@ -347,7 +349,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:setTopic(playerId, config.topics.trophy) end elseif MsgContains(message, "furniture") then - if config == nil or config.furniture == nil or #(config.furniture) == 0 then + if config == nil or config.furniture == nil or #config.furniture == 0 then npcHandler:say("I have no furniture offer to make.", npc, creature) npcHandler:setTopic(playerId, 0) else @@ -359,17 +361,17 @@ local function creatureSayCallback(npc, creature, type, message) -- Offer topics elseif npcHandler:getTopic(playerId) > 1 then if npcHandler:getTopic(playerId) == config.topics.outfit then - if config ~= nil and config.outifts ~= nil and #(config.outifts) > 0 then + if config ~= nil and config.outifts ~= nil and #config.outifts > 0 then npcHandler:say(getOfferString(message, config.outifts, npcHandler:getTopic(playerId)), npc, creature) npcHandler:setTopic(playerId, getOfferIndex(message, config.outifts, npcHandler:getTopic(playerId))) end elseif npcHandler:getTopic(playerId) == config.topics.mount then - if config ~= nil and config.mounts ~= nil and #(config.mounts) > 0 then + if config ~= nil and config.mounts ~= nil and #config.mounts > 0 then npcHandler:say(getOfferString(message, config.mounts, npcHandler:getTopic(playerId)), npc, creature) npcHandler:setTopic(playerId, getOfferIndex(message, config.mounts, npcHandler:getTopic(playerId))) end elseif npcHandler:getTopic(playerId) == config.topics.trophy then - if config ~= nil and config.trophies ~= nil and #(config.trophies) > 0 then + if config ~= nil and config.trophies ~= nil and #config.trophies > 0 then local offerTable = getOfferByName(message, config.trophies, npcHandler:getTopic(playerId)) if offerTable ~= nil then if player:getTaskHuntingPoints() >= offerTable.value then @@ -387,7 +389,7 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == config.topics.furniture then - if config ~= nil and config.furniture ~= nil and #(config.furniture) > 0 then + if config ~= nil and config.furniture ~= nil and #config.furniture > 0 then local offerTable = getOfferByName(message, config.furniture, npcHandler:getTopic(playerId)) if offerTable ~= nil then if player:getTaskHuntingPoints() >= offerTable.value then @@ -405,7 +407,7 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) > config.topics.outfit and npcHandler:getTopic(playerId) < config.topics.mount then - if config ~= nil and config.outifts ~= nil and #(config.outifts) > 0 then + if config ~= nil and config.outifts ~= nil and #config.outifts > 0 then local offerTable = getOfferByIndex(npcHandler:getTopic(playerId) - config.topics.outfit, config.outifts, config.topics.outfit) if offerTable ~= nil then if MsgContains(message, "base") then @@ -455,7 +457,7 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) > config.topics.mount and npcHandler:getTopic(playerId) < config.topics.trophy then - if config ~= nil and config.mounts ~= nil and #(config.mounts) > 0 then + if config ~= nil and config.mounts ~= nil and #config.mounts > 0 then local offerTable = getOfferByIndex(npcHandler:getTopic(playerId) - config.topics.mount, config.mounts, config.topics.mount) if offerTable ~= nil then local points = offerTable.value diff --git a/data-otservbr-global/npc/walter_the_guard.lua b/data-otservbr-global/npc/walter_the_guard.lua index 6afbc00aeeb..bb059f82df4 100644 --- a/data-otservbr-global/npc/walter_the_guard.lua +++ b/data-otservbr-global/npc/walter_the_guard.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 38, lookFeet = 38, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,24 +58,24 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "trouble") and player:getStorageValue(Storage.TheInquisition.WalterGuard) < 1 and player:getStorageValue(Storage.TheInquisition.Mission01) ~= -1) then + if MsgContains(message, "trouble") and player:getStorageValue(Storage.TheInquisition.WalterGuard) < 1 and player:getStorageValue(Storage.TheInquisition.Mission01) ~= -1 then npcHandler:say("I think there is a pickpocket in town.", npc, creature) npcHandler:setTopic(playerId, 1) - elseif (MsgContains(message, "authorities")) then - if (npcHandler:getTopic(playerId) == 1) then + elseif MsgContains(message, "authorities") then + if npcHandler:getTopic(playerId) == 1 then npcHandler:say("Well, sooner or later we will get hold of that delinquent. That's for sure.", npc, creature) npcHandler:setTopic(playerId, 2) end - elseif (MsgContains(message, "avoided")) then - if (npcHandler:getTopic(playerId) == 2) then + elseif MsgContains(message, "avoided") then + if npcHandler:getTopic(playerId) == 2 then npcHandler:say("You can't tell by a person's appearance who is a pickpocket and who isn't. You simply can't close the city gates for everyone.", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif (MsgContains(message, "gods would allow")) then - if (npcHandler:getTopic(playerId) == 3) then + elseif MsgContains(message, "gods would allow") then + if npcHandler:getTopic(playerId) == 3 then npcHandler:say("If the gods had created the world a paradise, no one had to steal at all.", npc, creature) npcHandler:setTopic(playerId, 0) - if (player:getStorageValue(Storage.TheInquisition.WalterGuard) < 1) then + if player:getStorageValue(Storage.TheInquisition.WalterGuard) < 1 then player:setStorageValue(Storage.TheInquisition.WalterGuard, 1) player:setStorageValue(Storage.TheInquisition.Mission01, player:getStorageValue(Storage.TheInquisition.Mission01) + 1) -- The Inquisition Questlog- "Mission 1: Interrogation" player:getPosition():sendMagicEffect(CONST_ME_HOLYAREA) diff --git a/data-otservbr-global/npc/warbert.lua b/data-otservbr-global/npc/warbert.lua index fd505e98bf7..9c93c2d398a 100644 --- a/data-otservbr-global/npc/warbert.lua +++ b/data-otservbr-global/npc/warbert.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 113, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/weaponmaster.lua b/data-otservbr-global/npc/weaponmaster.lua index 4452e30e3fd..fc30eaa6510 100644 --- a/data-otservbr-global/npc/weaponmaster.lua +++ b/data-otservbr-global/npc/weaponmaster.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/wentworth.lua b/data-otservbr-global/npc/wentworth.lua index 8ff02e52443..d89a3ca090c 100644 --- a/data-otservbr-global/npc/wentworth.lua +++ b/data-otservbr-global/npc/wentworth.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 124, lookFeet = 115, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { @@ -28,7 +28,7 @@ npcConfig.voices = { chance = 50, { text = "Waste not, want not!" }, { text = "Don't burden yourself with too much cash - store it here!" }, - { text = "Don't take the money and run - deposit it and walk instead!" } + { text = "Don't take the money and run - deposit it and walk instead!" }, } local keywordHandler = KeywordHandler:new() @@ -76,14 +76,12 @@ local function creatureSayCallback(npc, creature, type, message) --Help if MsgContains(message, "bank account") then - npcHandler:say( - { - "Every Adventurer has one. \z + npcHandler:say({ + "Every Adventurer has one. \z The big advantage is that you can access your money in every branch of the World Bank! ...", - "Would you like to know more about the {basic} functions of your bank account, the {advanced} functions, \z - or are you already bored, perhaps?" - }, - npc, creature, 10) + "Would you like to know more about the {basic} functions of your bank account, the {advanced} functions, \z + or are you already bored, perhaps?", + }, npc, creature, 10) npcHandler:setTopic(playerId, 0) return true --Balance @@ -217,8 +215,12 @@ local function creatureSayCallback(npc, creature, type, message) Please let me know if there is something else I can do for you.", npc, creature) end else - npcHandler:say("Whoah, hold on, you have no room in your inventory to carry all those coins. \z - I don't want you to drop it on the floor, maybe come back with a cart!", npc, creature) + npcHandler:say( + "Whoah, hold on, you have no room in your inventory to carry all those coins. \z + I don't want you to drop it on the floor, maybe come back with a cart!", + npc, + creature + ) end npcHandler:setTopic(playerId, 0) elseif MsgContains(message, "no") then @@ -339,66 +341,48 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ "money" }, StdModule.say, - { - npcHandler = npcHandler, - text = "We can {change} money for you. You can also access your {bank account}." - } -) -keywordHandler:addKeyword({ "change" }, StdModule.say, - { - npcHandler = npcHandler, - text = "There are three different coin types in Tibia: 100 gold coins equal 1 platinum coin, \z +keywordHandler:addKeyword({ "money" }, StdModule.say, { + npcHandler = npcHandler, + text = "We can {change} money for you. You can also access your {bank account}.", +}) +keywordHandler:addKeyword({ "change" }, StdModule.say, { + npcHandler = npcHandler, + text = "There are three different coin types in Tibia: 100 gold coins equal 1 platinum coin, \z 100 platinum coins equal 1 crystal coin. \z - So if you'd like to change 100 gold into 1 platinum, simply say '{change gold}' and then '1 platinum'." - } -) -keywordHandler:addKeyword({ "bank" }, StdModule.say, - { - npcHandler = npcHandler, - text = "We can {change} money for you. You can also access your {bank account}." - } -) -keywordHandler:addKeyword({ "advanced" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Your bank account will be used automatically when you want to {rent} a house or place an offer \z - on an item on the {market}. Let me know if you want to know about how either one works." - } -) -keywordHandler:addKeyword({ "help" }, StdModule.say, - { - npcHandler = npcHandler, - text = "You can check the {balance} of your bank account, {deposit} money or {withdraw} it. \z - You can also {transfer} money to other characters, provided that they have a vocation." - } -) -keywordHandler:addKeyword({ "functions" }, StdModule.say, - { - npcHandler = npcHandler, - text = "You can check the {balance} of your bank account, {deposit} money or {withdraw} it. \z - You can also {transfer} money to other characters, provided that they have a vocation." - } -) -keywordHandler:addKeyword({ "basic" }, StdModule.say, - { - npcHandler = npcHandler, - text = "You can check the {balance} of your bank account, {deposit} money or {withdraw} it. \z - You can also {transfer} money to other characters, provided that they have a vocation." - } -) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I work in this bank. I can change money for you and help you with your bank account." - } -) -keywordHandler:addKeyword({ "transfer" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm afraid this service is not available to you until you reach the World mainland." - } -) + So if you'd like to change 100 gold into 1 platinum, simply say '{change gold}' and then '1 platinum'.", +}) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { + npcHandler = npcHandler, + text = "We can {change} money for you. You can also access your {bank account}.", +}) +keywordHandler:addKeyword({ "advanced" }, StdModule.say, { + npcHandler = npcHandler, + text = "Your bank account will be used automatically when you want to {rent} a house or place an offer \z + on an item on the {market}. Let me know if you want to know about how either one works.", +}) +keywordHandler:addKeyword({ "help" }, StdModule.say, { + npcHandler = npcHandler, + text = "You can check the {balance} of your bank account, {deposit} money or {withdraw} it. \z + You can also {transfer} money to other characters, provided that they have a vocation.", +}) +keywordHandler:addKeyword({ "functions" }, StdModule.say, { + npcHandler = npcHandler, + text = "You can check the {balance} of your bank account, {deposit} money or {withdraw} it. \z + You can also {transfer} money to other characters, provided that they have a vocation.", +}) +keywordHandler:addKeyword({ "basic" }, StdModule.say, { + npcHandler = npcHandler, + text = "You can check the {balance} of your bank account, {deposit} money or {withdraw} it. \z + You can also {transfer} money to other characters, provided that they have a vocation.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "I work in this bank. I can change money for you and help you with your bank account.", +}) +keywordHandler:addKeyword({ "transfer" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm afraid this service is not available to you until you reach the World mainland.", +}) npcHandler:setMessage(MESSAGE_GREET, "Yes? What may I do for you, |PLAYERNAME|? Bank business, perhaps?") npcHandler:setMessage(MESSAGE_FAREWELL, "Have a nice day.") diff --git a/data-otservbr-global/npc/wesley.lua b/data-otservbr-global/npc/wesley.lua index 57f205ac4e8..df459b3d333 100644 --- a/data-otservbr-global/npc/wesley.lua +++ b/data-otservbr-global/npc/wesley.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 119, lookLegs = 120, lookFeet = 121, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/willard.lua b/data-otservbr-global/npc/willard.lua index b1ba52db22a..75ac539770d 100644 --- a/data-otservbr-global/npc/willard.lua +++ b/data-otservbr-global/npc/willard.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 104, lookLegs = 0, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Selling weapons, ammunition and armor. Special offers only available here, have a look!' } + { text = "Selling weapons, ammunition and armor. Special offers only available here, have a look!" }, } local keywordHandler = KeywordHandler:new() @@ -69,7 +69,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Oooh, damn, I completely forgot about that. I was supposed to pick it up from the Outlaw Camp. ...", "I can't leave my shop here right now, please go and talk to Snake Eye about that package... I promise he won't make any trouble. ...", - "Don't tell Rashid! I really don't want him to know that I forgot his order. Okay?" + "Don't tell Rashid! I really don't want him to know that I forgot his order. Okay?", }, npc, creature) npcHandler:setTopic(playerId, 1) end @@ -196,7 +196,7 @@ npcConfig.shop = { { itemName = "viking shield", clientId = 3431, buy = 260, sell = 85 }, { itemName = "vortex bolt", clientId = 14252, buy = 6 }, { itemName = "war hammer", clientId = 3279, buy = 10000, sell = 450 }, - { itemName = "wooden shield", clientId = 3412, buy = 15, sell = 5 } + { itemName = "wooden shield", clientId = 3412, buy = 15, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -207,7 +207,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/willem.lua b/data-otservbr-global/npc/willem.lua index f9ed38e3bc7..24c2b8231db 100644 --- a/data-otservbr-global/npc/willem.lua +++ b/data-otservbr-global/npc/willem.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/william.lua b/data-otservbr-global/npc/william.lua index 543a6aa8b58..74d2e4ec1a1 100644 --- a/data-otservbr-global/npc/william.lua +++ b/data-otservbr-global/npc/william.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 0, lookLegs = 67, lookFeet = 114, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/willie.lua b/data-otservbr-global/npc/willie.lua index 16b750a2399..df4436b67ab 100644 --- a/data-otservbr-global/npc/willie.lua +++ b/data-otservbr-global/npc/willie.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 63, lookLegs = 58, lookFeet = 115, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { { itemName = "bread", clientId = 3600, sell = 1, count = 1 }, @@ -29,7 +29,7 @@ npcConfig.shop = { { itemName = "egg", clientId = 3606, sell = 1, count = 1 }, { itemName = "ham", clientId = 3582, sell = 4, count = 1 }, { itemName = "meat", clientId = 3577, sell = 2, count = 1 }, - { itemName = "salmon", clientId = 3579, sell = 2, count = 1 } + { itemName = "salmon", clientId = 3579, sell = 2, count = 1 }, } -- On buy npc shop message @@ -41,8 +41,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcConfig.voices = { interval = 15000, @@ -50,7 +49,7 @@ npcConfig.voices = { { text = "Ah, what the heck.Make sure you know what you want before you bug me." }, { text = "Buying and selling food!" }, { text = "Make sure you know what you want before you bug me." }, - { text = "You, over there! Stop sniffing around my farm! Either trade with me or leave!" } + { text = "You, over there! Stop sniffing around my farm! Either trade with me or leave!" }, } local keywordHandler = KeywordHandler:new() @@ -80,299 +79,206 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - -- Basic keywords -keywordHandler:addKeyword({ "offer" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Haven't they taught you anything at school? Ask for a {trade} if you want to trade." - } -) +keywordHandler:addKeyword({ "offer" }, StdModule.say, { + npcHandler = npcHandler, + text = "Haven't they taught you anything at school? Ask for a {trade} if you want to trade.", +}) keywordHandler:addAliasKeyword({ "sell" }) keywordHandler:addAliasKeyword({ "buy" }) keywordHandler:addAliasKeyword({ "food" }) -keywordHandler:addKeyword({ "information" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Help yourself. Or ask the other {citizens}, I don't have time for that." - } -) +keywordHandler:addKeyword({ "information" }, StdModule.say, { + npcHandler = npcHandler, + text = "Help yourself. Or ask the other {citizens}, I don't have time for that.", +}) keywordHandler:addAliasKeyword({ "help" }) keywordHandler:addAliasKeyword({ "hint" }) -keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Fine enough." - } -) -keywordHandler:addKeyword({ "name" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Willie." - } -) -keywordHandler:addKeyword({ "job" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm a farmer and a cook." - } -) -keywordHandler:addKeyword({ "cook" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I try out old and new {recipes}. You can sell all {food} to me." - } -) -keywordHandler:addKeyword({ "recipe" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'd love to try a banana pie but I lack the {bananas}. If you get me one, I'll reward you." - } -) -keywordHandler:addKeyword({ "citizen" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Which one?" - } -) -keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, - { - npcHandler = npcHandler, - text = "This island would be wonderful if there weren't a constant flood of newcomers." - } -) -keywordHandler:addKeyword({ "tibia" }, StdModule.say, - { - npcHandler = npcHandler, - text = "If I were you, I'd stay here." - } -) -keywordHandler:addKeyword({ "spell" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I know how to spell." - } -) -keywordHandler:addKeyword({ "magic" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm a magician in the kitchen." - } -) -keywordHandler:addKeyword({ "weapon" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm not in the weapon business, so stop disturbing me." - } -) -keywordHandler:addKeyword({ "king" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm glad that we don't see many officials here." - } -) -keywordHandler:addKeyword({ "god" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm a farmer, not a preacher." - } -) -keywordHandler:addKeyword({ "sewer" }, StdModule.say, - { - npcHandler = npcHandler, - text = "What about them? Do you live there?" - } -) -keywordHandler:addKeyword({ "dungeon" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I've got no time for your dungeon nonsense." - } -) -keywordHandler:addKeyword({ "rat" }, StdModule.say, - { - npcHandler = npcHandler, - text = "My cousin {Billy} cooks rat stew. Yuck! Can you imagine that?" - } -) -keywordHandler:addKeyword({ "monster" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Are you afraid of monsters? I bet even the sight of a {rat} would let your knees tremble. Hahaha." - } -) -keywordHandler:addKeyword({ "time" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Do I look like a clock?" - } -) -keywordHandler:addKeyword({ "god" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I'm a farmer, not a preacher." - } -) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { + npcHandler = npcHandler, + text = "Fine enough.", +}) +keywordHandler:addKeyword({ "name" }, StdModule.say, { + npcHandler = npcHandler, + text = "Willie.", +}) +keywordHandler:addKeyword({ "job" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm a farmer and a cook.", +}) +keywordHandler:addKeyword({ "cook" }, StdModule.say, { + npcHandler = npcHandler, + text = "I try out old and new {recipes}. You can sell all {food} to me.", +}) +keywordHandler:addKeyword({ "recipe" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'd love to try a banana pie but I lack the {bananas}. If you get me one, I'll reward you.", +}) +keywordHandler:addKeyword({ "citizen" }, StdModule.say, { + npcHandler = npcHandler, + text = "Which one?", +}) +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { + npcHandler = npcHandler, + text = "This island would be wonderful if there weren't a constant flood of newcomers.", +}) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { + npcHandler = npcHandler, + text = "If I were you, I'd stay here.", +}) +keywordHandler:addKeyword({ "spell" }, StdModule.say, { + npcHandler = npcHandler, + text = "I know how to spell.", +}) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm a magician in the kitchen.", +}) +keywordHandler:addKeyword({ "weapon" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm not in the weapon business, so stop disturbing me.", +}) +keywordHandler:addKeyword({ "king" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm glad that we don't see many officials here.", +}) +keywordHandler:addKeyword({ "god" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm a farmer, not a preacher.", +}) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { + npcHandler = npcHandler, + text = "What about them? Do you live there?", +}) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { + npcHandler = npcHandler, + text = "I've got no time for your dungeon nonsense.", +}) +keywordHandler:addKeyword({ "rat" }, StdModule.say, { + npcHandler = npcHandler, + text = "My cousin {Billy} cooks rat stew. Yuck! Can you imagine that?", +}) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { + npcHandler = npcHandler, + text = "Are you afraid of monsters? I bet even the sight of a {rat} would let your knees tremble. Hahaha.", +}) +keywordHandler:addKeyword({ "time" }, StdModule.say, { + npcHandler = npcHandler, + text = "Do I look like a clock?", +}) +keywordHandler:addKeyword({ "god" }, StdModule.say, { + npcHandler = npcHandler, + text = "I'm a farmer, not a preacher.", +}) -- Names -keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Can't stand him." - } -) -keywordHandler:addKeyword({ "amber" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Quite a babe." - } -) -keywordHandler:addKeyword({ "billy" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Don't ever mention his name again! He can't even {cook}!" - } -) -keywordHandler:addKeyword({ "cipfried" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Our little monkey." - } -) -keywordHandler:addKeyword({ "dallheim" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Uhm, fine guy I think." - } -) -keywordHandler:addKeyword({ "dixi" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Boring little girl." - } -) -keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Overrated." - } -) -keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, - { - npcHandler = npcHandler, - text = "She thinks she owns this island with her underpriced offers." - } -) -keywordHandler:addKeyword({ "lily" }, StdModule.say, - { - npcHandler = npcHandler, - text = "I don't like hippie girls." - } -) -keywordHandler:addKeyword({ "loui" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Leave me alone with that guy." - } -) -keywordHandler:addKeyword({ "norma" }, StdModule.say, - { - npcHandler = npcHandler, - text = "About time we got a bar here." - } -) -keywordHandler:addKeyword({ "obi" }, StdModule.say, - { - npcHandler = npcHandler, - text = "This old guy has only money on his mind." - } -) -keywordHandler:addKeyword({ "oracle" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Hopefully it gets you off this island soon so you can stop bugging me." - } -) -keywordHandler:addKeyword({ "paulie" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Uptight and correct in any situation." - } -) -keywordHandler:addKeyword({ "santiago" }, StdModule.say, - { - npcHandler = npcHandler, - text = "If he wants to sacrifice all his free time for beginners, fine with me. Then they don't disturb me." - } -) -keywordHandler:addKeyword({ "seymour" }, StdModule.say, - { - npcHandler = npcHandler, - text = "This joke of a man thinks he is sooo important." - } -) -keywordHandler:addKeyword({ "tom" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Decent guy." - } -) -keywordHandler:addKeyword({ "willie" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Yeah, so?" - } -) -keywordHandler:addKeyword({ "zerbrus" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Overrated." - } -) -keywordHandler:addKeyword({ "zirella" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Too old to be interesting for me." - } -) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { + npcHandler = npcHandler, + text = "Can't stand him.", +}) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { + npcHandler = npcHandler, + text = "Quite a babe.", +}) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { + npcHandler = npcHandler, + text = "Don't ever mention his name again! He can't even {cook}!", +}) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { + npcHandler = npcHandler, + text = "Our little monkey.", +}) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { + npcHandler = npcHandler, + text = "Uhm, fine guy I think.", +}) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { + npcHandler = npcHandler, + text = "Boring little girl.", +}) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { + npcHandler = npcHandler, + text = "Overrated.", +}) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { + npcHandler = npcHandler, + text = "She thinks she owns this island with her underpriced offers.", +}) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { + npcHandler = npcHandler, + text = "I don't like hippie girls.", +}) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { + npcHandler = npcHandler, + text = "Leave me alone with that guy.", +}) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { + npcHandler = npcHandler, + text = "About time we got a bar here.", +}) +keywordHandler:addKeyword({ "obi" }, StdModule.say, { + npcHandler = npcHandler, + text = "This old guy has only money on his mind.", +}) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { + npcHandler = npcHandler, + text = "Hopefully it gets you off this island soon so you can stop bugging me.", +}) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { + npcHandler = npcHandler, + text = "Uptight and correct in any situation.", +}) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { + npcHandler = npcHandler, + text = "If he wants to sacrifice all his free time for beginners, fine with me. Then they don't disturb me.", +}) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { + npcHandler = npcHandler, + text = "This joke of a man thinks he is sooo important.", +}) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { + npcHandler = npcHandler, + text = "Decent guy.", +}) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { + npcHandler = npcHandler, + text = "Yeah, so?", +}) +keywordHandler:addKeyword({ "zerbrus" }, StdModule.say, { + npcHandler = npcHandler, + text = "Overrated.", +}) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { + npcHandler = npcHandler, + text = "Too old to be interesting for me.", +}) -- Studded Shield Quest -local bananaKeyword = keywordHandler:addKeyword({ "banana" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Have you found a banana for me?" - } -) -bananaKeyword:addChildKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "A banana! Great. Here, take this shield, I don't need it anyway.", - reset = true - }, - function(player) - return player:getItemCount(3587) > 0 - end, - function(player) - player:removeItem(3587, 1) - player:addItem(3426, 1) - end -) -bananaKeyword:addChildKeyword({ "yes" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Are you trying to mess with me?!", - reset = true - } -) -bananaKeyword:addChildKeyword({ "" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Too bad.", - reset = true - } -) +local bananaKeyword = keywordHandler:addKeyword({ "banana" }, StdModule.say, { + npcHandler = npcHandler, + text = "Have you found a banana for me?", +}) +bananaKeyword:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "A banana! Great. Here, take this shield, I don't need it anyway.", + reset = true, +}, function(player) + return player:getItemCount(3587) > 0 +end, function(player) + player:removeItem(3587, 1) + player:addItem(3426, 1) +end) +bananaKeyword:addChildKeyword({ "yes" }, StdModule.say, { + npcHandler = npcHandler, + text = "Are you trying to mess with me?!", + reset = true, +}) +bananaKeyword:addChildKeyword({ "" }, StdModule.say, { + npcHandler = npcHandler, + text = "Too bad.", + reset = true, +}) npcHandler:setMessage(MESSAGE_WALKAWAY, "Yeah go away!") npcHandler:setMessage(MESSAGE_FAREWELL, "Yeah, bye |PLAYERNAME|.") diff --git a/data-otservbr-global/npc/willow.lua b/data-otservbr-global/npc/willow.lua index c314b7bfc22..9dc39b19deb 100644 --- a/data-otservbr-global/npc/willow.lua +++ b/data-otservbr-global/npc/willow.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 24, lookLegs = 38, lookFeet = 0, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/woblin.lua b/data-otservbr-global/npc/woblin.lua index 69c2d172e5e..85981789553 100644 --- a/data-otservbr-global/npc/woblin.lua +++ b/data-otservbr-global/npc/woblin.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 297 + lookType = 297, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -55,15 +55,23 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "key") then if player:getStorageValue(Storage.Quest.U10_55.Dawnport.TheDormKey) == 1 then - npcHandler:say("Me not give key! Key my precious now! \z + npcHandler:say( + "Me not give key! Key my precious now! \z By old goblin law all that one has in his pockets for two days is family heirloom! \z - Me no part with my precious ... hm unless you provide Woblin with some {reward}!", npc, creature) + Me no part with my precious ... hm unless you provide Woblin with some {reward}!", + npc, + creature + ) npcHandler:setTopic(playerId, 1) end elseif MsgContains(message, "reward") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say("Me good angler but one fish eludes me since many many weeks. I call fish ''Old Nasty''. \z - You might catch him in this cave, in that pond there. Bring me Old Nasty and I'll give you key!", npc, creature) + npcHandler:say( + "Me good angler but one fish eludes me since many many weeks. I call fish ''Old Nasty''. \z + You might catch him in this cave, in that pond there. Bring me Old Nasty and I'll give you key!", + npc, + creature + ) player:setStorageValue(Storage.Quest.U10_55.Dawnport.TheDormKey, 2) npcHandler:setTopic(playerId, 0) end @@ -74,9 +82,13 @@ local function creatureSayCallback(npc, creature, type, message) end elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 2 then - npcHandler:say("Wonderful. I don't believe you will find Dormovo alive, though. \z + npcHandler:say( + "Wonderful. I don't believe you will find Dormovo alive, though. \z He would not have stayed abroad that long without refilling his inkpot for his research notes. \z - But at least the amulet should be retrieved.", npc, creature) + But at least the amulet should be retrieved.", + npc, + creature + ) player:removeItem(21402, 1) local TheDormKey = player:addItem(21392, 1) TheDormKey:setActionId(103) @@ -86,25 +98,19 @@ local function creatureSayCallback(npc, creature, type, message) end return true end -keywordHandler:addKeyword({ "goblins" }, StdModule.say, - { - npcHandler = npcHandler, - text = "No part of clan. Me prefer company of precious. Or mirror image. Always nice to see pretty me!" - } -) -keywordHandler:addKeyword({ "quest" }, StdModule.say, - { - npcHandler = npcHandler, - text = "What you on quest for? Go leave Woblin alone with {precious}" - } -) -keywordHandler:addKeyword({ "precious" }, StdModule.say, - { - npcHandler = npcHandler, - text = "Me not give {key}! Key my precious now! By old goblin law all that one has in his pockets for two days \z - is family heirloom! Me no part with my precious ... hm unless you provide Woblin with some {reward}!" - } -) +keywordHandler:addKeyword({ "goblins" }, StdModule.say, { + npcHandler = npcHandler, + text = "No part of clan. Me prefer company of precious. Or mirror image. Always nice to see pretty me!", +}) +keywordHandler:addKeyword({ "quest" }, StdModule.say, { + npcHandler = npcHandler, + text = "What you on quest for? Go leave Woblin alone with {precious}", +}) +keywordHandler:addKeyword({ "precious" }, StdModule.say, { + npcHandler = npcHandler, + text = "Me not give {key}! Key my precious now! By old goblin law all that one has in his pockets for two days \z + is family heirloom! Me no part with my precious ... hm unless you provide Woblin with some {reward}!", +}) npcHandler:setMessage(MESSAGE_GREET, "Hi there human!") diff --git a/data-otservbr-global/npc/wyat.lua b/data-otservbr-global/npc/wyat.lua index 7878f43e850..6b495c704cd 100644 --- a/data-otservbr-global/npc/wyat.lua +++ b/data-otservbr-global/npc/wyat.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 96, lookLegs = 95, lookFeet = 116, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/wyda.lua b/data-otservbr-global/npc/wyda.lua index 83621c62aa7..340e21db0f8 100644 --- a/data-otservbr-global/npc/wyda.lua +++ b/data-otservbr-global/npc/wyda.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 0, lookBody = 119, lookLegs = 119, - lookFeet = 126 + lookFeet = 126, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,34 +61,32 @@ local function creatureSayCallback(npc, creature, type, message) return false end - - if MsgContains(message, 'cookie') then - if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 - and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Wyda) ~= 1 then - npcHandler:say('You brought me a cookie?', npc, creature) + if MsgContains(message, "cookie") then + if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Wyda) ~= 1 then + npcHandler:say("You brought me a cookie?", npc, creature) npcHandler:setTopic(playerId, 1) end - elseif MsgContains(message, 'mission') or MsgContains(message, 'quest') then + elseif MsgContains(message, "mission") or MsgContains(message, "quest") then npcHandler:say({ - "A quest? Well, if you\'re so keen on doing me a favour... Why don\'t you try to find a {blood herb}?", - "To be honest, I\'m drowning in blood herbs by now." + "A quest? Well, if you're so keen on doing me a favour... Why don't you try to find a {blood herb}?", + "To be honest, I'm drowning in blood herbs by now.", }, npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'bloodherb') or MsgContains(message, 'blood herb') then + elseif MsgContains(message, "bloodherb") or MsgContains(message, "blood herb") then if player:getStorageValue(Storage.BloodHerbQuest) == 1 then - npcHandler:say('Arrr... here we go again.... do you have a #$*§# blood herb for me?', npc, creature) + npcHandler:say("Arrr... here we go again.... do you have a #$*§# blood herb for me?", npc, creature) npcHandler:setTopic(playerId, 2) else npcHandler:say({ "The blood herb is very rare. This plant would be very useful for me, but I don't know any accessible places to find it.", - "To be honest, I'm drowning in blood herbs by now. But if it helps you, well yes.. I guess I could use another blood herb..." + "To be honest, I'm drowning in blood herbs by now. But if it helps you, well yes.. I guess I could use another blood herb...", }, npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then if not player:removeItem(130, 1) then - npcHandler:say('You have no cookie that I\'d like.', npc, creature) + npcHandler:say("You have no cookie that I'd like.", npc, creature) npcHandler:setTopic(playerId, 0) return true end @@ -96,11 +94,11 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.WhatAFoolish.CookieDelivery.Wyda, 1) player:addCondition(condition) if player:getCookiesDelivered() == 10 then - player:addAchievement('Allow Cookies?') + player:addAchievement("Allow Cookies?") end npc:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) - npcHandler:say('Well, it\'s a welcome change from all that gingerbread ... AHHH HOW DARE YOU??? FEEL MY WRATH!', npc, creature) + npcHandler:say("Well, it's a welcome change from all that gingerbread ... AHHH HOW DARE YOU??? FEEL MY WRATH!", npc, creature) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) elseif npcHandler:getTopic(playerId) == 2 then @@ -110,21 +108,21 @@ local function creatureSayCallback(npc, creature, type, message) local TornTeddyRand = math.random(1, 100) if TornTeddyRand <= 70 then player:addItem(3454, 1) -- witchesbroom - npcHandler:say('Thank you -SOOO- much! No, I really mean it! Really! Here, let me give you a reward...', npc, creature) + npcHandler:say("Thank you -SOOO- much! No, I really mean it! Really! Here, let me give you a reward...", npc, creature) npcHandler:setTopic(playerId, 0) else player:addItem(12617, 1) -- torn teddy - npcHandler:say('Thank you -SOOO- much! No, I really mean it! Really! Ah, you know what, you can have this old thing...', npc, creature) + npcHandler:say("Thank you -SOOO- much! No, I really mean it! Really! Ah, you know what, you can have this old thing...", npc, creature) npcHandler:setTopic(playerId, 0) end else - npcHandler:say('No, you don\'t have any...', npc, creature) + npcHandler:say("No, you don't have any...", npc, creature) npcHandler:setTopic(playerId, 0) end end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) == 1 or npcHandler:getTopic(playerId) == 2 then - npcHandler:say('I see.', npc, creature) + npcHandler:say("I see.", npc, creature) npcHandler:setTopic(playerId, 0) end end diff --git a/data-otservbr-global/npc/wyrdin.lua b/data-otservbr-global/npc/wyrdin.lua index 3aa9abae51d..ee7ff28fdee 100644 --- a/data-otservbr-global/npc/wyrdin.lua +++ b/data-otservbr-global/npc/wyrdin.lua @@ -16,28 +16,28 @@ npcConfig.outfit = { lookBody = 77, lookLegs = 79, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, { - text = " So where was I again?" + text = " So where was I again?", }, { - text = " Typical - you can never find a hero when you need one!" + text = " Typical - you can never find a hero when you need one!", }, { - text = " Could the bonelord language be the invention of some madman?" + text = " Could the bonelord language be the invention of some madman?", }, { - text = " The curse algorithm of triplex shadowing has to be two times higher than an overcharged nanoquorx on the peripheral..." - } + text = " The curse algorithm of triplex shadowing has to be two times higher than an overcharged nanoquorx on the peripheral...", + }, } local keywordHandler = KeywordHandler:new() @@ -77,16 +77,14 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "mission") then - if player:getStorageValue(Storage.TheWayToYalahar.QuestLine) < 1 and - player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) >= 4 and - player:getStorageValue(Storage.ExplorerSociety.QuestLine) >= 4 then - npcHandler:say( - { "There is indeed something that needs our attention. In the far north, a new city named Yalahar was discovered. It seems to be incredibly huge. ...", - "According to travelers, it's a city of glory and wonders. We need to learn as much as we can about this city and its inhabitants. ...", - "Gladly the explorer's society already sent a representative there. Still, we need someone to bring us the information he was able to gather until now. ...", - "Please look for the explorer's society's captain Maximilian in Liberty Bay. Ask him for a passage to Yalahar. There visit Timothy of the explorer's society and get his research notes. ...", - "It might be a good idea to explore the city a bit on your own before you deliver the notes here, but please make sure you don't lose them." }, - npc, creature) + if player:getStorageValue(Storage.TheWayToYalahar.QuestLine) < 1 and player:getStorageValue(Storage.ExplorerSociety.JoiningTheExplorers) >= 4 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) >= 4 then + npcHandler:say({ + "There is indeed something that needs our attention. In the far north, a new city named Yalahar was discovered. It seems to be incredibly huge. ...", + "According to travelers, it's a city of glory and wonders. We need to learn as much as we can about this city and its inhabitants. ...", + "Gladly the explorer's society already sent a representative there. Still, we need someone to bring us the information he was able to gather until now. ...", + "Please look for the explorer's society's captain Maximilian in Liberty Bay. Ask him for a passage to Yalahar. There visit Timothy of the explorer's society and get his research notes. ...", + "It might be a good idea to explore the city a bit on your own before you deliver the notes here, but please make sure you don't lose them.", + }, npc, creature) player:setStorageValue(Storage.TheWayToYalahar.QuestLine, 1) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.TheWayToYalahar.QuestLine) == 2 then @@ -97,19 +95,17 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 1 then if player:removeItem(9171, 1) then player:setStorageValue(Storage.TheWayToYalahar.QuestLine, 3) - npcHandler:say( - "Oh marvellous, please excuse me. I need to read this text immediately. Here, take this small reward of 500 gold pieces for your efforts.", - npc, creature) + npcHandler:say("Oh marvellous, please excuse me. I need to read this text immediately. Here, take this small reward of 500 gold pieces for your efforts.", npc, creature) player:addMoney(500) npcHandler:setTopic(playerId, 0) end elseif npcHandler:getTopic(playerId) == 3 then if player:getStorageValue(TheNewFrontier.Mission05.Wyrdin) == 2 and player:removeItem(10025, 1) then npcHandler:say( - { "By Uman! That's one of the rare almanacs of Origus! I had no idea that you are a scholar yourself! And a generous one on top of it! ...", - "This book must be worth some thousand crystal coins on the free market. Look at the signature here, it's Origus' very own! ...", - "Of course we should talk again about your request. What do you say makes Farmine important?" }, - npc, creature) + { "By Uman! That's one of the rare almanacs of Origus! I had no idea that you are a scholar yourself! And a generous one on top of it! ...", "This book must be worth some thousand crystal coins on the free market. Look at the signature here, it's Origus' very own! ...", "Of course we should talk again about your request. What do you say makes Farmine important?" }, + npc, + creature + ) player:setStorageValue(TheNewFrontier.Mission05.Wyrdin, 1) npcHandler:setTopic(playerId, 2) end @@ -118,51 +114,33 @@ local function creatureSayCallback(npc, creature, type, message) elseif MsgContains(message, "farmine") then if player:getStorageValue(TheNewFrontier.Questline) == 14 then if player:getStorageValue(TheNewFrontier.Mission05.Wyrdin) == 1 then - npcHandler:say( - "I've heard some odd rumours about this new dwarven outpost. But tell me, what has the Edron academy to do with Farmine?", - npc, creature) + npcHandler:say("I've heard some odd rumours about this new dwarven outpost. But tell me, what has the Edron academy to do with Farmine?", npc, creature) npcHandler:setTopic(playerId, 2) else - npcHandler:say( - "I'm not sure if I'm in the mood to talk about that matter again. Or do you have anything that might change my mind?", - npc, creature) + npcHandler:say("I'm not sure if I'm in the mood to talk about that matter again. Or do you have anything that might change my mind?", npc, creature) npcHandler:setTopic(playerId, 3) end end - elseif MsgContains(message, "plea") and player:getStorageValue(TheNewFrontier.Mission05.WyrdinKeyword) == 1 and - player:getStorageValue(TheNewFrontier.Mission05.Wyrdin) == 1 then + elseif MsgContains(message, "plea") and player:getStorageValue(TheNewFrontier.Mission05.WyrdinKeyword) == 1 and player:getStorageValue(TheNewFrontier.Mission05.Wyrdin) == 1 then if npcHandler:getTopic(playerId) == 2 then local chance = math.random(1, 3) if chance == 1 then - npcHandler:say( - "Hm, you are right, we are at the forefront of knowledge and innovation. Our dwarven friends could learn much from one of our representatives.", - npc, creature) + npcHandler:say("Hm, you are right, we are at the forefront of knowledge and innovation. Our dwarven friends could learn much from one of our representatives.", npc, creature) elseif chance == 2 then - npcHandler:say( - " Okay, sending some trader there won't hurt. I hope it will be worth the effort, though.", - npc, creature) + npcHandler:say(" Okay, sending some trader there won't hurt. I hope it will be worth the effort, though.", npc, creature) else - npcHandler:say( - { "Well, it can't be wrong to be there when new discoveries are made. Also, all those soldiers of fortune that might travel there could turn out to be a good source of income for a magic shop. ...", - "I think we'll send a representative. At least, for some time." }, npc, creature) + npcHandler:say({ "Well, it can't be wrong to be there when new discoveries are made. Also, all those soldiers of fortune that might travel there could turn out to be a good source of income for a magic shop. ...", "I think we'll send a representative. At least, for some time." }, npc, creature) end player:setStorageValue(TheNewFrontier.Mission05.Wyrdin, 3) end - elseif MsgContains(message, "bluff") and player:getStorageValue(TheNewFrontier.Mission05.WyrdinKeyword) == 2 and - player:getStorageValue(TheNewFrontier.Mission05.Wyrdin) == 1 then - npcHandler:say( - "What do you mean the druids of Carlin could provide the service as well? They are incompetent imposters! I will not allow them to ruin our reputation! I'll send some trader with supplies right away!", - npc, creature) + elseif MsgContains(message, "bluff") and player:getStorageValue(TheNewFrontier.Mission05.WyrdinKeyword) == 2 and player:getStorageValue(TheNewFrontier.Mission05.Wyrdin) == 1 then + npcHandler:say("What do you mean the druids of Carlin could provide the service as well? They are incompetent imposters! I will not allow them to ruin our reputation! I'll send some trader with supplies right away!", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Wyrdin, 3) - elseif MsgContains(message, "flatter") and player:getStorageValue(TheNewFrontier.Mission05.WyrdinKeyword) == 3 and - player:getStorageValue(TheNewFrontier.Mission05.Wyrdin) == 1 then - npcHandler:say( - "Hm, you are right, we are at the forefront of knowledge and innovation. Our dwarven friends could learn much from one of our representatives.", - npc, creature) + elseif MsgContains(message, "flatter") and player:getStorageValue(TheNewFrontier.Mission05.WyrdinKeyword) == 3 and player:getStorageValue(TheNewFrontier.Mission05.Wyrdin) == 1 then + npcHandler:say("Hm, you are right, we are at the forefront of knowledge and innovation. Our dwarven friends could learn much from one of our representatives.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Wyrdin, 3) else - if player:getStorageValue(TheNewFrontier.Questline) == 14 and - player:getStorageValue(TheNewFrontier.Mission05.Wyrdin) == 1 then + if player:getStorageValue(TheNewFrontier.Questline) == 14 and player:getStorageValue(TheNewFrontier.Mission05.Wyrdin) == 1 then npcHandler:say("Wrong Word.", npc, creature) player:setStorageValue(TheNewFrontier.Mission05.Wyrdin, 2) end diff --git a/data-otservbr-global/npc/xed.lua b/data-otservbr-global/npc/xed.lua index 620ee5f2da4..9630f0d3412 100644 --- a/data-otservbr-global/npc/xed.lua +++ b/data-otservbr-global/npc/xed.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 36, lookLegs = 57, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -60,7 +60,7 @@ npcConfig.shop = { { itemName = "crossbow", clientId = 3349, buy = 500 }, { itemName = "quiver", clientId = 35562, buy = 400 }, { itemName = "red quiver", clientId = 35849, buy = 400 }, - { itemName = "spear", clientId = 3277, buy = 10 } + { itemName = "spear", clientId = 3277, buy = 10 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -71,7 +71,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/xelvar.lua b/data-otservbr-global/npc/xelvar.lua index 18175355168..9e524f3f6f5 100644 --- a/data-otservbr-global/npc/xelvar.lua +++ b/data-otservbr-global/npc/xelvar.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 70 + lookType = 70, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -65,7 +65,7 @@ local function creatureSayCallback(npc, creature, type, message) "You can stock up your supply by buying more from me. Just ask me for a {trade}. Gnomette in the teleport chamber of the gnome outpost will sell them too. ...", "The teleporter here will transport you to one of the bigger gnomish outposts. ...", "There you will meet Gnomerik, the recruitment officer of the Gnomes. If you are lost, Gnomette in the teleport chamber might be able to help you with directions. ...", - "Good luck to you and don't embarrass your race down there! Keep in mind that you are a representative of the big people." + "Good luck to you and don't embarrass your race down there! Keep in mind that you are a representative of the big people.", }, npc, creature) player:setStorageValue(Storage.BigfootBurden.QuestLine, 1) @@ -90,7 +90,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 3 then npcHandler:say({ "The gnomes preferred to keep our alliance and their whole {existence} a secret. They are a bit distrustful of others. ...", - "They are quite self-sufficient and the fact that they are actually accepting some help is more than alarming. The gnomes are in real trouble and I am kind of an ambassador to find some people willing to {help}." + "They are quite self-sufficient and the fact that they are actually accepting some help is more than alarming. The gnomes are in real trouble and I am kind of an ambassador to find some people willing to {help}.", }, npc, creature) npcHandler:setTopic(playerId, 4) end @@ -98,7 +98,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 4 then npcHandler:say({ "The gnomes are locked in a war with an enemy that thins out their resources but foremost their manpower. We have suggested that people like you could be just the specialists they are looking for. ...", - "If you are interested to {join} the gnomish cause I can arrange a meeting with their recruiter." + "If you are interested to {join} the gnomish cause I can arrange a meeting with their recruiter.", }, npc, creature) npcHandler:setTopic(playerId, 5) end @@ -110,7 +110,7 @@ local function creatureSayCallback(npc, creature, type, message) "You can stock up your supply by buying more from me. Just ask me for a {trade}. Gnomette in the teleport chamber of the gnome outpost will sell them too. ...", "The teleporter here will transport you to one of the bigger gnomish outposts. ...", "There you will meet Gnomerik, the recruitment officer of the Gnomes. If you are lost, Gnomette in the teleport chamber might be able to help you with directions. ...", - "Good luck to you and don't embarrass your race down there! Keep in mind that you are a representative of the big people." + "Good luck to you and don't embarrass your race down there! Keep in mind that you are a representative of the big people.", }, npc, creature) player:setStorageValue(Storage.BigfootBurden.QuestLine, 1) @@ -125,7 +125,7 @@ npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) npcConfig.shop = { - { itemName = "teleport crystal", clientId = 16167, buy = 150 } + { itemName = "teleport crystal", clientId = 16167, buy = 150 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -136,7 +136,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/xodet.lua b/data-otservbr-global/npc/xodet.lua index 201a635e141..5ac76ecada8 100644 --- a/data-otservbr-global/npc/xodet.lua +++ b/data-otservbr-global/npc/xodet.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 86, lookLegs = 87, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -52,7 +52,7 @@ end local items = { [VOCATION.BASE_ID.SORCERER] = 3074, - [VOCATION.BASE_ID.DRUID] = 3066 + [VOCATION.BASE_ID.DRUID] = 3066, } local function creatureSayCallback(npc, creature, type, message) @@ -64,26 +64,26 @@ local function creatureSayCallback(npc, creature, type, message) end local itemId = items[player:getVocation():getBaseId()] - if MsgContains(message, 'first rod') or MsgContains(message, 'first wand') then + if MsgContains(message, "first rod") or MsgContains(message, "first wand") then if player:isMage() then if player:getStorageValue(Storage.FirstMageWeapon) == -1 then - npcHandler:say('So you ask me for a {' .. ItemType(itemId):getName() .. '} to begin your adventure?', npc, creature) + npcHandler:say("So you ask me for a {" .. ItemType(itemId):getName() .. "} to begin your adventure?", npc, creature) npcHandler:setTopic(playerId, 1) else - npcHandler:say('What? I have already gave you one {' .. ItemType(itemId):getName() .. '}!', npc, creature) + npcHandler:say("What? I have already gave you one {" .. ItemType(itemId):getName() .. "}!", npc, creature) end else - npcHandler:say('Sorry, you aren\'t a druid either a sorcerer.', npc, creature) + npcHandler:say("Sorry, you aren't a druid either a sorcerer.", npc, creature) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 1 then player:addItem(itemId, 1) - npcHandler:say('Here you are young adept, take care yourself.', npc, creature) + npcHandler:say("Here you are young adept, take care yourself.", npc, creature) player:setStorageValue(Storage.FirstMageWeapon, 1) end npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') and npcHandler:getTopic(playerId) == 1 then - npcHandler:say('Ok then.', npc, creature) + elseif MsgContains(message, "no") and npcHandler:getTopic(playerId) == 1 then + npcHandler:say("Ok then.", npc, creature) npcHandler:setTopic(playerId, 0) end return true @@ -142,7 +142,7 @@ npcConfig.shop = { { itemName = "wand of cosmic energy", clientId = 3073, buy = 10000 }, { itemName = "wand of decay", clientId = 3072, buy = 5000 }, { itemName = "wand of dragonbreath", clientId = 3075, buy = 1000 }, - { itemName = "wand of vortex", clientId = 3074, buy = 500 } + { itemName = "wand of vortex", clientId = 3074, buy = 500 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -154,7 +154,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/xorlosh.lua b/data-otservbr-global/npc/xorlosh.lua index 6c6a480f93e..db2b49d85aa 100644 --- a/data-otservbr-global/npc/xorlosh.lua +++ b/data-otservbr-global/npc/xorlosh.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 41, lookBody = 95, lookLegs = 75, - lookFeet = 95 + lookFeet = 95, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,7 +57,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, "mission") then if player:getStorageValue(Storage.HiddenCityOfBeregar.GoingDown) < 1 then npcHandler:say("Hmmmm, you could indeed help me. See this mechanism? Some son of a rotworm put WAY too much stuff on this elevator and now it's broken. I need 3 gear wheels to fix it. You think you could get them for me?", npc, creature) @@ -77,7 +76,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.HiddenCityOfBeregar.RoyalRescue) == 1 then npcHandler:say({ "There should be a book in our library about tunnelling. I don't have that much time to talk to you about that. ...", - "The book about tunnelling is in the library which is located in the north eastern wing of Beregar city." + "The book about tunnelling is in the library which is located in the north eastern wing of Beregar city.", }, npc, creature) end end diff --git a/data-otservbr-global/npc/yalahari.lua b/data-otservbr-global/npc/yalahari.lua index 627e9f52a91..b679064fb77 100644 --- a/data-otservbr-global/npc/yalahari.lua +++ b/data-otservbr-global/npc/yalahari.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 88, lookLegs = 88, lookFeet = 115, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -62,7 +62,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 17 then npcHandler:say({ "With all the coming and going of strangers here, it would be quite tedious to explain everything again and again. So we have written a manifesto. ...", - "Grab a copy from the room behind me. Let's talk about your further career in our ranks once you've read it." + "Grab a copy from the room behind me. Let's talk about your further career in our ranks once you've read it.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 18) player:setStorageValue(Storage.InServiceofYalahar.Mission03, 3) -- StorageValue for Questlog "Mission 03: Death to the Deathbringer" @@ -72,7 +72,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "I'm mildly impressed by your previous deeds in our service. So I'm willing to grant you some more important {missions}. ...", "If you please us, a life of luxury as an important person in our city is ensured. If you fail, you will be replaced by someone more capable than you. ...", - "So if you are up for a challenge, ask me for a {mission}." + "So if you are up for a challenge, ask me for a {mission}.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 19) npcHandler:setTopic(playerId, 0) @@ -83,7 +83,7 @@ local function creatureSayCallback(npc, creature, type, message) "It will be your task to eliminate them. This spell will protect you from becoming infected yourself. Enter the alchemist quarter and kill the three plague carriers, and atbest anything else you might find there. ...", "Even more important, retrieve the last research notes that the local alchemists made before the plague killed them. They might be the key for a cure or something else. ...", "At least we have to make sure that these scientists did not die in vain, and honour their researches. So please bring us these research notes. ...", - "Also, I will inform the guards that you are allowed to pass the centre gate to the alchemist quarter. Just use the gate mechanism to pass." + "Also, I will inform the guards that you are allowed to pass the centre gate to the alchemist quarter. Just use the gate mechanism to pass.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 20) player:setStorageValue(Storage.InServiceofYalahar.Mission03, 4) -- StorageValue for Questlog "Mission 03: Death to the Deathbringer" @@ -96,7 +96,7 @@ local function creatureSayCallback(npc, creature, type, message) "We surely cannot allow some underworld kingpin to rule a significant part of the city. Although, I have to admit that his firm grip on the former trade quarter might be useful....", "I expect you to fight your way through his minions and to show him that we are determined and powerful enough to retake the quarter, if necessary by force. Talk to himafter killing some of his henchmen. ...", "I'm sure he'll understand that he will succumb to a greater power. That's how his little empire has worked after all. ...", - "Also, I will inform the guards that you are allowed to pass the centre gate to the trade quarter now. Just use the gate mechanism to pass." + "Also, I will inform the guards that you are allowed to pass the centre gate to the trade quarter now. Just use the gate mechanism to pass.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 23) player:setStorageValue(Storage.InServiceofYalahar.Mission04, 1) -- StorageValue for Questlog "Mission 04: Good to be Kingpin" @@ -104,7 +104,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.InServiceofYalahar.Questline) == 26 then npcHandler:say({ "So he has been too uncooperative for you? Well, you weren't the first we have sent and you won't be the last. ...", - "However, if you cannot even serve us as a bully, we might have to rethink if you are the right person for us. That was a bad job and we don't tolerate many of them." + "However, if you cannot even serve us as a bully, we might have to rethink if you are the right person for us. That was a bad job and we don't tolerate many of them.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 27) player:setStorageValue(Storage.InServiceofYalahar.Mission04, 6) -- StorageValue for Questlog "Mission 04: Good to be Kingpin" @@ -113,7 +113,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "I hope you gave this criminal a real scare! I'm sure he'll remember what he has to expect if he arouses our anger again. ...", "You have proven yourself as quite valuable with this mission! That was just the first step on your rise through the ranks of our helpers. ...", - "Just ask me for more missions and we will see what you are capable of!" + "Just ask me for more missions and we will see what you are capable of!", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.BadSide, player:getStorageValue(Storage.InServiceofYalahar.BadSide) >= 0 and player:getStorageValue(Storage.InServiceofYalahar.BadSide) + 1 or 0) -- Side Storage player:setStorageValue(Storage.InServiceofYalahar.Questline, 27) @@ -126,7 +126,7 @@ local function creatureSayCallback(npc, creature, type, message) "Now all kinds of beasts roam the park, and gladiators challenge them and visitors to test their skills. One of the residents is an ancient druid that rather cares foranimals than for people. ...", "It is said that he is able to use magic to breed animals with changed abilities and appearances. Such skills are of course quite useful for us. ...", "We lack the manpower to retake all quarters, or just to defend ourselves adequately. If he bred us some guards and warbeasts, we could strengthen our positionconsiderably. ...", - "Travel to the arena quarter and gain his assistance for us. I will inform the guards that you are allowed to pass the centre gate to the arena quarter now. Just use thegate mechanism to pass." + "Travel to the arena quarter and gain his assistance for us. I will inform the guards that you are allowed to pass the centre gate to the arena quarter now. Just use thegate mechanism to pass.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 28) player:setStorageValue(Storage.InServiceofYalahar.Mission05, 1) -- StorageValue for Questlog "Mission 05: Food or Fight" @@ -134,14 +134,14 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.InServiceofYalahar.Questline) == 33 then npcHandler:say({ "This druid dares to affront us? We will look into this when we have enough time. But there are other things that needs to be settled. ...", - "Although, we probably should not do so after your last failure, we are willing to grant you another mission." + "Although, we probably should not do so after your last failure, we are willing to grant you another mission.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 34) npcHandler:setTopic(playerId, 0) elseif player:getStorageValue(Storage.InServiceofYalahar.Questline) == 32 and player:getStorageValue(Storage.InServiceofYalahar.TamerinStatus) == 2 then npcHandler:say({ "So have you won us a new ally? Excellent. I knew you would not dare to ruin this mission. Soon we might be able to strengthen our defences and even relocate some of our guards. ...", - "Perhaps some day soon, you lead your own unit of men. However, there are more missions that need to be accomplished. Let's talk about them." + "Perhaps some day soon, you lead your own unit of men. However, there are more missions that need to be accomplished. Let's talk about them.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.BadSide, player:getStorageValue(Storage.InServiceofYalahar.BadSide) >= 0 and player:getStorageValue(Storage.InServiceofYalahar.BadSide) + 1 or 0) -- Side Storage player:setStorageValue(Storage.InServiceofYalahar.Questline, 34) @@ -153,7 +153,7 @@ local function creatureSayCallback(npc, creature, type, message) "However, those undead could be useful, at least some of them. Particular ghosts consist of a substance that is very similar to the energy source that powered some of our devices. ...", "Since we lack most of the original sources, some substitute might come in handy. Take this ghost charm and place it on the strange carving in the cemetery. ...", "Use it to attract ghosts and slay them. Then use the residues of the ghosts on the charm to capture the essence. ...", - "Once it is filled, ghosts will not be attracted any longer. Then return the charm to me. I will inform the guards that you are allowed to pass the centre gate to the cemetery quarter now. Just use the gate mechanism to pass." + "Once it is filled, ghosts will not be attracted any longer. Then return the charm to me. I will inform the guards that you are allowed to pass the centre gate to the cemetery quarter now. Just use the gate mechanism to pass.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 35) player:setStorageValue(Storage.InServiceofYalahar.Mission06, 1) -- StorageValue for Questlog "Mission 06: Frightening Fuel" @@ -162,7 +162,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.InServiceofYalahar.Questline) == 38 then npcHandler:say({ "Destroyed you say? That's impossible! I'm not sure if I can trust you in this matter? One might assume, you fled from the ghosts in terror and left the charm there. ...", - "You will have to work twice as hard on your next missions to restore the trust you have lost." + "You will have to work twice as hard on your next missions to restore the trust you have lost.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 39) player:setStorageValue(Storage.InServiceofYalahar.Mission06, 5) -- StorageValue for Questlog "Mission 06: Frightening Fuel" @@ -171,7 +171,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeItem(8827, 1) then npcHandler:say({ "Ah, what an unexpected sight. I can almost feel the energy of the charm. It will help to recover some of the past wealth. ...", - "You did quite an impressive job. I'm considering to introduce you to my ma.. to my direct superior one day. But there are still other missions to fulfil." + "You did quite an impressive job. I'm considering to introduce you to my ma.. to my direct superior one day. But there are still other missions to fulfil.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 39) player:setStorageValue(Storage.InServiceofYalahar.Mission06, 5) -- StorageValue for Questlog "Mission 06: Frightening Fuel" @@ -183,7 +183,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Recently, our fishermen have been attacked by a maritime race called the quara. They live in the sunken quarter and are a significant threat to our people. I ask you to enter the sunken quarter and slay all their leaders. ...", "We believe that there are three leaders in this area. Your task is simple enough, so you better don't fail! ...", - "I will inform the guards that you are allowed to pass the centre gate to the sunken quarter now. Just use the gate mechanism to pass." + "I will inform the guards that you are allowed to pass the centre gate to the sunken quarter now. Just use the gate mechanism to pass.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 40) player:setStorageValue(Storage.InServiceofYalahar.Mission07, 1) -- StorageValue for Questlog "Mission 07: A Fishy Mission" @@ -199,7 +199,7 @@ local function creatureSayCallback(npc, creature, type, message) "In the past, we had many magical factories providing the citizens with everything they needed. Now that most of these factories are shut down, we have trouble getting enough supplies. ...", "We need you to enter one of the lesser damaged factories. Go to the factory district and look for a pattern crystal used for weapon production. Use it on the factory controller. ...", "It will ensure that the factory will provide us with a suitable amount of weapons which we dearly need to reclaim and secure the most dangerous parts of the city. ...", - "I will inform the guards that you are allowed to pass the centre gate to the factory quarter now. Just use the gate mechanism to pass." + "I will inform the guards that you are allowed to pass the centre gate to the factory quarter now. Just use the gate mechanism to pass.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 44) player:setStorageValue(Storage.InServiceofYalahar.Mission08, 1) -- StorageValue for Questlog "Mission 08: Dangerous Machinations" @@ -218,7 +218,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.InServiceofYalahar.Questline) == 47 then npcHandler:say({ "I'm impressed by your support for our cause. Still, I'm aware that this scheming Palimuth tried to influence you. Think about who are your real friends and who can assist you in your career. ...", - "Come back if you have decided to which side you want to belong." + "Come back if you have decided to which side you want to belong.", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 48) player:setStorageValue(Storage.InServiceofYalahar.Mission09, 1) -- StorageValue for Questlog "Mission 09: Decision" @@ -231,7 +231,7 @@ local function creatureSayCallback(npc, creature, type, message) "For your noble deeds, we would like to invite you to a special celebration ceremony. ...", "Only the most prominent Yalahari are allowed to join the festivities. I assume you can imagine what honour it is that you'vebeen invited to join us. Meet us in the inner city's centre. ...", "As our most trusted ally, you may pass all doors to reach the festivity hall. There you will receive your reward for the achievements you have gained so far. ...", - "I'm convinced your reward will be beyond your wildest dreams. And that is just the beginning!" + "I'm convinced your reward will be beyond your wildest dreams. And that is just the beginning!", }, npc, creature) player:setStorageValue(Storage.InServiceofYalahar.Questline, 51) player:setStorageValue(Storage.InServiceofYalahar.DoorToLastFight, 1) @@ -270,7 +270,7 @@ local function creatureSayCallback(npc, creature, type, message) player:setStorageValue(Storage.InServiceofYalahar.Mission03, 6) -- StorageValue for Questlog "Mission 03: Death to the Deathbringer" npcHandler:say({ "Hm, no sign of any notes you say? That's odd - odd and a bit suspicious. I doubt you have tried hard enough. ...", - "There are only a few chances to impress us. For those who please us great rewards are in store. If you fail though, you might lose more than you can imagine." + "There are only a few chances to impress us. For those who please us great rewards are in store. If you fail though, you might lose more than you can imagine.", }, npc, creature) npcHandler:setTopic(playerId, 0) end diff --git a/data-otservbr-global/npc/yaman.lua b/data-otservbr-global/npc/yaman.lua index 2e2c09db7e5..951528e7e6e 100644 --- a/data-otservbr-global/npc/yaman.lua +++ b/data-otservbr-global/npc/yaman.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 103 + lookType = 103, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -54,64 +54,63 @@ local function creatureSayCallback(npc, creature, type, message) end if table.contains({ "enchanted chicken wing", "boots of haste", "Enchanted Chicken Wing", "Boots of Haste" }, message) then - npcHandler:say('Do you want to trade Boots of haste for Enchanted Chicken Wing?', npc, creature) + npcHandler:say("Do you want to trade Boots of haste for Enchanted Chicken Wing?", npc, creature) npcHandler:setTopic(playerId, 1) elseif table.contains({ "warrior sweat", "warrior helmet", "Warrior Sweat", "Warrior Helmet" }, message) then - npcHandler:say('Do you want to trade 4 Warrior Helmet for Warrior Sweat?', npc, creature) + npcHandler:say("Do you want to trade 4 Warrior Helmet for Warrior Sweat?", npc, creature) npcHandler:setTopic(playerId, 2) elseif table.contains({ "fighting spirit", "royal helmet", "Fighting Spirit", "Royal Helmet" }, message) then - npcHandler:say('Do you want to trade 2 Royal Helmet for Fighting Spirit', npc, creature) + npcHandler:say("Do you want to trade 2 Royal Helmet for Fighting Spirit", npc, creature) npcHandler:setTopic(playerId, 3) elseif table.contains({ "magic sulphur", "fire sword", "Magic Sulphur", "Fire Sword" }, message) then - npcHandler:say('Do you want to trade 3 Fire Sword for Magic Sulphur', npc, creature) + npcHandler:say("Do you want to trade 3 Fire Sword for Magic Sulphur", npc, creature) npcHandler:setTopic(playerId, 4) elseif table.contains({ "job", "items", "Items", "Job" }, message) then - npcHandler:say('I trade Enchanted Chicken Wing for Boots of Haste, Warrior Sweat for 4 Warrior Helmets, Fighting Spirit for 2 Royal Helmet Magic Sulphur for 3 Fire Swords', npc, creature) + npcHandler:say("I trade Enchanted Chicken Wing for Boots of Haste, Warrior Sweat for 4 Warrior Helmets, Fighting Spirit for 2 Royal Helmet Magic Sulphur for 3 Fire Swords", npc, creature) npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'cookie') then - if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 - and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Djinn) ~= 1 then - npcHandler:say('You brought cookies! How nice of you! Can I have one?', npc, creature) + elseif MsgContains(message, "cookie") then + if player:getStorageValue(Storage.WhatAFoolish.Questline) == 31 and player:getStorageValue(Storage.WhatAFoolish.CookieDelivery.Djinn) ~= 1 then + npcHandler:say("You brought cookies! How nice of you! Can I have one?", npc, creature) npcHandler:setTopic(playerId, 5) end - elseif MsgContains(message, 'yes') then + elseif MsgContains(message, "yes") then if npcHandler:getTopic(playerId) >= 1 and npcHandler:getTopic(playerId) <= 4 then local trade = { { NeedItem = 3079, Ncount = 1, GiveItem = 5891, Gcount = 1 }, -- Enchanted Chicken Wing { NeedItem = 3369, Ncount = 4, GiveItem = 5885, Gcount = 1 }, -- Flask of Warrior's Sweat { NeedItem = 3392, Ncount = 2, GiveItem = 5884, Gcount = 1 }, -- Spirit Container - { NeedItem = 3280, Ncount = 3, GiveItem = 5904, Gcount = 1 } -- Magic Sulphur + { NeedItem = 3280, Ncount = 3, GiveItem = 5904, Gcount = 1 }, -- Magic Sulphur } if player:getItemCount(trade[npcHandler:getTopic(playerId)].NeedItem) >= trade[npcHandler:getTopic(playerId)].Ncount then player:removeItem(trade[npcHandler:getTopic(playerId)].NeedItem, trade[npcHandler:getTopic(playerId)].Ncount) player:addItem(trade[npcHandler:getTopic(playerId)].GiveItem, trade[npcHandler:getTopic(playerId)].Gcount) - return npcHandler:say('Here you are.', npc, creature) + return npcHandler:say("Here you are.", npc, creature) else - npcHandler:say('Sorry but you don\'t have the item.', npc, creature) + npcHandler:say("Sorry but you don't have the item.", npc, creature) end elseif npcHandler:getTopic(playerId) == 5 then if not player:removeItem(130, 1) then - npcHandler:say('You have no cookie that I\'d like.', npc, creature) + npcHandler:say("You have no cookie that I'd like.", npc, creature) npcHandler:setTopic(playerId, 0) return true end player:setStorageValue(Storage.WhatAFoolish.CookieDelivery.Djinn, 1) if player:getCookiesDelivered() == 10 then - player:addAchievement('Allow Cookies?') + player:addAchievement("Allow Cookies?") end npc:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) - npcHandler:say('You see, good deeds like this will ... YOU ... YOU SPAWN OF EVIL! I WILL MAKE SURE THE MASTER LEARNS ABOUT THIS!', npc, creature) + npcHandler:say("You see, good deeds like this will ... YOU ... YOU SPAWN OF EVIL! I WILL MAKE SURE THE MASTER LEARNS ABOUT THIS!", npc, creature) npcHandler:removeInteraction(npc, creature) npcHandler:resetNpc(creature) end - elseif MsgContains(message, 'no') then + elseif MsgContains(message, "no") then if npcHandler:getTopic(playerId) >= 1 and npcHandler:getTopic(playerId) <= 4 then - npcHandler:say('Ok then.', npc, creature) + npcHandler:say("Ok then.", npc, creature) npcHandler:setTopic(playerId, 0) elseif npcHandler:getTopic(playerId) == 5 then - npcHandler:say('I see.', npc, creature) + npcHandler:say("I see.", npc, creature) npcHandler:setTopic(playerId, 0) end end @@ -123,7 +122,7 @@ local function onTradeRequest(npc, creature) local playerId = player:getId() if player:getStorageValue(Storage.DjinnWar.EfreetFaction.Mission03) ~= 3 then - npcHandler:say('I\'m sorry, but you don\'t have Malor\'s permission to trade with me.', npc, creature) + npcHandler:say("I'm sorry, but you don't have Malor's permission to trade with me.", npc, creature) return false end return true @@ -132,7 +131,7 @@ end npcHandler:setMessage(MESSAGE_GREET, "Be greeted, human |PLAYERNAME|. How can a humble djinn be of service?") npcHandler:setMessage(MESSAGE_FAREWELL, "Farewell, human.") npcHandler:setMessage(MESSAGE_WALKAWAY, "Farewell, human.") -npcHandler:setMessage(MESSAGE_SENDTRADE, 'At your service, just browse through my wares.') +npcHandler:setMessage(MESSAGE_SENDTRADE, "At your service, just browse through my wares.") npcHandler:setCallback(CALLBACK_ON_TRADE_REQUEST, onTradeRequest) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) @@ -161,7 +160,7 @@ npcConfig.shop = { { itemName = "strange talisman", clientId = 3045, buy = 100, sell = 30, count = 200 }, { itemName = "terra rod", clientId = 3065, sell = 2000 }, { itemName = "time ring", clientId = 3053, buy = 2000, sell = 100 }, - { itemName = "underworld rod", clientId = 8082, sell = 4400 } + { itemName = "underworld rod", clientId = 8082, sell = 4400 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -172,7 +171,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/yana.lua b/data-otservbr-global/npc/yana.lua index 380548f8a7a..9f811f5964f 100644 --- a/data-otservbr-global/npc/yana.lua +++ b/data-otservbr-global/npc/yana.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 57, lookLegs = 0, lookFeet = 68, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Trading tokens! First-class equipment available!' } + { text = "Trading tokens! First-class equipment available!" }, } npcConfig.currency = 22721 @@ -41,7 +41,7 @@ npcConfig.shop = { { name = "mace of desctruction", clientId = 27453, buy = 50 }, { name = "rod of desctruction", clientId = 27458, buy = 50 }, { name = "slayer of desctruction", clientId = 27450, buy = 50 }, - { name = "wand of desctruction", clientId = 27457, buy = 50 } + { name = "wand of desctruction", clientId = 27457, buy = 50 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -52,88 +52,87 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local products = { - ['strike'] = { - ['basic'] = { + ["strike"] = { + ["basic"] = { text = "The basic bundle for the strike imbuement consists of 20 protective charms. Would you like to buy it for 2 gold tokens??", itens = { - [1] = { id = 11444, amount = 20 } + [1] = { id = 11444, amount = 20 }, }, - value = 2 + value = 2, }, - ['intricate'] = { + ["intricate"] = { text = "The intricate bundle for the strike imbuement consists of 20 protective charms and 25 sabreteeth. Would you like to buy it for 4 gold tokens??", itens = { [1] = { id = 11444, amount = 20 }, - [2] = { id = 10311, amount = 25 } + [2] = { id = 10311, amount = 25 }, }, - value = 4 + value = 4, }, - ['powerful'] = { + ["powerful"] = { text = "The powerful bundle for the strike imbuement consists of 20 protective charms, 25 sabreteeth and 5 vexclaw talons. Would you like to buy it for 6 gold tokens??", itens = { [1] = { id = 11444, amount = 20 }, [2] = { id = 10311, amount = 25 }, - [3] = { id = 22728, amount = 5 } + [3] = { id = 22728, amount = 5 }, }, - value = 6 - } + value = 6, + }, }, - ['vampirism'] = { - ['basic'] = { + ["vampirism"] = { + ["basic"] = { text = "The basic bundle for the vampirism imbuement consists of 25 vampire teeth. Would you like to buy it for 2 gold tokens??", itens = { - [1] = { id = 9685, amount = 25 } + [1] = { id = 9685, amount = 25 }, }, - value = 2 + value = 2, }, - ['intricate'] = { + ["intricate"] = { text = "The intricate bundle for the strike imbuement consists of 20 protective charms and 25 sabreteeth. Would you like to buy it for 4 gold tokens??", itens = { [1] = { id = 9685, amount = 25 }, - [2] = { id = 9633, amount = 15 } + [2] = { id = 9633, amount = 15 }, }, - value = 4 + value = 4, }, - ['powerful'] = { + ["powerful"] = { text = "The powerful bundle for the vampirism imbuement consists of 25 vampire teeth, 15 bloody pincers and 5 pieces of dead brain. Would you like to it for 6 gold tokens??", itens = { [1] = { id = 9685, amount = 25 }, [2] = { id = 9633, amount = 15 }, - [3] = { id = 9663, amount = 5 } + [3] = { id = 9663, amount = 5 }, }, - value = 6 - } + value = 6, + }, }, - ['void'] = { - ['basic'] = { + ["void"] = { + ["basic"] = { text = "The basic bundle for the void imbuement consists of 25 rope belts. Would you like to buy it for 2 gold tokens??", itens = { - [1] = { id = 11492, amount = 25 } + [1] = { id = 11492, amount = 25 }, }, value = 2, }, - ['intricate'] = { + ["intricate"] = { text = "The intricate bundle for the void imbuement consists of 25 rope belts and 25 silencer claws. Would you like to buy it for 4 gold tokens??.", itens = { [1] = { id = 11492, amount = 25 }, - [2] = { id = 20200, amount = 25 } + [2] = { id = 20200, amount = 25 }, }, value = 4, }, - ['powerful'] = { + ["powerful"] = { text = "The powerful bundle for the void imbuement consists of 25 rope belts, 25 silencer claws and 5 grimeleech wings. Would you like to buy it for 6 gold tokens??", itens = { [1] = { id = 11492, amount = 25 }, [2] = { id = 20200, amount = 25 }, - [3] = { id = 22730, amount = 5 } + [3] = { id = 22730, amount = 5 }, }, value = 6, - } - } + }, + }, } local answerType = {} @@ -181,8 +180,7 @@ local function creatureSayCallback(npc, creature, type, message) end if MsgContains(message, "information") then - npcHandler:say({ "{Tokens} are small objects made of metal or other materials. You can use them to buy superior equipment from token traders like me.", - "There are several ways to obtain the tokens I'm interested in - killing certain bosses, for example. In exchange for a certain amount of tokens, I can offer you some first-class items." }, npc, creature) + npcHandler:say({ "{Tokens} are small objects made of metal or other materials. You can use them to buy superior equipment from token traders like me.", "There are several ways to obtain the tokens I'm interested in - killing certain bosses, for example. In exchange for a certain amount of tokens, I can offer you some first-class items." }, npc, creature) elseif MsgContains(message, "worth") then -- to do: check if Heart of Destruction was killed -- after kill message: 'You disrupted the Heart of Destruction, defeated the World Devourer and bought our world some time. You have proven your worth.' @@ -208,8 +206,7 @@ local function creatureSayCallback(npc, creature, type, message) for i = 1, #products[answerType[playerId]][answerLevel[playerId]].itens do neededCap = neededCap + ItemType(products[answerType[playerId]][answerLevel[playerId]].itens[i].id):getWeight() * products[answerType[playerId]][answerLevel[playerId]].itens[i].amount end - npcHandler:say({ imbueLevel.text .. "...", - "Make sure that you have " .. #products[answerType[playerId]][answerLevel[playerId]].itens .. " free slot and that you can carry " .. string.format("%.2f", neededCap / 100) .. " oz in addition to that." }, npc, creature) + npcHandler:say({ imbueLevel.text .. "...", "Make sure that you have " .. #products[answerType[playerId]][answerLevel[playerId]].itens .. " free slot and that you can carry " .. string.format("%.2f", neededCap / 100) .. " oz in addition to that." }, npc, creature) npcHandler:setTopic(playerId, 3) end elseif npcHandler:getTopic(playerId) == 3 then @@ -230,7 +227,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("I'm sorry but it seems you don't have enough " .. ItemType(npc:getCurrency()):getPluralName():lower() .. " ..? yet. Bring me " .. products[answerType[playerId]][answerLevel[playerId]].value .. " of them and we'll make a trade.", npc, creature) end else - npcHandler:say("You don\'t have enough capacity. You must have " .. neededCap .. " oz.", npc, creature) + npcHandler:say("You don't have enough capacity. You must have " .. neededCap .. " oz.", npc, creature) end elseif MsgContains(message, "no") then npcHandler:say("Your decision. Come back if you have changed your mind.", npc, creature) diff --git a/data-otservbr-global/npc/yanni.lua b/data-otservbr-global/npc/yanni.lua index f66b35c1047..d08b29c753e 100644 --- a/data-otservbr-global/npc/yanni.lua +++ b/data-otservbr-global/npc/yanni.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 22, lookLegs = 22, lookFeet = 57, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -86,7 +86,7 @@ npcConfig.shop = { { itemName = "studded shield", clientId = 3426, buy = 50, sell = 16 }, { itemName = "viking helmet", clientId = 3367, buy = 265, sell = 66 }, { itemName = "viking shield", clientId = 3431, buy = 260, sell = 85 }, - { itemName = "wooden shield", clientId = 3412, buy = 15, sell = 5 } + { itemName = "wooden shield", clientId = 3412, buy = 15, sell = 5 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -97,7 +97,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/yasir.lua b/data-otservbr-global/npc/yasir.lua index 2675b2d927f..f6e4dd13a1b 100644 --- a/data-otservbr-global/npc/yasir.lua +++ b/data-otservbr-global/npc/yasir.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 7, lookLegs = 12, lookFeet = 19, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -645,7 +645,7 @@ npcConfig.shop = { { itemName = "yirkas' egg", clientId = 34102, sell = 280 }, { itemName = "young lich worm", clientId = 31590, sell = 25000 }, { itemName = "zaogun flag", clientId = 10413, sell = 600 }, - { itemName = "zaogun shoulderplates", clientId = 10414, sell = 150 } + { itemName = "zaogun shoulderplates", clientId = 10414, sell = 150 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -656,8 +656,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local function creatureSayCallback(npc, creature, type, message) local player = Player(creature) diff --git a/data-otservbr-global/npc/yawno.lua b/data-otservbr-global/npc/yawno.lua index 919381a6bdc..453f6d3e4f6 100644 --- a/data-otservbr-global/npc/yawno.lua +++ b/data-otservbr-global/npc/yawno.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookTypeEx = 4240 + lookTypeEx = 4240, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/yberius.lua b/data-otservbr-global/npc/yberius.lua index e2112c2ee5d..7d2f6fa7b9b 100644 --- a/data-otservbr-global/npc/yberius.lua +++ b/data-otservbr-global/npc/yberius.lua @@ -15,11 +15,11 @@ npcConfig.outfit = { lookHead = 20, lookBody = 30, lookLegs = 40, - lookFeet = 50 + lookFeet = 50, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -50,102 +50,125 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Yberius) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Yberius) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Yberius, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Wooden Stake -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'I think you have forgotten to bring your stake.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 4 and player:getItemCount(5941) == 0 end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "I think you have forgotten to bring your stake." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 4 and player:getItemCount(5941) == 0 +end) -local stakeKeyword = keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes, I was informed what to do. Are you prepared to receive my line of the prayer?' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 4 end) -stakeKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'So receive my prayer: \'Protection will be granted - from dangers at hand\'. Now, bring your stake to Isimov in the dwarven settlement for the next line of the prayer. I will inform him what to do.', reset = true }, nil, - function(player) - player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 5) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - end -) -stakeKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'I will wait for you.', reset = true }) +local stakeKeyword = keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "Yes, I was informed what to do. Are you prepared to receive my line of the prayer?" }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 4 +end) +stakeKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "So receive my prayer: 'Protection will be granted - from dangers at hand'. Now, bring your stake to Isimov in the dwarven settlement for the next line of the prayer. I will inform him what to do.", reset = true }, nil, function(player) + player:setStorageValue(Storage.FriendsandTraders.TheBlessedStake, 5) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +stakeKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "I will wait for you.", reset = true }) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You should visit Isimov in the dwarven settlement now.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 5 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'You already received my line of the prayer.' }, function(player) return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 5 end) -keywordHandler:addKeyword({ 'stake' }, StdModule.say, { npcHandler = npcHandler, text = 'A blessed stake? That is a strange request. Maybe Quentin knows more, he is one of the oldest monks after all.' }) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You should visit Isimov in the dwarven settlement now." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) == 5 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "You already received my line of the prayer." }, function(player) + return player:getStorageValue(Storage.FriendsandTraders.TheBlessedStake) > 5 +end) +keywordHandler:addKeyword({ "stake" }, StdModule.say, { npcHandler = npcHandler, text = "A blessed stake? That is a strange request. Maybe Quentin knows more, he is one of the oldest monks after all." }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/yoem.lua b/data-otservbr-global/npc/yoem.lua index 5d103e7bcf0..cab2685e308 100644 --- a/data-otservbr-global/npc/yoem.lua +++ b/data-otservbr-global/npc/yoem.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 113, lookLegs = 105, lookFeet = 113, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Beds, chairs, tables, statues and everything you could imagine for decorating your home!' } + { text = "Beds, chairs, tables, statues and everything you could imagine for decorating your home!" }, } local keywordHandler = KeywordHandler:new() @@ -56,7 +56,7 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addKeyword({ 'furniture' }, StdModule.say, { npcHandler = npcHandler, text = "I have {beds}, {chairs}, {containers}, {decoration}, {flowers}, {instruments}, {pillows}, {pottery}, {statues}, {tapestries} and {tables}. Which of those would you like to see?" }) +keywordHandler:addKeyword({ "furniture" }, StdModule.say, { npcHandler = npcHandler, text = "I have {beds}, {chairs}, {containers}, {decoration}, {flowers}, {instruments}, {pillows}, {pottery}, {statues}, {tapestries} and {tables}. Which of those would you like to see?" }) npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|! Do you need some equipment for your house?") npcHandler:setMessage(MESSAGE_SENDTRADE, "Have a look. Most furniture comes in handy kits. Just use them in your house to assemble the furniture. Do you want to see only a certain {type} of furniture?") @@ -159,7 +159,7 @@ npcConfig.shop = { { itemName = "yellow footboard", clientId = 32485, buy = 40 }, { itemName = "yellow headboard", clientId = 32476, buy = 40 }, { itemName = "yellow pillow", clientId = 900, buy = 25 }, - { itemName = "yellow tapestry", clientId = 2650, buy = 25 } + { itemName = "yellow tapestry", clientId = 2650, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -170,7 +170,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/yonan.lua b/data-otservbr-global/npc/yonan.lua index fbe2f0a2a55..65aee681ac9 100644 --- a/data-otservbr-global/npc/yonan.lua +++ b/data-otservbr-global/npc/yonan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 49, lookLegs = 10, lookFeet = 0, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.shop = { @@ -76,7 +76,7 @@ npcConfig.shop = { { itemName = "violet crystal shard", clientId = 16120, sell = 1500 }, { itemName = "wedding ring", clientId = 3004, buy = 990 }, { itemName = "white silk flower", clientId = 34008, sell = 9000 }, - { itemName = "white pearl", clientId = 3026, buy = 320 } + { itemName = "white pearl", clientId = 3026, buy = 320 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -87,8 +87,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -124,8 +123,7 @@ local function greetCallback(npc, creature) if player:getStorageValue(Storage.Kilmaresh.First.Access) < 1 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 1) - elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) - and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then + elseif (player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) >= 0 and player:getStorageValue(Storage.Kilmaresh.First.JamesfrancisTask) <= 50) and player:getStorageValue(Storage.Kilmaresh.First.Mission) < 3 then npcHandler:setMessage(MESSAGE_GREET, "How could I help you?") -- It needs to be revised, it's not the same as the global npcHandler:setTopic(playerId, 15) elseif player:getStorageValue(Storage.Kilmaresh.First.Mission) == 4 then @@ -184,7 +182,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Well, bye then.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.") npcHandler:setCallback(CALLBACK_SET_INTERACTION, onAddFocus) npcHandler:setCallback(CALLBACK_REMOVE_INTERACTION, onReleaseFocus) diff --git a/data-otservbr-global/npc/yulas.lua b/data-otservbr-global/npc/yulas.lua index c8e6a2e84fe..12d8b107034 100644 --- a/data-otservbr-global/npc/yulas.lua +++ b/data-otservbr-global/npc/yulas.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 43, lookLegs = 38, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -57,7 +57,7 @@ npcConfig.shop = { { itemName = "round table kit", clientId = 2783, buy = 25 }, { itemName = "small table kit", clientId = 2782, buy = 20 }, { itemName = "square table kit", clientId = 2784, buy = 25 }, - { itemName = "trophy stand", clientId = 872, buy = 50 } + { itemName = "trophy stand", clientId = 872, buy = 50 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -68,7 +68,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/zaidal.lua b/data-otservbr-global/npc/zaidal.lua index f722f279be2..03cb6263036 100644 --- a/data-otservbr-global/npc/zaidal.lua +++ b/data-otservbr-global/npc/zaidal.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 44, lookLegs = 77, lookFeet = 95, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -61,7 +61,7 @@ npcConfig.shop = { { itemName = "trunk table kit", clientId = 2810, buy = 20 }, { itemName = "tusk", clientId = 3044, sell = 100 }, { itemName = "tusk chair kit", clientId = 2780, buy = 25 }, - { itemName = "tusk table kit", clientId = 2787, buy = 25 } + { itemName = "tusk table kit", clientId = 2787, buy = 25 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -72,7 +72,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/zalamon.lua b/data-otservbr-global/npc/zalamon.lua index 7893adf9587..ea643f2ff69 100644 --- a/data-otservbr-global/npc/zalamon.lua +++ b/data-otservbr-global/npc/zalamon.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 115 + lookType = 115, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -47,15 +47,15 @@ end local marks = { ChildrenOfTheRevolution = { - { position = Position(33235, 31177, 7), type = 4, description = 'entrance of the camp' }, - { position = Position(33257, 31172, 7), type = 3, description = 'building 1 which you have to spy' }, - { position = Position(33227, 31163, 7), type = 3, description = 'building 2 which you have to spy' }, - { position = Position(33230, 31156, 7), type = 3, description = 'building 3 which you have to spy' } + { position = Position(33235, 31177, 7), type = 4, description = "entrance of the camp" }, + { position = Position(33257, 31172, 7), type = 3, description = "building 1 which you have to spy" }, + { position = Position(33227, 31163, 7), type = 3, description = "building 2 which you have to spy" }, + { position = Position(33230, 31156, 7), type = 3, description = "building 3 which you have to spy" }, }, WrathOfTheEmperor = { - { position = Position(33356, 31180, 7), description = 'tunnel to hideout' }, - { position = Position(33173, 31076, 7), description = 'the rebel hideout' } - } + { position = Position(33356, 31180, 7), description = "tunnel to hideout" }, + { position = Position(33173, 31076, 7), description = "the rebel hideout" }, + }, } local function creatureSayCallback(npc, creature, type, message) @@ -71,7 +71,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.ChildrenoftheRevolution.Questline) < 1 then npcHandler:say({ "Zzo you are offering your help to a lizzard? Hmm, unuzzual. I don't know if I can fully truzzt you yet. ...", - "You'll have to work to earn my truzzt. Are you zzure you want to offer me your help?" + "You'll have to work to earn my truzzt. Are you zzure you want to offer me your help?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.ChildrenoftheRevolution.Questline) == 2 then @@ -82,14 +82,14 @@ local function creatureSayCallback(npc, creature, type, message) "Zzurely you have zzeen zze black pondzz and puddlezz all over zze mountain pazz, palezzkin. It izz zze corruption zzat pervadezz zze landzz. It would be wizze not to drink or tazzte from zzem. ... ", "It zzoakzz zze land, itzz people and even zze air itzzelf. But zzere are zztill zzpotzz not tainted by zze darknezz. ... ", "A temple, norzzwezzt of zze barricaded outpozzt wizztood zze evil influenzze. However, I lozzt contact to itzz inhabitantzz when zze lizzardzz tightened zzeir grip. ... ", - "No one made it zzrough zze mountainzz for quite zzome time now - exzzept you. Maybe you can find out what happened zzere? " + "No one made it zzrough zze mountainzz for quite zzome time now - exzzept you. Maybe you can find out what happened zzere? ", }, npc, creature) npcHandler:setTopic(playerId, 5) elseif player:getStorageValue(Storage.ChildrenoftheRevolution.Questline) == 5 then npcHandler:say({ "Zzo you found zze temple... lozzt you zzay. It wazz our lazzt remaining bazztion of hope for help from wizzin zze plainzz. ... ", "Zzat meanzz zze plainzz are now in zze handzz of zze emperor and hizz army. I'm afraid zzat even zze great gate izz zzealed and zze landzz beyond it tainted azz well. ... ", - "Dark timezz, and I fear we know nozzing about our enemy yet. " + "Dark timezz, and I fear we know nozzing about our enemy yet. ", }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.ChildrenoftheRevolution.Questline, 6) @@ -100,14 +100,14 @@ local function creatureSayCallback(npc, creature, type, message) "Zzere uzzed to be a remote and quiet zzettlement in zze middle of zze valley. If it hazz not been dezztroyed by zze corruption, I'm zzure zze army of zze emperor will have confizzcated it to gazzer rezzourzzezz. ... ", "If you can get inzzide zze village, find out anyzzing you can about zzeir zzituation. Zze clever hawk hidezz itzz clawzz. ... ", "I'm mozzt interezzted in zzeir weaponzz, food and zze zztrengzz of zzeir forzzezz. ... ", - "Are you prepared for zzizz mizzion? " + "Are you prepared for zzizz mizzion? ", }, npc, creature) npcHandler:setTopic(playerId, 6) elseif player:getStorageValue(Storage.ChildrenoftheRevolution.Questline) == 7 then if player:getStorageValue(Storage.ChildrenoftheRevolution.SpyBuilding01) == 1 and player:getStorageValue(Storage.ChildrenoftheRevolution.SpyBuilding02) == 1 and player:getStorageValue(Storage.ChildrenoftheRevolution.SpyBuilding03) == 1 then npcHandler:say({ "Zzizz izz mozzt unfortunate. Zzo many warriorzz? Large amountzz of food? And how many weaponzz did you zzay? I zzee, hmm. ... ", - "Direct confrontation izz futile. We'll have to find ozzer wayzz to approach zze emperor and hizz army. " + "Direct confrontation izz futile. We'll have to find ozzer wayzz to approach zze emperor and hizz army. ", }, npc, creature) player:setStorageValue(Storage.ChildrenoftheRevolution.Questline, 8) player:setStorageValue(Storage.ChildrenoftheRevolution.Mission02, 5) --Questlog, Children of the Revolution "Mission 2: Imperial Zzecret Weaponzz" @@ -117,13 +117,13 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Your lazzt excurzzion revealed a terrifying truzz. Zze enemy'zz forzzezz are overwhelming, zzeir zztrengzz probably unrivaled. We cannot attack an army of zzizz zzize unlezz - unlezz we zzin out zzeir rankzz a little. ... ", "A zzingle individual can be azz zztrong azz an army if he zztrikezz zze army azz a whole. ... ", - "Are you ready for your nexzzt tazzk? " + "Are you ready for your nexzzt tazzk? ", }, npc, creature) npcHandler:setTopic(playerId, 7) elseif player:getStorageValue(Storage.ChildrenoftheRevolution.Questline) == 11 then npcHandler:say({ "You accomplished an important tazzk in breaking zze defenzze of zze emperor. Not everyzzing might be lozzt yet. ... ", - "I've got anozzer mizzion for you which will be even more dangerouzz zzan zze lazzt one. Return to me when you're ready. " + "I've got anozzer mizzion for you which will be even more dangerouzz zzan zze lazzt one. Return to me when you're ready. ", }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.ChildrenoftheRevolution.Questline, 12) @@ -131,20 +131,20 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.ChildrenoftheRevolution.Questline) == 12 then npcHandler:say({ "Wizz zze enemy'zz forzzezz weakened like zzizz, we will be able to zzneak pazzt zze defenzze and furzzer inzzpect zze norzz. You should travel to zze mountain range furzzer eazzt of zze village. ... ", - "Zze old route to zze gate hazz been taken by darknezz. You'll have to find ozzer wayzz. Are you up to zzizz, palezzkin? " + "Zze old route to zze gate hazz been taken by darknezz. You'll have to find ozzer wayzz. Are you up to zzizz, palezzkin? ", }, npc, creature) npcHandler:setTopic(playerId, 10) elseif player:getStorageValue(Storage.ChildrenoftheRevolution.Questline) == 17 then npcHandler:say({ "You have zzolved zze riddle? Imprezzive, palezzkin. Zze humming you hear in zze chamber mozzt zzertainly comezz from a magic portal zzomewhere in zze temple. ...", - "Have you zzearched zze ozzer chamberzz for any magical devizzezz or portalzz?" + "Have you zzearched zze ozzer chamberzz for any magical devizzezz or portalzz?", }, npc, creature) npcHandler:setTopic(playerId, 12) elseif player:getStorageValue(Storage.ChildrenoftheRevolution.Questline) == 18 then npcHandler:say({ "If I'm correct, zze portal in zze chamber beyond zze mechanizzm will lead you to zze great gate. It izz perfectly pozzible, however, zzat you will not be tranzzported directly into zze area. ...", "You will razzer be brought to a plazze clozze by your goal. Where exzzactly, I cannot zzay. ...", - "Take all your courage and walk zze pazz zzrough zze portal. At leazzt TRY it - after all, I didn't make you my pupil for nozzing, Kohei. Are you prepared?" + "Take all your courage and walk zze pazz zzrough zze portal. At leazzt TRY it - after all, I didn't make you my pupil for nozzing, Kohei. Are you prepared?", }, npc, creature) npcHandler:setTopic(playerId, 13) elseif player:getStorageValue(Storage.ChildrenoftheRevolution.Questline) == 20 then @@ -153,7 +153,7 @@ local function creatureSayCallback(npc, creature, type, message) "I focuzzed and could only hope zzat I would reach you before everyzzing wazz too late. If I hadn't been able to tranzzport you here, our cauzze would have been lozzt. ...", "I'm afraid we cannot continue zzizz fight here today. Zze rezzizztanzze izz zztill fragile. I'm afraid, zzere izz zztill much left to do. We'll have to prepare for war. ...", "You've helped uzz a great deal during zzezze dark hourzz, I've got zzomezzing for you my friend. Pleazze, take zzizz zzerpent crezzt azz a zzign of my deep rezzpect. ...", - "Rezzt for now, you will need it - you have earned it." + "Rezzt for now, you will need it - you have earned it.", }, npc, creature) player:setStorageValue(Storage.ChildrenoftheRevolution.Questline, 21) player:setStorageValue(Storage.ChildrenoftheRevolution.Mission05, 3) --Questlog, Children of the Revolution "Mission 5: Phantom Army" @@ -166,7 +166,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif player:getStorageValue(Storage.ChildrenoftheRevolution.Questline) == 21 and player:getStorageValue(Storage.WrathoftheEmperor.Questline) < 1 then npcHandler:say({ "Zze attackzz have weakened our enemy zzignificantly. Yet, your quezzt continuezz. Bezzidezz zzome tazzkzz you could take, zze zzreat of zze emperor izz zztill hanging over our headzz like a rain cloud. ... ", - "Zzo, are you indeed willing to continue zze fight for our cauzze? " + "Zzo, are you indeed willing to continue zze fight for our cauzze? ", }, npc, creature) npcHandler:setTopic(playerId, 14) elseif player:getStorageValue(Storage.WrathoftheEmperor.Questline) == 1 then @@ -178,7 +178,7 @@ local function creatureSayCallback(npc, creature, type, message) "Zze gardenzz are plagued by a creature. Zze former keeper of zzizz garden became an abomination of madnezz zzat needzz to be zztopped. ... ", "He hidezz deep underground and it will be dangerouzz to challenge him in hizz lair but I am willing to rizzk it. ... ", "Find him, dezztroy him, bring me hizz - I uhm, mean it izz utterly nezzezzary for you to deliver me a proof of hizz deazz. ... ", - "Now go - what are you waiting for, zzoftzzkin? Ready to finish what needzz to be finished? " + "Now go - what are you waiting for, zzoftzzkin? Ready to finish what needzz to be finished? ", }, npc, creature) npcHandler:setTopic(playerId, 19) elseif player:getStorageValue(Storage.WrathoftheEmperor.Questline) == 8 then @@ -195,7 +195,7 @@ local function creatureSayCallback(npc, creature, type, message) "We need a zzeptre of power zzat can be found in zze underground of an ancient temple. It hazz been overrun by zzavage apezz and you will have to fight zzem and zze ancient guardianzz of zze temple azz well. Get uzz zzat zzeptre wherever it might be. ... ", "It wazz revealed zzat it hazz been zzplit into 3 partzz for reazzonzz zzat are of no importanzze anymore. Zzizz powerful devizze could help uzz in our battle againzzt zze emperor. ... ", "A shaft, a cuzzp, and an emerald form a zzeptre of zzuch power zzat zze partzz were hidden and are now guarded by vile creaturezz. ... ", - "Find it. Retrieve it. And bring it back to me. " + "Find it. Retrieve it. And bring it back to me. ", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.Questline, 10) player:setStorageValue(Storage.WrathoftheEmperor.Mission04, 1) --Questlog, Wrath of the Emperor "Mission 04: Sacrament of the Snake" @@ -210,7 +210,7 @@ local function creatureSayCallback(npc, creature, type, message) "Now zzat you overcame zzeir linezz of defenzze at zze great gate, you only need to find a way to enter zzeir home. ... ", "Head zztraight to zze entranzze of zze zzity. If you can convinzze zze guardzz to let you enter zze zzity, you should be able to reach our contact zzere wizz eazze. ... ", "We have alzzo forged zome paperzz for you and zzent zzem to zze zzity. Your victory in zze arena iz well known in our land. Wizz zze help of zzezze paperzz you will pretend zzat zzome of zze higher officialzz want to talk to you about your battle. ... ", - "Zzizz way you will be able to enter zze zzity of zze dragon emperor and meet our contact zzere in zze imperial offizze. He will give you zze next inzztructionzz. " + "Zzizz way you will be able to enter zze zzity of zze dragon emperor and meet our contact zzere in zze imperial offizze. He will give you zze next inzztructionzz. ", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.Questline, 13) player:setStorageValue(Storage.WrathoftheEmperor.Mission05, 1) --Questlog, Wrath of the Emperor "Mission 05: New in Town" @@ -231,7 +231,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.ChildrenoftheRevolution.StrangeSymbols) == 1 then npcHandler:say({ "Mh, zze zzymbolzz of zze chamber you dezzcribe are very common in our culture, palezzkin. You should have come accrozz zzem in many a plazze already. ...", - "Zze zzymbolzz zzeem to be arranged in zzome way you zzay? Were zzere any notizzeable devizzezz? Zzwitchezz or leverzz? " + "Zze zzymbolzz zzeem to be arranged in zzome way you zzay? Were zzere any notizzeable devizzezz? Zzwitchezz or leverzz? ", }, npc, creature) npcHandler:setTopic(playerId, 11) end @@ -251,7 +251,7 @@ local function creatureSayCallback(npc, creature, type, message) "Beyond zzem, you'll find a lush valley, zze Muggy Plainzz. Find out about zzeir planzz, zzeir tacticzz. Zze lizzardzz' art of war izz characterizzed by dizzguizze and zzecrezzy. ...", "A traveller told me about a barricaded zzettlement zzey ezztablished. It'zz a weak and in all zzeir arroganzze, poorly guarded outpozzt beyond zze mountainzz. ...", "If you can find any documentzz about zzeir zztrategiezz, zze rezzizztanzze will be very grateful. ...", - "Are you interezzted, palezzkin?" + "Are you interezzted, palezzkin?", }, npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 2 then @@ -266,7 +266,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeItem(637, 1) then npcHandler:say({ "Aaah, zzezze look zzertainly interezzting. Zzezze manuzzcriptzz show uzz zzeveral locationzz of zze enemy troopzz. ... ", - "I'm imprezzed, zzoftzzkin. Maybe you can be of zzome more help. " + "I'm imprezzed, zzoftzzkin. Maybe you can be of zzome more help. ", }, npc, creature) player:setStorageValue(Storage.ChildrenoftheRevolution.Questline, 3) player:setStorageValue(Storage.ChildrenoftheRevolution.Mission00, 2) --Questlog, Children of the Revolution "Prove Your Worzz!" @@ -281,7 +281,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 6 then npcHandler:say({ "I'll mark zze entranzze to Chaochai on your map. ... ", - "Conzzentrate on one location at a time. Zze one who chazzezz after two harezz, won't catch even one. " + "Conzzentrate on one location at a time. Zze one who chazzezz after two harezz, won't catch even one. ", }, npc, creature) player:setStorageValue(Storage.ChildrenoftheRevolution.Questline, 7) player:setStorageValue(Storage.ChildrenoftheRevolution.Mission02, 1) --Questlog, Children of the Revolution "Mission 2: Imperial Zzecret Weaponzz" @@ -294,13 +294,13 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Not far to zze eazzt of zze village, you'll find rizze fieldzz. Zzey uzze zzem to rezztore zzeir food suppliezz. ... ", "In zze zztorage accrozz zzizz room, you'll find a zzpecial poizzon which will zzignificantly weaken zzem if uzzed on zze water and zzoil zze rizze growzz in. ... ", - "Are you fully prepared for zzizz?" + "Are you fully prepared for zzizz?", }, npc, creature) npcHandler:setTopic(playerId, 8) elseif npcHandler:getTopic(playerId) == 8 then npcHandler:say({ "Good. Zze fieldzz should be not far from Xiachai in zze eazzt. Go to zze top terrazze and mix zze poizzon wizz zze water. ... ", - "{Poizzon} izz often uzzed by cowardzz, yet it grantzz great power to zze opprezzed. " + "{Poizzon} izz often uzzed by cowardzz, yet it grantzz great power to zze opprezzed. ", }, npc, creature) player:setStorageValue(Storage.ChildrenoftheRevolution.Questline, 9) player:setStorageValue(Storage.ChildrenoftheRevolution.Mission03, 1) --Questlog, Children of the Revolution "Mission 3: Zee Killing Fieldzz" @@ -308,7 +308,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 10 then npcHandler:say({ "Perhapzz you can find a way to enter zze norzz of zze valley and find a pazzage to zze great gate itzzelf. Zzearch any templezz or zzettlementzz you come accrozz for hidden pazzagezz. ... ", - "I wish for a zzafe return wizz good newzz. " + "I wish for a zzafe return wizz good newzz. ", }, npc, creature) player:setStorageValue(Storage.ChildrenoftheRevolution.Questline, 13) if player:getStorageValue(Storage.ChildrenoftheRevolution.Mission04) <= 1 then @@ -319,7 +319,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Interezzting. It'zz a riddle, zzoftzzkin. Zzuch gamezz are very popular in our culture. I believe zze leverzz will alter zze arrangement. ... ", "Not too far from zze lever, zzere muzzt be a hint of zzome zzort. An image of how zze zzymbolzz muzzt be arranged. Zzurely zze mechanizzm will trigger a zzecret pazzage, maybe a moving wall or a portal. ... ", - "Zzizz should be our pazz to zze great gate. Head to zze zztorage onzze again. Zzere should be zzome extra greazzy oil which should work wizz zzuch a large mechanizzm. Zze leverzz should zzen be movable again. " + "Zzizz should be our pazz to zze great gate. Head to zze zztorage onzze again. Zzere should be zzome extra greazzy oil which should work wizz zzuch a large mechanizzm. Zze leverzz should zzen be movable again. ", }, npc, creature) player:setStorageValue(Storage.ChildrenoftheRevolution.StrangeSymbols, 2) player:setStorageValue(Storage.ChildrenoftheRevolution.Mission04, 3) --Questlog, Children of the Revolution "Mission 4: Zze Way of Zztonezz" @@ -328,7 +328,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Zzen zzizz izz zze way which will lead you to zze great gate. ...", "By zze way, before I forget it - zzinzze you are zzkilled in zzolving riddlezz, maybe you can make uzze of zzizz old tome I've found? It containzz ancient knowledge and truly izz a tezztament of our culture, treat it wizz care. ...", - "I may alzzo have anozzer mizzion for you if you are interezzted." + "I may alzzo have anozzer mizzion for you if you are interezzted.", }, npc, creature) player:addItem(10217, 1) player:setStorageValue(Storage.ChildrenoftheRevolution.Questline, 18) @@ -337,7 +337,8 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 13 then npcHandler:say({ "You did well on your quezzt zzo far. I hope you will reach zze great gate in time. If we are lucky, it will zztill be open. ...", - "If not, it will already be overrun by enemy zzoldierzz. Direct confrontation will be inevitable in zzat cazze, palezzkin. Now clear your mind and approach zze portal." }, npc, creature) + "If not, it will already be overrun by enemy zzoldierzz. Direct confrontation will be inevitable in zzat cazze, palezzkin. Now clear your mind and approach zze portal.", + }, npc, creature) player:setStorageValue(Storage.ChildrenoftheRevolution.teleportAccess, 1) player:setStorageValue(Storage.ChildrenoftheRevolution.Questline, 19) player:setStorageValue(Storage.ChildrenoftheRevolution.Mission05, 1) --Questlog, Children of the Revolution "Mission 5: Phantom Army" @@ -350,14 +351,14 @@ local function creatureSayCallback(npc, creature, type, message) "You continue to imprezz, zzoftzzkin. ... ", "A contact of zze rezzizztanzze izz located furzzer in zze norzz of Zao. ... ", "Zze emperor will drag hizz forzzezz to zze great gate now to bolzzter hizz defenzze. Zzinzze we attacked zze gate directly, he will not expect uzz taking a completely different route to reach zze norzzern territoriezz. ... ", - "I azzume you are already geared up and ready to conquer zze norzz? " + "I azzume you are already geared up and ready to conquer zze norzz? ", }, npc, creature) npcHandler:setTopic(playerId, 15) elseif npcHandler:getTopic(playerId) == 15 then npcHandler:say({ "Your determination izz highly appreciated. To zzneak pazzt zze eyezz of zze enemy, you will have to uzze a diverzzion. Zzere are zzeveral old tunnelzz beneazz zze zzoil of Zzao. ... ", "One of zzem izz uzzed azz a maintenanzze connection by enemy lizardzz. To enter it, you will have to uzze a dizzguizze. Zzomezzing like a crate perhapzz. ... ", - "Mh, if you can find zzome nailzz - 3 should be enough - and 1 piezze of wood, I should be able to create an appropriate cazzing. Return to me if you found zze itemzz and we will talk about zze next zztep. " + "Mh, if you can find zzome nailzz - 3 should be enough - and 1 piezze of wood, I should be able to create an appropriate cazzing. Return to me if you found zze itemzz and we will talk about zze next zztep. ", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.Questline, 1) player:setStorageValue(Storage.WrathoftheEmperor.Mission01, 1) --Questlog, Wrath of the Emperor "Mission 01: Catering the Lions Den" @@ -365,7 +366,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 16 then npcHandler:say({ "Very good, I am confident zzizz will zzuffizze. Now I can build and mark a {crate} large enough for you to fit in - while zztill being able to breazze of courzze - and I will mark it in our tongue zzo it will look lezz zzuzzpizziouzz. ... ", - "Wizz zzeir eyezz towardzz zze gate, your chanzzezz to zzlip zzrough have never been better. I will keep zze zzpare materialzz here wizz me, we can alwayzz build a new one if you need to. " + "Wizz zzeir eyezz towardzz zze gate, your chanzzezz to zzlip zzrough have never been better. I will keep zze zzpare materialzz here wizz me, we can alwayzz build a new one if you need to. ", }, npc, creature) npcHandler:setTopic(playerId, 17) elseif npcHandler:getTopic(playerId) == 18 then @@ -380,7 +381,7 @@ local function creatureSayCallback(npc, creature, type, message) "Good. Zzat will do. ... ", "Zze maintenanzze tunnelzz are in zze eazzt of zze plainzz, near ze coazt. Here, I will mark zzem on your map. ... ", "Uzze zze dizzguizze wizzely, try to hide in zze dark and avoid being zzeen at all cozzt. ... ", - "Onzze you have reached zze norzz, you can find zze rezzizztanzze hideout at zze ozzer zzpot I marked on your map. Now hurry. " + "Onzze you have reached zze norzz, you can find zze rezzizztanzze hideout at zze ozzer zzpot I marked on your map. Now hurry. ", }, npc, creature) for i = 1, #marks.WrathOfTheEmperor do local mark = marks.WrathOfTheEmperor[i] @@ -391,7 +392,7 @@ local function creatureSayCallback(npc, creature, type, message) elseif npcHandler:getTopic(playerId) == 19 then npcHandler:say({ "Fine. I guezz poizzoning zzome of hizz plantzz will be enough to lure him out of hizz conzzealment. Zzizz plant poizzon here should allow you to do zzome zzignificant damage, take it. ... ", - "You can find him eazzt of zze corrupted gardenzz. Zzere uzzed to be a zzmall domizzile zzere but it hazz probably been conzzumed by zze corruption zzo beware. And now - go. " + "You can find him eazzt of zze corrupted gardenzz. Zzere uzzed to be a zzmall domizzile zzere but it hazz probably been conzzumed by zze corruption zzo beware. And now - go. ", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.Questline, 7) player:setStorageValue(Storage.WrathoftheEmperor.Mission03, 1) --Questlog, Wrath of the Emperor "Mission 03: The Keeper" diff --git a/data-otservbr-global/npc/zarak.lua b/data-otservbr-global/npc/zarak.lua index 10891ad0e85..4c2ccce143d 100644 --- a/data-otservbr-global/npc/zarak.lua +++ b/data-otservbr-global/npc/zarak.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 113 + lookType = 113, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -45,225 +45,175 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end -keywordHandler:addSpellKeyword({ 'find', 'person' }, - { - npcHandler = npcHandler, - spellName = 'Find Person', - price = 80, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'great', 'light' }, - { - npcHandler = npcHandler, - spellName = 'Great Light', - price = 500, - level = 13, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'light' }, - { - npcHandler = npcHandler, - spellName = 'Light', - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'magic', 'rope' }, - { - npcHandler = npcHandler, - spellName = 'Magic Rope', - price = 200, - level = 9, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'cure', 'poison' }, - { - npcHandler = npcHandler, - spellName = 'Cure Poison', - price = 150, - level = 10, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'intense', 'wound', 'cleansing' }, - { - npcHandler = npcHandler, - spellName = 'Intense Wound Cleansing', - price = 6000, - level = 80, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'wound', 'cleansing' }, - { - npcHandler = npcHandler, - spellName = 'Wound Cleansing', - price = 0, - level = 8, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'levitate' }, - { - npcHandler = npcHandler, - spellName = 'Levitate', - price = 500, - level = 12, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'haste' }, - { - npcHandler = npcHandler, - spellName = 'Haste', - price = 600, - level = 14, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'brutal', 'strike' }, - { - npcHandler = npcHandler, - spellName = 'Brutal Strike', - price = 1000, - level = 16, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'charge' }, - { - npcHandler = npcHandler, - spellName = 'Charge', - price = 1300, - level = 25, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'whirlwind', 'throw' }, - { - npcHandler = npcHandler, - spellName = 'Whirlwind Throw', - price = 1500, - level = 28, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'groundshaker' }, - { - npcHandler = npcHandler, - spellName = 'Groundshaker', - price = 1500, - level = 33, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'fierce', 'berserk' }, - { - npcHandler = npcHandler, - spellName = 'Fierce Berserk', - price = 7500, - level = 90, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'berserk' }, - { - npcHandler = npcHandler, - spellName = 'Berserk', - price = 2500, - level = 35, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'inflict', 'wound' }, - { - npcHandler = npcHandler, - spellName = 'Inflict Wound', - price = 2500, - level = 40, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'cure', 'bleeding' }, - { - npcHandler = npcHandler, - spellName = 'Cure Bleeding', - price = 2500, - level = 45, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'intense', 'recovery' }, - { - npcHandler = npcHandler, - spellName = 'Intense Recovery', - price = 10000, - level = 100, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'recovery' }, - { - npcHandler = npcHandler, - spellName = 'Recovery', - price = 4000, - level = 50, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'front', 'sweep' }, - { - npcHandler = npcHandler, - spellName = 'Front Sweep', - price = 4000, - level = 70, - vocation = VOCATION.BASE_ID.KNIGHT - } -) -keywordHandler:addSpellKeyword({ 'annihilation' }, - { - npcHandler = npcHandler, - spellName = 'Annihilation', - price = 20000, - level = 110, - vocation = VOCATION.BASE_ID.KNIGHT - } -) +keywordHandler:addSpellKeyword({ "find", "person" }, { + npcHandler = npcHandler, + spellName = "Find Person", + price = 80, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "great", "light" }, { + npcHandler = npcHandler, + spellName = "Great Light", + price = 500, + level = 13, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "light" }, { + npcHandler = npcHandler, + spellName = "Light", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "magic", "rope" }, { + npcHandler = npcHandler, + spellName = "Magic Rope", + price = 200, + level = 9, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "poison" }, { + npcHandler = npcHandler, + spellName = "Cure Poison", + price = 150, + level = 10, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "intense", "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Intense Wound Cleansing", + price = 6000, + level = 80, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "wound", "cleansing" }, { + npcHandler = npcHandler, + spellName = "Wound Cleansing", + price = 0, + level = 8, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "levitate" }, { + npcHandler = npcHandler, + spellName = "Levitate", + price = 500, + level = 12, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "haste" }, { + npcHandler = npcHandler, + spellName = "Haste", + price = 600, + level = 14, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "brutal", "strike" }, { + npcHandler = npcHandler, + spellName = "Brutal Strike", + price = 1000, + level = 16, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "charge" }, { + npcHandler = npcHandler, + spellName = "Charge", + price = 1300, + level = 25, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "whirlwind", "throw" }, { + npcHandler = npcHandler, + spellName = "Whirlwind Throw", + price = 1500, + level = 28, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "groundshaker" }, { + npcHandler = npcHandler, + spellName = "Groundshaker", + price = 1500, + level = 33, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "fierce", "berserk" }, { + npcHandler = npcHandler, + spellName = "Fierce Berserk", + price = 7500, + level = 90, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "berserk" }, { + npcHandler = npcHandler, + spellName = "Berserk", + price = 2500, + level = 35, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "inflict", "wound" }, { + npcHandler = npcHandler, + spellName = "Inflict Wound", + price = 2500, + level = 40, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "cure", "bleeding" }, { + npcHandler = npcHandler, + spellName = "Cure Bleeding", + price = 2500, + level = 45, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "intense", "recovery" }, { + npcHandler = npcHandler, + spellName = "Intense Recovery", + price = 10000, + level = 100, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "recovery" }, { + npcHandler = npcHandler, + spellName = "Recovery", + price = 4000, + level = 50, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "front", "sweep" }, { + npcHandler = npcHandler, + spellName = "Front Sweep", + price = 4000, + level = 70, + vocation = VOCATION.BASE_ID.KNIGHT, +}) +keywordHandler:addSpellKeyword({ "annihilation" }, { + npcHandler = npcHandler, + spellName = "Annihilation", + price = 20000, + level = 110, + vocation = VOCATION.BASE_ID.KNIGHT, +}) -keywordHandler:addKeyword({ 'healing', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Bruise Bane}', '{Cure Bleeding}', '{Wound Cleansing}', \z - '{Cure Poison}', '{Intense Wound Cleansing}', '{Recovery}' and '{Intense Recovery}'." - } -) -keywordHandler:addKeyword({ 'attack', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = { "In this category I have '{Whirlwind Throw}', '{Groundshaker}', '{Berserk}' and '{Fierce Berserk}' \z - as well as ...", "'{Brutal Strike}', '{Front Sweep}', '{Inflict Wound}' and '{Annihilation}'" } - } -) -keywordHandler:addKeyword({ 'support', 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = "In this category I have '{Light}', '{Find Person}', '{Magic Rope}', '{Levitate}', '{Haste}', \z - '{Charge}' and '{Great Light}'." - } -) -keywordHandler:addKeyword({ 'spells' }, StdModule.say, - { - npcHandler = npcHandler, - text = "I can teach you {healing spells}, {attack spells} and {support spells}. \z +keywordHandler:addKeyword({ "healing", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Bruise Bane}', '{Cure Bleeding}', '{Wound Cleansing}', \z + '{Cure Poison}', '{Intense Wound Cleansing}', '{Recovery}' and '{Intense Recovery}'.", +}) +keywordHandler:addKeyword({ "attack", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = { "In this category I have '{Whirlwind Throw}', '{Groundshaker}', '{Berserk}' and '{Fierce Berserk}' \z + as well as ...", "'{Brutal Strike}', '{Front Sweep}', '{Inflict Wound}' and '{Annihilation}'" }, +}) +keywordHandler:addKeyword({ "support", "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "In this category I have '{Light}', '{Find Person}', '{Magic Rope}', '{Levitate}', '{Haste}', \z + '{Charge}' and '{Great Light}'.", +}) +keywordHandler:addKeyword({ "spells" }, StdModule.say, { + npcHandler = npcHandler, + text = "I can teach you {healing spells}, {attack spells} and {support spells}. \z What kind of spell do you wish to learn? \z - You can also tell me for which level you would like to learn a spell, if you prefer that." - } -) + You can also tell me for which level you would like to learn a spell, if you prefer that.", +}) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/zarifan.lua b/data-otservbr-global/npc/zarifan.lua index 933be183f9c..d7d250d56d9 100644 --- a/data-otservbr-global/npc/zarifan.lua +++ b/data-otservbr-global/npc/zarifan.lua @@ -11,20 +11,20 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 560 + lookType = 560, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = ' lost... word...' }, - { text = ' ohhhh.... memories...' }, - { text = 'The secrets... too many... sleep...' }, - { text = 'Loneliness...' } + { text = " lost... word..." }, + { text = " ohhhh.... memories..." }, + { text = "The secrets... too many... sleep..." }, + { text = "Loneliness..." }, } local keywordHandler = KeywordHandler:new() @@ -69,10 +69,10 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("...continue with your mission...", npc, creature) end end -keywordHandler:addKeyword({ 'mission' }, StdModule.say, { npcHandler = npcHandler, text = '..what about {magic}..' }) -keywordHandler:addKeyword({ 'friendship' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes... YES... friendship... now... second word?' }) -keywordHandler:addKeyword({ 'lives' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes... YES... friendship... lives... now third word?' }) -keywordHandler:addKeyword({ 'forever' }, StdModule.say, { npcHandler = npcHandler, text = 'Yes... YES... friendship... lives... FOREVER ... And say hello... to... my old friend... Omrabas. ' }) +keywordHandler:addKeyword({ "mission" }, StdModule.say, { npcHandler = npcHandler, text = "..what about {magic}.." }) +keywordHandler:addKeyword({ "friendship" }, StdModule.say, { npcHandler = npcHandler, text = "Yes... YES... friendship... now... second word?" }) +keywordHandler:addKeyword({ "lives" }, StdModule.say, { npcHandler = npcHandler, text = "Yes... YES... friendship... lives... now third word?" }) +keywordHandler:addKeyword({ "forever" }, StdModule.say, { npcHandler = npcHandler, text = "Yes... YES... friendship... lives... FOREVER ... And say hello... to... my old friend... Omrabas. " }) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/zebron.lua b/data-otservbr-global/npc/zebron.lua index 1ebe145099c..b8feafe32c4 100644 --- a/data-otservbr-global/npc/zebron.lua +++ b/data-otservbr-global/npc/zebron.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 18, lookLegs = 71, lookFeet = 128, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Hey mate, up for a game of dice?' } + { text = "Hey mate, up for a game of dice?" }, } local keywordHandler = KeywordHandler:new() @@ -64,13 +64,13 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if MsgContains(message, 'yes') then + if MsgContains(message, "yes") then if npcHandler:getTopic(playerId) == 0 then - npcHandler:say('Hmmm, would you like to play for {money} or for a chance to win your own {dice}?', npc, creature) + npcHandler:say("Hmmm, would you like to play for {money} or for a chance to win your own {dice}?", npc, creature) npcHandler:setTopic(playerId, 2) elseif npcHandler:getTopic(playerId) == 4 then if not player:removeMoneyBank(100) then - npcHandler:say('I am sorry, but you don\'t have so much money.', npc, creature) + npcHandler:say("I am sorry, but you don't have so much money.", npc, creature) npcHandler:setTopic(playerId, 0) return false end @@ -79,38 +79,38 @@ local function creatureSayCallback(npc, creature, type, message) local realRoll = math.random(30) local roll = math.random(5) if realRoll < 30 then - npcHandler:say('Ok, here we go ... ' .. roll .. '! You have lost. Bad luck. One more game?', npc, creature) + npcHandler:say("Ok, here we go ... " .. roll .. "! You have lost. Bad luck. One more game?", npc, creature) else - npcHandler:say('Ok, here we go ... 6! You have won a dice, congratulations. One more game?', npc, creature) + npcHandler:say("Ok, here we go ... 6! You have won a dice, congratulations. One more game?", npc, creature) player:addItem(5792, 1) end npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'game') then + elseif MsgContains(message, "game") then if npcHandler:getTopic(playerId) == 1 then - npcHandler:say('So you care for a civilized game of dice?', npc, creature) + npcHandler:say("So you care for a civilized game of dice?", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'money') then + elseif MsgContains(message, "money") then if npcHandler:getTopic(playerId) == 2 then - npcHandler:say('I thought so. Okay, I will roll a dice. If it shows 6, you will get five times your bet. How much do you want to bet?', npc, creature) + npcHandler:say("I thought so. Okay, I will roll a dice. If it shows 6, you will get five times your bet. How much do you want to bet?", npc, creature) npcHandler:setTopic(playerId, 3) end - elseif MsgContains(message, 'dice') then + elseif MsgContains(message, "dice") then if npcHandler:getTopic(playerId) == 2 then - npcHandler:say('Hehe, good choice. Okay, the price for this game is 100 gold pieces. I will roll a dice. If I roll a 6, you can have my dice. Agreed?', npc, creature) + npcHandler:say("Hehe, good choice. Okay, the price for this game is 100 gold pieces. I will roll a dice. If I roll a 6, you can have my dice. Agreed?", npc, creature) npcHandler:setTopic(playerId, 4) end elseif tonumber(message) then local amount = tonumber(message) if amount < 1 or amount > 99 then - npcHandler:say('I am sorry, but I accept only bets between 1 and 99 gold. I don\'t want to ruin you after all. How much do you want to bet?', npc, creature) + npcHandler:say("I am sorry, but I accept only bets between 1 and 99 gold. I don't want to ruin you after all. How much do you want to bet?", npc, creature) npcHandler:setTopic(playerId, 3) return false end if not player:removeMoneyBank(amount) then - npcHandler:say('I am sorry, but you don\'t have so much money.', npc, creature) + npcHandler:say("I am sorry, but you don't have so much money.", npc, creature) npcHandler:setTopic(playerId, 0) return false end @@ -118,22 +118,22 @@ local function creatureSayCallback(npc, creature, type, message) npc:getPosition():sendMagicEffect(CONST_ME_CRAPS) local roll = math.random(6) if roll < 6 then - npcHandler:say('Ok, here we go ... ' .. roll .. '! You have lost. Bad luck. One more game?', npc, creature) + npcHandler:say("Ok, here we go ... " .. roll .. "! You have lost. Bad luck. One more game?", npc, creature) else - npcHandler:say('Ok, here we go ... 6! You have won ' .. amount * 5 .. ', congratulations. One more game?', npc, creature) + npcHandler:say("Ok, here we go ... 6! You have won " .. amount * 5 .. ", congratulations. One more game?", npc, creature) player:addMoney(amount * 5) end npcHandler:setTopic(playerId, 0) - elseif MsgContains(message, 'no') then - npcHandler:say('Oh come on, don\'t be a child.', npc, creature) + elseif MsgContains(message, "no") then + npcHandler:say("Oh come on, don't be a child.", npc, creature) npcHandler:setTopic(playerId, 1) end return true end -npcHandler:setMessage(MESSAGE_GREET, 'Greetings, high roller. So you care for a game, |PLAYERNAME|?') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Hey, you can\'t leave. Luck is smiling on you. I can feel it!') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Hey, you can\'t leave, |PLAYERNAME|. Luck is smiling on you. I can feel it!') +npcHandler:setMessage(MESSAGE_GREET, "Greetings, high roller. So you care for a game, |PLAYERNAME|?") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Hey, you can't leave. Luck is smiling on you. I can feel it!") +npcHandler:setMessage(MESSAGE_FAREWELL, "Hey, you can't leave, |PLAYERNAME|. Luck is smiling on you. I can feel it!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/zedrulon_the_fallen.lua b/data-otservbr-global/npc/zedrulon_the_fallen.lua index 91f2a47f5a5..c3708a2df3f 100644 --- a/data-otservbr-global/npc/zedrulon_the_fallen.lua +++ b/data-otservbr-global/npc/zedrulon_the_fallen.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 114, lookLegs = 75, lookFeet = 97, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -51,86 +51,103 @@ npcType.onCloseChannel = function(npc, creature) end -- Twist of Fate -local blessKeyword = keywordHandler:addKeyword({ 'twist of fate' }, StdModule.say, { +local blessKeyword = keywordHandler:addKeyword({ "twist of fate" }, StdModule.say, { npcHandler = npcHandler, text = { - 'This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...', - 'It only works when you\'re killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...', - 'The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...', - 'Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?' - } + "This is a special blessing I can bestow upon you once you have obtained at least one of the other blessings and which functions a bit differently. ...", + "It only works when you're killed by other adventurers, which means that at least half of the damage leading to your death was caused by others, not by monsters or the environment. ...", + "The {twist of fate} will not reduce the death penalty like the other blessings, but instead prevent you from losing your other blessings as well as the amulet of loss, should you wear one. It costs the same as the other blessings. ...", + "Would you like to receive that protection for a sacrifice of |PVPBLESSCOST| gold, child?", + }, }) -blessKeyword:addChildKeyword({ 'yes' }, StdModule.bless, { npcHandler = npcHandler, text = 'So receive the protection of the twist of fate, pilgrim.', cost = '|PVPBLESSCOST|', bless = 1 }) -blessKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine. You are free to decline my offer.', reset = true }) +blessKeyword:addChildKeyword({ "yes" }, StdModule.bless, { npcHandler = npcHandler, text = "So receive the protection of the twist of fate, pilgrim.", cost = "|PVPBLESSCOST|", bless = 1 }) +blessKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "Fine. You are free to decline my offer.", reset = true }) -- Adventurer Stone -keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Keep your adventurer\'s stone well.' }, function(player) return player:getItemById(16277, true) end) +keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Keep your adventurer's stone well." }, function(player) + return player:getItemById(16277, true) +end) -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for free?' }, function(player) return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Alia) ~= 1 end) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, nil, function(player) +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for free?" }, function(player) + return player:getStorageValue(Storage.AdventurersGuild.FreeStone.Alia) ~= 1 +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, nil, function(player) player:addItem(16277, 1) player:setStorageValue(Storage.AdventurersGuild.FreeStone.Alia, 1) end) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) - -local stoneKeyword = keywordHandler:addKeyword({ 'adventurer stone' }, StdModule.say, { npcHandler = npcHandler, text = 'Ah, you want to replace your adventurer\'s stone for 30 gold?' }) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Here you are. Take care.', reset = true }, - function(player) return player:getMoney() + player:getBankBalance() >= 30 end, - function(player) if player:removeMoneyBank(30) then player:addItem(16277, 1) end end -) -stoneKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, you don\'t have enough money.', reset = true }) -stoneKeyword:addChildKeyword({ '' }, StdModule.say, { npcHandler = npcHandler, text = 'No problem.', reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) + +local stoneKeyword = keywordHandler:addKeyword({ "adventurer stone" }, StdModule.say, { npcHandler = npcHandler, text = "Ah, you want to replace your adventurer's stone for 30 gold?" }) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Here you are. Take care.", reset = true }, function(player) + return player:getMoney() + player:getBankBalance() >= 30 +end, function(player) + if player:removeMoneyBank(30) then + player:addItem(16277, 1) + end +end) +stoneKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, you don't have enough money.", reset = true }) +stoneKeyword:addChildKeyword({ "" }, StdModule.say, { npcHandler = npcHandler, text = "No problem.", reset = true }) -- Healing local function addHealKeyword(text, condition, effect) - keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getCondition(condition) ~= nil end, - function(player) - player:removeCondition(condition) - player:getPosition():sendMagicEffect(effect) - end - ) + keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getCondition(condition) ~= nil + end, function(player) + player:removeCondition(condition) + player:getPosition():sendMagicEffect(effect) + end) end -addHealKeyword('You are burning. Let me quench those flames.', CONDITION_FIRE, CONST_ME_MAGIC_GREEN) -addHealKeyword('You are poisoned. Let me soothe your pain.', CONDITION_POISON, CONST_ME_MAGIC_RED) -addHealKeyword('You are electrified, my child. Let me help you to stop trembling.', CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are burning. Let me quench those flames.", CONDITION_FIRE, CONST_ME_MAGIC_GREEN) +addHealKeyword("You are poisoned. Let me soothe your pain.", CONDITION_POISON, CONST_ME_MAGIC_RED) +addHealKeyword("You are electrified, my child. Let me help you to stop trembling.", CONDITION_ENERGY, CONST_ME_MAGIC_GREEN) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are hurt, my child. I will heal your wounds.' }, - function(player) return player:getHealth() < 40 end, - function(player) - local health = player:getHealth() - if health < 40 then player:addHealth(40 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are hurt, my child. I will heal your wounds." }, function(player) + return player:getHealth() < 40 +end, function(player) + local health = player:getHealth() + if health < 40 then + player:addHealth(40 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking that bad. Sorry, I can\'t help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking that bad. Sorry, I can't help you. But if you are looking for additional protection you should go on the {pilgrimage} of ashes or get the protection of the {twist of fate} here." }) -- Basic -keywordHandler:addKeyword({ 'pilgrimage' }, StdModule.say, { npcHandler = npcHandler, text = 'Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced.' }) -keywordHandler:addKeyword({ 'blessings' }, StdModule.say, { npcHandler = npcHandler, text = 'There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here.' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'I see you received the spiritual shielding in the whiteflower temple south of Thais.' }, function(player) return player:hasBlessing(1) end) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the druids north of Carlin have provided you with the Embrace of Tibia.' }, function(player) return player:hasBlessing(2) end) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'I can see you received the blessing of the two suns in the suntower near Ab\'Dendriel.' }, function(player) return player:hasBlessing(3) end) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon.' }, function(player) return player:hasBlessing(4) end) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing.' }, function(player) return player:hasBlessing(5) end) -keywordHandler:addAliasKeyword({ 'wisdom' }) -keywordHandler:addKeyword({ 'spiritual' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais.' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addKeyword({ 'embrace' }, StdModule.say, { npcHandler = npcHandler, text = 'The druids north of Carlin will provide you with the embrace of Tibia.' }) -keywordHandler:addKeyword({ 'suns' }, StdModule.say, { npcHandler = npcHandler, text = 'You can ask for the blessing of the two suns in the suntower near Ab\'Dendriel.' }) -keywordHandler:addAliasKeyword({ 'fire' }) -keywordHandler:addKeyword({ 'phoenix' }, StdModule.say, { npcHandler = npcHandler, text = 'The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon.' }) -keywordHandler:addAliasKeyword({ 'spark' }) -keywordHandler:addKeyword({ 'solitude' }, StdModule.say, { npcHandler = npcHandler, text = 'Talk to the hermit Eremo on the isle of Cormaya about this blessing.' }) -keywordHandler:addAliasKeyword({ 'wisdom' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Remember: If you are heavily wounded or poisoned, I can heal you for free.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'May the gods bless you, |PLAYERNAME|!') +keywordHandler:addKeyword({ "pilgrimage" }, StdModule.say, { npcHandler = npcHandler, text = "Whenever you receive a lethal wound, your vital force is damaged and there is a chance that you lose some of your equipment. With every single of the five {blessings} you have, this damage and chance of loss will be reduced." }) +keywordHandler:addKeyword({ "blessings" }, StdModule.say, { npcHandler = npcHandler, text = "There are five blessings available in five sacred places: the {spiritual} shielding, the spark of the {phoenix}, the {embrace} of Tibia, the fire of the {suns} and the wisdom of {solitude}. Additionally, you can receive the {twist of fate} here." }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "I see you received the spiritual shielding in the whiteflower temple south of Thais." }, function(player) + return player:hasBlessing(1) +end) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the druids north of Carlin have provided you with the Embrace of Tibia." }, function(player) + return player:hasBlessing(2) +end) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "I can see you received the blessing of the two suns in the suntower near Ab'Dendriel." }, function(player) + return player:hasBlessing(3) +end) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense that the spark of the phoenix already was given to you by the dwarven priests of earth and fire in Kazordoon." }, function(player) + return player:hasBlessing(4) +end) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "I can sense you already talked to the hermit Eremo on the isle of Cormaya and received this blessing." }, function(player) + return player:hasBlessing(5) +end) +keywordHandler:addAliasKeyword({ "wisdom" }) +keywordHandler:addKeyword({ "spiritual" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of spiritual shielding in the whiteflower temple south of Thais." }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addKeyword({ "embrace" }, StdModule.say, { npcHandler = npcHandler, text = "The druids north of Carlin will provide you with the embrace of Tibia." }) +keywordHandler:addKeyword({ "suns" }, StdModule.say, { npcHandler = npcHandler, text = "You can ask for the blessing of the two suns in the suntower near Ab'Dendriel." }) +keywordHandler:addAliasKeyword({ "fire" }) +keywordHandler:addKeyword({ "phoenix" }, StdModule.say, { npcHandler = npcHandler, text = "The spark of the phoenix is given by the dwarven priests of earth and fire in Kazordoon." }) +keywordHandler:addAliasKeyword({ "spark" }) +keywordHandler:addKeyword({ "solitude" }, StdModule.say, { npcHandler = npcHandler, text = "Talk to the hermit Eremo on the isle of Cormaya about this blessing." }) +keywordHandler:addAliasKeyword({ "wisdom" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome, young |PLAYERNAME|! If you are heavily wounded or poisoned, I can {heal} you for free.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Remember: If you are heavily wounded or poisoned, I can heal you for free.") +npcHandler:setMessage(MESSAGE_FAREWELL, "May the gods bless you, |PLAYERNAME|!") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/zerbrus.lua b/data-otservbr-global/npc/zerbrus.lua index 68b9d358270..452d8cfd4cb 100644 --- a/data-otservbr-global/npc/zerbrus.lua +++ b/data-otservbr-global/npc/zerbrus.lua @@ -16,21 +16,21 @@ npcConfig.outfit = { lookBody = 38, lookLegs = 76, lookFeet = 95, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Are you injured or poisoned? I can help you.' }, - { text = 'For Rookgaard! For Tibia!' }, - { text = 'No monster shall go past me.' }, - { text = 'The premium side of Rookgaard lies beyond.' }, - { text = 'Want to know what monsters are good for you at your level? Just ask me!' } + { text = "Are you injured or poisoned? I can help you." }, + { text = "For Rookgaard! For Tibia!" }, + { text = "No monster shall go past me." }, + { text = "The premium side of Rookgaard lies beyond." }, + { text = "Want to know what monsters are good for you at your level? Just ask me!" }, } local keywordHandler = KeywordHandler:new() @@ -60,159 +60,154 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - -- Greeting and Farewell -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = 'Greetings, |PLAYERNAME|! You\'re looking really bad. Let me heal your wounds.' }, - function(player) return player:getHealth() < 65 or player:getCondition(CONDITION_POISON) ~= nil end, - function(player) - local health = player:getHealth() - if health < 65 then player:addHealth(65 - health) end - player:removeCondition(CONDITION_POISON) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = "Greetings, |PLAYERNAME|! You're looking really bad. Let me heal your wounds." }, function(player) + return player:getHealth() < 65 or player:getCondition(CONDITION_POISON) ~= nil +end, function(player) + local health = player:getHealth() + if health < 65 then + player:addHealth(65 - health) end -) -keywordHandler:addAliasKeyword({ 'hello' }) + player:removeCondition(CONDITION_POISON) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +keywordHandler:addAliasKeyword({ "hello" }) -keywordHandler:addGreetKeyword({ 'hi' }, { npcHandler = npcHandler, text = ' At your service, |PLAYERNAME|, protecting the {village} from {monsters}.' }, function(player) return player:getSex() == PLAYERSEX_FEMALE end) -keywordHandler:addAliasKeyword({ 'hello' }) +keywordHandler:addGreetKeyword({ "hi" }, { npcHandler = npcHandler, text = " At your service, |PLAYERNAME|, protecting the {village} from {monsters}." }, function(player) + return player:getSex() == PLAYERSEX_FEMALE +end) +keywordHandler:addAliasKeyword({ "hello" }) -keywordHandler:addFarewellKeyword({ 'bye' }, { npcHandler = npcHandler, text = 'Bye, |PLAYERNAME|.' }) -keywordHandler:addAliasKeyword({ 'farewell' }) +keywordHandler:addFarewellKeyword({ "bye" }, { npcHandler = npcHandler, text = "Bye, |PLAYERNAME|." }) +keywordHandler:addAliasKeyword({ "farewell" }) local function addMonsterKeyword(level, text, marks) - keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = text }, - function(player) return player:getLevel() >= level end, - function(player) - if marks then - for i = 1, #marks do - player:addMapMark(marks[i].position, marks[i].type, marks[i].description) - end + keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = text }, function(player) + return player:getLevel() >= level + end, function(player) + if marks then + for i = 1, #marks do + player:addMapMark(marks[i].position, marks[i].type, marks[i].description) end end - ) + end) end -- Monster -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'Hmm, |PLAYERNAME|. I really don\'t know if you should go into the wilderness without a shield. You should earn some money by hunting rats under the village first until you can afford at least a wooden shield.' }, function(player) return not player:hasRookgaardShield() end) - -addMonsterKeyword(10, 'It looks like you have mastered the drill.') -addMonsterKeyword(8, 'Wow, |PLAYERNAME|! You have grown so much. I think there is nothing more I could teach you. Talk to the {oracle} to travel to other places which will pose more of a challenge for you. ') -addMonsterKeyword(7, 'Impressive, |PLAYERNAME|. You are almost strong enough to leave this island. Maybe you can take on minotaurs or rotworms now. There are no rotworms on this side of the island, ask Dallheim for their location.') -addMonsterKeyword(6, 'Nice job out there,|PLAYERNAME|. If you are looking for a challenge, descend into the troll cave as deep as you can. Or explore the northern side of this island. Talk to {Dallheim} for directions.') -addMonsterKeyword(5, 'Nice job out there, |PLAYERNAME|. Are you looking for other monsters than {trolls} or {wolves}? Maybe you\'d like to check out {skeletons}. I\'ll mark them for you so you can find them easily.', - { { position = Position(31977, 32228, 7), type = MAPMARK_GREENSOUTH, description = 'Skeleton Cave' } } -) -addMonsterKeyword(4, 'You\'re halfway to leaving this island, well done. {Spiders} or {wolves} are always good to fight, but if you want to move on, why don\'t you check out trolls? I\'ll mark you the troll cave on this side.', - { { position = Position(32002, 32212, 7), type = MAPMARK_GREENSOUTH, description = 'Troll Cave' } } -) -addMonsterKeyword(3, 'Good progress, |PLAYERNAME|. You can still stay with {spiders} or {snakes}, but maybe you\'d like to try fighting a {wolf}? I\'ll mark some of their hills on your map.', - { { position = Position(32002, 32225, 7), type = MAPMARK_GREENNORTH, description = 'Wolf Hill' }, { position = Position(31989, 32198, 7), type = MAPMARK_GREENNORTH, description = 'Wolf Hill' } } -) -addMonsterKeyword(2, 'You\'ve already grown some, |PLAYERNAME|. You can either stay with {rats} or leave town to hunt {spiders} or {snakes}. I\'ll mark some spawns on your map.', - { { position = Position(32001, 32238, 7), type = MAPMARK_GREENSOUTH, description = 'Snake Pit' }, { position = Position(32046, 32188, 7), type = MAPMARK_GREENSOUTH, description = 'Spider Cave' } } -) -addMonsterKeyword(1, 'You are just beginning your journey, dear |PLAYERNAME|. You can start by helping me fight {rats} in the sewers. I\'ll mark an entrance on your map.', - { { position = Position(32097, 32205, 7), type = MAPMARK_GREENSOUTH, description = 'Sewer Entrance' } } -) +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "Hmm, |PLAYERNAME|. I really don't know if you should go into the wilderness without a shield. You should earn some money by hunting rats under the village first until you can afford at least a wooden shield." }, function(player) + return not player:hasRookgaardShield() +end) + +addMonsterKeyword(10, "It looks like you have mastered the drill.") +addMonsterKeyword(8, "Wow, |PLAYERNAME|! You have grown so much. I think there is nothing more I could teach you. Talk to the {oracle} to travel to other places which will pose more of a challenge for you. ") +addMonsterKeyword(7, "Impressive, |PLAYERNAME|. You are almost strong enough to leave this island. Maybe you can take on minotaurs or rotworms now. There are no rotworms on this side of the island, ask Dallheim for their location.") +addMonsterKeyword(6, "Nice job out there,|PLAYERNAME|. If you are looking for a challenge, descend into the troll cave as deep as you can. Or explore the northern side of this island. Talk to {Dallheim} for directions.") +addMonsterKeyword(5, "Nice job out there, |PLAYERNAME|. Are you looking for other monsters than {trolls} or {wolves}? Maybe you'd like to check out {skeletons}. I'll mark them for you so you can find them easily.", { { position = Position(31977, 32228, 7), type = MAPMARK_GREENSOUTH, description = "Skeleton Cave" } }) +addMonsterKeyword(4, "You're halfway to leaving this island, well done. {Spiders} or {wolves} are always good to fight, but if you want to move on, why don't you check out trolls? I'll mark you the troll cave on this side.", { { position = Position(32002, 32212, 7), type = MAPMARK_GREENSOUTH, description = "Troll Cave" } }) +addMonsterKeyword(3, "Good progress, |PLAYERNAME|. You can still stay with {spiders} or {snakes}, but maybe you'd like to try fighting a {wolf}? I'll mark some of their hills on your map.", { { position = Position(32002, 32225, 7), type = MAPMARK_GREENNORTH, description = "Wolf Hill" }, { position = Position(31989, 32198, 7), type = MAPMARK_GREENNORTH, description = "Wolf Hill" } }) +addMonsterKeyword(2, "You've already grown some, |PLAYERNAME|. You can either stay with {rats} or leave town to hunt {spiders} or {snakes}. I'll mark some spawns on your map.", { { position = Position(32001, 32238, 7), type = MAPMARK_GREENSOUTH, description = "Snake Pit" }, { position = Position(32046, 32188, 7), type = MAPMARK_GREENSOUTH, description = "Spider Cave" } }) +addMonsterKeyword(1, "You are just beginning your journey, dear |PLAYERNAME|. You can start by helping me fight {rats} in the sewers. I'll mark an entrance on your map.", { { position = Position(32097, 32205, 7), type = MAPMARK_GREENSOUTH, description = "Sewer Entrance" } }) -- Basic keywords -keywordHandler:addKeyword({ 'hint' }, StdModule.rookgaardHints, { npcHandler = npcHandler }) -keywordHandler:addKeyword({ 'name' }, StdModule.say, { npcHandler = npcHandler, text = 'Zerbrus, at your service.' }) -keywordHandler:addKeyword({ 'job' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m the guard of this bridge. I defend Rookgaard against the beasts of the {wilderness} and the {dungeons}, and even of the stinking {sewers}.' }) -keywordHandler:addKeyword({ 'time' }, StdModule.say, { npcHandler = npcHandler, text = 'My duty is eternal. Time is of no importance.' }) -keywordHandler:addKeyword({ 'bank' }, StdModule.say, { npcHandler = npcHandler, text = 'Before you fight monsters, deposit your money there. If you die, you won\'t lose it if it\'s save in the bank.' }) -keywordHandler:addKeyword({ 'how', 'are', 'you' }, StdModule.say, { npcHandler = npcHandler, text = 'Fine.' }) -keywordHandler:addKeyword({ 'help' }, StdModule.say, { npcHandler = npcHandler, text = 'I have to stay here, sorry. But I can {heal} you if you are wounded. I have also valuable information about {monsters}.' }) -keywordHandler:addKeyword({ 'information' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m an expert concerning the wildlife and {monsters} on this island.' }) -keywordHandler:addKeyword({ 'citizen' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m not a gossiper, but if you want to know something about a certain Rookgaardian, ask.' }) -keywordHandler:addKeyword({ 'rat' }, StdModule.say, { npcHandler = npcHandler, text = 'They\'re not that dangerous, but don\'t let yourself get cornered by many of them. They still can hurt.' }) -keywordHandler:addKeyword({ 'spider' }, StdModule.say, { npcHandler = npcHandler, text = 'There are two types of spiders on this island: normal spiders and poison spiders. As their name says, the latter ones can poison you which will cause a constant loss of your health. Beware of them!' }) -keywordHandler:addKeyword({ 'troll' }, StdModule.say, { npcHandler = npcHandler, text = 'Once you have upgraded your starter {equipment} a little - maybe leather stuff - and got a better weapon as well as a shield, you should be able to kill trolls.' }) -keywordHandler:addKeyword({ 'wolf' }, StdModule.say, { npcHandler = npcHandler, text = 'You need a stronger weapon than the starter club to kill wolves. Maybe a {sabre} or a short {sword} will do.' }) -keywordHandler:addAliasKeyword({ 'wolves' }) -keywordHandler:addKeyword({ 'orc' }, StdModule.say, { npcHandler = npcHandler, text = 'The orcs have a hideout under the troll cave, just descend deep. Still, be very careful!' }) -keywordHandler:addKeyword({ 'minotaur' }, StdModule.say, { npcHandler = npcHandler, text = 'Minotaurs are very strong. You will need a group of people or at least level 6 and good equipment to be able to kill them.' }) -keywordHandler:addKeyword({ 'bug' }, StdModule.say, { npcHandler = npcHandler, text = 'They are a little tougher than they look like, but they\'re still good beginner monsters.' }) -keywordHandler:addKeyword({ 'skeleton' }, StdModule.say, { npcHandler = npcHandler, text = 'The skeletons on this island are usually fairly hidden. They are often found near graves and always underground. Beware of their evil life drain.' }) -keywordHandler:addKeyword({ 'bear' }, StdModule.say, { npcHandler = npcHandler, text = 'There is a bear cave close to this bridge. Be careful, though, they hit hard!' }) -keywordHandler:addKeyword({ 'wasp' }, StdModule.say, { npcHandler = npcHandler, text = 'Wasp hives exist only behind the north bridge, so ask {Dallheim} for information. I\'m glad there are no wasps here. They always make me jump.' }) -keywordHandler:addKeyword({ 'snake' }, StdModule.say, { npcHandler = npcHandler, text = 'Snakes can poison you, too, but their poison is usually not as dangerous as that of poison spiders. Just be careful and kill them fast.' }) -keywordHandler:addKeyword({ 'premium' }, StdModule.say, { npcHandler = npcHandler, text = 'Premium warriors pay. They gain many advantages this way.' }) -keywordHandler:addKeyword({ 'king' }, StdModule.say, { npcHandler = npcHandler, text = 'HAIL TO THE KING!' }) -keywordHandler:addKeyword({ 'academy' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s north of the temple.' }) -keywordHandler:addKeyword({ 'temple' }, StdModule.say, { npcHandler = npcHandler, text = 'A place of protection. Nothing can harm you there.' }) -keywordHandler:addKeyword({ 'dungeon' }, StdModule.say, { npcHandler = npcHandler, text = 'I can mark you some dungeons on your map if you ask me about {monsters} suited for your level.' }) -keywordHandler:addKeyword({ 'sewer' }, StdModule.say, { npcHandler = npcHandler, text = 'The sewers are crowded with {rats}. They make fine targets for young heroes.' }) -keywordHandler:addKeyword({ 'wilderness' }, StdModule.say, { npcHandler = npcHandler, text = 'There are {wolves}, {bears}, {snakes}, {deer}, and {spiders} in the wilderness past this bridge.' }) -keywordHandler:addKeyword({ 'god' }, StdModule.say, { npcHandler = npcHandler, text = 'I\'m a follower of {Banor}.' }) -keywordHandler:addKeyword({ 'banor' }, StdModule.say, { npcHandler = npcHandler, text = 'The heavenly warrior! Read {books} to learn about him.' }) -keywordHandler:addKeyword({ 'magic' }, StdModule.say, { npcHandler = npcHandler, text = 'You will learn about magic soon enough.' }) -keywordHandler:addKeyword({ 'tibia' }, StdModule.say, { npcHandler = npcHandler, text = 'In the world of Tibia, many challenges await the brave adventurer.' }) -keywordHandler:addKeyword({ 'book' }, StdModule.say, { npcHandler = npcHandler, text = 'There are many books in the {academy}. Theory can be just as important as practice.' }) - -keywordHandler:addKeyword({ 'rookgaard' }, StdModule.say, { npcHandler = npcHandler, text = 'It\'s my duty to protect this village and its {citizens}.' }) -keywordHandler:addAliasKeyword({ 'protect' }) - -keywordHandler:addKeyword({ 'monster' }, StdModule.say, { npcHandler = npcHandler, text = 'It looks like you have mastered the drill.' }) - -keywordHandler:addKeyword({ 'trade' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry, I don\'t trade. Ask the shop owners for a trade instead.' }) -keywordHandler:addAliasKeyword({ 'offer' }) -keywordHandler:addAliasKeyword({ 'stuff' }) -keywordHandler:addAliasKeyword({ 'wares' }) -keywordHandler:addAliasKeyword({ 'sell' }) -keywordHandler:addAliasKeyword({ 'buy' }) -keywordHandler:addAliasKeyword({ 'sword' }) -keywordHandler:addAliasKeyword({ 'sabre' }) -keywordHandler:addAliasKeyword({ 'equip' }) -keywordHandler:addAliasKeyword({ 'weapon' }) -keywordHandler:addAliasKeyword({ 'armor' }) -keywordHandler:addAliasKeyword({ 'shield' }) -keywordHandler:addAliasKeyword({ 'food' }) -keywordHandler:addAliasKeyword({ 'potion' }) +keywordHandler:addKeyword({ "hint" }, StdModule.rookgaardHints, { npcHandler = npcHandler }) +keywordHandler:addKeyword({ "name" }, StdModule.say, { npcHandler = npcHandler, text = "Zerbrus, at your service." }) +keywordHandler:addKeyword({ "job" }, StdModule.say, { npcHandler = npcHandler, text = "I'm the guard of this bridge. I defend Rookgaard against the beasts of the {wilderness} and the {dungeons}, and even of the stinking {sewers}." }) +keywordHandler:addKeyword({ "time" }, StdModule.say, { npcHandler = npcHandler, text = "My duty is eternal. Time is of no importance." }) +keywordHandler:addKeyword({ "bank" }, StdModule.say, { npcHandler = npcHandler, text = "Before you fight monsters, deposit your money there. If you die, you won't lose it if it's save in the bank." }) +keywordHandler:addKeyword({ "how", "are", "you" }, StdModule.say, { npcHandler = npcHandler, text = "Fine." }) +keywordHandler:addKeyword({ "help" }, StdModule.say, { npcHandler = npcHandler, text = "I have to stay here, sorry. But I can {heal} you if you are wounded. I have also valuable information about {monsters}." }) +keywordHandler:addKeyword({ "information" }, StdModule.say, { npcHandler = npcHandler, text = "I'm an expert concerning the wildlife and {monsters} on this island." }) +keywordHandler:addKeyword({ "citizen" }, StdModule.say, { npcHandler = npcHandler, text = "I'm not a gossiper, but if you want to know something about a certain Rookgaardian, ask." }) +keywordHandler:addKeyword({ "rat" }, StdModule.say, { npcHandler = npcHandler, text = "They're not that dangerous, but don't let yourself get cornered by many of them. They still can hurt." }) +keywordHandler:addKeyword({ "spider" }, StdModule.say, { npcHandler = npcHandler, text = "There are two types of spiders on this island: normal spiders and poison spiders. As their name says, the latter ones can poison you which will cause a constant loss of your health. Beware of them!" }) +keywordHandler:addKeyword({ "troll" }, StdModule.say, { npcHandler = npcHandler, text = "Once you have upgraded your starter {equipment} a little - maybe leather stuff - and got a better weapon as well as a shield, you should be able to kill trolls." }) +keywordHandler:addKeyword({ "wolf" }, StdModule.say, { npcHandler = npcHandler, text = "You need a stronger weapon than the starter club to kill wolves. Maybe a {sabre} or a short {sword} will do." }) +keywordHandler:addAliasKeyword({ "wolves" }) +keywordHandler:addKeyword({ "orc" }, StdModule.say, { npcHandler = npcHandler, text = "The orcs have a hideout under the troll cave, just descend deep. Still, be very careful!" }) +keywordHandler:addKeyword({ "minotaur" }, StdModule.say, { npcHandler = npcHandler, text = "Minotaurs are very strong. You will need a group of people or at least level 6 and good equipment to be able to kill them." }) +keywordHandler:addKeyword({ "bug" }, StdModule.say, { npcHandler = npcHandler, text = "They are a little tougher than they look like, but they're still good beginner monsters." }) +keywordHandler:addKeyword({ "skeleton" }, StdModule.say, { npcHandler = npcHandler, text = "The skeletons on this island are usually fairly hidden. They are often found near graves and always underground. Beware of their evil life drain." }) +keywordHandler:addKeyword({ "bear" }, StdModule.say, { npcHandler = npcHandler, text = "There is a bear cave close to this bridge. Be careful, though, they hit hard!" }) +keywordHandler:addKeyword({ "wasp" }, StdModule.say, { npcHandler = npcHandler, text = "Wasp hives exist only behind the north bridge, so ask {Dallheim} for information. I'm glad there are no wasps here. They always make me jump." }) +keywordHandler:addKeyword({ "snake" }, StdModule.say, { npcHandler = npcHandler, text = "Snakes can poison you, too, but their poison is usually not as dangerous as that of poison spiders. Just be careful and kill them fast." }) +keywordHandler:addKeyword({ "premium" }, StdModule.say, { npcHandler = npcHandler, text = "Premium warriors pay. They gain many advantages this way." }) +keywordHandler:addKeyword({ "king" }, StdModule.say, { npcHandler = npcHandler, text = "HAIL TO THE KING!" }) +keywordHandler:addKeyword({ "academy" }, StdModule.say, { npcHandler = npcHandler, text = "It's north of the temple." }) +keywordHandler:addKeyword({ "temple" }, StdModule.say, { npcHandler = npcHandler, text = "A place of protection. Nothing can harm you there." }) +keywordHandler:addKeyword({ "dungeon" }, StdModule.say, { npcHandler = npcHandler, text = "I can mark you some dungeons on your map if you ask me about {monsters} suited for your level." }) +keywordHandler:addKeyword({ "sewer" }, StdModule.say, { npcHandler = npcHandler, text = "The sewers are crowded with {rats}. They make fine targets for young heroes." }) +keywordHandler:addKeyword({ "wilderness" }, StdModule.say, { npcHandler = npcHandler, text = "There are {wolves}, {bears}, {snakes}, {deer}, and {spiders} in the wilderness past this bridge." }) +keywordHandler:addKeyword({ "god" }, StdModule.say, { npcHandler = npcHandler, text = "I'm a follower of {Banor}." }) +keywordHandler:addKeyword({ "banor" }, StdModule.say, { npcHandler = npcHandler, text = "The heavenly warrior! Read {books} to learn about him." }) +keywordHandler:addKeyword({ "magic" }, StdModule.say, { npcHandler = npcHandler, text = "You will learn about magic soon enough." }) +keywordHandler:addKeyword({ "tibia" }, StdModule.say, { npcHandler = npcHandler, text = "In the world of Tibia, many challenges await the brave adventurer." }) +keywordHandler:addKeyword({ "book" }, StdModule.say, { npcHandler = npcHandler, text = "There are many books in the {academy}. Theory can be just as important as practice." }) + +keywordHandler:addKeyword({ "rookgaard" }, StdModule.say, { npcHandler = npcHandler, text = "It's my duty to protect this village and its {citizens}." }) +keywordHandler:addAliasKeyword({ "protect" }) + +keywordHandler:addKeyword({ "monster" }, StdModule.say, { npcHandler = npcHandler, text = "It looks like you have mastered the drill." }) + +keywordHandler:addKeyword({ "trade" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry, I don't trade. Ask the shop owners for a trade instead." }) +keywordHandler:addAliasKeyword({ "offer" }) +keywordHandler:addAliasKeyword({ "stuff" }) +keywordHandler:addAliasKeyword({ "wares" }) +keywordHandler:addAliasKeyword({ "sell" }) +keywordHandler:addAliasKeyword({ "buy" }) +keywordHandler:addAliasKeyword({ "sword" }) +keywordHandler:addAliasKeyword({ "sabre" }) +keywordHandler:addAliasKeyword({ "equip" }) +keywordHandler:addAliasKeyword({ "weapon" }) +keywordHandler:addAliasKeyword({ "armor" }) +keywordHandler:addAliasKeyword({ "shield" }) +keywordHandler:addAliasKeyword({ "food" }) +keywordHandler:addAliasKeyword({ "potion" }) -- Names -keywordHandler:addKeyword({ 'norma' }, StdModule.say, { npcHandler = npcHandler, text = 'I don\'t approve of her opening a bar. Those drunken adventurers stumbling over the bridge at nighttime are not especially helpful in improving the situation.' }) -keywordHandler:addKeyword({ 'loui' }, StdModule.say, { npcHandler = npcHandler, text = 'Such a chicken-hearted person.' }) -keywordHandler:addKeyword({ 'obi' }, StdModule.say, { npcHandler = npcHandler, text = 'He sells {weapons}. His shop is south west of town, close to the {temple}.' }) -keywordHandler:addKeyword({ 'santiago' }, StdModule.say, { npcHandler = npcHandler, text = 'He dedicated his life to welcoming newcomers to this island.' }) -keywordHandler:addKeyword({ 'zirella' }, StdModule.say, { npcHandler = npcHandler, text = 'She has her own problems.' }) -keywordHandler:addKeyword({ 'al', 'dee' }, StdModule.say, { npcHandler = npcHandler, text = 'There\'s something about this guy I don\'t like.' }) -keywordHandler:addKeyword({ 'amber' }, StdModule.say, { npcHandler = npcHandler, text = 'She\'s very attractive. Too bad my duty leaves me no time to date her.' }) -keywordHandler:addKeyword({ 'cipfried' }, StdModule.say, { npcHandler = npcHandler, text = 'He guards the temple and can heal you if you are badly injured or poisoned, just like me.' }) -keywordHandler:addKeyword({ 'dixi' }, StdModule.say, { npcHandler = npcHandler, text = 'She\'s {Obi\'s} granddaughter and deals with {armors} and {shields}. Her shop is south west of town, close to the temple.' }) -keywordHandler:addKeyword({ 'hyacinth' }, StdModule.say, { npcHandler = npcHandler, text = 'One of these reclusive druids.' }) -keywordHandler:addKeyword({ 'lee\'delle' }, StdModule.say, { npcHandler = npcHandler, text = 'Her shop is just north of the bridge. She really has good offers.' }) -keywordHandler:addKeyword({ 'lily' }, StdModule.say, { npcHandler = npcHandler, text = 'Gentle girl, but a little to esoteric for my taste. However, her {potions} might come in handy.' }) -keywordHandler:addKeyword({ 'oracle' }, StdModule.say, { npcHandler = npcHandler, text = 'You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8.' }) -keywordHandler:addKeyword({ 'paulie' }, StdModule.say, { npcHandler = npcHandler, text = 'The local {bank} clerk.' }) -keywordHandler:addKeyword({ 'seymour' }, StdModule.say, { npcHandler = npcHandler, text = 'His job of teaching young heroes is important for the survival of all of us.' }) -keywordHandler:addKeyword({ 'tom' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s the local tanner. You could try selling fresh corpses or leather to him.' }) -keywordHandler:addKeyword({ 'dallheim' }, StdModule.say, { npcHandler = npcHandler, text = 'He does a fine job, protecting the north bridge. He\'s been on duty longer than me and knows the north side of Rookgaard well.' }) -keywordHandler:addKeyword({ 'zerbrus' }, StdModule.say, { npcHandler = npcHandler, text = 'At your service.' }) -keywordHandler:addKeyword({ 'billy' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s a farmer. A little more friendly than his cousin {Willie}, he also buys and sells {food}.' }) -keywordHandler:addKeyword({ 'willie' }, StdModule.say, { npcHandler = npcHandler, text = 'He\'s quite rude. Also, he buys and sells {food}.' }) +keywordHandler:addKeyword({ "norma" }, StdModule.say, { npcHandler = npcHandler, text = "I don't approve of her opening a bar. Those drunken adventurers stumbling over the bridge at nighttime are not especially helpful in improving the situation." }) +keywordHandler:addKeyword({ "loui" }, StdModule.say, { npcHandler = npcHandler, text = "Such a chicken-hearted person." }) +keywordHandler:addKeyword({ "obi" }, StdModule.say, { npcHandler = npcHandler, text = "He sells {weapons}. His shop is south west of town, close to the {temple}." }) +keywordHandler:addKeyword({ "santiago" }, StdModule.say, { npcHandler = npcHandler, text = "He dedicated his life to welcoming newcomers to this island." }) +keywordHandler:addKeyword({ "zirella" }, StdModule.say, { npcHandler = npcHandler, text = "She has her own problems." }) +keywordHandler:addKeyword({ "al", "dee" }, StdModule.say, { npcHandler = npcHandler, text = "There's something about this guy I don't like." }) +keywordHandler:addKeyword({ "amber" }, StdModule.say, { npcHandler = npcHandler, text = "She's very attractive. Too bad my duty leaves me no time to date her." }) +keywordHandler:addKeyword({ "cipfried" }, StdModule.say, { npcHandler = npcHandler, text = "He guards the temple and can heal you if you are badly injured or poisoned, just like me." }) +keywordHandler:addKeyword({ "dixi" }, StdModule.say, { npcHandler = npcHandler, text = "She's {Obi's} granddaughter and deals with {armors} and {shields}. Her shop is south west of town, close to the temple." }) +keywordHandler:addKeyword({ "hyacinth" }, StdModule.say, { npcHandler = npcHandler, text = "One of these reclusive druids." }) +keywordHandler:addKeyword({ "lee'delle" }, StdModule.say, { npcHandler = npcHandler, text = "Her shop is just north of the bridge. She really has good offers." }) +keywordHandler:addKeyword({ "lily" }, StdModule.say, { npcHandler = npcHandler, text = "Gentle girl, but a little to esoteric for my taste. However, her {potions} might come in handy." }) +keywordHandler:addKeyword({ "oracle" }, StdModule.say, { npcHandler = npcHandler, text = "You can find the oracle on the top floor of the {academy}, just above {Seymour}. Go there when you are level 8." }) +keywordHandler:addKeyword({ "paulie" }, StdModule.say, { npcHandler = npcHandler, text = "The local {bank} clerk." }) +keywordHandler:addKeyword({ "seymour" }, StdModule.say, { npcHandler = npcHandler, text = "His job of teaching young heroes is important for the survival of all of us." }) +keywordHandler:addKeyword({ "tom" }, StdModule.say, { npcHandler = npcHandler, text = "He's the local tanner. You could try selling fresh corpses or leather to him." }) +keywordHandler:addKeyword({ "dallheim" }, StdModule.say, { npcHandler = npcHandler, text = "He does a fine job, protecting the north bridge. He's been on duty longer than me and knows the north side of Rookgaard well." }) +keywordHandler:addKeyword({ "zerbrus" }, StdModule.say, { npcHandler = npcHandler, text = "At your service." }) +keywordHandler:addKeyword({ "billy" }, StdModule.say, { npcHandler = npcHandler, text = "He's a farmer. A little more friendly than his cousin {Willie}, he also buys and sells {food}." }) +keywordHandler:addKeyword({ "willie" }, StdModule.say, { npcHandler = npcHandler, text = "He's quite rude. Also, he buys and sells {food}." }) -- Healing -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are poisoned. I will help you.' }, - function(player) return player:getCondition(CONDITION_POISON) ~= nil end, - function(player) - local health = player:getHealth() - if health < 65 then player:addHealth(65 - health) end - player:removeCondition(CONDITION_POISON) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are poisoned. I will help you." }, function(player) + return player:getCondition(CONDITION_POISON) ~= nil +end, function(player) + local health = player:getHealth() + if health < 65 then + player:addHealth(65 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You are looking really bad. Let me heal your wounds.' }, - function(player) return player:getHealth() < 65 end, - function(player) - local health = player:getHealth() - if health < 65 then player:addHealth(65 - health) end - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) + player:removeCondition(CONDITION_POISON) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You are looking really bad. Let me heal your wounds." }, function(player) + return player:getHealth() < 65 +end, function(player) + local health = player:getHealth() + if health < 65 then + player:addHealth(65 - health) end -) -keywordHandler:addKeyword({ 'heal' }, StdModule.say, { npcHandler = npcHandler, text = 'You aren\'t looking really bad. Eat some food to regain strength.' }) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) +end) +keywordHandler:addKeyword({ "heal" }, StdModule.say, { npcHandler = npcHandler, text = "You aren't looking really bad. Eat some food to regain strength." }) -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Hm.') +npcHandler:setMessage(MESSAGE_WALKAWAY, "Hm.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) -- npcType registering the npcConfig table diff --git a/data-otservbr-global/npc/zeronex.lua b/data-otservbr-global/npc/zeronex.lua index 4412222d930..3df862d0904 100644 --- a/data-otservbr-global/npc/zeronex.lua +++ b/data-otservbr-global/npc/zeronex.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 116, lookLegs = 3, lookFeet = 38, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/zethra.lua b/data-otservbr-global/npc/zethra.lua index ba87dca04b6..833ebc89be0 100644 --- a/data-otservbr-global/npc/zethra.lua +++ b/data-otservbr-global/npc/zethra.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 45, lookLegs = 12, lookFeet = 94, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Come over here if you have to resupply!' } + { text = "Come over here if you have to resupply!" }, } local keywordHandler = KeywordHandler:new() @@ -57,8 +57,7 @@ npcType.onCloseChannel = function(npc, creature) end npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) -npcConfig.shop = -{ +npcConfig.shop = { { itemName = "backpack", clientId = 2854, buy = 10 }, { itemName = "bag", clientId = 2853, buy = 4 }, { itemName = "fishing rod", clientId = 3483, buy = 150, sell = 30 }, @@ -67,7 +66,7 @@ npcConfig.shop = { itemName = "scythe", clientId = 3453, buy = 12 }, { itemName = "shovel", clientId = 3457, buy = 10, sell = 2 }, { itemName = "torch", clientId = 2920, buy = 2 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message @@ -81,8 +80,7 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end -- npcType registering the npcConfig table npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/zirella.lua b/data-otservbr-global/npc/zirella.lua index 46a2bb4a806..335d0384969 100644 --- a/data-otservbr-global/npc/zirella.lua +++ b/data-otservbr-global/npc/zirella.lua @@ -16,19 +16,19 @@ npcConfig.outfit = { lookBody = 111, lookLegs = 67, lookFeet = 95, - lookAddons = 2 + lookAddons = 2, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'I wish someone could spare a minute and help me...' }, - { text = 'This is too hard for an old woman like me.' }, - { text = 'Hello, young adventurer, you look strong enough to help me!' } + { text = "I wish someone could spare a minute and help me..." }, + { text = "This is too hard for an old woman like me." }, + { text = "Hello, young adventurer, you look strong enough to help me!" }, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,6 @@ npcType.onCloseChannel = function(npc, creature) npcHandler:onCloseChannel(npc, creature) end - local storeTalkCid = {} local function greetCallback(npc, creature) local player = Player(creature) @@ -136,7 +135,7 @@ local function creatureSayCallback(npc, creature, type, message) "Thank you darling! My cart is right beside me. It's a little complicated: I need some firewood, but it's very difficult for my slightly advanced age. ...", "Please go into the the forest southeast of here. You will find fine old rotten brown trees. Please RIGHT-CLICK in the lower right corner of that tree and choose 'USE'. That way, a branch should appear on the map. ...", "Don't put it in your inventory like before, but instead DRAG it over the map by LEFT-CLICKING the loose branch, HOLDING the LEFT MOUSE BUTTON and moving it over the map. ...", - "When you are close to my cart, USE the branch WITH the cart: RIGHT-CLICK the branch on the floor and select 'USE WITH', Then LEFT-CLICK on the cart. Don't worry, you will see what I mean on the way. Thanks and {bye} for now!" + "When you are close to my cart, USE the branch WITH the cart: RIGHT-CLICK the branch on the floor and select 'USE WITH', Then LEFT-CLICK on the cart. Don't worry, you will see what I mean on the way. Thanks and {bye} for now!", }, npc, creature) player:setStorageValue(Storage.RookgaardTutorialIsland.ZirellaQuestLog, 6) player:setStorageValue(Storage.RookgaardTutorialIsland.ZirellaNpcGreetStorage, 6) @@ -147,7 +146,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Well, you know that old women like me like to talk a lot. If you see three dots at the end of a sentence, I have still something to say and you should not interrupt, like now ...", "Patience is a virtue, young adventurer! So, the quest was to go into the forest south of here and to find a dead tree. Wait, let me continue! ...", - "'Use' a tree to break a dry branch from it. Afterwards, drag and drop the branch back to my cart and select 'Use with', then left-click on my cart. Thanks again for offering your help!" + "'Use' a tree to break a dry branch from it. Afterwards, drag and drop the branch back to my cart and select 'Use with', then left-click on my cart. Thanks again for offering your help!", }, npc, creature) storeTalkCid[playerId] = nil elseif storeTalkCid[playerId] == 8 then diff --git a/data-otservbr-global/npc/zirkon.lua b/data-otservbr-global/npc/zirkon.lua index f5415cc5335..a83f132002c 100644 --- a/data-otservbr-global/npc/zirkon.lua +++ b/data-otservbr-global/npc/zirkon.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 285 + lookType = 285, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/ziyad.lua b/data-otservbr-global/npc/ziyad.lua index 15f64fa3f77..560d9dd6a54 100644 --- a/data-otservbr-global/npc/ziyad.lua +++ b/data-otservbr-global/npc/ziyad.lua @@ -16,17 +16,17 @@ npcConfig.outfit = { lookBody = 49, lookLegs = 94, lookFeet = 49, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = 'Feel the wind in your hair during one of my carpet rides!' } + { text = "Feel the wind in your hair during one of my carpet rides!" }, } local keywordHandler = KeywordHandler:new() @@ -60,42 +60,46 @@ end local TheNewFrontier = Storage.Quest.U8_54.TheNewFrontier local function addTravelKeyword(keyword, text, cost, destination, condition, action) if condition then - keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Never heard about a place like this.' }, condition) + keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Never heard about a place like this." }, condition) end - local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = 'Do you seek a passage to ' .. keyword:titleCase() .. ' for |TRAVELCOST|?', cost = cost, discount = 'postman' }) - travelKeyword:addChildKeyword({ 'yes' }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = 'postman', destination = destination }, nil, action) - travelKeyword:addChildKeyword({ 'no' }, StdModule.say, { npcHandler = npcHandler, text = 'We would like to serve you some time.', reset = true }) + local travelKeyword = keywordHandler:addKeyword({ keyword }, StdModule.say, { npcHandler = npcHandler, text = "Do you seek a passage to " .. keyword:titleCase() .. " for |TRAVELCOST|?", cost = cost, discount = "postman" }) + travelKeyword:addChildKeyword({ "yes" }, StdModule.travel, { npcHandler = npcHandler, premium = false, cost = cost, discount = "postman", destination = destination }, nil, action) + travelKeyword:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, text = "We would like to serve you some time.", reset = true }) end -addTravelKeyword('farmine', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('zao', 'Do you seek a ride to Farmine for |TRAVELCOST|?', 60, Position(32983, 31539, 1), function(player) return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 end) -addTravelKeyword('darashia', 'Darashia on Darama', 40, Position(33270, 32441, 6)) -addTravelKeyword('darama', 'Darashia on Darama', 40, Position(33270, 32441, 6)) -addTravelKeyword('kazordoon', 'Kazordoon', 70, Position(32588, 31941, 0)) -addTravelKeyword('kazor', 'Kazordoon', 70, Position(32588, 31941, 0)) -addTravelKeyword('femor hills', 'the Femor Hills', 60, Position(32536, 31837, 4)) -addTravelKeyword('hills', 'the Femor Hills', 60, Position(32536, 31837, 4)) -addTravelKeyword('svargrond', 'Svargrond', 60, Position(32253, 31097, 4)) -addTravelKeyword('edron', 'Edron', 60, Position(33193, 31784, 3)) -addTravelKeyword('issavi', 'Issavi', 100, Position(33957, 31515, 0)) +addTravelKeyword("farmine", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("zao", "Do you seek a ride to Farmine for |TRAVELCOST|?", 60, Position(32983, 31539, 1), function(player) + return player:getStorageValue(TheNewFrontier.Mission10[1]) ~= 2 +end) +addTravelKeyword("darashia", "Darashia on Darama", 40, Position(33270, 32441, 6)) +addTravelKeyword("darama", "Darashia on Darama", 40, Position(33270, 32441, 6)) +addTravelKeyword("kazordoon", "Kazordoon", 70, Position(32588, 31941, 0)) +addTravelKeyword("kazor", "Kazordoon", 70, Position(32588, 31941, 0)) +addTravelKeyword("femor hills", "the Femor Hills", 60, Position(32536, 31837, 4)) +addTravelKeyword("hills", "the Femor Hills", 60, Position(32536, 31837, 4)) +addTravelKeyword("svargrond", "Svargrond", 60, Position(32253, 31097, 4)) +addTravelKeyword("edron", "Edron", 60, Position(33193, 31784, 3)) +addTravelKeyword("issavi", "Issavi", 100, Position(33957, 31515, 0)) -- Kick -keywordHandler:addKeyword({ 'kick' }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33958, 31512, 1), Position(33959, 31512, 1) } }) +keywordHandler:addKeyword({ "kick" }, StdModule.kick, { npcHandler = npcHandler, destination = { Position(33958, 31512, 1), Position(33959, 31512, 1) } }) -- Basic -keywordHandler:addKeyword({ 'trip' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'route' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'passage' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'fly' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, {Edron}, {Issavi}, {Svargrond}, {Kazordoon}, {Zao} or to {Femor Hills} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'town' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'destination' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'sail' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?' }) -keywordHandler:addKeyword({ 'go' }, StdModule.say, { npcHandler = npcHandler, text = 'I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Ah, the wind brings in another visitor. Welcome, dear guest. Are you looking for a {passage} with my carpet?') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Good bye. Recommend us if you were satisfied with our service.') -npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye then.') +keywordHandler:addKeyword({ "trip" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "route" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "passage" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "fly" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, {Edron}, {Issavi}, {Svargrond}, {Kazordoon}, {Zao} or to {Femor Hills} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "town" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "destination" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "sail" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?" }) +keywordHandler:addKeyword({ "go" }, StdModule.say, { npcHandler = npcHandler, text = "I can fly you to {Darashia}, to {Svargrond}, to {Kazordoon}, to {Zao}, to the {Femor Hills}, to {Edron} or to {Issavi} if you like. Where do you want to go?" }) + +npcHandler:setMessage(MESSAGE_GREET, "Ah, the wind brings in another visitor. Welcome, dear guest. Are you looking for a {passage} with my carpet?") +npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye. Recommend us if you were satisfied with our service.") +npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/zizzle.lua b/data-otservbr-global/npc/zizzle.lua index 659ee74ef87..4313f142a9b 100644 --- a/data-otservbr-global/npc/zizzle.lua +++ b/data-otservbr-global/npc/zizzle.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 114 + lookType = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -53,7 +53,7 @@ local function creatureSayCallback(npc, creature, type, message) return false end - if (MsgContains(message, "mission")) then + if MsgContains(message, "mission") then if player:getStorageValue(Storage.WrathoftheEmperor.Questline) == 25 then npcHandler:say("You made it! Az zoon az you are prepared, I will brief you for your nexzt mizzion. ", npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.Mission08, 2) --Questlog, Wrath of the Emperor "Mission 08: Uninvited Guests" @@ -69,7 +69,7 @@ local function creatureSayCallback(npc, creature, type, message) "Dizabling ze cryztalz will probably alert ze emperor. It will likely be too late for him to intervene in perzon but a creature of hiz power might have ozer wayz to intervene. ...", "But zere iz more. To reach ze emperor, you will need accezz to hiz inner realmz. Ze zecret to enter iz guarded by a dragon. ...", "But ziz iz not ze catch - ze catch iz, zat ze key iz buried in hiz vazt mind. Ze emperor haz bound ze dragon to himzelf, forzing him into an eternal zlumber. ...", - "A zignificant part of ze emperor'z power iz uzed to reztrain ze dragon. Ze only way to free him will be to enter hiz dreamz. Are you prepared for ziz?" + "A zignificant part of ze emperor'z power iz uzed to reztrain ze dragon. Ze only way to free him will be to enter hiz dreamz. Are you prepared for ziz?", }, npc, creature) npcHandler:setTopic(playerId, 1) elseif player:getStorageValue(Storage.WrathoftheEmperor.Questline) == 29 then @@ -82,7 +82,7 @@ local function creatureSayCallback(npc, creature, type, message) "Uzing ze zeptre will forze a part of ze emperor'z willpower out of ze cryztal. You will have to kill zoze manifeztationz. ...", "Zen uze your zeptre on ze remainz to deztroy ze emperor'z influenze over ze cryztal. ...", "I recommend not to go alone becauze it will be very dangerouz - but ALL of you will have to uze zeir zeptre replicaz on ze emperor'z remainz to prozeed! ...", - "You will need it. Now go to the north of Sleeping Dragon room, {dont need talk} with he! Good luck." + "You will need it. Now go to the north of Sleeping Dragon room, {dont need talk} with he! Good luck.", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.TeleportAccess.InnerSanctum, 1) player:setStorageValue(Storage.WrathoftheEmperor.Questline, 30) @@ -99,7 +99,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Didn't exzpect anyzing lezz from you. Alright, zankz to your effortz to build an effective reziztanze, our comradez zalvaged ziz potion and ze formula you need to utter to breach hiz zubconzciouznezz. ...", "Drink it and when you are cloze to ze dragon zpeak: Z...z.. well, juzt take ze sheet wiz ze word and read it yourzelf. A lot of rebelz have died to retrieve ziz information, uze it wizely. ...", - "Now go and try to find a way to reach ze emperor and to free ze land from it'z opprezzor. Onze you have found a way, return to me and I will explain what to do wiz ze cryztalz. May ze Great Znake guide you!" + "Now go and try to find a way to reach ze emperor and to free ze land from it'z opprezzor. Onze you have found a way, return to me and I will explain what to do wiz ze cryztalz. May ze Great Znake guide you!", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.TeleportAccess.SleepingDragon, 1) player:setStorageValue(Storage.WrathoftheEmperor.Mission09, 1) --Questlog, Wrath of the Emperor "Mission 08: Uninvited Guests" diff --git a/data-otservbr-global/npc/zlak.lua b/data-otservbr-global/npc/zlak.lua index 896bee86e22..c1dd6fc5802 100644 --- a/data-otservbr-global/npc/zlak.lua +++ b/data-otservbr-global/npc/zlak.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 339 + lookType = 339, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Ze rumour mill iz quite fazt. Ezpecially when zomeone unuzual az you enterz ze zity. Zoon zey will learn zat you have no reazon to be here and our raze will be buzted. ...", "Zo we have to ztrike fazt and quickly. You will have to eliminate zome high ranking key officialz. I zink killing four of zem should be enough. ...", - "Ziz will dizrupt ze order in ze zity zignificantly zinze zo much dependz on bureaucracy and ze chain of command. Only chaoz and dizorganization will enable me to help you with ze next ztep in ze plan." + "Ziz will dizrupt ze order in ze zity zignificantly zinze zo much dependz on bureaucracy and ze chain of command. Only chaoz and dizorganization will enable me to help you with ze next ztep in ze plan.", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.TeleportAccess.Zlak, 1) player:setStorageValue(Storage.WrathoftheEmperor.Questline, 23) @@ -69,7 +69,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Chaoz and panic are already zpreading. Your barbaric brutality iz frightening effectively. I could acquire a key zat we need to get you into ze palaze itzelf. But zere are ztill too many guardz and elite zquadz even for you to fight. ...", "I need you to enter ze zity and zlay at leazt zix noblez. Ze otherz will feel zreatened and call guardz to zemzelvez, and ze dragon kingz will accuze each ozer to be rezponzible for zlaying zeir pet noblez. ...", - "Zat should enable uz to give you at leazt a chanze to attack ze palaze." + "Zat should enable uz to give you at leazt a chanze to attack ze palaze.", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.Questline, 24) player:setStorageValue(Storage.WrathoftheEmperor.Mission07, 0) --Questlog, Wrath of the Emperor "Mission 07: A Noble Cause" @@ -78,7 +78,7 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) ~= 1 then npcHandler:say({ "Word of your deedz iz already zpreading like a wildfire. Zalamon'z plan to unleash zome murderouz beaztz in ze zity workz almozt too well. You are already becoming zome kind of legend with which motherz frighten zeir unruly hatchlingz. ...", - "Your next {mizzion} will be a ztrike into ze heart of ze empire." + "Your next {mizzion} will be a ztrike into ze heart of ze empire.", }, npc, creature) npcHandler:setTopic(playerId, 1) else @@ -86,7 +86,7 @@ local function creatureSayCallback(npc, creature, type, message) "Your eagernezz for killing and bloodshed iz frightening, but your next mizzion will zuit your tazte. Wiz ze zity in chaoz and defenzez diverted, ze ztage iz zet for our final ztrike. ...", "A large number of rebelz have arrived undercover in ze zity. Zey will attack ze palaze and zome loyal palaze guardz will let zem in. ...", "Meanwhile, you will take ze old ezcape tunnel zat leadz from ze abandoned bazement in ze norz of ze miniztry to a lift zat endz zomewhere in ze palaze. ...", - "When everyzing workz according to ze plan, you will meet Zalamon zomewhere in the underground part of ze palaze." + "When everyzing workz according to ze plan, you will meet Zalamon zomewhere in the underground part of ze palaze.", }, npc, creature) player:setStorageValue(Storage.WrathoftheEmperor.Mission08, 1) --Questlog, Wrath of the Emperor "Mission 08: Uninvited Guests" player:setStorageValue(Storage.WrathoftheEmperor.Questline, 25) @@ -98,7 +98,8 @@ local function creatureSayCallback(npc, creature, type, message) end npcHandler:setMessage(MESSAGE_GREET, { "Ah, ze human everyone iz talking about. Your victory over ze champion waz quite imprezzive. ...", - "Alzough, for many ziz only provez what a huge zreat you blank-zkinz ztill poze. What do you {want}?" }) + "Alzough, for many ziz only provez what a huge zreat you blank-zkinz ztill poze. What do you {want}?", +}) npcHandler:setMessage(MESSAGE_FAREWELL, "Juzt leave me alone.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true) diff --git a/data-otservbr-global/npc/znozel.lua b/data-otservbr-global/npc/znozel.lua index 736b0c3c510..9d348acf5cc 100644 --- a/data-otservbr-global/npc/znozel.lua +++ b/data-otservbr-global/npc/znozel.lua @@ -11,17 +11,17 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 297 + lookType = 297, } npcConfig.flags = { - floorchange = false + floorchange = false, } npcConfig.voices = { interval = 15000, chance = 50, - { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false } + { text = "Don't forget to deposit your money here in the Global Bank before you head out for adventure.", yell = false }, } local keywordHandler = KeywordHandler:new() diff --git a/data-otservbr-global/npc/zoltan.lua b/data-otservbr-global/npc/zoltan.lua index 64e21ae3e4f..2b6d0d78518 100644 --- a/data-otservbr-global/npc/zoltan.lua +++ b/data-otservbr-global/npc/zoltan.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 94, lookLegs = 95, lookFeet = 76, - lookAddons = 0 + lookAddons = 0, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -58,7 +58,6 @@ local function creatureSayCallback(npc, creature, type, message) return false end - -- The paradox tower quest if MsgContains(message, "yenny the gentle") then npcHandler:say("Ah, Yenny the Gentle was one of the founders of the druid order called Crunor's Caress, that has been originated in her hometown Carlin.", npc, creature) @@ -75,44 +74,45 @@ local function creatureSayCallback(npc, creature, type, message) end -- Female Summoner and Male Mage Hat Addon (needs to be rewritten) -local hatKeyword = keywordHandler:addKeyword({ 'proof' }, StdModule.say, { npcHandler = npcHandler, text = '... I cannot believe my eyes. You retrieved this hat from Ferumbras\' remains? That is incredible. If you give it to me, I will grant you the right to wear this hat as addon. What do you say?' }, - function(player) return not player:hasOutfit(player:getSex() == PLAYERSEX_FEMALE and 141 or 130, 2) end -) -hatKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'Sorry you don\'t have the Ferumbras\' hat.' }, function(player) return player:getItemCount(5903) == 0 end) -hatKeyword:addChildKeyword({ 'yes' }, StdModule.say, { npcHandler = npcHandler, text = 'I bow to you, player, and hereby grant you the right to wear Ferumbras\' hat as accessory. Congratulations!' }, nil, - function(player) - player:removeItem(5903, 1) - player:addOutfitAddon(141, 2) - player:addOutfitAddon(130, 2) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) - end -) +local hatKeyword = keywordHandler:addKeyword({ "proof" }, StdModule.say, { npcHandler = npcHandler, text = "... I cannot believe my eyes. You retrieved this hat from Ferumbras' remains? That is incredible. If you give it to me, I will grant you the right to wear this hat as addon. What do you say?" }, function(player) + return not player:hasOutfit(player:getSex() == PLAYERSEX_FEMALE and 141 or 130, 2) +end) +hatKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "Sorry you don't have the Ferumbras' hat." }, function(player) + return player:getItemCount(5903) == 0 +end) +hatKeyword:addChildKeyword({ "yes" }, StdModule.say, { npcHandler = npcHandler, text = "I bow to you, player, and hereby grant you the right to wear Ferumbras' hat as accessory. Congratulations!" }, nil, function(player) + player:removeItem(5903, 1) + player:addOutfitAddon(141, 2) + player:addOutfitAddon(130, 2) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) +end) -- hatKeyword:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, text = ''}) -keywordHandler:addKeyword({ 'myra' }, StdModule.say, { - npcHandler = npcHandler, - text = { - 'Bah, I know. I received some sort of \'nomination\' from our outpost in Port Hope. ...', - 'Usually it takes a little more than that for an award though. However, I honour Myra\'s word. ...', - 'I hereby grant you the right to wear a special sign of honour, acknowledged by the academy of Edron. Since you are a man, I guess you don\'t want girlish stuff. There you go.' - } +keywordHandler:addKeyword({ "myra" }, StdModule.say, { + npcHandler = npcHandler, + text = { + "Bah, I know. I received some sort of 'nomination' from our outpost in Port Hope. ...", + "Usually it takes a little more than that for an award though. However, I honour Myra's word. ...", + "I hereby grant you the right to wear a special sign of honour, acknowledged by the academy of Edron. Since you are a man, I guess you don't want girlish stuff. There you go.", }, - function(player) return player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) == 10 end, - function(player) - player:addOutfitAddon(138, 2) - player:addOutfitAddon(133, 2) - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - player:setStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak, 11) - player:setStorageValue(Storage.OutfitQuest.MageSummoner.MissionHatCloak, 0) - player:setStorageValue(Storage.OutfitQuest.Ref, math.min(0, player:getStorageValue(Storage.OutfitQuest.Ref) - 1)) - end -) - -keywordHandler:addKeyword({ 'myra' }, StdModule.say, { npcHandler = npcHandler, text = 'Stop bothering me. I am a far too busy man to be constantly giving out awards.' }, function(player) return player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) == 11 end) -keywordHandler:addKeyword({ 'myra' }, StdModule.say, { npcHandler = npcHandler, text = 'What the hell are you talking about?' }) - -npcHandler:setMessage(MESSAGE_GREET, 'Welcome |PLAYERNAME|, student of the arcane arts. I teach the fiercest {spells} available.') -npcHandler:setMessage(MESSAGE_FAREWELL, 'Use your knowledge wisely, |PLAYERNAME|.') +}, function(player) + return player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) == 10 +end, function(player) + player:addOutfitAddon(138, 2) + player:addOutfitAddon(133, 2) + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) + player:setStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak, 11) + player:setStorageValue(Storage.OutfitQuest.MageSummoner.MissionHatCloak, 0) + player:setStorageValue(Storage.OutfitQuest.Ref, math.min(0, player:getStorageValue(Storage.OutfitQuest.Ref) - 1)) +end) + +keywordHandler:addKeyword({ "myra" }, StdModule.say, { npcHandler = npcHandler, text = "Stop bothering me. I am a far too busy man to be constantly giving out awards." }, function(player) + return player:getStorageValue(Storage.OutfitQuest.MageSummoner.AddonHatCloak) == 11 +end) +keywordHandler:addKeyword({ "myra" }, StdModule.say, { npcHandler = npcHandler, text = "What the hell are you talking about?" }) + +npcHandler:setMessage(MESSAGE_GREET, "Welcome |PLAYERNAME|, student of the arcane arts. I teach the fiercest {spells} available.") +npcHandler:setMessage(MESSAGE_FAREWELL, "Use your knowledge wisely, |PLAYERNAME|.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) diff --git a/data-otservbr-global/npc/zora.lua b/data-otservbr-global/npc/zora.lua index cc8071c5d90..ff12d5c8102 100644 --- a/data-otservbr-global/npc/zora.lua +++ b/data-otservbr-global/npc/zora.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 21, lookLegs = 23, lookFeet = 114, - lookAddons = 1 + lookAddons = 1, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -77,7 +77,7 @@ local function creatureSayCallback(npc, creature, type, message) return true end -keywordHandler:addKeyword({ 'equipment' }, StdModule.say, { npcHandler = npcHandler, text = "I sell equipment for your adventure! Just ask me for a {trade} to see my wares." }) +keywordHandler:addKeyword({ "equipment" }, StdModule.say, { npcHandler = npcHandler, text = "I sell equipment for your adventure! Just ask me for a {trade} to see my wares." }) npcHandler:setMessage(MESSAGE_GREET, "Oh, please come in, |PLAYERNAME|. What can I do for you? If you need adventure equipment, ask me for a {trade}.") npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye, |PLAYERNAME|.") @@ -118,7 +118,7 @@ npcConfig.shop = { { itemName = "torch", clientId = 2920, buy = 2 }, { itemName = "watch", clientId = 2906, buy = 20, sell = 6 }, { itemName = "wooden hammer", clientId = 3459, sell = 15 }, - { itemName = "worm", clientId = 3492, buy = 1 } + { itemName = "worm", clientId = 3492, buy = 1 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -129,7 +129,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/ztiss.lua b/data-otservbr-global/npc/ztiss.lua index 225465788c9..4693affc494 100644 --- a/data-otservbr-global/npc/ztiss.lua +++ b/data-otservbr-global/npc/ztiss.lua @@ -11,14 +11,13 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 340 + lookType = 340, } npcConfig.flags = { - floorchange = false + floorchange = false, } - local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) @@ -58,7 +57,7 @@ local function creatureSayCallback(npc, creature, type, message) if MsgContains(message, "guezt") then if player:getStorageValue(TheNewFrontier.Questline) == 23 then npcHandler:say({ - "Ziz iz not for you to azk. I work for zomeone of immenze power. He haz an {offer} for you." + "Ziz iz not for you to azk. I work for zomeone of immenze power. He haz an {offer} for you.", }, npc, creature) npcHandler:setTopic(playerId, 1) end @@ -72,7 +71,7 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say({ "Zere iz a great tournament of ztrengz each decade. It determinez ze granted privilegez for zertain individualz of power for ze comming decade. ...", "My mazter wantz to zurprize hiz opponentz by an unexpected move. He will uze warriorz from ze outzide, zomeone zat no one can azzezz. ...", - "One of ziz warriorz could be you. Or you could ztay here and rot in ze dungeon. Are you interezted in ziz deal?" + "One of ziz warriorz could be you. Or you could ztay here and rot in ze dungeon. Are you interezted in ziz deal?", }, npc, creature) npcHandler:setTopic(playerId, 3) end @@ -80,13 +79,13 @@ local function creatureSayCallback(npc, creature, type, message) if npcHandler:getTopic(playerId) == 3 then npcHandler:say({ "You are zmart for a zoftzkin, but before you begin to feel too zmart, you should know zat we will zeal our deal wiz you drinking a ztrong poizon zat will inevitably kill you if you want to trick me and not attend ze tournament. ...", - "Zo are you ready to drink ziz poizon here?" + "Zo are you ready to drink ziz poizon here?", }, npc, creature) npcHandler:setTopic(playerId, 4) elseif npcHandler:getTopic(playerId) == 4 then npcHandler:say({ "Excellent! Now you may leave ziz area zrough ze teleporter to ze norz. It will bring you to a hidden boat. Ziz boat will take you to ze tournament izle. ...", - "Zere you'll learn anyzing you need to know about ze great tournament." + "Zere you'll learn anyzing you need to know about ze great tournament.", }, npc, creature) player:setStorageValue(TheNewFrontier.Questline, 24) player:setStorageValue(TheNewFrontier.Mission08, 2) --Questlog, The New Frontier Quest "Mission 08: An Offer You Can't Refuse" diff --git a/data-otservbr-global/npc/zuma_magehide.lua b/data-otservbr-global/npc/zuma_magehide.lua index 3ac1e9f912b..614d84c9bfe 100644 --- a/data-otservbr-global/npc/zuma_magehide.lua +++ b/data-otservbr-global/npc/zuma_magehide.lua @@ -16,11 +16,11 @@ npcConfig.outfit = { lookBody = 19, lookLegs = 0, lookFeet = 132, - lookAddons = 3 + lookAddons = 3, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -71,7 +71,7 @@ npcConfig.shop = { { itemName = "stone skin amulet", clientId = 3081, buy = 5000, count = 5 }, { itemName = "strange talisman", clientId = 3045, buy = 100, count = 200 }, { itemName = "sword ring", clientId = 3091, buy = 500 }, - { itemName = "time ring", clientId = 3053, buy = 5000 } + { itemName = "time ring", clientId = 3053, buy = 5000 }, } -- On buy npc shop message npcType.onBuyItem = function(npc, player, itemId, subType, amount, ignore, inBackpacks, totalCost) @@ -82,7 +82,6 @@ npcType.onSellItem = function(npc, player, itemId, subtype, amount, ignore, name player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("Sold %ix %s for %i gold.", amount, name, totalCost)) end -- On check npc shop message (look item) -npcType.onCheckItem = function(npc, player, clientId, subType) -end +npcType.onCheckItem = function(npc, player, clientId, subType) end npcType:register(npcConfig) diff --git a/data-otservbr-global/npc/zumtah.lua b/data-otservbr-global/npc/zumtah.lua index 98492f6bd36..97ba7b3c779 100644 --- a/data-otservbr-global/npc/zumtah.lua +++ b/data-otservbr-global/npc/zumtah.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 2000 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 51 + lookType = 51, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -75,18 +75,17 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("No, I really can't remember. I enjoyed my stay here so much that I forgot how it looks outside of this hole. Outside. The air, the sky, the light. Oh well... well.", npc, creature) npcHandler:setTopic(playerId, 12) elseif npcHandler:getTopic(playerId) == 12 then - npcHandler:say({ "Oh yes, yes. I... I never really thought about how you creatures feel in here I guess. I... just watched all these beings die here. ...", - "I... enjoyed this torture so much that I forgot time and everything around me. ...", - "I feel - sorry. Yes, sorry." }, npc, creature) + npcHandler:say({ "Oh yes, yes. I... I never really thought about how you creatures feel in here I guess. I... just watched all these beings die here. ...", "I... enjoyed this torture so much that I forgot time and everything around me. ...", "I feel - sorry. Yes, sorry." }, npc, creature) npcHandler:setTopic(playerId, 13) elseif npcHandler:getTopic(playerId) == 13 then - npcHandler:say({ "Oh, excuse me of course, you... wanted to go. Like all... the others. I am sorry, so sorry. You... you can leave. Yes. You can go. You are free. I shall stay here and help every poor soul which ever gets thrown in here from this day onward. ...", + npcHandler:say({ + "Oh, excuse me of course, you... wanted to go. Like all... the others. I am sorry, so sorry. You... you can leave. Yes. You can go. You are free. I shall stay here and help every poor soul which ever gets thrown in here from this day onward. ...", "Yes, I will redeem myself. Maybe in another 278 years. ...", - "If you want to go, just ask for an {exit} and I will transform you into a creature small enough to fit through that hole over there." }, npc, creature) + "If you want to go, just ask for an {exit} and I will transform you into a creature small enough to fit through that hole over there.", + }, npc, creature) npcHandler:setTopic(playerId, 14) elseif npcHandler:getTopic(playerId) == 14 then - npcHandler:say({ "Alright, as I said you are free now. There will not be an outside for the next three centuries, but you - go. ...", - "Oh and I recovered the strange crate you where hiding in, it will wait for you at the exit since you can't carry it as... a beetle, muhaha. Yes, you shall now crawl through the passage as a beetle. There you go." }, npc, creature) + npcHandler:say({ "Alright, as I said you are free now. There will not be an outside for the next three centuries, but you - go. ...", "Oh and I recovered the strange crate you where hiding in, it will wait for you at the exit since you can't carry it as... a beetle, muhaha. Yes, you shall now crawl through the passage as a beetle. There you go." }, npc, creature) npcHandler:setTopic(playerId, 0) player:setStorageValue(Storage.WrathoftheEmperor.ZumtahStatus, 1) player:setStorageValue(Storage.WrathoftheEmperor.PrisonReleaseStatus, 1) diff --git a/data-otservbr-global/npc/zurak.lua b/data-otservbr-global/npc/zurak.lua index cd314f08611..020162aad1f 100644 --- a/data-otservbr-global/npc/zurak.lua +++ b/data-otservbr-global/npc/zurak.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 114 + lookType = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -75,8 +75,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Zzoftzzkinzz zzo full of fear.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'hurry') or MsgContains(message, 'job') then - npcHandler:say('Me zzimple ferryman. I arrange {trip} to Izzle of Zztrife.', npc, creature) + elseif MsgContains(message, "hurry") or MsgContains(message, "job") then + npcHandler:say("Me zzimple ferryman. I arrange {trip} to Izzle of Zztrife.", npc, creature) npcHandler:setTopic(playerId, 0) end return true diff --git a/data-otservbr-global/npc/zurak_arena.lua b/data-otservbr-global/npc/zurak_arena.lua index 5ab1f2e45d9..f5df143b8e1 100644 --- a/data-otservbr-global/npc/zurak_arena.lua +++ b/data-otservbr-global/npc/zurak_arena.lua @@ -11,11 +11,11 @@ npcConfig.walkInterval = 0 npcConfig.walkRadius = 2 npcConfig.outfit = { - lookType = 114 + lookType = 114, } npcConfig.flags = { - floorchange = false + floorchange = false, } local keywordHandler = KeywordHandler:new() @@ -75,8 +75,8 @@ local function creatureSayCallback(npc, creature, type, message) npcHandler:say("Zzoftzzkinzz zzo full of fear.", npc, creature) npcHandler:setTopic(playerId, 0) end - elseif MsgContains(message, 'hurry') or MsgContains(message, 'job') then - npcHandler:say('Me zzimple ferryman. I arrange {trip} to Zzao.', npc, creature) + elseif MsgContains(message, "hurry") or MsgContains(message, "job") then + npcHandler:say("Me zzimple ferryman. I arrange {trip} to Zzao.", npc, creature) npcHandler:setTopic(playerId, 0) end return true diff --git a/data-otservbr-global/scripts/actions/addons/addons.lua b/data-otservbr-global/scripts/actions/addons/addons.lua index 4eceb27f2e6..157187d189f 100644 --- a/data-otservbr-global/scripts/actions/addons/addons.lua +++ b/data-otservbr-global/scripts/actions/addons/addons.lua @@ -1,16 +1,16 @@ local config = { -- soil guardian [16252] = { female = 514, male = 516, effect = CONST_ME_GREEN_RINGS }, - [16253] = { female = 514, male = 516, addon = 1, effect = CONST_ME_GREEN_RINGS, achievement = 'Funghitastic' }, - [16254] = { female = 514, male = 516, addon = 2, effect = CONST_ME_GREEN_RINGS, achievement = 'Funghitastic' }, + [16253] = { female = 514, male = 516, addon = 1, effect = CONST_ME_GREEN_RINGS, achievement = "Funghitastic" }, + [16254] = { female = 514, male = 516, addon = 2, effect = CONST_ME_GREEN_RINGS, achievement = "Funghitastic" }, -- crystal warlord [16255] = { female = 513, male = 512, effect = CONST_ME_GIANTICE }, - [16256] = { female = 513, male = 512, addon = 1, effect = CONST_ME_GIANTICE, achievement = 'Crystal Clear' }, - [16257] = { female = 513, male = 512, addon = 2, effect = CONST_ME_GIANTICE, achievement = 'Crystal Clear' }, + [16256] = { female = 513, male = 512, addon = 1, effect = CONST_ME_GIANTICE, achievement = "Crystal Clear" }, + [16257] = { female = 513, male = 512, addon = 2, effect = CONST_ME_GIANTICE, achievement = "Crystal Clear" }, -- makeshift warrior [27655] = { female = 1043, male = 1042 }, - [27657] = { female = 1043, male = 1042, addon = 1, achievement = 'Cobbled and Patched' }, - [27656] = { female = 1043, male = 1042, addon = 2, achievement = 'Cobbled and Patched' }, + [27657] = { female = 1043, male = 1042, addon = 1, achievement = "Cobbled and Patched" }, + [27656] = { female = 1043, male = 1042, addon = 2, achievement = "Cobbled and Patched" }, -- hand of the inquisition [31738] = { female = 1244, male = 1243, addon = 1, effect = CONST_ME_HOLYAREA, achievement = "Inquisition's Arm" }, [31737] = { female = 1244, male = 1243, addon = 2, effect = CONST_ME_HOLYAREA, achievement = "Inquisition's Arm" }, @@ -30,10 +30,8 @@ function addons.onUse(player, item, fromPosition, target, toPosition, isHotkey) local looktype = player:getSex() == PLAYERSEX_FEMALE and useItem.female or useItem.male if useItem.addon then - if not player:isPremium() - or not player:hasOutfit(looktype) - or player:hasOutfit(looktype, useItem.addon) then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You own no premium account, lack the base outfit or already own this outfit part.') + if not player:isPremium() or not player:hasOutfit(looktype) or player:hasOutfit(looktype, useItem.addon) then + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You own no premium account, lack the base outfit or already own this outfit part.") return true end @@ -48,7 +46,7 @@ function addons.onUse(player, item, fromPosition, target, toPosition, isHotkey) item:remove() else if not player:isPremium() or player:hasOutfit(looktype) then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You own no premium account or already own this outfit part.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You own no premium account or already own this outfit part.") return true end diff --git a/data-otservbr-global/scripts/actions/addons/afflicted_outfit.lua b/data-otservbr-global/scripts/actions/addons/afflicted_outfit.lua index fbab64930a4..179e981451e 100644 --- a/data-otservbr-global/scripts/actions/addons/afflicted_outfit.lua +++ b/data-otservbr-global/scripts/actions/addons/afflicted_outfit.lua @@ -16,7 +16,7 @@ function afflictedOutfit.onUse(player, item, fromPosition, target, toPosition, i player:addOutfitAddon(431, 2) player:getPosition():sendMagicEffect(CONST_ME_POFF) player:setStorageValue(Storage.OutfitQuest.Afflicted.AddonPlagueMask, 1) - player:say('You gained a plague mask for your outfit.', TALKTYPE_MONSTER_SAY, false, player) + player:say("You gained a plague mask for your outfit.", TALKTYPE_MONSTER_SAY, false, player) item:remove() -- Plague Bell @@ -33,7 +33,7 @@ function afflictedOutfit.onUse(player, item, fromPosition, target, toPosition, i player:addOutfitAddon(431, 1) player:getPosition():sendMagicEffect(CONST_ME_POFF) player:setStorageValue(Storage.OutfitQuest.Afflicted.AddonPlagueBell, 1) - player:say('You gained a plague bell for your outfit.', TALKTYPE_MONSTER_SAY, false, player) + player:say("You gained a plague bell for your outfit.", TALKTYPE_MONSTER_SAY, false, player) item:remove() -- Outfit @@ -56,7 +56,7 @@ function afflictedOutfit.onUse(player, item, fromPosition, target, toPosition, i player:addOutfit(431) player:getPosition():sendMagicEffect(CONST_ME_POFF) player:setStorageValue(Storage.OutfitQuest.Afflicted.Outfit, 1) - player:say('You have restored an outfit.', TALKTYPE_MONSTER_SAY, false, player) + player:say("You have restored an outfit.", TALKTYPE_MONSTER_SAY, false, player) end return true end diff --git a/data-otservbr-global/scripts/actions/adventurers_guild/adventurers_stone.lua b/data-otservbr-global/scripts/actions/adventurers_guild/adventurers_stone.lua index 4c3a133ac00..9de94cbe1e3 100644 --- a/data-otservbr-global/scripts/actions/adventurers_guild/adventurers_stone.lua +++ b/data-otservbr-global/scripts/actions/adventurers_guild/adventurers_stone.lua @@ -68,12 +68,12 @@ function adventurersStone.onUse(player, item, fromPosition, target, toPosition, if not allowed then local enabledLocations = {} if config.enableTemplaes then - table.insert(enabledLocations, 'temple') + table.insert(enabledLocations, "temple") end if config.enableDepots then - table.insert(enabledLocations, 'depot') + table.insert(enabledLocations, "depot") end - local message = 'Try to move more to the center of a ' .. table.concat(enabledLocations, ' or ') .. ' to use the spiritual energy for a teleport.' + local message = "Try to move more to the center of a " .. table.concat(enabledLocations, " or ") .. " to use the spiritual energy for a teleport." player:sendTextMessage(MESSAGE_EVENT_ADVANCE, message) return true end diff --git a/data-otservbr-global/scripts/actions/arena_pvp/arena_10x10.lua b/data-otservbr-global/scripts/actions/arena_pvp/arena_10x10.lua index 324afc52e49..45144b499ae 100644 --- a/data-otservbr-global/scripts/actions/arena_pvp/arena_10x10.lua +++ b/data-otservbr-global/scripts/actions/arena_pvp/arena_10x10.lua @@ -1,6 +1,6 @@ local setting = { centerRoom = { x = 32255, y = 32178, z = 9 }, - range = 10 + range = 10, } local playerPositions = { diff --git a/data-otservbr-global/scripts/actions/arena_pvp/arena_2x2.lua b/data-otservbr-global/scripts/actions/arena_pvp/arena_2x2.lua index 44d4f3b285e..1d8e53bf420 100644 --- a/data-otservbr-global/scripts/actions/arena_pvp/arena_2x2.lua +++ b/data-otservbr-global/scripts/actions/arena_pvp/arena_2x2.lua @@ -1,15 +1,14 @@ local setting = { centerRoom = { x = 32255, y = 32178, z = 9 }, - range = 10 + range = 10, } local playerPositions = { { fromPos = { x = 32269, y = 32180, z = 8 }, toPos = { x = 32247, y = 32178, z = 9 } }, -- Player 2 - { fromPos = { x = 32270, y = 32180, z = 8 }, toPos = { x = 32264, y = 32178, z = 9 } } -- Player 1 + { fromPos = { x = 32270, y = 32180, z = 8 }, toPos = { x = 32264, y = 32178, z = 9 } }, -- Player 1 } -local positions = { -} +local positions = {} local arena2x2 = Action() diff --git a/data-otservbr-global/scripts/actions/dawnport/lever.lua b/data-otservbr-global/scripts/actions/dawnport/lever.lua index ffcb5ad5b5d..6f3ba2bbf33 100644 --- a/data-otservbr-global/scripts/actions/dawnport/lever.lua +++ b/data-otservbr-global/scripts/actions/dawnport/lever.lua @@ -2,7 +2,7 @@ local positions = { { x = 32106, y = 31903, z = 7 }, { x = 32106, y = 31904, z = 7 }, { x = 32105, y = 31903, z = 7 }, - { x = 32105, y = 31904, z = 7 } + { x = 32105, y = 31904, z = 7 }, } local lever = Action() diff --git a/data-otservbr-global/scripts/actions/dawnport/vocation_door.lua b/data-otservbr-global/scripts/actions/dawnport/vocation_door.lua index ba03a80e0ee..d8144e7bbff 100644 --- a/data-otservbr-global/scripts/actions/dawnport/vocation_door.lua +++ b/data-otservbr-global/scripts/actions/dawnport/vocation_door.lua @@ -2,22 +2,22 @@ local vocationDoors = { -- Sorcerer [22001] = { vocation = VOCATION.ID.SORCERER, - destination = { x = 32054, y = 31883, z = 6 } + destination = { x = 32054, y = 31883, z = 6 }, }, -- Druid [22002] = { vocation = VOCATION.ID.DRUID, - destination = { x = 32073, y = 31883, z = 6 } + destination = { x = 32073, y = 31883, z = 6 }, }, -- Paladin [22003] = { vocation = VOCATION.ID.PALADIN, - destination = { x = 32059, y = 31883, z = 6 } + destination = { x = 32059, y = 31883, z = 6 }, }, -- Knight [22004] = { vocation = VOCATION.ID.KNIGHT, - destination = { x = 32068, y = 31883, z = 6 } + destination = { x = 32068, y = 31883, z = 6 }, }, } @@ -31,10 +31,7 @@ function vocationDoor.onUse(player, item, target, position, fromPosition) removeMainlandSmugglingItems(player) player:teleportTo(door.destination) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:sendTextMessage( - MESSAGE_EVENT_ADVANCE, - "Open the chest and take your gear, young " .. player:getVocation():getName():lower() .. "!" - ) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Open the chest and take your gear, young " .. player:getVocation():getName():lower() .. "!") elseif player:getStorageValue(Storage.Dawnport.DoorVocation) ~= door.vocation then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The door seems to be sealed against unwanted intruders.") end diff --git a/data-otservbr-global/scripts/actions/falcons/falcon_shield.lua b/data-otservbr-global/scripts/actions/falcons/falcon_shield.lua index 32b79b5746f..32a59aad5a3 100644 --- a/data-otservbr-global/scripts/actions/falcons/falcon_shield.lua +++ b/data-otservbr-global/scripts/actions/falcons/falcon_shield.lua @@ -1,7 +1,7 @@ local falconShield = Action() function falconShield.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if not target or type(target) ~= 'userdata' or not target:isItem() then + if not target or type(target) ~= "userdata" or not target:isItem() then return false end diff --git a/data-otservbr-global/scripts/actions/farmine/boat.lua b/data-otservbr-global/scripts/actions/farmine/boat.lua index b79e842a889..6a1e381c1e5 100644 --- a/data-otservbr-global/scripts/actions/farmine/boat.lua +++ b/data-otservbr-global/scripts/actions/farmine/boat.lua @@ -2,7 +2,7 @@ local boats = { { pos = { x = 33344, y = 31349, z = 7 }, destination = Position(33326, 31351, 7), unlockShortcut = Storage.TheSecretLibrary.ShortcutToBastion }, { pos = { x = 33373, y = 31309, z = 7 }, destination = Position(33382, 31292, 7) }, { pos = { x = 33382, y = 31294, z = 7 }, destination = Position(33374, 31310, 7) }, - { pos = { x = 33328, y = 31352, z = 7 }, destination = Position(33346, 31348, 7), access = Storage.TheSecretLibrary.ShortcutToBastion } + { pos = { x = 33328, y = 31352, z = 7 }, destination = Position(33346, 31348, 7), access = Storage.TheSecretLibrary.ShortcutToBastion }, } local boat = Action() diff --git a/data-otservbr-global/scripts/actions/kazordoon/elevator_lever.lua b/data-otservbr-global/scripts/actions/kazordoon/elevator_lever.lua index fcd1ccfc8d3..15ff2e09188 100644 --- a/data-otservbr-global/scripts/actions/kazordoon/elevator_lever.lua +++ b/data-otservbr-global/scripts/actions/kazordoon/elevator_lever.lua @@ -1,6 +1,6 @@ local config = { [50011] = Position(32636, 31881, 2), - [50012] = Position(32636, 31881, 7) + [50012] = Position(32636, 31881, 7), } local elevatorLever = Action() diff --git a/data-otservbr-global/scripts/actions/kazordoon/ore_wagons.lua b/data-otservbr-global/scripts/actions/kazordoon/ore_wagons.lua index 78a28947732..3bc2965a429 100644 --- a/data-otservbr-global/scripts/actions/kazordoon/ore_wagons.lua +++ b/data-otservbr-global/scripts/actions/kazordoon/ore_wagons.lua @@ -44,7 +44,7 @@ local config = { [50251] = Position(32495, 31833, 9), -- To: Crystal Storage [50252] = Position(32511, 31806, 9), -- To: Crystal Mining [50253] = Position(32498, 31807, 9), -- To: Crystal Cultivation - [50254] = Position(32516, 31829, 9) -- To: Entrance Area + [50254] = Position(32516, 31829, 9), -- To: Entrance Area } local oreWagons = Action() @@ -60,7 +60,7 @@ function oreWagons.onUse(player, item, fromPosition, target, toPosition, isHotke return true end - player:addAchievementProgress('Rollercoaster', 100) + player:addAchievementProgress("Rollercoaster", 100) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:teleportTo(targetPosition) targetPosition:sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/scripts/actions/kazordoon/stone.lua b/data-otservbr-global/scripts/actions/kazordoon/stone.lua index 429a3e8964e..e9fcce63a73 100644 --- a/data-otservbr-global/scripts/actions/kazordoon/stone.lua +++ b/data-otservbr-global/scripts/actions/kazordoon/stone.lua @@ -2,7 +2,7 @@ local config = { { position = Position(32604, 31904, 3), itemId = 1787 }, { position = Position(32605, 31904, 3), itemId = 1788 }, { position = Position(32604, 31905, 3), itemId = 1789 }, - { position = Position(32605, 31905, 3), itemId = 1790 } + { position = Position(32605, 31905, 3), itemId = 1790 }, } local stone = Action() diff --git a/data-otservbr-global/scripts/actions/mounts/mounts.lua b/data-otservbr-global/scripts/actions/mounts/mounts.lua index 342a7a79161..6f910ffb641 100644 --- a/data-otservbr-global/scripts/actions/mounts/mounts.lua +++ b/data-otservbr-global/scripts/actions/mounts/mounts.lua @@ -2,56 +2,64 @@ local ACTION_RUN, ACTION_BREAK, ACTION_NONE, ACTION_ALL = 1, 2, 3, 4 local TYPE_MONSTER, TYPE_NPC, TYPE_ITEM, TYPE_ACTION, TYPE_UNIQUE = 1, 2, 3, 4, 5 local config = { - [5907] = { NAME = 'Bear', ID = 3, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 20, FAIL_MSG = { { 1, 'The bear ran away.' }, { 2, 'Oh no! The slingshot broke.' }, { 3, 'The bear is trying to hit you with its claws.' } }, SUCCESS_MSG = 'You have tamed the war bear.', ACHIEV = "Bearbaiting" }, - [12308] = { NAME = 'Black Sheep', ID = 4, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 25, FAIL_MSG = { { 1, 'The black sheep ran away.' }, { 2, 'Oh no! The reins were torn.' }, { 3, 'The black sheep is trying to run away.' } }, SUCCESS_MSG = 'You have tamed the sheep.', ACHIEV = "Little Ball of Wool" }, - [12260] = { NAME = 'Boar', ID = 10, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, 'The boar has run away' }, { 3, 'The boar attacks you.' } }, SUCCESS_MSG = 'You have tamed the boar.', ACHIEV = "Pig-Headed" }, - [12318] = { NAME = 'Crustacea Gigantica', ID = 7, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, 'The crustacea has run away.' }, { 2, 'The crustacea ate the shrimp.' } }, SUCCESS_MSG = 'You have tamed the crustacea.', ACHIEV = "Fried Shrimp" }, - [12547] = { NAME = 'Crystal Wolf', ID = 16, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, 'The wolf has run away.' } }, SUCCESS_MSG = 'You have tamed the wolf.', ACHIEV = "The Right Tone" }, - [12548] = { NAME = 'Donkey', ID = 13, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, 'The donkey transformation suddenly wears off.' }, { 2, 'Heeee-haaa-haaa-haaw!' }, { 3, 'You did not manage to feed the donkey enough apple slices.' } }, SUCCESS_MSG = 'Heeee-haaaaw!', ACHIEV = "Loyal Lad" }, - [16155] = { NAME = 'Dragonling', ID = 31, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, "The dragonling got scared and ran away." }, { 2, "The dragonling is trying to nibble." } }, SUCCESS_MSG = "You tamed a dragonling.", ACHIEV = "Dragon Mimicry" }, - [12307] = { NAME = 'Draptor', ID = 6, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, 'The draptor has run away.' }, { 3, 'The draptor has fled.' } }, SUCCESS_MSG = 'You have tamed the draptor.', ACHIEV = "Scales and Tail" }, - [12546] = { NAME = 'Dromedary', ID = 20, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, 'Dromedary has run away.' } }, SUCCESS_MSG = 'You have tamed the dromedary.', ACHIEV = "Fata Morgana" }, - [12550] = { NAME = 'Enraged White Deer', ID = 18, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 2, 'The cone broke.' }, { 3, 'The deer has fled in fear.' } }, SUCCESS_MSG = 'You have tamed the white deer.', ACHIEV = "Friend of Elves" }, - [28791] = { NAME = 'Flying Book', ID = 126, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 20, FAIL_MSG = { { 1, 'Flying Book has run away.' } }, SUCCESS_MSG = 'You have converted your library ticket and receive permission to ride a flying book.', ACHIEV = "Bibliomaniac" }, - [19136] = { NAME = 'Gravedigger', ID = 39, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, "The gravedigger got scared and ran away." }, { 3, "The gravedigger is trying to nibble." } }, SUCCESS_MSG = "You tamed the hellgrip.", ACHIEV = "Blacknailed" }, - [31576] = { NAME = 'Gryphon', ID = 144, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, 'Gryphon has run away.' } }, SUCCESS_MSG = 'You have tamed the gryphon.', ACHIEV = "Gryphon Rider" }, - [30171] = { NAME = 'Hibernal Moth', ID = 131, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 20, FAIL_MSG = { { 2, 'The hibernal moth is not interested in your lantern and flies away.' }, { 4, 'The hibernal moth is not interested in your lantern and flies away.' } }, SUCCESS_MSG = 'You have tamed a hibernal moth.', ACHIEV = "Moth Whisperer" }, - [12305] = { NAME = 'inoperative tin lizzard', ID = 8, BREAK = true, TYPE = TYPE_ITEM, CHANCE = 40, FAIL_MSG = { { 2, 'The key broke inside.' } }, SUCCESS_MSG = 'You wind up the tin lizzard.', ACHIEV = "Knock on Wood" }, - [12801] = { NAME = 'inoperative uniwheel', ID = 15, BREAK = true, TYPE = TYPE_ITEM, CHANCE = 40, FAIL_MSG = { { 3, 'The oil have no effect.' }, { 2, 'Splosh!' } }, SUCCESS_MSG = 'The strange wheel seems to vibrate and slowly starts turning continuously.', ACHIEV = "Stuntman" }, - [16153] = { NAME = 'Ironblight', ID = 29, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, 'The ironblight managed to run away.' }, { 2, 'Oh no! The magnet lost its power!' }, { 3, 'The ironblight is fighting against the magnetic force.' } }, SUCCESS_MSG = 'You tamed the ironblight.', ACHIEV = "Magnetised" }, - [30170] = { NAME = 'Lacewing Moth', ID = 130, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 20, FAIL_MSG = { { 2, 'The lacewing moth is not interested in your lantern and flies away.' }, { 4, 'The lacewing moth is not interested in your lantern and flies away.' } }, SUCCESS_MSG = 'You have tamed a lancewing moth.', ACHIEV = "Lacewing Catcher" }, - [14143] = { NAME = 'Ladybug', ID = 27, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, 'The ladybug got scared and ran away.' }, { 3, 'The ladybug is trying to nibble.' } }, SUCCESS_MSG = 'You tame a lady bug.', ACHIEV = "Lovely Dots" }, - [16154] = { NAME = 'Magma Crawler', ID = 30, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, 'The magma crawler refused to drink wine and vanishes into thin air.' }, { 2, 'Argh! The magma crawler pushed you and you spilled the glow wine!' }, { 3, 'The magma crawler is smelling the glow wine suspiciously.' } }, SUCCESS_MSG = - 'The magma crawler will accompany you as a friend from now on.', ACHIEV = "Way to Hell" }, - [14142] = { NAME = 'Manta Ray', ID = 28, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, 'The manta ray fled.' }, { 3, 'The manta ray is trying to escape.' } }, SUCCESS_MSG = 'You have tamed the manta ray.', ACHIEV = "Beneath the Sea" }, - [12306] = { NAME = 'Midnight Panther', ID = 5, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 20, FAIL_MSG = { { 1, 'The panther has escaped.' }, { 2, 'The whip broke.' } }, SUCCESS_MSG = 'You have tamed the panther.', ACHIEV = "Starless Night" }, - [16251] = { NAME = 'Modified Gnarlhound', ID = 32, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = {}, SUCCESS_MSG = 'You now own a modified gnarlhound.', ACHIEV = "Mind the Dog!" }, - [27605] = { NAME = 'Mole', ID = 119, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 2, 'The Mole is a bit capricious. Maybe I should leave it alone.' }, { 4, 'The Mole is a bit capricious. Maybe I should leave it alone.' } }, SUCCESS_MSG = 'You tamed the mole.', ACHIEV = "Up the Molehill" }, - [21439] = { NAME = 'Noble Lion', ID = 40, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 2, 'The lion got scared and ran away.' }, { 4, 'The lion is trying to nibble.' } }, SUCCESS_MSG = 'You tamed the lion.', ACHIEV = "Lion King" }, - [12549] = { NAME = 'Panda', ID = 19, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 4, 'Panda the leaves and ran away.' } }, SUCCESS_MSG = 'You have tamed the panda.', ACHIEV = "Chequered Teddy" }, - [12509] = { NAME = 'Sandstone Scorpion', ID = 21, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, 'The scorpion has vanished.' }, { 2, 'Scorpion broken the sceptre.' } }, SUCCESS_MSG = 'You have tamed the scorpion.', ACHIEV = "Golden Sands" }, - [20274] = { NAME = 'Shock Head', ID = 42, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, 'The shock head ran away.' }, { 3, 'The shock head is growling at you.' } }, SUCCESS_MSG = 'You tamed the shock head.', ACHIEV = "Personal Nightmare" }, - [24960] = { NAME = 'Stone Rhino', ID = 106, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, 'The stone rhino ran away.' }, { 3, 'The stone rhino is growling at you.' } }, SUCCESS_MSG = 'You tamed the stone rhino.', ACHIEV = "Rhino Rider" }, - [12519] = { NAME = 'Slug', ID = 14, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, 'The slug has run away.' }, { 3, 'The drug had no effect.' } }, SUCCESS_MSG = 'You have tamed the slug.', ACHIEV = "Slugging Around" }, - [12311] = { NAME = 'Terror Bird', ID = 2, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 15, FAIL_MSG = { { 1, 'The bird ran away.' }, { 3, 'The terror bird is pecking you.' } }, SUCCESS_MSG = 'You have tamed the bird.', ACHIEV = "Pecking Order" }, - [12304] = { NAME = 'Undead Cavebear', ID = 12, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, 'The undead bear has run away.' } }, SUCCESS_MSG = 'You have tamed the skeleton.', ACHIEV = "Out of the Stone Age" }, - [12320] = { NAME = 'Wailing Widow', ID = 1, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, 'The widow has run away.' }, { 2, 'The widow has eaten the sweet bait.' } }, SUCCESS_MSG = 'You have tamed the widow.', ACHIEV = "Spin-Off" }, - [21186] = { NAME = 'Walker', ID = 43, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 2, 'This walker is incompatible with your control unit.' }, { 4, 'This walker is incompatible with your control unit.' } }, SUCCESS_MSG = 'You tamed the walker.', ACHIEV = "Gear Up" }, - [17858] = { NAME = 'Water Buffalo', ID = 35, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, 'The water buffalo got scared and ran away.' }, { 3, 'The water buffalo is trying to nibble.' } }, SUCCESS_MSG = 'You tamed a water buffalo.', ACHIEV = "Swamp Beast" }, - [12802] = { NAME = 'Wild Horse', ID = 17, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 15, FAIL_MSG = { { 1, 'The horse runs away.' }, { 2, 'The horse ate the oats.' } }, SUCCESS_MSG = 'You have tamed the horse.', ACHIEV = "Lucky Horseshoe" }, - [34258] = { NAME = 'White Lion', ID = 174, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 50, FAIL_MSG = { { 1, 'The White Lion runs away.' }, { 2, 'The White Lion ate the flower.' } }, SUCCESS_MSG = 'You have tamed the white lion.', ACHIEV = "Well Roared, Lion!" } + [5907] = { NAME = "Bear", ID = 3, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 20, FAIL_MSG = { { 1, "The bear ran away." }, { 2, "Oh no! The slingshot broke." }, { 3, "The bear is trying to hit you with its claws." } }, SUCCESS_MSG = "You have tamed the war bear.", ACHIEV = "Bearbaiting" }, + [12308] = { NAME = "Black Sheep", ID = 4, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 25, FAIL_MSG = { { 1, "The black sheep ran away." }, { 2, "Oh no! The reins were torn." }, { 3, "The black sheep is trying to run away." } }, SUCCESS_MSG = "You have tamed the sheep.", ACHIEV = "Little Ball of Wool" }, + [12260] = { NAME = "Boar", ID = 10, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, "The boar has run away" }, { 3, "The boar attacks you." } }, SUCCESS_MSG = "You have tamed the boar.", ACHIEV = "Pig-Headed" }, + [12318] = { NAME = "Crustacea Gigantica", ID = 7, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, "The crustacea has run away." }, { 2, "The crustacea ate the shrimp." } }, SUCCESS_MSG = "You have tamed the crustacea.", ACHIEV = "Fried Shrimp" }, + [12547] = { NAME = "Crystal Wolf", ID = 16, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, "The wolf has run away." } }, SUCCESS_MSG = "You have tamed the wolf.", ACHIEV = "The Right Tone" }, + [12548] = { NAME = "Donkey", ID = 13, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, "The donkey transformation suddenly wears off." }, { 2, "Heeee-haaa-haaa-haaw!" }, { 3, "You did not manage to feed the donkey enough apple slices." } }, SUCCESS_MSG = "Heeee-haaaaw!", ACHIEV = "Loyal Lad" }, + [16155] = { NAME = "Dragonling", ID = 31, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, "The dragonling got scared and ran away." }, { 2, "The dragonling is trying to nibble." } }, SUCCESS_MSG = "You tamed a dragonling.", ACHIEV = "Dragon Mimicry" }, + [12307] = { NAME = "Draptor", ID = 6, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, "The draptor has run away." }, { 3, "The draptor has fled." } }, SUCCESS_MSG = "You have tamed the draptor.", ACHIEV = "Scales and Tail" }, + [12546] = { NAME = "Dromedary", ID = 20, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, "Dromedary has run away." } }, SUCCESS_MSG = "You have tamed the dromedary.", ACHIEV = "Fata Morgana" }, + [12550] = { NAME = "Enraged White Deer", ID = 18, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 2, "The cone broke." }, { 3, "The deer has fled in fear." } }, SUCCESS_MSG = "You have tamed the white deer.", ACHIEV = "Friend of Elves" }, + [28791] = { NAME = "Flying Book", ID = 126, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 20, FAIL_MSG = { { 1, "Flying Book has run away." } }, SUCCESS_MSG = "You have converted your library ticket and receive permission to ride a flying book.", ACHIEV = "Bibliomaniac" }, + [19136] = { NAME = "Gravedigger", ID = 39, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, "The gravedigger got scared and ran away." }, { 3, "The gravedigger is trying to nibble." } }, SUCCESS_MSG = "You tamed the hellgrip.", ACHIEV = "Blacknailed" }, + [31576] = { NAME = "Gryphon", ID = 144, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, "Gryphon has run away." } }, SUCCESS_MSG = "You have tamed the gryphon.", ACHIEV = "Gryphon Rider" }, + [30171] = { NAME = "Hibernal Moth", ID = 131, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 20, FAIL_MSG = { { 2, "The hibernal moth is not interested in your lantern and flies away." }, { 4, "The hibernal moth is not interested in your lantern and flies away." } }, SUCCESS_MSG = "You have tamed a hibernal moth.", ACHIEV = "Moth Whisperer" }, + [12305] = { NAME = "inoperative tin lizzard", ID = 8, BREAK = true, TYPE = TYPE_ITEM, CHANCE = 40, FAIL_MSG = { { 2, "The key broke inside." } }, SUCCESS_MSG = "You wind up the tin lizzard.", ACHIEV = "Knock on Wood" }, + [12801] = { NAME = "inoperative uniwheel", ID = 15, BREAK = true, TYPE = TYPE_ITEM, CHANCE = 40, FAIL_MSG = { { 3, "The oil have no effect." }, { 2, "Splosh!" } }, SUCCESS_MSG = "The strange wheel seems to vibrate and slowly starts turning continuously.", ACHIEV = "Stuntman" }, + [16153] = { NAME = "Ironblight", ID = 29, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, "The ironblight managed to run away." }, { 2, "Oh no! The magnet lost its power!" }, { 3, "The ironblight is fighting against the magnetic force." } }, SUCCESS_MSG = "You tamed the ironblight.", ACHIEV = "Magnetised" }, + [30170] = { NAME = "Lacewing Moth", ID = 130, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 20, FAIL_MSG = { { 2, "The lacewing moth is not interested in your lantern and flies away." }, { 4, "The lacewing moth is not interested in your lantern and flies away." } }, SUCCESS_MSG = "You have tamed a lancewing moth.", ACHIEV = "Lacewing Catcher" }, + [14143] = { NAME = "Ladybug", ID = 27, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, "The ladybug got scared and ran away." }, { 3, "The ladybug is trying to nibble." } }, SUCCESS_MSG = "You tame a lady bug.", ACHIEV = "Lovely Dots" }, + [16154] = { + NAME = "Magma Crawler", + ID = 30, + BREAK = true, + TYPE = TYPE_MONSTER, + CHANCE = 30, + FAIL_MSG = { { 1, "The magma crawler refused to drink wine and vanishes into thin air." }, { 2, "Argh! The magma crawler pushed you and you spilled the glow wine!" }, { 3, "The magma crawler is smelling the glow wine suspiciously." } }, + SUCCESS_MSG = "The magma crawler will accompany you as a friend from now on.", + ACHIEV = "Way to Hell", + }, + [14142] = { NAME = "Manta Ray", ID = 28, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, "The manta ray fled." }, { 3, "The manta ray is trying to escape." } }, SUCCESS_MSG = "You have tamed the manta ray.", ACHIEV = "Beneath the Sea" }, + [12306] = { NAME = "Midnight Panther", ID = 5, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 20, FAIL_MSG = { { 1, "The panther has escaped." }, { 2, "The whip broke." } }, SUCCESS_MSG = "You have tamed the panther.", ACHIEV = "Starless Night" }, + [16251] = { NAME = "Modified Gnarlhound", ID = 32, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = {}, SUCCESS_MSG = "You now own a modified gnarlhound.", ACHIEV = "Mind the Dog!" }, + [27605] = { NAME = "Mole", ID = 119, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 2, "The Mole is a bit capricious. Maybe I should leave it alone." }, { 4, "The Mole is a bit capricious. Maybe I should leave it alone." } }, SUCCESS_MSG = "You tamed the mole.", ACHIEV = "Up the Molehill" }, + [21439] = { NAME = "Noble Lion", ID = 40, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 2, "The lion got scared and ran away." }, { 4, "The lion is trying to nibble." } }, SUCCESS_MSG = "You tamed the lion.", ACHIEV = "Lion King" }, + [12549] = { NAME = "Panda", ID = 19, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 4, "Panda the leaves and ran away." } }, SUCCESS_MSG = "You have tamed the panda.", ACHIEV = "Chequered Teddy" }, + [12509] = { NAME = "Sandstone Scorpion", ID = 21, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, "The scorpion has vanished." }, { 2, "Scorpion broken the sceptre." } }, SUCCESS_MSG = "You have tamed the scorpion.", ACHIEV = "Golden Sands" }, + [20274] = { NAME = "Shock Head", ID = 42, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, "The shock head ran away." }, { 3, "The shock head is growling at you." } }, SUCCESS_MSG = "You tamed the shock head.", ACHIEV = "Personal Nightmare" }, + [24960] = { NAME = "Stone Rhino", ID = 106, BREAK = false, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, "The stone rhino ran away." }, { 3, "The stone rhino is growling at you." } }, SUCCESS_MSG = "You tamed the stone rhino.", ACHIEV = "Rhino Rider" }, + [12519] = { NAME = "Slug", ID = 14, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, "The slug has run away." }, { 3, "The drug had no effect." } }, SUCCESS_MSG = "You have tamed the slug.", ACHIEV = "Slugging Around" }, + [12311] = { NAME = "Terror Bird", ID = 2, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 15, FAIL_MSG = { { 1, "The bird ran away." }, { 3, "The terror bird is pecking you." } }, SUCCESS_MSG = "You have tamed the bird.", ACHIEV = "Pecking Order" }, + [12304] = { NAME = "Undead Cavebear", ID = 12, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, "The undead bear has run away." } }, SUCCESS_MSG = "You have tamed the skeleton.", ACHIEV = "Out of the Stone Age" }, + [12320] = { NAME = "Wailing Widow", ID = 1, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 40, FAIL_MSG = { { 1, "The widow has run away." }, { 2, "The widow has eaten the sweet bait." } }, SUCCESS_MSG = "You have tamed the widow.", ACHIEV = "Spin-Off" }, + [21186] = { NAME = "Walker", ID = 43, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 2, "This walker is incompatible with your control unit." }, { 4, "This walker is incompatible with your control unit." } }, SUCCESS_MSG = "You tamed the walker.", ACHIEV = "Gear Up" }, + [17858] = { NAME = "Water Buffalo", ID = 35, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 30, FAIL_MSG = { { 1, "The water buffalo got scared and ran away." }, { 3, "The water buffalo is trying to nibble." } }, SUCCESS_MSG = "You tamed a water buffalo.", ACHIEV = "Swamp Beast" }, + [12802] = { NAME = "Wild Horse", ID = 17, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 15, FAIL_MSG = { { 1, "The horse runs away." }, { 2, "The horse ate the oats." } }, SUCCESS_MSG = "You have tamed the horse.", ACHIEV = "Lucky Horseshoe" }, + [34258] = { NAME = "White Lion", ID = 174, BREAK = true, TYPE = TYPE_MONSTER, CHANCE = 50, FAIL_MSG = { { 1, "The White Lion runs away." }, { 2, "The White Lion ate the flower." } }, SUCCESS_MSG = "You have tamed the white lion.", ACHIEV = "Well Roared, Lion!" }, } local function doFailAction(cid, mount, pos, item, itemEx, loseItem) local action, effect = mount.FAIL_MSG[math.random(#mount.FAIL_MSG)], CONST_ME_POFF - if (action[1] == ACTION_RUN) then + if action[1] == ACTION_RUN then Creature(itemEx.uid):remove() - elseif (action[1] == ACTION_BREAK) then + elseif action[1] == ACTION_BREAK then effect = CONST_ME_BLOCKHIT if loseItem then Item(item.uid):remove(1) end - elseif (action[1] == ACTION_ALL) then + elseif action[1] == ACTION_ALL then Creature(itemEx.uid):remove() if loseItem then Item(item.uid):remove(1) @@ -79,7 +87,7 @@ function mounts.onUse(cid, item, fromPosition, itemEx, toPosition) --Monster Mount if targetMonster ~= nil and mount.TYPE == TYPE_MONSTER then if Creature(itemEx.uid):getMaster() then - player:say('You can\'t tame a summon!', TALKTYPE_MONSTER_SAY) + player:say("You can't tame a summon!", TALKTYPE_MONSTER_SAY) return true end @@ -150,7 +158,7 @@ function mounts.onUse(cid, item, fromPosition, itemEx, toPosition) end --Action Mount elseif itemEx.actionid > 0 and mount.TYPE == TYPE_ACTION then - if (mount.NAME == itemEx.actionid) then + if mount.NAME == itemEx.actionid then if rand > mount.CHANCE then doFailAction(cid, mount, toPosition, item, itemEx, mount.BREAK) return true diff --git a/data-otservbr-global/scripts/actions/mounts/music_box.lua b/data-otservbr-global/scripts/actions/mounts/music_box.lua index 4e42d0bf7ca..07ff63c5f35 100644 --- a/data-otservbr-global/scripts/actions/mounts/music_box.lua +++ b/data-otservbr-global/scripts/actions/mounts/music_box.lua @@ -1,21 +1,19 @@ local config = { - ['dragonling'] = { mountId = 31, tameMessage = 'The wild dragonling will accompany you as a friend from now on.', sound = 'FI?', ACHIEV = "Dragon Mimicry" }, - ['draptor'] = { mountId = 6, tameMessage = 'You have tamed the wild draptor.', sound = 'Screeeeeeeeech', ACHIEV = "Scales and Tail" }, - ['enraged white deer'] = { mountId = 18, tameMessage = 'You have tamed the deer.', sound = 'bell', ACHIEV = "Friend of Elves" }, - ['ironblight'] = { mountId = 29, tameMessage = 'You tamed the ironblight.', sound = 'Plinngggg', ACHIEV = "Magnetised" }, - ['magma crawler'] = { mountId = 30, tameMessage = 'The magma crawler will accompany you as a friend from now on.', sound = 'ZzzZzzZzzzZz', ACHIEV = "Way to Hell" }, - ['midnight panther'] = { mountId = 5, tameMessage = 'You have tamed the wild panther.', sound = 'Purrrrrrr', ACHIEV = "Starless Night" }, - ['wailing widow'] = { mountId = 1, mountName = 'widow queen', tameMessage = 'You have tamed the wailing widow.', sound = 'Sssssssss', ACHIEV = "Spin-Off" }, - ['wild horse'] = { mountId = 17, mountName = 'war horse', tameMessage = 'The horse eats the sugar oat and accepts you as its new master.', sound = '*snort*', ACHIEV = "Lucky Horseshoe" }, - ['panda'] = { mountId = 19, tameMessage = 'You have tamed the panda.', sound = 'Rrrrr...', ACHIEV = "Chequered Teddy" } + ["dragonling"] = { mountId = 31, tameMessage = "The wild dragonling will accompany you as a friend from now on.", sound = "FI?", ACHIEV = "Dragon Mimicry" }, + ["draptor"] = { mountId = 6, tameMessage = "You have tamed the wild draptor.", sound = "Screeeeeeeeech", ACHIEV = "Scales and Tail" }, + ["enraged white deer"] = { mountId = 18, tameMessage = "You have tamed the deer.", sound = "bell", ACHIEV = "Friend of Elves" }, + ["ironblight"] = { mountId = 29, tameMessage = "You tamed the ironblight.", sound = "Plinngggg", ACHIEV = "Magnetised" }, + ["magma crawler"] = { mountId = 30, tameMessage = "The magma crawler will accompany you as a friend from now on.", sound = "ZzzZzzZzzzZz", ACHIEV = "Way to Hell" }, + ["midnight panther"] = { mountId = 5, tameMessage = "You have tamed the wild panther.", sound = "Purrrrrrr", ACHIEV = "Starless Night" }, + ["wailing widow"] = { mountId = 1, mountName = "widow queen", tameMessage = "You have tamed the wailing widow.", sound = "Sssssssss", ACHIEV = "Spin-Off" }, + ["wild horse"] = { mountId = 17, mountName = "war horse", tameMessage = "The horse eats the sugar oat and accepts you as its new master.", sound = "*snort*", ACHIEV = "Lucky Horseshoe" }, + ["panda"] = { mountId = 19, tameMessage = "You have tamed the panda.", sound = "Rrrrr...", ACHIEV = "Chequered Teddy" }, } local musicBox = Action() function musicBox.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if not target:isCreature() - or not target:isMonster() - or target:getMaster() then + if not target:isCreature() or not target:isMonster() or target:getMaster() then return false end @@ -26,11 +24,11 @@ function musicBox.onUse(player, item, fromPosition, target, toPosition, isHotkey end if player:hasMount(monsterConfig.mountId) then - player:say('You already tamed a ' .. (monsterConfig.mountName or targetName) .. '.', TALKTYPE_MONSTER_SAY) + player:say("You already tamed a " .. (monsterConfig.mountName or targetName) .. ".", TALKTYPE_MONSTER_SAY) return true end - player:addAchievement('Natural Born Cowboy') + player:addAchievement("Natural Born Cowboy") player:addAchievement(monsterConfig.ACHIEV) player:addMount(monsterConfig.mountId) player:say(monsterConfig.tameMessage, TALKTYPE_MONSTER_SAY) diff --git a/data-otservbr-global/scripts/actions/object/imbuement_shrine.lua b/data-otservbr-global/scripts/actions/object/imbuement_shrine.lua index f8460042839..0fb998a9756 100644 --- a/data-otservbr-global/scripts/actions/object/imbuement_shrine.lua +++ b/data-otservbr-global/scripts/actions/object/imbuement_shrine.lua @@ -5,7 +5,7 @@ function imbuement.onUse(player, item, fromPosition, target, toPosition, isHotke return player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You did not collect enough knowledge from the ancient Shapers. Visit the Shaper temple in Thais for help.") end - if not (target) or not (target:isItem()) then + if not target or not (target:isItem()) then return player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can only use the shrine on an valid item.") end diff --git a/data-otservbr-global/scripts/actions/object/rope_down.lua b/data-otservbr-global/scripts/actions/object/rope_down.lua index 7798692bf4a..f12613660cf 100644 --- a/data-otservbr-global/scripts/actions/object/rope_down.lua +++ b/data-otservbr-global/scripts/actions/object/rope_down.lua @@ -1,7 +1,9 @@ local action = Action() function action.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if not player then return false end + if not player then + return false + end player:teleportTo(Position(33394, 32650, 2)) end diff --git a/data-otservbr-global/scripts/actions/other/anniversary_reward_boxes.lua b/data-otservbr-global/scripts/actions/other/anniversary_reward_boxes.lua index 0530a7478a7..8327222a570 100644 --- a/data-otservbr-global/scripts/actions/other/anniversary_reward_boxes.lua +++ b/data-otservbr-global/scripts/actions/other/anniversary_reward_boxes.lua @@ -7,7 +7,7 @@ local config = { { id = 37461, count = 1 }, -- balloon box { id = 37463, count = 1 }, -- luminous box { id = 37467, count = 1 }, -- carpet box - { id = 37468, count = 1 } -- special fx box + { id = 37468, count = 1 }, -- special fx box }, [39705] = { -- reward box { id = 37530, count = 2 }, -- bottle of champagne @@ -22,7 +22,7 @@ local config = { { id = 37465, count = 2 }, -- box full of presents { id = 37457, count = 1 }, -- supernatural box { id = 37469, count = 2 }, -- special balloon box - { id = 37466, count = 1 } -- embroidered box + { id = 37466, count = 1 }, -- embroidered box }, [39706] = { -- box full of balloons { id = 39671, count = 1 }, -- balloon no. 0 @@ -50,8 +50,8 @@ local config = { { id = 37465, count = 2 }, -- box full of presents { id = 37457, count = 1 }, -- supernatural box { id = 37469, count = 2 }, -- special balloon box - { id = 37466, count = 1 } -- embroidered box - } + { id = 37466, count = 1 }, -- embroidered box + }, } local rewardBox = Action() diff --git a/data-otservbr-global/scripts/actions/other/bag_you_covet.lua b/data-otservbr-global/scripts/actions/other/bag_you_covet.lua index 1f78e71f4ad..a8fd4a24951 100644 --- a/data-otservbr-global/scripts/actions/other/bag_you_covet.lua +++ b/data-otservbr-global/scripts/actions/other/bag_you_covet.lua @@ -12,7 +12,7 @@ local rewards = { { id = 43882, name = "Sanguine Coil" }, { id = 43884, name = "Sanguine Boots" }, { id = 43885, name = "Sanguine Rod" }, - { id = 43887, name = "Sanguine Galoshes" } + { id = 43887, name = "Sanguine Galoshes" }, } local bagyouCovet = Action() @@ -24,7 +24,7 @@ function bagyouCovet.onUse(player, item, fromPosition, target, toPosition, isHot player:addItem(rewardItem.id, 1) item:remove(1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You received a ' .. rewardItem.name .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You received a " .. rewardItem.name .. ".") return true end diff --git a/data-otservbr-global/scripts/actions/other/bag_you_desire.lua b/data-otservbr-global/scripts/actions/other/bag_you_desire.lua index 16fd8785a9a..247651b38a0 100644 --- a/data-otservbr-global/scripts/actions/other/bag_you_desire.lua +++ b/data-otservbr-global/scripts/actions/other/bag_you_desire.lua @@ -16,7 +16,7 @@ local rewards = { { id = 34096, name = "Soulshroud" }, { id = 34097, name = "Pair of Soulwalkers" }, { id = 34098, name = "Pair of Soulstalkers" }, - { id = 34099, name = "Soulbastion" } + { id = 34099, name = "Soulbastion" }, } local bagyouDesire = Action() @@ -28,7 +28,7 @@ function bagyouDesire.onUse(player, item, fromPosition, target, toPosition, isHo player:addItem(rewardItem.id, 1) item:remove(1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You received a ' .. rewardItem.name .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You received a " .. rewardItem.name .. ".") return true end diff --git a/data-otservbr-global/scripts/actions/other/balloons.lua b/data-otservbr-global/scripts/actions/other/balloons.lua index 3b9c89ffbd7..35e84eec531 100644 --- a/data-otservbr-global/scripts/actions/other/balloons.lua +++ b/data-otservbr-global/scripts/actions/other/balloons.lua @@ -74,7 +74,7 @@ local balloonItems = { [39679] = 39691, [39691] = 39679, -- balloon no.8 [39680] = 39692, - [39692] = 39680 -- balloon no.9 + [39692] = 39680, -- balloon no.9 } local balloons = Action() diff --git a/data-otservbr-global/scripts/actions/other/bed_modification_kits.lua b/data-otservbr-global/scripts/actions/other/bed_modification_kits.lua index 80ec2fb33ab..4dd68ff834d 100644 --- a/data-otservbr-global/scripts/actions/other/bed_modification_kits.lua +++ b/data-otservbr-global/scripts/actions/other/bed_modification_kits.lua @@ -3,7 +3,7 @@ local beds = { [832] = { { 742, 743 }, { 744, 745 } }, -- yellow kit [833] = { { 738, 739 }, { 740, 741 } }, -- red kit [834] = { { 2487, 2488 }, { 2493, 2494 } }, -- removal kit - [17972] = { { 17917, 17918 }, { 17919, 17920 } } -- canopy kit + [17972] = { { 17917, 17918 }, { 17919, 17920 } }, -- canopy kit } local function internalBedTransform(item, target, toPosition, itemArray) diff --git a/data-otservbr-global/scripts/actions/other/blueberry_bush.lua b/data-otservbr-global/scripts/actions/other/blueberry_bush.lua index 56b9f0db74e..abe445ffbb0 100644 --- a/data-otservbr-global/scripts/actions/other/blueberry_bush.lua +++ b/data-otservbr-global/scripts/actions/other/blueberry_bush.lua @@ -4,7 +4,7 @@ function blueberryBush.onUse(player, item, fromPosition, target, toPosition, isH item:transform(3700) item:decay() Game.createItem(3588, 3, fromPosition) - player:addAchievementProgress('Bluebarian', 500) + player:addAchievementProgress("Bluebarian", 500) return true end diff --git a/data-otservbr-global/scripts/actions/other/cask_kegs.lua b/data-otservbr-global/scripts/actions/other/cask_kegs.lua index d8ff9905ee9..872d30d613c 100644 --- a/data-otservbr-global/scripts/actions/other/cask_kegs.lua +++ b/data-otservbr-global/scripts/actions/other/cask_kegs.lua @@ -29,7 +29,7 @@ local targetIdList = { --spirit potions kegs [25913] = { itemId = 284, transform = 7642 }, -- Great Spirit -- - [25914] = { itemId = 284, transform = 23374 } --Ultimate Spirit -- + [25914] = { itemId = 284, transform = 23374 }, --Ultimate Spirit -- } local flasks = Action() diff --git a/data-otservbr-global/scripts/actions/other/clay_lump.lua b/data-otservbr-global/scripts/actions/other/clay_lump.lua index 984bb2b8a2b..f8f0f852546 100644 --- a/data-otservbr-global/scripts/actions/other/clay_lump.lua +++ b/data-otservbr-global/scripts/actions/other/clay_lump.lua @@ -1,8 +1,8 @@ local config = { - { chance = { 0.0, 1.1 }, transformId = 10425, description = 'This little figurine of Brog, the raging Titan, was skillfully made by |PLAYERNAME|.', achievement = true }, - { chance = { 1.1, 10.52 }, transformId = 10424, description = 'It was made by |PLAYERNAME| and is clearly a little figurine of.. hm, one does not recognise that yet.' }, - { chance = { 10.52, 35.38 }, transformId = 10423, description = 'It was made by |PLAYERNAME|, whose potter skills could use some serious improvement.' }, - { chance = { 35.38, 100.0 }, remove = true, sound = 'Aw man. That did not work out too well.' } + { chance = { 0.0, 1.1 }, transformId = 10425, description = "This little figurine of Brog, the raging Titan, was skillfully made by |PLAYERNAME|.", achievement = true }, + { chance = { 1.1, 10.52 }, transformId = 10424, description = "It was made by |PLAYERNAME| and is clearly a little figurine of.. hm, one does not recognise that yet." }, + { chance = { 10.52, 35.38 }, transformId = 10423, description = "It was made by |PLAYERNAME|, whose potter skills could use some serious improvement." }, + { chance = { 35.38, 100.0 }, remove = true, sound = "Aw man. That did not work out too well." }, } local clayLump = Action() @@ -25,12 +25,12 @@ function clayLump.onUse(player, item, fromPosition, target, toPosition, isHotkey end if tmpItem.description then - item:setDescription(tmpItem.description:gsub('|PLAYERNAME|', player:getName())) + item:setDescription(tmpItem.description:gsub("|PLAYERNAME|", player:getName())) end if tmpItem.achievement then - player:addAchievement('Clay Fighter') - player:addAchievementProgress('Clay to Fame', 5) + player:addAchievement("Clay Fighter") + player:addAchievementProgress("Clay to Fame", 5) end break diff --git a/data-otservbr-global/scripts/actions/other/construction_kits.lua b/data-otservbr-global/scripts/actions/other/construction_kits.lua index 52d194a1407..61fda24476f 100644 --- a/data-otservbr-global/scripts/actions/other/construction_kits.lua +++ b/data-otservbr-global/scripts/actions/other/construction_kits.lua @@ -56,7 +56,7 @@ local constructionKits = { [14756] = 14755, [17974] = 18015, [17975] = 18017, - [17977] = 18019 + [17977] = 18019, } local jackToTheFuture_Kits = { @@ -64,37 +64,37 @@ local jackToTheFuture_Kits = { itemId = 2374, kitMessage = "The red cushioned chair looks quite comfy in that corner.", jackSay = "Jack: Yeah uhm... impressive chair. Now would you please remove it? Thanks.", - storage = Storage.TibiaTales.JackFutureQuest.Furniture01 + storage = Storage.TibiaTales.JackFutureQuest.Furniture01, }, [2797] = { itemId = 2979, kitMessage = "A globe like this should be in every household.", jackSay = "Jack: What the... what do I need a 'globe' for? Take this away.", - storage = Storage.TibiaTales.JackFutureQuest.Furniture02 + storage = Storage.TibiaTales.JackFutureQuest.Furniture02, }, [2799] = { itemId = 3485, kitMessage = "The telescope just looks like it was the one thing missing from this room.", jackSay = "Jack: Nice, a... what is this actually?", - storage = Storage.TibiaTales.JackFutureQuest.Furniture03 + storage = Storage.TibiaTales.JackFutureQuest.Furniture03, }, [2800] = { itemId = 2998, kitMessage = "What a cute horse - and just the right thing to place into this cute room.", jackSay = "Jack: A rocking horse? What's wrong with you.", - storage = Storage.TibiaTales.JackFutureQuest.Furniture04 + storage = Storage.TibiaTales.JackFutureQuest.Furniture04, }, [2805] = { itemId = 2904, kitMessage = "There seems to be no better place for this amphora than right here.", jackSay = "Jack: Trying to get rid of your junk in my house? Do I look like I need such a... 'vase'?", - storage = Storage.TibiaTales.JackFutureQuest.Furniture05 - } + storage = Storage.TibiaTales.JackFutureQuest.Furniture05, + }, } local jackToTheFuture_House = { beginPos = Position(33273, 31754, 7), - finalPos = Position(33278, 31759, 7) + finalPos = Position(33278, 31759, 7), } local constructionKit = Action() diff --git a/data-otservbr-global/scripts/actions/other/costume_bags.lua b/data-otservbr-global/scripts/actions/other/costume_bags.lua index 59402d011a1..4a159a1db3a 100644 --- a/data-otservbr-global/scripts/actions/other/costume_bags.lua +++ b/data-otservbr-global/scripts/actions/other/costume_bags.lua @@ -1,8 +1,8 @@ local config = { - [653] = { 'orc warrior', 'pirate cutthroat', 'dworc voodoomaster', 'dwarf guard', 'minotaur mage', 'ogre shaman', 'ogre brute', 'rat' }, -- common - [655] = { 'serpent spawn', 'demon', 'juggernaut', 'behemoth', 'ashmunrah', 'vexclaw', 'grimeleech', 'hellflayer', 'black sheep' }, -- uncommon - [654] = { 'quara hydromancer', 'diabolic imp', 'banshee', 'frost giant', 'lich', 'vexclaw', 'grimeleech', 'hellflayer', 'ogre shaman', 'ogre brute', 'pig' }, -- deluxe - [24949] = { 'old beholder', 'old bug', 'old wolf', 'old giant spider' } -- old + [653] = { "orc warrior", "pirate cutthroat", "dworc voodoomaster", "dwarf guard", "minotaur mage", "ogre shaman", "ogre brute", "rat" }, -- common + [655] = { "serpent spawn", "demon", "juggernaut", "behemoth", "ashmunrah", "vexclaw", "grimeleech", "hellflayer", "black sheep" }, -- uncommon + [654] = { "quara hydromancer", "diabolic imp", "banshee", "frost giant", "lich", "vexclaw", "grimeleech", "hellflayer", "ogre shaman", "ogre brute", "pig" }, -- deluxe + [24949] = { "old beholder", "old bug", "old wolf", "old giant spider" }, -- old } local costumeBags = Action() @@ -12,9 +12,9 @@ function costumeBags.onUse(player, item, fromPosition, target, toPosition, isHot if not monsterNames then return true end - player:sendTextMessage(MESSAGE_STATUS, 'You will stay 5 minutes transformed in a monster!') + player:sendTextMessage(MESSAGE_STATUS, "You will stay 5 minutes transformed in a monster!") doSetMonsterOutfit(player, monsterNames[math.random(#monsterNames)], 300 * 1000) - player:addAchievementProgress('Masquerader', 100) + player:addAchievementProgress("Masquerader", 100) item:getPosition():sendMagicEffect(36) item:remove() return true diff --git a/data-otservbr-global/scripts/actions/other/cup_cakes.lua b/data-otservbr-global/scripts/actions/other/cup_cakes.lua index ef17309771d..43225369e1f 100644 --- a/data-otservbr-global/scripts/actions/other/cup_cakes.lua +++ b/data-otservbr-global/scripts/actions/other/cup_cakes.lua @@ -2,18 +2,18 @@ local data = { [28484] = { Type = "mana", ExhaustStor = Storage.BlueberryCupcake, - timestamp = 10 + timestamp = 10, }, [28485] = { Type = "health", ExhaustStor = Storage.StrawberryCupcake, - timestamp = 10 + timestamp = 10, }, [28486] = { Type = "skill", ExhaustStor = Storage.LemonCupcake, - timestamp = 10 - } + timestamp = 10, + }, } local lemon = Condition(CONDITION_ATTRIBUTES) @@ -24,7 +24,7 @@ local cupCakes = Action() function cupCakes.onUse(player, item, fromPos, itemEx, toPos) local foundItem = data[item.itemid] - if not (foundItem) then + if not foundItem then return end if (player:getStorageValue(foundItem.ExhaustStor)) < os.time() then diff --git a/data-otservbr-global/scripts/actions/other/cup_of_molten_gold.lua b/data-otservbr-global/scripts/actions/other/cup_of_molten_gold.lua index 5fc6ac9955a..0ec6efdd7d8 100644 --- a/data-otservbr-global/scripts/actions/other/cup_of_molten_gold.lua +++ b/data-otservbr-global/scripts/actions/other/cup_of_molten_gold.lua @@ -10,7 +10,7 @@ function cupOfMoltenGold.onUse(cid, item, fromPosition, itemEx, toPosition) if itemEx.itemid == 3614 or itemEx.itemid == 19111 then doRemoveItem(item.uid, 1) for i = 0, #items do - if (items[i].chance > math.random(1, 100)) then + if items[i].chance > math.random(1, 100) then doPlayerAddItem(cid, items[i].id, items[i].count) doSendMagicEffect(toPosition, CONST_ME_EXPLOSIONAREA) end diff --git a/data-otservbr-global/scripts/actions/other/destroy.lua b/data-otservbr-global/scripts/actions/other/destroy.lua index 0ac7f6564cc..2898b400e0d 100644 --- a/data-otservbr-global/scripts/actions/other/destroy.lua +++ b/data-otservbr-global/scripts/actions/other/destroy.lua @@ -21,8 +21,8 @@ local destroy = Action() function destroy.onUse(player, item, fromPosition, target, toPosition, isHotkey) -- Tibia tales quest, Aritos task - if (item:getId() == scimitarItemId) then - if (toPosition == Position(scimitarPos.x, scimitarPos.y, scimitarPos.z)) then + if item:getId() == scimitarItemId then + if toPosition == Position(scimitarPos.x, scimitarPos.y, scimitarPos.z) then local scimitarPlaced = Tile(scimitarPos):getItemById(placedSimitarItemId) if not scimitarPlaced then if player:getStorageValue(Storage.TibiaTales.AritosTask) >= 0 then diff --git a/data-otservbr-global/scripts/actions/other/dolls.lua b/data-otservbr-global/scripts/actions/other/dolls.lua index 7f389c2b720..255bdfa21f5 100644 --- a/data-otservbr-global/scripts/actions/other/dolls.lua +++ b/data-otservbr-global/scripts/actions/other/dolls.lua @@ -10,14 +10,14 @@ local dolls = { "You should do something you always wanted to.", "If you walk under a ladder and it falls down on you it probably means bad luck.", "Never say 'oops'. Always say 'Ah, interesting!'", - "Five steps east, fourteen steps south, two steps north and seventeen steps west!" + "Five steps east, fourteen steps south, two steps north and seventeen steps west!", }, [6566] = { "Fchhhhhh!", "Zchhhhhh!", "Grooaaaaar*cough*", "Aaa... CHOO!", - "You... will.... burn!!" + "You... will.... burn!!", }, [6387] = { "Merry Christmas |PLAYERNAME|." }, [6511] = { @@ -26,7 +26,7 @@ local dolls = { "Have you been naughty?", "Have you been nice?", "Merry Christmas!", - "Can you stop squeezing me now... I'm starting to feel a little sick." + "Can you stop squeezing me now... I'm starting to feel a little sick.", }, [8146] = { "ARE YOU PREPARED TO FACE YOUR DESTINY?" }, [8149] = { @@ -34,18 +34,18 @@ local dolls = { "Pie for breakfast, pie for lunch and pie for dinner!", "All hail the control panel!", "I own, Tibiacity owns, perfect match!", - "Hug me! Feed me! Hail me!" + "Hug me! Feed me! Hail me!", }, [8153] = { "It's news to me.", "News, updated as infrequently as possible!", "Extra! Extra! Read all about it!", - "Fresh off the press!" + "Fresh off the press!", }, [8154] = { "Hail TibiaNordic!", "So cold..", - "Run, mammoth!" + "Run, mammoth!", }, [21435] = { "I can hear their whisperings... Revenge!", @@ -53,9 +53,9 @@ local dolls = { "I do not need a sword to slaughter you", "My sword is broken, but my spirit is not dead", "I can say 469 and more...", - "My dark magic lies on tibialatina.wikia.com" + "My dark magic lies on tibialatina.wikia.com", }, - [21962] = { "Hail Tibia Brasileiros! (União&Força)" } + [21962] = { "Hail Tibia Brasileiros! (União&Força)" }, } local doll = Action() @@ -88,7 +88,7 @@ function doll.onUse(player, item, fromPosition, target, toPosition, isHotkey) fromPosition:sendMagicEffect(CONST_ME_SOUND_YELLOW) end - sound = sound:gsub('|PLAYERNAME|', player:getName()) + sound = sound:gsub("|PLAYERNAME|", player:getName()) player:say(sound, TALKTYPE_MONSTER_SAY, false, 0, fromPosition) return true end diff --git a/data-otservbr-global/scripts/actions/other/dryad_garden.lua b/data-otservbr-global/scripts/actions/other/dryad_garden.lua index cdb998d5644..082d0de2116 100644 --- a/data-otservbr-global/scripts/actions/other/dryad_garden.lua +++ b/data-otservbr-global/scripts/actions/other/dryad_garden.lua @@ -4,8 +4,7 @@ local dryadPos = { [33331] = Position(33202, 32012, 11), -- exit - [33332] = Position(33264, 32012, 7) - + [33332] = Position(33264, 32012, 7), } local dryadAction = Action() diff --git a/data-otservbr-global/scripts/actions/other/enchanting.lua b/data-otservbr-global/scripts/actions/other/enchanting.lua index f63187b406e..efd59489110 100644 --- a/data-otservbr-global/scripts/actions/other/enchanting.lua +++ b/data-otservbr-global/scripts/actions/other/enchanting.lua @@ -7,7 +7,7 @@ local spheres = { [675] = { VOCATION.BASE_ID.PALADIN }, [676] = { VOCATION.BASE_ID.SORCERER }, [677] = { VOCATION.BASE_ID.DRUID }, - [678] = { VOCATION.BASE_ID.KNIGHT } + [678] = { VOCATION.BASE_ID.KNIGHT }, } local enchantableGems = { 3030, 3029, 3032, 3033 } @@ -17,7 +17,7 @@ local enchantingAltars = { { 146, 147, 148, 149 }, { 150, 151, 152, 153 }, { 158, 159, 160, 161 }, - { 154, 155, 156, 157 } + { 154, 155, 156, 157 }, } local enchantedGems = { 676, 675, 677, 678 } @@ -38,19 +38,17 @@ local enchantedItems = { [7392] = { 673, 692, 792, 809 }, [3279] = { 674, 693, 793, 810 }, [3447] = { 763, 762, 774, 761 }, - [8077] = { 8078, 8079, 8081, 8080 } + [8077] = { 8078, 8079, 8081, 8080 }, } local enchanting = Action() function enchanting.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if table.contains({ 33268, 33269 }, toPosition.x) - and toPosition.y == 31830 and toPosition.z == 10 - and player:getStorageValue(Storage.ElementalSphere.QuestLine) > 0 then + if table.contains({ 33268, 33269 }, toPosition.x) and toPosition.y == 31830 and toPosition.z == 10 and player:getStorageValue(Storage.ElementalSphere.QuestLine) > 0 then if not table.contains(spheres[item.itemid], player:getVocation():getBaseId()) then return false elseif table.contains({ 842, 843 }, target.itemid) then - player:say('Turn off the machine first.', TALKTYPE_MONSTER_SAY) + player:say("Turn off the machine first.", TALKTYPE_MONSTER_SAY) return true else player:setStorageValue(Storage.ElementalSphere.MachineGemCount, math.max(1, player:getStorageValue(Storage.ElementalSphere.MachineGemCount) + 1)) @@ -83,7 +81,7 @@ function enchanting.onUse(player, item, fromPosition, target, toPosition, isHotk local mana = config.manaCost * subtype if player:getMana() < mana then - player:say('Not enough mana, separate one gem in your backpack and try again.', TALKTYPE_MONSTER_SAY) + player:say("Not enough mana, separate one gem in your backpack and try again.", TALKTYPE_MONSTER_SAY) return false end diff --git a/data-otservbr-global/scripts/actions/other/fireworks_rocket.lua b/data-otservbr-global/scripts/actions/other/fireworks_rocket.lua index 6045fce8f55..2003fe96fc8 100644 --- a/data-otservbr-global/scripts/actions/other/fireworks_rocket.lua +++ b/data-otservbr-global/scripts/actions/other/fireworks_rocket.lua @@ -10,7 +10,7 @@ function fireworksRocket.onUse(player, item, fromPosition, target, toPosition, i player:say("Ouch! Rather place it on the ground next time.", TALKTYPE_MONSTER_SAY) player:addHealth(-10, COMBAT_PHYSICALDAMAGE) end - player:addAchievementProgress('Fireworks in the Sky', 250) + player:addAchievementProgress("Fireworks in the Sky", 250) item:remove() return true end diff --git a/data-otservbr-global/scripts/actions/other/fishing.lua b/data-otservbr-global/scripts/actions/other/fishing.lua index 08a1c106cad..f9e27ccb7cd 100644 --- a/data-otservbr-global/scripts/actions/other/fishing.lua +++ b/data-otservbr-global/scripts/actions/other/fishing.lua @@ -14,8 +14,8 @@ local elementals = { { from = 802, to = 1002, itemId = 3032 }, -- small emerald { from = 1003, to = 1053, itemId = 281 }, -- giant shimmering pearl (green) { from = 1054, to = 1104, itemId = 282 }, -- giant shimmering pearl (brown) - { from = 1105, to = 1115, itemId = 9303 } -- leviathan's amulet - } + { from = 1105, to = 1115, itemId = 9303 }, -- leviathan's amulet + }, } local useWorms = true @@ -52,7 +52,7 @@ function fishing.onUse(player, item, fromPosition, target, toPosition, isHotkey) player:addItem(randomItem.itemId, 1) end if chance > 1115 then - player:say('There was just rubbish in it.', TALKTYPE_MONSTER_SAY) + player:say("There was just rubbish in it.", TALKTYPE_MONSTER_SAY) return true end end diff --git a/data-otservbr-global/scripts/actions/other/fluids.lua b/data-otservbr-global/scripts/actions/other/fluids.lua index b80a37866d2..03b013a44d1 100644 --- a/data-otservbr-global/scripts/actions/other/fluids.lua +++ b/data-otservbr-global/scripts/actions/other/fluids.lua @@ -27,7 +27,7 @@ local fluidMessage = { [FLUID_FRUITJUICE] = "Mmmh.", -- coconut milk [FLUID_COCONUTMILK] = "Aah...", -- mead [FLUID_MEAD] = "Gulp.", -- tea - [FLUID_TEA] = "Urgh!" -- ink + [FLUID_TEA] = "Urgh!", -- ink } local function graveStoneTeleport(cid, fromPosition, toPosition) @@ -37,7 +37,7 @@ local function graveStoneTeleport(cid, fromPosition, toPosition) end player:teleportTo(toPosition) - player:say('Muahahahaha..', TALKTYPE_MONSTER_SAY, false, player) + player:say("Muahahahaha..", TALKTYPE_MONSTER_SAY, false, player) fromPosition:sendMagicEffect(CONST_ME_DRAWBLOOD) toPosition:sendMagicEffect(CONST_ME_MORTAREA) end @@ -45,7 +45,7 @@ end -- Special poison condition used on dawnport residents -- Doesnt allow poison yourself when health is <= 10 or your health go low than 10 due poison function dawnportPoisonCondition(player) - local health = player:getHealth(); + local health = player:getHealth() local minHealth = 10 -- Default poison values (not possible read condition parameters) local startValue = 5 @@ -100,20 +100,20 @@ function fluid.onUse(player, item, fromPosition, target, toPosition, isHotkey) end if target.itemid == 26076 then if item.type == 0 then - player:sendTextMessage(MESSAGE_FAILURE, 'It is empty.') + player:sendTextMessage(MESSAGE_FAILURE, "It is empty.") elseif item.type == 1 then toPosition:sendMagicEffect(CONST_ME_WATER_SPLASH) target:transform(target.itemid + 1) item:transform(item.itemid, 0) else - player:sendTextMessage(MESSAGE_FAILURE, 'You need water.') + player:sendTextMessage(MESSAGE_FAILURE, "You need water.") end return true end if target.itemid == 1 then if item.type == 0 then - player:sendTextMessage(MESSAGE_FAILURE, 'It is empty.') + player:sendTextMessage(MESSAGE_FAILURE, "It is empty.") elseif target.uid == player.uid then if table.contains({ 2, 3, 16 }, item.type) then player:addCondition(drunk) @@ -132,7 +132,7 @@ function fluid.onUse(player, item, fromPosition, target, toPosition, isHotkey) fromPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE) end - player:say(fluidMessage[item.type] or 'Gulp.', TALKTYPE_MONSTER_SAY) + player:say(fluidMessage[item.type] or "Gulp.", TALKTYPE_MONSTER_SAY) item:transform(item.itemid, 0) else local pool = Game.createItem(2886, item.type, toPosition) @@ -149,7 +149,7 @@ function fluid.onUse(player, item, fromPosition, target, toPosition, isHotkey) if fluidSource ~= 0 then item:transform(item.itemid, fluidSource) elseif item.type == 0 then - player:sendTextMessage(MESSAGE_FAILURE, 'It is empty.') + player:sendTextMessage(MESSAGE_FAILURE, "It is empty.") else if item.type == 5 and target.actionid == 2023 then toPosition.y = toPosition.y + 1 diff --git a/data-otservbr-global/scripts/actions/other/food.lua b/data-otservbr-global/scripts/actions/other/food.lua index a7aa664d159..3c6b5290fed 100644 --- a/data-otservbr-global/scripts/actions/other/food.lua +++ b/data-otservbr-global/scripts/actions/other/food.lua @@ -1,126 +1,126 @@ local foods = { - [3606] = { 6, 'Gulp.' }, -- egg - [3250] = { 5, 'Crunch.' }, -- carrot - [3577] = { 15, 'Munch.' }, -- meat - [21145] = { 15, 'Burp.' }, -- bottle of glooth wine - [21144] = { 15, 'Slurp.' }, -- bowl of glooth soup - [21143] = { 10, 'Munch.' }, -- bowl of glooth soup - [3578] = { 12, 'Munch.' }, -- fish - [3579] = { 10, 'Mmmm.' }, -- salmon - [23535] = { 30, 'Mmmm.' }, -- energy bar - [23545] = { 30, 'Mmmm.' }, -- energy drink - [3580] = { 17, 'Munch.' }, -- northern pike - [3581] = { 4, 'Gulp.' }, -- shrimp - [3582] = { 30, 'Chomp.' }, -- ham - [3583] = { 60, 'Chomp.' }, -- dragon ham - [3584] = { 5, 'Yum.' }, -- pear - [3585] = { 6, 'Yum.' }, -- red apple - [3586] = { 13, 'Yum.' }, -- orange - [3587] = { 8, 'Yum.' }, -- banana - [3588] = { 1, 'Yum.' }, -- blueberry - [3589] = { 18, 'Slurp.' }, -- coconut - [3590] = { 1, 'Yum.' }, -- cherry - [3591] = { 2, 'Yum.' }, -- strawberry - [3592] = { 9, 'Yum.' }, -- grapes - [904] = { 9, 'Hum.' }, -- cream cake - [3593] = { 20, 'Yum.' }, -- melon - [3594] = { 17, 'Munch.' }, -- pumpkin - [3595] = { 5, 'Crunch.' }, -- carrot - [3596] = { 6, 'Munch.' }, -- tomato - [3597] = { 9, 'Crunch.' }, -- corncob - [3598] = { 2, 'Crunch.' }, -- cookie - [3599] = { 2, 'Munch.' }, -- candy cane - [3600] = { 10, 'Crunch.' }, -- bread - [3601] = { 3, 'Crunch.' }, -- roll - [3602] = { 8, 'Crunch.' }, -- brown bread - [3607] = { 9, 'Smack.' }, -- cheese - [3723] = { 9, 'Munch.' }, -- white mushroom - [3724] = { 4, 'Munch.' }, -- red mushroom - [3725] = { 22, 'Munch.' }, -- brown mushroom - [3726] = { 30, 'Munch.' }, -- orange mushroom - [3727] = { 9, 'Munch.' }, -- wood mushroom - [3728] = { 6, 'Munch.' }, -- dark mushroom - [3729] = { 12, 'Munch.' }, -- some mushrooms - [3730] = { 3, 'Munch.' }, -- some mushrooms - [3731] = { 36, 'Munch.' }, -- fire mushroom - [3732] = { 5, 'Munch.' }, -- green mushroom - [5096] = { 4, 'Yum.' }, -- mango - [20310] = { 4, 'Mmmm.' }, -- christmas cookie tray - [5678] = { 8, 'Gulp.' }, -- tortoise egg - [6125] = { 8, 'Gulp.' }, -- tortoise egg from nargor - [6277] = { 10, 'Mmmm.' }, -- cake - [6278] = { 15, 'Mmmm.' }, -- decorated cake - [6392] = { 12, 'Mmmm.' }, -- valentine's cake - [6393] = { 15, 'Mmmm.' }, -- cream cake - [6500] = { 20, 'Mmmm.' }, -- gingerbread man - [6541] = { 6, 'Gulp.' }, -- coloured egg (yellow) - [6542] = { 6, 'Gulp.' }, -- coloured egg (red) - [6543] = { 6, 'Gulp.' }, -- coloured egg (blue) - [6544] = { 6, 'Gulp.' }, -- coloured egg (green) - [6545] = { 6, 'Gulp.' }, -- coloured egg (purple) - [6569] = { 1, 'Mmmm.' }, -- candy - [6574] = { 5, 'Mmmm.' }, -- bar of chocolate - [7158] = { 15, 'Munch.' }, -- rainbow trout - [7159] = { 13, 'Munch.' }, -- green perch - [229] = { 2, 'Yum.' }, -- ice cream cone (crispy chocolate chips) - [7373] = { 2, 'Yum.' }, -- ice cream cone (velvet vanilla) - [7374] = { 2, 'Yum.' }, -- ice cream cone (sweet strawberry) - [7375] = { 2, 'Yum.' }, -- ice cream cone (chilly cherry) - [7376] = { 2, 'Yum.' }, -- ice cream cone (mellow melon) - [7377] = { 2, 'Yum.' }, -- ice cream cone (blue-barian) - [836] = { 4, 'Crunch.' }, -- walnut - [841] = { 4, 'Crunch.' }, -- peanut - [901] = { 60, 'Munch.' }, -- marlin - [169] = { 9, 'Urgh.' }, -- scarab cheese - [8010] = { 10, 'Gulp.' }, -- potato - [8011] = { 5, 'Yum.' }, -- plum - [8012] = { 1, 'Yum.' }, -- raspberry - [8013] = { 1, 'Urgh.' }, -- lemon - [8014] = { 7, 'Munch.' }, -- cucumber - [8015] = { 5, 'Crunch.' }, -- onion - [8016] = { 1, 'Gulp.' }, -- jalapeño pepper - [8017] = { 5, 'Munch.' }, -- beetroot - [8019] = { 11, 'Yum.' }, -- chocolate cake - [8177] = { 7, 'Slurp.' }, -- yummy gummy worm - [8194] = { 0, 'Urgh.', CONST_ME_MAGIC_BLUE }, -- garlic bread - [8197] = { 5, 'Crunch.' }, -- bulb of garlic - [9537] = { 0, 'Your head begins to feel better.' }, -- headache pill - [10329] = { 15, 'Yum.' }, -- rice ball - [10453] = { 3, 'Urgh.' }, -- terramite eggs - [10219] = { 10, 'Mmmm.' }, -- crocodile steak - [11459] = { 20, 'Yum.' }, -- pineapple - [11460] = { 10, 'Munch.' }, -- aubergine - [11461] = { 8, 'Crunch.' }, -- broccoli - [11462] = { 9, 'Crunch.' }, -- cauliflower - [11681] = { 55, 'Gulp.' }, -- ectoplasmic sushi - [11682] = { 18, 'Yum.' }, -- dragonfruit - [11683] = { 2, 'Munch.' }, -- peas - [12310] = { 20, 'Crunch.' }, -- haunch of boar - [13992] = { 55, 'Munch.' }, -- sandfish - [14084] = { 14, 'Urgh.' }, -- larvae - [14085] = { 15, 'Munch.' }, -- deepling filet - [14681] = { 60, 'Mmmm.' }, -- anniversary cake - [15795] = { 0, 'Phew!' }, -- stale mushroom beer - [16103] = { 33, 'Munch.' }, -- mushroom pie - [17457] = { 10, 'Urgh.' }, -- insectoid eggs - [17820] = { 15, 'Smack.' }, -- soft cheese - [17821] = { 12, 'Smack.' }, -- rat cheese - [21146] = { 25, 'Chomp.' }, -- glooth steak - [22187] = { 25, 'Chomp.' }, -- Roasted Meat - [22185] = { 8, 'Yum.' }, -- pickle pear - [24382] = { 20, 'Urgh.' }, -- bug meat - [24383] = { 10, 'Gulp.' }, -- cave turnip - [24396] = { 60, 'Mmmm.' }, -- birthday cake - [24948] = { 10, 'Slurp.' }, -- bottle of tibian wine - [25692] = { 15, 'Mmmmm!' }, -- fresh fruit - [30198] = { 40, 'Mmmmm!' }, -- meringue cake - [30202] = { 15, 'Slurp.' }, -- winterberry liquor - [31560] = { 40, 'Slurp.' }, -- goanna meat - [32069] = { 15, 'Slurp.' }, -- candy floss - [37530] = { 10, 'Slurp.' }, -- bottle of champagne - [37531] = { 5, 'Mmmm.' }, -- candy floss - [37532] = { 15, 'Mmmm.' }, -- ice cream cone - [37533] = { 60, 'Mmmm.' } -- birthday layer cake + [3606] = { 6, "Gulp." }, -- egg + [3250] = { 5, "Crunch." }, -- carrot + [3577] = { 15, "Munch." }, -- meat + [21145] = { 15, "Burp." }, -- bottle of glooth wine + [21144] = { 15, "Slurp." }, -- bowl of glooth soup + [21143] = { 10, "Munch." }, -- bowl of glooth soup + [3578] = { 12, "Munch." }, -- fish + [3579] = { 10, "Mmmm." }, -- salmon + [23535] = { 30, "Mmmm." }, -- energy bar + [23545] = { 30, "Mmmm." }, -- energy drink + [3580] = { 17, "Munch." }, -- northern pike + [3581] = { 4, "Gulp." }, -- shrimp + [3582] = { 30, "Chomp." }, -- ham + [3583] = { 60, "Chomp." }, -- dragon ham + [3584] = { 5, "Yum." }, -- pear + [3585] = { 6, "Yum." }, -- red apple + [3586] = { 13, "Yum." }, -- orange + [3587] = { 8, "Yum." }, -- banana + [3588] = { 1, "Yum." }, -- blueberry + [3589] = { 18, "Slurp." }, -- coconut + [3590] = { 1, "Yum." }, -- cherry + [3591] = { 2, "Yum." }, -- strawberry + [3592] = { 9, "Yum." }, -- grapes + [904] = { 9, "Hum." }, -- cream cake + [3593] = { 20, "Yum." }, -- melon + [3594] = { 17, "Munch." }, -- pumpkin + [3595] = { 5, "Crunch." }, -- carrot + [3596] = { 6, "Munch." }, -- tomato + [3597] = { 9, "Crunch." }, -- corncob + [3598] = { 2, "Crunch." }, -- cookie + [3599] = { 2, "Munch." }, -- candy cane + [3600] = { 10, "Crunch." }, -- bread + [3601] = { 3, "Crunch." }, -- roll + [3602] = { 8, "Crunch." }, -- brown bread + [3607] = { 9, "Smack." }, -- cheese + [3723] = { 9, "Munch." }, -- white mushroom + [3724] = { 4, "Munch." }, -- red mushroom + [3725] = { 22, "Munch." }, -- brown mushroom + [3726] = { 30, "Munch." }, -- orange mushroom + [3727] = { 9, "Munch." }, -- wood mushroom + [3728] = { 6, "Munch." }, -- dark mushroom + [3729] = { 12, "Munch." }, -- some mushrooms + [3730] = { 3, "Munch." }, -- some mushrooms + [3731] = { 36, "Munch." }, -- fire mushroom + [3732] = { 5, "Munch." }, -- green mushroom + [5096] = { 4, "Yum." }, -- mango + [20310] = { 4, "Mmmm." }, -- christmas cookie tray + [5678] = { 8, "Gulp." }, -- tortoise egg + [6125] = { 8, "Gulp." }, -- tortoise egg from nargor + [6277] = { 10, "Mmmm." }, -- cake + [6278] = { 15, "Mmmm." }, -- decorated cake + [6392] = { 12, "Mmmm." }, -- valentine's cake + [6393] = { 15, "Mmmm." }, -- cream cake + [6500] = { 20, "Mmmm." }, -- gingerbread man + [6541] = { 6, "Gulp." }, -- coloured egg (yellow) + [6542] = { 6, "Gulp." }, -- coloured egg (red) + [6543] = { 6, "Gulp." }, -- coloured egg (blue) + [6544] = { 6, "Gulp." }, -- coloured egg (green) + [6545] = { 6, "Gulp." }, -- coloured egg (purple) + [6569] = { 1, "Mmmm." }, -- candy + [6574] = { 5, "Mmmm." }, -- bar of chocolate + [7158] = { 15, "Munch." }, -- rainbow trout + [7159] = { 13, "Munch." }, -- green perch + [229] = { 2, "Yum." }, -- ice cream cone (crispy chocolate chips) + [7373] = { 2, "Yum." }, -- ice cream cone (velvet vanilla) + [7374] = { 2, "Yum." }, -- ice cream cone (sweet strawberry) + [7375] = { 2, "Yum." }, -- ice cream cone (chilly cherry) + [7376] = { 2, "Yum." }, -- ice cream cone (mellow melon) + [7377] = { 2, "Yum." }, -- ice cream cone (blue-barian) + [836] = { 4, "Crunch." }, -- walnut + [841] = { 4, "Crunch." }, -- peanut + [901] = { 60, "Munch." }, -- marlin + [169] = { 9, "Urgh." }, -- scarab cheese + [8010] = { 10, "Gulp." }, -- potato + [8011] = { 5, "Yum." }, -- plum + [8012] = { 1, "Yum." }, -- raspberry + [8013] = { 1, "Urgh." }, -- lemon + [8014] = { 7, "Munch." }, -- cucumber + [8015] = { 5, "Crunch." }, -- onion + [8016] = { 1, "Gulp." }, -- jalapeño pepper + [8017] = { 5, "Munch." }, -- beetroot + [8019] = { 11, "Yum." }, -- chocolate cake + [8177] = { 7, "Slurp." }, -- yummy gummy worm + [8194] = { 0, "Urgh.", CONST_ME_MAGIC_BLUE }, -- garlic bread + [8197] = { 5, "Crunch." }, -- bulb of garlic + [9537] = { 0, "Your head begins to feel better." }, -- headache pill + [10329] = { 15, "Yum." }, -- rice ball + [10453] = { 3, "Urgh." }, -- terramite eggs + [10219] = { 10, "Mmmm." }, -- crocodile steak + [11459] = { 20, "Yum." }, -- pineapple + [11460] = { 10, "Munch." }, -- aubergine + [11461] = { 8, "Crunch." }, -- broccoli + [11462] = { 9, "Crunch." }, -- cauliflower + [11681] = { 55, "Gulp." }, -- ectoplasmic sushi + [11682] = { 18, "Yum." }, -- dragonfruit + [11683] = { 2, "Munch." }, -- peas + [12310] = { 20, "Crunch." }, -- haunch of boar + [13992] = { 55, "Munch." }, -- sandfish + [14084] = { 14, "Urgh." }, -- larvae + [14085] = { 15, "Munch." }, -- deepling filet + [14681] = { 60, "Mmmm." }, -- anniversary cake + [15795] = { 0, "Phew!" }, -- stale mushroom beer + [16103] = { 33, "Munch." }, -- mushroom pie + [17457] = { 10, "Urgh." }, -- insectoid eggs + [17820] = { 15, "Smack." }, -- soft cheese + [17821] = { 12, "Smack." }, -- rat cheese + [21146] = { 25, "Chomp." }, -- glooth steak + [22187] = { 25, "Chomp." }, -- Roasted Meat + [22185] = { 8, "Yum." }, -- pickle pear + [24382] = { 20, "Urgh." }, -- bug meat + [24383] = { 10, "Gulp." }, -- cave turnip + [24396] = { 60, "Mmmm." }, -- birthday cake + [24948] = { 10, "Slurp." }, -- bottle of tibian wine + [25692] = { 15, "Mmmmm!" }, -- fresh fruit + [30198] = { 40, "Mmmmm!" }, -- meringue cake + [30202] = { 15, "Slurp." }, -- winterberry liquor + [31560] = { 40, "Slurp." }, -- goanna meat + [32069] = { 15, "Slurp." }, -- candy floss + [37530] = { 10, "Slurp." }, -- bottle of champagne + [37531] = { 5, "Mmmm." }, -- candy floss + [37532] = { 15, "Mmmm." }, -- ice cream cone + [37533] = { 60, "Mmmm." }, -- birthday layer cake } local food = Action() diff --git a/data-otservbr-global/scripts/actions/other/gems.lua b/data-otservbr-global/scripts/actions/other/gems.lua index 86877c471ce..19441552c2c 100644 --- a/data-otservbr-global/scripts/actions/other/gems.lua +++ b/data-otservbr-global/scripts/actions/other/gems.lua @@ -8,28 +8,28 @@ local shrine = { targetAction = 15001, -- shrinePosition = {x = 32194, y = 31418, z = 2}, -- read-only destination = { x = 33430, y = 32278, z = 7 }, - effect = CONST_ME_ICEATTACK + effect = CONST_ME_ICEATTACK, }, -- fire shrine [3030] = { targetAction = 15002, -- shrinePosition = {x = 32910, y = 32338, z = 15}, -- read-only destination = { x = 33586, y = 32263, z = 7 }, - effect = CONST_ME_MAGIC_RED + effect = CONST_ME_MAGIC_RED, }, -- earth shrine [3032] = { targetAction = 15003, -- shrinePosition = {x = 32973, y = 32225, z = 7}, -- read-only destination = { x = 33539, y = 32209, z = 7 }, - effect = CONST_ME_SMALLPLANTS + effect = CONST_ME_SMALLPLANTS, }, [3033] = { targetAction = 15004, -- shrinePosition = {x = 33060, y = 32713, z = 5}, -- read-only destination = { x = 33527, y = 32301, z = 4 }, - effect = CONST_ME_ENERGYHIT - } + effect = CONST_ME_ENERGYHIT, + }, } local lionsRock = { @@ -41,7 +41,7 @@ local lionsRock = { item = 3030, fieldId = 2123, message = "You place the ruby on the small socket. A red flame begins to burn.", - effect = CONST_ME_MAGIC_RED + effect = CONST_ME_MAGIC_RED, }, [25007] = { itemId = 21442, @@ -51,7 +51,7 @@ local lionsRock = { item = 3029, fieldId = 21463, message = "You place the sapphire on the small socket. A blue flame begins to burn.", - effect = CONST_ME_MAGIC_BLUE + effect = CONST_ME_MAGIC_BLUE, }, [25008] = { itemId = 21440, @@ -61,7 +61,7 @@ local lionsRock = { item = 3033, fieldId = 7465, message = "You place the amethyst on the small socket. A violet flame begins to burn.", - effect = CONST_ME_PURPLESMOKE + effect = CONST_ME_PURPLESMOKE, }, [25009] = { itemId = 21437, @@ -71,17 +71,15 @@ local lionsRock = { item = 9057, fieldId = 21465, message = "You place the topaz on the small socket. A yellow flame begins to burn.", - effect = CONST_ME_BLOCKHIT - } + effect = CONST_ME_BLOCKHIT, + }, } local gems = Action() function gems.onUse(player, item, fromPosition, target, toPosition, isHotkey) -- Small emerald for Kilmaresh quest -- see data\scripts\quests\kilmaresh\1-fafnars-wrath\7-four-masks.lua - if item.itemid == 3032 and target.uid == 40032 - and player:getStorageValue(Storage.Kilmaresh.Sixth.Favor) >= 1 - and not testFlag(player:getStorageValue(Storage.Kilmaresh.Sixth.FourMasks), 4) then + if item.itemid == 3032 and target.uid == 40032 and player:getStorageValue(Storage.Kilmaresh.Sixth.Favor) >= 1 and not testFlag(player:getStorageValue(Storage.Kilmaresh.Sixth.FourMasks), 4) then player:addItem(31371, 1) -- Ivory mask item:remove(1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You hear a *click*. You can now lift the floor tile and discover a secret compartment. A mask made of ivory lies in it.") @@ -142,7 +140,7 @@ function gems.onUse(player, item, fromPosition, target, toPosition, isHotkey) if stone then stone:transform(lionsRockSanctuaryFountainId) lionsRockSanctuaryPos:sendMagicEffect(CONST_ME_THUNDER) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Something happens at the center of the room ...') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Something happens at the center of the room ...") player:setStorageValue(storage, 10) return true end diff --git a/data-otservbr-global/scripts/actions/other/gold_converter.lua b/data-otservbr-global/scripts/actions/other/gold_converter.lua index 403b38ca080..a26d7fa3e26 100644 --- a/data-otservbr-global/scripts/actions/other/gold_converter.lua +++ b/data-otservbr-global/scripts/actions/other/gold_converter.lua @@ -1,7 +1,7 @@ local config = { [ITEM_GOLD_COIN] = { changeTo = ITEM_PLATINUM_COIN }, [ITEM_PLATINUM_COIN] = { changeBack = ITEM_GOLD_COIN, changeTo = ITEM_CRYSTAL_COIN }, - [ITEM_CRYSTAL_COIN] = { changeBack = ITEM_PLATINUM_COIN } + [ITEM_CRYSTAL_COIN] = { changeBack = ITEM_PLATINUM_COIN }, } local goldConverter = Action() diff --git a/data-otservbr-global/scripts/actions/other/golden_outfit_display.lua b/data-otservbr-global/scripts/actions/other/golden_outfit_display.lua index 1698c823a03..d8bd03a7816 100644 --- a/data-otservbr-global/scripts/actions/other/golden_outfit_display.lua +++ b/data-otservbr-global/scripts/actions/other/golden_outfit_display.lua @@ -2,52 +2,52 @@ local goldenOutfitDisplay = Action() function goldenOutfitDisplay.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.OutfitQuest.GoldenOutfit) == 3 then - if (item:getId() == 31509) then --direita + if item:getId() == 31509 then --direita item:transform(31500) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31500) then + elseif item:getId() == 31500 then item:transform(31505) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31505) then + elseif item:getId() == 31505 then item:transform(31513) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31513) then + elseif item:getId() == 31513 then item:transform(31509) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31510) then --baixo + elseif item:getId() == 31510 then --baixo item:transform(31502) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31502) then + elseif item:getId() == 31502 then item:transform(31506) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31506) then + elseif item:getId() == 31506 then item:transform(31514) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31514) then + elseif item:getId() == 31514 then item:transform(31510) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31511) then --esquerda + elseif item:getId() == 31511 then --esquerda item:transform(31503) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31503) then + elseif item:getId() == 31503 then item:transform(31507) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31507) then + elseif item:getId() == 31507 then item:transform(31515) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31515) then + elseif item:getId() == 31515 then item:transform(31511) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31512) then --cima + elseif item:getId() == 31512 then --cima item:transform(31504) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31504) then + elseif item:getId() == 31504 then item:transform(31508) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31508) then + elseif item:getId() == 31508 then item:transform(31516) item:getPosition():sendMagicEffect(171) - elseif (item:getId() == 31516) then + elseif item:getId() == 31516 then item:transform(31512) item:getPosition():sendMagicEffect(171) end diff --git a/data-otservbr-global/scripts/actions/other/hireling_food.lua b/data-otservbr-global/scripts/actions/other/hireling_food.lua index bc2265b15a2..a7734b9d310 100644 --- a/data-otservbr-global/scripts/actions/other/hireling_food.lua +++ b/data-otservbr-global/scripts/actions/other/hireling_food.lua @@ -1,6 +1,6 @@ local config = { storage = 19042, --use empty storage - exhaust = 600 --Exhaust is in seconds 600 equals 10min + exhaust = 600, --Exhaust is in seconds 600 equals 10min } local chilliConCarniphila = Condition(CONDITION_HASTE) @@ -31,48 +31,48 @@ local hirelingFood = Action() function hirelingFood.onUse(player, item, frompos, item2, topos) local cid = player:getId() - if (player:getStorageValue(config.storage) <= os.time()) then - if (item.itemid == 29408) then + if player:getStorageValue(config.storage) <= os.time() then + if item.itemid == 29408 then player:say("Chomp.", TALKTYPE_MONSTER_SAY) Creature(cid):addCondition(roastedWyvernWings) item:remove(1) player:setStorageValue(config.storage, os.time() + config.exhaust) - elseif (item.itemid == 29409) then + elseif item.itemid == 29409 then player:say("Yummm.", TALKTYPE_MONSTER_SAY) Creature(cid):addCondition(carrotPie) item:remove(1) player:setStorageValue(config.storage, os.time() + config.exhaust) - elseif (item.itemid == 29410) then + elseif item.itemid == 29410 then player:say("Munch.", TALKTYPE_MONSTER_SAY) Creature(cid):addCondition(tropicalMarinatedTiger) item:remove(1) player:setStorageValue(config.storage, os.time() + config.exhaust) - elseif (item.itemid == 29411) then + elseif item.itemid == 29411 then player:say("Munch.", TALKTYPE_MONSTER_SAY) Creature(cid):addCondition(delicatessenSalad) item:remove(1) player:setStorageValue(config.storage, os.time() + config.exhaust) - elseif (item.itemid == 29412) then + elseif item.itemid == 29412 then player:say("Yummm.", TALKTYPE_MONSTER_SAY) Creature(cid):addCondition(chilliConCarniphila) item:remove(1) player:setStorageValue(config.storage, os.time() + config.exhaust) - elseif (item.itemid == 29413) then + elseif item.itemid == 29413 then player:say("Mmmmm.", TALKTYPE_MONSTER_SAY) Creature(cid):addCondition(svargrondSalmonFilet) item:remove(1) player:setStorageValue(config.storage, os.time() + config.exhaust) - elseif (item.itemid == 29414) then + elseif item.itemid == 29414 then Creature(cid):addHealth(getCreatureMaxHealth(cid) * 0.3) player:say("Munch.", TALKTYPE_MONSTER_SAY) item:remove(1) player:setStorageValue(config.storage, os.time() + config.exhaust) - elseif (item.itemid == 29415) then + elseif item.itemid == 29415 then Creature(cid):addMana(Creature(cid):getMaxMana() * 0.3) player:say("Chomp.", TALKTYPE_MONSTER_SAY) item:remove(1) player:setStorageValue(config.storage, os.time() + config.exhaust) - elseif (item.itemid == 29416) then + elseif item.itemid == 29416 then player:say("Blurg.", TALKTYPE_MONSTER_SAY) item:remove(1) player:setStorageValue(config.storage, os.time() + config.exhaust) diff --git a/data-otservbr-global/scripts/actions/other/jean_pierre_food.lua b/data-otservbr-global/scripts/actions/other/jean_pierre_food.lua index c79621667ef..bdcdab405cf 100644 --- a/data-otservbr-global/scripts/actions/other/jean_pierre_food.lua +++ b/data-otservbr-global/scripts/actions/other/jean_pierre_food.lua @@ -1,8 +1,14 @@ local conditions = { - CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, - CONDITION_PARALYZE, CONDITION_DRUNK, CONDITION_DROWN, - CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED, - CONDITION_BLEEDING + CONDITION_POISON, + CONDITION_FIRE, + CONDITION_ENERGY, + CONDITION_PARALYZE, + CONDITION_DRUNK, + CONDITION_DROWN, + CONDITION_FREEZING, + CONDITION_DAZZLED, + CONDITION_CURSED, + CONDITION_BLEEDING, } local condition_shield = Condition(CONDITION_ATTRIBUTES) condition_shield:setParameter(CONDITION_PARAM_SUBID, 3) @@ -181,9 +187,9 @@ function jeanPierreFood.onUse(player, item, frompos, item2, topos) [12670] = 12669, [3086] = 3049, [3094] = 3091, - [3090] = 3053 + [3090] = 3053, } - if (ring.itemid == 0) then + if ring.itemid == 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "No ring equipped.") player:getPosition():sendMagicEffect(CONST_ME_POFF) return true diff --git a/data-otservbr-global/scripts/actions/other/magic_gold_converter.lua b/data-otservbr-global/scripts/actions/other/magic_gold_converter.lua index c3a1dc200bd..f64ab905e54 100644 --- a/data-otservbr-global/scripts/actions/other/magic_gold_converter.lua +++ b/data-otservbr-global/scripts/actions/other/magic_gold_converter.lua @@ -5,8 +5,8 @@ local data = { }, coins = { [ITEM_GOLD_COIN] = ITEM_PLATINUM_COIN, - [ITEM_PLATINUM_COIN] = ITEM_CRYSTAL_COIN - } + [ITEM_PLATINUM_COIN] = ITEM_CRYSTAL_COIN, + }, } local function finditem(self, cylinder, conv) diff --git a/data-otservbr-global/scripts/actions/other/magic_tree.lua b/data-otservbr-global/scripts/actions/other/magic_tree.lua index be443ed99ca..8f2d581e9bc 100644 --- a/data-otservbr-global/scripts/actions/other/magic_tree.lua +++ b/data-otservbr-global/scripts/actions/other/magic_tree.lua @@ -6,7 +6,7 @@ local itemInfos = { [26192] = { 26188, 29428 }, [26188] = { 26192, 29428 }, [26194] = { 26190, 29426 }, - [26190] = { 26194, 29426 } + [26190] = { 26194, 29426 }, } local storageValues = {} @@ -15,7 +15,7 @@ local exhaustDelaySeconds = 1 local magicTree = Action() function magicTree.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if (fromPosition.x == CONTAINER_POSITION) then + if fromPosition.x == CONTAINER_POSITION then return false end diff --git a/data-otservbr-global/scripts/actions/other/muck_remover.lua b/data-otservbr-global/scripts/actions/other/muck_remover.lua index 337490ca7cf..606e8912ce0 100644 --- a/data-otservbr-global/scripts/actions/other/muck_remover.lua +++ b/data-otservbr-global/scripts/actions/other/muck_remover.lua @@ -7,7 +7,7 @@ local config = { { from = 7673, to = 9083, itemId = 16119, count = 10 }, { from = 9084, to = 9577, itemId = 3333 }, { from = 9578, to = 9873, itemId = 8050 }, - { from = 9874, to = 9999, itemId = 16160 } + { from = 9874, to = 9999, itemId = 16160 }, } local muckRemover = Action() diff --git a/data-otservbr-global/scripts/actions/other/music.lua b/data-otservbr-global/scripts/actions/other/music.lua index f4ff8d37434..519a36e1f81 100644 --- a/data-otservbr-global/scripts/actions/other/music.lua +++ b/data-otservbr-global/scripts/actions/other/music.lua @@ -37,9 +37,7 @@ function music.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 2949 then if isInRange(player:getPosition(), Position(32695, 31717, 2), Position(32699, 31719, 2)) then local lyreProgress = player:getStorageValue(Storage.Diapason.Lyre) - if lyreProgress < 7 - and player:getStorageValue(Storage.Diapason.Edala) ~= 1 - and player:getStorageValue(Storage.Diapason.LyreTimer) < os.time() then + if lyreProgress < 7 and player:getStorageValue(Storage.Diapason.Edala) ~= 1 and player:getStorageValue(Storage.Diapason.LyreTimer) < os.time() then player:setStorageValue(Storage.Diapason.Lyre, math.max(0, lyreProgress) + 1) player:setStorageValue(Storage.Diapason.Edala, 1) player:setStorageValue(Storage.Diapason.LyreTimer, os.time() + 86400) @@ -62,7 +60,7 @@ function music.onUse(player, item, fromPosition, target, toPosition, isHotkey) end end - player:addAchievementProgress('Rockstar', 10000) + player:addAchievementProgress("Rockstar", 10000) item:getPosition():sendMagicEffect(MusicEffect[item.itemid]) return true end diff --git a/data-otservbr-global/scripts/actions/other/offline_training.lua b/data-otservbr-global/scripts/actions/other/offline_training.lua index 45c4e78d963..d205feb6b2f 100644 --- a/data-otservbr-global/scripts/actions/other/offline_training.lua +++ b/data-otservbr-global/scripts/actions/other/offline_training.lua @@ -3,7 +3,7 @@ local statues = { [16199] = SKILL_AXE, [16200] = SKILL_CLUB, [16201] = SKILL_DISTANCE, - [16202] = SKILL_MAGLEVEL + [16202] = SKILL_MAGLEVEL, } local offlineTraining = Action() diff --git a/data-otservbr-global/scripts/actions/other/offline_training_book.lua b/data-otservbr-global/scripts/actions/other/offline_training_book.lua index e16875dfaab..167245cda7a 100644 --- a/data-otservbr-global/scripts/actions/other/offline_training_book.lua +++ b/data-otservbr-global/scripts/actions/other/offline_training_book.lua @@ -1,5 +1,5 @@ local text = -"Information on Offline Training:\n 1. You need to have a Premium account in order to train here.\n 2. Choose a skill you'd like to train. Shielding is ALWAYS included.\n 3. If you're not sure which statue trains what, read the inscriptions.\n 4. Use a statue to be logged out of the game and train the skills associated with that statue.\n 5. When you log back into the game, your skills will have improved depending on how long you trained.\n 6. You have to be logged out of the game for at least 10 minutes in order for the training to take effect.\n 7. After 12 hours of constant offline training, your skills will not improve any further. Similar to stamina, your training bar will regenerate if you are not training offline." + "Information on Offline Training:\n 1. You need to have a Premium account in order to train here.\n 2. Choose a skill you'd like to train. Shielding is ALWAYS included.\n 3. If you're not sure which statue trains what, read the inscriptions.\n 4. Use a statue to be logged out of the game and train the skills associated with that statue.\n 5. When you log back into the game, your skills will have improved depending on how long you trained.\n 6. You have to be logged out of the game for at least 10 minutes in order for the training to take effect.\n 7. After 12 hours of constant offline training, your skills will not improve any further. Similar to stamina, your training bar will regenerate if you are not training offline." local offlineTrainingBook = Action() diff --git a/data-otservbr-global/scripts/actions/other/ore_wagon.lua b/data-otservbr-global/scripts/actions/other/ore_wagon.lua index bdea126b256..40e8c988610 100644 --- a/data-otservbr-global/scripts/actions/other/ore_wagon.lua +++ b/data-otservbr-global/scripts/actions/other/ore_wagon.lua @@ -8,7 +8,7 @@ local config = { [1048] = { destination = Position(32494, 31831, 9) }, [1049] = { destination = Position(32514, 31805, 9) }, [1050] = { destination = Position(32497, 31805, 9) }, - [1051] = { destination = Position(32518, 31827, 9) } + [1051] = { destination = Position(32518, 31827, 9) }, } local oreWagon = Action() diff --git a/data-otservbr-global/scripts/actions/other/others/quest_system1.lua b/data-otservbr-global/scripts/actions/other/others/quest_system1.lua index 4033d2aee75..7fe74d5f729 100644 --- a/data-otservbr-global/scripts/actions/other/others/quest_system1.lua +++ b/data-otservbr-global/scripts/actions/other/others/quest_system1.lua @@ -11,22 +11,22 @@ local specialQuests = { -- {x = 32232, y = 31059, z = 7} [51716] = Storage.SvargrondArena.RewardScrapper, -- {x = 32232, y = 31052, z = 7} - [51717] = Storage.SvargrondArena.RewardWarlord + [51717] = Storage.SvargrondArena.RewardWarlord, } local questsExperience = { - [3101] = 1 -- dummy values + [3101] = 1, -- dummy values } local questLog = { - [8213] = Storage.HiddenCityOfBeregar.DefaultStart + [8213] = Storage.HiddenCityOfBeregar.DefaultStart, } local tutorialIds = { [50080] = 5, [50082] = 6, [50084] = 10, - [50086] = 11 + [50086] = 11, } local function copyContainerItem(originalContainer, newContainer) @@ -65,7 +65,7 @@ function questSystem1.onUse(player, item, fromPosition, target, toPosition, isHo end if player:getStorageValue(storage) > 0 and player:getGroup():getId() < GROUP_TYPE_GAMEMASTER then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The ' .. ItemType(item.itemid):getName() .. ' is empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The " .. ItemType(item.itemid):getName() .. " is empty.") return true end @@ -107,7 +107,7 @@ function questSystem1.onUse(player, item, fromPosition, target, toPosition, isHo if originalItem:isContainer() then copyContainerItem(Container(originalItem.uid), Container(newItem.uid)) end - items[#items+1] = newItem + items[#items + 1] = newItem end if size == 1 then @@ -115,15 +115,15 @@ function questSystem1.onUse(player, item, fromPosition, target, toPosition, isHo end end - local result = '' + local result = "" if reward then local ret = ItemType(reward.itemid) if ret:isRune() then - result = ret:getArticle() .. ' ' .. ret:getName() .. ' (' .. reward.type .. ' charges)' + result = ret:getArticle() .. " " .. ret:getName() .. " (" .. reward.type .. " charges)" elseif ret:isStackable() and reward:getCount() > 1 then - result = reward:getCount() .. ' ' .. ret:getPluralName() - elseif ret:getArticle() ~= '' then - result = ret:getArticle() .. ' ' .. ret:getName() + result = reward:getCount() .. " " .. ret:getPluralName() + elseif ret:getArticle() ~= "" then + result = ret:getArticle() .. " " .. ret:getName() else result = ret:getName() end @@ -143,15 +143,15 @@ function questSystem1.onUse(player, item, fromPosition, target, toPosition, isHo end end local ret = ItemType(reward.itemid) - result = ret:getArticle() .. ' ' .. ret:getName() + result = ret:getArticle() .. " " .. ret:getName() end if player:addItemEx(reward) ~= RETURNVALUE_NOERROR then local weight = reward:getWeight() if player:getFreeCapacity() < weight then - player:sendCancelMessage(string.format('You have found %s weighing %.2f oz. You have no capacity.', result, (weight / 100))) + player:sendCancelMessage(string.format("You have found %s weighing %.2f oz. You have no capacity.", result, (weight / 100))) else - player:sendCancelMessage('You have found ' .. result .. ', but you have no room to take it.') + player:sendCancelMessage("You have found " .. result .. ", but you have no room to take it.") end return true end @@ -177,7 +177,7 @@ function questSystem1.onUse(player, item, fromPosition, target, toPosition, isHo end end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found ' .. result .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found " .. result .. ".") player:setStorageValue(storage, 1) return true end diff --git a/data-otservbr-global/scripts/actions/other/others/quest_system2.lua b/data-otservbr-global/scripts/actions/other/others/quest_system2.lua index 8f055cae74c..42fc5bb8ab8 100644 --- a/data-otservbr-global/scripts/actions/other/others/quest_system2.lua +++ b/data-otservbr-global/scripts/actions/other/others/quest_system2.lua @@ -1,283 +1,285 @@ local config = { [2285] = { items = { - { itemId = 3243 } + { itemId = 3243 }, }, storage = Storage.DjinnWar.EfreetFaction.Mission03, formerValue = 1, newValue = 2, needItem = { itemId = 3231 }, - effect = CONST_ME_MAGIC_BLUE + effect = CONST_ME_MAGIC_BLUE, }, [2286] = { items = { - { itemId = 3205 } + { itemId = 3205 }, }, - storage = Storage.QuestChests.FamilyBrooch + storage = Storage.QuestChests.FamilyBrooch, }, [3002] = { items = { - { itemId = 3030, count = 6 } + { itemId = 3030, count = 6 }, }, - storage = Storage.QuestChests.SixRubiesQuest + storage = Storage.QuestChests.SixRubiesQuest, }, [3018] = { items = { - { itemId = 3219 } + { itemId = 3219 }, }, storage = Storage.Postman.Mission08, formerValue = 1, - newValue = 2 + newValue = 2, }, [3020] = { items = { - { itemId = 145 } + { itemId = 145 }, }, storage = Storage.TravellingTrader.Mission02, formerValue = 3, - newValue = 4 + newValue = 4, }, [3024] = { items = { - { itemId = 3243 } + { itemId = 3243 }, }, storage = Storage.DjinnWar.MaridFaction.Mission03, formerValue = 1, newValue = 2, needItem = { itemId = 3231 }, - effect = CONST_ME_MAGIC_RED + effect = CONST_ME_MAGIC_RED, }, [3062] = { items = { - { itemId = 7528 } + { itemId = 7528 }, }, - storage = Storage.QuestChests.KosheiAmulet1 + storage = Storage.QuestChests.KosheiAmulet1, }, [3064] = { items = { - { itemId = 7530 } + { itemId = 7530 }, }, - storage = Storage.QuestChests.KosheiAmulet2 + storage = Storage.QuestChests.KosheiAmulet2, }, [3084] = { items = { - { itemId = 8829 } + { itemId = 8829 }, }, - storage = Storage.InServiceofYalahar.MatrixReward + storage = Storage.InServiceofYalahar.MatrixReward, }, [3085] = { items = { - { itemId = 8828 } + { itemId = 8828 }, }, - storage = Storage.InServiceofYalahar.MatrixReward + storage = Storage.InServiceofYalahar.MatrixReward, }, [3112] = { items = { - { itemId = 2820, text = ' Tylaf, apprentice of Hjaern' } + { itemId = 2820, text = " Tylaf, apprentice of Hjaern" }, }, storage = Storage.TheIceIslands.Questline, formerValue = 35, newValue = 36, - missionStorage = { key = Storage.TheIceIslands.Mission09, value = 2 } + missionStorage = { key = Storage.TheIceIslands.Mission09, value = 2 }, }, [3116] = { items = { - { itemId = 3217 } + { itemId = 3217 }, }, storage = Storage.Postman.Mission09, formerValue = 1, - newValue = 2 + newValue = 2, }, [3120] = { items = { - { itemId = 3218 } + { itemId = 3218 }, }, storage = Storage.Postman.Mission05, formerValue = 1, - newValue = 2 + newValue = 2, }, [3162] = { items = { - { itemId = 637 } + { itemId = 637 }, }, storage = Storage.ChildrenoftheRevolution.Questline, formerValue = 1, newValue = 2, - say = 'A batch of documents has been stashed in the shelf. These might be of interest to Zalamon.', - effect = CONST_ME_POFF + say = "A batch of documents has been stashed in the shelf. These might be of interest to Zalamon.", + effect = CONST_ME_POFF, }, [3311] = { items = { - { itemId = 2970, actionId = 3301 } + { itemId = 2970, actionId = 3301 }, }, - storage = Storage.QuestChests.OutlawCampKey1 + storage = Storage.QuestChests.OutlawCampKey1, }, [3312] = { items = { - { itemId = 2969, actionId = 3302 } + { itemId = 2969, actionId = 3302 }, }, - storage = Storage.QuestChests.OutlawCampKey2 + storage = Storage.QuestChests.OutlawCampKey2, }, [3313] = { items = { - { itemId = 2970, actionId = 3303 } + { itemId = 2970, actionId = 3303 }, }, - storage = Storage.QuestChests.OutlawCampKey3 + storage = Storage.QuestChests.OutlawCampKey3, }, [4010] = { items = { - { itemId = 4832 } + { itemId = 4832 }, }, - storage = Storage.TheApeCity.HolyApeHair + storage = Storage.TheApeCity.HolyApeHair, }, [5556] = { items = { - { itemId = 3357 } + { itemId = 3357 }, }, - storage = Storage.GhostShipQuest + storage = Storage.GhostShipQuest, }, [9136] = { items = { - { itemId = 2972, actionId = 3980 } + { itemId = 2972, actionId = 3980 }, }, - storage = Storage.QuestChests.DeeperFibulaKey + storage = Storage.QuestChests.DeeperFibulaKey, }, [9185] = { items = { - { itemId = 3017 }, { itemId = 3030, count = 2 }, { itemId = 3028, count = 3 } + { itemId = 3017 }, + { itemId = 3030, count = 2 }, + { itemId = 3028, count = 3 }, }, - storage = Storage.QuestChests.SilverBrooch + storage = Storage.QuestChests.SilverBrooch, }, [9226] = { items = { - { itemId = 3397 } + { itemId = 3397 }, }, storage = Storage.SamsOldBackpack, formerValue = 2, - newValue = 3 + newValue = 3, }, [9255] = { items = { - { itemId = 4839 } + { itemId = 4839 }, }, - storage = Storage.HydraEggQuest + storage = Storage.HydraEggQuest, }, [9256] = { items = { - { itemId = 4829, decay = true } + { itemId = 4829, decay = true }, }, storage = Storage.TheApeCity.WitchesCapSpot, - time = true + time = true, }, [9259] = { items = { - { itemId = 10159 } + { itemId = 10159 }, }, storage = Storage.UnnaturalSelection.Mission01, formerValue = 1, newValue = 2, - say = 'You dig out a skull from the pile of bones. That must be the skull Lazaran talked about.' + say = "You dig out a skull from the pile of bones. That must be the skull Lazaran talked about.", }, [9266] = { items = { - { itemId = 7936 } + { itemId = 7936 }, }, storage = Storage.ThievesGuild.Mission06, formerValue = 2, newValue = 3, - say = 'To buy some time you replace the fish with a piece of carrot.' + say = "To buy some time you replace the fish with a piece of carrot.", }, [9277] = { items = { - { itemId = 652 } + { itemId = 652 }, }, - storage = Storage.SecretService.RottenTree + storage = Storage.SecretService.RottenTree, }, [50032] = { items = { - { itemId = 3734 } + { itemId = 3734 }, }, - storage = Storage.BloodHerbQuest + storage = Storage.BloodHerbQuest, }, [50112] = { items = { - { itemId = 3725, count = 10 } + { itemId = 3725, count = 10 }, }, - storage = Storage.HiddenCityOfBeregar.BrownMushrooms + storage = Storage.HiddenCityOfBeregar.BrownMushrooms, }, [50125] = { items = { - { itemId = 8777 } + { itemId = 8777 }, }, storage = Storage.HiddenCityOfBeregar.JusticeForAll, formerValue = 3, - newValue = 4 + newValue = 4, }, [65201] = { items = { - { itemId = 2968, actionId = 3980 } + { itemId = 2968, actionId = 3980 }, }, - storage = 857440 + storage = 857440, }, [65202] = { items = { - { itemId = 2969, actionId = 3610 } + { itemId = 2969, actionId = 3610 }, }, - storage = 857441 + storage = 857441, }, [65204] = { items = { - { itemId = 3269, count = 1 } + { itemId = 3269, count = 1 }, }, - storage = 857442 + storage = 857442, }, [65205] = { items = { - { itemId = 3356, count = 1 } + { itemId = 3356, count = 1 }, }, - storage = 857443 + storage = 857443, }, [65206] = { items = { - { itemId = 3029, count = 4 } + { itemId = 3029, count = 4 }, }, - storage = 857444 + storage = 857444, }, [65207] = { items = { - { itemId = 3551, count = 1 } + { itemId = 3551, count = 1 }, }, - storage = 857445 + storage = 857445, }, [65208] = { items = { - { itemId = 3377, count = 1 } + { itemId = 3377, count = 1 }, }, - storage = 857446 + storage = 857446, }, [65209] = { items = { - { itemId = 3054, count = 1 } + { itemId = 3054, count = 1 }, }, - storage = 857447 + storage = 857447, }, [65210] = { items = { - { itemId = 3147, count = 3 } + { itemId = 3147, count = 3 }, }, - storage = 857448 + storage = 857448, }, [65211] = { items = { - { itemId = 3028, count = 1 } + { itemId = 3028, count = 1 }, }, - storage = 857449 + storage = 857449, }, [65212] = { items = { - { itemId = 2969, actionId = 3667 } + { itemId = 2969, actionId = 3667 }, }, - storage = 857450 + storage = 857450, }, [14037] = { items = { @@ -289,7 +291,7 @@ History of the Augur, Part II They brought more and more people to Yalahar. Not all of them became Augur, a good part of them lived in Yalahar as ordinary citizens. At some point, the city had reached a much larger population than under the rule of the true Yalahari, and it became difficult to provide food and shelter for everyone. Time and overuse took it's toll on the city. Over the years, more and more parts of the city were lost due to ignorance, lack of resources, or catastrophes. The new Yalahari were unable to restore broken machines and devices, and their efforts to retake certain parts of the city with the help of the Augur caused only more disaster. So the new Yalahari decided to stay in the city's centre, letting the Augur care for the rest of the city as well as they could. Still, their image as Yalahari allowed them to claim supremacy and to rule over the whole city. This all did not matter too much to our ancestors. The new Yalahari were neither cruel nor overly abusive, and they still wielded the powerful weapons and armors of the true Yalahari. So they stuck to the status quo and continued to work for the Yalahari despite everything they had found out. This worked quite well although the city was still declining and great parts of it had been lost to chaos and anarchy. Lately, though, things started to change. It is not a dramatic change but it can be recognised gradually at many places. Some of the known routines in the orders of the Yalahari have altered. There are more and more orders who have a dubious purpose. The most frightening thing is that some orders obviously hint at a person with Yalahari knowledge that had been considered as lost for centuries. The overwhelming majority of the new Yalahari still clings to their ignorant and self-centred ways, but perhaps one of them or a small group has discovered some hidden secrets of their vanished masters. It is also possible that something completely different is happening, we simply don't know. But these new orders that seem to aim at restoring order in the city have some bitter taste. They are somewhat oppressive and destructive, not in an obvious way, though. Taken together, they paint a dark picture of Yalahar's future. A future of oppression, betrayal, and a much stricter rule by the Yalahari.]], - name = "History of the Augur, Part II" + name = "History of the Augur, Part II", }, { itemId = 2820, @@ -301,12 +303,12 @@ We, the families of the Augur, have been living here for many generations. In th Some decades ago, a group of Augur suspected that we all were lied to by our masters. They started to look for clues that proved their assumptions, and secretly gathered parts of the puzzle one by one. For all we know, there had been indeed a powerful race called the Yalahari that built this city to distance itself from the wars of some capricious gods. So far the tales that our masters had told us, have been true. These Yalahari were served by a group of Augur such as us. They were their helpers and workers, and the Yalahari shared some of their luxuries and achievements with them. The Yalahari concentrated on research and art, and left the more manual work to their servants, who often only knew what they had to do without understanding their tasks. At one far-away point in history, the Yalahari seemingly vanished. Certain clues that our ancestors gathered, hint that they locked themselves in the city's centre and cut off all contact to their helpers. When the Augur sometime later dared to enter the inner city, the Yalahari were all gone - vanished without a trace. After getting over the initial shock, the Augur assumed the role of the Yalahari themselves. For a while they tried to get familiar with some of the secrets of their lost masters, but they were only able to understand the most basic concepts of the Yalahari's knowledge. They stuck to their usual tasks to keep the city running. Still, they were too few to keep the enormous city, of which they understood so little, in shape. So they decided to recruit Augur on their own. This way most of our forefathers came to Yalahar. In the meanwhile, the former Augur retreated into the inner city.]], - name = "History of the Augur, Part I" - } + name = "History of the Augur, Part I", + }, }, storage = Storage.InServiceofYalahar.NotesPalimuth, formerValue = 0, - newValue = 1 + newValue = 1, }, [14038] = { items = { @@ -320,7 +322,7 @@ It is obvious that such greatness comes not without sacrifices, but we will make Based on the ruins of our former glory, it is hard to imagine how magnificent this future will be, but we, the Yalahari, still carry the vision of what we want to accomplish in our hearts. To bring this vision to life is our greatest goal which we all work towards. There are elements that see their power and influence waning in these days of change. They are afraid of the things to come, and in their ignorance they cling to the rotting reality they know all too well. They created their own little niches of power and influence and feel guilty for neglecting their duties, and with that also for the decay of the city. They are surely already approaching unsuspecting outsiders to poison their minds with selfish lies. For generations the Augur, once the pride of our people, have done things the same way they had known for generations, and everyone can see where it has taken Yalahar.]], - name = "Manifest of the Yalahari, Part II" + name = "Manifest of the Yalahari, Part II", }, { itemId = 2820, @@ -332,12 +334,12 @@ The city has been neglected for far too long. We concentrated on our research an Only with drastic decisions and changes, this great goal can be achieved. We will have to get through hard times and prepare for them as good as we can. Most importantly, a good city needs a solid base. For this reason we have to start at the bottom to clean things up. We have to be precise and consequent in our decisions and actions. This way we will be able to create a solid base for the city. To some extent, we have to work like a gardener. The rotten parts have to be cut off, and the healthy parts have to be cherished. The city has to be retaken. Then order can be restored and the actual rebuilding can begin. In the end, the city will once again be a centre of prosperity and a shining light in a dark world.]], - name = "Manifest of the Yalahari, Part I" - } + name = "Manifest of the Yalahari, Part I", + }, }, storage = Storage.InServiceofYalahar.NotesAzerus, formerValue = 0, - newValue = 1 + newValue = 1, }, [14039] = { items = { @@ -345,7 +347,7 @@ To some extent, we have to work like a gardener. The rotten parts have to be cut }, storage = Storage.InServiceofYalahar.AlchemistFormula, formerValue = 0, - newValue = 1 + newValue = 1, }, [14040] = { items = { @@ -378,10 +380,10 @@ If you are no dwarf don't even try to think that you have a chance of mastering Yours Gromward Hammerfist]], - name = "Tunnelling Guide" - } + name = "Tunnelling Guide", + }, }, - storage = Storage.HiddenCityOfBeregar.TunnellingGuide + storage = Storage.HiddenCityOfBeregar.TunnellingGuide, }, [20003] = { items = { @@ -390,16 +392,16 @@ Gromward Hammerfist]], text = [[ The map shows the original floor plan of this mine. You recognise your position and that the shaft to the south actually would reach much further. -(In the lower right corner someone scribbled a note how to use the hoist on the first mine floor.)]] - } +(In the lower right corner someone scribbled a note how to use the hoist on the first mine floor.)]], + }, }, - storage = Storage.QuestChests.FormorgarMinesHoistSkeleton + storage = Storage.QuestChests.FormorgarMinesHoistSkeleton, }, [20004] = { items = { - { itemId = 3266 } + { itemId = 3266 }, }, - storage = Storage.BattleAxeQuest + storage = Storage.BattleAxeQuest, }, [14041] = { items = { @@ -413,10 +415,10 @@ This page seems to be part of a book about ancient rituals, mystic incantations ~ Stand in this sphere when drawing the symbol "Of Night And Day Intersecting Ostensum Est" ~ Utter all of the following words loudly with clear voice: CERTAGIA SALABANTHR DANNHE GENT'HO" ~ ~ Looking upward, repeat the incatation and you shall teleport the periphery of your body ~]], - name = "Falcon Bastion Access" - } + name = "Falcon Bastion Access", + }, }, - storage = Storage.TheSecretLibrary.FalconBastionAccess + storage = Storage.TheSecretLibrary.FalconBastionAccess, }, [20002] = { items = { @@ -455,11 +457,11 @@ Lion's Tears. It seems one has to purify an ornamented stone pedestal with ..." At this point the records end because the parchment is destroyed. It seems -that is was torn by a big paw ...]] - } +that is was torn by a big paw ...]], + }, }, - storage = Storage.LionsRock.OuterSanctum.Skeleton - } + storage = Storage.LionsRock.OuterSanctum.Skeleton, + }, -- 65203 reservado } @@ -471,9 +473,8 @@ function questSystem2.onUse(player, item, fromPosition, target, toPosition, isHo return true end - if (useItem.time and player:getStorageValue(useItem.storage) > os.time()) - or player:getStorageValue(useItem.storage) ~= (useItem.formerValue or -1) then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The ' .. ItemType(item.itemid):getName() .. ' is empty.') + if (useItem.time and player:getStorageValue(useItem.storage) > os.time()) or player:getStorageValue(useItem.storage) ~= (useItem.formerValue or -1) then + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The " .. ItemType(item.itemid):getName() .. " is empty.") return true end @@ -489,15 +490,15 @@ function questSystem2.onUse(player, item, fromPosition, target, toPosition, isHo reward = Game.createItem(items[1].itemId, items[1].count or 1) end - local result = '' + local result = "" if reward then local ret = ItemType(reward.itemid) if ret:isRune() then - result = ret:getArticle() .. ' ' .. ret:getName() .. ' (' .. reward.type .. ' charges)' + result = ret:getArticle() .. " " .. ret:getName() .. " (" .. reward.type .. " charges)" elseif reward:getCount() > 1 then - result = reward:getCount() .. ' ' .. ret:getPluralName() - elseif ret:getArticle() ~= '' then - result = ret:getArticle() .. ' ' .. ret:getName() + result = reward:getCount() .. " " .. ret:getPluralName() + elseif ret:getArticle() ~= "" then + result = ret:getArticle() .. " " .. ret:getName() else result = ret:getName() end @@ -547,15 +548,15 @@ function questSystem2.onUse(player, item, fromPosition, target, toPosition, isHo end end local ret = ItemType(reward.itemid) - result = ret:getArticle() .. ' ' .. ret:getName() + result = ret:getArticle() .. " " .. ret:getName() end if player:addItemEx(reward) ~= RETURNVALUE_NOERROR then local weight = reward:getWeight() if player:getFreeCapacity() < weight then - player:sendCancelMessage('You have found ' .. result .. '. Weighing ' .. string.format('%.2f', (weight / 100)) .. ' oz, it is too heavy.') + player:sendCancelMessage("You have found " .. result .. ". Weighing " .. string.format("%.2f", (weight / 100)) .. " oz, it is too heavy.") else - player:sendCancelMessage('You have found ' .. result .. ', but you have no room to take it.') + player:sendCancelMessage("You have found " .. result .. ", but you have no room to take it.") end return true end @@ -576,7 +577,7 @@ function questSystem2.onUse(player, item, fromPosition, target, toPosition, isHo player:setStorageValue(useItem.missionStorage.key, useItem.missionStorage.value) end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found ' .. result .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found " .. result .. ".") if useItem.time then player:setStorageValue(useItem.storage, os.time() + 86400) else diff --git a/data-otservbr-global/scripts/actions/other/party_hat.lua b/data-otservbr-global/scripts/actions/other/party_hat.lua index bb21601396a..0652786d737 100644 --- a/data-otservbr-global/scripts/actions/other/party_hat.lua +++ b/data-otservbr-global/scripts/actions/other/party_hat.lua @@ -3,7 +3,7 @@ local partyHat = Action() function partyHat.onUse(player, item, fromPosition, target, toPosition, isHotkey) local slot = player:getSlotItem(CONST_SLOT_HEAD) if slot and item.uid == slot.uid then - player:addAchievementProgress('Party Animal', 200) + player:addAchievementProgress("Party Animal", 200) player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) return true end diff --git a/data-otservbr-global/scripts/actions/other/piggy_bank.lua b/data-otservbr-global/scripts/actions/other/piggy_bank.lua index e1175009dcb..7cbd8aec9dc 100644 --- a/data-otservbr-global/scripts/actions/other/piggy_bank.lua +++ b/data-otservbr-global/scripts/actions/other/piggy_bank.lua @@ -6,7 +6,7 @@ function piggyBank.onUse(player, item, fromPosition, target, toPosition, isHotke item:transform(2996) player:addItem(ITEM_GOLD_COIN, 1) - player:addAchievementProgress('Allowance Collector', 50) + player:addAchievementProgress("Allowance Collector", 50) else fromPosition:sendMagicEffect(CONST_ME_SOUND_YELLOW) player:addItem(ITEM_PLATINUM_COIN, 1) diff --git a/data-otservbr-global/scripts/actions/other/potions.lua b/data-otservbr-global/scripts/actions/other/potions.lua index 6a699562b79..cfa76f441a4 100644 --- a/data-otservbr-global/scripts/actions/other/potions.lua +++ b/data-otservbr-global/scripts/actions/other/potions.lua @@ -36,42 +36,42 @@ end local potions = { [6558] = { transform = { - id = { 236, 237 } + id = { 236, 237 }, }, - effect = CONST_ME_DRAWBLOOD + effect = CONST_ME_DRAWBLOOD, }, [7439] = { vocations = { - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, }, condition = berserk, effect = CONST_ME_MAGIC_RED, description = "Only knights may drink this potion.", - text = "You feel stronger." + text = "You feel stronger.", }, [7440] = { vocations = { VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID + VOCATION.BASE_ID.DRUID, }, condition = mastermind, effect = CONST_ME_MAGIC_BLUE, description = "Only sorcerers and druids may drink this potion.", - text = "You feel smarter." + text = "You feel smarter.", }, [7443] = { vocations = { - VOCATION.BASE_ID.PALADIN + VOCATION.BASE_ID.PALADIN, }, condition = bullseye, effect = CONST_ME_MAGIC_GREEN, description = "Only paladins may drink this potion.", - text = "You feel more accurate." + text = "You feel more accurate.", }, [35563] = { vocations = { VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID + VOCATION.BASE_ID.DRUID, }, level = 14, func = magicshield, @@ -81,142 +81,142 @@ local potions = { [236] = { health = { 250, - 350 + 350, }, vocations = { VOCATION.BASE_ID.PALADIN, - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, }, level = 50, flask = 283, - description = "Only knights and paladins of level 50 or above may drink this fluid." + description = "Only knights and paladins of level 50 or above may drink this fluid.", }, [237] = { mana = { 115, - 185 + 185, }, level = 50, flask = 283, - description = "Only players of level 50 or above may drink this fluid." + description = "Only players of level 50 or above may drink this fluid.", }, [238] = { mana = { 150, - 250 + 250, }, vocations = { VOCATION.BASE_ID.SORCERER, VOCATION.BASE_ID.DRUID, - VOCATION.BASE_ID.PALADIN + VOCATION.BASE_ID.PALADIN, }, level = 80, flask = 284, - description = "Only sorcerers, druids and paladins of level 80 or above may drink this fluid." + description = "Only sorcerers, druids and paladins of level 80 or above may drink this fluid.", }, [239] = { health = { 425, - 575 + 575, }, vocations = { - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, }, level = 80, flask = 284, - description = "Only knights of level 80 or above may drink this fluid." + description = "Only knights of level 80 or above may drink this fluid.", }, [266] = { health = { 125, - 175 + 175, }, - flask = 285 + flask = 285, }, [268] = { mana = { 75, - 125 + 125, }, - flask = 285 + flask = 285, }, [7642] = { health = { 250, - 350 + 350, }, mana = { 100, - 200 + 200, }, vocations = { - VOCATION.BASE_ID.PALADIN + VOCATION.BASE_ID.PALADIN, }, level = 80, flask = 284, - description = "Only paladins of level 80 or above may drink this fluid." + description = "Only paladins of level 80 or above may drink this fluid.", }, [7643] = { health = { 650, 850 }, vocations = { - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, }, level = 130, flask = 284, - description = "Only knights of level 130 or above may drink this fluid." + description = "Only knights of level 130 or above may drink this fluid.", }, [7644] = { combat = antidote, - flask = 285 + flask = 285, }, [7876] = { health = { 60, - 90 + 90, }, - flask = 285 + flask = 285, }, [23373] = { mana = { 425, - 575 + 575, }, vocations = { VOCATION.BASE_ID.SORCERER, - VOCATION.BASE_ID.DRUID + VOCATION.BASE_ID.DRUID, }, level = 130, flask = 284, - description = "Only druids and sorcerers of level 130 or above may drink this fluid." + description = "Only druids and sorcerers of level 130 or above may drink this fluid.", }, [23374] = { health = { 420, - 580 + 580, }, mana = { 250, - 350 + 350, }, vocations = { - VOCATION.BASE_ID.PALADIN + VOCATION.BASE_ID.PALADIN, }, level = 130, flask = 284, - description = "Only paladins of level 130 or above may drink this fluid." + description = "Only paladins of level 130 or above may drink this fluid.", }, [23375] = { health = { 875, - 1125 + 1125, }, vocations = { - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, }, level = 200, flask = 284, - description = "Only knights of level 200 or above may drink this fluid." - } + description = "Only knights of level 200 or above may drink this fluid.", + }, } local flaskPotion = Action() @@ -263,7 +263,7 @@ function flaskPotion.onUse(player, item, fromPosition, target, toPosition, isHot target:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) end - player:addAchievementProgress('Potion Addict', 100000) + player:addAchievementProgress("Potion Addict", 100000) target:say("Aaaah...", MESSAGE_POTION) if fromPosition.x == CONTAINER_POSITION and not container == store_inbox then local container = Container(item:getParent().uid) diff --git a/data-otservbr-global/scripts/actions/other/primal_bag.lua b/data-otservbr-global/scripts/actions/other/primal_bag.lua index 21922462935..aac2d3f5213 100644 --- a/data-otservbr-global/scripts/actions/other/primal_bag.lua +++ b/data-otservbr-global/scripts/actions/other/primal_bag.lua @@ -10,20 +10,22 @@ local rewards = { { id = 39183, name = "charged arcanomancer sigil" }, { id = 39153, name = "arboreal crown" }, { id = 39154, name = "arboreal tome" }, - { id = 39186, name = "charged arboreal ring" } + { id = 39186, name = "charged arboreal ring" }, } local primalBag = Action() function primalBag.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if not player then return false end + if not player then + return false + end local randId = math.random(1, #rewards) local rewardItem = rewards[randId] player:addItem(rewardItem.id, 1) item:remove(1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You received one ' .. rewardItem.name .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You received one " .. rewardItem.name .. ".") return true end diff --git a/data-otservbr-global/scripts/actions/other/rafzane_elevator.lua b/data-otservbr-global/scripts/actions/other/rafzane_elevator.lua index 90ba6cbee9b..935000018ef 100644 --- a/data-otservbr-global/scripts/actions/other/rafzane_elevator.lua +++ b/data-otservbr-global/scripts/actions/other/rafzane_elevator.lua @@ -1,6 +1,6 @@ local elevatorPosition = { Position(33051, 32099, 6), - Position(33051, 32099, 7) + Position(33051, 32099, 7), } local config = { @@ -11,11 +11,11 @@ local config = { transform = { position = { elevatorPosition[1], elevatorPosition[2] }, itemId = { 17939, 17939 }, - transformId = { 17942, 17943 } + transformId = { 17942, 17943 }, }, - sound = 'Srrrt!', + sound = "Srrrt!", soundPosition = Position(33052, 32099, 6), - relocatePosition = Position(33051, 32098, 6) + relocatePosition = Position(33051, 32098, 6), }, [2] = { fromPosition = elevatorPosition[2], @@ -26,15 +26,15 @@ local config = { itemId = { 17942, 17943 }, transformId = { 17939, 17939 }, }, - sound = 'Zrrrt!', + sound = "Zrrrt!", soundPosition = Position(33052, 32099, 7), - relocatePosition = Position(33051, 32100, 7) - } + relocatePosition = Position(33051, 32100, 7), + }, } local winch = { [17940] = { config[2], config[1] }, - [17944] = { config[1], config[2] } + [17944] = { config[1], config[2] }, } local relocate = true @@ -81,7 +81,7 @@ function rafzaneElevator.onUse(player, item, fromPosition, target, toPosition, i local creature = tile:getTopCreature() if not creature or creature.uid ~= player.uid then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Step inside the elevator to use it.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Step inside the elevator to use it.") return true end diff --git a/data-otservbr-global/scripts/actions/other/special_boxes.lua b/data-otservbr-global/scripts/actions/other/special_boxes.lua index 24cdaad90e2..8c776071b5e 100644 --- a/data-otservbr-global/scripts/actions/other/special_boxes.lua +++ b/data-otservbr-global/scripts/actions/other/special_boxes.lua @@ -1,34 +1,107 @@ local config = { [37457] = { -- supernatural box - 37572, 37573, 37574, 37575, 37576 + 37572, + 37573, + 37574, + 37575, + 37576, }, [37461] = { -- balloon box - 37471, 37472, 37496, 37497, 37498, 37499, 37500, 37501, 37513, 37514, 37515, 37516, 37517, 37518 + 37471, + 37472, + 37496, + 37497, + 37498, + 37499, + 37500, + 37501, + 37513, + 37514, + 37515, + 37516, + 37517, + 37518, }, [37462] = { -- special carpet box - 37354, 37357, 37358, 37360, 37362, 37364 + 37354, + 37357, + 37358, + 37360, + 37362, + 37364, }, [37463] = { -- luminous box - 37543, 37544, 37545 + 37543, + 37544, + 37545, }, [37465] = { -- box full of presents - 37562, 37563, 37564, 37565, 37566, 37567, 37568, 37569, 37570, 37571 + 37562, + 37563, + 37564, + 37565, + 37566, + 37567, + 37568, + 37569, + 37570, + 37571, }, [37466] = { -- embroidered box - 37540, 37541, 37542 + 37540, + 37541, + 37542, }, [37467] = { -- carpet box - 37366, 37374, 37375, 37376, 37377, 37378, 37379, 37380, 37382, 37390, 37391, 37392, 37393, 37394, 37395, 37396 + 37366, + 37374, + 37375, + 37376, + 37377, + 37378, + 37379, + 37380, + 37382, + 37390, + 37391, + 37392, + 37393, + 37394, + 37395, + 37396, }, [37468] = { -- special fx box - 37448, 37450, 37451, 37452, 37453, 37454, 37455, 37456, 37458, 37459, 37460 + 37448, + 37450, + 37451, + 37452, + 37453, + 37454, + 37455, + 37456, + 37458, + 37459, + 37460, }, [37469] = { -- special balloon box - 37502, 37503, 37504, 37505, 37506, 37507, 37508, 37509, 37510, 37511, 37512 + 37502, + 37503, + 37504, + 37505, + 37506, + 37507, + 37508, + 37509, + 37510, + 37511, + 37512, }, [37614] = { -- box full of decoration - 37463, 37466, 37496, 37717 - } + 37463, + 37466, + 37496, + 37717, + }, } local specialBox = Action() diff --git a/data-otservbr-global/scripts/actions/other/special_firework_rocket.lua b/data-otservbr-global/scripts/actions/other/special_firework_rocket.lua index 35590805b40..f679028c6b6 100644 --- a/data-otservbr-global/scripts/actions/other/special_firework_rocket.lua +++ b/data-otservbr-global/scripts/actions/other/special_firework_rocket.lua @@ -62,7 +62,7 @@ local fireworks = { { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, }, effect = CONST_ME_HEARTS, type = CONST_FIREWORK_TYPE_INSTANT, @@ -99,7 +99,7 @@ local fireworks = { effect = CONST_ME_PIXIE_EXPLOSION, type = CONST_FIREWORK_TYPE_RANDOM, disassemble = true, - } + }, } local function cleanMatrix(matrix) diff --git a/data-otservbr-global/scripts/actions/other/string_of_mending.lua b/data-otservbr-global/scripts/actions/other/string_of_mending.lua index 31610b283bf..b66bd600d0e 100644 --- a/data-otservbr-global/scripts/actions/other/string_of_mending.lua +++ b/data-otservbr-global/scripts/actions/other/string_of_mending.lua @@ -6,8 +6,8 @@ ---- string of mending id "20208"----- local ITEMS = { [12737] = { -----Broken Ring Id "12737" Ring of ending "20182" - { "ring of ending", 50.50 } ----- 1.97 es la probabilidad de crear el item - } + { "ring of ending", 50.50 }, ----- 1.97 es la probabilidad de crear el item + }, } local stringOfMending = Action() diff --git a/data-otservbr-global/scripts/actions/other/surprise_bag.lua b/data-otservbr-global/scripts/actions/other/surprise_bag.lua index fb25eb806ac..71520c03ebf 100644 --- a/data-otservbr-global/scripts/actions/other/surprise_bag.lua +++ b/data-otservbr-global/scripts/actions/other/surprise_bag.lua @@ -1,19 +1,81 @@ local config = { [6570] = { -- bluePresent - { 3598, 10 }, { 6393, 3 }, 6279, 6574, 6578, 6575, 6577, 6569, 6576, 6572, 2995, 14027, 14681 + { 3598, 10 }, + { 6393, 3 }, + 6279, + 6574, + 6578, + 6575, + 6577, + 6569, + 6576, + 6572, + 2995, + 14027, + 14681, }, [6571] = { -- redPresent - 6574, 3079, 6393, 6576, 6578, 2995, 14027, 3036, 5944, 3386, 3420, 3039, 5080, 2993, 3392, 3057, 5791 + 6574, + 3079, + 6393, + 6576, + 6578, + 2995, + 14027, + 3036, + 5944, + 3386, + 3420, + 3039, + 5080, + 2993, + 3392, + 3057, + 5791, }, [8853] = { -- surpriseBag - { 3031, 10 }, 123, 2995, 2397, 651, 3218, 6574, 6393, 7377, 3578, 8778 + { 3031, 10 }, + 123, + 2995, + 2397, + 651, + 3218, + 6574, + 6393, + 7377, + 3578, + 8778, }, [14751] = { -- surpriseBag - { 9642, 15 }, { 3581, 15 }, 5917, 3273, 10302, 3123, 5928, 5926, 5927, 6095, 5918, 6097, 6098, 5461, 5090 + { 9642, 15 }, + { 3581, 15 }, + 5917, + 3273, + 10302, + 3123, + 5928, + 5926, + 5927, + 6095, + 5918, + 6097, + 6098, + 5461, + 5090, }, [14759] = { -- surpriseBag - { 6569, 10 }, { 6541, 10 }, { 6542, 10 }, { 6543, 10 }, { 6544, 10 }, { 6545, 10 }, 6574, 4839, 6570, 6571, 3215 - } + { 6569, 10 }, + { 6541, 10 }, + { 6542, 10 }, + { 6543, 10 }, + { 6544, 10 }, + { 6545, 10 }, + 6574, + 4839, + 6570, + 6571, + 3215, + }, } local surpriseBag = Action() diff --git a/data-otservbr-global/scripts/actions/other/sweet_heart.lua b/data-otservbr-global/scripts/actions/other/sweet_heart.lua index 317ee443dde..1a2c7caf277 100644 --- a/data-otservbr-global/scripts/actions/other/sweet_heart.lua +++ b/data-otservbr-global/scripts/actions/other/sweet_heart.lua @@ -2,12 +2,12 @@ local sweetHeart = Action() function sweetHeart.onUse(cid, item, fromPosition, itemEx, toPosition) local player = Player(cid) - if (not player) then + if not player then return false end - if (player:getSlotItem(CONST_SLOT_RING)) then - if (player:getSlotItem(CONST_SLOT_RING):getId() == item:getId()) then + if player:getSlotItem(CONST_SLOT_RING) then + if player:getSlotItem(CONST_SLOT_RING):getId() == item:getId() then player:getPosition():sendMagicEffect(CONST_ME_HEARTS) end else diff --git a/data-otservbr-global/scripts/actions/other/thais_exhibition.lua b/data-otservbr-global/scripts/actions/other/thais_exhibition.lua index 5757ec3c0d5..4595be3c772 100644 --- a/data-otservbr-global/scripts/actions/other/thais_exhibition.lua +++ b/data-otservbr-global/scripts/actions/other/thais_exhibition.lua @@ -1,277 +1,277 @@ local ThaisExhibitionConfig = { [Storage.ThaisExhibition.FriendshipAmulet] = { sounds = { - { text = 'Hail |PLAYERNAME|, my friend!' }, - { text = 'Friends forever!' }, - { text = 'Look, how our friendship shines!' }, - { text = 'Hail Tibiafriends!' } + { text = "Hail |PLAYERNAME|, my friend!" }, + { text = "Friends forever!" }, + { text = "Look, how our friendship shines!" }, + { text = "Hail Tibiafriends!" }, }, itemid = 9802, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.HandPuppets] = { sounds = { - { text = 'Why so serious?' }, - { text = 'These are not the puppets you are looking for...' }, - { text = 'May the roleplay be with you.' }, - { text = 'An age of roleplay, and all will know, that three hundred puppets gave their last breath to defend it!' }, - { text = 'They stoles it! Sneaky little puppetses!' }, - { text = 'There was a dream that was roleplay. You could only whisper it. Anything more than a whisper and it would vanish.' } + { text = "Why so serious?" }, + { text = "These are not the puppets you are looking for..." }, + { text = "May the roleplay be with you." }, + { text = "An age of roleplay, and all will know, that three hundred puppets gave their last breath to defend it!" }, + { text = "They stoles it! Sneaky little puppetses!" }, + { text = "There was a dream that was roleplay. You could only whisper it. Anything more than a whisper and it would vanish." }, }, itemid = 9189, - dir = DIRECTION_WEST + dir = DIRECTION_WEST, }, [Storage.ThaisExhibition.EpaminondasDoll] = { sounds = { - { text = 'Hauopa!' }, - { text = 'Yala Boom', exhibitEffect = CONST_ME_SOUND_RED }, - { text = 'Hail Portal Tibia!' } + { text = "Hauopa!" }, + { text = "Yala Boom", exhibitEffect = CONST_ME_SOUND_RED }, + { text = "Hail Portal Tibia!" }, }, itemid = 9144, transformid = 9145, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.NorsemanDoll] = { sounds = { - { text = 'Hail TibiaNordic!' }, - { text = 'So cold...' }, - { text = 'Run, mammoth!' } + { text = "Hail TibiaNordic!" }, + { text = "So cold..." }, + { text = "Run, mammoth!" }, }, itemid = 8154, - dir = DIRECTION_WEST + dir = DIRECTION_WEST, }, [Storage.ThaisExhibition.BookwormDoll] = { sounds = { - { text = 'Hail Tibia Library!' }, - { text = 'Shhhhhh, please be quiet!' }, - { text = 'Books are great!! Aren\'t they?' } + { text = "Hail Tibia Library!" }, + { text = "Shhhhhh, please be quiet!" }, + { text = "Books are great!! Aren't they?" }, }, itemid = 18343, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.GoldenNewspaper] = { sounds = { - { text = 'It\'s news to me.' }, - { text = 'News, updated as infrequently as possible!' }, - { text = 'Extra! Extra! Read all about it!' }, - { text = 'Fresh off the press!' } + { text = "It's news to me." }, + { text = "News, updated as infrequently as possible!" }, + { text = "Extra! Extra! Read all about it!" }, + { text = "Fresh off the press!" }, }, itemid = 8153, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.TibiacityEncyclopedia] = { sounds = { - { text = 'I own, Tibiacity owns, perfect match!' }, - { text = 'Weirdo, you\'re a weirdo! Actually all of you are!' }, - { text = 'All hail the control panel!' }, - { text = 'Pie for breakfast, pie for lunch and pie for dinner!' }, - { text = 'Hug me! Feed me! Hail me!' } + { text = "I own, Tibiacity owns, perfect match!" }, + { text = "Weirdo, you're a weirdo! Actually all of you are!" }, + { text = "All hail the control panel!" }, + { text = "Pie for breakfast, pie for lunch and pie for dinner!" }, + { text = "Hug me! Feed me! Hail me!" }, }, itemid = 8149, - dir = DIRECTION_WEST + dir = DIRECTION_WEST, }, [Storage.ThaisExhibition.GoldenFalcon] = { sounds = { - { text = 'Oh, when I get my claws on you...' }, - { text = 'Let\'s hunt, |PLAYERNAME|!' }, - { text = 'Hail TibiaBR.com! Flap! Flap!' } + { text = "Oh, when I get my claws on you..." }, + { text = "Let's hunt, |PLAYERNAME|!" }, + { text = "Hail TibiaBR.com! Flap! Flap!" }, }, itemid = 8148, transformid = 8175, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.DragonGoblet] = { sounds = { - { text = 'I WILL PROTECT YOUR KNOWLEDGEZZZ.' }, - { text = 'FCHHH - FEEEEED ME AT TIBIAVENEZUELA.COM' }, - { text = 'I SENSE WISDOM...HUMILITY...AND...PERSEVERANCE!!!' }, - { text = 'MAY MY ETERNAL FLAME BE YOUR SHIELD AND PATH OF SUCCESS, |PLAYERNAME|!' } + { text = "I WILL PROTECT YOUR KNOWLEDGEZZZ." }, + { text = "FCHHH - FEEEEED ME AT TIBIAVENEZUELA.COM" }, + { text = "I SENSE WISDOM...HUMILITY...AND...PERSEVERANCE!!!" }, + { text = "MAY MY ETERNAL FLAME BE YOUR SHIELD AND PATH OF SUCCESS, |PLAYERNAME|!" }, }, itemid = 10477, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.FerumbrasDoll] = { sounds = { - { text = 'Mwahaha!' }, - { text = 'NO ONE WILL STOP ME THIS TIME!' }, - { text = 'THE POWER IS IN TIBIOPEDIA!' }, - { text = 'THE POWER IS MINE!' } + { text = "Mwahaha!" }, + { text = "NO ONE WILL STOP ME THIS TIME!" }, + { text = "THE POWER IS IN TIBIOPEDIA!" }, + { text = "THE POWER IS MINE!" }, }, itemid = 10798, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.FrozenHeart] = { sounds = { - { text = 'Could a dead, frozen heart beat again? It felt like mine was about to.' }, - { text = 'The world was born from Tibiasula\'s love.' }, - { text = 'Look after TibiaTR\'s frozen heart. I\'ve left it with you.' }, - { text = 'Hail TibiaTR.net!' } + { text = "Could a dead, frozen heart beat again? It felt like mine was about to." }, + { text = "The world was born from Tibiasula's love." }, + { text = "Look after TibiaTR's frozen heart. I've left it with you." }, + { text = "Hail TibiaTR.net!" }, }, itemid = 12041, transformid = 12042, transformDuration = 12013, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.DrakenDoll] = { sounds = { - { text = 'For zze emperor!' }, - { text = 'Hail TibiaJourney.com!' }, - { text = 'Hail |PLAYERNAME|!' } + { text = "For zze emperor!" }, + { text = "Hail TibiaJourney.com!" }, + { text = "Hail |PLAYERNAME|!" }, }, itemid = 12043, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.MusicBox] = { itemids = { { itemid = 12045, - transformid = 12046 + transformid = 12046, }, { itemid = 12046, - transformid = 12045 - } + transformid = 12045, + }, }, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.DurinTheAlmighty] = { sounds = { - { text = 'My powers are limitless!' }, - { text = 'Hail Tibia Bariloche!' } + { text = "My powers are limitless!" }, + { text = "Hail Tibia Bariloche!" }, }, itemid = 14764, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.DragonEye] = { sounds = { - { text = 'Do not trade me!' }, - { text = 'Hail |PLAYERNAME|!' }, - { text = 'Hail Tibia-Market!' } + { text = "Do not trade me!" }, + { text = "Hail |PLAYERNAME|!" }, + { text = "Hail Tibia-Market!" }, }, itemid = 16262, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.MemoryBox] = { sounds = { - { text = 'Uploading to TibiaEvents.... processing...' }, + { text = "Uploading to TibiaEvents.... processing..." }, { text = 'Say "Rat CHeese!"' }, - { text = 'I got the perfect shot!' }, - { text = 'Hold still...got it!' }, - { text = 'Look at this one! Wasn\'t this your first battle with a dragon?' }, - { text = 'This picture reminds me of the latest event.' } + { text = "I got the perfect shot!" }, + { text = "Hold still...got it!" }, + { text = "Look at this one! Wasn't this your first battle with a dragon?" }, + { text = "This picture reminds me of the latest event." }, }, itemid = 19397, transformid = 19398, transformDuration = 7000, - dir = DIRECTION_WEST + dir = DIRECTION_WEST, }, [Storage.ThaisExhibition.NobleSword] = { itemid = 16275, transformid = 16276, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.MedusaSkull] = { sounds = { - { text = 'I will petrify thisss moment! Sstonesss are forever!!!' }, - { text = 'Where isss my body?!? I\'ll kill you!!!' } + { text = "I will petrify thisss moment! Sstonesss are forever!!!" }, + { text = "Where isss my body?!? I'll kill you!!!" }, }, itemid = 14762, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.MathmasterShield] = { sounds = { - { exhibitEffect = CONST_ME_LOSEENERGY } + { exhibitEffect = CONST_ME_LOSEENERGY }, }, itemid = 14760, transformid = 14761, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.Imortus] = { sounds = { - { text = 'Now you will see, |PLAYERNAME|!' }, - { text = 'More eyes for many numbers!' }, - { text = '594!? So easy...' }, - { text = 'Numbers for Exhiti...' } + { text = "Now you will see, |PLAYERNAME|!" }, + { text = "More eyes for many numbers!" }, + { text = "594!? So easy..." }, + { text = "Numbers for Exhiti..." }, }, itemid = 12811, transformid = 12812, - dir = DIRECTION_WEST + dir = DIRECTION_WEST, }, [Storage.ThaisExhibition.OldRadio] = { itemids = { { sounds = { - { text = 'Now Tibia bffff... has sound.' }, - { text = 'Hail bffff... RadioTibia!' }, - { text = 'Hello bffff... |PLAYERNAME|.' } + { text = "Now Tibia bffff... has sound." }, + { text = "Hail bffff... RadioTibia!" }, + { text = "Hello bffff... |PLAYERNAME|." }, }, itemid = 12813, - transformid = 12814 + transformid = 12814, }, { itemid = 12814, - transformid = 12813 - } + transformid = 12813, + }, }, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.EpicWisdom] = { sounds = { - { text = 'MY BRAIN... TOO MUCH... KNOWLEDGE! AAAAH!', playerEffect = CONST_ME_STUN }, - { text = 'Excalibug is lying at the heart of every true fighter.' }, - { text = 'Fire is fascinating. But whether it is going to light your path or burning you till death, you can never tell.' } + { text = "MY BRAIN... TOO MUCH... KNOWLEDGE! AAAAH!", playerEffect = CONST_ME_STUN }, + { text = "Excalibug is lying at the heart of every true fighter." }, + { text = "Fire is fascinating. But whether it is going to light your path or burning you till death, you can never tell." }, }, itemid = 12809, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.DreadDoll] = { sounds = { - { text = 'Mhausheausheu! What a FAIL! Mwahaha!' }, - { text = 'Hail |PLAYERNAME|! You are wearing old socks!' }, - { text = 'ou are so unpopular even your own shadow refuses to follow you.' }, - { text = 'Have fun with FunTibia.com!' } + { text = "Mhausheausheu! What a FAIL! Mwahaha!" }, + { text = "Hail |PLAYERNAME|! You are wearing old socks!" }, + { text = "ou are so unpopular even your own shadow refuses to follow you." }, + { text = "Have fun with FunTibia.com!" }, }, itemid = 12904, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.PhoenixStatue] = { sounds = { - { text = 'Come closer, I will show some Tibian mysteries to you!' }, - { text = 'Feel the eternity of Tibiafans.se!' }, - { text = '|PLAYERNAME|, you are worthy to feel the power of Tibiafans.se! HAIL TIBIAFANS!' } + { text = "Come closer, I will show some Tibian mysteries to you!" }, + { text = "Feel the eternity of Tibiafans.se!" }, + { text = "|PLAYERNAME|, you are worthy to feel the power of Tibiafans.se! HAIL TIBIAFANS!" }, }, itemid = 4115, - dir = DIRECTION_WEST + dir = DIRECTION_WEST, }, [Storage.ThaisExhibition.OrcsJawShredder] = { sounds = { - { text = 'Hail |PLAYERNAME|!' }, - { text = 'Hail TibiaSpy.com!' }, - { text = 'Wrrrzzzgggrrzzzz...' }, - { text = 'Yummy...' } + { text = "Hail |PLAYERNAME|!" }, + { text = "Hail TibiaSpy.com!" }, + { text = "Wrrrzzzgggrrzzzz..." }, + { text = "Yummy..." }, }, itemid = 10800, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.BagOfOrientalSpices] = { sounds = { - { text = 'According to tibia-wiki.net, Jalapeño Peppers are as hot and famous as the place they come from - Ankrahmun.' }, - { text = 'According to tibia-wiki.net, a Bulb of Garlic is a great spice AND protection against vampires.' }, - { text = 'According to tibia-wiki.net, star and sling herbs taste like cinnamon and vanilla.' } + { text = "According to tibia-wiki.net, Jalapeño Peppers are as hot and famous as the place they come from - Ankrahmun." }, + { text = "According to tibia-wiki.net, a Bulb of Garlic is a great spice AND protection against vampires." }, + { text = "According to tibia-wiki.net, star and sling herbs taste like cinnamon and vanilla." }, }, itemid = 10817, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, [Storage.ThaisExhibition.TibiorasBox] = { sounds = { - { text = 'Click! You don\'t seem experienced enough to open this properly.' }, - { text = 'Click! The box won\'t open for you.' }, - { text = 'Click! This item is too precious for a newbie. You are unable to open it.' } + { text = "Click! You don't seem experienced enough to open this properly." }, + { text = "Click! The box won't open for you." }, + { text = "Click! This item is too precious for a newbie. You are unable to open it." }, }, itemid = 3997, transformid = 4010, transformDuration = 7000, - dir = DIRECTION_NORTH + dir = DIRECTION_NORTH, }, } @@ -331,7 +331,7 @@ function thaisExhibition.onUse(player, item, fromPosition, target, toPosition, i if settings.sounds and #settings.sounds > 0 then local sound = settings.sounds[math.random(#settings.sounds)] if sound.text then - player:say(sound.text:gsub('|PLAYERNAME|', player:getName()), TALKTYPE_MONSTER_SAY, false, nil, exhibitPosition) + player:say(sound.text:gsub("|PLAYERNAME|", player:getName()), TALKTYPE_MONSTER_SAY, false, nil, exhibitPosition) end if sound.exhibitEffect then diff --git a/data-otservbr-global/scripts/actions/other/transform_to.lua b/data-otservbr-global/scripts/actions/other/transform_to.lua index 21b08e04b57..a2dd813249c 100644 --- a/data-otservbr-global/scripts/actions/other/transform_to.lua +++ b/data-otservbr-global/scripts/actions/other/transform_to.lua @@ -1,6 +1,6 @@ local voices = { [23708] = "Au au!", - [23443] = "Grooaarr!" + [23443] = "Grooaarr!", } local transformItems = { @@ -491,7 +491,7 @@ local transformItems = { local transformTo = Action() function transformTo.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if (voices[item:getId()]) then + if voices[item:getId()] then local spectators = Game.getSpectators(fromPosition, false, true, 3, 3) for i = 1, #spectators do player:say(voices[item:getId()], TALKTYPE_MONSTER_SAY, false, spectators[i], fromPosition) diff --git a/data-otservbr-global/scripts/actions/other/ursagrodon.lua b/data-otservbr-global/scripts/actions/other/ursagrodon.lua index 84fcffd7c83..b329d7fb7ce 100644 --- a/data-otservbr-global/scripts/actions/other/ursagrodon.lua +++ b/data-otservbr-global/scripts/actions/other/ursagrodon.lua @@ -23,21 +23,21 @@ function ursagrodon.onUse(player, item, fromPosition, target, toPosition, isHotk if target.itemid == config.item1 or target.itemid == config.item2 or target.itemid == config.item3 then if player:getStorageValue(config.item4) > 0 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You already have the obedience of ursagrodon.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You already have the obedience of ursagrodon.") return true end if rand <= config.porcentagem then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The ice cracked and the frozen creature with it - be more careful next time!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The ice cracked and the frozen creature with it - be more careful next time!") item:remove(1) target:transform(config.item4) addEvent(revertIce, 600000, toPosition) else if target.itemid == config.item1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You managed to melt about half of the ice blook. Quickly now, it\'s ice cold here and the ice block could freeze over again.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You managed to melt about half of the ice blook. Quickly now, it's ice cold here and the ice block could freeze over again.") target:transform(config.item2) elseif target.itemid == config.item2 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You managed to melt almost the whole block, only the feet of the creature are still stuck in the ice. Finish the job!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You managed to melt almost the whole block, only the feet of the creature are still stuck in the ice. Finish the job!") target:transform(config.item3) elseif target.itemid == config.item3 then target:transform(config.item4) @@ -45,7 +45,7 @@ function ursagrodon.onUse(player, item, fromPosition, target, toPosition, isHotk player:addMount(38) player:setStorageValue(config.item4, 1) addEvent(revertIce, 600 * 1000, toPosition) - return player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The freed ursagrodon look at you with glowing, obedient eyes.') + return player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The freed ursagrodon look at you with glowing, obedient eyes.") end end end diff --git a/data-otservbr-global/scripts/actions/quests/a_pirates_tail/ratmiral_lever.lua b/data-otservbr-global/scripts/actions/quests/a_pirates_tail/ratmiral_lever.lua index 21c768cf6ce..f010adb61ed 100644 --- a/data-otservbr-global/scripts/actions/quests/a_pirates_tail/ratmiral_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/a_pirates_tail/ratmiral_lever.lua @@ -9,14 +9,14 @@ local config = { { pos = Position(33894, 31388, 15), teleport = Position(33904, 31356, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33895, 31388, 15), teleport = Position(33904, 31356, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33896, 31388, 15), teleport = Position(33904, 31356, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33897, 31388, 15), teleport = Position(33904, 31356, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33897, 31388, 15), teleport = Position(33904, 31356, 14), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33888, 31344, 14), - to = Position(33920, 31376, 15) + to = Position(33920, 31376, 15), }, exit = Position(33891, 31197, 7), - storage = Storage.Quest.U12_60.APiratesTail.RatmiralTimer + storage = Storage.Quest.U12_60.APiratesTail.RatmiralTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/a_pirates_tail/tentugly_lever.lua b/data-otservbr-global/scripts/actions/quests/a_pirates_tail/tentugly_lever.lua index 11dc5155c93..8cc361168fb 100644 --- a/data-otservbr-global/scripts/actions/quests/a_pirates_tail/tentugly_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/a_pirates_tail/tentugly_lever.lua @@ -9,14 +9,14 @@ local config = { { pos = Position(33793, 31391, 6), teleport = Position(33722, 31186, 7), effect = CONST_ME_TELEPORT }, { pos = Position(33794, 31391, 6), teleport = Position(33722, 31186, 7), effect = CONST_ME_TELEPORT }, { pos = Position(33795, 31391, 6), teleport = Position(33722, 31186, 7), effect = CONST_ME_TELEPORT }, - { pos = Position(33796, 31391, 6), teleport = Position(33722, 31186, 7), effect = CONST_ME_TELEPORT } + { pos = Position(33796, 31391, 6), teleport = Position(33722, 31186, 7), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33705, 31176, 6), - to = Position(33736, 31190, 7) + to = Position(33736, 31190, 7), }, exit = Position(33799, 31356, 7), - storage = Storage.Quest.U12_60.APiratesTail.TentuglyTimer + storage = Storage.Quest.U12_60.APiratesTail.TentuglyTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/adventurers_guild/treasure.lua b/data-otservbr-global/scripts/actions/quests/adventurers_guild/treasure.lua index e89fec609dc..ed866a5e893 100644 --- a/data-otservbr-global/scripts/actions/quests/adventurers_guild/treasure.lua +++ b/data-otservbr-global/scripts/actions/quests/adventurers_guild/treasure.lua @@ -1,17 +1,17 @@ local items = { - { description = 'a platinum coins', items = { { id = ITEM_PLATINUM_COIN, count = 5 } } }, + { description = "a platinum coins", items = { { id = ITEM_PLATINUM_COIN, count = 5 } } }, { - description = 'some gems', + description = "some gems", items = { { id = 3029, count = 1 }, { id = 3032, count = 1 }, - { id = 3030, count = 1 } - } + { id = 3030, count = 1 }, + }, }, - { description = 'a life ring', items = { { id = 3089, count = 1 } } }, - { description = 'a red gem', items = { { id = 3039, count = 1 } } }, - { description = 'a mana potion', items = { { id = 237, count = 10 } } }, - { description = 'a health potion', items = { { id = 236, count = 8 } } } + { description = "a life ring", items = { { id = 3089, count = 1 } } }, + { description = "a red gem", items = { { id = 3039, count = 1 } } }, + { description = "a mana potion", items = { { id = 237, count = 10 } } }, + { description = "a health potion", items = { { id = 236, count = 8 } } }, } local adventurersTreasure = Action() @@ -27,7 +27,7 @@ function adventurersTreasure.onUse(player, item, fromPosition, target, toPositio player:setStorageValue(Storage.AdventurersGuild.GreatDragonHunt.DragonCounter, 0) -- hoard of the dragon achievement - local achievement = getAchievementInfoByName('Hoard of the Dragon') + local achievement = getAchievementInfoByName("Hoard of the Dragon") if not achievement or player:hasAchievement(achievement.id) then return true end diff --git a/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/iksupan_entrance.lua b/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/iksupan_entrance.lua index 5bcd301c515..8ec086eeb8b 100644 --- a/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/iksupan_entrance.lua +++ b/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/iksupan_entrance.lua @@ -1,5 +1,5 @@ local config = { - { position = { x = 32728, y = 32878, z = 7 }, destination = { x = 34015, y = 31890, z = 8 } } + { position = { x = 32728, y = 32878, z = 7 }, destination = { x = 34015, y = 31890, z = 8 } }, } local entrance = Action() diff --git a/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/iksupan_exit.lua b/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/iksupan_exit.lua index 173ba2c7f8f..0a4a27478b0 100644 --- a/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/iksupan_exit.lua +++ b/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/iksupan_exit.lua @@ -1,5 +1,5 @@ local config = { - { position = { x = 34015, y = 31892, z = 8 }, destination = { x = 32728, y = 32880, z = 7 } } + { position = { x = 34015, y = 31892, z = 8 }, destination = { x = 32728, y = 32880, z = 7 } }, } local exit = MoveEvent() diff --git a/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/megasylvan_yselda_lever.lua b/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/megasylvan_yselda_lever.lua index d33909873a2..e82d1d5f362 100644 --- a/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/megasylvan_yselda_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/megasylvan_yselda_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Megasylvan Yselda", - position = Position(32619, 32493, 12) + position = Position(32619, 32493, 12), }, requiredLevel = 250, @@ -14,10 +14,10 @@ local config = { }, specPos = { from = Position(32601, 32486, 12), - to = Position(32633, 32509, 12) + to = Position(32633, 32509, 12), }, exit = Position(32580, 32480, 12), - storage = Storage.Quest.U12_70.AdventuresOfGalthen.MegasylvanYseldaTimer + storage = Storage.Quest.U12_70.AdventuresOfGalthen.MegasylvanYseldaTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/yselda_entrances.lua b/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/yselda_entrances.lua index fea08289c50..2474d953336 100644 --- a/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/yselda_entrances.lua +++ b/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/yselda_entrances.lua @@ -1,6 +1,6 @@ local config = { { position = { x = 32424, y = 32500, z = 10 }, destination = { x = 32405, y = 32497, z = 10 } }, - { position = { x = 32405, y = 32498, z = 10 }, destination = { x = 32424, y = 32498, z = 10 } } + { position = { x = 32405, y = 32498, z = 10 }, destination = { x = 32424, y = 32498, z = 10 } }, } local forestOfLife = MoveEvent() diff --git a/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/yselda_shortcut.lua b/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/yselda_shortcut.lua index 2c2a0f4fd85..0fdbcda9b09 100644 --- a/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/yselda_shortcut.lua +++ b/data-otservbr-global/scripts/actions/quests/adventures_of_galthen/yselda_shortcut.lua @@ -1,6 +1,6 @@ local config = { { position = { x = 32419, y = 32458, z = 7 }, destination = { x = 32528, y = 32489, z = 11 } }, - { position = { x = 32528, y = 32488, z = 11 }, destination = { x = 32418, y = 32458, z = 7 } } + { position = { x = 32528, y = 32488, z = 11 }, destination = { x = 32418, y = 32458, z = 7 } }, } local entranceYselda = Action() diff --git a/data-otservbr-global/scripts/actions/quests/barbarian_test/horn.lua b/data-otservbr-global/scripts/actions/quests/barbarian_test/horn.lua index 372d66bf096..e4a98d2ce85 100644 --- a/data-otservbr-global/scripts/actions/quests/barbarian_test/horn.lua +++ b/data-otservbr-global/scripts/actions/quests/barbarian_test/horn.lua @@ -5,33 +5,33 @@ end local barbarianHorn = Action() function barbarianHorn.onUse(player, item, fromPosition, target, toPosition, isHotkey) if target.uid == 3110 and item.itemid == 7140 then - player:say('You fill your horn with ale.', TALKTYPE_MONSTER_SAY) + player:say("You fill your horn with ale.", TALKTYPE_MONSTER_SAY) item:transform(7141) toPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE) elseif target.itemid == 7174 and item.itemid == 7141 then - player:say('The bear is now unconcious.', TALKTYPE_MONSTER_SAY) + player:say("The bear is now unconcious.", TALKTYPE_MONSTER_SAY) item:transform(7140) target:transform(7175) toPosition:sendMagicEffect(CONST_ME_STUN) elseif item.itemid == 7175 then if player:getStorageValue(Storage.BarbarianTest.Questline) == 4 then - player:say('You hug the unconcious bear.', TALKTYPE_MONSTER_SAY) + player:say("You hug the unconcious bear.", TALKTYPE_MONSTER_SAY) player:setStorageValue(Storage.BarbarianTest.Questline, 5) player:setStorageValue(Storage.BarbarianTest.Mission02, 2) -- Questlog Barbarian Test Quest Barbarian Test 2: The Bear Hugging - player:addAchievement('Bearhugger') + player:addAchievement("Bearhugger") item:transform(7174) toPosition:sendMagicEffect(CONST_ME_SLEEP) else - player:say('You don\'t feel like hugging an unconcious bear.', TALKTYPE_MONSTER_SAY) + player:say("You don't feel like hugging an unconcious bear.", TALKTYPE_MONSTER_SAY) end elseif item.itemid == 7174 then - player:say('Grr.', TALKTYPE_MONSTER_SAY) - player:say('The bear is not amused by the disturbance.', TALKTYPE_MONSTER_SAY) + player:say("Grr.", TALKTYPE_MONSTER_SAY) + player:say("The bear is not amused by the disturbance.", TALKTYPE_MONSTER_SAY) doAreaCombatHealth(player, COMBAT_PHYSICALDAMAGE, player:getPosition(), 0, -10, -30, CONST_ME_POFF) elseif item.itemid == 7176 then if player:getStorageValue(Storage.BarbarianTest.Questline) == 6 then if player:getCondition(CONDITION_DRUNK) then - player:say('You hustle the mammoth. What a fun. *hicks*.', TALKTYPE_MONSTER_SAY) + player:say("You hustle the mammoth. What a fun. *hicks*.", TALKTYPE_MONSTER_SAY) player:setStorageValue(Storage.BarbarianTest.Questline, 7) player:setStorageValue(Storage.BarbarianTest.Mission03, 2) -- Questlog Barbarian Test Quest Barbarian Test 3: The Mammoth Pushing item:transform(7177) @@ -39,7 +39,7 @@ function barbarianHorn.onUse(player, item, fromPosition, target, toPosition, isH addEvent(sendSleepEffect, 60 * 1000, toPosition) toPosition:sendMagicEffect(CONST_ME_SLEEP) else - player:say('You are not drunk enought to hustle a mammoth.', TALKTYPE_MONSTER_SAY) + player:say("You are not drunk enought to hustle a mammoth.", TALKTYPE_MONSTER_SAY) end end end diff --git a/data-otservbr-global/scripts/actions/quests/barbarian_test/mead.lua b/data-otservbr-global/scripts/actions/quests/barbarian_test/mead.lua index de2abc2a04c..de2a579ce30 100644 --- a/data-otservbr-global/scripts/actions/quests/barbarian_test/mead.lua +++ b/data-otservbr-global/scripts/actions/quests/barbarian_test/mead.lua @@ -5,27 +5,27 @@ local barbarianMead = Action() function barbarianMead.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.BarbarianTest.Questline) == 2 and player:getStorageValue(Storage.BarbarianTest.MeadTotalSips) <= 20 then if math.random(5) > 1 then - player:say('The world seems to spin but you manage to stay on your feet.', TALKTYPE_MONSTER_SAY) + player:say("The world seems to spin but you manage to stay on your feet.", TALKTYPE_MONSTER_SAY) player:setStorageValue(Storage.BarbarianTest.MeadSuccessSips, player:getStorageValue(Storage.BarbarianTest.MeadSuccessSips) + 1) if player:getStorageValue(Storage.BarbarianTest.MeadSuccessSips) == 9 then -- 9 sips here cause local player at start - player:say('10 sips in a row. Yeah!', TALKTYPE_MONSTER_SAY) + player:say("10 sips in a row. Yeah!", TALKTYPE_MONSTER_SAY) player:setStorageValue(Storage.BarbarianTest.Questline, 3) player:setStorageValue(Storage.BarbarianTest.Mission01, 3) -- Questlog Barbarian Test Quest Barbarian Test 1: Barbarian Booze return true end else - player:say('The mead was too strong. You passed out for a moment.', TALKTYPE_MONSTER_SAY) + player:say("The mead was too strong. You passed out for a moment.", TALKTYPE_MONSTER_SAY) player:addCondition(condition) player:getPosition():sendMagicEffect(CONST_ME_HITBYPOISON) player:setStorageValue(Storage.BarbarianTest.MeadSuccessSips, 0) end player:setStorageValue(Storage.BarbarianTest.MeadTotalSips, player:getStorageValue(Storage.BarbarianTest.MeadTotalSips) + 1) elseif player:getStorageValue(Storage.BarbarianTest.MeadTotalSips) > 20 then - player:say('Ask Sven for another round.', TALKTYPE_MONSTER_SAY) + player:say("Ask Sven for another round.", TALKTYPE_MONSTER_SAY) player:setStorageValue(Storage.BarbarianTest.Questline, 1) player:setStorageValue(Storage.BarbarianTest.Mission01, 1) -- Questlog Barbarian Test Quest Barbarian Test 1: Barbarian Booze elseif player:getStorageValue(Storage.BarbarianTest.Questline) >= 3 then - player:say('You already passed the test, no need to torture yourself anymore.', TALKTYPE_MONSTER_SAY) + player:say("You already passed the test, no need to torture yourself anymore.", TALKTYPE_MONSTER_SAY) end return true end diff --git a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/beer.lua b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/beer.lua index 21c96fba410..92f3f8245fb 100644 --- a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/beer.lua +++ b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/beer.lua @@ -2,7 +2,7 @@ local bigfootBeer = Action() function bigfootBeer.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.BigfootBurden.NeedsBeer) == 1 then player:setStorageValue(Storage.BigfootBurden.NeedsBeer, 0) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Your mind feels refreshed!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your mind feels refreshed!") end player:say("Gulp!", TALKTYPE_MONSTER_SAY) diff --git a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/crystal.lua b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/crystal.lua index 8e949f33405..dec5e560790 100644 --- a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/crystal.lua +++ b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/crystal.lua @@ -18,12 +18,12 @@ function bigfootCrystal.onUse(player, item, fromPosition, target, toPosition, is if target.itemid == 15796 or target.itemid == 15712 then player:setStorageValue(Storage.BigfootBurden.RepairedCrystalCount, repairedCount + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have repaired a damaged crystal!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have repaired a damaged crystal!") addEvent(returnCrystal, math.random(50, 140) * 1000, toPosition, target.itemid) target:transform(15800) toPosition:sendMagicEffect(CONST_ME_ENERGYAREA) else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'This is no damaged crystal!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "This is no damaged crystal!") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/extractor.lua b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/extractor.lua index d4e8665e048..2112f77694d 100644 --- a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/extractor.lua +++ b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/extractor.lua @@ -1,8 +1,7 @@ local bigfootExtractor = Action() function bigfootExtractor.onUse(player, item, fromPosition, target, toPosition, isHotkey) local extractedCount = player:getStorageValue(Storage.BigfootBurden.ExtractedCount) - if extractedCount == 7 - or player:getStorageValue(Storage.BigfootBurden.MissionRaidersOfTheLostSpark) ~= 1 then + if extractedCount == 7 or player:getStorageValue(Storage.BigfootBurden.MissionRaidersOfTheLostSpark) ~= 1 then return false end @@ -16,7 +15,7 @@ function bigfootExtractor.onUse(player, item, fromPosition, target, toPosition, end player:setStorageValue(Storage.BigfootBurden.ExtractedCount, math.max(0, extractedCount) + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You gathered a spark.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You gathered a spark.") target:transform(16195) toPosition:sendMagicEffect(CONST_ME_ENERGYHIT) return true diff --git a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/matchmaker.lua b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/matchmaker.lua index d80022d847e..02ddeea3343 100644 --- a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/matchmaker.lua +++ b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/matchmaker.lua @@ -9,12 +9,12 @@ function bigfootMatch.onUse(player, item, fromPosition, target, toPosition, isHo end if player:getStorageValue(Storage.BigfootBurden.MatchmakerIdNeeded) ~= target.itemid then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'This is not the crystal you\'re looking for!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "This is not the crystal you're looking for!") return true end player:setStorageValue(Storage.BigfootBurden.MatchmakerStatus, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Congratulations! The crystals seem to have fallen in love and your mission is done!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Congratulations! The crystals seem to have fallen in love and your mission is done!") toPosition:sendMagicEffect(CONST_ME_HEARTS) item:remove() return true diff --git a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/music.lua b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/music.lua index d306772df4a..e972b1986df 100644 --- a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/music.lua +++ b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/music.lua @@ -5,14 +5,14 @@ local cToneStorages = { Storage.BigfootBurden.MelodyTone4, Storage.BigfootBurden.MelodyTone5, Storage.BigfootBurden.MelodyTone6, - Storage.BigfootBurden.MelodyTone7 + Storage.BigfootBurden.MelodyTone7, } local Crystals = { { x = 32776, y = 31804, z = 10 }, -- Dark Blue Cystal { x = 32781, y = 31807, z = 10 }, -- Red Crystal { x = 32777, y = 31812, z = 10 }, -- Green Crystal - { x = 32771, y = 31810, z = 10 } -- Light Blue Crystal + { x = 32771, y = 31810, z = 10 }, -- Light Blue Crystal } local bigfootMusic = Action() diff --git a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/pig.lua b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/pig.lua index d5c19da3f41..7d1a8dc9333 100644 --- a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/pig.lua +++ b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/pig.lua @@ -15,7 +15,7 @@ function bigfootPig.onUse(player, item, fromPosition, target, toPosition, isHotk end player:setStorageValue(Storage.BigfootBurden.MushroomCount, mushroomCount + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The little pig happily eats the truffles.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The little pig happily eats the truffles.") target:transform(15701) toPosition:sendMagicEffect(CONST_ME_GROUNDSHAKER) return true diff --git a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/repair.lua b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/repair.lua index 7cb343df81d..07ae2242d84 100644 --- a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/repair.lua +++ b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/repair.lua @@ -4,7 +4,7 @@ function bigfootRepair.onUse(player, item, fromPosition, target, toPosition, isH return false end - if target:getName():lower() ~= 'damaged crystal golem' then + if target:getName():lower() ~= "damaged crystal golem" then return false end @@ -18,7 +18,7 @@ function bigfootRepair.onUse(player, item, fromPosition, target, toPosition, isH end player:setStorageValue(Storage.BigfootBurden.GolemCount, player:getStorageValue(Storage.BigfootBurden.GolemCount) + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The golem has been returned to the gnomish workshop.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The golem has been returned to the gnomish workshop.") target:remove() player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) diff --git a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/rewards.lua b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/rewards.lua index cdbe44ca3e4..0a9f9997789 100644 --- a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/rewards.lua +++ b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/rewards.lua @@ -1,44 +1,44 @@ local rewards = { [3148] = { storage = Storage.BigfootBurden.Warzone1Reward, - bossName = 'Deathstrike', + bossName = "Deathstrike", items = { { rand = true, itemId = { 16102, 16233, 16234, 16235 } }, { itemId = 16108, count = 750 }, { itemId = 16102 }, { itemId = 3043, count = 3 }, { itemId = 16121, count = 7 }, - { itemId = 16129, count = 2 } + { itemId = 16129, count = 2 }, }, - achievement = { 'Final Strike', 'Death on Strike' } + achievement = { "Final Strike", "Death on Strike" }, }, [3149] = { storage = Storage.BigfootBurden.Warzone2Reward, - bossName = 'Gnomevil', + bossName = "Gnomevil", items = { { rand = true, itemId = { 16237, 16238, 16239 } }, { itemId = 16113, count = 750 }, { itemId = 16102 }, { itemId = 3043, count = 4 }, { itemId = 16119, count = 10 }, - { itemId = 16129, count = 2 } + { itemId = 16129, count = 2 }, }, miniatureHouse = true, - achievement = { 'Gnomebane\'s Bane', 'Fall of the Fallen' } + achievement = { "Gnomebane's Bane", "Fall of the Fallen" }, }, [3150] = { storage = Storage.BigfootBurden.Warzone3Reward, - bossName = 'Abyssador', + bossName = "Abyssador", items = { { rand = true, itemId = { 16229, 16230, 16231 } }, { itemId = 16114 }, { itemId = 16102 }, { itemId = 3043, count = 5 }, { itemId = 16120, count = 12 }, - { itemId = 16129, count = 2 } + { itemId = 16129, count = 2 }, }, - achievement = { 'Death from Below', 'Diplomatic Immunity' } - } + achievement = { "Death from Below", "Diplomatic Immunity" }, + }, } local bigfootRewards = Action() @@ -47,9 +47,9 @@ function bigfootRewards.onUse(player, item, fromPosition, target, toPosition, is if player:getStorageValue(Storage.BigfootBurden.WarzoneStatus) == 4 then player:setStorageValue(Storage.BigfootBurden.WarzoneStatus, 5) player:addItem(3020, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found some golden fruits.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found some golden fruits.") else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The chest is empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The chest is empty.") end elseif item.uid > 3147 and item.uid < 3151 then local reward = rewards[item.uid] @@ -58,14 +58,13 @@ function bigfootRewards.onUse(player, item, fromPosition, target, toPosition, is end if player:getStorageValue(reward.storage) ~= 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, reward.bossName .. ' defends his belongings and will not let you open his chest.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, reward.bossName .. " defends his belongings and will not let you open his chest.") return true end local backpack = player:getSlotItem(CONST_SLOT_BACKPACK) - if backpack and backpack:getEmptySlots(false) < 5 - or player:getFreeCapacity() < 100 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Please make sure that you have at least 5 free inventory slots and that you can carry on additional 100 oz.') + if backpack and backpack:getEmptySlots(false) < 5 or player:getFreeCapacity() < 100 then + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Please make sure that you have at least 5 free inventory slots and that you can carry on additional 100 oz.") return true end diff --git a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/spores.lua b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/spores.lua index 150c0c132f7..6f7eded510f 100644 --- a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/spores.lua +++ b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/spores.lua @@ -2,7 +2,7 @@ local config = { [15817] = 15705, [15818] = 15706, [15819] = 15707, - [15820] = 15708 + [15820] = 15708, } local bigfootSpores = Action() @@ -19,14 +19,14 @@ function bigfootSpores.onUse(player, item, fromPosition, target, toPosition, isH if target.itemid ~= spores then player:setStorageValue(Storage.BigfootBurden.SporeCount, 0) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have gathered the wrong spores. You ruined your collection.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have gathered the wrong spores. You ruined your collection.") item:transform(15817) toPosition:sendMagicEffect(CONST_ME_POFF) return true end player:setStorageValue(Storage.BigfootBurden.SporeCount, sporeCount + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have gathered the correct spores.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have gathered the correct spores.") item:transform(item.itemid + 1) toPosition:sendMagicEffect(CONST_ME_GREEN_RINGS) return true diff --git a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/stone.lua b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/stone.lua index 5ed182263cc..2c564a938bb 100644 --- a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/stone.lua +++ b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/stone.lua @@ -8,12 +8,12 @@ function bigfootStone.onUse(player, item, fromPosition, target, toPosition, isHo item:transform(15824) if math.random(15) <= 12 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You had no luck this time.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You had no luck this time.") return true end player:setStorageValue(Storage.BigfootBurden.GrindstoneStatus, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Your skill allowed you to grab a whetstone before the stone sinks into lava.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your skill allowed you to grab a whetstone before the stone sinks into lava.") player:addItem(15826, 1) return true end diff --git a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/warzone1_crystal.lua b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/warzone1_crystal.lua index aea15eed42a..04e72a56799 100644 --- a/data-otservbr-global/scripts/actions/quests/bigfoot_burden/warzone1_crystal.lua +++ b/data-otservbr-global/scripts/actions/quests/bigfoot_burden/warzone1_crystal.lua @@ -2,7 +2,7 @@ local posdotp = Position(33104, 31908, 10) local creatures = { "humongous fungus", - "hideous fungus" + "hideous fungus", } local function removeTp() diff --git a/data-otservbr-global/scripts/actions/quests/children_of_the_revolution/mission4_levers_puzzle.lua b/data-otservbr-global/scripts/actions/quests/children_of_the_revolution/mission4_levers_puzzle.lua index a23e429385c..e25116b1f11 100644 --- a/data-otservbr-global/scripts/actions/quests/children_of_the_revolution/mission4_levers_puzzle.lua +++ b/data-otservbr-global/scripts/actions/quests/children_of_the_revolution/mission4_levers_puzzle.lua @@ -2,7 +2,7 @@ local puzzlePositions = { [1] = Position(33352, 31126, 5), [2] = Position(33353, 31126, 5), [3] = Position(33354, 31126, 5), - [4] = Position(33355, 31126, 5) + [4] = Position(33355, 31126, 5), } local function puzzle(position, itemId, itemTransform) if Tile(position):getItemById(itemId) then @@ -55,7 +55,7 @@ local positions = { { x = 33349, y = 31124, z = 5 }, { x = 33349, y = 31125, z = 5 }, { x = 33349, y = 31126, z = 5 }, - { x = 33349, y = 31127, z = 5 } + { x = 33349, y = 31127, z = 5 }, } for index, value in pairs(positions) do diff --git a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/analyser.lua b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/analyser.lua index dc5ce397c6c..17b7ffbc976 100644 --- a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/analyser.lua +++ b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/analyser.lua @@ -15,8 +15,7 @@ function cultsOfTibiaAnalyser.onUse(player, item, fromPosition, target, toPositi end if player:getStorageValue(Storage.CultsOfTibia.Life.Mission) == 4 then - if target:getPosition() == sqm or target:getPosition() == Position(sqm.x, sqm.y + 1, sqm.z) - or target:getPosition() == Position(sqm.x, sqm.y + 2, sqm.z) then + if target:getPosition() == sqm or target:getPosition() == Position(sqm.x, sqm.y + 1, sqm.z) or target:getPosition() == Position(sqm.x, sqm.y + 2, sqm.z) then player:setStorageValue(Storage.CultsOfTibia.Life.Mission, 5) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Well done! The water is analyzed.") end diff --git a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/bosses_levers.lua b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/bosses_levers.lua index 860d5fbfd50..529fa68dc26 100644 --- a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/bosses_levers.lua +++ b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/bosses_levers.lua @@ -1,6 +1,6 @@ local transformid = { [8911] = 8912, - [8912] = 8911 + [8912] = 8911, } local geyser = { @@ -15,7 +15,7 @@ local geyser = { [9] = Position(33135, 31926, 15), [10] = Position(33128, 31929, 15), [11] = Position(33133, 31930, 15), - [12] = Position(33127, 31933, 15) + [12] = Position(33127, 31933, 15), } local function spawnStolenSoul(t_time) @@ -26,7 +26,7 @@ local function spawnStolenSoul(t_time) return true end local newArea = Position(math.random(a1.x, a2.x), math.random(a1.y, a2.y), math.random(a1.z, a2.z)) - Game.createMonster(math.random(1, 2) == 1 and 'Stolen Soul' or 'Soul Reaper', newArea) + Game.createMonster(math.random(1, 2) == 1 and "Stolen Soul" or "Soul Reaper", newArea) t_time = 31 end addEvent(spawnStolenSoul, 1000, t_time - 1) @@ -57,8 +57,8 @@ local function spawnDarkSoul(area, t_time) for _x = sA1.x, sA2.x, 1 do for _y = sA1.y, sA2.y, 1 do local tileMonster = Tile(Position(_x, _y, sA1.z)):getTopCreature() - if tileMonster and tileMonster:isMonster() and tileMonster:getName() == 'Dark Soul' then - monster[#monster+1] = tileMonster + if tileMonster and tileMonster:isMonster() and tileMonster:getName() == "Dark Soul" then + monster[#monster + 1] = tileMonster end end end @@ -69,7 +69,7 @@ local function spawnDarkSoul(area, t_time) end -- spawn local newPos = Position(math.random(sA1.x, sA2.x), math.random(sA1.y, sA2.y), math.random(sA1.z, sA2.z)) - Game.createMonster('Dark Soul', newPos) + Game.createMonster("Dark Soul", newPos) end addEvent(spawnDarkSoul, 1000, area, (esperandoPlayer and 1 or 30)) else @@ -83,7 +83,7 @@ local function transformMonster(itid, action, monster, frompos, topos, _temp) local tempo = _temp for _x = frompos.x, topos.x, 1 do local tile = Tile(Position(_x, frompos.y, frompos.z)) - if (_x % 2 == 0) then + if _x % 2 == 0 then tempo = tempo + 1 if tile then if tile:getItemCountById(itid) < 1 then @@ -163,8 +163,8 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition local frompos = Position(33151, 31942, 15) -- Checagem local topos = Position(33176, 31966, 15) -- Checagem - if (isPlayerInArea(frompos, topos)) then - player:sendCancelMessage('The room is full.') + if isPlayerInArea(frompos, topos) then + player:sendCancelMessage("The room is full.") return true end @@ -186,14 +186,14 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition nplayer:setStorageValue(Storage.CultsOfTibia.Barkless.BossTimer, os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN)) nplayer:teleportTo(Position(33161, 31959, 15), true) nplayer:sendBosstiaryCooldownTimer() - convertTable[#convertTable+1] = nplayer:getId() + convertTable[#convertTable + 1] = nplayer:getId() nplayer:getPosition():sendMagicEffect(CONST_ME_TELEPORT) end end Game.createMonster("Wine Cask", Position(33162, 31945, 15)) local leiden = Game.createMonster("Leiden", Position(33162, 31950, 15)) leiden:setHealth(leiden:getHealth() / 2) - kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33121, 31951, 15), "You were kicked for exceeding the time limit within the boss room.", '', 60, true, ittable, blockmonsters) + kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33121, 31951, 15), "You were kicked for exceeding the time limit within the boss room.", "", 60, true, ittable, blockmonsters) end end if item:getActionId() == 5502 and item:getId() == 8912 then -- The False God @@ -210,8 +210,8 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition local frompos = Position(33152, 31908, 15) -- Checagem local topos = Position(33175, 31923, 15) -- Checagem - if (isPlayerInArea(frompos, topos)) then - player:sendCancelMessage('The room is full.') + if isPlayerInArea(frompos, topos) then + player:sendCancelMessage("The room is full.") return true end @@ -232,7 +232,7 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition if nplayer and nplayer:isPlayer() then nplayer:setStorageValue(Storage.CultsOfTibia.Minotaurs.BossTimer, os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN)) nplayer:teleportTo(Position(33169, 31915, 15), true) - convertTable[#convertTable+1] = nplayer:getId() + convertTable[#convertTable + 1] = nplayer:getId() player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) end end @@ -241,7 +241,7 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition addEvent(transformMonster, 13 * 15000, 3, 3, "Sphere Of Wrath", {}, {}, 0) Game.createMonster("The False God", Position(33159, 31914, 15)) -- funçao - kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33181, 31894, 15), "You were kicked for exceeding the time limit within the boss room.", '', 60, true, ittable, blockmonsters) + kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33181, 31894, 15), "You were kicked for exceeding the time limit within the boss room.", "", 60, true, ittable, blockmonsters) end end @@ -259,8 +259,8 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition local frompos = Position(33084, 31907, 15) -- Checagem local topos = Position(33114, 31933, 15) -- Checagem - if (isPlayerInArea(frompos, topos)) then - player:sendCancelMessage('It looks like there is someone inside.') + if isPlayerInArea(frompos, topos) then + player:sendCancelMessage("It looks like there is someone inside.") return true end @@ -281,11 +281,11 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition if nplayer and nplayer:isPlayer() then nplayer:setStorageValue(Storage.CultsOfTibia.Humans.BossTimer, os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN)) nplayer:teleportTo(Position(33098, 31921, 15), true) - convertTable[#convertTable+1] = nplayer:getId() + convertTable[#convertTable + 1] = nplayer:getId() player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) end end - kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33091, 31963, 15), "You were kicked for exceeding the time limit within the boss room.", '', 60, true, ittable, blockmonsters) + kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33091, 31963, 15), "You were kicked for exceeding the time limit within the boss room.", "", 60, true, ittable, blockmonsters) Game.createMonster("Pillar of Summoning", Position(33093, 31919, 15)) Game.createMonster("Pillar of Death", Position(33098, 31915, 15)) Game.createMonster("Pillar of Protection", Position(33103, 31919, 15)) @@ -314,7 +314,7 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition local topos = Position(33142, 31936, 15) -- Checagem if isPlayerInArea(frompos, topos) then - player:sendCancelMessage('It looks like there is someone inside.') + player:sendCancelMessage("It looks like there is someone inside.") return true end @@ -335,11 +335,11 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition if nplayer and nplayer:isPlayer() then nplayer:setStorageValue(Storage.CultsOfTibia.Misguided.BossTimer, os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN)) nplayer:teleportTo(Position(33130, 31919, 15), true) - convertTable[#convertTable+1] = nplayer:getId() + convertTable[#convertTable + 1] = nplayer:getId() player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) end end - kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33109, 31887, 15), "You were kicked for exceeding the time limit within the boss room.", '', 60, true, ittable, blockmonsters) + kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33109, 31887, 15), "You were kicked for exceeding the time limit within the boss room.", "", 60, true, ittable, blockmonsters) Game.createMonster("The Sinister Hermit Dirty", Position(33131, 31925, 15)) ativarGeyser() end @@ -359,8 +359,8 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition local frompos = Position(33123, 31846, 15) -- Checagem local topos = Position(33149, 31871, 15) -- Checagem - if (isPlayerInArea(frompos, topos)) then - player:sendCancelMessage('It looks like there is someone inside.') + if isPlayerInArea(frompos, topos) then + player:sendCancelMessage("It looks like there is someone inside.") return true end @@ -381,7 +381,7 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition if nplayer and nplayer:isPlayer() then nplayer:setStorageValue(Storage.CultsOfTibia.Orcs.BossTimer, os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN)) nplayer:teleportTo(Position(33137, 31867, 15), true) - convertTable[#convertTable+1] = nplayer:getId() + convertTable[#convertTable + 1] = nplayer:getId() player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) end end @@ -406,7 +406,7 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition Position(33133, 31856, 15), Position(33140, 31856, 15), Position(33140, 31863, 15), - Position(33133, 31863, 15) + Position(33133, 31863, 15), } -- criando os itens for _, position in pairs(itensToMonster) do @@ -429,7 +429,7 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition Game.createMonster("Containment Machine", Position(33133, 31864, 15)):registerEvent("MachineDeath") Game.createMonster("The Armored Voidborn", Position(33135, 31859, 15)):registerEvent("MachineDeath") - kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33179, 31840, 15), "You were kicked for exceeding the time limit within the boss room.", '', 60, true, ittable, blockmonsters) + kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33179, 31840, 15), "You were kicked for exceeding the time limit within the boss room.", "", 60, true, ittable, blockmonsters) end end if item:getActionId() == 5505 then -- Boss da areia @@ -446,8 +446,8 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition local frompos = Position(33087, 31848, 15) -- Checagem local topos = Position(33109, 31871, 15) -- Checagem - if (isPlayerInArea(frompos, topos)) then - player:sendCancelMessage('It looks like there is someone inside.') + if isPlayerInArea(frompos, topos) then + player:sendCancelMessage("It looks like there is someone inside.") return true end @@ -478,14 +478,14 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition if nplayer and nplayer:isPlayer() then nplayer:setStorageValue(Storage.CultsOfTibia.Life.BossTimer, os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN)) nplayer:teleportTo(Position(33099, 31864, 15), true) - convertTable[#convertTable+1] = nplayer:getId() + convertTable[#convertTable + 1] = nplayer:getId() player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) end end Game.createMonster("the sandking fake", Position(33099, 31858, 15)):registerEvent("SandkingThink") Game.setStorageValue("sandking", 1) - kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33459, 32269, 10), "You were kicked for exceeding the time limit within the boss room.", '', 60, true, ittable, blockmonsters) + kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33459, 32269, 10), "You were kicked for exceeding the time limit within the boss room.", "", 60, true, ittable, blockmonsters) end end @@ -493,13 +493,13 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition if item:getActionId() == 5506 then if player:getPosition() == Position(33074, 31884, 15) and item:getId() == 8912 then local convertTable = {} - convertTable[#convertTable+1] = player:getId() + convertTable[#convertTable + 1] = player:getId() local frompos = Position(33023, 31904, 14) -- Checagem local topos = Position(33052, 31932, 15) -- Checagem - if (isPlayerInArea(frompos, topos)) then - player:sendCancelMessage('It looks like there is someone inside.') + if isPlayerInArea(frompos, topos) then + player:sendCancelMessage("It looks like there is someone inside.") return true end @@ -510,7 +510,7 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition for _z = pt1.z, pt2.z, 1 do local nplayer = Tile(Position(_x, _y, _z)):getTopCreature() if nplayer and nplayer:isPlayer() then - convertTable[#convertTable+1] = nplayer:getId() + convertTable[#convertTable + 1] = nplayer:getId() end end end @@ -524,14 +524,14 @@ function cultsOfTibiaLevers.onUse(player, item, fromPosition, itemEx, toPosition end end - Game.createMonster('The Remorseless Corruptor', Position(33039, 31922, 15)) - Game.createMonster('Zarcorix Of Yalahar', Position(33039, 31921, 15)):registerEvent("YalahariHealth") - Game.createMonster('Stolen Soul', Position(33039, 31920, 15)) - Game.createMonster('Soul Reaper', Position(33039, 31919, 15)) + Game.createMonster("The Remorseless Corruptor", Position(33039, 31922, 15)) + Game.createMonster("Zarcorix Of Yalahar", Position(33039, 31921, 15)):registerEvent("YalahariHealth") + Game.createMonster("Stolen Soul", Position(33039, 31920, 15)) + Game.createMonster("Soul Reaper", Position(33039, 31919, 15)) spawnDarkSoul(1, 30) spawnDarkSoul(2, 30) spawnStolenSoul(30) - kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33072, 31867, 15), "You were kicked for exceeding the time limit within the boss room.", '', 60, true, ittable, blockmonsters) + kickerPlayerRoomAfferMin(convertTable, frompos, topos, Position(33072, 31867, 15), "You were kicked for exceeding the time limit within the boss room.", "", 60, true, ittable, blockmonsters) end end return true diff --git a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/counter_agent.lua b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/counter_agent.lua index 35576da2cbf..b59b1508430 100644 --- a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/counter_agent.lua +++ b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/counter_agent.lua @@ -7,8 +7,7 @@ local config = { [6] = Position(33482, 32234, 10), [7] = Position(33492, 32234, 10), [8] = Position(33491, 32227, 10), - [9] = Position(33492, 32226, 10) - + [9] = Position(33492, 32226, 10), } local cultsOfTibiaCounter = Action() diff --git a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/cult_symbol.lua b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/cult_symbol.lua index b2075c911b3..80a23f7eb63 100644 --- a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/cult_symbol.lua +++ b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/cult_symbol.lua @@ -12,7 +12,6 @@ local config = { [Position(32740, 31494, 9)] = { base = 10 }, [Position(32741, 31494, 9)] = { base = 11 }, [Position(32745, 31523, 9)] = { base = 12 }, - } local cultsOfTibiaCult = Action() @@ -30,7 +29,7 @@ function cultsOfTibiaCult.onUse(player, item, fromPosition, target, toPosition, for pos, pid in pairs(config) do if item:getPosition():compare(pos) then mancha = pid - break; + break end end local stgTemp = math.max(player:getStorageValue(Storage.CultsOfTibia.Barkless.Temp), 0) @@ -42,7 +41,7 @@ function cultsOfTibiaCult.onUse(player, item, fromPosition, target, toPosition, manchaMeta:updateFlag(base) player:setStorageValue(Storage.CultsOfTibia.Barkless.Temp, manchaMeta:getNumber()) player:setStorageValue(Storage.CultsOfTibia.Barkless.Objects, stg + 1) - if (player:getStorageValue(Storage.CultsOfTibia.Barkless.Objects) >= 10) then + if player:getStorageValue(Storage.CultsOfTibia.Barkless.Objects) >= 10 then player:setStorageValue(Storage.CultsOfTibia.Barkless.Mission, 4) end local msg = (player:getStorageValue(Storage.CultsOfTibia.Barkless.Objects) < 10 and "Your body reacts to this strange green substance as you reach out to touch it. You feel an urge for more of this energy." or "You gathered an impressive amount of power from simply touching the strange green symbols of the Barkless. But how...?") diff --git a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/last_object.lua b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/last_object.lua index a7b9f108fb4..565da77e68c 100644 --- a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/last_object.lua +++ b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/last_object.lua @@ -10,8 +10,7 @@ local config = { [9] = Position(32746, 31462, 8), [10] = Position(32683, 31537, 9), [11] = Position(32740, 31494, 9), -- Bancada Cult Object - [12] = Position(32741, 31494, 9) -- Bancada Cult Object - + [12] = Position(32741, 31494, 9), -- Bancada Cult Object } local cultsOfTibiaLastObject = Action() diff --git a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/lever_mota.lua b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/lever_mota.lua index 8890cd1e5fb..03aaf3b2004 100644 --- a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/lever_mota.lua +++ b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/lever_mota.lua @@ -1,6 +1,6 @@ local transformid = { [9110] = 9111, - [9111] = 9110 + [9111] = 9110, } local cultsOfTibiaLeverMota = Action() @@ -15,15 +15,15 @@ function cultsOfTibiaLeverMota.onUse(player, item, fromPosition, itemEx, toPosit end for i = 33300, 33305, 1 do local newpos = Position(i, 32144, 10) - if (Tile(newpos):getItemCountById(pedraid) == 1) then + if Tile(newpos):getItemCountById(pedraid) == 1 then posPedra = newpos end newpos = Position(i, 32146, 10) - if (Tile(newpos):getItemCountById(pedraid) == 1) then + if Tile(newpos):getItemCountById(pedraid) == 1 then posPedra2 = newpos end newpos = Position(i, 32148, 10) - if (Tile(newpos):getItemCountById(pedraid) == 1) then + if Tile(newpos):getItemCountById(pedraid) == 1 then posPedra3 = newpos end end diff --git a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/magnifier.lua b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/magnifier.lua index 28e14319899..449e79dc115 100644 --- a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/magnifier.lua +++ b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/magnifier.lua @@ -15,7 +15,7 @@ function cultsOfTibiaMagnifier.onUse(player, item, fromPosition, target, toPosit return false end - if (table.contains({ 2622, 2601, 2596, 2612, 2618 }, target:getId())) then + if table.contains({ 2622, 2601, 2596, 2612, 2618 }, target:getId()) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Nothing special. This picture looks genuine.") target:getPosition():sendMagicEffect(CONST_ME_POFF) elseif target:getPosition() == sqm and target:getId() == 2613 and player:getStorageValue(Storage.CultsOfTibia.MotA.Mission) == 8 then diff --git a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/misguided.lua b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/misguided.lua index d2962f5d6c6..3c555338d21 100644 --- a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/misguided.lua +++ b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/misguided.lua @@ -20,7 +20,7 @@ local function cleanMMap(frompos, topos) end local function changeMap(mapName) - local map = (type(Game.getStorageValue("cultsMisguidedMap")) == "string" and Game.getStorageValue("cultsMisguidedMap") or 'illusion') + local map = (type(Game.getStorageValue("cultsMisguidedMap")) == "string" and Game.getStorageValue("cultsMisguidedMap") or "illusion") if map:lower() == mapName:lower() then return true end @@ -30,10 +30,10 @@ local function changeMap(mapName) cleanMMap(Position(32512, 32364, 10), Position(32526, 32474, 10)) if mapName:lower() == "illusion" then Game.setStorageValue("cultsMisguidedMap", "illusion") - Game.loadMap(DATA_DIRECTORY .. '/world/quest/cults_of_tibia/misguided/illusion.otbm') + Game.loadMap(DATA_DIRECTORY .. "/world/quest/cults_of_tibia/misguided/illusion.otbm") else Game.setStorageValue("cultsMisguidedMap", "reality") - Game.loadMap(DATA_DIRECTORY .. '/world/quest/cults_of_tibia/misguided/reality.otbm') + Game.loadMap(DATA_DIRECTORY .. "/world/quest/cults_of_tibia/misguided/reality.otbm") addEvent(changeMap, 15000, "illusion") end end @@ -44,7 +44,7 @@ function cultsOfTibiaMisguided.onUse(player, item, position, target, targetPosit if not monster then return false end - local map = (type(Game.getStorageValue("cultsMap")) == "string" and Game.getStorageValue("cultsMap") or 'illusion') + local map = (type(Game.getStorageValue("cultsMap")) == "string" and Game.getStorageValue("cultsMap") or "illusion") if monster:getName():lower() == "misguided bully" or monster:getName():lower() == "misguided thief" then player:setStorageValue(Storage.CultsOfTibia.Misguided.Monsters, 0) item:remove(1) diff --git a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/torch.lua b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/torch.lua index b0a8b055a9f..c60e5d024b8 100644 --- a/data-otservbr-global/scripts/actions/quests/cults_of_tibia/torch.lua +++ b/data-otservbr-global/scripts/actions/quests/cults_of_tibia/torch.lua @@ -1,5 +1,5 @@ local config = { - { position = Position(32396, 31806, 8), itemId = 1295 } + { position = Position(32396, 31806, 8), itemId = 1295 }, } local cultsOfTibiaTouch = Action() diff --git a/data-otservbr-global/scripts/actions/quests/dangerous_depth/crude_lava_pump_achievements.lua b/data-otservbr-global/scripts/actions/quests/dangerous_depth/crude_lava_pump_achievements.lua index 26ffdf895ca..ad6b13cda90 100644 --- a/data-otservbr-global/scripts/actions/quests/dangerous_depth/crude_lava_pump_achievements.lua +++ b/data-otservbr-global/scripts/actions/quests/dangerous_depth/crude_lava_pump_achievements.lua @@ -33,29 +33,28 @@ function dangerousDepthAchievements.onUse(player, item) if positionItem == WarzoneIV then -- Warzone VI if player:getStorageValue(Storage.DangerousDepths.Bosses.TheBaronFromBelowAchiev) < 1 then - player:addAchievement('Buried the Baron') + player:addAchievement("Buried the Baron") player:setStorageValue(Storage.DangerousDepths.Bosses.TheBaronFromBelowAchiev, 1) end end if positionItem == WarzoneV then -- Warzone V if player:getStorageValue(Storage.DangerousDepths.Bosses.TheCountOfTheCoreAchiev) < 1 then - player:addAchievement('His Days are Counted') + player:addAchievement("His Days are Counted") player:setStorageValue(Storage.DangerousDepths.Bosses.TheCountOfTheCoreAchiev, 1) end end if positionItem == WarzoneVI then -- Warzone IV if player:getStorageValue(Storage.DangerousDepths.Bosses.TheDukeOfTheDepthsAchiev) < 1 then - player:addAchievement('Duked It Out') + player:addAchievement("Duked It Out") player:setStorageValue(Storage.DangerousDepths.Bosses.TheDukeOfTheDepthsAchiev, 1) end end if player:getStorageValue(Storage.DangerousDepths.Bosses.LastAchievement) < 1 then - if player:getStorageValue(Storage.DangerousDepths.Bosses.TheDukeOfTheDepthsAchiev) == 1 and player:getStorageValue(Storage.DangerousDepths.Bosses.TheBaronFromBelowAchiev) == 1 - and player:getStorageValue(Storage.DangerousDepths.Bosses.TheCountOfTheCoreAchiev) == 1 then - player:addAchievement('Death in the Depths') + if player:getStorageValue(Storage.DangerousDepths.Bosses.TheDukeOfTheDepthsAchiev) == 1 and player:getStorageValue(Storage.DangerousDepths.Bosses.TheBaronFromBelowAchiev) == 1 and player:getStorageValue(Storage.DangerousDepths.Bosses.TheCountOfTheCoreAchiev) == 1 then + player:addAchievement("Death in the Depths") player:setStorageValue(Storage.DangerousDepths.Bosses.LastAchievement, 1) end end diff --git a/data-otservbr-global/scripts/actions/quests/dangerous_depth/gnomish_pesticide.lua b/data-otservbr-global/scripts/actions/quests/dangerous_depth/gnomish_pesticide.lua index 29a80e5590f..68fe03c67e9 100644 --- a/data-otservbr-global/scripts/actions/quests/dangerous_depth/gnomish_pesticide.lua +++ b/data-otservbr-global/scripts/actions/quests/dangerous_depth/gnomish_pesticide.lua @@ -29,7 +29,7 @@ function dangerousDepthPesticide.onUse(player, item, fromPosition, target, toPos target:transform(30730) end end - elseif (table.contains({ 27495, 27496, 27497 }, target:getId())) then + elseif table.contains({ 27495, 27496, 27497 }, target:getId()) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Only half-decayed diremaw corpses can be neutralised with these pesticides.") return true end diff --git a/data-otservbr-global/scripts/actions/quests/dangerous_depth/lever_barrel.lua b/data-otservbr-global/scripts/actions/quests/dangerous_depth/lever_barrel.lua index 977ac022ad9..327878284a0 100644 --- a/data-otservbr-global/scripts/actions/quests/dangerous_depth/lever_barrel.lua +++ b/data-otservbr-global/scripts/actions/quests/dangerous_depth/lever_barrel.lua @@ -1,6 +1,6 @@ local transformid = { [2772] = 2773, - [2773] = 2772 + [2773] = 2772, } local config = { diff --git a/data-otservbr-global/scripts/actions/quests/dark_trails/corpse.lua b/data-otservbr-global/scripts/actions/quests/dark_trails/corpse.lua index 9b09c1103c1..0e320c18445 100644 --- a/data-otservbr-global/scripts/actions/quests/dark_trails/corpse.lua +++ b/data-otservbr-global/scripts/actions/quests/dark_trails/corpse.lua @@ -2,10 +2,10 @@ local darkCorpse = Action() function darkCorpse.onUse(player) if player:getStorageValue(Storage.DarkTrails.Mission14) == 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Quandon has been murdered! You should report to Sholley about it!.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Quandon has been murdered! You should report to Sholley about it!.") player:setStorageValue(Storage.DarkTrails.Mission14, 2) elseif player:getStorageValue(Storage.DarkTrails.Mission14) == 2 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'This is empty!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "This is empty!") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/dark_trails/lever_death_priest_shargon.lua b/data-otservbr-global/scripts/actions/quests/dark_trails/lever_death_priest_shargon.lua index 5f4b902d650..d2074390aa8 100644 --- a/data-otservbr-global/scripts/actions/quests/dark_trails/lever_death_priest_shargon.lua +++ b/data-otservbr-global/scripts/actions/quests/dark_trails/lever_death_priest_shargon.lua @@ -6,14 +6,14 @@ local setting = { { x = 33584, y = 31844, z = 10 }, { x = 33585, y = 31844, z = 10 }, { x = 33586, y = 31844, z = 10 }, - { x = 33587, y = 31844, z = 10 } + { x = 33587, y = 31844, z = 10 }, }, newPositions = { { x = 33486, y = 32120, z = 9 }, { x = 33486, y = 32120, z = 9 }, { x = 33486, y = 32120, z = 9 }, { x = 33486, y = 32120, z = 9 }, - { x = 33486, y = 32120, z = 9 } + { x = 33486, y = 32120, z = 9 }, }, minionPositions = { { x = 33482, y = 32105, z = 9 }, @@ -25,8 +25,8 @@ local setting = { { x = 33490, y = 32106, z = 9 }, { x = 33492, y = 32109, z = 9 }, { x = 33492, y = 32112, z = 9 }, - { x = 33490, y = 32112, z = 9 } - } + { x = 33490, y = 32112, z = 9 }, + }, } local leverDeathPriestShargon = Action() @@ -44,7 +44,7 @@ function leverDeathPriestShargon.onUse(player, item, fromPosition, target, toPos player:sendCancelMessage("You need 5 of players to fight with Death Priest Shargon.") return true end - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end for i = 1, #config.minionPositions do diff --git a/data-otservbr-global/scripts/actions/quests/dark_trails/lever_the_ravager.lua b/data-otservbr-global/scripts/actions/quests/dark_trails/lever_the_ravager.lua index 504189ab0d2..f9c5d4a7231 100644 --- a/data-otservbr-global/scripts/actions/quests/dark_trails/lever_the_ravager.lua +++ b/data-otservbr-global/scripts/actions/quests/dark_trails/lever_the_ravager.lua @@ -5,20 +5,20 @@ local setting = { Position(33417, 32102, 10), Position(33418, 32102, 10), Position(33419, 32102, 10), - Position(33420, 32102, 10) + Position(33420, 32102, 10), }, newPositions = { Position(33487, 32088, 8), Position(33487, 32088, 8), Position(33487, 32088, 8), - Position(33487, 32088, 8) + Position(33487, 32088, 8), }, canopicJarPositions = { Position(33486, 32081, 8), Position(33488, 32081, 8), Position(33486, 32083, 8), - Position(33488, 32083, 8) - } + Position(33488, 32083, 8), + }, } local leverTheRavager = Action() @@ -36,7 +36,7 @@ function leverTheRavager.onUse(player, item, fromPosition, target, toPosition, i player:sendCancelMessage("You need 4 of players to fight with The Ravager.") return true end - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end for i = 1, #setting.canopicJarPositions do diff --git a/data-otservbr-global/scripts/actions/quests/dawnport/legion_helmet.lua b/data-otservbr-global/scripts/actions/quests/dawnport/legion_helmet.lua index 9d6d9e58e13..a692ed8618c 100644 --- a/data-otservbr-global/scripts/actions/quests/dawnport/legion_helmet.lua +++ b/data-otservbr-global/scripts/actions/quests/dawnport/legion_helmet.lua @@ -1,11 +1,11 @@ local sacrificialPosition = { Position(32111, 31933, 8), - Position(32112, 31933, 8) + Position(32112, 31933, 8), } local effectPosition = { Position(32110, 31933, 8), - Position(32113, 31933, 8) + Position(32113, 31933, 8), } local sacredSnake = Action() diff --git a/data-otservbr-global/scripts/actions/quests/dawnport/vocation_reward.lua b/data-otservbr-global/scripts/actions/quests/dawnport/vocation_reward.lua index 6515f0a2e05..e7ffb0f805b 100644 --- a/data-otservbr-global/scripts/actions/quests/dawnport/vocation_reward.lua +++ b/data-otservbr-global/scripts/actions/quests/dawnport/vocation_reward.lua @@ -15,7 +15,7 @@ local reward = { commonItems = { { id = 16277, amount = 1 }, -- Adventurer's stone -- Parchment - { id = 2819, amount = 1, text = adventurersGuildText } + { id = 2819, amount = 1, text = adventurersGuildText }, }, vocationItems = { -- Sorcerer @@ -25,7 +25,7 @@ local reward = { { id = 3559, amount = 1 }, -- Leather legs { id = 3552, amount = 1 }, -- Leather boots { id = 3074, amount = 1 }, -- Wand of vortex - { id = 3059, amount = 1 } -- Spellbook + { id = 3059, amount = 1 }, -- Spellbook }, -- Druid [14026] = { @@ -34,7 +34,7 @@ local reward = { { id = 3559, amount = 1 }, -- Leather legs { id = 3552, amount = 1 }, -- Leather boots { id = 3066, amount = 1 }, -- Snakebite rod - { id = 3059, amount = 1 } -- Spellbook + { id = 3059, amount = 1 }, -- Spellbook }, -- Paladin [14027] = { @@ -45,7 +45,7 @@ local reward = { { id = 3350, amount = 1 }, -- Bow { id = 3277, amount = 1 }, -- Spear { id = 35562, amount = 1 }, -- Quiver - { id = 3447, amount = 100 } -- Arrows + { id = 3447, amount = 100 }, -- Arrows }, -- Knight [14028] = { @@ -56,9 +56,9 @@ local reward = { { id = 7774, amount = 1 }, -- Jagged sword { id = 17824, amount = 1 }, -- Swampling club { id = 7773, amount = 1 }, -- steel axe - { id = 3409, amount = 1 } -- Steel shield - } - } + { id = 3409, amount = 1 }, -- Steel shield + }, + }, } local vocationReward = Action() @@ -84,19 +84,12 @@ function vocationReward.onUse(player, item, fromPosition, itemEx, toPosition) end -- Check if enough weight capacity if player:getFreeCapacity() < rewardsWeight then - player:sendTextMessage( - MESSAGE_EVENT_ADVANCE, - "You have found a " .. getItemName(reward.container) .. - ". Weighing " .. (rewardsWeight / 100) .. " oz it is too heavy." - ) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a " .. getItemName(reward.container) .. ". Weighing " .. (rewardsWeight / 100) .. " oz it is too heavy.") return true end -- Check if enough free slots if player:getFreeBackpackSlots() < 1 then - player:sendTextMessage( - MESSAGE_EVENT_ADVANCE, - "You have found a " .. getItemName(reward.container) .. ". There is no room." - ) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a " .. getItemName(reward.container) .. ". There is no room.") return true end -- Create reward container diff --git a/data-otservbr-global/scripts/actions/quests/demon_oak/demon_oak.lua b/data-otservbr-global/scripts/actions/quests/demon_oak/demon_oak.lua index 052e838cad1..a3de22b2240 100644 --- a/data-otservbr-global/scripts/actions/quests/demon_oak/demon_oak.lua +++ b/data-otservbr-global/scripts/actions/quests/demon_oak/demon_oak.lua @@ -1,22 +1,22 @@ local config = { demonOakIds = { 914, 915, 916, 917 }, sounds = { - 'MY ROOTS ARE SHARP AS A SCYTHE! FEEL IT?!?', - 'CURSE YOU!', - 'RISE, MINIONS, RISE FROM THE DEAD!!!!', - 'AHHHH! YOUR BLOOD MAKES ME STRONG!', - 'GET THE BONES, HELLHOUND! GET THEM!!', - 'GET THERE WHERE I CAN REACH YOU!!!', - 'ETERNAL PAIN AWAITS YOU! NICE REWARD, HUH?!?!', - 'YOU ARE GOING TO PAY FOR EACH HIT WITH DECADES OF TORTURE!!', - 'ARGG! TORTURE IT!! KILL IT SLOWLY MY MINION!!' + "MY ROOTS ARE SHARP AS A SCYTHE! FEEL IT?!?", + "CURSE YOU!", + "RISE, MINIONS, RISE FROM THE DEAD!!!!", + "AHHHH! YOUR BLOOD MAKES ME STRONG!", + "GET THE BONES, HELLHOUND! GET THEM!!", + "GET THERE WHERE I CAN REACH YOU!!!", + "ETERNAL PAIN AWAITS YOU! NICE REWARD, HUH?!?!", + "YOU ARE GOING TO PAY FOR EACH HIT WITH DECADES OF TORTURE!!", + "ARGG! TORTURE IT!! KILL IT SLOWLY MY MINION!!", }, bonebeastChance = 90, bonebeastCount = 4, waves = 10, questArea = { fromPosition = { x = 32706, y = 32345, z = 7 }, - toPosition = { x = 32725, y = 32357, z = 7 } + toPosition = { x = 32725, y = 32357, z = 7 }, }, summonPositions = { { x = 32714, y = 32348, z = 7 }, @@ -26,32 +26,32 @@ local config = { { x = 32716, y = 32354, z = 7 }, { x = 32719, y = 32354, z = 7 }, { x = 32721, y = 32351, z = 7 }, - { x = 32719, y = 32348, z = 7 } + { x = 32719, y = 32348, z = 7 }, }, summons = { [914] = { - [5] = { 'Spectre', 'Blightwalker', 'Braindeath', 'Demon' }, - [10] = { 'Betrayed Wraith', 'Betrayed Wraith' } + [5] = { "Spectre", "Blightwalker", "Braindeath", "Demon" }, + [10] = { "Betrayed Wraith", "Betrayed Wraith" }, }, [915] = { - [5] = { 'Plaguesmith', 'Plaguesmith', 'Blightwalker' }, - [10] = { 'Dark Torturer', 'Blightwalker' } + [5] = { "Plaguesmith", "Plaguesmith", "Blightwalker" }, + [10] = { "Dark Torturer", "Blightwalker" }, }, [916] = { - [5] = { 'Banshee', 'Plaguesmith', 'Hellhound' }, - [10] = { 'Grim Reaper' } + [5] = { "Banshee", "Plaguesmith", "Hellhound" }, + [10] = { "Grim Reaper" }, }, [917] = { - [5] = { 'Plaguesmith', 'Hellhound', 'Hellhound' }, - [10] = { 'Undead Dragon', 'Hand of Cursed Fate' } - } + [5] = { "Plaguesmith", "Hellhound", "Hellhound" }, + [10] = { "Undead Dragon", "Hand of Cursed Fate" }, + }, }, storages = { [914] = Storage.DemonOak.AxeBlowsBird, [915] = Storage.DemonOak.AxeBlowsLeft, [916] = Storage.DemonOak.AxeBlowsRight, - [917] = Storage.DemonOak.AxeBlowsFace - } + [917] = Storage.DemonOak.AxeBlowsFace, + }, } local function getRandomSummonPosition() @@ -79,13 +79,13 @@ function demonOak.onUse(player, item, fromPosition, target, toPosition, isHotkey local isDefeated = totalProgress == (#config.demonOakIds * (config.waves + 1)) if (config.killAllBeforeCut or isDefeated) and hasMonsters then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You need to kill all monsters first.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You need to kill all monsters first.") return true end if isDefeated then player:teleportTo(DEMON_OAK_KICK_POSITION) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Tell Oldrak about your great victory against the demon oak.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Tell Oldrak about your great victory against the demon oak.") player:setStorageValue(Storage.DemonOak.Done, 1) player:setStorageValue(Storage.DemonOak.Progress, 3) return true @@ -103,7 +103,7 @@ function demonOak.onUse(player, item, fromPosition, target, toPosition, isHotkey if summons and summons[progress] then -- Summon a single demon on the last hit if isLastCut then - Game.createMonster('Demon', getRandomSummonPosition(), false, true) + Game.createMonster("Demon", getRandomSummonPosition(), false, true) -- Summon normal monsters otherwise else @@ -115,14 +115,14 @@ function demonOak.onUse(player, item, fromPosition, target, toPosition, isHotkey -- if it is not the 5th or 10th there is only a chance to summon bonebeasts elseif math.random(100) >= config.bonebeastChance then for i = 1, config.bonebeastCount do - Game.createMonster('Bonebeast', getRandomSummonPosition(), false, true) + Game.createMonster("Bonebeast", getRandomSummonPosition(), false, true) end end - player:say(isLastCut and 'HOW IS THAT POSSIBLE?!? MY MASTER WILL CRUSH YOU!! AHRRGGG!' or config.sounds[math.random(#config.sounds)], TALKTYPE_MONSTER_YELL, false, player, DEMON_OAK_POSITION) + player:say(isLastCut and "HOW IS THAT POSSIBLE?!? MY MASTER WILL CRUSH YOU!! AHRRGGG!" or config.sounds[math.random(#config.sounds)], TALKTYPE_MONSTER_YELL, false, player, DEMON_OAK_POSITION) toPosition:sendMagicEffect(CONST_ME_DRAWBLOOD) player:setStorageValue(cStorage, progress + 1) - player:say('-krrrrak-', TALKTYPE_MONSTER_YELL, false, player, toPosition) + player:say("-krrrrak-", TALKTYPE_MONSTER_YELL, false, player, toPosition) doTargetCombatHealth(0, player, COMBAT_EARTHDAMAGE, -170, -210, CONST_ME_BIGPLANTS) return true end diff --git a/data-otservbr-global/scripts/actions/quests/demon_oak/demon_oak_chest.lua b/data-otservbr-global/scripts/actions/quests/demon_oak/demon_oak_chest.lua index ab85426f91a..edb598c276d 100644 --- a/data-otservbr-global/scripts/actions/quests/demon_oak/demon_oak_chest.lua +++ b/data-otservbr-global/scripts/actions/quests/demon_oak/demon_oak_chest.lua @@ -2,14 +2,14 @@ local chests = { [1002] = { itemid = 3389, count = 1 }, [1003] = { itemid = 8077, count = 1 }, [1004] = { itemid = 14768, count = 1 }, - [1005] = { itemid = 14769, count = 1 } + [1005] = { itemid = 14769, count = 1 }, } local demonOakChest = Action() function demonOakChest.onUse(player, item, fromPosition, target, toPosition, isHotkey) if chests[item.uid] then if player:getStorageValue(Storage.DemonOak.Done) ~= 2 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'It\'s empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "It's empty.") return true end @@ -17,7 +17,7 @@ function demonOakChest.onUse(player, item, fromPosition, target, toPosition, isH local itemType = ItemType(chest.itemid) if itemType then local article = itemType:getArticle() - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found ' .. (#article > 0 and article .. ' ' or '') .. itemType:getName() .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found " .. (#article > 0 and article .. " " or "") .. itemType:getName() .. ".") end player:addItem(chest.itemid, chest.count) diff --git a/data-otservbr-global/scripts/actions/quests/devil_helmet/lever.lua b/data-otservbr-global/scripts/actions/quests/devil_helmet/lever.lua index 9ebf1326f42..e5e968d5afc 100644 --- a/data-otservbr-global/scripts/actions/quests/devil_helmet/lever.lua +++ b/data-otservbr-global/scripts/actions/quests/devil_helmet/lever.lua @@ -1,6 +1,6 @@ local removePositions = { fromPos = 32593, - toPos = 32601 + toPos = 32601, } local closeId = 1270 diff --git a/data-otservbr-global/scripts/actions/quests/dreamer_challenge/documents.lua b/data-otservbr-global/scripts/actions/quests/dreamer_challenge/documents.lua index 179bc2dc8d7..7f2145c52ad 100644 --- a/data-otservbr-global/scripts/actions/quests/dreamer_challenge/documents.lua +++ b/data-otservbr-global/scripts/actions/quests/dreamer_challenge/documents.lua @@ -1,18 +1,18 @@ local config = { [768] = { - [1] = { female = 269, male = 268, msg = 'nightmare' }, - [2] = { female = 279, male = 278, msg = 'brotherhood' } + [1] = { female = 269, male = 268, msg = "nightmare" }, + [2] = { female = 279, male = 278, msg = "brotherhood" }, }, [769] = { - [1] = { female = 269, male = 268, addon = 1, msg = 'first nightmare' }, - [2] = { female = 279, male = 278, addon = 1, msg = 'first brotherhood' }, - storageValue = 2 + [1] = { female = 269, male = 268, addon = 1, msg = "first nightmare" }, + [2] = { female = 279, male = 278, addon = 1, msg = "first brotherhood" }, + storageValue = 2, }, [770] = { - [1] = { female = 269, male = 268, addon = 2, msg = 'second nightmare' }, - [2] = { female = 279, male = 278, addon = 2, msg = 'second brotherhood' }, - storageValue = 3 - } + [1] = { female = 269, male = 268, addon = 2, msg = "second nightmare" }, + [2] = { female = 279, male = 278, addon = 2, msg = "second brotherhood" }, + storageValue = 3, + }, } local dreamerDocuments = Action() @@ -33,14 +33,14 @@ function dreamerDocuments.onUse(player, item, fromPosition, target, toPosition, if player:getStorageValue(Storage.OutfitQuest.NightmareOutfit) >= useItem.storageValue or player:getStorageValue(Storage.OutfitQuest.BrotherhoodOutfit) >= useItem.storageValue then player:addOutfitAddon(choice.female, choice.addon) player:addOutfitAddon(choice.male, choice.addon) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have received the ' .. choice.msg .. ' addon!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have received the " .. choice.msg .. " addon!") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) item:remove(1) else return false end else - player:sendCancelMessage('You have already obtained this addon!') + player:sendCancelMessage("You have already obtained this addon!") end else return false @@ -50,14 +50,14 @@ function dreamerDocuments.onUse(player, item, fromPosition, target, toPosition, if player:getStorageValue(Storage.OutfitQuest.NightmareOutfit) >= 1 or player:getStorageValue(Storage.OutfitQuest.BrotherhoodOutfit) >= 1 then player:addOutfit(choice.female) player:addOutfit(choice.male) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have received the ' .. choice.msg .. ' outfit!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have received the " .. choice.msg .. " outfit!") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) item:remove(1) else return false end else - player:sendCancelMessage('You have already obtained this outfit!') + player:sendCancelMessage("You have already obtained this outfit!") end end return true diff --git a/data-otservbr-global/scripts/actions/quests/dreamer_challenge/lever_brotherhood.lua b/data-otservbr-global/scripts/actions/quests/dreamer_challenge/lever_brotherhood.lua index cafc589b4de..e0f62069758 100644 --- a/data-otservbr-global/scripts/actions/quests/dreamer_challenge/lever_brotherhood.lua +++ b/data-otservbr-global/scripts/actions/quests/dreamer_challenge/lever_brotherhood.lua @@ -1,7 +1,7 @@ local config = { [1] = { uid = 3045, position = Position(32784, 32222, 14), itemId = 7844, storageOutfit = 2 }, [2] = { uid = 3046, position = Position(32785, 32230, 14), itemId = 7846, storageOutfit = 3 }, - [3] = { uid = 3047, position = Position(32781, 32226, 14), itemId = 7845, storageOutfit = 4 } + [3] = { uid = 3047, position = Position(32781, 32226, 14), itemId = 7845, storageOutfit = 4 }, } local function revertLever(position) @@ -27,12 +27,12 @@ function dreamerBrotherhoodLever.onUse(player, item, fromPosition, target, toPos item:transform(2773) addEvent(revertLever, 4 * 1000, toPosition) elseif not diamondItem and player:getStorageValue(Storage.DreamersChallenge.LeverBrotherhood1) < 1 then - player:sendCancelMessage('You need to offer a small diamond.') + player:sendCancelMessage("You need to offer a small diamond.") else - player:sendCancelMessage('You have already used this lever!') + player:sendCancelMessage("You have already used this lever!") end else - player:sendCancelMessage('You still don\'t have permission.') + player:sendCancelMessage("You still don't have permission.") end elseif item.uid == config[2].uid then if player:getStorageValue(Storage.OutfitQuest.BrotherhoodOutfit) >= config[2].storageOutfit then @@ -45,12 +45,12 @@ function dreamerBrotherhoodLever.onUse(player, item, fromPosition, target, toPos item:transform(2773) addEvent(revertLever, 4 * 1000, toPosition) elseif not diamondItem and player:getStorageValue(Storage.DreamersChallenge.LeverBrotherhood2) < 1 then - player:sendCancelMessage('You need to offer a small diamond.') + player:sendCancelMessage("You need to offer a small diamond.") else - player:sendCancelMessage('You have already used this lever!') + player:sendCancelMessage("You have already used this lever!") end else - player:sendCancelMessage('You still don\'t have permission.') + player:sendCancelMessage("You still don't have permission.") end elseif item.uid == config[3].uid then if player:getStorageValue(Storage.OutfitQuest.BrotherhoodOutfit) >= config[3].storageOutfit then @@ -63,12 +63,12 @@ function dreamerBrotherhoodLever.onUse(player, item, fromPosition, target, toPos item:transform(2773) addEvent(revertLever, 4 * 1000, toPosition) elseif not diamondItem and player:getStorageValue(Storage.DreamersChallenge.LeverBrotherhood3) < 1 then - player:sendCancelMessage('You need to offer a small diamond.') + player:sendCancelMessage("You need to offer a small diamond.") else - player:sendCancelMessage('You have already used this lever!') + player:sendCancelMessage("You have already used this lever!") end else - player:sendCancelMessage('You still don\'t have permission.') + player:sendCancelMessage("You still don't have permission.") end end end diff --git a/data-otservbr-global/scripts/actions/quests/dreamer_challenge/lever_nightmare.lua b/data-otservbr-global/scripts/actions/quests/dreamer_challenge/lever_nightmare.lua index f6b5cad45a0..9ed136c1fdb 100644 --- a/data-otservbr-global/scripts/actions/quests/dreamer_challenge/lever_nightmare.lua +++ b/data-otservbr-global/scripts/actions/quests/dreamer_challenge/lever_nightmare.lua @@ -1,7 +1,7 @@ local config = { [1] = { uid = 3041, position = Position(32836, 32221, 14), itemId = 7844, storageOutfit = 2 }, [2] = { uid = 3042, position = Position(32837, 32229, 14), itemId = 7846, storageOutfit = 3 }, - [3] = { uid = 3043, position = Position(32833, 32225, 14), itemId = 7845, storageOutfit = 4 } + [3] = { uid = 3043, position = Position(32833, 32225, 14), itemId = 7845, storageOutfit = 4 }, } local function revertLever(position) @@ -27,12 +27,12 @@ function dreamerNightmareLever.onUse(player, item, fromPosition, target, toPosit item:transform(2773) addEvent(revertLever, 4 * 1000, toPosition) elseif not diamondItem and player:getStorageValue(Storage.DreamersChallenge.LeverNightmare1) < 1 then - player:sendCancelMessage('You need to offer a small diamond.') + player:sendCancelMessage("You need to offer a small diamond.") else - player:sendCancelMessage('You have already used this lever!') + player:sendCancelMessage("You have already used this lever!") end else - player:sendCancelMessage('You still don\'t have permission.') + player:sendCancelMessage("You still don't have permission.") end elseif item.uid == config[2].uid then if player:getStorageValue(Storage.OutfitQuest.BrotherhoodOutfit) >= config[2].storageOutfit then @@ -45,12 +45,12 @@ function dreamerNightmareLever.onUse(player, item, fromPosition, target, toPosit item:transform(2773) addEvent(revertLever, 4 * 1000, toPosition) elseif not diamondItem and player:getStorageValue(Storage.DreamersChallenge.LeverNightmare1) < 1 then - player:sendCancelMessage('You need to offer a small diamond.') + player:sendCancelMessage("You need to offer a small diamond.") else - player:sendCancelMessage('You have already used this lever!') + player:sendCancelMessage("You have already used this lever!") end else - player:sendCancelMessage('You still don\'t have permission.') + player:sendCancelMessage("You still don't have permission.") end elseif item.uid == config[3].uid then if player:getStorageValue(Storage.OutfitQuest.BrotherhoodOutfit) >= config[3].storageOutfit then @@ -63,12 +63,12 @@ function dreamerNightmareLever.onUse(player, item, fromPosition, target, toPosit item:transform(2773) addEvent(revertLever, 4 * 1000, toPosition) elseif not diamondItem and player:getStorageValue(Storage.DreamersChallenge.LeverNightmare3) < 1 then - player:sendCancelMessage('You need to offer a small diamond.') + player:sendCancelMessage("You need to offer a small diamond.") else - player:sendCancelMessage('You have already used this lever!') + player:sendCancelMessage("You have already used this lever!") end else - player:sendCancelMessage('You still don\'t have permission.') + player:sendCancelMessage("You still don't have permission.") end end end diff --git a/data-otservbr-global/scripts/actions/quests/dreamer_challenge/stone_teleport.lua b/data-otservbr-global/scripts/actions/quests/dreamer_challenge/stone_teleport.lua index 55554a74dc1..64281dea196 100644 --- a/data-otservbr-global/scripts/actions/quests/dreamer_challenge/stone_teleport.lua +++ b/data-otservbr-global/scripts/actions/quests/dreamer_challenge/stone_teleport.lua @@ -4,23 +4,23 @@ local config = { { position = Position(32878, 32270, 14), itemId = 2886 }, { position = Position(32881, 32267, 14), itemId = 3052 }, { position = Position(32881, 32273, 14), itemId = 6299 }, - { position = Position(32884, 32270, 14), itemId = 21465 } -- or itemID = 2118 for PVP servers + { position = Position(32884, 32270, 14), itemId = 21465 }, -- or itemID = 2118 for PVP servers }, wells = { { position = Position(32874, 32263, 14), wellId = 2094, transformId = 2098 }, { position = Position(32875, 32263, 14), wellId = 2095, transformId = 2099 }, { position = Position(32874, 32264, 14), wellId = 2096, transformId = 2100 }, - { position = Position(32875, 32264, 14), wellId = 2097, transformId = 2101 } - } + { position = Position(32875, 32264, 14), wellId = 2097, transformId = 2101 }, + }, }, [2773] = { wells = { { position = Position(32874, 32263, 14), wellId = 2098, transformId = 2094 }, { position = Position(32875, 32263, 14), wellId = 2099, transformId = 2095 }, { position = Position(32874, 32264, 14), wellId = 2100, transformId = 2096 }, - { position = Position(32875, 32264, 14), wellId = 2101, transformId = 2097 } - } - } + { position = Position(32875, 32264, 14), wellId = 2101, transformId = 2097 }, + }, + }, } local dreamerStone = Action() diff --git a/data-otservbr-global/scripts/actions/quests/dreamer_challenge/tic_tac_teleport.lua b/data-otservbr-global/scripts/actions/quests/dreamer_challenge/tic_tac_teleport.lua index f916938d8a4..ba89f5ca3d9 100644 --- a/data-otservbr-global/scripts/actions/quests/dreamer_challenge/tic_tac_teleport.lua +++ b/data-otservbr-global/scripts/actions/quests/dreamer_challenge/tic_tac_teleport.lua @@ -7,25 +7,21 @@ local config = { { position = Position(32840, 32269, 14), itemId = 3548 }, { position = Position(32841, 32269, 14), itemId = 3547 }, { position = Position(32840, 32268, 14), itemId = 3547 }, - { position = Position(32842, 32267, 14), itemId = 3547 } + { position = Position(32842, 32267, 14), itemId = 3547 }, } local dreamerTicTacTeleport = Action() function dreamerTicTacTeleport.onUse(player, item, fromPosition, target, toPosition, isHotkey) item:transform(item.itemid == 2772 and 2773 or 2772) - iterateArea( - function(position) - local pillar = Tile(position):getItemById(2153) - if pillar then - pillar:remove() - else - Game.createItem(2153, 1, position) - end - end, - Position(32835, 32285, 14), - Position(32838, 32285, 14) - ) + iterateArea(function(position) + local pillar = Tile(position):getItemById(2153) + if pillar then + pillar:remove() + else + Game.createItem(2153, 1, position) + end + end, Position(32835, 32285, 14), Position(32838, 32285, 14)) local tokens, ticTacToeItem = true for i = 1, #config do diff --git a/data-otservbr-global/scripts/actions/quests/dreamer_challenge/walls.lua b/data-otservbr-global/scripts/actions/quests/dreamer_challenge/walls.lua index 58529b9a540..69c508c83d6 100644 --- a/data-otservbr-global/scripts/actions/quests/dreamer_challenge/walls.lua +++ b/data-otservbr-global/scripts/actions/quests/dreamer_challenge/walls.lua @@ -2,19 +2,19 @@ local config = { [2246] = { [1] = { pos = Position(32763, 32292, 14), id = 1271 }, [2] = { pos = Position(32762, 32292, 14), id = 1271 }, - [3] = { pos = Position(32761, 32292, 14), id = 1271 } + [3] = { pos = Position(32761, 32292, 14), id = 1271 }, }, [2247] = { [1] = { pos = Position(32760, 32289, 14), id = 1270 }, [2] = { pos = Position(32760, 32290, 14), id = 1270 }, [3] = { pos = Position(32760, 32291, 14), id = 1270 }, - [4] = { pos = Position(32760, 32292, 14), id = 1275 } + [4] = { pos = Position(32760, 32292, 14), id = 1275 }, }, [2248] = { [1] = { pos = Position(32764, 32292, 14), id = 1274 }, [2] = { pos = Position(32764, 32291, 14), id = 1270 }, [3] = { pos = Position(32764, 32290, 14), id = 1270 }, - [4] = { pos = Position(32764, 32289, 14), id = 1270 } + [4] = { pos = Position(32764, 32289, 14), id = 1270 }, }, [2249] = { [1] = { pos = Position(32760, 32288, 14), id = 1027 }, @@ -22,8 +22,8 @@ local config = { [3] = { pos = Position(32762, 32288, 14), id = 1271 }, [4] = { pos = Position(32763, 32288, 14), id = 1271 }, [5] = { pos = Position(32764, 32288, 14), id = 1273 }, - [6] = { pos = Position(32760, 32288, 14), id = 1272 } - } + [6] = { pos = Position(32760, 32288, 14), id = 1272 }, + }, } local function revertLever(position) diff --git a/data-otservbr-global/scripts/actions/quests/elemental_spheres/lever.lua b/data-otservbr-global/scripts/actions/quests/elemental_spheres/lever.lua index 657880087c6..14e88c58f2a 100644 --- a/data-otservbr-global/scripts/actions/quests/elemental_spheres/lever.lua +++ b/data-otservbr-global/scripts/actions/quests/elemental_spheres/lever.lua @@ -3,26 +3,26 @@ local config = { position = Position(33268, 31833, 10), itemid = 946, toPosition = Position(33268, 31833, 12), - vocationId = VOCATION.BASE_ID.SORCERER + vocationId = VOCATION.BASE_ID.SORCERER, }, { position = Position(33268, 31838, 10), itemid = 947, toPosition = Position(33267, 31838, 12), - vocationId = VOCATION.BASE_ID.DRUID + vocationId = VOCATION.BASE_ID.DRUID, }, { position = Position(33266, 31835, 10), itemid = 948, toPosition = Position(33265, 31835, 12), - vocationId = VOCATION.BASE_ID.KNIGHT + vocationId = VOCATION.BASE_ID.KNIGHT, }, { position = Position(33270, 31835, 10), itemid = 942, toPosition = Position(33270, 31835, 12), - vocationId = VOCATION.BASE_ID.PALADIN - } + vocationId = VOCATION.BASE_ID.PALADIN, + }, } local elementalSpheresLever = Action() @@ -38,7 +38,7 @@ function elementalSpheresLever.onUse(player, item, fromPosition, target, toPosit local spectators = Game.getSpectators(Position(33268, 31836, 12), false, true, 30, 30, 30, 30) if #spectators > 0 or Game.getStorageValue(GlobalStorage.ElementalSphere.BossRoom) > 0 then - player:say('Wait for the current team to exit.', TALKTYPE_MONSTER_SAY, false, 0, Position(33268, 31835, 10)) + player:say("Wait for the current team to exit.", TALKTYPE_MONSTER_SAY, false, 0, Position(33268, 31835, 10)) return true end @@ -46,17 +46,17 @@ function elementalSpheresLever.onUse(player, item, fromPosition, target, toPosit for i = 1, #config do local creature = Tile(config[i].position):getTopCreature() if not creature or not creature:isPlayer() then - player:say('You need one player of each vocation having completed the Elemental Spheres quest and also carrying the elemental rare item.', TALKTYPE_MONSTER_SAY, false, 0, Position(33268, 31835, 10)) + player:say("You need one player of each vocation having completed the Elemental Spheres quest and also carrying the elemental rare item.", TALKTYPE_MONSTER_SAY, false, 0, Position(33268, 31835, 10)) return true end local vocationId = creature:getVocation():getBaseId() if vocationId ~= config[i].vocationId or creature:getItemCount(config[i].itemid) < 1 or creature:getStorageValue(Storage.ElementalSphere.QuestLine) < 1 then - player:say('You need one player of each vocation having completed the Elemental Spheres quest and also carrying the elemental rare item.', TALKTYPE_MONSTER_SAY, false, 0, Position(33268, 31835, 10)) + player:say("You need one player of each vocation having completed the Elemental Spheres quest and also carrying the elemental rare item.", TALKTYPE_MONSTER_SAY, false, 0, Position(33268, 31835, 10)) return true end - players[#players+1] = creature + players[#players + 1] = creature end for i = 1, #players do diff --git a/data-otservbr-global/scripts/actions/quests/elemental_spheres/lord_of_elements_lever.lua b/data-otservbr-global/scripts/actions/quests/elemental_spheres/lord_of_elements_lever.lua index 3d4dd878b87..997e4acbdc6 100644 --- a/data-otservbr-global/scripts/actions/quests/elemental_spheres/lord_of_elements_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/elemental_spheres/lord_of_elements_lever.lua @@ -2,47 +2,64 @@ local config = { exitPosition = Position(33265, 31838, 10), area = { from = Position(33238, 31806, 12), - to = Position(33297, 31865, 12) + to = Position(33297, 31865, 12), }, positions = { Position(33272, 31840, 12), Position(33263, 31840, 12), Position(33263, 31831, 12), - Position(33272, 31831, 12) + Position(33272, 31831, 12), }, leverPositions = { Position(33273, 31831, 12), Position(33273, 31840, 12), Position(33262, 31840, 12), - Position(33262, 31831, 12) + Position(33262, 31831, 12), }, walls = { { from = Position(33275, 31834, 12), to = Position(33275, 31838, 12), wallId = 5072, soundPosition = Position(33275, 31836, 12) }, { from = Position(33266, 31843, 12), to = Position(33270, 31843, 12), wallId = 5071, soundPosition = Position(33268, 31843, 12) }, { from = Position(33260, 31834, 12), to = Position(33260, 31838, 12), wallId = 5072, soundPosition = Position(33260, 31836, 12) }, - { from = Position(33266, 31828, 12), to = Position(33270, 31828, 12), wallId = 5071, soundPosition = Position(33268, 31828, 12) } + { from = Position(33266, 31828, 12), to = Position(33270, 31828, 12), wallId = 5071, soundPosition = Position(33268, 31828, 12) }, }, roomArea = { from = Position(33261, 31829, 12), - to = Position(33274, 31842, 12) + to = Position(33274, 31842, 12), }, machineStorages = { GlobalStorage.ElementalSphere.Machine1, GlobalStorage.ElementalSphere.Machine2, GlobalStorage.ElementalSphere.Machine3, GlobalStorage.ElementalSphere.Machine4 }, centerPosition = Position(33267, 31836, 12), effectPositions = { - Position(33261, 31829, 12), Position(33262, 31830, 12), Position(33263, 31831, 12), - Position(33264, 31832, 12), Position(33265, 31833, 12), Position(33266, 31834, 12), - Position(33267, 31835, 12), Position(33268, 31836, 12), Position(33269, 31837, 12), - Position(33270, 31838, 12), Position(33271, 31839, 12), Position(33272, 31840, 12), - Position(33273, 31841, 12), Position(33274, 31842, 12), Position(33274, 31829, 12), - Position(33273, 31830, 12), Position(33272, 31831, 12), Position(33271, 31832, 12), - Position(33270, 31833, 12), Position(33269, 31834, 12), Position(33268, 31835, 12), - Position(33267, 31836, 12), Position(33266, 31837, 12), Position(33265, 31838, 12), - Position(33264, 31839, 12), Position(33263, 31840, 12), Position(33262, 31841, 12), - Position(33261, 31842, 12) - } + Position(33261, 31829, 12), + Position(33262, 31830, 12), + Position(33263, 31831, 12), + Position(33264, 31832, 12), + Position(33265, 31833, 12), + Position(33266, 31834, 12), + Position(33267, 31835, 12), + Position(33268, 31836, 12), + Position(33269, 31837, 12), + Position(33270, 31838, 12), + Position(33271, 31839, 12), + Position(33272, 31840, 12), + Position(33273, 31841, 12), + Position(33274, 31842, 12), + Position(33274, 31829, 12), + Position(33273, 31830, 12), + Position(33272, 31831, 12), + Position(33271, 31832, 12), + Position(33270, 31833, 12), + Position(33269, 31834, 12), + Position(33268, 31835, 12), + Position(33267, 31836, 12), + Position(33266, 31837, 12), + Position(33265, 31838, 12), + Position(33264, 31839, 12), + Position(33263, 31840, 12), + Position(33262, 31841, 12), + Position(33261, 31842, 12), + }, } - local function resetRoom(players) for i = 1, #players do local player = Player(players[i]) @@ -64,7 +81,7 @@ local function resetRoom(players) end end - local creature = Creature('lord of the elements') + local creature = Creature("lord of the elements") if creature then creature:remove() end @@ -97,7 +114,7 @@ local function warnPlayers(players) return end - player:say('You have 5 minutes from now on until you get teleported out.', TALKTYPE_MONSTER_YELL, false, 0, Position(33266, 31835, 13)) + player:say("You have 5 minutes from now on until you get teleported out.", TALKTYPE_MONSTER_YELL, false, 0, Position(33266, 31835, 13)) end local function areMachinesCharged() @@ -142,7 +159,7 @@ function elementalSpheresLordLever.onUse(player, item, fromPosition, target, toP Game.createItem(walls.wallId, 1, Position(x, y, walls.from.z)) end end - player:say('ZOOOOOOOOM', TALKTYPE_MONSTER_SAY, false, 0, walls.soundPosition) + player:say("ZOOOOOOOOM", TALKTYPE_MONSTER_SAY, false, 0, walls.soundPosition) if leverCount ~= #config.leverPositions then return true @@ -152,13 +169,13 @@ function elementalSpheresLordLever.onUse(player, item, fromPosition, target, toP for i = 1, #config.positions do local creature = Tile(config.positions[i]):getTopCreature() if creature then - players[#players+1] = creature.uid + players[#players + 1] = creature.uid end end Game.setStorageValue(GlobalStorage.ElementalSphere.BossRoom, 1) - Game.createMonster('Lord of the Elements', config.centerPosition) - player:say('You have 10 minutes from now on until you get teleported out.', TALKTYPE_MONSTER_YELL, false, 0, config.centerPosition) + Game.createMonster("Lord of the Elements", config.centerPosition) + player:say("You have 10 minutes from now on until you get teleported out.", TALKTYPE_MONSTER_YELL, false, 0, config.centerPosition) addEvent(warnPlayers, 5 * 60 * 1000, players) addEvent(resetRoom, 10 * 60 * 1000, players) diff --git a/data-otservbr-global/scripts/actions/quests/elemental_spheres/machine1.lua b/data-otservbr-global/scripts/actions/quests/elemental_spheres/machine1.lua index a98f194d019..807556d0efd 100644 --- a/data-otservbr-global/scripts/actions/quests/elemental_spheres/machine1.lua +++ b/data-otservbr-global/scripts/actions/quests/elemental_spheres/machine1.lua @@ -2,7 +2,7 @@ local config = { [VOCATION.BASE_ID.SORCERER] = { x = 33183, y = 32197, z = 13 }, [VOCATION.BASE_ID.DRUID] = { x = 33331, y = 32076, z = 13 }, [VOCATION.BASE_ID.PALADIN] = { x = 33265, y = 32202, z = 13 }, - [VOCATION.BASE_ID.KNIGHT] = { x = 33087, y = 32096, z = 13 } + [VOCATION.BASE_ID.KNIGHT] = { x = 33087, y = 32096, z = 13 }, } local elementalSpheresMachine1 = Action() @@ -10,10 +10,7 @@ function elementalSpheresMachine1.onUse(player, item, fromPosition, target, toPo local destination = config[player:getVocation():getBaseId()] if table.contains({ 842, 843 }, item.itemid) then local gemCount = player:getStorageValue(Storage.ElementalSphere.MachineGemCount) - if table.contains({ 33268, 33269 }, toPosition.x) - and toPosition.y == 31830 - and toPosition.z == 10 - and gemCount >= 20 then + if table.contains({ 33268, 33269 }, toPosition.x) and toPosition.y == 31830 and toPosition.z == 10 and gemCount >= 20 then player:teleportTo(destination, false) player:setStorageValue(Storage.ElementalSphere.MachineGemCount, gemCount - 20) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/scripts/actions/quests/elemental_spheres/machine2.lua b/data-otservbr-global/scripts/actions/quests/elemental_spheres/machine2.lua index 8f0519177d7..8ec90c1ce07 100644 --- a/data-otservbr-global/scripts/actions/quests/elemental_spheres/machine2.lua +++ b/data-otservbr-global/scripts/actions/quests/elemental_spheres/machine2.lua @@ -11,7 +11,7 @@ function elementalSpheresMachine2.onUse(player, item, fromPosition, target, toPo machineItem:transform(machineItem.itemid + 4) end item:transform(item.itemid + 4) - player:say('ON', TALKTYPE_MONSTER_SAY, false, player, toPosition) + player:say("ON", TALKTYPE_MONSTER_SAY, false, player, toPosition) else toPosition.y = toPosition.y + (item.itemid == 848 and 1 or -1) local machineItem = Tile(toPosition):getItemById(item.itemid == 848 and 845 or 849) @@ -19,7 +19,7 @@ function elementalSpheresMachine2.onUse(player, item, fromPosition, target, toPo machineItem:transform(machineItem.itemid - 4) end item:transform(item.itemid - 4) - player:say('OFF', TALKTYPE_MONSTER_SAY, false, player, toPosition) + player:say("OFF", TALKTYPE_MONSTER_SAY, false, player, toPosition) end return true end diff --git a/data-otservbr-global/scripts/actions/quests/elemental_spheres/soils1.lua b/data-otservbr-global/scripts/actions/quests/elemental_spheres/soils1.lua index 961a91beea9..e7287ae4c01 100644 --- a/data-otservbr-global/scripts/actions/quests/elemental_spheres/soils1.lua +++ b/data-otservbr-global/scripts/actions/quests/elemental_spheres/soils1.lua @@ -2,7 +2,7 @@ local config = { [940] = { targetId = 7742, transformId = 7746, effect = CONST_ME_BIGPLANTS }, [941] = { targetId = 7743, transformId = 7745 }, [944] = { targetId = 7741, transformId = 7744, effect = CONST_ME_ICEATTACK }, - [945] = { targetId = 7737, createId = 2126 } + [945] = { targetId = 7737, createId = 2126 }, } local elementalSpheresSouls1 = Action() diff --git a/data-otservbr-global/scripts/actions/quests/elemental_spheres/soils2.lua b/data-otservbr-global/scripts/actions/quests/elemental_spheres/soils2.lua index 2aabc6ec2dd..daf2973d2b5 100644 --- a/data-otservbr-global/scripts/actions/quests/elemental_spheres/soils2.lua +++ b/data-otservbr-global/scripts/actions/quests/elemental_spheres/soils2.lua @@ -2,14 +2,14 @@ local spheres = { [8300] = VOCATION.BASE_ID.PALADIN, [8304] = VOCATION.BASE_ID.SORCERER, [8305] = VOCATION.BASE_ID.DRUID, - [8306] = VOCATION.BASE_ID.KNIGHT + [8306] = VOCATION.BASE_ID.KNIGHT, } local globalTable = { [VOCATION.BASE_ID.SORCERER] = 10005, [VOCATION.BASE_ID.DRUID] = 10006, [VOCATION.BASE_ID.PALADIN] = 10007, - [VOCATION.BASE_ID.KNIGHT] = 10008 + [VOCATION.BASE_ID.KNIGHT] = 10008, } local elementalSpheresSoils2 = Action() @@ -27,7 +27,7 @@ function elementalSpheresSoils2.onUse(player, item, fromPosition, target, toPosi end if table.contains({ 7917, 7918 }, target.itemid) then - player:say('Turn off the machine first.', TALKTYPE_MONSTER_SAY) + player:say("Turn off the machine first.", TALKTYPE_MONSTER_SAY) return true end diff --git a/data-otservbr-global/scripts/actions/quests/explorer_society/findings.lua b/data-otservbr-global/scripts/actions/quests/explorer_society/findings.lua index 04d1e4bf896..3f81f4cd08d 100644 --- a/data-otservbr-global/scripts/actions/quests/explorer_society/findings.lua +++ b/data-otservbr-global/scripts/actions/quests/explorer_society/findings.lua @@ -5,49 +5,49 @@ local UniqueTable = { rewardItemId = 4834, storageMission = Storage.ExplorerSociety.JoiningTheExplorers, storageMissionValue = 3, - storageQuestlineValue = 3 + storageQuestlineValue = 3, }, [14030] = { -- Wrinkled parchment rewardItemId = 173, storageMission = Storage.ExplorerSociety.TheBonelordSecret, storageMissionValue = 31, - storageQuestlineValue = 30 + storageQuestlineValue = 30, }, [14031] = { -- Strange powder rewardItemId = 13974, storageMission = Storage.ExplorerSociety.TheOrcPowder, storageMissionValue = 34, - storageQuestlineValue = 33 + storageQuestlineValue = 33, }, [14032] = { -- Elven poetry book rewardItemId = 4844, storageMission = Storage.ExplorerSociety.TheElvenPoetry, storageMissionValue = 37, - storageQuestlineValue = 36 + storageQuestlineValue = 36, }, [14033] = { -- Memory stone rewardItemId = 4841, storageMission = Storage.ExplorerSociety.TheMemoryStone, storageMissionValue = 40, - storageQuestlineValue = 39 + storageQuestlineValue = 39, }, [14034] = { -- Spectral dress rewardItemId = 4836, storageMission = Storage.ExplorerSociety.TheSpectralDress, storageMissionValue = 49, - storageQuestlineValue = 48 + storageQuestlineValue = 48, }, [14035] = { -- Damage logbook rewardItemId = 21378, storageMission = Storage.ExplorerSociety.CalassaQuest, storageMissionValue = 2, - storageQuestlineValue = 0 + storageQuestlineValue = 0, }, -- Others uniques [40041] = { @@ -55,7 +55,7 @@ local UniqueTable = { rewardItemId = 4847, storageMission = Storage.ExplorerSociety.TheLizardUrn, storageMissionValue = 28, - storageQuestlineValue = 27 + storageQuestlineValue = 27, }, } @@ -66,7 +66,7 @@ function explorerSocietyFindings.onUse(player, item, fromPosition, target, toPos return true end if player:getStorageValue(item.uid) >= 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The ' .. getItemName(uniqueItem.itemId) .. ' is empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The " .. getItemName(uniqueItem.itemId) .. " is empty.") return true end if player:getStorageValue(uniqueItem.storageMission) ~= uniqueItem.storageMissionValue then @@ -74,7 +74,7 @@ function explorerSocietyFindings.onUse(player, item, fromPosition, target, toPos player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a " .. getItemName(uniqueItem.rewardItemId) .. ".") player:setStorageValue(item.uid, 1) player:setStorageValue(uniqueItem.storageMission, uniqueItem.storageMissionValue) - if (uniqueItem.storageQuestlineValue > 0) then + if uniqueItem.storageQuestlineValue > 0 then player:setStorageValue(Storage.ExplorerSociety.QuestLine, uniqueItem.storageQuestlineValue) end return true diff --git a/data-otservbr-global/scripts/actions/quests/fathers_burden/corpse.lua b/data-otservbr-global/scripts/actions/quests/fathers_burden/corpse.lua index 82c1a6122b2..9178cc1e376 100644 --- a/data-otservbr-global/scripts/actions/quests/fathers_burden/corpse.lua +++ b/data-otservbr-global/scripts/actions/quests/fathers_burden/corpse.lua @@ -1,6 +1,6 @@ local config = { - [11589] = { itemId = 11550, storage = Storage.FathersBurden.Corpse.Scale, text = 'Glitterscale\'s scale.' }, - [11590] = { itemId = 11548, storage = Storage.FathersBurden.Corpse.Sinew, text = 'Heoni\'s sinew' } + [11589] = { itemId = 11550, storage = Storage.FathersBurden.Corpse.Scale, text = "Glitterscale's scale." }, + [11590] = { itemId = 11548, storage = Storage.FathersBurden.Corpse.Sinew, text = "Heoni's sinew" }, } local fatherCorpse = Action() @@ -16,7 +16,7 @@ function fatherCorpse.onUse(player, item, fromPosition, target, toPosition, isHo player:addItem(corpse.itemId, 1) player:setStorageValue(corpse.storage, 1) - player:say('You acquired ' .. corpse.text, TALKTYPE_MONSTER_SAY) + player:say("You acquired " .. corpse.text, TALKTYPE_MONSTER_SAY) return true end diff --git a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/dread_maiden_lever.lua b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/dread_maiden_lever.lua index cf1316e5cf5..1f398adc276 100644 --- a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/dread_maiden_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/dread_maiden_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "The Dread Maiden", - position = Position(33712, 31503, 14) + position = Position(33712, 31503, 14), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33740, 31506, 14), teleport = Position(33711, 31510, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33741, 31506, 14), teleport = Position(33711, 31510, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33742, 31506, 14), teleport = Position(33711, 31510, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33743, 31506, 14), teleport = Position(33711, 31510, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33743, 31506, 14), teleport = Position(33711, 31510, 14), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33703, 31494, 14), - to = Position(33721, 31512, 14) + to = Position(33721, 31512, 14), }, exit = Position(33557, 31524, 10), - storage = Storage.Quest.U12_30.FeasterOfSouls.DreadMaidenTimer + storage = Storage.Quest.U12_30.FeasterOfSouls.DreadMaidenTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/entrances.lua b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/entrances.lua index 331a495b8e9..42a40e19895 100644 --- a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/entrances.lua +++ b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/entrances.lua @@ -4,7 +4,7 @@ local positions = { { position = { x = 32883, y = 32518, z = 7 }, destination = { x = 33613, y = 31415, z = 8 } }, -- entrance port hope { position = { x = 32884, y = 32518, z = 7 }, destination = { x = 33613, y = 31415, z = 8 } }, { position = { x = 32625, y = 32076, z = 7 }, destination = { x = 31914, y = 32354, z = 8 } }, -- entrance jakundaf - { position = { x = 32626, y = 32076, z = 7 }, destination = { x = 31914, y = 32354, z = 8 } } + { position = { x = 32626, y = 32076, z = 7 }, destination = { x = 31914, y = 32354, z = 8 } }, } local feasterEntrances = MoveEvent() diff --git a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/fear_feaster_lever.lua b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/fear_feaster_lever.lua index 57eed86d6d9..ffb9a98df82 100644 --- a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/fear_feaster_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/fear_feaster_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "The Fear Feaster", - position = Position(33711, 31469, 14) + position = Position(33711, 31469, 14), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33735, 31471, 14), teleport = Position(33711, 31476, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33736, 31471, 14), teleport = Position(33711, 31476, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33737, 31471, 14), teleport = Position(33711, 31476, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33738, 31471, 14), teleport = Position(33711, 31476, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33738, 31471, 14), teleport = Position(33711, 31476, 14), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33705, 31463, 14), - to = Position(33719, 31477, 14) + to = Position(33719, 31477, 14), }, exit = Position(33609, 31499, 10), - storage = Storage.Quest.U12_30.FeasterOfSouls.FearFeasterTimer + storage = Storage.Quest.U12_30.FeasterOfSouls.FearFeasterTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/pale_worm_lever.lua b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/pale_worm_lever.lua index 8f1a03b948e..537bbf2aa32 100644 --- a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/pale_worm_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/pale_worm_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "The Pale Worm", - position = Position(33805, 31504, 14) + position = Position(33805, 31504, 14), }, requiredLevel = 250, @@ -16,14 +16,14 @@ local config = { { pos = Position(33775, 31503, 14), teleport = Position(33808, 31515, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33773, 31505, 14), teleport = Position(33808, 31515, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33774, 31505, 14), teleport = Position(33808, 31515, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33775, 31505, 14), teleport = Position(33808, 31515, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33775, 31505, 14), teleport = Position(33808, 31515, 14), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33793, 31496, 14), - to = Position(33816, 31515, 14) + to = Position(33816, 31515, 14), }, exit = Position(33572, 31451, 10), - storage = Storage.Quest.U12_30.FeasterOfSouls.PaleWormTimer + storage = Storage.Quest.U12_30.FeasterOfSouls.PaleWormTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/portal_minis_feaster.lua b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/portal_minis_feaster.lua index 0a475af37f0..477780a73f7 100644 --- a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/portal_minis_feaster.lua +++ b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/portal_minis_feaster.lua @@ -9,10 +9,10 @@ local config = { bossPosition = Position(33467, 31399, 8), specPos = { from = Position(33460, 31393, 8), - to = Position(33474, 31408, 8) + to = Position(33474, 31408, 8), }, exitPosition = Position(33493, 31400, 8), - storage = Storage.Quest.U12_30.FeasterOfSouls.IrgixTimer + storage = Storage.Quest.U12_30.FeasterOfSouls.IrgixTimer, }, [2] = { teleportPosition = { x = 33566, y = 31475, z = 8 }, @@ -24,10 +24,10 @@ local config = { bossPosition = Position(33565, 31496, 8), specPos = { from = Position(33558, 31487, 8), - to = Position(33582, 31499, 8) + to = Position(33582, 31499, 8), }, exitPosition = Position(33563, 31477, 8), - storage = Storage.Quest.U12_30.FeasterOfSouls.UnazTimer + storage = Storage.Quest.U12_30.FeasterOfSouls.UnazTimer, }, [3] = { teleportPosition = { x = 33509, y = 31450, z = 9 }, @@ -39,22 +39,22 @@ local config = { bossPosition = Position(33508, 31486, 9), specPos = { from = Position(33501, 31483, 9), - to = Position(33515, 31496, 9) + to = Position(33515, 31496, 9), }, exitPosition = Position(33509, 31451, 9), - storage = Storage.Quest.U12_30.FeasterOfSouls.VokTimer + storage = Storage.Quest.U12_30.FeasterOfSouls.VokTimer, }, [4] = { teleportPosition = { x = 33467, y = 31396, z = 8 }, - exitPosition = Position(33493, 31400, 8) + exitPosition = Position(33493, 31400, 8), }, [5] = { teleportPosition = { x = 33562, y = 31492, z = 8 }, - exitPosition = Position(33563, 31477, 8) + exitPosition = Position(33563, 31477, 8), }, [6] = { teleportPosition = { x = 33505, y = 31485, z = 9 }, - exitPosition = Position(33509, 31451, 9) + exitPosition = Position(33509, 31451, 9), }, } diff --git a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/slab.lua b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/slab.lua index dcd87750020..18c0b65fc6e 100644 --- a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/slab.lua +++ b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/slab.lua @@ -8,7 +8,7 @@ local config = { { position = { x = 33540, y = 31411, z = 9 }, destination = { x = 33528, y = 31410, z = 9 } }, { position = { x = 33531, y = 31410, z = 9 }, destination = { x = 33541, y = 31412, z = 9 } }, { position = { x = 33535, y = 31444, z = 8 }, destination = { x = 33546, y = 31444, z = 8 } }, - { position = { x = 33544, y = 31444, z = 8 }, destination = { x = 33533, y = 31444, z = 8 } } + { position = { x = 33544, y = 31444, z = 8 }, destination = { x = 33533, y = 31444, z = 8 } }, } local slab = MoveEvent() diff --git a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/unwelcome_lever.lua b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/unwelcome_lever.lua index 59289c7d007..59f1665eacf 100644 --- a/data-otservbr-global/scripts/actions/quests/feaster_of_souls/unwelcome_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/feaster_of_souls/unwelcome_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "The Unwelcome", - position = Position(33708, 31539, 14) + position = Position(33708, 31539, 14), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33737, 31537, 14), teleport = Position(33708, 31547, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33738, 31537, 14), teleport = Position(33708, 31547, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33739, 31537, 14), teleport = Position(33708, 31547, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33740, 31537, 14), teleport = Position(33708, 31547, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33740, 31537, 14), teleport = Position(33708, 31547, 14), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33699, 31529, 14), - to = Position(33719, 31546, 14) + to = Position(33719, 31546, 14), }, exit = Position(33611, 31528, 10), - storage = Storage.Quest.U12_30.FeasterOfSouls.UnwelcomeTimer + storage = Storage.Quest.U12_30.FeasterOfSouls.UnwelcomeTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/bone_flute.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/bone_flute.lua index d8e48f05b98..842ea96aef2 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/bone_flute.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/bone_flute.lua @@ -9,18 +9,18 @@ function ferumbrasAscendantBoneFlute.onUse(player, item, fromPosition, target, t if not isInRange(target:getPosition(), Position(33477, 32775, 11), Position(33493, 32781, 11)) then return false end - if target:getName():lower() == 'snake' or target:getName():lower() == 'lion' or target:getName():lower() == 'bear' or target:getName():lower() == 'seagull' or target:getName():lower() == 'pig' then + if target:getName():lower() == "snake" or target:getName():lower() == "lion" or target:getName():lower() == "bear" or target:getName():lower() == "seagull" or target:getName():lower() == "pig" then local rand = math.random(100) if rand <= 5 then - player:say('Finally this one reveal your spirit animal.', TALKTYPE_MONSTER_SAY) + player:say("Finally this one reveal your spirit animal.", TALKTYPE_MONSTER_SAY) player:setStorageValue(Storage.FerumbrasAscension.BoneFlute, 1) item:remove() return true elseif rand > 5 and rand <= 50 then - player:say('This one has shaken its head. This probably means it\'s not your spirit animal.', TALKTYPE_MONSTER_SAY) + player:say("This one has shaken its head. This probably means it's not your spirit animal.", TALKTYPE_MONSTER_SAY) return true elseif rand > 50 then - player:say('This one\'s still unwilling reveal whether it\'s your spirit animal.', TALKTYPE_MONSTER_SAY) + player:say("This one's still unwilling reveal whether it's your spirit animal.", TALKTYPE_MONSTER_SAY) return true end end diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/bone_flute_wall.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/bone_flute_wall.lua index e105ee46d00..53350db1f4f 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/bone_flute_wall.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/bone_flute_wall.lua @@ -3,7 +3,7 @@ function ferumbrasAscendantBoneWall.onUse(player, item, fromPosition, target, to if player:getStorageValue(Storage.FerumbrasAscension.BoneFluteWall) < 1 then player:addItem(22254) player:setStorageValue(Storage.FerumbrasAscension.BoneFluteWall, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found a bone flute.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a bone flute.") toPosition:sendMagicEffect(CONST_ME_THUNDER) else return false diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/boots_of_homecoming.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/boots_of_homecoming.lua index 45babd41a32..6870f18f0fb 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/boots_of_homecoming.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/boots_of_homecoming.lua @@ -2,7 +2,7 @@ local ferumbrasAscendantHomeComing = Action() function ferumbrasAscendantHomeComing.onUse(player, item, fromPosition, target, toPosition, isHotkey) local boots = player:getSlotItem(CONST_SLOT_FEET) if boots ~= item or boots ~= item then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You need to equip the boot to try use it.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You need to equip the boot to try use it.") return true end if item.itemid == 22773 then @@ -12,13 +12,13 @@ function ferumbrasAscendantHomeComing.onUse(player, item, fromPosition, target, player:getPosition():sendMagicEffect(CONST_ME_POFF) player:teleportTo(Position(32121, 32708, 7)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Magical sparks whirl around the boots and suddenly you are somewhere else.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Magical sparks whirl around the boots and suddenly you are somewhere else.") else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'If you want to wear this boots you need to stay in a protection zone.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "If you want to wear this boots you need to stay in a protection zone.") return true end elseif item.itemid == 22774 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You are tired of the last use of the boots, you must wait for one hour to use it again.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are tired of the last use of the boots, you must wait for one hour to use it again.") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/color_levers.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/color_levers.lua index 2181e0e84ed..8607f99b4cb 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/color_levers.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/color_levers.lua @@ -9,30 +9,30 @@ function ferumbrasAscendantColorLevers.onUse(player, item, fromPosition, target, local rand = math.random(4) player:setStorageValue(Storage.FerumbrasAscension.ColorLever, rand) player:getPosition():sendMagicEffect(166 + rand) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You choose the colour of decay.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You choose the colour of decay.") end elseif item.actionid == 54382 then if player:getStorageValue(Storage.FerumbrasAscension.ColorLever) == 1 then player:setStorageValue(Storage.FerumbrasAscension.FirstDoor, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You select the correct colour.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You select the correct colour.") toPosition:sendMagicEffect(CONST_ME_POFF) end elseif item.actionid == 54383 then if player:getStorageValue(Storage.FerumbrasAscension.ColorLever) == 3 then player:setStorageValue(Storage.FerumbrasAscension.FirstDoor, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You select the correct colour.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You select the correct colour.") toPosition:sendMagicEffect(CONST_ME_POFF) end elseif item.actionid == 54384 then if player:getStorageValue(Storage.FerumbrasAscension.ColorLever) == 4 then player:setStorageValue(Storage.FerumbrasAscension.FirstDoor, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You select the correct colour.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You select the correct colour.") toPosition:sendMagicEffect(CONST_ME_POFF) end elseif item.actionid == 54385 then if player:getStorageValue(Storage.FerumbrasAscension.ColorLever) == 2 then player:setStorageValue(Storage.FerumbrasAscension.FirstDoor, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You select the correct colour.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You select the correct colour.") toPosition:sendMagicEffect(CONST_ME_POFF) end end diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ferumbras_amulet.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ferumbras_amulet.lua index 2fbad965d2e..d92c496e165 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ferumbras_amulet.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ferumbras_amulet.lua @@ -2,23 +2,23 @@ local ferumbrasAscendantAmulet = Action() function ferumbrasAscendantAmulet.onUse(player, item, fromPosition, target, toPosition, isHotkey) local amulet = player:getSlotItem(CONST_SLOT_NECKLACE) if amulet ~= item or amulet ~= item then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You need to equip the amulet to try use it.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You need to equip the amulet to try use it.") return true end if item.itemid == 22767 then if math.random(2) == 1 then player:addHealth(1000, true, true) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Magical sparks whirl around the amulet as you use it and you was healed.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Magical sparks whirl around the amulet as you use it and you was healed.") else player:addMana(1000, true, true) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Magical sparks whirl around the amulet as you use it and you was restored.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Magical sparks whirl around the amulet as you use it and you was restored.") end item:transform(22768) item:decay() player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) return true elseif item.itemid == 22768 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You are tired of the last use of the amulet, you must wait for the recharge.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are tired of the last use of the amulet, you must wait for the recharge.") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ferumbras_lever.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ferumbras_lever.lua index 9194b30509f..d6cf01f3d43 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ferumbras_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ferumbras_lever.lua @@ -20,7 +20,7 @@ local config = { Position(33271, 31478, 14), Position(33271, 31479, 14), Position(33271, 31480, 14), - Position(33271, 31481, 14) + Position(33271, 31481, 14), }, range = 20, time = 30, -- time in minutes to remove the player @@ -32,7 +32,7 @@ local function clearFerumbrasRoom() if spectator:isPlayer() then spectator:teleportTo(config.exitPosition) spectator:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - spectator:say('Time out! You were teleported out by strange forces.', TALKTYPE_MONSTER_SAY) + spectator:say("Time out! You were teleported out by strange forces.", TALKTYPE_MONSTER_SAY) elseif spectator:isMonster() then spectator:remove() end diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ferumbras_mana_keg.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ferumbras_mana_keg.lua index f48a48ee2fd..8ece01ed6e8 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ferumbras_mana_keg.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ferumbras_mana_keg.lua @@ -1,14 +1,14 @@ local ferumbrasAscendantManaKeg = Action() function ferumbrasAscendantManaKeg.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 22769 then - player:addItem('ultimate mana potion', 10) + player:addItem("ultimate mana potion", 10) item:transform(22770) item:decay() player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Magical sparks whirl around the keg as you open the spigot and you fill ten empty vials with mana fluid.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Magical sparks whirl around the keg as you open the spigot and you fill ten empty vials with mana fluid.") return true elseif item.itemid == 22770 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You are tired of the last use of the mana keg, rest your arms for a moment.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are tired of the last use of the mana keg, rest your arms for a moment.") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/flower_puzzle_lever.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/flower_puzzle_lever.lua index d847e7d0a20..7f49c9c7f7f 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/flower_puzzle_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/flower_puzzle_lever.lua @@ -7,14 +7,14 @@ local flowerPositions = { [6] = { itemid = 3677, position = Position(33456, 32708, 14) }, [7] = { itemid = 3676, position = Position(33458, 32709, 14) }, [8] = { itemid = 3677, position = Position(33459, 32708, 14) }, - [9] = { itemid = 3678, position = Position(33460, 32709, 14) } + [9] = { itemid = 3678, position = Position(33460, 32709, 14) }, } local gates = { { position = Position(33476, 32698, 14), itemid = 7144, transform = 1635 }, { position = Position(33478, 32698, 14), itemid = 7144, transform = 1634 }, { position = Position(33475, 32698, 14), itemid = 1635, transform = 7144 }, - { position = Position(33479, 32698, 14), itemid = 1634, transform = 7144 } + { position = Position(33479, 32698, 14), itemid = 1634, transform = 7144 }, } local function revertItem(position, itemId, transformId) @@ -30,16 +30,16 @@ function ferumbrasAscendantFlowerPuzzle.onUse(player, item, fromPosition, target for a = 1, #flowerPositions do local flower = flowerPositions[a] if not Tile(flower.position):getItemById(flower.itemid) then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The order of the flowers in the garden are wrong.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The order of the flowers in the garden are wrong.") return true end end if Game.getStorageValue(Storage.FerumbrasAscension.FlowerPuzzleTimer) >= 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The portal still activated.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The portal still activated.") else Game.setStorageValue(Storage.FerumbrasAscension.FlowerPuzzleTimer, 1) addEvent(Game.setStorageValue, 30 * 1000, Storage.FerumbrasAscension.FlowerPuzzleTimer, 0) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'A portal forms as two beams of a strange construction dividing this room move towards each other.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "A portal forms as two beams of a strange construction dividing this room move towards each other.") for x = 33475, 33479 do local pos = Position(x, 32698, 14) pos:sendMagicEffect(CONST_ME_POFF) diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_corrupted.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_corrupted.lua index 2fe4519efea..674b23a1476 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_corrupted.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_corrupted.lua @@ -338,7 +338,7 @@ local corrupted = { { itemid = 417, position = Position(33614, 32722, 12) }, { itemid = 417, position = Position(33614, 32715, 12) }, { itemid = 417, position = Position(33614, 32721, 12) }, - { itemid = 417, position = Position(33611, 32712, 12) } + { itemid = 417, position = Position(33611, 32712, 12) }, } local function transformArea() for x = 33611, 33625 do @@ -378,10 +378,10 @@ local ferumbrasAscendantHabitatCorrupted = Action() function ferumbrasAscendantHabitatCorrupted.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 9125 then if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Corrupted) >= 1 then - player:say('The lever are stuck, need some time to it can be moveable again.', TALKTYPE_MONSTER_SAY) + player:say("The lever are stuck, need some time to it can be moveable again.", TALKTYPE_MONSTER_SAY) return true end - Game.createMonster('lovely yielothax', Position(33619, 32722, 12), true, true) + Game.createMonster("lovely yielothax", Position(33619, 32722, 12), true, true) addEvent(transformArea, 2 * 1000) item:transform(9126) local basin = Tile(Position(33628, 32721, 12)):getItemById(11114) @@ -391,7 +391,7 @@ function ferumbrasAscendantHabitatCorrupted.onUse(player, item, fromPosition, ta end Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Corrupted, 1) Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats, Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The room transforms into a completely different landscape.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The room transforms into a completely different landscape.") if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) >= 8 then addEvent(function() resetFerumbrasAscendantHabitats() diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_desert.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_desert.lua index 2cca11dee82..9d0e73b65e9 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_desert.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_desert.lua @@ -319,7 +319,7 @@ local desert = { { itemid = 231, position = Position(33639, 32678, 12) }, { itemid = 231, position = Position(33640, 32678, 12) }, { itemid = 231, position = Position(33645, 32683, 12) }, - { itemid = 231, position = Position(33645, 32682, 12) } + { itemid = 231, position = Position(33645, 32682, 12) }, } local function transformArea() @@ -358,10 +358,10 @@ local ferumbrasAscendantHabitatDesert = Action() function ferumbrasAscendantHabitatDesert.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 9125 then if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Desert) >= 1 then - player:say('The lever are stuck, need some time to it can be moveable again.', TALKTYPE_MONSTER_SAY) + player:say("The lever are stuck, need some time to it can be moveable again.", TALKTYPE_MONSTER_SAY) return true end - Game.createMonster('lovely rotworm', Position(33641, 32684, 12), true, true) + Game.createMonster("lovely rotworm", Position(33641, 32684, 12), true, true) addEvent(transformArea, 2 * 1000) item:transform(9126) local basin = Tile(Position(33631, 32685, 12)):getItemById(11114) @@ -371,7 +371,7 @@ function ferumbrasAscendantHabitatDesert.onUse(player, item, fromPosition, targe end Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Desert, 1) Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats, Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The room transforms into a completely different landscape.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The room transforms into a completely different landscape.") if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) >= 8 then addEvent(function() resetFerumbrasAscendantHabitats() diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_dimension.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_dimension.lua index 05a91a54f9a..1b9bbadb1eb 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_dimension.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_dimension.lua @@ -353,7 +353,7 @@ local dimension = { { itemid = 417, position = Position(33637, 32716, 12) }, { itemid = 417, position = Position(33634, 32712, 12) }, { itemid = 12084, position = Position(33640, 32718, 12) }, - { itemid = 12084, position = Position(33640, 32717, 12) } + { itemid = 12084, position = Position(33640, 32717, 12) }, } local function transformArea() @@ -394,10 +394,10 @@ local ferumbrasAscendantHabitatDimension = Action() function ferumbrasAscendantHabitatDimension.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 9125 then if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Dimension) >= 1 then - player:say('The lever are stuck, need some time to it can be moveable again.', TALKTYPE_MONSTER_SAY) + player:say("The lever are stuck, need some time to it can be moveable again.", TALKTYPE_MONSTER_SAY) return true end - Game.createMonster('lovely souleater', Position(33642, 32722, 12), true, true) + Game.createMonster("lovely souleater", Position(33642, 32722, 12), true, true) addEvent(transformArea, 2 * 1000) item:transform(9126) local basin = Tile(Position(33631, 32721, 12)):getItemById(11114) @@ -407,7 +407,7 @@ function ferumbrasAscendantHabitatDimension.onUse(player, item, fromPosition, ta end Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Dimension, 1) Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats, Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The room transforms into a completely different landscape.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The room transforms into a completely different landscape.") if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) >= 8 then addEvent(function() resetFerumbrasAscendantHabitats() diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_grass.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_grass.lua index ff43f44bbcb..0c6c998e4e1 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_grass.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_grass.lua @@ -387,7 +387,7 @@ local grass = { { itemid = 417, position = Position(33639, 32672, 12) }, { itemid = 417, position = Position(33640, 32663, 12) }, { itemid = 417, position = Position(33639, 32664, 12) }, - { itemid = 417, position = Position(33648, 32673, 12) } + { itemid = 417, position = Position(33648, 32673, 12) }, } local function transformArea() @@ -426,10 +426,10 @@ local ferumbrasAscendantHabitatGlass = Action() function ferumbrasAscendantHabitatGlass.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 9125 then if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Grass) >= 1 then - player:say('The lever are stuck, need some time to it can be moveable again.', TALKTYPE_MONSTER_SAY) + player:say("The lever are stuck, need some time to it can be moveable again.", TALKTYPE_MONSTER_SAY) return true end - Game.createMonster('lovely frazzlemaw', Position(33642, 32666, 12), true, true) + Game.createMonster("lovely frazzlemaw", Position(33642, 32666, 12), true, true) addEvent(transformArea, 2 * 1000) item:transform(9126) local basin = Tile(Position(33631, 32667, 12)):getItemById(11114) @@ -439,7 +439,7 @@ function ferumbrasAscendantHabitatGlass.onUse(player, item, fromPosition, target end Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Grass, 1) Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats, Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The room transforms into a completely different landscape.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The room transforms into a completely different landscape.") if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) >= 8 then addEvent(function() resetFerumbrasAscendantHabitats() diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_ice.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_ice.lua index 28fc0665b4d..2dd56c8abd0 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_ice.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_ice.lua @@ -402,7 +402,7 @@ local ice = { { itemid = 417, position = Position(33646, 32701, 12) }, { itemid = 417, position = Position(33638, 32706, 12) }, { itemid = 417, position = Position(33646, 32702, 12) }, - { itemid = 417, position = Position(33645, 32694, 12) } + { itemid = 417, position = Position(33645, 32694, 12) }, } local function transformArea() @@ -441,10 +441,10 @@ local ferumbrasAscendantHabitatIce = Action() function ferumbrasAscendantHabitatIce.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 9125 then if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Ice) >= 1 then - player:say('The lever are stuck, need some time to it can be moveable again.', TALKTYPE_MONSTER_SAY) + player:say("The lever are stuck, need some time to it can be moveable again.", TALKTYPE_MONSTER_SAY) return true end - Game.createMonster('lovely snake', Position(33642, 32702, 12), true, true) + Game.createMonster("lovely snake", Position(33642, 32702, 12), true, true) addEvent(transformArea, 2 * 1000) item:transform(9126) local basin = Tile(Position(33631, 32703, 12)):getItemById(11114) @@ -454,7 +454,7 @@ function ferumbrasAscendantHabitatIce.onUse(player, item, fromPosition, target, end Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Ice, 1) Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats, Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The room transforms into a completely different landscape.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The room transforms into a completely different landscape.") if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) >= 8 then addEvent(function() resetFerumbrasAscendantHabitats() diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_mushroom.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_mushroom.lua index 362c040d0c5..77e288f5e5b 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_mushroom.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_mushroom.lua @@ -355,7 +355,7 @@ local mushroom = { { itemid = 417, position = Position(33623, 32676, 12) }, { itemid = 417, position = Position(33613, 32689, 12) }, { itemid = 417, position = Position(33613, 32688, 12) }, - { itemid = 417, position = Position(33625, 32691, 12) } + { itemid = 417, position = Position(33625, 32691, 12) }, } local function transformArea() @@ -394,10 +394,10 @@ local ferumbrasAscendantHabitatMushroom = Action() function ferumbrasAscendantHabitatMushroom.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 9125 then if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Mushroom) >= 1 then - player:say('The lever are stuck, need some time to it can be moveable again.', TALKTYPE_MONSTER_SAY) + player:say("The lever are stuck, need some time to it can be moveable again.", TALKTYPE_MONSTER_SAY) return true end - Game.createMonster('lovely scorpion', Position(33617, 32684, 12), true, true) + Game.createMonster("lovely scorpion", Position(33617, 32684, 12), true, true) addEvent(transformArea, 2 * 1000) item:transform(9126) local basin = Tile(Position(33628, 32685, 12)):getItemById(11114) @@ -407,7 +407,7 @@ function ferumbrasAscendantHabitatMushroom.onUse(player, item, fromPosition, tar end Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Mushroom, 1) Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats, Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The room transforms into a completely different landscape.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The room transforms into a completely different landscape.") if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) >= 8 then addEvent(function() resetFerumbrasAscendantHabitats() diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_roshamuul.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_roshamuul.lua index 0f0fd7d8ce1..1718b1106b8 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_roshamuul.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_roshamuul.lua @@ -428,7 +428,7 @@ local roshamuul = { { itemid = 417, position = Position(33615, 32660, 12) }, { itemid = 417, position = Position(33614, 32660, 12) }, { itemid = 417, position = Position(33614, 32661, 12) }, - { itemid = 417, position = Position(33625, 32673, 12) } + { itemid = 417, position = Position(33625, 32673, 12) }, } local function transformArea() @@ -467,10 +467,10 @@ local ferumbrasAscendantHabitatRoshamuul = Action() function ferumbrasAscendantHabitatRoshamuul.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 9125 then if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Roshamuul) >= 1 then - player:say('The lever are stuck, need some time to it can be moveable again.', TALKTYPE_MONSTER_SAY) + player:say("The lever are stuck, need some time to it can be moveable again.", TALKTYPE_MONSTER_SAY) return true end - Game.createMonster('lovely deer', Position(33619, 32666, 12), true, true) + Game.createMonster("lovely deer", Position(33619, 32666, 12), true, true) addEvent(transformArea, 2 * 1000) item:transform(9126) local basin = Tile(Position(33628, 32667, 12)):getItemById(11114) @@ -480,7 +480,7 @@ function ferumbrasAscendantHabitatRoshamuul.onUse(player, item, fromPosition, ta end Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Roshamuul, 1) Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats, Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The room transforms into a completely different landscape.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The room transforms into a completely different landscape.") if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) >= 8 then addEvent(function() resetFerumbrasAscendantHabitats() diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_venom.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_venom.lua index 5a4c9797ad8..2883193b394 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_venom.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/habitat_venom.lua @@ -411,7 +411,7 @@ local venom = { { itemid = 1055, position = Position(33625, 32708, 12) }, { itemid = 417, position = Position(33625, 32708, 12) }, { itemid = 1059, position = Position(33625, 32709, 12) }, - { itemid = 417, position = Position(33625, 32709, 12) } + { itemid = 417, position = Position(33625, 32709, 12) }, } local function transformArea() for x = 33611, 33625 do @@ -449,10 +449,10 @@ local ferumbrasAscendantHabitatVenom = Action() function ferumbrasAscendantHabitatVenom.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 9125 then if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Venom) >= 1 then - player:say('The lever are stuck, need some time to it can be moveable again.', TALKTYPE_MONSTER_SAY) + player:say("The lever are stuck, need some time to it can be moveable again.", TALKTYPE_MONSTER_SAY) return true end - Game.createMonster('lovely polar bear', Position(33617, 32702, 12), true, true) + Game.createMonster("lovely polar bear", Position(33617, 32702, 12), true, true) addEvent(transformArea, 2 * 1000) item:transform(9126) local basin = Tile(Position(33628, 32703, 12)):getItemById(11114) @@ -462,7 +462,7 @@ function ferumbrasAscendantHabitatVenom.onUse(player, item, fromPosition, target end Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.Venom, 1) Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats, Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The room transforms into a completely different landscape.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The room transforms into a completely different landscape.") if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) >= 8 then addEvent(function() local basin = Tile(Position(33628, 32703, 12)):getItemById(22196) diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/mazoran_lever.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/mazoran_lever.lua index 4dd5c5d986b..cc973b7ee4c 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/mazoran_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/mazoran_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Mazoran", - position = Position(33584, 32689, 14) + position = Position(33584, 32689, 14), }, timeToDefeat = 30 * 60, @@ -10,14 +10,14 @@ local config = { { pos = Position(33593, 32645, 14), teleport = Position(33585, 32693, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33593, 32646, 14), teleport = Position(33585, 32693, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33593, 32647, 14), teleport = Position(33585, 32693, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33593, 32648, 14), teleport = Position(33585, 32693, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33593, 32648, 14), teleport = Position(33585, 32693, 14), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33570, 32677, 14), - to = Position(33597, 32700, 14) + to = Position(33597, 32700, 14), }, exit = Position(33319, 32318, 13), - storage = Storage.FerumbrasAscension.MazoranTimer + storage = Storage.FerumbrasAscension.MazoranTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/mysterious_scroll.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/mysterious_scroll.lua index af9f9f430b7..88bf697f907 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/mysterious_scroll.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/mysterious_scroll.lua @@ -1,11 +1,11 @@ local ferumbrasAscendantMysterious = Action() function ferumbrasAscendantMysterious.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.FerumbrasAscension.RiftRunner) >= 1 or player:getStorageValue(24850) < 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'No matter how often you try, you cannot decipher anything.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "No matter how often you try, you cannot decipher anything.") return true else player:addMount(87) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You decipher something! You get a rift runner to accompany you on your journey.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You decipher something! You get a rift runner to accompany you on your journey.") player:setStorageValue(Storage.FerumbrasAscension.RiftRunner, 1) end return true diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/plagirath_lever.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/plagirath_lever.lua index e6f36beaadc..d288c964a02 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/plagirath_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/plagirath_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Plagirath", - position = Position(33172, 31501, 13) + position = Position(33172, 31501, 13), }, timeToDefeat = 30 * 60, @@ -10,14 +10,14 @@ local config = { { pos = Position(33229, 31501, 13), teleport = Position(33173, 31504, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33229, 31502, 13), teleport = Position(33173, 31504, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33229, 31503, 13), teleport = Position(33173, 31504, 13), effect = CONST_ME_TELEPORT }, - { pos = Position(33229, 31504, 13), teleport = Position(33173, 31504, 13), effect = CONST_ME_TELEPORT } + { pos = Position(33229, 31504, 13), teleport = Position(33173, 31504, 13), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33159, 31488, 13), - to = Position(33190, 31515, 13) + to = Position(33190, 31515, 13), }, exit = Position(33319, 32318, 13), - storage = Storage.FerumbrasAscension.PlagirathTimer + storage = Storage.FerumbrasAscension.PlagirathTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/purified_soul.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/purified_soul.lua index 2d9f49a2667..e0e6976759f 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/purified_soul.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/purified_soul.lua @@ -1,12 +1,12 @@ local ferumbrasAscendantPurifiedSoul = Action() function ferumbrasAscendantPurifiedSoul.onUse(player, item, fromPosition, target, toPosition, isHotkey) - local devourer = target:getName():lower() == 'sin devourer' and target:isMonster() + local devourer = target:getName():lower() == "sin devourer" and target:isMonster() if not devourer then return false end target:getPosition():sendMagicEffect(CONST_ME_HOLYAREA) - target:say('The Sin Devourer has been driven out!', TALKTYPE_MONSTER_SAY) + target:say("The Sin Devourer has been driven out!", TALKTYPE_MONSTER_SAY) target:remove() item:remove() return true diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ragiaz_lever.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ragiaz_lever.lua index a46a5660b7a..95461abb6a0 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ragiaz_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/ragiaz_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Ragiaz", - position = Position(33481, 32334, 13) + position = Position(33481, 32334, 13), }, timeToDefeat = 30 * 60, @@ -10,28 +10,28 @@ local config = { { pos = Position(33457, 32356, 13), teleport = Position(33482, 32339, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33458, 32356, 13), teleport = Position(33482, 32339, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33459, 32356, 13), teleport = Position(33482, 32339, 13), effect = CONST_ME_TELEPORT }, - { pos = Position(33460, 32356, 13), teleport = Position(33482, 32339, 13), effect = CONST_ME_TELEPORT } + { pos = Position(33460, 32356, 13), teleport = Position(33482, 32339, 13), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33468, 32319, 13), - to = Position(33495, 32347, 13) + to = Position(33495, 32347, 13), }, exit = Position(33319, 32318, 13), - storage = Storage.FerumbrasAscension.RagiazTimer + storage = Storage.FerumbrasAscension.RagiazTimer, } local deathDragons = { Position(33476, 32331, 13), Position(33476, 32340, 13), Position(33487, 32340, 13), - Position(33488, 32331, 13) + Position(33488, 32331, 13), } local ferumbrasAscendantRagiaz = Action() function ferumbrasAscendantRagiaz.onUse(player, item, fromPosition, target, toPosition, isHotkey) if CreateDefaultLeverBoss(player, config) then for _, pos in pairs(deathDragons) do - Game.createMonster('Death Dragon', pos, true, true) + Game.createMonster("Death Dragon", pos, true, true) end return true end diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/rat_lever.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/rat_lever.lua index 714c7f806c0..6c9a1b7db9c 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/rat_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/rat_lever.lua @@ -6,9 +6,9 @@ local config = { Position(33198, 31475, 11), Position(33199, 31475, 11), Position(33200, 31475, 11), - Position(33201, 31475, 11) + Position(33201, 31475, 11), }, - newPosition = Position(33215, 31470, 12) + newPosition = Position(33215, 31470, 12), } local ferumbrasAscendantRatLever = Action() diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/razzagorn_lever.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/razzagorn_lever.lua index 9e43caf3a2c..11586fcc350 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/razzagorn_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/razzagorn_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Razzagorn", - position = Position(33422, 32467, 14) + position = Position(33422, 32467, 14), }, timeToDefeat = 30 * 60, @@ -10,14 +10,14 @@ local config = { { pos = Position(33387, 32455, 14), teleport = Position(33419, 32467, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33388, 32455, 14), teleport = Position(33419, 32467, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33389, 32455, 14), teleport = Position(33419, 32467, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33390, 32455, 14), teleport = Position(33419, 32467, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33390, 32455, 14), teleport = Position(33419, 32467, 14), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33407, 32453, 14), - to = Position(33439, 32481, 14) + to = Position(33439, 32481, 14), }, exit = Position(33319, 32318, 13), - storage = Storage.FerumbrasAscension.RazzagornTimer + storage = Storage.FerumbrasAscension.RazzagornTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/reward.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/reward.lua index 4bea3c23ce8..4c751de9af0 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/reward.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/reward.lua @@ -6,7 +6,7 @@ local items = { { itemid = 22737, count = 4 }, { itemid = 22775, count = 1 }, { itemid = 3043, count = 10 }, - { itemid = 22516, count = 5 } + { itemid = 22516, count = 5 }, } local ferumbrasAscendantReward = Action() @@ -15,10 +15,10 @@ function ferumbrasAscendantReward.onUse(player, item, fromPosition, target, toPo return false end if player:getStorageValue(Storage.FerumbrasAscension.Reward) >= 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The treasure chest is empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The treasure chest is empty.") return true end - player:addAchievement('Hat Hunter') + player:addAchievement("Hat Hunter") player:addOutfitAddon(852, 3) player:addOutfitAddon(846, 3) local bag = Game.createItem(2853) @@ -28,9 +28,9 @@ function ferumbrasAscendantReward.onUse(player, item, fromPosition, target, toPo if player:addItemEx(bag) ~= RETURNVALUE_NOERROR then local weight = bag:getWeight() if player:getFreeCapacity() < weight then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format('You have found %s weighing %.2f oz. You have no capacity.', bag:getName(), (weight / 100))) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("You have found %s weighing %.2f oz. You have no capacity.", bag:getName(), (weight / 100))) else - player:sendCancelMessage('You have found a bag, but you have no room to take it.') + player:sendCancelMessage("You have found a bag, but you have no room to take it.") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/sacrifice.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/sacrifice.lua index ddb64657950..e906f6f98cf 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/sacrifice.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/sacrifice.lua @@ -2,7 +2,7 @@ local fount = { [1] = { transformid = 22166, pos = Position(33421, 32383, 12), revert = 2094 }, [2] = { transformid = 22167, pos = Position(33422, 32383, 12), revert = 2095 }, [3] = { transformid = 22168, pos = Position(33421, 32384, 12), revert = 2096 }, - [4] = { transformid = 22169, pos = Position(33422, 32384, 12), revert = 2097 } + [4] = { transformid = 22169, pos = Position(33422, 32384, 12), revert = 2097 }, } local ferumbrasAscendantSacrifice = Action() @@ -12,25 +12,25 @@ function ferumbrasAscendantSacrifice.onUse(player, item, fromPosition, target, t end if item.itemid == 22158 then if player:getStorageValue(Storage.FerumbrasAscension.Bone) >= 1 then - player:say('You already put the bones on the blood well.', TALKTYPE_MONSTER_SAY) + player:say("You already put the bones on the blood well.", TALKTYPE_MONSTER_SAY) return true end player:setStorageValue(Storage.FerumbrasAscension.Bone, 1) elseif item.itemid == 22170 then if player:getStorageValue(Storage.FerumbrasAscension.Ring2) >= 1 then - player:say('You already put the signet ring on the blood well.', TALKTYPE_MONSTER_SAY) + player:say("You already put the signet ring on the blood well.", TALKTYPE_MONSTER_SAY) return true end player:setStorageValue(Storage.FerumbrasAscension.Ring2, 1) elseif item.itemid == 9685 then if player:getStorageValue(Storage.FerumbrasAscension.Vampire) >= 1 then - player:say('You already put the vampire teeth on the blood well.', TALKTYPE_MONSTER_SAY) + player:say("You already put the vampire teeth on the blood well.", TALKTYPE_MONSTER_SAY) return true end player:setStorageValue(Storage.FerumbrasAscension.Vampire, 1) elseif item.itemid == 3661 then if player:getStorageValue(Storage.FerumbrasAscension.Flower) >= 1 then - player:say('You already put the grave flower on the blood well.', TALKTYPE_MONSTER_SAY) + player:say("You already put the grave flower on the blood well.", TALKTYPE_MONSTER_SAY) return true end player:setStorageValue(Storage.FerumbrasAscension.Flower, 1) @@ -51,7 +51,7 @@ function ferumbrasAscendantSacrifice.onUse(player, item, fromPosition, target, t player:setStorageValue(Storage.FerumbrasAscension.Fount, 0) end player:setStorageValue(Storage.FerumbrasAscension.Fount, player:getStorageValue(Storage.FerumbrasAscension.Fount) + 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You put the ' .. item:getName() .. ' into the dried well.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You put the " .. item:getName() .. " into the dried well.") toPosition:sendMagicEffect(CONST_ME_DRAWBLOOD) item:remove(1) return true diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/scroll_of_ascension.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/scroll_of_ascension.lua index d8d9e8659e1..7eccfa18edb 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/scroll_of_ascension.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/scroll_of_ascension.lua @@ -6,10 +6,10 @@ function ferumbrasAscendantScroll.onUse(player, item, fromPosition, target, toPo item:transform(22772) item:decay() player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Magical sparks whirl around the scroll as you read and then your appearance is changing.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Magical sparks whirl around the scroll as you read and then your appearance is changing.") return true elseif item.itemid == 22772 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You are tired of the last scroll reading, rest your eyes for a moment.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are tired of the last scroll reading, rest your eyes for a moment.") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/shulgrax_lever.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/shulgrax_lever.lua index e9b096aefd8..83e8b16663f 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/shulgrax_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/shulgrax_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Shulgrax", - position = Position(33485, 32786, 13) + position = Position(33485, 32786, 13), }, timeToDefeat = 30 * 60, @@ -10,14 +10,14 @@ local config = { { pos = Position(33434, 32786, 13), teleport = Position(33485, 32790, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33434, 32787, 13), teleport = Position(33485, 32790, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33434, 32788, 13), teleport = Position(33485, 32790, 13), effect = CONST_ME_TELEPORT }, - { pos = Position(33434, 32789, 13), teleport = Position(33485, 32790, 13), effect = CONST_ME_TELEPORT } + { pos = Position(33434, 32789, 13), teleport = Position(33485, 32790, 13), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33474, 32775, 13), - to = Position(33496, 32798, 13) + to = Position(33496, 32798, 13), }, exit = Position(33319, 32318, 13), - storage = Storage.FerumbrasAscension.ShulgraxTimer + storage = Storage.FerumbrasAscension.ShulgraxTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/statue.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/statue.lua index 74c24c60c9a..65040b79df9 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/statue.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/statue.lua @@ -2,7 +2,7 @@ local fount = { [1] = { transformid = 22166, pos = Position(33421, 32383, 12), revert = 2094 }, [2] = { transformid = 22167, pos = Position(33422, 32383, 12), revert = 2095 }, [3] = { transformid = 22168, pos = Position(33421, 32384, 12), revert = 2096 }, - [4] = { transformid = 22169, pos = Position(33422, 32384, 12), revert = 2097 } + [4] = { transformid = 22169, pos = Position(33422, 32384, 12), revert = 2097 }, } local ferumbrasAscendantStatue = Action() @@ -16,7 +16,7 @@ function ferumbrasAscendantStatue.onUse(player, item, fromPosition, target, toPo founts:transform(fount.revert) founts:setActionId(53805) end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You douse the sacred statue\'s flame. The room darkens.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You douse the sacred statue's flame. The room darkens.") player:setStorageValue(Storage.FerumbrasAscension.Statue, 1) item:transform(22163) return true diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/tarbaz_lever.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/tarbaz_lever.lua index 052b94e2432..0ceb1fc87b9 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/tarbaz_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/tarbaz_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Tarbaz", - position = Position(33459, 32844, 11) + position = Position(33459, 32844, 11), }, timeToDefeat = 30 * 60, @@ -10,14 +10,14 @@ local config = { { pos = Position(33418, 32850, 11), teleport = Position(33459, 32848, 11), effect = CONST_ME_TELEPORT }, { pos = Position(33418, 32851, 11), teleport = Position(33459, 32848, 11), effect = CONST_ME_TELEPORT }, { pos = Position(33418, 32852, 11), teleport = Position(33459, 32848, 11), effect = CONST_ME_TELEPORT }, - { pos = Position(33418, 32853, 11), teleport = Position(33459, 32848, 11), effect = CONST_ME_TELEPORT } + { pos = Position(33418, 32853, 11), teleport = Position(33459, 32848, 11), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33447, 32832, 11), - to = Position(33473, 32856, 11) + to = Position(33473, 32856, 11), }, exit = Position(33319, 32318, 13), - storage = Storage.FerumbrasAscension.TarbazTimer + storage = Storage.FerumbrasAscension.TarbazTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/tarbaz_notes.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/tarbaz_notes.lua index e1374a15b16..4dea9d21e2c 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/tarbaz_notes.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/tarbaz_notes.lua @@ -4,13 +4,13 @@ function ferumbrasAscendantTarbazNotes.onUse(player, item, fromPosition, target, if player:getStorageValue(Storage.FerumbrasAscension.BasinCounter) ~= 8 then return false end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Suddenly, you see the big picture. It all makes sense now. And then you despair.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Suddenly, you see the big picture. It all makes sense now. And then you despair.") player:setStorageValue(Storage.FerumbrasAscension.TarbazNotes, 1) elseif item.actionid == 54389 then if player:getStorageValue(Storage.FerumbrasAscension.BasinCounter) ~= 8 and player:getStorageValue(Storage.FerumbrasAscension.TarbazNotes) < 1 then return false end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Suddenly, you see the latter A. It all makes sense now. And then you now the secret.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Suddenly, you see the latter A. It all makes sense now. And then you now the secret.") player:setStorageValue(Storage.FerumbrasAscension.TarbazNotes, 2) end toPosition:sendMagicEffect(CONST_ME_THUNDER) diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/teleportation_rod.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/teleportation_rod.lua index 73451ec3cf4..78292f6d34c 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/teleportation_rod.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/teleportation_rod.lua @@ -5,7 +5,7 @@ local config = { [24833] = { storageKey = Storage.FerumbrasAscension.Mazoran }, [24834] = { storageKey = Storage.FerumbrasAscension.Tarbaz }, [24835] = { storageKey = Storage.FerumbrasAscension.Shulgrax }, - [24836] = { storageKey = Storage.FerumbrasAscension.Plagirath } + [24836] = { storageKey = Storage.FerumbrasAscension.Plagirath }, } local ferumbrasAscendantTeleportation = Action() @@ -15,7 +15,7 @@ function ferumbrasAscendantTeleportation.onUse(player, item, fromPosition, targe return false end if player:getStorageValue(targetItem.storageKey) == 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You already teleported this part of the Godbreaker to Mazarius.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You already teleported this part of the Godbreaker to Mazarius.") return true end player:setStorageValue(targetItem.storageKey, 1) diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/the_shatterer_lever.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/the_shatterer_lever.lua index 0b71b34ee10..5ee308349da 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/the_shatterer_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/the_shatterer_lever.lua @@ -6,9 +6,9 @@ local config = { Position(33404, 32465, 13), Position(33405, 32465, 13), Position(33406, 32465, 13), - Position(33407, 32465, 13) + Position(33407, 32465, 13), }, - newPosition = Position(33398, 32414, 14) + newPosition = Position(33398, 32414, 14), } local ferumbrasAscendantTheShattererLever = Action() diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/the_shatterer_levers.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/the_shatterer_levers.lua index 4d25a5999ef..d97d8c4bccc 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/the_shatterer_levers.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/the_shatterer_levers.lua @@ -7,7 +7,7 @@ local chains = { [5] = { itemid = 21285, position = Position(33405, 32419, 14) }, [6] = { itemid = 21286, position = Position(33406, 32419, 14) }, [7] = { itemid = 2126, position = Position(33403, 32418, 14) }, - [8] = { itemid = 2126, position = Position(33404, 32418, 14) } + [8] = { itemid = 2126, position = Position(33404, 32418, 14) }, }, North = { [1] = { itemid = 21288, position = Position(33407, 32414, 14) }, @@ -16,7 +16,7 @@ local chains = { [4] = { itemid = 21288, position = Position(33407, 32417, 14) }, [5] = { itemid = 21289, position = Position(33407, 32418, 14) }, [6] = { itemid = 2126, position = Position(33406, 32415, 14) }, - [7] = { itemid = 2126, position = Position(33406, 32416, 14) } + [7] = { itemid = 2126, position = Position(33406, 32416, 14) }, }, East = { [1] = { itemid = 21285, position = Position(33408, 32419, 14) }, @@ -25,7 +25,7 @@ local chains = { [4] = { itemid = 21284, position = Position(33411, 32419, 14) }, [5] = { itemid = 21286, position = Position(33412, 32419, 14) }, [6] = { itemid = 2126, position = Position(33408, 32418, 14) }, - [7] = { itemid = 2126, position = Position(33409, 32418, 14) } + [7] = { itemid = 2126, position = Position(33409, 32418, 14) }, }, South = { [1] = { itemid = 21288, position = Position(33407, 32420, 14) }, @@ -34,14 +34,14 @@ local chains = { [4] = { itemid = 21287, position = Position(33407, 32423, 14) }, [5] = { itemid = 21289, position = Position(33407, 32424, 14) }, [6] = { itemid = 2126, position = Position(33406, 32420, 14) }, - [7] = { itemid = 2126, position = Position(33406, 32421, 14) } - } + [7] = { itemid = 2126, position = Position(33406, 32421, 14) }, + }, } local ferumbrasAscendantTheShattererLevers = Action() function ferumbrasAscendantTheShattererLevers.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.FerumbrasAscension.TheShatterer) >= 1 then - player:sendCancelMessage('You cannot use this lever again.') + player:sendCancelMessage("You cannot use this lever again.") return true end if item.itemid == 8911 then @@ -58,7 +58,7 @@ function ferumbrasAscendantTheShattererLevers.onUse(player, item, fromPosition, Game.setStorageValue(Storage.FerumbrasAscension.TheShattererLever, math.max(Game.getStorageValue(Storage.FerumbrasAscension.TheShattererLever), 0) + 1) if Game.getStorageValue(Storage.FerumbrasAscension.TheShattererLever) >= 4 then local boss = Tile(Position(33406, 32418, 14)):getTopCreature() - if boss and boss:getName():lower() == 'the shatterer' then + if boss and boss:getName():lower() == "the shatterer" then boss:teleportTo(Position(33400, 32415, 14)) boss:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true @@ -76,7 +76,7 @@ function ferumbrasAscendantTheShattererLevers.onUse(player, item, fromPosition, Game.setStorageValue(Storage.FerumbrasAscension.TheShattererLever, math.max(Game.getStorageValue(Storage.FerumbrasAscension.TheShattererLever), 0) + 1) if Game.getStorageValue(Storage.FerumbrasAscension.TheShattererLever) >= 4 then local boss = Tile(Position(33406, 32418, 14)):getTopCreature() - if boss and boss:getName():lower() == 'the shatterer' then + if boss and boss:getName():lower() == "the shatterer" then boss:teleportTo(Position(33400, 32415, 14)) boss:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true @@ -93,7 +93,7 @@ function ferumbrasAscendantTheShattererLevers.onUse(player, item, fromPosition, Game.setStorageValue(Storage.FerumbrasAscension.TheShattererLever, math.max(Game.getStorageValue(Storage.FerumbrasAscension.TheShattererLever), 0) + 1) if Game.getStorageValue(Storage.FerumbrasAscension.TheShattererLever) >= 4 then local boss = Tile(Position(33406, 32418, 14)):getTopCreature() - if boss and boss:getName():lower() == 'the shatterer' then + if boss and boss:getName():lower() == "the shatterer" then boss:teleportTo(Position(33400, 32415, 14)) boss:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true @@ -110,16 +110,16 @@ function ferumbrasAscendantTheShattererLevers.onUse(player, item, fromPosition, Game.setStorageValue(Storage.FerumbrasAscension.TheShattererLever, math.max(Game.getStorageValue(Storage.FerumbrasAscension.TheShattererLever), 0) + 1) if Game.getStorageValue(Storage.FerumbrasAscension.TheShattererLever) >= 4 then local boss = Tile(Position(33406, 32418, 14)):getTopCreature() - if boss and boss:getName():lower() == 'the shatterer' then + if boss and boss:getName():lower() == "the shatterer" then boss:teleportTo(Position(33400, 32415, 14)) boss:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true end end end - player:say('CLICK', TALKTYPE_MONSTER_SAY, false, nil, toPosition) + player:say("CLICK", TALKTYPE_MONSTER_SAY, false, nil, toPosition) elseif item.itemid == 8912 then - player:sendCancelMessage('Sorry, not possible.') + player:sendCancelMessage("Sorry, not possible.") return true end return true diff --git a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/zamulosh_lever.lua b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/zamulosh_lever.lua index fea04ab1a36..545edd1f35a 100644 --- a/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/zamulosh_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/ferumbras_ascendant/zamulosh_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Zamulosh", - position = Position(33643, 32756, 11) + position = Position(33643, 32756, 11), }, timeToDefeat = 30 * 60, @@ -10,14 +10,14 @@ local config = { { pos = Position(33680, 32742, 11), teleport = Position(33644, 32760, 11), effect = CONST_ME_TELEPORT }, { pos = Position(33680, 32743, 11), teleport = Position(33644, 32760, 11), effect = CONST_ME_TELEPORT }, { pos = Position(33680, 32744, 11), teleport = Position(33644, 32760, 11), effect = CONST_ME_TELEPORT }, - { pos = Position(33680, 32745, 11), teleport = Position(33644, 32760, 11), effect = CONST_ME_TELEPORT } + { pos = Position(33680, 32745, 11), teleport = Position(33644, 32760, 11), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33632, 32747, 11), - to = Position(33654, 32765, 11) + to = Position(33654, 32765, 11), }, exit = Position(33319, 32318, 13), - storage = Storage.FerumbrasAscension.ZamuloshTimer + storage = Storage.FerumbrasAscension.ZamuloshTimer, } local zamuloshSummons = { @@ -26,14 +26,14 @@ local zamuloshSummons = { Position(33642, 32756, 11), Position(33644, 32756, 11), Position(33644, 32756, 11), - Position(33644, 32756, 11) + Position(33644, 32756, 11), } local ferumbrasAscendantZamulosh = Action() function ferumbrasAscendantZamulosh.onUse(player, item, fromPosition, target, toPosition, isHotkey) if CreateDefaultLeverBoss(player, config) then for _, pos in pairs(zamuloshSummons) do - Game.createMonster('Zamulosh3', pos, true, true) + Game.createMonster("Zamulosh3", pos, true, true) end return true end diff --git a/data-otservbr-global/scripts/actions/quests/first_dragon/lever.lua b/data-otservbr-global/scripts/actions/quests/first_dragon/lever.lua index a51eea0819f..174455e6574 100644 --- a/data-otservbr-global/scripts/actions/quests/first_dragon/lever.lua +++ b/data-otservbr-global/scripts/actions/quests/first_dragon/lever.lua @@ -2,7 +2,7 @@ local lever = Action() local setting = { centerRoom = { x = 33616, y = 31022, z = 14 }, - range = 10 + range = 10, } local monsterPosition = { @@ -10,7 +10,7 @@ local monsterPosition = { { position = Position(33592, 31013, 14) }, { position = Position(33583, 31022, 14) }, { position = Position(33574, 31031, 14) }, - { position = Position(33592, 31031, 14) } + { position = Position(33592, 31031, 14) }, } local playerPositions = { @@ -28,7 +28,7 @@ local playerPositions = { Position(33584, 30996, 14), Position(33582, 30997, 14), Position(33583, 30997, 14), - Position(33584, 30997, 14) + Position(33584, 30997, 14), } local config = { diff --git a/data-otservbr-global/scripts/actions/quests/first_dragon/rewards.lua b/data-otservbr-global/scripts/actions/quests/first_dragon/rewards.lua index fbeb691394b..c855009543e 100644 --- a/data-otservbr-global/scripts/actions/quests/first_dragon/rewards.lua +++ b/data-otservbr-global/scripts/actions/quests/first_dragon/rewards.lua @@ -1,35 +1,35 @@ local bpItems = { - { name = 'ancient coin', count = 1 }, - { name = 'draken sulphur', count = 1 }, - { name = 'seacrest hair', count = 2 }, - { name = 'mystical hourglass', count = 2 }, - { name = 'gold token', count = 3 }, - { name = 'blue gem', count = 1 }, - { name = 'yellow gem', count = 1 }, - { name = 'red gem', count = 1 }, - { name = 'demon horn', count = 2 }, - { name = 'slime heart', count = 2 }, - { name = 'energy vein', count = 2 }, - { name = 'petrified scream', count = 2 }, - { name = 'brimstone shell', count = 2 }, - { name = 'deepling wart', count = 2 }, - { name = 'wyrm scale', count = 2 }, - { name = 'hellspawn tail', count = 2 } + { name = "ancient coin", count = 1 }, + { name = "draken sulphur", count = 1 }, + { name = "seacrest hair", count = 2 }, + { name = "mystical hourglass", count = 2 }, + { name = "gold token", count = 3 }, + { name = "blue gem", count = 1 }, + { name = "yellow gem", count = 1 }, + { name = "red gem", count = 1 }, + { name = "demon horn", count = 2 }, + { name = "slime heart", count = 2 }, + { name = "energy vein", count = 2 }, + { name = "petrified scream", count = 2 }, + { name = "brimstone shell", count = 2 }, + { name = "deepling wart", count = 2 }, + { name = "wyrm scale", count = 2 }, + { name = "hellspawn tail", count = 2 }, } local chests = { [14021] = { name = "porcelain mask", - count = 1 + count = 1, }, [14022] = { name = "backpack", - count = 1 + count = 1, }, [14023] = { name = "colourful feathers", - count = 3 - } + count = 3, + }, } local finalReward = Action() @@ -41,23 +41,23 @@ function finalReward.onUse(player, item, fromPosition, target, toPosition, isHot if item.uid == 14021 and player:getStorageValue(Storage.FirstDragon.RewardFeather) < os.time() then player:addItem(setting.name, setting.count, true) player:setStorageValue(Storage.FirstDragon.RewardFeather, os.time() + 24 * 3600) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You found ' .. setting.count .. ' ' .. setting.name .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You found " .. setting.count .. " " .. setting.name .. ".") elseif item.uid == 14022 and player:getStorageValue(Storage.FirstDragon.RewardBackpack) < os.time() then - local bp = Game.createItem('Backpack', 1) + local bp = Game.createItem("Backpack", 1) if bp then for i = 1, #bpItems do bp:addItem(bpItems[i].name, count) end bp:moveTo(player) end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You found a backpack.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You found a backpack.") player:setStorageValue(Storage.FirstDragon.RewardBackpack, os.time() + 60 * 60 * 365 * 24) elseif item.uid == 14023 and player:getStorageValue(Storage.FirstDragon.RewardMask) < os.time() then player:addItem(setting.name, setting.count, true) player:setStorageValue(Storage.FirstDragon.RewardMask, os.time() + 60 * 60 * 5 * 24) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You found ' .. setting.count .. ' ' .. setting.name .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You found " .. setting.count .. " " .. setting.name .. ".") else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The ' .. getItemName(setting.itemId) .. ' is empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The " .. getItemName(setting.itemId) .. " is empty.") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/first_dragon/sacrifice_items.lua b/data-otservbr-global/scripts/actions/quests/first_dragon/sacrifice_items.lua index 422811293dc..19144117c54 100644 --- a/data-otservbr-global/scripts/actions/quests/first_dragon/sacrifice_items.lua +++ b/data-otservbr-global/scripts/actions/quests/first_dragon/sacrifice_items.lua @@ -2,7 +2,7 @@ local config = { [24939] = { storage = Storage.FirstDragon.Scale }, [24940] = { storage = Storage.FirstDragon.Tooth }, [24941] = { storage = Storage.FirstDragon.Horn }, - [24942] = { storage = Storage.FirstDragon.Bones } + [24942] = { storage = Storage.FirstDragon.Bones }, } local sacrificeItems = Action() @@ -19,7 +19,7 @@ function sacrificeItems.onUse(player, item, fromPosition, target, toPosition, is end if player:getStorageValue(Storage.FirstDragon.AccessCave) >= 4 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You\'re plunging " .. item:getName() .. " into the lava. You are now worthy to enter The First Dragon's Lair. Touch the lava pool again.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You're plunging " .. item:getName() .. " into the lava. You are now worthy to enter The First Dragon's Lair. Touch the lava pool again.") return true end @@ -27,7 +27,7 @@ function sacrificeItems.onUse(player, item, fromPosition, target, toPosition, is player:setStorageValue(Storage.FirstDragon.AccessCave, 0) end local targetPosition = Position(33047, 32712, 3) - if (toPosition == targetPosition) then + if toPosition == targetPosition then local targetId = Tile(targetPosition):getItemById(25160) if targetId then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You're plunging " .. item:getName() .. " into the lava.") diff --git a/data-otservbr-global/scripts/actions/quests/first_dragon/treasure_chest.lua b/data-otservbr-global/scripts/actions/quests/first_dragon/treasure_chest.lua index b301190de3d..b82c52cce56 100644 --- a/data-otservbr-global/scripts/actions/quests/first_dragon/treasure_chest.lua +++ b/data-otservbr-global/scripts/actions/quests/first_dragon/treasure_chest.lua @@ -1,85 +1,85 @@ local UniqueTable = { [14001] = { name = "giant shimmering pearl", - count = 1 + count = 1, }, [14002] = { name = "gold nugget", - count = 2 + count = 2, }, [14003] = { name = "blue crystal shard", - count = 1 + count = 1, }, [14004] = { name = "violet crystal shard", - count = 1 + count = 1, }, [14005] = { name = "green crystal splinter", - count = 2 + count = 2, }, [14006] = { -- red gem itemId = 3039, - count = 1 + count = 1, }, [14007] = { name = "onyx chip", - count = 3 + count = 3, }, [14008] = { name = "platinum coin", - count = 3 + count = 3, }, [14009] = { name = "red crystal fragment", - count = 2 + count = 2, }, [14010] = { name = "yellow gem", - count = 1 + count = 1, }, [14011] = { name = "talon", - count = 3 + count = 3, }, [14012] = { name = "white pearl", - count = 2 + count = 2, }, [14013] = { name = "gold ingot", - count = 1 + count = 1, }, [14014] = { name = "opal", - count = 3 + count = 3, }, [14015] = { name = "small diamond", - count = 2 + count = 2, }, [14016] = { name = "green crystal shard", - count = 1 + count = 1, }, [14017] = { name = "black pearl", - count = 3 + count = 3, }, [14018] = { name = "emerald bangle", - count = 1 + count = 1, }, [14019] = { name = "green gem", - count = 1 + count = 1, }, [14020] = { name = "giant shimmering pearl", - count = 1 - } + count = 1, + }, } local treasureChest = Action() @@ -90,12 +90,12 @@ function treasureChest.onUse(player, item, fromPosition, target, toPosition, isH end if player:getStorageValue(item.uid) >= 1 then - player:sendTextMessage(string.format(MESSAGE_EVENT_ADVANCE, 'The %s is empty.', item:getName())) + player:sendTextMessage(string.format(MESSAGE_EVENT_ADVANCE, "The %s is empty.", item:getName())) return true end if player:getStorageValue(Storage.FirstDragon.ChestCounter) >= 19 then - player:addAchievement('Treasure Hunter') + player:addAchievement("Treasure Hunter") player:addItem(setting.name or setting.itemId, setting.count, true) player:setStorageValue(item.uid, 1) player:setStorageValue(Storage.FirstDragon.ChestCounter, player:getStorageValue(Storage.FirstDragon.ChestCounter) + 1) @@ -104,11 +104,11 @@ function treasureChest.onUse(player, item, fromPosition, target, toPosition, isH player:setStorageValue(item.uid, 1) player:setStorageValue(Storage.FirstDragon.ChestCounter, player:getStorageValue(Storage.FirstDragon.ChestCounter) + 1) if setting.name then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You found ' .. setting.count .. ' ' .. setting.name .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You found " .. setting.count .. " " .. setting.name .. ".") player:addItem(setting.name, setting.count, true) elseif setting.itemId then player:addItem(setting.itemId, setting.count, true) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You found ' .. setting.count .. ' ' .. getItemName(setting.itemId) .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You found " .. setting.count .. " " .. getItemName(setting.itemId) .. ".") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/bird_cage.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/bird_cage.lua index ac76ffae41d..36206829675 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/bird_cage.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/bird_cage.lua @@ -1,19 +1,19 @@ local forgottenKnowledgeBird = Action() function forgottenKnowledgeBird.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 23812 then - if target:getName():lower() ~= 'cave parrot' then + if target:getName():lower() ~= "cave parrot" then return false end target:getPosition():sendMagicEffect(CONST_ME_POFF) target:remove() - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The cave parrot may be tough but he somehow couldn\'t resist this particular birdcage. Or maybe it was you...') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The cave parrot may be tough but he somehow couldn't resist this particular birdcage. Or maybe it was you...") item:transform(23813) return true elseif item.itemid == 23813 then if player:getPosition() ~= Position(32737, 32117, 10) then return false end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You open the cage and let the cave parrot roam free!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You open the cage and let the cave parrot roam free!") item:transform(23812) if player:getStorageValue(Storage.ForgottenKnowledge.BirdCounter) < 0 then player:setStorageValue(Storage.ForgottenKnowledge.BirdCounter, 0) diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/dragonking_lever.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/dragonking_lever.lua index a82c0842e30..73c3347f3a2 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/dragonking_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/dragonking_lever.lua @@ -11,11 +11,11 @@ local config = { { pos = Position(33391, 31182, 10), teleport = Position(33359, 31186, 10) }, }, monsters = { - { name = 'soulcatcher', pos = Position(33352, 31187, 10) }, - { name = 'soulcatcher', pos = Position(33363, 31187, 10) }, - { name = 'soulcatcher', pos = Position(33353, 31176, 10) }, - { name = 'soulcatcher', pos = Position(33363, 31176, 10) }, - { name = 'soul of dragonking zyrtarch', pos = Position(33359, 31182, 12) }, + { name = "soulcatcher", pos = Position(33352, 31187, 10) }, + { name = "soulcatcher", pos = Position(33363, 31187, 10) }, + { name = "soulcatcher", pos = Position(33353, 31176, 10) }, + { name = "soulcatcher", pos = Position(33363, 31176, 10) }, + { name = "soul of dragonking zyrtarch", pos = Position(33359, 31182, 12) }, }, specPos = { from = Position(33348, 31172, 10), diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/fount.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/fount.lua index 89b5525fef8..09501839c9e 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/fount.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/fount.lua @@ -4,7 +4,7 @@ function forgottenKnowledgeFount.onUse(player, item, fromPosition, target, toPos return false end player:addItem(23810) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'A phial of fresh pond water. It looks crystal clear and sparkles a little.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "A phial of fresh pond water. It looks crystal clear and sparkles a little.") player:setStorageValue(Storage.ForgottenKnowledge.Phial, 1) return true end diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/girl_picture.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/girl_picture.lua index 3db1cf1c079..b065f3e3de2 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/girl_picture.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/girl_picture.lua @@ -4,7 +4,7 @@ function forgottenKnowledgeGirl.onUse(player, item, fromPosition, target, toPosi return false end player:setStorageValue(Storage.ForgottenKnowledge.GirlPicture, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Seems that an old silver key appears in the drower.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Seems that an old silver key appears in the drower.") item:remove() return true end diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/horror_lever.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/horror_lever.lua index d5d67dddd82..41fb01eec0e 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/horror_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/horror_lever.lua @@ -13,17 +13,17 @@ local config = { { pos = Position(32302, 31089, 14), teleport = Position(32271, 31097, 14), effect = CONST_ME_TELEPORT }, { pos = Position(32302, 31090, 14), teleport = Position(32271, 31097, 14), effect = CONST_ME_TELEPORT }, { pos = Position(32302, 31091, 14), teleport = Position(32271, 31097, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(32302, 31092, 14), teleport = Position(32271, 31097, 14), effect = CONST_ME_TELEPORT } + { pos = Position(32302, 31092, 14), teleport = Position(32271, 31097, 14), effect = CONST_ME_TELEPORT }, }, monsters = { - { name = 'icicle', pos = Position(32266, 31084, 14) }, - { name = 'icicle', pos = Position(32272, 31084, 14) }, - { name = 'dragon egg', pos = eggPos }, - { name = 'melting frozen horror', pos = Position(32267, 31071, 14) } + { name = "icicle", pos = Position(32266, 31084, 14) }, + { name = "icicle", pos = Position(32272, 31084, 14) }, + { name = "dragon egg", pos = eggPos }, + { name = "melting frozen horror", pos = Position(32267, 31071, 14) }, }, specPos = { from = Position(32257, 31080, 14), - to = Position(32280, 31102, 14) + to = Position(32280, 31102, 14), }, exit = Position(32271, 31097, 14), storage = Storage.ForgottenKnowledge.HorrorTimer, diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/lantern.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/lantern.lua index 2658a037ade..05cb8956623 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/lantern.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/lantern.lua @@ -1,6 +1,6 @@ local config = { [23734] = { transformId = 23738 }, - [23738] = { transformId = 23734 } + [23738] = { transformId = 23734 }, } local forgottenKnowledgeLantern = Action() @@ -15,12 +15,12 @@ function forgottenKnowledgeLantern.onUse(player, item, fromPosition, target, toP end if item:getId() == 23734 then player:getPosition():sendMagicEffect(CONST_ME_ENERGYAREA) - local msg = 'As you start polishing the lantern it begins to glow in an otherworldly light.' + local msg = "As you start polishing the lantern it begins to glow in an otherworldly light." if player:getPosition():getDistance(Position(32891, 31619, 10)) < 2 then if not player:getItemById(23733, true) then - msg = 'In the light of the ghostsilver lantern you discover an otherwise invisible door. But you lack the key to open it.' + msg = "In the light of the ghostsilver lantern you discover an otherwise invisible door. But you lack the key to open it." else - msg = 'In the light of the ghostsilver lantern you discover an otherwise invisible door. As you have the fitting key you can pass.' + msg = "In the light of the ghostsilver lantern you discover an otherwise invisible door. As you have the fitting key you can pass." end end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, msg) diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/last_lore_lever.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/last_lore_lever.lua index a3a2ba45c24..42b893fb7eb 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/last_lore_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/last_lore_lever.lua @@ -17,24 +17,24 @@ local config = { { pos = Position(32020, 32847, 14), teleport = Position(31984, 32851, 14), effect = CONST_ME_TELEPORT }, { pos = Position(32018, 32848, 14), teleport = Position(31984, 32851, 14), effect = CONST_ME_TELEPORT }, { pos = Position(32019, 32848, 14), teleport = Position(31984, 32851, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(32020, 32848, 14), teleport = Position(31984, 32851, 14), effect = CONST_ME_TELEPORT } + { pos = Position(32020, 32848, 14), teleport = Position(31984, 32851, 14), effect = CONST_ME_TELEPORT }, }, bossPosition = Position(31987, 32839, 14), monsters = { - { pos = Position(31973, 32840, 15), monster = 'bound astral power' }, - { pos = Position(31973, 32856, 15), monster = 'bound astral power' }, - { pos = Position(31989, 32856, 15), monster = 'bound astral power' }, - { pos = Position(31989, 32840, 15), monster = 'bound astral power' }, - { pos = Position(31986, 32840, 14), monster = 'a shielded astral glyph' }, - { pos = Position(31986, 32823, 15), monster = 'the distorted astral source' }, - { pos = Position(31989, 32823, 15), monster = 'an astral glyph' } + { pos = Position(31973, 32840, 15), monster = "bound astral power" }, + { pos = Position(31973, 32856, 15), monster = "bound astral power" }, + { pos = Position(31989, 32856, 15), monster = "bound astral power" }, + { pos = Position(31989, 32840, 15), monster = "bound astral power" }, + { pos = Position(31986, 32840, 14), monster = "a shielded astral glyph" }, + { pos = Position(31986, 32823, 15), monster = "the distorted astral source" }, + { pos = Position(31989, 32823, 15), monster = "an astral glyph" }, }, specPos = { from = Position(31968, 32821, 14), - to = Position(32004, 32865, 15) + to = Position(32004, 32865, 15), }, exit = Position(32035, 32859, 14), - storage = Storage.ForgottenKnowledge.LastLoreTimer + storage = Storage.ForgottenKnowledge.LastLoreTimer, } local forgottenKnowledgeLastLore = Action() @@ -50,7 +50,6 @@ function forgottenKnowledgeLastLore.onUse(player, item, fromPosition, target, to spec:setMultiFloor(true) spec:check() - if spec:getPlayers() > 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "There's someone fighting with " .. config.bossName .. ".") return true @@ -85,7 +84,7 @@ function forgottenKnowledgeLastLore.onUse(player, item, fromPosition, target, to for n = 1, #config.monsters do Game.createMonster(config.monsters[n].monster, config.monsters[n].pos, true, true) end - local monster = Game.createMonster('the astral source', config.bossPosition, true, true) + local monster = Game.createMonster("the astral source", config.bossPosition, true, true) if not monster then return true end @@ -93,7 +92,7 @@ function forgottenKnowledgeLastLore.onUse(player, item, fromPosition, target, to lever:setStorageAllPlayers(config.storage, os.time() + config.timeToFightAgain * 3600) Game.setStorageValue(GlobalStorage.ForgottenKnowledge.AstralPowerCounter, 1) Game.setStorageValue(GlobalStorage.ForgottenKnowledge.AstralGlyph, 0) - player:say('The Astral Glyph begins to draw upon bound astral power to expel you from the room!', TALKTYPE_MONSTER_SAY) + player:say("The Astral Glyph begins to draw upon bound astral power to expel you from the room!", TALKTYPE_MONSTER_SAY) addEvent(function() local old_players = lever:getInfoPositions() spec:clearCreaturesCache() diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/lloyd_lever.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/lloyd_lever.lua index ae36a71736c..3e880c37c91 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/lloyd_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/lloyd_lever.lua @@ -8,17 +8,17 @@ local config = { { pos = Position(32759, 32869, 14), teleport = Position(32800, 32831, 14) }, { pos = Position(32759, 32870, 14), teleport = Position(32800, 32831, 14) }, { pos = Position(32759, 32871, 14), teleport = Position(32800, 32831, 14) }, - { pos = Position(32759, 32872, 14), teleport = Position(32800, 32831, 14) } + { pos = Position(32759, 32872, 14), teleport = Position(32800, 32831, 14) }, }, monsters = { - { name = 'cosmic energy prism a invu', pos = Position(32801, 32827, 14) }, - { name = 'cosmic energy prism b invu', pos = Position(32798, 32827, 14) }, - { name = 'cosmic energy prism c invu', pos = Position(32803, 32826, 14) }, - { name = 'cosmic energy prism d invu', pos = Position(32796, 32826, 14) }, + { name = "cosmic energy prism a invu", pos = Position(32801, 32827, 14) }, + { name = "cosmic energy prism b invu", pos = Position(32798, 32827, 14) }, + { name = "cosmic energy prism c invu", pos = Position(32803, 32826, 14) }, + { name = "cosmic energy prism d invu", pos = Position(32796, 32826, 14) }, }, specPos = { from = Position(32785, 32813, 14), - to = Position(32812, 32838, 14) + to = Position(32812, 32838, 14), }, exit = Position(32815, 32873, 13), storage = Storage.ForgottenKnowledge.LloydTimer, diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/lost_time.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/lost_time.lua index 6b3b599f73a..44644055810 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/lost_time.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/lost_time.lua @@ -1,12 +1,12 @@ local forgottenKnowledgeLostTime = Action() function forgottenKnowledgeLostTime.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if target:getName():lower() ~= 'time waster' then + if target:getName():lower() ~= "time waster" then return false end target:getPosition():sendMagicEffect(CONST_ME_POFF) target:remove() item:remove() - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The time waster hungrily consumes the time and vanishes.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The time waster hungrily consumes the time and vanishes.") return true end diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/old_desk.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/old_desk.lua index 2416b9af5b6..3bbc0175e5d 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/old_desk.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/old_desk.lua @@ -1,20 +1,20 @@ local forgottenKnowledgeOldDesk = Action() function forgottenKnowledgeOldDesk.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.ForgottenKnowledge.SilverKey) >= 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You already get an old silver key.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You already get an old silver key.") return true end if player:getStorageValue(Storage.ForgottenKnowledge.GirlPicture) >= 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You find an old silver key inside of the drower.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You find an old silver key inside of the drower.") player:addItem(23733, true, true) player:setStorageValue(Storage.ForgottenKnowledge.SilverKey, 1) return true end if player:getStorageValue(Storage.ForgottenKnowledge.OldDesk) >= 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You already get an old note.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You already get an old note.") return true end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'As you open the drower a ghostly apparition shortly appears hovering over the desk. You find an old note inside of the drower.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "As you open the drower a ghostly apparition shortly appears hovering over the desk. You find an old note inside of the drower.") player:addItem(23731, true, true) player:setStorageValue(Storage.ForgottenKnowledge.OldDesk, 1) return true diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/plant.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/plant.lua index b069056bdf3..d0306018ce5 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/plant.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/plant.lua @@ -1,6 +1,6 @@ local config = { fromPosition = Position(32731, 32108, 11), - toPosition = Position(32745, 32121, 11) + toPosition = Position(32745, 32121, 11), } local items = { @@ -196,7 +196,7 @@ local items = { { itemid = 4515, position = Position(32743, 32115, 11) }, { itemid = 21935, position = Position(32743, 32116, 11) }, { itemid = 15392, position = Position(32743, 32116, 11) }, - { itemid = 4515, position = Position(32743, 32116, 11) } + { itemid = 4515, position = Position(32743, 32116, 11) }, } local dry = { @@ -362,7 +362,7 @@ local dry = { { itemid = 15267, position = Position(32743, 32115, 11) }, { itemid = 10605, position = Position(32743, 32115, 11) }, { itemid = 15392, position = Position(32743, 32116, 11) }, - { itemid = 10605, position = Position(32743, 32116, 11) } + { itemid = 10605, position = Position(32743, 32116, 11) }, } local function revertItem(position, itemId, transformId) @@ -373,26 +373,22 @@ local function revertItem(position, itemId, transformId) end local function revertTree() - iterateArea( - function(position) - local tile = Tile(position) - if tile then - local items = tile:getItems() - if items then - for i = 1, #items do - items[i]:remove() - end + iterateArea(function(position) + local tile = Tile(position) + if tile then + local items = tile:getItems() + if items then + for i = 1, #items do + items[i]:remove() end + end - local ground = tile:getGround() - if ground then - ground:remove() - end + local ground = tile:getGround() + if ground then + ground:remove() end - end, - config.fromPosition, - config.toPosition - ) + end + end, config.fromPosition, config.toPosition) local tree = Tile(Position(32737, 32114, 10)):getItemById(3617) local teleport = Tile(Position(32736, 32117, 10)):getItemById(775) local jade = Tile(Position(32736, 32117, 10)):getItemById(11108) @@ -423,7 +419,7 @@ function forgottenKnowledgePlant.onUse(player, item, fromPosition, target, toPos end target:transform(23816) target:getPosition():sendMagicEffect(CONST_ME_SMALLPLANTS) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You planted some seeds into the soil.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You planted some seeds into the soil.") addEvent(revertItem, 10 * 60 * 1000, target:getPosition(), 26484, 26482) item:remove(1) return true @@ -431,7 +427,7 @@ function forgottenKnowledgePlant.onUse(player, item, fromPosition, target, toPos if target.itemid == 23816 then target:transform(23815) target:getPosition():sendMagicEffect(CONST_ME_SMALLPLANTS) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The birch grows as you pour the sparkling water from the phial over it.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The birch grows as you pour the sparkling water from the phial over it.") addEvent(revertItem, 10 * 60 * 1000, target:getPosition(), 26483, 26482) if player:getStorageValue(Storage.ForgottenKnowledge.PlantCounter) < 0 then player:setStorageValue(Storage.ForgottenKnowledge.PlantCounter, 0) @@ -439,33 +435,29 @@ function forgottenKnowledgePlant.onUse(player, item, fromPosition, target, toPos player:setStorageValue(Storage.ForgottenKnowledge.PlantCounter, player:getStorageValue(Storage.ForgottenKnowledge.PlantCounter) + 1) elseif target.itemid == 6180 and target:getPosition() == Position(32737, 32116, 10) then if Game.getStorageValue(GlobalStorage.ForgottenKnowledge.ActiveTree) >= 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You cannot use the phial while the trees still have life and colour.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You cannot use the phial while the trees still have life and colour.") return true end if player:getStorageValue(Storage.ForgottenKnowledge.PlantCounter) < 5 or player:getStorageValue(Storage.ForgottenKnowledge.BirdCounter) < 3 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Seems that you don\'t make grow enough trees or not free the parrots.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Seems that you don't make grow enough trees or not free the parrots.") return true end - iterateArea( - function(position) - local tile = Tile(position) - if tile then - local items = tile:getItems() - if items then - for i = 1, #items do - items[i]:remove() - end + iterateArea(function(position) + local tile = Tile(position) + if tile then + local items = tile:getItems() + if items then + for i = 1, #items do + items[i]:remove() end + end - local ground = tile:getGround() - if ground then - ground:remove() - end + local ground = tile:getGround() + if ground then + ground:remove() end - end, - config.fromPosition, - config.toPosition - ) + end + end, config.fromPosition, config.toPosition) for k = 1, #items do Game.createItem(items[k].itemid, 1, items[k].position) local pos = Position(items[k].position) @@ -497,7 +489,7 @@ function forgottenKnowledgePlant.onUse(player, item, fromPosition, target, toPos teleport:setActionId(27830) teleport:getPosition():sendMagicEffect(CONST_ME_THUNDER) end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Suddenly the area brightens and everything around you starts to bloom and thrive with life and colour.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Suddenly the area brightens and everything around you starts to bloom and thrive with life and colour.") else return false end diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/secret_wall.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/secret_wall.lua index f07b492bc4f..674e9fd5b42 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/secret_wall.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/secret_wall.lua @@ -8,7 +8,7 @@ function forgottenKnowledgeSecret.onUse(player, item, fromPosition, target, toPo return false end if player:getStorageValue(Storage.ForgottenKnowledge.SilverKey) < 1 or not player:getItemById(23733, true) then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You don\'t have the fitting key.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You don't have the fitting key.") return true end player:teleportTo(Position(32924, 31637, 14)) diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/servants_mechanism.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/servants_mechanism.lua index 5f3f4c9c1d0..eb2d9588662 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/servants_mechanism.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/servants_mechanism.lua @@ -1,6 +1,6 @@ local config = { [26663] = { storage = GlobalStorage.ForgottenKnowledge.MechanismDiamond, counter = GlobalStorage.ForgottenKnowledge.DiamondServant, msg = "5 diamond entities are consuming too much raw energy for the cosmic chamber to awaken, it will be put to rest again in 10 minutes." }, - [26664] = { storage = GlobalStorage.ForgottenKnowledge.MechanismGolden, counter = GlobalStorage.ForgottenKnowledge.GoldenServant, msg = "5 golden entities are consuming too much raw energy for the cosmic chamber to awaken, it will be put to rest again in 10 minutes." } + [26664] = { storage = GlobalStorage.ForgottenKnowledge.MechanismGolden, counter = GlobalStorage.ForgottenKnowledge.GoldenServant, msg = "5 golden entities are consuming too much raw energy for the cosmic chamber to awaken, it will be put to rest again in 10 minutes." }, } local function clearGolems() @@ -8,18 +8,18 @@ local function clearGolems() for i = 1, #specs do spec = specs[i] if Game.getStorageValue(GlobalStorage.ForgottenKnowledge.MechanismDiamond) < 1 then - if spec:isMonster() and spec:getName():lower() == 'diamond servant replica' then + if spec:isMonster() and spec:getName():lower() == "diamond servant replica" then spec:getPosition():sendMagicEffect(CONST_ME_POFF) spec:remove() end end if Game.getStorageValue(GlobalStorage.ForgottenKnowledge.MechanismGolden) < 1 then - if spec:isMonster() and spec:getName():lower() == 'golden servant replica' then + if spec:isMonster() and spec:getName():lower() == "golden servant replica" then spec:getPosition():sendMagicEffect(CONST_ME_POFF) spec:remove() end end - if spec:isMonster() and spec:getName():lower() == 'iron servant replica' then + if spec:isMonster() and spec:getName():lower() == "iron servant replica" then if math.random(100) <= 40 then spec:getPosition():sendMagicEffect(CONST_ME_POFF) spec:remove() @@ -44,7 +44,7 @@ function forgottenKnowledgeMechanism.onUse(player, item, fromPosition, target, t local lever = config[item.actionid] if item.itemid == 9125 then if Game.getStorageValue(lever.storage) >= 1 then - player:say('seems that the mechanism still active.', TALKTYPE_MONSTER_SAY, false, nil, toPosition) + player:say("seems that the mechanism still active.", TALKTYPE_MONSTER_SAY, false, nil, toPosition) return true end clearGolems() @@ -52,7 +52,7 @@ function forgottenKnowledgeMechanism.onUse(player, item, fromPosition, target, t Game.setStorageValue(lever.counter, 0) addEvent(turnOff, 10 * 60 * 1000, lever.storage, lever.counter) item:transform(9126) - player:say('*click*', TALKTYPE_MONSTER_SAY, false, nil, toPosition) + player:say("*click*", TALKTYPE_MONSTER_SAY, false, nil, toPosition) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, lever.msg) elseif item.itemid == 9126 then item:transform(9125) diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/tenebris_lever.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/tenebris_lever.lua index 5feb4264564..c30bc510ed5 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/tenebris_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/tenebris_lever.lua @@ -7,15 +7,15 @@ local config = { { pos = Position(32902, 31624, 14), teleport = Position(32911, 31603, 14), effect = CONST_ME_TELEPORT }, { pos = Position(32902, 31625, 14), teleport = Position(32911, 31603, 14), effect = CONST_ME_TELEPORT }, { pos = Position(32902, 31626, 14), teleport = Position(32911, 31603, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(32902, 31627, 14), teleport = Position(32911, 31603, 14), effect = CONST_ME_TELEPORT } + { pos = Position(32902, 31627, 14), teleport = Position(32911, 31603, 14), effect = CONST_ME_TELEPORT }, }, bossPosition = Position(32912, 31599, 14), specPos = { from = Position(32895, 31585, 14), - to = Position(32830, 32855, 14) + to = Position(32830, 32855, 14), }, exit = Position(32902, 31629, 14), - storage = Storage.ForgottenKnowledge.LadyTenebrisTimer + storage = Storage.ForgottenKnowledge.LadyTenebrisTimer, } local forgottenKnowledgeTenebris = Action() @@ -62,7 +62,7 @@ function forgottenKnowledgeTenebris.onUse(player, item, fromPosition, target, to if lever:checkConditions() then spec:removeMonsters() for d = 1, 6 do - Game.createMonster('shadow tentacle', Position(math.random(32909, 32914), math.random(31596, 31601), 14), true, true) + Game.createMonster("shadow tentacle", Position(math.random(32909, 32914), math.random(31596, 31601), 14), true, true) end local monster = Game.createMonster(config.bossName, config.bossPosition, true, true) if not monster then diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/thorn_knight_lever.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/thorn_knight_lever.lua index 6f35da28e15..94b74225615 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/thorn_knight_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/thorn_knight_lever.lua @@ -7,15 +7,15 @@ local config = { { pos = Position(32657, 32878, 14), teleport = Position(32624, 32886, 14), effect = CONST_ME_TELEPORT }, { pos = Position(32657, 32879, 14), teleport = Position(32624, 32886, 14), effect = CONST_ME_TELEPORT }, { pos = Position(32657, 32880, 14), teleport = Position(32624, 32886, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(32657, 32881, 14), teleport = Position(32624, 32886, 14), effect = CONST_ME_TELEPORT } + { pos = Position(32657, 32881, 14), teleport = Position(32624, 32886, 14), effect = CONST_ME_TELEPORT }, }, bossPosition = Position(32624, 32880, 14), specPos = { from = Position(32613, 32869, 14), - to = Position(32636, 32892, 14) + to = Position(32636, 32892, 14), }, exit = Position(32678, 32888, 14), - storage = Storage.ForgottenKnowledge.ThornKnightTimer + storage = Storage.ForgottenKnowledge.ThornKnightTimer, } local forgottenKnowledgeThorn = Action() @@ -62,7 +62,7 @@ function forgottenKnowledgeThorn.onUse(player, item, fromPosition, target, toPos if lever:checkConditions() then spec:removeMonsters() for d = 1, 6 do - Game.createMonster('possessed tree', Position(math.random(32619, 32629), math.random(32877, 32884), 14), true, true) + Game.createMonster("possessed tree", Position(math.random(32619, 32629), math.random(32877, 32884), 14), true, true) end local monster = Game.createMonster("mounted thorn knight", config.bossPosition, true, true) if not monster then diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/time_guardian_lever.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/time_guardian_lever.lua index da3cb7735fd..aa6871caae4 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/time_guardian_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/time_guardian_lever.lua @@ -7,25 +7,25 @@ local config = { { pos = Position(33010, 31661, 14), teleport = Position(32977, 31667, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33010, 31662, 14), teleport = Position(32977, 31667, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33010, 31663, 14), teleport = Position(32977, 31667, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33010, 31664, 14), teleport = Position(32977, 31667, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33010, 31664, 14), teleport = Position(32977, 31667, 14), effect = CONST_ME_TELEPORT }, }, bosses = { - { bossPosition = Position(32977, 31662, 14), bossName = 'The Time Guardian' }, - { bossPosition = Position(32975, 31664, 13), bossName = 'The Freezing Time Guardian' }, - { bossPosition = Position(32980, 31664, 13), bossName = 'The Blazing Time Guardian' } + { bossPosition = Position(32977, 31662, 14), bossName = "The Time Guardian" }, + { bossPosition = Position(32975, 31664, 13), bossName = "The Freezing Time Guardian" }, + { bossPosition = Position(32980, 31664, 13), bossName = "The Blazing Time Guardian" }, }, monsters = { - { cosmic = 'cosmic energy prism a invu', pos = Position(32801, 32827, 14) }, - { cosmic = 'cosmic energy prism b invu', pos = Position(32798, 32827, 14) }, - { cosmic = 'cosmic energy prism c invu', pos = Position(32803, 32826, 14) }, - { cosmic = 'cosmic energy prism d invu', pos = Position(32796, 32826, 14) } + { cosmic = "cosmic energy prism a invu", pos = Position(32801, 32827, 14) }, + { cosmic = "cosmic energy prism b invu", pos = Position(32798, 32827, 14) }, + { cosmic = "cosmic energy prism c invu", pos = Position(32803, 32826, 14) }, + { cosmic = "cosmic energy prism d invu", pos = Position(32796, 32826, 14) }, }, specPos = { from = Position(32967, 31654, 13), - to = Position(32989, 31677, 14) + to = Position(32989, 31677, 14), }, exit = Position(32870, 32724, 14), - storage = Storage.ForgottenKnowledge.TimeGuardianTimer + storage = Storage.ForgottenKnowledge.TimeGuardianTimer, } local forgottenKnowledgeGuardianLever = Action() diff --git a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/time_machine.lua b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/time_machine.lua index eddd27dd2ec..caa9393f974 100644 --- a/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/time_machine.lua +++ b/data-otservbr-global/scripts/actions/quests/forgotten_knowledge/time_machine.lua @@ -3,7 +3,7 @@ function forgottenKnowledgeMachine.onUse(player, item, fromPosition, target, toP if player:getPosition() == Position(32870, 32723, 15) then player:teleportTo(Position(32870, 32724, 14)) player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The mechanism takes you back in time.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The mechanism takes you back in time.") return true end @@ -11,7 +11,7 @@ function forgottenKnowledgeMachine.onUse(player, item, fromPosition, target, toP if player:getStorageValue(Storage.ForgottenKnowledge.TimeGuardianTimer) < os.time() then player:teleportTo(Position(32870, 32724, 15)) player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The mechanism takes you back in time.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The mechanism takes you back in time.") return true else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have to wait a while before travel in time!") diff --git a/data-otservbr-global/scripts/actions/quests/grave_danger/baeloc_nictros_lever.lua b/data-otservbr-global/scripts/actions/quests/grave_danger/baeloc_nictros_lever.lua index 4c22d765c5e..f0fb95a2449 100644 --- a/data-otservbr-global/scripts/actions/quests/grave_danger/baeloc_nictros_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/grave_danger/baeloc_nictros_lever.lua @@ -25,12 +25,14 @@ local config = { onUseExtra = function(player) addEvent(function() local nictros = Tile(nictrosPosition):getTopCreature() - if not nictros then return end + if not nictros then + return + end nictros:teleportTo(Position(33427, 31436, 13)) end, 5 * 1000) end, exit = Position(33290, 32474, 9), - storage = Storage.Quest.U12_20.GraveDanger.Bosses.BaelocNictrosTimer + storage = Storage.Quest.U12_20.GraveDanger.Bosses.BaelocNictrosTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/grave_danger/cobra_bastion/scarlett.lua b/data-otservbr-global/scripts/actions/quests/grave_danger/cobra_bastion/scarlett.lua index 1a256b979d8..48498baa2fc 100644 --- a/data-otservbr-global/scripts/actions/quests/grave_danger/cobra_bastion/scarlett.lua +++ b/data-otservbr-global/scripts/actions/quests/grave_danger/cobra_bastion/scarlett.lua @@ -12,19 +12,21 @@ local info = { local entry = { metalWallId = 31449, roomEntryPos = Position(33395, 32666, 6), - roomExitPos = Position(33395, 32668, 6) + roomExitPos = Position(33395, 32668, 6), } local transformTo = { [31474] = 31475, [31475] = 31476, [31476] = 31477, - [31477] = 31474 + [31477] = 31474, } local function createArmor(id, amount, pos) local armor = Game.createItem(id, amount, pos) - if armor then armor:setActionId(40003) end + if armor then + armor:setActionId(40003) + end end local graveScarlettUid = Action() @@ -40,7 +42,7 @@ function graveScarlettUid.onUse(player, item, fromPosition, target, toPosition, if player_ and player_:isPlayer() then if player_:getStorageValue(info.timer) > os.time() then player_:getPosition():sendMagicEffect(CONST_ME_POFF) - player_:sendCancelMessage('You are still exhausted from your last battle.') + player_:sendCancelMessage("You are still exhausted from your last battle.") return true end table.insert(playersTable, player_:getId()) @@ -58,8 +60,8 @@ function graveScarlettUid.onUse(player, item, fromPosition, target, toPosition, end local scarlett = Game.createMonster("Scarlett Etzel", Position(33396, 32640, 6)) if scarlett then - scarlett:registerEvent('scarlettThink') - scarlett:registerEvent('scarlettHealth') + scarlett:registerEvent("scarlettThink") + scarlett:registerEvent("scarlettHealth") scarlett:setStorageValue(Storage.GraveDanger.CobraBastion.Questline, 1) end SCARLETT_MAY_TRANSFORM = 0 @@ -72,11 +74,10 @@ end graveScarlettUid:uid(40028) graveScarlettUid:register() - local mirror = { fromPos = Position(33389, 32641, 6), toPos = Position(33403, 32655, 6), - mirrors = { 31474, 31475, 31476, 31477 } + mirrors = { 31474, 31475, 31476, 31477 }, } local function backMirror() @@ -96,7 +97,7 @@ local function backMirror() end end -local graveScarlettAid = Action(); +local graveScarlettAid = Action() function graveScarlettAid.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.actionid == 40003 then if table.contains(transformTo, item.itemid) then diff --git a/data-otservbr-global/scripts/actions/quests/grave_danger/count_vlarkorth_lever.lua b/data-otservbr-global/scripts/actions/quests/grave_danger/count_vlarkorth_lever.lua index d2210be7ebb..abb01c5050f 100644 --- a/data-otservbr-global/scripts/actions/quests/grave_danger/count_vlarkorth_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/grave_danger/count_vlarkorth_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Count Vlarkorth", - position = Position(33456, 31434, 13) + position = Position(33456, 31434, 13), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33456, 31413, 13), teleport = Position(33454, 31445, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33457, 31413, 13), teleport = Position(33454, 31445, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33458, 31413, 13), teleport = Position(33454, 31445, 13), effect = CONST_ME_TELEPORT }, - { pos = Position(33459, 31413, 13), teleport = Position(33454, 31445, 13), effect = CONST_ME_TELEPORT } + { pos = Position(33459, 31413, 13), teleport = Position(33454, 31445, 13), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33448, 31428, 13), - to = Position(33464, 31446, 13) + to = Position(33464, 31446, 13), }, exit = Position(33195, 31690, 8), - storage = Storage.Quest.U12_20.GraveDanger.Bosses.CountVlarkorthTimer + storage = Storage.Quest.U12_20.GraveDanger.Bosses.CountVlarkorthTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/grave_danger/duke_krule_lever.lua b/data-otservbr-global/scripts/actions/quests/grave_danger/duke_krule_lever.lua index baf2497f4ff..c6728bbc37b 100644 --- a/data-otservbr-global/scripts/actions/quests/grave_danger/duke_krule_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/grave_danger/duke_krule_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Duke Krule", - position = Position(33456, 31473, 13) + position = Position(33456, 31473, 13), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33456, 31493, 13), teleport = Position(33455, 31464, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33457, 31493, 13), teleport = Position(33455, 31464, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33458, 31493, 13), teleport = Position(33455, 31464, 13), effect = CONST_ME_TELEPORT }, - { pos = Position(33459, 31493, 13), teleport = Position(33455, 31464, 13), effect = CONST_ME_TELEPORT } + { pos = Position(33459, 31493, 13), teleport = Position(33455, 31464, 13), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33447, 31464, 13), - to = Position(33464, 31481, 13) + to = Position(33464, 31481, 13), }, exit = Position(32347, 32167, 12), - storage = Storage.Quest.U12_20.GraveDanger.Bosses.DukeKruleTimer + storage = Storage.Quest.U12_20.GraveDanger.Bosses.DukeKruleTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/grave_danger/earl_osam_lever.lua b/data-otservbr-global/scripts/actions/quests/grave_danger/earl_osam_lever.lua index d0303f13f10..797ecec26e8 100644 --- a/data-otservbr-global/scripts/actions/quests/grave_danger/earl_osam_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/grave_danger/earl_osam_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Earl Osam", - position = Position(33488, 31441, 13) + position = Position(33488, 31441, 13), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33517, 31444, 13), teleport = Position(33488, 31430, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33518, 31444, 13), teleport = Position(33488, 31430, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33519, 31444, 13), teleport = Position(33488, 31430, 13), effect = CONST_ME_TELEPORT }, - { pos = Position(33520, 31444, 13), teleport = Position(33488, 31430, 13), effect = CONST_ME_TELEPORT } + { pos = Position(33520, 31444, 13), teleport = Position(33488, 31430, 13), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33479, 31429, 13), - to = Position(33497, 31446, 13) + to = Position(33497, 31446, 13), }, exit = Position(33261, 31986, 8), - storage = Storage.Quest.U12_20.GraveDanger.Bosses.EarlOsamTimer + storage = Storage.Quest.U12_20.GraveDanger.Bosses.EarlOsamTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/grave_danger/king_zelos_lever.lua b/data-otservbr-global/scripts/actions/quests/grave_danger/king_zelos_lever.lua index a8f31b0ad95..437b225fc45 100644 --- a/data-otservbr-global/scripts/actions/quests/grave_danger/king_zelos_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/grave_danger/king_zelos_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "King Zelos", - position = Position(33443, 31545, 13) + position = Position(33443, 31545, 13), }, requiredLevel = 250, @@ -15,14 +15,14 @@ local config = { { pos = Position(33486, 31547, 13), teleport = Position(33443, 31554, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33486, 31548, 13), teleport = Position(33443, 31554, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33486, 31545, 13), teleport = Position(33443, 31554, 13), effect = CONST_ME_TELEPORT }, - { pos = Position(33486, 31544, 13), teleport = Position(33443, 31554, 13), effect = CONST_ME_TELEPORT } + { pos = Position(33486, 31544, 13), teleport = Position(33443, 31554, 13), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33433, 31535, 13), - to = Position(33453, 31555, 13) + to = Position(33453, 31555, 13), }, exit = Position(32172, 31918, 8), - storage = Storage.Quest.U12_20.GraveDanger.Bosses.KingZelosTimer + storage = Storage.Quest.U12_20.GraveDanger.Bosses.KingZelosTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/grave_danger/lord_azaram_lever.lua b/data-otservbr-global/scripts/actions/quests/grave_danger/lord_azaram_lever.lua index 5261424f68e..fb9e8af9bb0 100644 --- a/data-otservbr-global/scripts/actions/quests/grave_danger/lord_azaram_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/grave_danger/lord_azaram_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Lord Azaram", - position = Position(33424, 31473, 13) + position = Position(33424, 31473, 13), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33423, 31493, 13), teleport = Position(33423, 31465, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33424, 31493, 13), teleport = Position(33423, 31465, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33425, 31493, 13), teleport = Position(33423, 31465, 13), effect = CONST_ME_TELEPORT }, - { pos = Position(33426, 31493, 13), teleport = Position(33423, 31465, 13), effect = CONST_ME_TELEPORT } + { pos = Position(33426, 31493, 13), teleport = Position(33423, 31465, 13), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33416, 31463, 13), - to = Position(33432, 31481, 13) + to = Position(33432, 31481, 13), }, exit = Position(32192, 31819, 8), - storage = Storage.Quest.U12_20.GraveDanger.Bosses.LordAzaramTimer + storage = Storage.Quest.U12_20.GraveDanger.Bosses.LordAzaramTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/ashes.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/ashes.lua index 25e3a84d892..7d8ce67c2e4 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/ashes.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/ashes.lua @@ -6,7 +6,7 @@ function gravediggerAshes.onUse(player, item, fromPosition, target, toPosition, if player:getStorageValue(Storage.GravediggerOfDrefia.Mission28) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission29) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission29, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The ashes swirl with a life of their own, mixing with the sparks of the altar.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The ashes swirl with a life of their own, mixing with the sparks of the altar.") item:remove(1) end return true diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/blood.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/blood.lua index ccb376040c0..7047c57eb0f 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/blood.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/blood.lua @@ -1,6 +1,6 @@ local config = { - [4644] = { storageKey = { Storage.GravediggerOfDrefia.Mission36, Storage.GravediggerOfDrefia.Mission36a }, message = 'The blood in the vial is of a deep, ruby red.', itemId = 21418 }, - [4645] = { storageKey = { Storage.GravediggerOfDrefia.Mission36a, Storage.GravediggerOfDrefia.Mission37 }, message = 'The blood in the vial is of a strange colour, as if tainted.', itemId = 21419 } + [4644] = { storageKey = { Storage.GravediggerOfDrefia.Mission36, Storage.GravediggerOfDrefia.Mission36a }, message = "The blood in the vial is of a deep, ruby red.", itemId = 21418 }, + [4645] = { storageKey = { Storage.GravediggerOfDrefia.Mission36a, Storage.GravediggerOfDrefia.Mission37 }, message = "The blood in the vial is of a strange colour, as if tainted.", itemId = 21419 }, } local gravediggerBlood = Action() diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/brain.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/brain.lua index 16ccfb7c417..370545b18d7 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/brain.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/brain.lua @@ -5,15 +5,15 @@ function gravediggerBrain.onUse(player, item, fromPosition, target, toPosition, if player:getStorageValue(Storage.GravediggerOfDrefia.Mission08) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission09) < 1 then if leftbrain:getItemById(9659) and rightbrain:getItemById(9659) then player:setStorageValue(Storage.GravediggerOfDrefia.Mission09, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, ' ') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, " ") leftbrain:getItemById(9659):remove() rightbrain:getItemById(9659):remove() Game.createItem(19078, 1, Position(33022, 32332, 10)) else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'No brains') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "No brains") end else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have already got your brain') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have already got your brain") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/caixa.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/caixa.lua index 6651ad01f7c..421d8585d5b 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/caixa.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/caixa.lua @@ -2,7 +2,7 @@ local gravediggerCaixa = Action() function gravediggerCaixa.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.GravediggerOfDrefia.Mission67) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission68) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission68, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found an incantation fragment.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found an incantation fragment.") player:addItem(18933, 1) end return true diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/candles.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/candles.lua index 60ea1e8908b..d75088bb5ed 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/candles.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/candles.lua @@ -6,7 +6,7 @@ function gravediggerCandles.onUse(player, item, fromPosition, target, toPosition if player:getStorageValue(Storage.GravediggerOfDrefia.Mission31) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission32) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission32, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Reading the parchment, you identify three human tallow candles and pocket them.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Reading the parchment, you identify three human tallow candles and pocket them.") player:addItem(18931, 3) item:remove(1) end diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/cape.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/cape.lua index 73a67a25b94..fe8a07f677f 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/cape.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/cape.lua @@ -2,7 +2,7 @@ local gravediggerCape = Action() function gravediggerCape.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.GravediggerOfDrefia.Mission59) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission60, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You now look like a Necromancer.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You now look like a Necromancer.") player:getPosition():sendMagicEffect(CONST_ME_POFF) player:removeItem(19148, 1) end diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/chalk.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/chalk.lua index 64393039c4e..ccbdafcace2 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/chalk.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/chalk.lua @@ -6,7 +6,7 @@ function gravediggerChalk.onUse(player, item, fromPosition, target, toPosition, if player:getStorageValue(Storage.GravediggerOfDrefia.Mission27) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission28) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission28, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The flame wavers as it engulfs the chalk. Strange ashes appear beside it.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The flame wavers as it engulfs the chalk. Strange ashes appear beside it.") Game.createItem(19129, 1, Position(32983, 32376, 11)) item:remove(1) end diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/flask.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/flask.lua index c859508edbf..987ccb4838a 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/flask.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/flask.lua @@ -6,7 +6,7 @@ function gravediggerFlask.onUse(player, item, fromPosition, target, toPosition, if player:getStorageValue(Storage.GravediggerOfDrefia.Mission11) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission12) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission12, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Done! Report back to Omrabas.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Done! Report back to Omrabas.") player:addItem(19086, 1) item:remove() end diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/hallowed.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/hallowed.lua index 3ffc903c173..44064626a23 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/hallowed.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/hallowed.lua @@ -6,7 +6,7 @@ function gravediggerHallowed.onUse(player, item, fromPosition, target, toPositio if player:getStorageValue(Storage.GravediggerOfDrefia.Mission19) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission20) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission20, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The flames roar and eat the bone hungrily. The Dark Lord is satisfied with your gift') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The flames roar and eat the bone hungrily. The Dark Lord is satisfied with your gift") item:remove() end return true diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/inscriptions.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/inscriptions.lua index 4576ff95ff1..2f1960bfdb4 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/inscriptions.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/inscriptions.lua @@ -2,15 +2,15 @@ local gravediggerInscriptions = Action() function gravediggerInscriptions.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.GravediggerOfDrefia.Mission45) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission46) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission46, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The words seem to breathe, stangely. One word stays in your mind: bronze') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The words seem to breathe, stangely. One word stays in your mind: bronze") player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission46) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission47) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission47, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The words seem to glow slightly. A name fixes in your mind: Takesha Antishu') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The words seem to glow slightly. A name fixes in your mind: Takesha Antishu") player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) elseif player:getStorageValue(Storage.GravediggerOfDrefia.Mission47) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission48, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The words seem to flutter. One word stays in your mind: floating') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The words seem to flutter. One word stays in your mind: floating") player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) end return true diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/key1.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/key1.lua index dd9a2837305..acfc73a775e 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/key1.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/key1.lua @@ -5,7 +5,7 @@ function gravediggerKey1.onUse(player, item, fromPosition, target, toPosition, i end if player:getStorageValue(Storage.GravediggerOfDrefia.Mission31) == 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, ' ') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, " ") item:remove(1) Tile(Position(33071, 32442, 11)):getItemById(8708):transform(8709) end diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/monks.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/monks.lua index f36ae4b7364..cfd0f644704 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/monks.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/monks.lua @@ -1,7 +1,7 @@ local config = { - [4641] = { storageKey = { Storage.GravediggerOfDrefia.Mission32, Storage.GravediggerOfDrefia.Mission32a }, message = 'Shadows rise and engulf the candle. The statue flickers in an unearthly light.' }, - [4642] = { storageKey = { Storage.GravediggerOfDrefia.Mission32a, Storage.GravediggerOfDrefia.Mission32b }, message = 'The shadows of the statue swallow the candle hungrily.' }, - [4643] = { storageKey = { Storage.GravediggerOfDrefia.Mission32b, Storage.GravediggerOfDrefia.Mission33 }, message = 'A shade emerges and snatches the candle from your hands.' } + [4641] = { storageKey = { Storage.GravediggerOfDrefia.Mission32, Storage.GravediggerOfDrefia.Mission32a }, message = "Shadows rise and engulf the candle. The statue flickers in an unearthly light." }, + [4642] = { storageKey = { Storage.GravediggerOfDrefia.Mission32a, Storage.GravediggerOfDrefia.Mission32b }, message = "The shadows of the statue swallow the candle hungrily." }, + [4643] = { storageKey = { Storage.GravediggerOfDrefia.Mission32b, Storage.GravediggerOfDrefia.Mission33 }, message = "A shade emerges and snatches the candle from your hands." }, } local gravediggerMonks = Action() diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/palanca.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/palanca.lua index 4e9b0e5f7cc..7335cf98ba1 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/palanca.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/palanca.lua @@ -2,7 +2,7 @@ local gravediggerPalanca = Action() function gravediggerPalanca.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.GravediggerOfDrefia.Mission39) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission40) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission40, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, ' ') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, " ") player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) end return true diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/pyramids1.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/pyramids1.lua index a438444f306..686a0917e4d 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/pyramids1.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/pyramids1.lua @@ -2,7 +2,7 @@ local config = { [4646] = { Storage.GravediggerOfDrefia.Mission38, Storage.GravediggerOfDrefia.Mission38a }, [4647] = { Storage.GravediggerOfDrefia.Mission38a, Storage.GravediggerOfDrefia.Mission38b }, [4648] = { Storage.GravediggerOfDrefia.Mission38b, Storage.GravediggerOfDrefia.Mission38c }, - [4649] = { Storage.GravediggerOfDrefia.Mission38c, Storage.GravediggerOfDrefia.Mission39 } + [4649] = { Storage.GravediggerOfDrefia.Mission38c, Storage.GravediggerOfDrefia.Mission39 }, } local gravediggerPyramids1 = Action() @@ -14,7 +14,7 @@ function gravediggerPyramids1.onUse(player, item, fromPosition, target, toPositi if player:getStorageValue(cStorages[1]) == 1 and player:getStorageValue(cStorages[2]) < 1 then player:setStorageValue(cStorages[2], 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, ' ') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, " ") player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) end return true diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/pyramids2.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/pyramids2.lua index 8ffd7ef1865..93b6589e764 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/pyramids2.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/pyramids2.lua @@ -3,7 +3,7 @@ local config = { [4664] = { Storage.GravediggerOfDrefia.Mission38a, Storage.GravediggerOfDrefia.Mission63 }, [4665] = { Storage.GravediggerOfDrefia.Mission38b, Storage.GravediggerOfDrefia.Mission64 }, [4666] = { Storage.GravediggerOfDrefia.Mission38c, Storage.GravediggerOfDrefia.Mission65 }, - [4667] = { Storage.GravediggerOfDrefia.Mission38c, Storage.GravediggerOfDrefia.Mission66 } + [4667] = { Storage.GravediggerOfDrefia.Mission38c, Storage.GravediggerOfDrefia.Mission66 }, } local gravediggerPyramids2 = Action() @@ -15,10 +15,10 @@ function gravediggerPyramids2.onUse(player, item, fromPosition, target, toPositi if player:getStorageValue(cStorages[1]) == 1 and player:getStorageValue(cStorages[2]) < 1 then player:setStorageValue(cStorages[2], 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, ' ') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, " ") player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Mission already completed here!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Mission already completed here!") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/sacrifice.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/sacrifice.lua index 39a656561d6..eeae28a1103 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/sacrifice.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/sacrifice.lua @@ -4,13 +4,13 @@ function gravediggerSacrifice.onUse(player, item, fromPosition, target, toPositi local skullItem = Tile(Position(33015, 32418, 11)):getItemById(19160) if skullItem then skullItem:remove() - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The scroll burns to dust. The magic stutters. Omrabas\' soul flees to his old hideaway.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The scroll burns to dust. The magic stutters. Omrabas' soul flees to his old hideaway.") player:removeItem(18934, 1) player:setStorageValue(Storage.GravediggerOfDrefia.Mission74, 1) Game.createMonster("Chicken", Position(33015, 32418, 11)) end else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Teste') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Teste") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/scroll.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/scroll.lua index 94912b48a0f..f5243717b84 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/scroll.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/scroll.lua @@ -3,7 +3,7 @@ function gravediggerScroll.onUse(player, item, fromPosition, target, toPosition, if player:getStorageValue(Storage.GravediggerOfDrefia.Mission53) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission54) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission54, 1) player:setStorageValue(Storage.GravediggerOfDrefia.Mission55, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Somebody left a card. It says: Looking for the scroll? Come find me. Take the stairs next to the students. Dorm.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Somebody left a card. It says: Looking for the scroll? Come find me. Take the stairs next to the students. Dorm.") player:getPosition():sendMagicEffect(CONST_ME_POFF) end return true diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/statue.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/statue.lua index 4f7328cff39..da3888a2343 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/statue.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/statue.lua @@ -4,10 +4,9 @@ function gravediggerStatue.onUse(player, item, fromPosition, target, toPosition, return false end - if player:getStorageValue(Storage.GravediggerOfDrefia.Mission20) >= 1 - and player:getStorageValue(Storage.GravediggerOfDrefia.Mission25) < 1 then + if player:getStorageValue(Storage.GravediggerOfDrefia.Mission20) >= 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission25) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission25, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, ' A slow throbbing, like blood pulsing, runs through the floor.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, " A slow throbbing, like blood pulsing, runs through the floor.") player:getPosition():sendMagicEffect(CONST_ME_SOUND_GREEN) end return true diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/tears.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/tears.lua index 0ac131a4bfc..299c9c5fbca 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/tears.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/tears.lua @@ -6,7 +6,7 @@ function gravediggerTears.onUse(player, item, fromPosition, target, toPosition, if player:getStorageValue(Storage.GravediggerOfDrefia.Mission14) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission15) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission15, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The dragon tears glow and disappear. The old powers are appeased.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The dragon tears glow and disappear. The old powers are appeased.") item:remove(3) end return true diff --git a/data-otservbr-global/scripts/actions/quests/gravedigger/tincture.lua b/data-otservbr-global/scripts/actions/quests/gravedigger/tincture.lua index 9e9fe1f41bb..becda5f68ad 100644 --- a/data-otservbr-global/scripts/actions/quests/gravedigger/tincture.lua +++ b/data-otservbr-global/scripts/actions/quests/gravedigger/tincture.lua @@ -6,7 +6,7 @@ function gravediggerTincture.onUse(player, item, fromPosition, target, toPositio if player:getStorageValue(Storage.GravediggerOfDrefia.Mission23) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission24) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission24, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You crash the vial and spill the blood tincture. This altar is anointed.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You crash the vial and spill the blood tincture. This altar is anointed.") item:remove() end return true diff --git a/data-otservbr-global/scripts/actions/quests/grimvale/ancient_feud_entrances.lua b/data-otservbr-global/scripts/actions/quests/grimvale/ancient_feud_entrances.lua index c63384f2229..426a043f54d 100644 --- a/data-otservbr-global/scripts/actions/quests/grimvale/ancient_feud_entrances.lua +++ b/data-otservbr-global/scripts/actions/quests/grimvale/ancient_feud_entrances.lua @@ -2,7 +2,7 @@ local config = { { position = { x = 33137, y = 32352, z = 5 }, destination = { x = 33117, y = 32252, z = 10 } }, { position = { x = 33116, y = 32252, z = 10 }, destination = { x = 33138, y = 32353, z = 5 } }, { position = { x = 33092, y = 32314, z = 11 }, destination = { x = 33090, y = 32280, z = 12 } }, - { position = { x = 33090, y = 32279, z = 12 }, destination = { x = 33092, y = 32315, z = 11 } } + { position = { x = 33090, y = 32279, z = 12 }, destination = { x = 33092, y = 32315, z = 11 } }, } local entranceAncientFeud = Action() diff --git a/data-otservbr-global/scripts/actions/quests/grimvale/closed_silvered_trap.lua b/data-otservbr-global/scripts/actions/quests/grimvale/closed_silvered_trap.lua index 95ce54c0c24..630ae57f3aa 100644 --- a/data-otservbr-global/scripts/actions/quests/grimvale/closed_silvered_trap.lua +++ b/data-otservbr-global/scripts/actions/quests/grimvale/closed_silvered_trap.lua @@ -1,17 +1,17 @@ local grimValeClosed = Action() function grimValeClosed.onUse(player, item, fromPosition, target, toPosition, isHotkey) if toPosition.x == CONTAINER_POSITION then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Use it on the ground to set the trap.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Use it on the ground to set the trap.") return true end if player:getPosition():getDistance(Position(33390, 31540, 11)) >= 30 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You may use it in the Feroxa\'s room.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You may use it in the Feroxa's room.") return true end item:transform(22059) item:decay() toPosition:sendMagicEffect(CONST_ME_POFF) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The silvered trap has been set and cannot be removed from its current position.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The silvered trap has been set and cannot be removed from its current position.") return true end diff --git a/data-otservbr-global/scripts/actions/quests/grimvale/portal_minis_ancient_feud.lua b/data-otservbr-global/scripts/actions/quests/grimvale/portal_minis_ancient_feud.lua index 443d82d8a99..928e0eab1fc 100644 --- a/data-otservbr-global/scripts/actions/quests/grimvale/portal_minis_ancient_feud.lua +++ b/data-otservbr-global/scripts/actions/quests/grimvale/portal_minis_ancient_feud.lua @@ -9,10 +9,10 @@ local config = { bossPosition = Position(33154, 32252, 12), specPos = { from = Position(33150, 32242, 12), - to = Position(33164, 32260, 12) + to = Position(33164, 32260, 12), }, exitPosition = Position(33123, 32240, 12), - storage = Storage.Quest.U10_80.Grimvale.YirkasTimer + storage = Storage.Quest.U10_80.Grimvale.YirkasTimer, }, [2] = { teleportPosition = { x = 33131, y = 32252, z = 12 }, @@ -24,10 +24,10 @@ local config = { bossPosition = Position(33122, 32285, 12), specPos = { from = Position(33115, 32275, 12), - to = Position(33127, 32290, 12) + to = Position(33127, 32290, 12), }, exitPosition = Position(33130, 32252, 12), - storage = Storage.Quest.U10_80.Grimvale.SrezzTimer + storage = Storage.Quest.U10_80.Grimvale.SrezzTimer, }, [3] = { teleportPosition = { x = 33123, y = 32265, z = 12 }, @@ -39,10 +39,10 @@ local config = { bossPosition = Position(33087, 32245, 12), specPos = { from = Position(33082, 32237, 12), - to = Position(33091, 32252, 12) + to = Position(33091, 32252, 12), }, exitPosition = Position(33123, 32264, 12), - storage = Storage.Quest.U10_80.Grimvale.UtuaTimer + storage = Storage.Quest.U10_80.Grimvale.UtuaTimer, }, [4] = { teleportPosition = { x = 33114, y = 32252, z = 12 }, @@ -54,26 +54,26 @@ local config = { bossPosition = Position(33152, 32289, 12), specPos = { from = Position(33145, 32279, 12), - to = Position(33159, 32293, 12) + to = Position(33159, 32293, 12), }, exitPosition = Position(33115, 32252, 12), - storage = Storage.Quest.U10_80.Grimvale.KatexTimer + storage = Storage.Quest.U10_80.Grimvale.KatexTimer, }, [5] = { teleportPosition = { x = 33154, y = 32245, z = 12 }, - exitPosition = Position(33123, 32240, 12) + exitPosition = Position(33123, 32240, 12), }, [6] = { teleportPosition = { x = 33119, y = 32278, z = 12 }, - exitPosition = Position(33130, 32252, 12) + exitPosition = Position(33130, 32252, 12), }, [7] = { teleportPosition = { x = 33087, y = 32239, z = 12 }, - exitPosition = Position(33123, 32264, 12) + exitPosition = Position(33123, 32264, 12), }, [8] = { teleportPosition = { x = 33148, y = 32283, z = 12 }, - exitPosition = Position(33115, 32252, 12) + exitPosition = Position(33115, 32252, 12), }, } diff --git a/data-otservbr-global/scripts/actions/quests/grimvale/portal_minis_grimvale.lua b/data-otservbr-global/scripts/actions/quests/grimvale/portal_minis_grimvale.lua index 737a2870559..109c04189fe 100644 --- a/data-otservbr-global/scripts/actions/quests/grimvale/portal_minis_grimvale.lua +++ b/data-otservbr-global/scripts/actions/quests/grimvale/portal_minis_grimvale.lua @@ -8,10 +8,10 @@ local config = { bossPosition = Position(33184, 32016, 8), specPos = { from = Position(33174, 32007, 8), - to = Position(33191, 32020, 8) + to = Position(33191, 32020, 8), }, exitPosition = Position(33167, 31978, 8), - storage = Storage.Quest.U10_80.Grimvale.BloodbackTimer + storage = Storage.Quest.U10_80.Grimvale.BloodbackTimer, }, [2] = { teleportPosition = { x = 33055, y = 31910, z = 9 }, @@ -22,10 +22,10 @@ local config = { bossPosition = Position(33062, 31890, 9), specPos = { from = Position(33050, 31883, 9), - to = Position(33066, 31896, 9) + to = Position(33066, 31896, 9), }, exitPosition = Position(33055, 31911, 9), - storage = Storage.Quest.U10_80.Grimvale.DarkfangTimer + storage = Storage.Quest.U10_80.Grimvale.DarkfangTimer, }, [3] = { teleportPosition = { x = 33128, y = 31971, z = 9 }, @@ -36,10 +36,10 @@ local config = { bossPosition = Position(33120, 32002, 9), specPos = { from = Position(33113, 31994, 9), - to = Position(33126, 32007, 9) + to = Position(33126, 32007, 9), }, exitPosition = Position(33128, 31972, 9), - storage = Storage.Quest.U10_80.Grimvale.SharpclawTimer + storage = Storage.Quest.U10_80.Grimvale.SharpclawTimer, }, [4] = { teleportPosition = { x = 33402, y = 32097, z = 9 }, @@ -50,10 +50,10 @@ local config = { bossPosition = Position(33384, 32114, 9), specPos = { from = Position(33376, 32107, 9), - to = Position(33396, 32119, 9) + to = Position(33396, 32119, 9), }, exitPosition = Position(33403, 32097, 9), - storage = Storage.Quest.U10_80.Grimvale.ShadowpeltTimer + storage = Storage.Quest.U10_80.Grimvale.ShadowpeltTimer, }, [5] = { teleportPosition = { x = 33442, y = 32051, z = 9 }, @@ -64,31 +64,31 @@ local config = { bossPosition = Position(33450, 32034, 9), specPos = { from = Position(33442, 32027, 9), - to = Position(33456, 32041, 9) + to = Position(33456, 32041, 9), }, exitPosition = Position(33442, 32052, 9), - storage = Storage.Quest.U10_80.Grimvale.BlackVixenTimer + storage = Storage.Quest.U10_80.Grimvale.BlackVixenTimer, }, [6] = { teleportPosition = { x = 33180, y = 32011, z = 8 }, - exitPosition = Position(33167, 31978, 8) + exitPosition = Position(33167, 31978, 8), }, [7] = { teleportPosition = { x = 33055, y = 31888, z = 9 }, - exitPosition = Position(33055, 31911, 9) + exitPosition = Position(33055, 31911, 9), }, [8] = { teleportPosition = { x = 33120, y = 31996, z = 9 }, - exitPosition = Position(33128, 31972, 9) + exitPosition = Position(33128, 31972, 9), }, [9] = { teleportPosition = { x = 33395, y = 32111, z = 9 }, - exitPosition = Position(33403, 32097, 9) + exitPosition = Position(33403, 32097, 9), }, [10] = { teleportPosition = { x = 33446, y = 32040, z = 9 }, - exitPosition = Position(33442, 32052, 9) - } + exitPosition = Position(33442, 32052, 9), + }, } local teleportBoss = MoveEvent() diff --git a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/anomaly_lever.lua b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/anomaly_lever.lua index 6902ac15f1f..9303f047e45 100644 --- a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/anomaly_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/anomaly_lever.lua @@ -63,7 +63,7 @@ function heartDestructionAnomaly.onUse(player, item, fromPosition, itemEx, toPos Position(32245, 31246, 14), Position(32245, 31247, 14), Position(32245, 31248, 14), - Position(32245, 31249, 14) + Position(32245, 31249, 14), }, newPos = { x = 32271, y = 31257, z = 14 }, @@ -80,7 +80,7 @@ function heartDestructionAnomaly.onUse(player, item, fromPosition, itemEx, toPos if tile then local playerTile = tile:getTopCreature() if playerTile and playerTile:isPlayer() then - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end end end diff --git a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/charges_lever.lua b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/charges_lever.lua index 930d19d1f2d..a517fcab7b8 100644 --- a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/charges_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/charges_lever.lua @@ -197,7 +197,7 @@ function heartDestructionCharges.onUse(player, item, fromPosition, itemEx, toPos Position(32092, 31327, 12), Position(32093, 31327, 12), Position(32094, 31327, 12), - Position(32095, 31327, 12) + Position(32095, 31327, 12), }, newPos = { x = 32135, y = 31363, z = 14 }, @@ -214,7 +214,7 @@ function heartDestructionCharges.onUse(player, item, fromPosition, itemEx, toPos if tile then local playerTile = tile:getTopCreature() if playerTile and playerTile:isPlayer() then - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end end end diff --git a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/cracklers_lever.lua b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/cracklers_lever.lua index d84ac18ab1b..c9f024653c0 100644 --- a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/cracklers_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/cracklers_lever.lua @@ -135,7 +135,7 @@ function heartDestructionCracklers.onUse(player, item, fromPosition, itemEx, toP Position(32079, 31314, 13), Position(32079, 31315, 13), Position(32079, 31316, 13), - Position(32079, 31317, 13) + Position(32079, 31317, 13), }, newPos = { x = 32219, y = 31325, z = 14 }, @@ -152,7 +152,7 @@ function heartDestructionCracklers.onUse(player, item, fromPosition, itemEx, toP if tile then local playerTile = tile:getTopCreature() if playerTile and playerTile:isPlayer() then - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end end end diff --git a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/eradicator_lever.lua b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/eradicator_lever.lua index bc46e72d09a..ad58dd844bc 100644 --- a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/eradicator_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/eradicator_lever.lua @@ -65,7 +65,7 @@ function heartDestructionEradicator.onUse(player, item, fromPosition, itemEx, to Position(32334, 31285, 14), Position(32334, 31286, 14), Position(32334, 31287, 14), - Position(32334, 31288, 14) + Position(32334, 31288, 14), }, newPos = { x = 32309, y = 31290, z = 14 }, @@ -82,7 +82,7 @@ function heartDestructionEradicator.onUse(player, item, fromPosition, itemEx, to if tile then local playerTile = tile:getTopCreature() if playerTile and playerTile:isPlayer() then - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end end end @@ -103,7 +103,9 @@ function heartDestructionEradicator.onUse(player, item, fromPosition, itemEx, to eradicatorReleaseT = false -- Liberar Spell eradicatorWeak = 0 -- Eradicator Form areaEradicator1 = addEvent(clearArea, 15 * 60000) - areaEradicator2 = addEvent(function() eradicatorReleaseT = true end, 74000) + areaEradicator2 = addEvent(function() + eradicatorReleaseT = true + end, 74000) Game.createMonster("Spark of Destruction", { x = 32304, y = 31282, z = 14 }, false, true) Game.createMonster("Spark of Destruction", { x = 32305, y = 31287, z = 14 }, false, true) diff --git a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/final_lever.lua b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/final_lever.lua index dea992b7fdf..54db829d311 100644 --- a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/final_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/final_lever.lua @@ -11,7 +11,7 @@ function sparkDevourerSpawn() { x = 32268, y = 31341, z = 14 }, { x = 32275, y = 31342, z = 14 }, { x = 32269, y = 31352, z = 14 }, - { x = 32277, y = 31351, z = 14 } + { x = 32277, y = 31351, z = 14 }, } if sparkSpawnCount > 0 then @@ -345,7 +345,7 @@ function heartDestructionFinal.onUse(player, item, fromPosition, itemEx, toPosit Position(32271, 31375, 14), Position(32271, 31376, 14), Position(32271, 31377, 14), - Position(32271, 31378, 14) + Position(32271, 31378, 14), }, destructionPositions = { @@ -353,7 +353,7 @@ function heartDestructionFinal.onUse(player, item, fromPosition, itemEx, toPosit Position(32272, 31375, 14), Position(32272, 31376, 14), Position(32272, 31377, 14), - Position(32272, 31378, 14) + Position(32272, 31378, 14), }, ragePositions = { @@ -361,7 +361,7 @@ function heartDestructionFinal.onUse(player, item, fromPosition, itemEx, toPosit Position(32273, 31375, 14), Position(32273, 31376, 14), Position(32273, 31377, 14), - Position(32273, 31378, 14) + Position(32273, 31378, 14), }, hungerNewPos = { x = 32244, y = 31381, z = 14 }, @@ -381,21 +381,21 @@ function heartDestructionFinal.onUse(player, item, fromPosition, itemEx, toPosit for i = 1, #config.hungerPositions do hungerTile = Tile(config.hungerPositions[i]):getTopCreature() if hungerTile and hungerTile:isPlayer() then - storeHunger[#storeHunger+1] = hungerTile + storeHunger[#storeHunger + 1] = hungerTile end end for i = 1, #config.destructionPositions do destructionTile = Tile(config.destructionPositions[i]):getTopCreature() if destructionTile and destructionTile:isPlayer() then - storeDestruction[#storeDestruction+1] = destructionTile + storeDestruction[#storeDestruction + 1] = destructionTile end end for i = 1, #config.ragePositions do rageTile = Tile(config.ragePositions[i]):getTopCreature() if rageTile and rageTile:isPlayer() then - storeRage[#storeRage+1] = rageTile + storeRage[#storeRage + 1] = rageTile end end diff --git a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/outburst_lever.lua b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/outburst_lever.lua index 3cfb70815ce..83825a9250f 100644 --- a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/outburst_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/outburst_lever.lua @@ -64,7 +64,7 @@ function heartDestructionOutburst.onUse(player, item, fromPosition, itemEx, toPo Position(32207, 31285, 14), Position(32207, 31286, 14), Position(32207, 31287, 14), - Position(32207, 31288, 14) + Position(32207, 31288, 14), }, newPos = { x = 32234, y = 31292, z = 14 }, @@ -81,7 +81,7 @@ function heartDestructionOutburst.onUse(player, item, fromPosition, itemEx, toPo if tile then local playerTile = tile:getTopCreature() if playerTile and playerTile:isPlayer() then - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end end end diff --git a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/quake_lever.lua b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/quake_lever.lua index 2a5e857d3a6..608028ea5e7 100644 --- a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/quake_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/quake_lever.lua @@ -64,7 +64,7 @@ function heartDestructionQuake.onUse(player, item, fromPosition, itemEx, toPosit Position(32182, 31245, 14), Position(32182, 31246, 14), Position(32182, 31247, 14), - Position(32182, 31248, 14) + Position(32182, 31248, 14), }, newPos = { x = 32208, y = 31256, z = 14 }, @@ -81,7 +81,7 @@ function heartDestructionQuake.onUse(player, item, fromPosition, itemEx, toPosit if tile then local playerTile = tile:getTopCreature() if playerTile and playerTile:isPlayer() then - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end end end diff --git a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/rupture_lever.lua b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/rupture_lever.lua index 33311f5d97f..ea6a6052d66 100644 --- a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/rupture_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/rupture_lever.lua @@ -63,7 +63,7 @@ function heartDestructionRupture.onUse(player, item, fromPosition, itemEx, toPos Position(32309, 31249, 14), Position(32309, 31250, 14), Position(32309, 31251, 14), - Position(32309, 31252, 14) + Position(32309, 31252, 14), }, newPos = { x = 32335, y = 31257, z = 14 }, @@ -80,7 +80,7 @@ function heartDestructionRupture.onUse(player, item, fromPosition, itemEx, toPos if tile then local playerTile = tile:getTopCreature() if playerTile and playerTile:isPlayer() then - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end end end diff --git a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/sparks_lever.lua b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/sparks_lever.lua index e307ce0ad51..9a87b0eea72 100644 --- a/data-otservbr-global/scripts/actions/quests/heart_of_destruction/sparks_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/heart_of_destruction/sparks_lever.lua @@ -144,7 +144,7 @@ function heartDestructionSparks.onUse(player, item, fromPosition, itemEx, toPosi Position(32227, 31344, 11), Position(32227, 31345, 11), Position(32227, 31346, 11), - Position(32227, 31347, 11) + Position(32227, 31347, 11), }, newPos = { x = 32151, y = 31301, z = 14 }, @@ -161,7 +161,7 @@ function heartDestructionSparks.onUse(player, item, fromPosition, itemEx, toPosi if tile then local playerTile = tile:getTopCreature() if playerTile and playerTile:isPlayer() then - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end end end diff --git a/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_deep_terror.lua b/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_deep_terror.lua index 2b845daed22..60445d6362f 100644 --- a/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_deep_terror.lua +++ b/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_deep_terror.lua @@ -13,18 +13,18 @@ function heroRathletonDeep.onUse(player, item, fromPosition, target, toPosition, end if Game.getStorageValue(GlobalStorage.HeroRathleton.DeepTerrorRunning) >= 1 then - player:say('Impossible to turn on this machine for now!', TALKTYPE_MONSTER_SAY, false, nil, toPosition) + player:say("Impossible to turn on this machine for now!", TALKTYPE_MONSTER_SAY, false, nil, toPosition) return true end if Game.getStorageValue(GlobalStorage.HeroRathleton.FirstMachines) == 7 then - player:say('All machines are working, now is possible to use the teleport at east.', TALKTYPE_MONSTER_SAY) + player:say("All machines are working, now is possible to use the teleport at east.", TALKTYPE_MONSTER_SAY) end item:transform(21744) addEvent(revertMachine, 10 * 60 * 1000, toPosition, 21744, 21743) Game.setStorageValue(GlobalStorage.HeroRathleton.FirstMachines, Game.getStorageValue(GlobalStorage.HeroRathleton.FirstMachines) + 1) - player:say('~Zzzz~\n The machine is working!', TALKTYPE_MONSTER_SAY, false, nil, toPosition) + player:say("~Zzzz~\n The machine is working!", TALKTYPE_MONSTER_SAY, false, nil, toPosition) return true end diff --git a/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_glooth_horror.lua b/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_glooth_horror.lua index 985688adcb2..812fcf179d9 100644 --- a/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_glooth_horror.lua +++ b/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_glooth_horror.lua @@ -13,18 +13,18 @@ function heroRathletonGlooth.onUse(player, item, fromPosition, target, toPositio end if Game.getStorageValue(GlobalStorage.HeroRathleton.DeepTerrorRunning) >= 1 then - player:say('Impossible to turn on this machine for now!', TALKTYPE_MONSTER_SAY, false, nil, toPosition) + player:say("Impossible to turn on this machine for now!", TALKTYPE_MONSTER_SAY, false, nil, toPosition) return true end if Game.getStorageValue(GlobalStorage.HeroRathleton.SecondMachines) == 7 then - player:say('All machines are working, now is possible to use the teleport at west.', TALKTYPE_MONSTER_SAY) + player:say("All machines are working, now is possible to use the teleport at west.", TALKTYPE_MONSTER_SAY) end item:transform(21744) addEvent(revertMachine, 10 * 60 * 1000, toPosition, 21744, 21743) Game.setStorageValue(GlobalStorage.HeroRathleton.SecondMachines, Game.getStorageValue(GlobalStorage.HeroRathleton.SecondMachines) + 1) - player:say('~Zzzz~\n The machine is working!', TALKTYPE_MONSTER_SAY, false, nil, toPosition) + player:say("~Zzzz~\n The machine is working!", TALKTYPE_MONSTER_SAY, false, nil, toPosition) return true end diff --git a/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_lava.lua b/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_lava.lua index a7301f77148..915042b8d5b 100644 --- a/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_lava.lua +++ b/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_lava.lua @@ -13,18 +13,18 @@ function heroRathletonLava.onUse(player, item, fromPosition, target, toPosition, end if Game.getStorageValue(GlobalStorage.HeroRathleton.LavaRunning) >= 1 then - player:say('Impossible to turn on this machine for now!', TALKTYPE_MONSTER_SAY, false, nil, toPosition) + player:say("Impossible to turn on this machine for now!", TALKTYPE_MONSTER_SAY, false, nil, toPosition) return true end if Game.getStorageValue(GlobalStorage.HeroRathleton.FourthMachines) == 7 then - player:say('All machines are working, now is possible to use the teleport at west.', TALKTYPE_MONSTER_SAY) + player:say("All machines are working, now is possible to use the teleport at west.", TALKTYPE_MONSTER_SAY) end item:transform(21744) addEvent(revertMachine, 10 * 60 * 1000, toPosition, 21744, 21743) Game.setStorageValue(GlobalStorage.HeroRathleton.FourthMachines, Game.getStorageValue(GlobalStorage.HeroRathleton.FourthMachines) + 1) - player:say('~Zzzz~\n The machine is working!', TALKTYPE_MONSTER_SAY, false, nil, toPosition) + player:say("~Zzzz~\n The machine is working!", TALKTYPE_MONSTER_SAY, false, nil, toPosition) return true end diff --git a/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_professor_maxxen.lua b/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_professor_maxxen.lua index f8725997027..4962acdd7bf 100644 --- a/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_professor_maxxen.lua +++ b/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/machines_professor_maxxen.lua @@ -13,18 +13,18 @@ function heroRathletonProfessor.onUse(player, item, fromPosition, target, toPosi end if Game.getStorageValue(GlobalStorage.HeroRathleton.MaxxenRunning) >= 1 then - player:say('Impossible to turn on this machine for now!', TALKTYPE_MONSTER_SAY, false, nil, toPosition) + player:say("Impossible to turn on this machine for now!", TALKTYPE_MONSTER_SAY, false, nil, toPosition) return true end if Game.getStorageValue(GlobalStorage.HeroRathleton.ThirdMachines) == 7 then - player:say('All machines are working, now is possible to use the teleport at east.', TALKTYPE_MONSTER_SAY) + player:say("All machines are working, now is possible to use the teleport at east.", TALKTYPE_MONSTER_SAY) end item:transform(21744) addEvent(revertMachine, 10 * 60 * 1000, toPosition, 21744, 21743) Game.setStorageValue(GlobalStorage.HeroRathleton.ThirdMachines, Game.getStorageValue(GlobalStorage.HeroRathleton.ThirdMachines) + 1) - player:say('~Zzzz~\n The machine is working!', TALKTYPE_MONSTER_SAY, false, nil, toPosition) + player:say("~Zzzz~\n The machine is working!", TALKTYPE_MONSTER_SAY, false, nil, toPosition) return true end diff --git a/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/reward.lua b/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/reward.lua index 498f9f1c6b3..92a1454283c 100644 --- a/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/reward.lua +++ b/data-otservbr-global/scripts/actions/quests/hero_of_rathleton/reward.lua @@ -6,11 +6,11 @@ function heroRathletonReward.onUse(player, item, fromPosition, target, toPositio player:addItem(21897) player:addItem(9058) player:addItem(836) - player:addAchievement('The Professors Nut') + player:addAchievement("The Professors Nut") player:setStorageValue(24850, 1) -- storage da recompensa - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You opened the Maxxen\'s chest.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You opened the Maxxen's chest.") else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The chest is empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The chest is empty.") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/hot_cuisine/cookbook1.lua b/data-otservbr-global/scripts/actions/quests/hot_cuisine/cookbook1.lua index c262fca9a32..33cccfb88ab 100644 --- a/data-otservbr-global/scripts/actions/quests/hot_cuisine/cookbook1.lua +++ b/data-otservbr-global/scripts/actions/quests/hot_cuisine/cookbook1.lua @@ -8,14 +8,14 @@ local config = { [7] = "Filled Jalape�o Peppers\n- 10 Jalape�o peppers\n- 2 Cheese\n- 1 Troll green\n- 1 Shadow herb\n- 1 Vial of mead\n- 2 Eggs\n\n", [8] = "Blessed Steak\n- 1 Piece of ham\n- 5 Plums\n- 1 Onions\n- 2 Beetroot\n- 1 Pumpkin\n- 2 Jalape�o peppers\n\n", [9] = "Northern Fishburger\n- 1 Northern pike\n- 1 Rainbow trout\n- 1 Green perch\n- 5 Shrimps\n- 2 Rolls- 1 Fern\n\n", - [10] = "Carrot Cake\n- 5 Carrots\n- 1 Vial of milk\n- 1 Lemon\n- 10 Ounces of flour\n- 2 Eggs\n- 10 Cookies\n- 2 Peanuts" + [10] = "Carrot Cake\n- 5 Carrots\n- 1 Vial of milk\n- 1 Lemon\n- 10 Ounces of flour\n- 2 Eggs\n- 10 Cookies\n- 2 Peanuts", } local hotCuisineCook1 = Action() function hotCuisineCook1.onUse(player, item, fromPosition, target, toPosition, isHotkey) local text = {} for i = 1, 10 do - text[#text+1] = config[i] + text[#text + 1] = config[i] end player:showTextDialog(item.itemid, table.concat(text)) return true diff --git a/data-otservbr-global/scripts/actions/quests/hot_cuisine/cookbook2.lua b/data-otservbr-global/scripts/actions/quests/hot_cuisine/cookbook2.lua index de53ed98c22..0a089d63a23 100644 --- a/data-otservbr-global/scripts/actions/quests/hot_cuisine/cookbook2.lua +++ b/data-otservbr-global/scripts/actions/quests/hot_cuisine/cookbook2.lua @@ -2,14 +2,14 @@ local config = { [1] = "Coconut Shrimp Bake\n- 5 vials of milk\n- 5 brown mushrooms\n- 5 red mushrooms\n- 10 rice balls\n- 10 shrimps\n\n", [2] = "Pot of Blackjack\n- 5 sandcrawler shells\n- 2 vials of water\n- 20 carrots\n- 10 potatoes\n- 3 jalapeno peppers\n\n", [3] = "Demonic Candy Ball\n- 3 candies\n- 3 candy canes\n- 2 bar of chocolate\n- 15 gingerbreadmen\n- 1 concentrated demonic blood\n\n", - [4] = "Sweet Mangonaise Elixir\n- 100 eggs\n- 50 mangoes\n- 10 honeycombs\n- 1 bottle of bug milk\n- 1 blessed wooden stake\n\n" + [4] = "Sweet Mangonaise Elixir\n- 100 eggs\n- 50 mangoes\n- 10 honeycombs\n- 1 bottle of bug milk\n- 1 blessed wooden stake\n\n", } local hotCuisineCook2 = Action() function hotCuisineCook2.onUse(player, item, fromPosition, target, toPosition, isHotkey) local text = {} for i = 1, 4 do - text[#text+1] = config[i] + text[#text + 1] = config[i] end player:showTextDialog(item.itemid, table.concat(text)) return true diff --git a/data-otservbr-global/scripts/actions/quests/hunter_outfit/music_sheet.lua b/data-otservbr-global/scripts/actions/quests/hunter_outfit/music_sheet.lua index 1073d16f636..8248020970d 100644 --- a/data-otservbr-global/scripts/actions/quests/hunter_outfit/music_sheet.lua +++ b/data-otservbr-global/scripts/actions/quests/hunter_outfit/music_sheet.lua @@ -1,8 +1,8 @@ local config = { - [6087] = { storage = Storage.OutfitQuest.HunterMusicSheet01, text = 'first' }, - [6088] = { storage = Storage.OutfitQuest.HunterMusicSheet02, text = 'second' }, - [6089] = { storage = Storage.OutfitQuest.HunterMusicSheet03, text = 'third' }, - [6090] = { storage = Storage.OutfitQuest.HunterMusicSheet04, text = 'fourth' } + [6087] = { storage = Storage.OutfitQuest.HunterMusicSheet01, text = "first" }, + [6088] = { storage = Storage.OutfitQuest.HunterMusicSheet02, text = "second" }, + [6089] = { storage = Storage.OutfitQuest.HunterMusicSheet03, text = "third" }, + [6090] = { storage = Storage.OutfitQuest.HunterMusicSheet04, text = "fourth" }, } local hunterMusic = Action() @@ -15,11 +15,11 @@ function hunterMusic.onUse(player, item, fromPosition, target, toPosition, isHot local cStorage = useItem.storage if player:getStorageValue(cStorage) ~= 1 then player:setStorageValue(cStorage, 1) - player:sendTextMessage(MESSAGE_GAME_HIGHLIGHT, 'You have learned the ' .. useItem.text .. ' part of a hymn.') + player:sendTextMessage(MESSAGE_GAME_HIGHLIGHT, "You have learned the " .. useItem.text .. " part of a hymn.") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) item:remove(1) else - player:sendTextMessage(MESSAGE_GAME_HIGHLIGHT, 'You already know the ' .. useItem.text .. ' verse of the hymn.') + player:sendTextMessage(MESSAGE_GAME_HIGHLIGHT, "You already know the " .. useItem.text .. " verse of the hymn.") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/ice_islands/cure.lua b/data-otservbr-global/scripts/actions/quests/ice_islands/cure.lua index 16bf3db19d5..7df4a16168b 100644 --- a/data-otservbr-global/scripts/actions/quests/ice_islands/cure.lua +++ b/data-otservbr-global/scripts/actions/quests/ice_islands/cure.lua @@ -6,7 +6,7 @@ function iceCure.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.TheIceIslands.Questline) >= 21 then toPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE) - player:say('You take some hot water from the geyser.', TALKTYPE_MONSTER_SAY) + player:say("You take some hot water from the geyser.", TALKTYPE_MONSTER_SAY) item:transform(7246) end return true diff --git a/data-otservbr-global/scripts/actions/quests/ice_islands/paint.lua b/data-otservbr-global/scripts/actions/quests/ice_islands/paint.lua index 807529bb8ba..b1172b164bc 100644 --- a/data-otservbr-global/scripts/actions/quests/ice_islands/paint.lua +++ b/data-otservbr-global/scripts/actions/quests/ice_islands/paint.lua @@ -23,7 +23,7 @@ function icePaint.onUse(player, item, fromPosition, target, toPosition, isHotkey player:addAchievement("Animal Activist") end end - player:say('You painted a baby seal.', TALKTYPE_MONSTER_SAY) + player:say("You painted a baby seal.", TALKTYPE_MONSTER_SAY) target:transform(7252) addEvent(transformBack, 30 * 1000, toPosition, 7252, 7178) end diff --git a/data-otservbr-global/scripts/actions/quests/ice_islands/yakchal.lua b/data-otservbr-global/scripts/actions/quests/ice_islands/yakchal.lua index c9d7c847758..47dfafd807a 100644 --- a/data-otservbr-global/scripts/actions/quests/ice_islands/yakchal.lua +++ b/data-otservbr-global/scripts/actions/quests/ice_islands/yakchal.lua @@ -1,8 +1,8 @@ local creatureName = { - [1] = 'ice golem', - [2] = 'ice witch', - [3] = 'crystal spider', - [4] = 'frost dragon' + [1] = "ice golem", + [2] = "ice witch", + [3] = "crystal spider", + [4] = "frost dragon", } local function summonMonster(name, position) diff --git a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/charm.lua b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/charm.lua index b41729b4824..3b79b84639a 100644 --- a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/charm.lua +++ b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/charm.lua @@ -7,7 +7,7 @@ function inServiceYalaharCharm.onUse(player, item, fromPosition, target, toPosit toPosition:sendMagicEffect(CONST_ME_CARNIPHILA) local monster for i = 1, 2 do - monster = Game.createMonster('Tormented Ghost', player:getPosition()) + monster = Game.createMonster("Tormented Ghost", player:getPosition()) if monster then monster:getPosition():sendMagicEffect(CONST_ME_TELEPORT) end diff --git a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/ghost.lua b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/ghost.lua index 50118519f7f..f9c873247d2 100644 --- a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/ghost.lua +++ b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/ghost.lua @@ -2,7 +2,7 @@ local config = { [8823] = 8824, [8824] = 8825, [8825] = 8859, - [8859] = 8827 + [8859] = 8827, } local inServiceYalaharGhost = Action() @@ -13,7 +13,7 @@ function inServiceYalaharGhost.onUse(player, item, fromPosition, target, toPosit end for i = 1, 2 do - Game.createMonster('Tormented Ghost', fromPosition) + Game.createMonster("Tormented Ghost", fromPosition) end local charmItem = Tile(Position(32776, 31062, 7)):getItemById(target.itemid) @@ -23,7 +23,7 @@ function inServiceYalaharGhost.onUse(player, item, fromPosition, target, toPosit toPosition:sendMagicEffect(CONST_ME_ENERGYHIT) item:remove() - player:say('The ghost charm is charging.', TALKTYPE_MONSTER_SAY) + player:say("The ghost charm is charging.", TALKTYPE_MONSTER_SAY) if target.itemid == 8859 then player:setStorageValue(Storage.InServiceofYalahar.Questline, 37) diff --git a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/last_fight.lua b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/last_fight.lua index 54068465950..7423821b69a 100644 --- a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/last_fight.lua +++ b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/last_fight.lua @@ -4,19 +4,19 @@ local waves = { Position(32782, 31162, 10), Position(32784, 31162, 10), Position(32782, 31170, 10), - Position(32784, 31170, 10) + Position(32784, 31170, 10), } local creatureNames = { - [1] = 'rift worm', - [2] = 'rift scythe', - [3] = 'rift brood', - [4] = 'war golem' + [1] = "rift worm", + [2] = "rift scythe", + [3] = "rift brood", + [4] = "war golem", } local effectPositions = { Position(32779, 31161, 10), - Position(32787, 31171, 10) + Position(32787, 31171, 10), } local function doClearAreaAzerus() @@ -57,7 +57,7 @@ end local inServiceYalaharLastFight = Action() function inServiceYalaharLastFight.onUse(player, item, fromPosition, target, toPosition, isHotkey) if Game.getStorageValue(GlobalStorage.InServiceOfYalahar.LastFight) == 1 then - player:say('You have to wait some time before this globe charges.', TALKTYPE_MONSTER_SAY) + player:say("You have to wait some time before this globe charges.", TALKTYPE_MONSTER_SAY) return true end diff --git a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/mechanism.lua b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/mechanism.lua index 75c6cbf76c1..f04a0bf1d4b 100644 --- a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/mechanism.lua +++ b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/mechanism.lua @@ -10,25 +10,25 @@ local mechanisms = { [3099] = { pos = { x = 32874, y = 31202, z = 5 }, value = 41 }, -- Sunken [3100] = { pos = { x = 32869, y = 31202, z = 5 }, value = 41 }, [3101] = { pos = { x = 32856, y = 31251, z = 5 }, value = 45 }, -- Factory - [3102] = { pos = { x = 32854, y = 31248, z = 5 }, value = 45 } + [3102] = { pos = { x = 32854, y = 31248, z = 5 }, value = 45 }, } local mechanisms2 = { [1018] = { pos = { x = 32773, y = 31116, z = 7 } }, - [1019] = { pos = { x = 32780, y = 31115, z = 7 } } + [1019] = { pos = { x = 32780, y = 31115, z = 7 } }, } local inServiceYalaharMechanism = Action() function inServiceYalaharMechanism.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if (mechanisms[item.uid]) then - if (player:getStorageValue(Storage.InServiceofYalahar.Questline) >= mechanisms[item.uid].value) then + if mechanisms[item.uid] then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) >= mechanisms[item.uid].value then player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:teleportTo(mechanisms[item.uid].pos) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The gate mechanism won't move. You probably have to find a way around until you figure out how to operate the gate.") end - elseif (mechanisms2[item.uid]) then + elseif mechanisms2[item.uid] then player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:teleportTo(mechanisms2[item.uid].pos) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/morik_summon.lua b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/morik_summon.lua index 89331936637..a0af87959d1 100644 --- a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/morik_summon.lua +++ b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/morik_summon.lua @@ -1,8 +1,7 @@ local inServiceYalaharMorik = Action() function inServiceYalaharMorik.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.uid == 1015 then - if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 31 - and player:getStorageValue(Storage.InServiceofYalahar.MorikSummon) < 1 then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 31 and player:getStorageValue(Storage.InServiceofYalahar.MorikSummon) < 1 then local ret = Game.createMonster("Morik the Gladiator", fromPosition) ret:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:setStorageValue(Storage.InServiceofYalahar.MorikSummon, 1) diff --git a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/mr_west_door.lua b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/mr_west_door.lua index b1773fe9ec2..29e3b7196de 100644 --- a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/mr_west_door.lua +++ b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/mr_west_door.lua @@ -1,16 +1,16 @@ local inServiceYalaharWest = Action() function inServiceYalaharWest.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if (item.uid == 3081) then - if (player:getStorageValue(Storage.InServiceofYalahar.Questline) >= 24) then - if (item.itemid == 5287) then + if item.uid == 3081 then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) >= 24 then + if item.itemid == 5287 then player:teleportTo(toPosition, true) item:transform(5288) player:setStorageValue(Storage.InServiceofYalahar.MrWestDoor, 1) end end - elseif (item.uid == 3082) then - if (player:getStorageValue(Storage.InServiceofYalahar.Questline) >= 24) then - if (item.itemid == 6260) then + elseif item.uid == 3082 then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) >= 24 then + if item.itemid == 6260 then player:teleportTo(toPosition, true) item:transform(6261) player:setStorageValue(Storage.InServiceofYalahar.MrWestDoor, 2) diff --git a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/reward.lua b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/reward.lua index 74535204066..bad7fcdf1cb 100644 --- a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/reward.lua +++ b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/reward.lua @@ -1,7 +1,7 @@ local inServiceYalaharReward = Action() function inServiceYalaharReward.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if (item.uid == 3088) then - if (player:getStorageValue(Storage.InServiceofYalahar.Questline) == 53) then + if item.uid == 3088 then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 53 then player:setStorageValue(Storage.InServiceofYalahar.Questline, 54) player:setStorageValue(Storage.InServiceofYalahar.Mission10, 5) -- StorageValue for Questlog "Mission 10: The Final Battle" player:addItem(8862, 1) @@ -9,8 +9,8 @@ function inServiceYalaharReward.onUse(player, item, fromPosition, target, toPosi else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The chest is empty.") end - elseif (item.uid == 3089) then - if (player:getStorageValue(Storage.InServiceofYalahar.Questline) == 53) then + elseif item.uid == 3089 then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 53 then player:setStorageValue(Storage.InServiceofYalahar.Questline, 54) player:setStorageValue(Storage.InServiceofYalahar.Mission10, 5) -- StorageValue for Questlog "Mission 10: The Final Battle" player:addItem(8864, 1) @@ -18,8 +18,8 @@ function inServiceYalaharReward.onUse(player, item, fromPosition, target, toPosi else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The chest is empty.") end - elseif (item.uid == 3090) then - if (player:getStorageValue(Storage.InServiceofYalahar.Questline) == 53) then + elseif item.uid == 3090 then + if player:getStorageValue(Storage.InServiceofYalahar.Questline) == 53 then player:setStorageValue(Storage.InServiceofYalahar.Questline, 54) player:setStorageValue(Storage.InServiceofYalahar.Mission10, 5) -- StorageValue for Questlog "Mission 10: The Final Battle" player:addItem(8863, 1) diff --git a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/yalahar_machine_war_golems.lua b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/yalahar_machine_war_golems.lua index 5ca261993b9..b735a7e4e54 100644 --- a/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/yalahar_machine_war_golems.lua +++ b/data-otservbr-global/scripts/actions/quests/in_service_of_yalahar/yalahar_machine_war_golems.lua @@ -5,8 +5,8 @@ local config = { { x = 32882, y = 31323, z = 10 }, { x = 32882, y = 31320, z = 10 }, { x = 32882, y = 31318, z = 10 }, - { x = 32882, y = 31316, z = 10 } - } + { x = 32882, y = 31316, z = 10 }, + }, }, [23701] = { storage = GlobalStorage.InServiceOfYalahar.WarGolemsMachine2, @@ -14,9 +14,9 @@ local config = { { x = 32869, y = 31322, z = 10 }, { x = 32869, y = 31320, z = 10 }, { x = 32869, y = 31318, z = 10 }, - { x = 32869, y = 31316, z = 10 } - } - } + { x = 32869, y = 31316, z = 10 }, + }, + }, } local function disableMachine(storage) @@ -35,7 +35,7 @@ function inServiceYalaharWarGolem.onUse(player, item, fromPosition, target, toPo end if player:getItemCount(8775) < 4 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You don\'t have enough gear wheels to activate the machine.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You don't have enough gear wheels to activate the machine.") return true end @@ -43,10 +43,10 @@ function inServiceYalaharWarGolem.onUse(player, item, fromPosition, target, toPo addEvent(disableMachine, 60 * 60 * 1000, machineGroup.storage) player:removeItem(8775, 4) for i = 1, #machineGroup.machines do - player:say('*CLICK*', TALKTYPE_MONSTER_YELL, false, player, machineGroup.machines[i]) + player:say("*CLICK*", TALKTYPE_MONSTER_YELL, false, player, machineGroup.machines[i]) end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You insert all 4 gear wheels, them adjusting the teleporter to transport you to the deeper floor') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You insert all 4 gear wheels, them adjusting the teleporter to transport you to the deeper floor") return true end diff --git a/data-otservbr-global/scripts/actions/quests/inquisition/brother_lever.lua b/data-otservbr-global/scripts/actions/quests/inquisition/brother_lever.lua index f7475f6fd4f..ad89d6fd168 100644 --- a/data-otservbr-global/scripts/actions/quests/inquisition/brother_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/inquisition/brother_lever.lua @@ -13,10 +13,10 @@ local config = { Position(33235, 31721, 11), Position(33236, 31721, 11), Position(33237, 31721, 11), - Position(33238, 31721, 11) + Position(33238, 31721, 11), }, wallDown = 2162, - wallUp = 1295 + wallUp = 1295, }, [1007] = { wallPositions = { @@ -28,10 +28,10 @@ local config = { Position(33223, 31729, 11), Position(33223, 31730, 11), Position(33223, 31731, 11), - Position(33223, 31732, 11) + Position(33223, 31732, 11), }, wallDown = 2164, - wallUp = 1294 + wallUp = 1294, }, [1008] = { wallPositions = { @@ -47,10 +47,10 @@ local config = { Position(33235, 31735, 11), Position(33236, 31735, 11), Position(33237, 31735, 11), - Position(33238, 31735, 11) + Position(33238, 31735, 11), }, wallDown = 2162, - wallUp = 1295 + wallUp = 1295, }, [1009] = { wallPositions = { @@ -62,11 +62,11 @@ local config = { Position(33241, 31729, 11), Position(33241, 31730, 11), Position(33241, 31731, 11), - Position(33241, 31732, 11) + Position(33241, 31732, 11), }, wallDown = 2164, - wallUp = 1294 - } + wallUp = 1294, + }, } local inquisitionBrother = Action() diff --git a/data-otservbr-global/scripts/actions/quests/inquisition/rewards.lua b/data-otservbr-global/scripts/actions/quests/inquisition/rewards.lua index 5b2aafe5212..84f128c9a2e 100644 --- a/data-otservbr-global/scripts/actions/quests/inquisition/rewards.lua +++ b/data-otservbr-global/scripts/actions/quests/inquisition/rewards.lua @@ -7,7 +7,7 @@ local rewards = { [1305] = 8096, [1306] = 8100, [1307] = 8102, - [1308] = 8026 + [1308] = 8026, } local inquisitionRewards = Action() @@ -18,7 +18,7 @@ function inquisitionRewards.onUse(player, item, fromPosition, target, toPosition player:setStorageValue(Storage.TheInquisition.Mission07, 5) -- The Inquisition Questlog- "Mission 7: The Shadow Nexus" player:addItem(rewards[item.uid], 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found " .. ItemType(rewards[item.uid]):getName() .. ".") - player:addAchievement('Master of the Nexus') + player:addAchievement("Master of the Nexus") player:addOutfitAddon(288, 2) player:addOutfitAddon(288, 1) player:addOutfitAddon(289, 1) diff --git a/data-otservbr-global/scripts/actions/quests/inquisition/vampire_hunt.lua b/data-otservbr-global/scripts/actions/quests/inquisition/vampire_hunt.lua index 739754dbeeb..e3e78cc62f4 100644 --- a/data-otservbr-global/scripts/actions/quests/inquisition/vampire_hunt.lua +++ b/data-otservbr-global/scripts/actions/quests/inquisition/vampire_hunt.lua @@ -1,7 +1,7 @@ local altars = { Position(32777, 31982, 9), Position(32779, 31977, 9), - Position(32781, 31982, 9) + Position(32781, 31982, 9), } local inquisitionVampire = Action() @@ -16,7 +16,7 @@ function inquisitionVampire.onUse(player, item, fromPosition, target, toPosition Game.createMonster("The Count", toPosition) return true else - k[#k+1] = tmp + k[#k + 1] = tmp end end for i = 1, #k do diff --git a/data-otservbr-global/scripts/actions/quests/kilmaresh/peeler.lua b/data-otservbr-global/scripts/actions/quests/kilmaresh/peeler.lua index 333c431de42..8507ac946f9 100644 --- a/data-otservbr-global/scripts/actions/quests/kilmaresh/peeler.lua +++ b/data-otservbr-global/scripts/actions/quests/kilmaresh/peeler.lua @@ -9,7 +9,6 @@ function peeler.onUse(player, item, frompos, item2, topos) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Empty.") end - return true end diff --git a/data-otservbr-global/scripts/actions/quests/kilmaresh/portal_minis_kilmaresh.lua b/data-otservbr-global/scripts/actions/quests/kilmaresh/portal_minis_kilmaresh.lua index 041526fced9..3caf3a55080 100644 --- a/data-otservbr-global/scripts/actions/quests/kilmaresh/portal_minis_kilmaresh.lua +++ b/data-otservbr-global/scripts/actions/quests/kilmaresh/portal_minis_kilmaresh.lua @@ -9,10 +9,10 @@ local config = { bossPosition = Position(33871, 31552, 8), specPos = { from = Position(33866, 31545, 8), - to = Position(33876, 31555, 8) + to = Position(33876, 31555, 8), }, exitPosition = Position(33886, 31478, 6), - storage = Storage.Kilmaresh.NeferiTheSpyTimer + storage = Storage.Kilmaresh.NeferiTheSpyTimer, }, [2] = { teleportPosition = { x = 33883, y = 31467, z = 9 }, @@ -24,10 +24,10 @@ local config = { bossPosition = Position(33833, 31496, 9), specPos = { from = Position(33827, 31488, 9), - to = Position(33837, 31501, 9) + to = Position(33837, 31501, 9), }, exitPosition = Position(33883, 31468, 9), - storage = Storage.Kilmaresh.SisterHetaiTimer + storage = Storage.Kilmaresh.SisterHetaiTimer, }, [3] = { teleportPosition = { x = 33819, y = 31773, z = 10 }, @@ -39,22 +39,22 @@ local config = { bossPosition = Position(33849, 31787, 10), specPos = { from = Position(33842, 31779, 10), - to = Position(33855, 31791, 10) + to = Position(33855, 31791, 10), }, exitPosition = Position(33819, 31774, 10), - storage = Storage.Kilmaresh.AmenefTimer + storage = Storage.Kilmaresh.AmenefTimer, }, [4] = { teleportPosition = { x = 33871, y = 31546, z = 8 }, - exitPosition = Position(33886, 31478, 6) + exitPosition = Position(33886, 31478, 6), }, [5] = { teleportPosition = { x = 33833, y = 31489, z = 9 }, - exitPosition = Position(33883, 31468, 9) + exitPosition = Position(33883, 31468, 9), }, [6] = { teleportPosition = { x = 33849, y = 31781, z = 10 }, - exitPosition = Position(33819, 31774, 10) + exitPosition = Position(33819, 31774, 10), }, } diff --git a/data-otservbr-global/scripts/actions/quests/kilmaresh/scissors.lua b/data-otservbr-global/scripts/actions/quests/kilmaresh/scissors.lua index 739b3a5ec40..d1d16fa1c30 100644 --- a/data-otservbr-global/scripts/actions/quests/kilmaresh/scissors.lua +++ b/data-otservbr-global/scripts/actions/quests/kilmaresh/scissors.lua @@ -9,7 +9,6 @@ function scissors.onUse(player, item, frompos, item2, topos) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Empty.") end - return true end diff --git a/data-otservbr-global/scripts/actions/quests/kilmaresh/scissorsfun.lua b/data-otservbr-global/scripts/actions/quests/kilmaresh/scissorsfun.lua index cb63a53ddfc..1e4975e705a 100644 --- a/data-otservbr-global/scripts/actions/quests/kilmaresh/scissorsfun.lua +++ b/data-otservbr-global/scripts/actions/quests/kilmaresh/scissorsfun.lua @@ -4,266 +4,266 @@ local config = { msg = "You are cutting some veldt flowers.", storage = Storage.Kilmaresh.Eighth.Yonan, getValue = 2, - addItemId = 31325 + addItemId = 31325, }, -- Veldt Flower [30422] = { itemId = 30422, msg = "You are cutting some snake maw.", storage = Storage.Kilmaresh.Eighth.Shimun, getValue = 2, - addItemId = 31336 + addItemId = 31336, }, -- Sanke Maw [30427] = { itemId = 30427, msg = "You are cutting some desert rose blossoms.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31330 + addItemId = 31330, }, -- Rose Blossoms [12747] = { itemId = 12747, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12748] = { itemId = 12748, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12749] = { itemId = 12749, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12750] = { itemId = 12750, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12751] = { itemId = 12751, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12752] = { itemId = 12752, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12753] = { itemId = 12753, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12754] = { itemId = 12754, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12755] = { itemId = 12755, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12756] = { itemId = 12756, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12757] = { itemId = 12757, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12758] = { itemId = 12758, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12759] = { itemId = 12759, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12760] = { itemId = 12760, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12761] = { itemId = 12761, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12762] = { itemId = 12762, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12763] = { itemId = 12763, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12764] = { itemId = 12764, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12765] = { itemId = 12765, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12766] = { itemId = 12766, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12767] = { itemId = 12767, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12768] = { itemId = 12768, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12769] = { itemId = 12769, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12770] = { itemId = 12770, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12771] = { itemId = 12771, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12772] = { itemId = 12772, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12773] = { itemId = 12773, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12774] = { itemId = 12774, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12775] = { itemId = 12775, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12776] = { itemId = 12776, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12777] = { itemId = 12777, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12778] = { itemId = 12778, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12779] = { itemId = 12779, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12780] = { itemId = 12780, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds [12781] = { itemId = 12781, msg = "You are gathering some spiderweb cloud shreds. But you become entangled.", storage = Storage.Kilmaresh.Eighth.Tefrit, getValue = 2, - addItemId = 31339 + addItemId = 31339, }, -- Spider Cloud Shreds } @@ -272,8 +272,7 @@ function scissorsfun.onUse(player, item, fromPosition, target, toPosition, isHot local key = config[target.itemid] if key then if player:getStorageValue(key.storage) == key.getValue then - if table.contains({ key.itemId - }, target.itemid) then + if table.contains({ key.itemId }, target.itemid) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, key.msg) player:addItem(key.addItemId, 1) end diff --git a/data-otservbr-global/scripts/actions/quests/koshei_amulet/bag.lua b/data-otservbr-global/scripts/actions/quests/koshei_amulet/bag.lua index 402b9d7a479..3fb0be67266 100644 --- a/data-otservbr-global/scripts/actions/quests/koshei_amulet/bag.lua +++ b/data-otservbr-global/scripts/actions/quests/koshei_amulet/bag.lua @@ -11,11 +11,11 @@ Then it was discovered that he had built a tower south of the mountains. It is u local kosheiBag = Action() function kosheiBag.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if (player:getStorageValue(483293) == -1) then + if player:getStorageValue(483293) == -1 then local bag = player:addItem(2853, 1) - if (bag) then + if bag then local document = bag:addItem(2834, 1) - if (document) then + if document then document:setAttribute(ITEM_ATTRIBUTE_NAME, "Famous Inhabitants of Darashia, Page 2") document:setAttribute(ITEM_ATTRIBUTE_TEXT, documentContent) end diff --git a/data-otservbr-global/scripts/actions/quests/koshei_amulet/switch.lua b/data-otservbr-global/scripts/actions/quests/koshei_amulet/switch.lua index d2caf38ec91..82e14341ea5 100644 --- a/data-otservbr-global/scripts/actions/quests/koshei_amulet/switch.lua +++ b/data-otservbr-global/scripts/actions/quests/koshei_amulet/switch.lua @@ -3,7 +3,7 @@ local config = { { position = Position(33286, 32444, 8), itemId = 2063 }, { position = Position(33276, 32444, 8), itemId = 2062 }, { position = Position(33278, 32450, 8), itemId = 2062 }, - { position = Position(33284, 32450, 8), itemId = 2062 } + { position = Position(33284, 32450, 8), itemId = 2062 }, } local coffinPosition = Position(33273, 32458, 8) @@ -28,7 +28,7 @@ function kosheiSwitch.onUse(player, item, fromPosition, target, toPosition, isHo end if not statuesInOrder or Tile(coffinPosition):getItemById(167) then - player:say('Nothing happens', TALKTYPE_MONSTER_SAY, false, player, toPosition) + player:say("Nothing happens", TALKTYPE_MONSTER_SAY, false, player, toPosition) return true end @@ -36,7 +36,7 @@ function kosheiSwitch.onUse(player, item, fromPosition, target, toPosition, isHo if coffinItem then coffinItem:transform(167) addEvent(revertCoffin, 2 * 60 * 1000) - player:say('CLICK', TALKTYPE_MONSTER_SAY, false, player, coffinPosition) + player:say("CLICK", TALKTYPE_MONSTER_SAY, false, player, coffinPosition) end return true end diff --git a/data-otservbr-global/scripts/actions/quests/lions_rock/lions_rock.lua b/data-otservbr-global/scripts/actions/quests/lions_rock/lions_rock.lua index 5160d908fbd..cb945df5a47 100644 --- a/data-otservbr-global/scripts/actions/quests/lions_rock/lions_rock.lua +++ b/data-otservbr-global/scripts/actions/quests/lions_rock/lions_rock.lua @@ -1,13 +1,13 @@ local lionsRockSanctuaryRockId = 1852 local rewards = { - 'emerald bangle', - 'giant shimmering pearl', - 'gold ingot', - 'green gem', - 'red gem', + "emerald bangle", + "giant shimmering pearl", + "gold ingot", + "green gem", + "red gem", "lion's heart", - 'yellow gem' + "yellow gem", } local tests = { @@ -17,7 +17,7 @@ local tests = { pagodaPosition = { x = 33134, y = 32289, z = 8 }, item = 9634, message = "You have sacrificed a cobra tongue at an ancient statue. The light in the small pyramid nearby begins to shine.", - effect = CONST_ME_BLOCKHIT + effect = CONST_ME_BLOCKHIT, }, { storage = Storage.LionsRock.OuterSanctum.LionsBeauty, @@ -25,7 +25,7 @@ local tests = { pagodaPosition = { x = 33136, y = 32369, z = 8 }, item = 21389, message = "You burnt a lion's mane flower. The light in the small pyramid nearby begins to shine.", - effect = CONST_ME_REDSMOKE + effect = CONST_ME_REDSMOKE, }, { storage = Storage.LionsRock.OuterSanctum.LionsTears, @@ -34,8 +34,8 @@ local tests = { item = 21466, message = "You have purified a sacret pedestal with holy water. You have now passed the last test\z to enter thge inner sanctum.", - effect = CONST_ME_LOSEENERGY - } + effect = CONST_ME_LOSEENERGY, + }, } -- Lions rock sacrifices @@ -86,7 +86,9 @@ function lionsGetLionsMane.onUse(player, item, fromPosition, target, toPosition, player:setStorageValue(Storage.LionsRock.Questline, math.max(player:getStorageValue(Storage.LionsRock.Questline), 1)) player:setStorageValue(Storage.TibiaTales.DefaultStart, 1) item:transform(21935) - addEvent(function() item:transform(21388) end, 60 * 1000) + addEvent(function() + item:transform(21388) + end, 60 * 1000) return true end @@ -97,7 +99,7 @@ lionsGetLionsMane:register() local lionsGetHolyWater = Action() function lionsGetHolyWater.onUse(player, item, fromPosition, target, toPosition, isHotkey) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You took some holy water from the sacred well.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You took some holy water from the sacred well.") player:addItem(21466, 1) player:setStorageValue(Storage.LionsRock.Questline, math.max(player:getStorageValue(Storage.LionsRock.Questline), 1)) player:setStorageValue(Storage.TibiaTales.DefaultStart, 1) @@ -112,7 +114,7 @@ local lionsRockFountain = Action() function lionsRockFountain.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.LionsRock.Time) < os.time() then - local reward = '' + local reward = "" if player:hasMount(40) then repeat reward = math.random(1, #rewards) @@ -120,8 +122,7 @@ function lionsRockFountain.onUse(player, item, fromPosition, target, toPosition, else reward = math.random(1, #rewards) end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "Something sparkles in the fountain's water. You draw out a " .. rewards[reward] .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Something sparkles in the fountain's water. You draw out a " .. rewards[reward] .. ".") player:getPosition():sendMagicEffect(CONST_ME_HOLYAREA) player:addAchievement("Lion's Den Explorer") item:transform(lionsRockSanctuaryRockId) @@ -129,8 +130,7 @@ function lionsRockFountain.onUse(player, item, fromPosition, target, toPosition, player:setStorageValue(Storage.LionsRock.Time, os.time() + 24 * 60 * 60) player:setStorageValue(Storage.LionsRock.Questline, 11) else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - 'At the moment there is neither a treasure nor anything else in the fountain. Perhaps you might return later.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "At the moment there is neither a treasure nor anything else in the fountain. Perhaps you might return later.") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/liquid_black/seashell_key.lua b/data-otservbr-global/scripts/actions/quests/liquid_black/seashell_key.lua index bfddcbf8f52..12c0a0019c7 100644 --- a/data-otservbr-global/scripts/actions/quests/liquid_black/seashell_key.lua +++ b/data-otservbr-global/scripts/actions/quests/liquid_black/seashell_key.lua @@ -9,8 +9,7 @@ function seashellKey.onUse(player, item, fromPosition, target, toPosition, isHot local bookChance = math.random(0, 100) if bookChance < 85 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - 'You turn the key in the small lock at the side of the shelf and... the key breaks. Other than that absolutely nothing happens.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You turn the key in the small lock at the side of the shelf and... the key breaks. Other than that absolutely nothing happens.") item:remove(1) return true end @@ -23,8 +22,7 @@ function seashellKey.onUse(player, item, fromPosition, target, toPosition, isHot else player:addItem(14175) end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - 'A hidden stash appears the very moment you turn the key. Unfortunately the key breaks as you attempt to remove it from the lock.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "A hidden stash appears the very moment you turn the key. Unfortunately the key breaks as you attempt to remove it from the lock.") item:remove(1) return true end diff --git a/data-otservbr-global/scripts/actions/quests/lower_roshamuul/bone.lua b/data-otservbr-global/scripts/actions/quests/lower_roshamuul/bone.lua index 7ad571fc213..9098454b642 100644 --- a/data-otservbr-global/scripts/actions/quests/lower_roshamuul/bone.lua +++ b/data-otservbr-global/scripts/actions/quests/lower_roshamuul/bone.lua @@ -10,13 +10,13 @@ function lowerRoshamuulBone.onUse(player, item, fromPosition, target, toPosition local rand = math.random(1, 100) if item.itemid == 20179 then if rand <= 20 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Amidst the pile of various bones you find large, hollow part, similar to a pipe.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Amidst the pile of various bones you find large, hollow part, similar to a pipe.") player:addItem(20055, 1) item:transform(10336, 20179) addEvent(revertBone, 120000, toPosition, 10336, 20179) toPosition:sendMagicEffect(3) else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You ransack the pile but fail to find any useful parts.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You ransack the pile but fail to find any useful parts.") item:transform(10336, 20179) addEvent(revertBone, 120000, toPosition, 10336, 20179) toPosition:sendMagicEffect(3) diff --git a/data-otservbr-global/scripts/actions/quests/lower_roshamuul/chalk.lua b/data-otservbr-global/scripts/actions/quests/lower_roshamuul/chalk.lua index ab119de251b..8101ea76ff6 100644 --- a/data-otservbr-global/scripts/actions/quests/lower_roshamuul/chalk.lua +++ b/data-otservbr-global/scripts/actions/quests/lower_roshamuul/chalk.lua @@ -3,7 +3,7 @@ local fineChalk = { { x = 33199, y = 31762, z = 4 }, { x = 33199, y = 31761, z = 4 }, { x = 33200, y = 31761, z = 4 }, - { x = 33200, y = 31760, z = 4 } + { x = 33200, y = 31760, z = 4 }, } local lowerRoshamuulChalk = Action() diff --git a/data-otservbr-global/scripts/actions/quests/lower_roshamuul/mixture.lua b/data-otservbr-global/scripts/actions/quests/lower_roshamuul/mixture.lua index 25baecaa4ae..9ba1ecf88cb 100644 --- a/data-otservbr-global/scripts/actions/quests/lower_roshamuul/mixture.lua +++ b/data-otservbr-global/scripts/actions/quests/lower_roshamuul/mixture.lua @@ -1,6 +1,6 @@ local buckets = { [20053] = 20054, - [20054] = 20053 + [20054] = 20053, } local lowerRoshamuulMixtune = Action() diff --git a/data-otservbr-global/scripts/actions/quests/lower_roshamuul/resonance_chamber.lua b/data-otservbr-global/scripts/actions/quests/lower_roshamuul/resonance_chamber.lua index 44bd9e2745c..2d7c90a74c2 100644 --- a/data-otservbr-global/scripts/actions/quests/lower_roshamuul/resonance_chamber.lua +++ b/data-otservbr-global/scripts/actions/quests/lower_roshamuul/resonance_chamber.lua @@ -4,17 +4,17 @@ local config = { position = { Position(33637, 32516, 5), -- Top Left Position(33664, 32537, 5), -- botton Right - Position(33650, 32527, 5) -- Center + Position(33650, 32527, 5), -- Center }, raid = { [1] = { "silencer", math.random(8, 15) }, [2] = { "silencer", math.random(11, 18) }, [3] = { "silencer", math.random(8, 15) }, - [4] = { "sight of surrender", math.random(3, 8) } + [4] = { "sight of surrender", math.random(3, 8) }, }, globalEventTime = 30 * 60 * 1000, -- [30min] waiting time to get started again timeBetweenraid = 1 * 60 * 1000, -- [1min] Waiting time between each raid - cleanraid = true -- Clean zone after globalEventTime + cleanraid = true, -- Clean zone after globalEventTime } local function raids(monster) @@ -25,7 +25,9 @@ local function raids(monster) local pos = Position(randX, randY, randZ) local tile = Tile(pos) - if not tile then return false end + if not tile then + return false + end if tile:isWalkable(true, false, false, false, true) then Game.createMonster(monster, Position(randX, randY, randZ)) @@ -62,11 +64,11 @@ function lowerRoshamuulChamber.onUse(cid, item, fromPosition, itemEx, toPosition end end if not hasPlayer then - player:sendCancelMessage('Use on Silencer Plateau is located in the south-eastern part of Roshamuul') + player:sendCancelMessage("Use on Silencer Plateau is located in the south-eastern part of Roshamuul") return true end if hasMonsters then - player:sendCancelMessage('You need kill all monsters') + player:sendCancelMessage("You need kill all monsters") return true end @@ -98,7 +100,7 @@ function lowerRoshamuulChamber.onUse(cid, item, fromPosition, itemEx, toPosition end item:remove(1) else - player:sendCancelMessage('You need to wait') + player:sendCancelMessage("You need to wait") end end diff --git a/data-otservbr-global/scripts/actions/quests/marapur/boss_lever_timira.lua b/data-otservbr-global/scripts/actions/quests/marapur/boss_lever_timira.lua index 03b133393ee..7b146fcf444 100644 --- a/data-otservbr-global/scripts/actions/quests/marapur/boss_lever_timira.lua +++ b/data-otservbr-global/scripts/actions/quests/marapur/boss_lever_timira.lua @@ -13,7 +13,7 @@ local config = { }, specPos = { from = Position(33803, 32690, 9), - to = Position(33828, 32715, 9) + to = Position(33828, 32715, 9), }, exit = Position(33810, 32699, 8), storage = Storage.Quest.U12_90.WithinTheTides.TimiraTimer, diff --git a/data-otservbr-global/scripts/actions/quests/marapur/teleports_timira.lua b/data-otservbr-global/scripts/actions/quests/marapur/teleports_timira.lua index 8cd0a2322c5..a2ad0773c2e 100644 --- a/data-otservbr-global/scripts/actions/quests/marapur/teleports_timira.lua +++ b/data-otservbr-global/scripts/actions/quests/marapur/teleports_timira.lua @@ -4,7 +4,6 @@ local positions = { { tptimiraPos = { x = 33802, y = 32700, z = 8 }, tpPos = { x = 33804, y = 32702, z = 7 } }, { tptimiraPos = { x = 33816, y = 32710, z = 9 }, tpPos = { x = 33810, y = 32699, z = 8 } }, - } local TpTimira = MoveEvent() diff --git a/data-otservbr-global/scripts/actions/quests/oramond/chavis_tasks/to_take_roots.lua b/data-otservbr-global/scripts/actions/quests/oramond/chavis_tasks/to_take_roots.lua index 352ea9bd4b1..bf827c7e4f3 100644 --- a/data-otservbr-global/scripts/actions/quests/oramond/chavis_tasks/to_take_roots.lua +++ b/data-otservbr-global/scripts/actions/quests/oramond/chavis_tasks/to_take_roots.lua @@ -10,7 +10,7 @@ function toTakeRoots.onUse(player, item, fromPosition, target, toPosition, isHot local rand = math.random(1, 100) if item.itemid == 21104 then if rand <= 50 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You successfully harvest some juicy roots.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You successfully harvest some juicy roots.") player:addItem(21291, 1) item:transform(item.itemid + 2) addEvent(revertRoot, 120000, toPosition, 21106, 21104) @@ -21,18 +21,16 @@ function toTakeRoots.onUse(player, item, fromPosition, target, toPosition, isHot if player:getStorageValue(Storage.Oramond.MissionToTakeRoots) <= 0 then player:setStorageValue(Storage.Oramond.MissionToTakeRoots, 1) end - player:setStorageValue(Storage.Oramond.HarvestedRootCount, - player:getStorageValue(Storage.Oramond.HarvestedRootCount) > 0 - and player:getStorageValue(Storage.Oramond.HarvestedRootCount) + 1 or 1) + player:setStorageValue(Storage.Oramond.HarvestedRootCount, player:getStorageValue(Storage.Oramond.HarvestedRootCount) > 0 and player:getStorageValue(Storage.Oramond.HarvestedRootCount) + 1 or 1) else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Your harvesting attempt destroyed more of the juicy roots than you could salvage.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your harvesting attempt destroyed more of the juicy roots than you could salvage.") item:transform(item.itemid + 2) addEvent(revertRoot, 120000, toPosition, 21106, 21104) toPosition:sendMagicEffect(CONST_ME_GREEN_RINGS) end elseif item.itemid == 21105 then if rand <= 50 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You successfully harvest some juicy roots.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You successfully harvest some juicy roots.") player:addItem(21291, 1) item:transform(item.itemid + 2) addEvent(revertRoot, 120000, toPosition, 21107, 21105) @@ -43,17 +41,15 @@ function toTakeRoots.onUse(player, item, fromPosition, target, toPosition, isHot if player:getStorageValue(Storage.Oramond.MissionToTakeRoots) <= 0 then player:setStorageValue(Storage.Oramond.MissionToTakeRoots, 1) end - player:setStorageValue(Storage.Oramond.HarvestedRootCount, - player:getStorageValue(Storage.Oramond.HarvestedRootCount) > 0 - and player:getStorageValue(Storage.Oramond.HarvestedRootCount) + 1 or 1) + player:setStorageValue(Storage.Oramond.HarvestedRootCount, player:getStorageValue(Storage.Oramond.HarvestedRootCount) > 0 and player:getStorageValue(Storage.Oramond.HarvestedRootCount) + 1 or 1) else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Your harvesting attempt destroyed more of the juicy roots than you could salvage.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your harvesting attempt destroyed more of the juicy roots than you could salvage.") item:transform(item.itemid + 2) addEvent(revertRoot, 120000, toPosition, 21107, 21105) toPosition:sendMagicEffect(CONST_ME_GREEN_RINGS) end elseif item.itemid == 21106 or item.itemid == 21107 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'This root has already been harvested, nothing to gain here.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "This root has already been harvested, nothing to gain here.") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/oramond/glooth_fairy_lever.lua b/data-otservbr-global/scripts/actions/quests/oramond/glooth_fairy_lever.lua index 5b227b90bad..1f8ece85ae5 100644 --- a/data-otservbr-global/scripts/actions/quests/oramond/glooth_fairy_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/oramond/glooth_fairy_lever.lua @@ -2,9 +2,9 @@ local function removeBosst(fromArea1, fromArea2, bossName) for x = fromArea1.x, fromArea2.x do for y = fromArea1.y, fromArea2.y do for z = fromArea1.z, fromArea2.z do - if (getTopCreature({ x = x, y = y, z = z, stackpos = 255 }).uid > 0) then - if (isMonster(getTopCreature({ x = x, y = y, z = z, stackpos = 255 }).uid)) then - if (string.lower(getCreatureName(getTopCreature({ x = x, y = y, z = z, stackpos = 255 }).uid)) == bossName) then + if getTopCreature({ x = x, y = y, z = z, stackpos = 255 }).uid > 0 then + if isMonster(getTopCreature({ x = x, y = y, z = z, stackpos = 255 }).uid) then + if string.lower(getCreatureName(getTopCreature({ x = x, y = y, z = z, stackpos = 255 }).uid)) == bossName then doRemoveCreature(getTopCreature({ x = x, y = y, z = z, stackpos = 255 }).uid) end end @@ -57,7 +57,7 @@ function oramondGloothLever.onUse(player, item, fromPosition, target, toPosition spec:remove() end setGlobalStorageValue(18081, os.time() + 15 * 60) - player:say("Everyone in this place will be teleported into Glooth Fairy\'s hideout in one minute. No way back!!!", TALKTYPE_MONSTER_SAY) + player:say("Everyone in this place will be teleported into Glooth Fairy's hideout in one minute. No way back!!!", TALKTYPE_MONSTER_SAY) addEvent(PrepareEnter, 60 * 1000) end diff --git a/data-otservbr-global/scripts/actions/quests/oramond/the_glooth_brothers_tasks/the_ancient_sewers.lua b/data-otservbr-global/scripts/actions/quests/oramond/the_glooth_brothers_tasks/the_ancient_sewers.lua index 38944f99dbd..977ab183391 100644 --- a/data-otservbr-global/scripts/actions/quests/oramond/the_glooth_brothers_tasks/the_ancient_sewers.lua +++ b/data-otservbr-global/scripts/actions/quests/oramond/the_glooth_brothers_tasks/the_ancient_sewers.lua @@ -10,7 +10,7 @@ end local config = { [21039] = { itemGerator = 21792, itemTransform = 21039 }, -- Gerator 1 - [21040] = { itemGerator = 21792, itemTransform = 21040 } -- Gerator 2 + [21040] = { itemGerator = 21792, itemTransform = 21040 }, -- Gerator 2 } local theAncientSewers = Action() @@ -19,9 +19,9 @@ function theAncientSewers.onUse(player, item, fromPosition, target, toPosition, local gerator = config[item.itemid] if gerator then local chance = math.random(1, 100) - if ((chance >= 1) and (chance < 50)) then + if (chance >= 1) and (chance < 50) then player:say(" There This piece fixed.", TALKTYPE_ORANGE_1) - elseif ((chance >= 50) and (chance < 100)) then + elseif (chance >= 50) and (chance < 100) then player:say(" This should do it.", TALKTYPE_ORANGE_1) end diff --git a/data-otservbr-global/scripts/actions/quests/others/black_knight_quest.lua b/data-otservbr-global/scripts/actions/quests/others/black_knight_quest.lua index 54362dee5bd..b4f763c8672 100644 --- a/data-otservbr-global/scripts/actions/quests/others/black_knight_quest.lua +++ b/data-otservbr-global/scripts/actions/quests/others/black_knight_quest.lua @@ -7,7 +7,7 @@ function othersBlackKnight.onUse(player, item, fromPosition, target, toPosition, player:setStorageValue(Storage.QuestChests.BlackKnightTreeKey, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a silver key.") else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The ' .. ItemType(item.itemid):getName() .. ' is empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The " .. ItemType(item.itemid):getName() .. " is empty.") end end diff --git a/data-otservbr-global/scripts/actions/quests/others/calassa_comb_door.lua b/data-otservbr-global/scripts/actions/quests/others/calassa_comb_door.lua index b832c500b63..4d84988d59d 100644 --- a/data-otservbr-global/scripts/actions/quests/others/calassa_comb_door.lua +++ b/data-otservbr-global/scripts/actions/quests/others/calassa_comb_door.lua @@ -5,7 +5,7 @@ function othersCalassa.onUse(player, item, fromPosition, target, toPosition, isH end if player:getStorageValue(Storage.OutfitQuest.firstOrientalAddon) ~= 1 or player:hasOutfit(player:getSex() == PLAYERSEX_FEMALE and 150 or 146, 1) then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The door seems to be sealed against unwanted intruders.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The door seems to be sealed against unwanted intruders.") return true end diff --git a/data-otservbr-global/scripts/actions/quests/others/desert_dungeon_lever_quest.lua b/data-otservbr-global/scripts/actions/quests/others/desert_dungeon_lever_quest.lua index 9a272b9d231..1361a521185 100644 --- a/data-otservbr-global/scripts/actions/quests/others/desert_dungeon_lever_quest.lua +++ b/data-otservbr-global/scripts/actions/quests/others/desert_dungeon_lever_quest.lua @@ -4,29 +4,29 @@ local config = { toPosition = Position(32671, 32071, 8), sacrificePosition = Position(32679, 32089, 8), sacrificeId = 3059, - vocationId = VOCATION.BASE_ID.SORCERER + vocationId = VOCATION.BASE_ID.SORCERER, }, { fromPosition = Position(32669, 32089, 8), toPosition = Position(32673, 32071, 8), sacrificePosition = Position(32667, 32089, 8), sacrificeId = 3585, - vocationId = VOCATION.BASE_ID.DRUID + vocationId = VOCATION.BASE_ID.DRUID, }, { fromPosition = Position(32673, 32085, 8), toPosition = Position(32670, 32071, 8), sacrificePosition = Position(32673, 32083, 8), sacrificeId = 3349, - vocationId = VOCATION.BASE_ID.PALADIN + vocationId = VOCATION.BASE_ID.PALADIN, }, { fromPosition = Position(32673, 32093, 8), toPosition = Position(32672, 32071, 8), sacrificePosition = Position(32673, 32094, 8), sacrificeId = 3264, - vocationId = VOCATION.BASE_ID.KNIGHT - } + vocationId = VOCATION.BASE_ID.KNIGHT, + }, } local othersDesert = Action() @@ -43,26 +43,26 @@ function othersDesert.onUse(player, item, fromPosition, target, toPosition, isHo for i = 1, #config do local creature = Tile(config[i].fromPosition):getTopCreature() if not creature or not creature:isPlayer() then - player:sendCancelMessage('You need one player of each vocation for this quest.') + player:sendCancelMessage("You need one player of each vocation for this quest.") position:sendMagicEffect(CONST_ME_POFF) return true end local vocationId = creature:getVocation():getBaseId() if vocationId ~= config[i].vocationId then - player:sendCancelMessage('You need one player of each vocation for this quest.') + player:sendCancelMessage("You need one player of each vocation for this quest.") position:sendMagicEffect(CONST_ME_POFF) return true end local sacrificeItem = Tile(config[i].sacrificePosition):getItemById(config[i].sacrificeId) if not sacrificeItem then - player:sendCancelMessage(creature:getName() .. ' is missing ' .. creature:getPossessivePronoun() .. ' sacrifice on the altar.') + player:sendCancelMessage(creature:getName() .. " is missing " .. creature:getPossessivePronoun() .. " sacrifice on the altar.") position:sendMagicEffect(CONST_ME_POFF) return true end - players[#players+1] = creature + players[#players + 1] = creature end for i = 1, #players do diff --git a/data-otservbr-global/scripts/actions/quests/others/fire_bug.lua b/data-otservbr-global/scripts/actions/quests/others/fire_bug.lua index dedcb18e16c..e75bebf26bd 100644 --- a/data-otservbr-global/scripts/actions/quests/others/fire_bug.lua +++ b/data-otservbr-global/scripts/actions/quests/others/fire_bug.lua @@ -23,7 +23,7 @@ local positions = { Position(32849, 32231, 9), Position(32850, 32231, 9), Position(32848, 32232, 9), - Position(32849, 32232, 9) + Position(32849, 32232, 9), } local othersFireBug = Action() @@ -36,7 +36,7 @@ function othersFireBug.onUse(player, item, fromPosition, target, toPosition, isH player:setStorageValue(Storage.FerumbrasAscension.BasinCounter, 0) end if player:getStorageValue(Storage.FerumbrasAscension.BasinCounter) == 7 then - player:say('You ascended the last basin.', TALKTYPE_MONSTER_SAY) + player:say("You ascended the last basin.", TALKTYPE_MONSTER_SAY) item:remove() player:setStorageValue(Storage.FerumbrasAscension.MonsterDoor, 1) end @@ -104,7 +104,7 @@ function othersFireBug.onUse(player, item, fromPosition, target, toPosition, isH return true elseif random == 1 then --it explode on the user 1% chance doTargetCombatHealth(0, player, COMBAT_FIREDAMAGE, -5, -5, CONST_ME_HITBYFIRE) - player:say('OUCH!', TALKTYPE_MONSTER_SAY) + player:say("OUCH!", TALKTYPE_MONSTER_SAY) item:remove(1) return true else diff --git a/data-otservbr-global/scripts/actions/quests/others/gooey_mass.lua b/data-otservbr-global/scripts/actions/quests/others/gooey_mass.lua index 67b38c09eb6..ffc2fed37f2 100644 --- a/data-otservbr-global/scripts/actions/quests/others/gooey_mass.lua +++ b/data-otservbr-global/scripts/actions/quests/others/gooey_mass.lua @@ -1,68 +1,68 @@ local UniqueTable = { [40011] = { storage = Storage.InsectoidCell.Reward1, - reward = 14172 + reward = 14172, }, [40012] = { storage = Storage.InsectoidCell.Reward2, - reward = 14172 + reward = 14172, }, [40013] = { storage = Storage.InsectoidCell.Reward3, - reward = 14172 + reward = 14172, }, [40014] = { storage = Storage.InsectoidCell.Reward4, - reward = 14172 + reward = 14172, }, [40015] = { storage = Storage.InsectoidCell.Reward5, - reward = 14172 + reward = 14172, }, [40016] = { storage = Storage.InsectoidCell.Reward6, - reward = 14172 + reward = 14172, }, [40017] = { storage = Storage.InsectoidCell.Reward7, - reward = 14172 + reward = 14172, }, [40018] = { storage = Storage.InsectoidCell.Reward8, - reward = 14172 + reward = 14172, }, [40019] = { storage = Storage.InsectoidCell.Reward9, - reward = 14172 + reward = 14172, }, [40020] = { storage = Storage.InsectoidCell.Reward10, - reward = 14172 + reward = 14172, }, [40021] = { storage = Storage.InsectoidCell.Reward11, - reward = 14172 + reward = 14172, }, [40022] = { storage = Storage.InsectoidCell.Reward12, - reward = 14172 + reward = 14172, }, [40023] = { storage = Storage.InsectoidCell.Reward13, - reward = 14172 + reward = 14172, }, [40024] = { storage = Storage.InsectoidCell.Reward14, - reward = 14172 + reward = 14172, }, [40025] = { storage = Storage.InsectoidCell.Reward15, - reward = 14172 + reward = 14172, }, [40026] = { storage = Storage.InsectoidCell.Reward16, - reward = 14172 - } + reward = 14172, + }, } local gooeyMass = Action() diff --git a/data-otservbr-global/scripts/actions/quests/others/hellgate_lever.lua b/data-otservbr-global/scripts/actions/quests/others/hellgate_lever.lua index 5952db6cd16..81d3c8e7f52 100644 --- a/data-otservbr-global/scripts/actions/quests/others/hellgate_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/others/hellgate_lever.lua @@ -2,11 +2,11 @@ local config = { bridgePositions = { Position(32627, 31699, 10), Position(32628, 31699, 10), - Position(32629, 31699, 10) + Position(32629, 31699, 10), }, removeCreaturePosition = Position(32630, 31699, 10), bridgeID = 5770, - waterID = 622 + waterID = 622, } local othersHellGate = Action() diff --git a/data-otservbr-global/scripts/actions/quests/others/holy_water.lua b/data-otservbr-global/scripts/actions/quests/others/holy_water.lua index 071c434cc68..7e8c108089e 100644 --- a/data-otservbr-global/scripts/actions/quests/others/holy_water.lua +++ b/data-otservbr-global/scripts/actions/quests/others/holy_water.lua @@ -2,7 +2,7 @@ local doorPosition = Position(32260, 32791, 7) local shadowNexusPosition = Position(33115, 31702, 12) local effectPositions = { Position(33113, 31702, 12), - Position(33116, 31702, 12) + Position(33116, 31702, 12), } local function revertItem(position, itemId, transformId) @@ -35,12 +35,12 @@ local storages = { [4020] = Storage.TibiaTales.RestInHallowedGround.Graves.Grave13, [4021] = Storage.TibiaTales.RestInHallowedGround.Graves.Grave14, [4022] = Storage.TibiaTales.RestInHallowedGround.Graves.Grave15, - [4023] = Storage.TibiaTales.RestInHallowedGround.Graves.Grave16 + [4023] = Storage.TibiaTales.RestInHallowedGround.Graves.Grave16, } local config = { antler_talisman = 22008, - sacred_antler_talisman = 22009 + sacred_antler_talisman = 22009, } local othersHolyWater = Action() @@ -69,7 +69,7 @@ function othersHolyWater.onUse(player, item, fromPosition, target, toPosition, i return true end - Game.createMonster('Pirate Ghost', toPosition) + Game.createMonster("Pirate Ghost", toPosition) item:remove(1) -- The Inquisition Questlog- 'Mission 4: The Haunted Ruin' @@ -86,8 +86,7 @@ function othersHolyWater.onUse(player, item, fromPosition, target, toPosition, i if target.actionid == 4007 and target.actionid == 4024 then local graveStorage = storages[target.actionid] - if player:getStorageValue(graveStorage) == 1 - or player:getStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline) ~= 3 then + if player:getStorageValue(graveStorage) == 1 or player:getStorageValue(Storage.TibiaTales.RestInHallowedGround.Questline) ~= 3 then return false end @@ -115,7 +114,7 @@ function othersHolyWater.onUse(player, item, fromPosition, target, toPosition, i target:remove() newShadowNexus:decay() end - nexusMessage(player, player:getName() .. ' damaged the shadow nexus! You can\'t damage it while it\'s burning.') + nexusMessage(player, player:getName() .. " damaged the shadow nexus! You can't damage it while it's burning.") toPosition:sendMagicEffect(CONST_ME_ENERGYHIT) elseif target.itemid == 7931 then if Game.getStorageValue(GlobalStorage.Inquisition) > 0 then @@ -128,7 +127,7 @@ function othersHolyWater.onUse(player, item, fromPosition, target, toPosition, i for i = 1, #effectPositions do effectPositions[i]:sendMagicEffect(CONST_ME_HOLYAREA) end - nexusMessage(player, player:getName() .. ' destroyed the shadow nexus! In 10 seconds it will return to its original state.') + nexusMessage(player, player:getName() .. " destroyed the shadow nexus! In 10 seconds it will return to its original state.") item:remove(1) toPosition:sendMagicEffect(CONST_ME_HOLYAREA) else diff --git a/data-otservbr-global/scripts/actions/quests/others/life_ring_lever.lua b/data-otservbr-global/scripts/actions/quests/others/life_ring_lever.lua index 4c315948799..60c490b8ddd 100644 --- a/data-otservbr-global/scripts/actions/quests/others/life_ring_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/others/life_ring_lever.lua @@ -5,11 +5,11 @@ local config = { Position(32412, 32232, 10), Position(32410, 32231, 10), Position(32411, 32231, 10), - Position(32412, 32231, 10) + Position(32412, 32231, 10), }, removeCreaturePosition = Position(32409, 32231, 10), bridgeID = 5770, - waterID = 4610 + waterID = 4610, } local othersLifeRing = Action() diff --git a/data-otservbr-global/scripts/actions/quests/others/serpentine_tower_lever.lua b/data-otservbr-global/scripts/actions/quests/others/serpentine_tower_lever.lua index 1f2b7226084..debc4358c36 100644 --- a/data-otservbr-global/scripts/actions/quests/others/serpentine_tower_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/others/serpentine_tower_lever.lua @@ -2,7 +2,7 @@ local walls = { { position = Position(33148, 32867, 9), relocatePosition = Position(33148, 32869, 9) }, { position = Position(33148, 32868, 9), relocatePosition = Position(33148, 32869, 9) }, { position = Position(33149, 32867, 9), relocatePosition = Position(33149, 32869, 9) }, - { position = Position(33149, 32868, 9), relocatePosition = Position(33149, 32869, 9) } + { position = Position(33149, 32868, 9), relocatePosition = Position(33149, 32869, 9) }, } local othersSerpentineLever = Action() diff --git a/data-otservbr-global/scripts/actions/quests/others/steal_from_thieves.lua b/data-otservbr-global/scripts/actions/quests/others/steal_from_thieves.lua index 39b4c164617..c6ba00dbd90 100644 --- a/data-otservbr-global/scripts/actions/quests/others/steal_from_thieves.lua +++ b/data-otservbr-global/scripts/actions/quests/others/steal_from_thieves.lua @@ -6,14 +6,14 @@ local othersSteal = Action() function othersSteal.onUse(player, item, fromPosition, target, toPosition, isHotkey) if chests[item.uid] then if player:getStorageValue(Storage.QuestChests.StealFromThieves) > 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'It\'s empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "It's empty.") return true end local chest = chests[item.uid] player:addItem(chest.itemid, 1) player:setStorageValue(Storage.QuestChests.StealFromThieves, 2) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You found a bag.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You found a bag.") end return true diff --git a/data-otservbr-global/scripts/actions/quests/pits_of_inferno/bazir_mirror.lua b/data-otservbr-global/scripts/actions/quests/pits_of_inferno/bazir_mirror.lua index 39385cf62a8..c5b2c914013 100644 --- a/data-otservbr-global/scripts/actions/quests/pits_of_inferno/bazir_mirror.lua +++ b/data-otservbr-global/scripts/actions/quests/pits_of_inferno/bazir_mirror.lua @@ -1,13 +1,13 @@ local config = { [39511] = { fromPosition = Position(32739, 32392, 14), - toPosition = Position(32739, 32391, 14) + toPosition = Position(32739, 32391, 14), }, [39512] = { teleportPlayer = true, fromPosition = Position(32739, 32391, 14), - toPosition = Position(32739, 32392, 14) - } + toPosition = Position(32739, 32392, 14), + }, } local pitsOfInfernoBlackMirror = Action() @@ -20,7 +20,7 @@ function pitsOfInfernoBlackMirror.onUse(player, item, fromPosition, target, toPo if useItem.teleportPlayer then player:teleportTo(Position(32712, 32392, 13)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:say('Beauty has to be rewarded! Muahahaha!', TALKTYPE_MONSTER_SAY) + player:say("Beauty has to be rewarded! Muahahaha!", TALKTYPE_MONSTER_SAY) end local tapestry = Tile(useItem.fromPosition):getItemById(6433) diff --git a/data-otservbr-global/scripts/actions/quests/pits_of_inferno/fire_throne_lever.lua b/data-otservbr-global/scripts/actions/quests/pits_of_inferno/fire_throne_lever.lua index 2987cd26598..92f977e3aa3 100644 --- a/data-otservbr-global/scripts/actions/quests/pits_of_inferno/fire_throne_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/pits_of_inferno/fire_throne_lever.lua @@ -2,7 +2,7 @@ local lava = { Position(32912, 32209, 15), Position(32913, 32209, 15), Position(32912, 32210, 15), - Position(32913, 32210, 15) + Position(32913, 32210, 15), } local pitsOfInfernoFirstThroneLever = Action() diff --git a/data-otservbr-global/scripts/actions/quests/pits_of_inferno/fountain.lua b/data-otservbr-global/scripts/actions/quests/pits_of_inferno/fountain.lua index c42d1371410..c43445f1a49 100644 --- a/data-otservbr-global/scripts/actions/quests/pits_of_inferno/fountain.lua +++ b/data-otservbr-global/scripts/actions/quests/pits_of_inferno/fountain.lua @@ -6,9 +6,9 @@ function pitsOfInfernoFountain.onUse(player, item, fromPosition, target, toPosit player:addHealth(player:getMaxHealth()) player:addMana(player:getMaxMana()) - player:addAchievement('Fountain of Life') + player:addAchievement("Fountain of Life") player:setStorageValue(Storage.FountainOfLife, 1) - player:say('You feel very refreshed and relaxed.', TALKTYPE_MONSTER_SAY) + player:say("You feel very refreshed and relaxed.", TALKTYPE_MONSTER_SAY) return true end diff --git a/data-otservbr-global/scripts/actions/quests/pits_of_inferno/levers.lua b/data-otservbr-global/scripts/actions/quests/pits_of_inferno/levers.lua index 1ca4e10e3dd..97e7bbb2280 100644 --- a/data-otservbr-global/scripts/actions/quests/pits_of_inferno/levers.lua +++ b/data-otservbr-global/scripts/actions/quests/pits_of_inferno/levers.lua @@ -1,24 +1,24 @@ local text = { - [1] = 'first', - [2] = 'second', - [3] = 'third', - [4] = 'fourth', - [5] = 'fifth', - [6] = 'sixth', - [7] = 'seventh', - [8] = 'eighth', - [9] = 'ninth', - [10] = 'tenth', - [11] = 'eleventh', - [12] = 'twelfth', - [13] = 'thirteenth', - [14] = 'fourteenth', - [15] = 'fifteenth' + [1] = "first", + [2] = "second", + [3] = "third", + [4] = "fourth", + [5] = "fifth", + [6] = "sixth", + [7] = "seventh", + [8] = "eighth", + [9] = "ninth", + [10] = "tenth", + [11] = "eleventh", + [12] = "twelfth", + [13] = "thirteenth", + [14] = "fourteenth", + [15] = "fifteenth", } local stonePositions = { Position(32851, 32333, 12), - Position(32852, 32333, 12) + Position(32852, 32333, 12), } local function createStones() @@ -53,10 +53,10 @@ function pitsOfInfernoLevers.onUse(player, item, fromPosition, target, toPositio end Game.setStorageValue(GlobalStorage.PitsOfInfernoLevers, number) - player:say('You flipped the ' .. text[number] .. ' lever. Hurry up and find the next one!', TALKTYPE_MONSTER_SAY, false, player, toPosition) + player:say("You flipped the " .. text[number] .. " lever. Hurry up and find the next one!", TALKTYPE_MONSTER_SAY, false, player, toPosition) elseif item.uid == 2065 then if leverCount ~= 15 then - player:say('The final lever won\'t budge... yet.', TALKTYPE_MONSTER_SAY) + player:say("The final lever won't budge... yet.", TALKTYPE_MONSTER_SAY) return true end diff --git a/data-otservbr-global/scripts/actions/quests/pits_of_inferno/oil.lua b/data-otservbr-global/scripts/actions/quests/pits_of_inferno/oil.lua index 4e60192868c..7f0cb4002dd 100644 --- a/data-otservbr-global/scripts/actions/quests/pits_of_inferno/oil.lua +++ b/data-otservbr-global/scripts/actions/quests/pits_of_inferno/oil.lua @@ -18,7 +18,7 @@ function pitsOfInfernoOil.onUse(player, item, fromPosition, target, toPosition, end if not Tile(Position(32800, 32339, 11)):getItemById(2886, 7) then - player:say('The lever is creaking and rusty.', TALKTYPE_MONSTER_SAY) + player:say("The lever is creaking and rusty.", TALKTYPE_MONSTER_SAY) return true end diff --git a/data-otservbr-global/scripts/actions/quests/pits_of_inferno/walls.lua b/data-otservbr-global/scripts/actions/quests/pits_of_inferno/walls.lua index 8930acc37d9..42021087612 100644 --- a/data-otservbr-global/scripts/actions/quests/pits_of_inferno/walls.lua +++ b/data-otservbr-global/scripts/actions/quests/pits_of_inferno/walls.lua @@ -2,7 +2,7 @@ local pos = { [2025] = { x = 32831, y = 32333, z = 11 }, [2026] = { x = 32833, y = 32333, z = 11 }, [2027] = { x = 32835, y = 32333, z = 11 }, - [2028] = { x = 32837, y = 32333, z = 11 } + [2028] = { x = 32837, y = 32333, z = 11 }, } local function doRemoveFirewalls(fwPos) @@ -17,7 +17,7 @@ end local pitsOfInfernoWalls = Action() function pitsOfInfernoWalls.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if (item.itemid == 2772) then + if item.itemid == 2772 then doRemoveFirewalls(pos[item.uid]) Position(pos[item.uid]):sendMagicEffect(CONST_ME_FIREAREA) else diff --git a/data-otservbr-global/scripts/actions/quests/postman/waldos_posthorn.lua b/data-otservbr-global/scripts/actions/quests/postman/waldos_posthorn.lua index 270c294343c..17b032dadf8 100644 --- a/data-otservbr-global/scripts/actions/quests/postman/waldos_posthorn.lua +++ b/data-otservbr-global/scripts/actions/quests/postman/waldos_posthorn.lua @@ -5,7 +5,7 @@ function postmanWaldos.onUse(player, item, fromPosition, target, toPosition, isH player:addItem(3219, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You found Waldo's posthorn.") else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The dead human is empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The dead human is empty.") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/rottin_wood_and_married_men/corpse.lua b/data-otservbr-global/scripts/actions/quests/rottin_wood_and_married_men/corpse.lua index bae4bef325e..b7763edf1fd 100644 --- a/data-otservbr-global/scripts/actions/quests/rottin_wood_and_married_men/corpse.lua +++ b/data-otservbr-global/scripts/actions/quests/rottin_wood_and_married_men/corpse.lua @@ -1,6 +1,6 @@ local rottinWoodCorpse = Action() function rottinWoodCorpse.onUse(cid, item, fromPosition, itemEx, toPosition, isHotkey) - if (item.itemid == 12189) then + if item.itemid == 12189 then if (getPlayerStorageValue(cid, Storage.RottinWoodAndMaried.Mission03) == 5) and getPlayerStorageValue(cid, Storage.RottinWoodAndMaried.Corpse) < 4 then doCreatureSay(cid, "You take no more gold than you actually need and release the merchant who makes away the very second you remove the ropes.", TALKTYPE_ORANGE_1) doPlayerAddItem(cid, 3031, 100) diff --git a/data-otservbr-global/scripts/actions/quests/rottin_wood_and_married_men/trap.lua b/data-otservbr-global/scripts/actions/quests/rottin_wood_and_married_men/trap.lua index aeacf1b889b..02e2ef47cb9 100644 --- a/data-otservbr-global/scripts/actions/quests/rottin_wood_and_married_men/trap.lua +++ b/data-otservbr-global/scripts/actions/quests/rottin_wood_and_married_men/trap.lua @@ -35,15 +35,15 @@ end local rottinWoodtrap = Action() function rottinWoodtrap.onUse(cid, item, fromPosition, itemEx, toPosition, isHotkey) - if (item.itemid == 12186) then - if (itemEx.itemid == 10480) then + if item.itemid == 12186 then + if itemEx.itemid == 10480 then if (getPlayerStorageValue(cid, Storage.RottinWoodAndMaried.Mission03) == 5) and getPlayerStorageValue(cid, Storage.RottinWoodAndMaried.Trap) < 3 then doCreatureSay(cid, "You place the trap carefully on the ground. Between twigs and leaves it is almost invisible.", TALKTYPE_ORANGE_1) doRemoveItem(item.uid, 1) Game.createItem(12187, 1, toPosition) setPlayerStorageValue(cid, Storage.RottinWoodAndMaried.Trap, getPlayerStorageValue(cid, Storage.RottinWoodAndMaried.Trap) + 1) else - if (getPlayerStorageValue(cid, Storage.RottinWoodAndMaried.Trap) == 3) then + if getPlayerStorageValue(cid, Storage.RottinWoodAndMaried.Trap) == 3 then doCreatureSay(cid, "It looks like the merchants are about to arrive, better hide somewhere where you can see whats going on in the area.", TALKTYPE_ORANGE_1) doRemoveItem(item.uid, 1) Game.createItem(12187, 1, toPosition) diff --git a/data-otservbr-global/scripts/actions/quests/secret_library/brokul_lever.lua b/data-otservbr-global/scripts/actions/quests/secret_library/brokul_lever.lua index 80808894905..2f56fcc086a 100644 --- a/data-otservbr-global/scripts/actions/quests/secret_library/brokul_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/secret_library/brokul_lever.lua @@ -8,7 +8,10 @@ bossConfig = { playerStorage = 36000, teleportPosition = Position(33483, 31445, 15), centerRoomPosition = Position(33483, 31439, 15), - northRange = 15, eastRange = 15, southRange = 15, westRange = 15, + northRange = 15, + eastRange = 15, + southRange = 15, + westRange = 15, exit = Position(33522, 31468, 15), bossPosition = Position(33483, 31434, 15), time = 15, @@ -18,9 +21,9 @@ bossConfig = { [2] = Position(33521, 31465, 15), [3] = Position(33522, 31465, 15), [4] = Position(33523, 31465, 15), - [5] = Position(33524, 31465, 15) - } - } + [5] = Position(33524, 31465, 15), + }, + }, } local function resetBoss(bossConfig, bossId) @@ -42,7 +45,7 @@ function secretBrokul.onUse(player, item, fromPosition, target, toPosition, isHo return false end - if (getGlobalStorageValue(bossConfig.bossGlobalStorage) > 0) then + if getGlobalStorageValue(bossConfig.bossGlobalStorage) > 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "There is already a team inside. Please wait.") return true end @@ -57,20 +60,20 @@ function secretBrokul.onUse(player, item, fromPosition, target, toPosition, isHo if playerTile:getStorageValue(bossConfig.playerStorage) <= os.time() then table.insert(rPlayers, playerTile:getId()) else - errorMsg = 'One or more players have already entered in the last 20 hours.' + errorMsg = "One or more players have already entered in the last 20 hours." end else - errorMsg = 'All the players need to be level ' .. bossConfig.requiredLevel .. ' or higher.' + errorMsg = "All the players need to be level " .. bossConfig.requiredLevel .. " or higher." end end end end - if (#rPlayers >= bossConfig.minPlayersRequired) then + if #rPlayers >= bossConfig.minPlayersRequired then for _, pid in pairs(rPlayers) do local rplayer = Player(pid) if rplayer:isPlayer() then - rplayer:sendTextMessage(MESSAGE_EVENT_ADVANCE, ('You have %o minutes before you get kicked out.'):format(bossConfig.time)) + rplayer:sendTextMessage(MESSAGE_EVENT_ADVANCE, ("You have %o minutes before you get kicked out."):format(bossConfig.time)) bossConfig.playerPositions[_]:sendMagicEffect(CONST_ME_POFF) rplayer:teleportTo(bossConfig.teleportPosition) rplayer:setStorageValue(bossConfig.playerStorage, os.time() + (configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN))) diff --git a/data-otservbr-global/scripts/actions/quests/secret_library/ghulosh_lever.lua b/data-otservbr-global/scripts/actions/quests/secret_library/ghulosh_lever.lua index f27b4d25d9c..dcf90e0a0ed 100644 --- a/data-otservbr-global/scripts/actions/quests/secret_library/ghulosh_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/secret_library/ghulosh_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Ghulosh", - position = Position(32756, 32720, 10) + position = Position(32756, 32720, 10), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(32748, 32773, 10), teleport = Position(32756, 32729, 10), effect = CONST_ME_TELEPORT }, { pos = Position(32749, 32773, 10), teleport = Position(32756, 32729, 10), effect = CONST_ME_TELEPORT }, { pos = Position(32750, 32773, 10), teleport = Position(32756, 32729, 10), effect = CONST_ME_TELEPORT }, - { pos = Position(32751, 32773, 10), teleport = Position(32756, 32729, 10), effect = CONST_ME_TELEPORT } + { pos = Position(32751, 32773, 10), teleport = Position(32756, 32729, 10), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(32748, 32713, 10), - to = Position(32763, 32729, 10) + to = Position(32763, 32729, 10), }, exit = Position(32660, 32713, 13), - storage = Storage.Quest.U11_80.TheSecretLibrary.GhuloshTimer + storage = Storage.Quest.U11_80.TheSecretLibrary.GhuloshTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/secret_library/gorzindel_lever.lua b/data-otservbr-global/scripts/actions/quests/secret_library/gorzindel_lever.lua index c29dd715bac..082f94ef8a5 100644 --- a/data-otservbr-global/scripts/actions/quests/secret_library/gorzindel_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/secret_library/gorzindel_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Gorzindel", - position = Position(32687, 32715, 10) + position = Position(32687, 32715, 10), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(32748, 32749, 10), teleport = Position(32686, 32721, 10), effect = CONST_ME_TELEPORT }, { pos = Position(32749, 32749, 10), teleport = Position(32686, 32721, 10), effect = CONST_ME_TELEPORT }, { pos = Position(32747, 32750, 10), teleport = Position(32686, 32721, 10), effect = CONST_ME_TELEPORT }, - { pos = Position(32747, 32751, 10), teleport = Position(32686, 32721, 10), effect = CONST_ME_TELEPORT } + { pos = Position(32747, 32751, 10), teleport = Position(32686, 32721, 10), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(32680, 32711, 10), - to = Position(32695, 32726, 10) + to = Position(32695, 32726, 10), }, exit = Position(32660, 32734, 12), - storage = Storage.Quest.U11_80.TheSecretLibrary.GorzindelTimer + storage = Storage.Quest.U11_80.TheSecretLibrary.GorzindelTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/secret_library/library_entrances.lua b/data-otservbr-global/scripts/actions/quests/secret_library/library_entrances.lua index c95aaae2fab..7f2565746bc 100644 --- a/data-otservbr-global/scripts/actions/quests/secret_library/library_entrances.lua +++ b/data-otservbr-global/scripts/actions/quests/secret_library/library_entrances.lua @@ -13,7 +13,7 @@ local config = { { position = { x = 32750, y = 32696, z = 10 }, destination = { x = 32466, y = 32654, z = 12 } }, { position = { x = 32480, y = 32601, z = 15 }, destination = { x = 32673, y = 32738, z = 11 } }, -- scourge of oblivion { position = { x = 32672, y = 32736, z = 11 }, destination = { x = 32480, y = 32599, z = 15 } }, - { position = { x = 32726, y = 32748, z = 11 }, destination = { x = 32480, y = 32599, z = 15 } } + { position = { x = 32726, y = 32748, z = 11 }, destination = { x = 32480, y = 32599, z = 15 } }, } local libraryEntrances = MoveEvent() diff --git a/data-otservbr-global/scripts/actions/quests/secret_library/lokathmor_lever.lua b/data-otservbr-global/scripts/actions/quests/secret_library/lokathmor_lever.lua index 7bfbb6e0b7e..d63560f6fca 100644 --- a/data-otservbr-global/scripts/actions/quests/secret_library/lokathmor_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/secret_library/lokathmor_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Lokathmor", - position = Position(32751, 32689, 10) + position = Position(32751, 32689, 10), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(32722, 32749, 10), teleport = Position(32751, 32685, 10), effect = CONST_ME_TELEPORT }, { pos = Position(32723, 32749, 10), teleport = Position(32751, 32685, 10), effect = CONST_ME_TELEPORT }, { pos = Position(32724, 32749, 10), teleport = Position(32751, 32685, 10), effect = CONST_ME_TELEPORT }, - { pos = Position(32725, 32749, 10), teleport = Position(32751, 32685, 10), effect = CONST_ME_TELEPORT } + { pos = Position(32725, 32749, 10), teleport = Position(32751, 32685, 10), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(32742, 32681, 10), - to = Position(32758, 32696, 10) + to = Position(32758, 32696, 10), }, exit = Position(32466, 32654, 12), - storage = Storage.Quest.U11_80.TheSecretLibrary.LokathmorTimer + storage = Storage.Quest.U11_80.TheSecretLibrary.LokathmorTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/secret_library/mazzinor_lever.lua b/data-otservbr-global/scripts/actions/quests/secret_library/mazzinor_lever.lua index daaafaa3d53..4071002a863 100644 --- a/data-otservbr-global/scripts/actions/quests/secret_library/mazzinor_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/secret_library/mazzinor_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Mazzinor", - position = Position(32725, 32719, 10) + position = Position(32725, 32719, 10), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(32721, 32773, 10), teleport = Position(32725, 32728, 10), effect = CONST_ME_TELEPORT }, { pos = Position(32721, 32773, 10), teleport = Position(32725, 32728, 10), effect = CONST_ME_TELEPORT }, { pos = Position(32721, 32773, 10), teleport = Position(32725, 32728, 10), effect = CONST_ME_TELEPORT }, - { pos = Position(32721, 32773, 10), teleport = Position(32725, 32728, 10), effect = CONST_ME_TELEPORT } + { pos = Position(32721, 32773, 10), teleport = Position(32725, 32728, 10), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(32716, 32713, 10), - to = Position(32732, 32728, 10) + to = Position(32732, 32728, 10), }, exit = Position(32616, 32531, 13), - storage = Storage.Quest.U11_80.TheSecretLibrary.MazzinorTimer + storage = Storage.Quest.U11_80.TheSecretLibrary.MazzinorTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/secret_library/scourge_of_oblivion_lever.lua b/data-otservbr-global/scripts/actions/quests/secret_library/scourge_of_oblivion_lever.lua index b2bbaa1b346..0739407172d 100644 --- a/data-otservbr-global/scripts/actions/quests/secret_library/scourge_of_oblivion_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/secret_library/scourge_of_oblivion_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "The Scourge of Oblivion", - position = Position(32726, 32727, 11) + position = Position(32726, 32727, 11), }, requiredLevel = 250, @@ -15,14 +15,14 @@ local config = { { pos = Position(32678, 32742, 11), teleport = Position(32726, 32733, 11), effect = CONST_ME_TELEPORT }, { pos = Position(32678, 32743, 11), teleport = Position(32726, 32733, 11), effect = CONST_ME_TELEPORT }, { pos = Position(32678, 32744, 11), teleport = Position(32726, 32733, 11), effect = CONST_ME_TELEPORT }, - { pos = Position(32678, 32745, 11), teleport = Position(32726, 32733, 11), effect = CONST_ME_TELEPORT } + { pos = Position(32678, 32745, 11), teleport = Position(32726, 32733, 11), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(32712, 32723, 11), - to = Position(32738, 32748, 11) + to = Position(32738, 32748, 11), }, exit = Position(32480, 32599, 15), - storage = Storage.Quest.U11_80.TheSecretLibrary.ScourgeOfOblivionTimer + storage = Storage.Quest.U11_80.TheSecretLibrary.ScourgeOfOblivionTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/secret_service/amazon_disguise_kit.lua b/data-otservbr-global/scripts/actions/quests/secret_service/amazon_disguise_kit.lua index 2e880c7d783..140dad309cc 100644 --- a/data-otservbr-global/scripts/actions/quests/secret_service/amazon_disguise_kit.lua +++ b/data-otservbr-global/scripts/actions/quests/secret_service/amazon_disguise_kit.lua @@ -5,7 +5,7 @@ condition:setOutfit({ lookType = 137, lookHead = 113, lookBody = 120, lookLegs = local secretServiceKit = Action() function secretServiceKit.onUse(player, item, fromPosition, target, toPosition, isHotkey) player:addCondition(condition) - player:say('You disguise yourself as a beautiful amazon!', TALKTYPE_MONSTER_SAY) + player:say("You disguise yourself as a beautiful amazon!", TALKTYPE_MONSTER_SAY) item:remove() return true end diff --git a/data-otservbr-global/scripts/actions/quests/secret_service/lever.lua b/data-otservbr-global/scripts/actions/quests/secret_service/lever.lua index 66504d5c7e2..49788978fa5 100644 --- a/data-otservbr-global/scripts/actions/quests/secret_service/lever.lua +++ b/data-otservbr-global/scripts/actions/quests/secret_service/lever.lua @@ -1,23 +1,23 @@ local monsters = { - { monster = 'dwarf henchman', monsterPos = Position(32570, 31858, 14) }, - { monster = 'dwarf henchman', monsterPos = Position(32573, 31861, 14) }, - { monster = 'dwarf henchman', monsterPos = Position(32562, 31860, 14) }, - { monster = 'dwarf henchman', monsterPos = Position(32564, 31856, 14) }, - { monster = 'dwarf henchman', monsterPos = Position(32580, 31860, 14) }, - { monster = 'dwarf henchman', monsterPos = Position(32574, 31850, 14) }, - { monster = 'dwarf henchman', monsterPos = Position(32574, 31870, 14) }, - { monster = 'dwarf henchman', monsterPos = Position(32576, 31856, 14) }, - { monster = 'dwarf henchman', monsterPos = Position(32562, 31858, 14) }, - { monster = 'dwarf henchman', monsterPos = Position(32584, 31868, 14) }, - { monster = 'stone golem', monsterPos = Position(32570, 31861, 14) }, - { monster = 'stone golem', monsterPos = Position(32579, 31868, 14) }, - { monster = 'stone golem', monsterPos = Position(32569, 31852, 14) }, - { monster = 'stone golem', monsterPos = Position(32584, 31866, 14) }, - { monster = 'stone golem', monsterPos = Position(32572, 31851, 14) }, - { monster = 'mechanical fighter', monsterPos = Position(32573, 31858, 14) }, - { monster = 'mechanical fighter', monsterPos = Position(32570, 31868, 14) }, - { monster = 'mechanical fighter', monsterPos = Position(32579, 31852, 14) }, - { monster = 'mad technomancer', monsterPos = Position(32571, 31859, 14) } + { monster = "dwarf henchman", monsterPos = Position(32570, 31858, 14) }, + { monster = "dwarf henchman", monsterPos = Position(32573, 31861, 14) }, + { monster = "dwarf henchman", monsterPos = Position(32562, 31860, 14) }, + { monster = "dwarf henchman", monsterPos = Position(32564, 31856, 14) }, + { monster = "dwarf henchman", monsterPos = Position(32580, 31860, 14) }, + { monster = "dwarf henchman", monsterPos = Position(32574, 31850, 14) }, + { monster = "dwarf henchman", monsterPos = Position(32574, 31870, 14) }, + { monster = "dwarf henchman", monsterPos = Position(32576, 31856, 14) }, + { monster = "dwarf henchman", monsterPos = Position(32562, 31858, 14) }, + { monster = "dwarf henchman", monsterPos = Position(32584, 31868, 14) }, + { monster = "stone golem", monsterPos = Position(32570, 31861, 14) }, + { monster = "stone golem", monsterPos = Position(32579, 31868, 14) }, + { monster = "stone golem", monsterPos = Position(32569, 31852, 14) }, + { monster = "stone golem", monsterPos = Position(32584, 31866, 14) }, + { monster = "stone golem", monsterPos = Position(32572, 31851, 14) }, + { monster = "mechanical fighter", monsterPos = Position(32573, 31858, 14) }, + { monster = "mechanical fighter", monsterPos = Position(32570, 31868, 14) }, + { monster = "mechanical fighter", monsterPos = Position(32579, 31852, 14) }, + { monster = "mad technomancer", monsterPos = Position(32571, 31859, 14) }, } local secretServiceLever = Action() diff --git a/data-otservbr-global/scripts/actions/quests/secret_service/ring.lua b/data-otservbr-global/scripts/actions/quests/secret_service/ring.lua index 8915fe57db5..60c10a9a4f2 100644 --- a/data-otservbr-global/scripts/actions/quests/secret_service/ring.lua +++ b/data-otservbr-global/scripts/actions/quests/secret_service/ring.lua @@ -7,7 +7,7 @@ function secretServiceRing.onUse(player, item, fromPosition, target, toPosition, if player:getStorageValue(Storage.SecretService.TBIMission05) == 1 then player:setStorageValue(Storage.SecretService.TBIMission05, 2) item:remove() - player:say('You have placed the false evidence!', TALKTYPE_MONSTER_SAY) + player:say("You have placed the false evidence!", TALKTYPE_MONSTER_SAY) end return true end diff --git a/data-otservbr-global/scripts/actions/quests/secret_service/rust_bugs.lua b/data-otservbr-global/scripts/actions/quests/secret_service/rust_bugs.lua index a3ead6c86e7..94467c6f844 100644 --- a/data-otservbr-global/scripts/actions/quests/secret_service/rust_bugs.lua +++ b/data-otservbr-global/scripts/actions/quests/secret_service/rust_bugs.lua @@ -10,7 +10,7 @@ function secretServiceBugs.onUse(player, item, fromPosition, target, toPosition, for i = 32909, 32912 do Game.createItem(1069, 1, Position(i, 32112, 7)) end - player:say('The bugs are at work!', TALKTYPE_MONSTER_SAY) + player:say("The bugs are at work!", TALKTYPE_MONSTER_SAY) end return true end diff --git a/data-otservbr-global/scripts/actions/quests/secret_service/tools.lua b/data-otservbr-global/scripts/actions/quests/secret_service/tools.lua index cc2f2637aac..5f3effda584 100644 --- a/data-otservbr-global/scripts/actions/quests/secret_service/tools.lua +++ b/data-otservbr-global/scripts/actions/quests/secret_service/tools.lua @@ -1,7 +1,7 @@ local config = { [897] = 9598, -- TBI [898] = 9596, -- CGB - [899] = 9594 -- AVIN + [899] = 9594, -- AVIN } local secretServiceTools = Action() @@ -12,7 +12,7 @@ function secretServiceTools.onUse(player, item, fromPosition, target, toPosition end player:addItem(useItem) - player:say('You\'ve found a useful little tool for secret agents in the parcel.', TALKTYPE_MONSTER_SAY) + player:say("You've found a useful little tool for secret agents in the parcel.", TALKTYPE_MONSTER_SAY) item:remove() return true diff --git a/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_cruelty_lever.lua b/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_cruelty_lever.lua index 0066e3e7989..fd7785337bb 100644 --- a/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_cruelty_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_cruelty_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Goshnar's Cruelty", - position = Position(33856, 31866, 7) + position = Position(33856, 31866, 7), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33855, 31854, 6), teleport = Position(33856, 31872, 7), effect = CONST_ME_TELEPORT }, { pos = Position(33856, 31854, 6), teleport = Position(33856, 31872, 7), effect = CONST_ME_TELEPORT }, { pos = Position(33857, 31854, 6), teleport = Position(33856, 31872, 7), effect = CONST_ME_TELEPORT }, - { pos = Position(33858, 31854, 6), teleport = Position(33856, 31872, 7), effect = CONST_ME_TELEPORT } + { pos = Position(33858, 31854, 6), teleport = Position(33856, 31872, 7), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33847, 31858, 7), - to = Position(33864, 31874, 7) + to = Position(33864, 31874, 7), }, exit = Position(33621, 31427, 10), - storage = Storage.Quest.U12_40.SoulWar.GoshnarCrueltyTimer + storage = Storage.Quest.U12_40.SoulWar.GoshnarCrueltyTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_greed_lever.lua b/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_greed_lever.lua index 4e679bc1fb5..2339d26164d 100644 --- a/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_greed_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_greed_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Goshnar's Greed", - position = Position(33746, 31666, 14) + position = Position(33746, 31666, 14), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33777, 31665, 14), teleport = Position(33747, 31671, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33778, 31665, 14), teleport = Position(33747, 31671, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33779, 31665, 14), teleport = Position(33747, 31671, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33780, 31665, 14), teleport = Position(33747, 31671, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33780, 31665, 14), teleport = Position(33747, 31671, 14), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33737, 31658, 14), - to = Position(33755, 31673, 14) + to = Position(33755, 31673, 14), }, exit = Position(33621, 31427, 10), - storage = Storage.Quest.U12_40.SoulWar.GoshnarGreedTimer + storage = Storage.Quest.U12_40.SoulWar.GoshnarGreedTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_hatred_lever.lua b/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_hatred_lever.lua index dd2d2ab426a..b563222ed99 100644 --- a/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_hatred_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_hatred_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Goshnar's Hatred", - position = Position(33744, 31599, 14) + position = Position(33744, 31599, 14), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33774, 31601, 14), teleport = Position(33743, 31604, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33775, 31601, 14), teleport = Position(33743, 31604, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33776, 31601, 14), teleport = Position(33743, 31604, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33777, 31601, 14), teleport = Position(33743, 31604, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33777, 31601, 14), teleport = Position(33743, 31604, 14), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33735, 31592, 14), - to = Position(33751, 31606, 14) + to = Position(33751, 31606, 14), }, exit = Position(33621, 31427, 10), - storage = Storage.Quest.U12_40.SoulWar.GoshnarHatredTimer + storage = Storage.Quest.U12_40.SoulWar.GoshnarHatredTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_malice_lever.lua b/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_malice_lever.lua index 863d2c27ff5..b2506093328 100644 --- a/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_malice_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_malice_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Goshnar's Malice", - position = Position(33710, 31599, 14) + position = Position(33710, 31599, 14), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33680, 31599, 14), teleport = Position(33710, 31605, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33681, 31599, 14), teleport = Position(33710, 31605, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33682, 31599, 14), teleport = Position(33710, 31605, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33683, 31599, 14), teleport = Position(33710, 31605, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33683, 31599, 14), teleport = Position(33710, 31605, 14), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33699, 31590, 14), - to = Position(33718, 31607, 14) + to = Position(33718, 31607, 14), }, exit = Position(33621, 31427, 10), - storage = Storage.Quest.U12_40.SoulWar.GoshnarMaliceTimer + storage = Storage.Quest.U12_40.SoulWar.GoshnarMaliceTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_megalomania_lever.lua b/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_megalomania_lever.lua index 5d31197a30e..9010dc88f27 100644 --- a/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_megalomania_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_megalomania_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Goshnar's Megalomania", - position = Position(33710, 31634, 14) + position = Position(33710, 31634, 14), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33677, 31634, 14), teleport = Position(33710, 31639, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33678, 31634, 14), teleport = Position(33710, 31639, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33679, 31634, 14), teleport = Position(33710, 31639, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33680, 31634, 14), teleport = Position(33710, 31639, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33680, 31634, 14), teleport = Position(33710, 31639, 14), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33701, 31626, 14), - to = Position(33719, 31642, 14) + to = Position(33719, 31642, 14), }, exit = Position(33621, 31427, 10), - storage = Storage.Quest.U12_40.SoulWar.GoshnarMegalomaniaTimer + storage = Storage.Quest.U12_40.SoulWar.GoshnarMegalomaniaTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_spite_lever.lua b/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_spite_lever.lua index 1c37a1e6a20..271e132e30f 100644 --- a/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_spite_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/soul_war/goshnar_spite_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "Goshnar's Spite", - position = Position(33743, 31632, 14) + position = Position(33743, 31632, 14), }, requiredLevel = 250, @@ -10,14 +10,14 @@ local config = { { pos = Position(33775, 31634, 14), teleport = Position(33742, 31639, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33776, 31634, 14), teleport = Position(33742, 31639, 14), effect = CONST_ME_TELEPORT }, { pos = Position(33777, 31634, 14), teleport = Position(33742, 31639, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(33778, 31634, 14), teleport = Position(33742, 31639, 14), effect = CONST_ME_TELEPORT } + { pos = Position(33778, 31634, 14), teleport = Position(33742, 31639, 14), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33734, 31624, 14), - to = Position(33751, 31640, 14) + to = Position(33751, 31640, 14), }, exit = Position(33621, 31427, 10), - storage = Storage.Quest.U12_40.SoulWar.GoshnarSpiteTimer + storage = Storage.Quest.U12_40.SoulWar.GoshnarSpiteTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/soul_war/reward_soul_war.lua b/data-otservbr-global/scripts/actions/quests/soul_war/reward_soul_war.lua index b47d0fd535d..b069e43fb69 100644 --- a/data-otservbr-global/scripts/actions/quests/soul_war/reward_soul_war.lua +++ b/data-otservbr-global/scripts/actions/quests/soul_war/reward_soul_war.lua @@ -16,7 +16,7 @@ local rewards = { { id = 34096, name = "Soulshroud" }, { id = 34097, name = "Pair of Soulwalkers" }, { id = 34098, name = "Pair of Soulstalkers" }, - { id = 34099, name = "Soulbastion" } + { id = 34099, name = "Soulbastion" }, } local rewardSoulWar = Action() @@ -29,11 +29,11 @@ function rewardSoulWar.onUse(creature, item, fromPosition, target, toPosition, i end if player:getStorageValue(Storage.Quest.U12_40.SoulWar.QuestReward) < 0 then player:addItem(rewardItem.id, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found a ' .. rewardItem.name .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a " .. rewardItem.name .. ".") player:setStorageValue(Storage.Quest.U12_40.SoulWar.QuestReward, 1) return true else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have already collected your reward') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have already collected your reward") return false end end diff --git a/data-otservbr-global/scripts/actions/quests/soul_war/soulwar_entrances.lua b/data-otservbr-global/scripts/actions/quests/soul_war/soulwar_entrances.lua index 1cb2f6b9570..fc9f5929854 100644 --- a/data-otservbr-global/scripts/actions/quests/soul_war/soulwar_entrances.lua +++ b/data-otservbr-global/scripts/actions/quests/soul_war/soulwar_entrances.lua @@ -9,7 +9,7 @@ local config = { { position = { x = 34022, y = 31091, z = 11 }, destination = { x = 33685, y = 31599, z = 14 } }, -- goshnar's malice entrance { position = { x = 33856, y = 31884, z = 5 }, destination = { x = 33857, y = 31865, z = 6 } }, -- goshnar's cruelty entrance { position = { x = 33889, y = 31873, z = 3 }, destination = { x = 33830, y = 31881, z = 4 } }, -- 1st to 2nd floor cloak - { position = { x = 33829, y = 31880, z = 4 }, destination = { x = 33856, y = 31890, z = 5 } } -- 2nd to 3rd floor cloak + { position = { x = 33829, y = 31880, z = 4 }, destination = { x = 33856, y = 31890, z = 5 } }, -- 2nd to 3rd floor cloak } local portal = { position = { x = 33914, y = 31032, z = 12 }, destination = { x = 33780, y = 31601, z = 14 } } -- goshnar's hatred entrance diff --git a/data-otservbr-global/scripts/actions/quests/spike_tasks/ghost_detector.lua b/data-otservbr-global/scripts/actions/quests/spike_tasks/ghost_detector.lua index 15eaa57d3e7..8fdadc412e0 100644 --- a/data-otservbr-global/scripts/actions/quests/spike_tasks/ghost_detector.lua +++ b/data-otservbr-global/scripts/actions/quests/spike_tasks/ghost_detector.lua @@ -4,7 +4,7 @@ end ghost_detector_area = { from = Position(32008, 32522, 8), - to = Position(32365, 32759, 10) + to = Position(32365, 32759, 10), } local function getSearchString(fromPos, toPos) @@ -38,15 +38,15 @@ local function getSearchString(fromPos, toPos) [0] = { [0] = "above you", [1] = "below you", - [2] = "next to you" + [2] = "next to you", }, [1] = { [0] = "on a higher level to the ", [1] = "on a lower level to the ", - [2] = "to the " + [2] = "to the ", }, [2] = "far to the ", - [3] = "very far to the " + [3] = "very far to the ", } local dirs = { @@ -57,10 +57,10 @@ local function getSearchString(fromPos, toPos) [4] = "north-east", [5] = "north-west", [6] = "south-east", - [7] = "south-west" + [7] = "south-west", } - return ((type(text[distance]) == "table") and text[distance][level] or text[distance]) .. ((distance ~= 0) and dirs[direction] or '') + return ((type(text[distance]) == "table") and text[distance][level] or text[distance]) .. ((distance ~= 0) and dirs[direction] or "") end local spikeTasksGhost = Action() @@ -86,11 +86,11 @@ function spikeTasksGhost.onUse(player, item, fromPosition, target, toPosition, i player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You found a malignant presence, the glowing detector signals that it does not need any further data.") else GHOST_DETECTOR_MAP[player:getGuid()] = getFreeSand() - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You found a malignant presence, the glowing detector signals another presence nearby.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You found a malignant presence, the glowing detector signals another presence nearby.") end player:setStorageValue(SPIKE_UPPER_TRACK_MAIN, stat + 1) else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The detector points ' .. getSearchString(player:getPosition(), current) .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The detector points " .. getSearchString(player:getPosition(), current) .. ".") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/spike_tasks/lode_stone.lua b/data-otservbr-global/scripts/actions/quests/spike_tasks/lode_stone.lua index eccaa68b244..16740c7163b 100644 --- a/data-otservbr-global/scripts/actions/quests/spike_tasks/lode_stone.lua +++ b/data-otservbr-global/scripts/actions/quests/spike_tasks/lode_stone.lua @@ -1,10 +1,11 @@ local transformTo = { [19207] = 19216, - [19216] = 19218 + [19216] = 19218, } local area = { --area where to teleport - Position(32152, 32502, 11), Position(32365, 32725, 12) + Position(32152, 32502, 11), + Position(32365, 32725, 12), } local spikeTasksStone = Action() @@ -22,7 +23,7 @@ function spikeTasksStone.onUse(player, item, fromPosition, target, toPosition, i if item:getId() == 19218 then player:setStorageValue(SPIKE_MIDDLE_CHARGE_MAIN, 1) player:getPosition():sendMagicEffect(12) - player:say('Your tinkering caused some kind of magnetic storm that caused you to get disorientated.', TALKTYPE_MONSTER_SAY) + player:say("Your tinkering caused some kind of magnetic storm that caused you to get disorientated.", TALKTYPE_MONSTER_SAY) item:remove() else item:transform(transformTo[item:getId()]) diff --git a/data-otservbr-global/scripts/actions/quests/spike_tasks/spirit_shovel.lua b/data-otservbr-global/scripts/actions/quests/spike_tasks/spirit_shovel.lua index 3f7954c96c8..619c93bf024 100644 --- a/data-otservbr-global/scripts/actions/quests/spike_tasks/spirit_shovel.lua +++ b/data-otservbr-global/scripts/actions/quests/spike_tasks/spirit_shovel.lua @@ -1,9 +1,9 @@ local chance = { - { 90, "You unearthed a spirit\'s anger!!!", "Enraged Soul" }, + { 90, "You unearthed a spirit's anger!!!", "Enraged Soul" }, { 80, "Your crude digging has angered some ancient ghost.", "Ghost" }, { 70, "You unearthed some not-so-death creature.", "Demon Skeleton" }, { 50, "You unearthed some not-so-death creature.", "Zombie" }, - { 1, "You've found nothing special." } + { 1, "You've found nothing special." }, } local spikeTasksShovel = Action() diff --git a/data-otservbr-global/scripts/actions/quests/spike_tasks/thermometer.lua b/data-otservbr-global/scripts/actions/quests/spike_tasks/thermometer.lua index 17bb9fc3540..9b2c6cbc037 100644 --- a/data-otservbr-global/scripts/actions/quests/spike_tasks/thermometer.lua +++ b/data-otservbr-global/scripts/actions/quests/spike_tasks/thermometer.lua @@ -28,7 +28,7 @@ function spikeTasksThermometer.onUse(player, item, fromPosition, target, toPosit player:setStorageValue(SPIKE_LOWER_LAVA_MAIN, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Whew! That was that hot, it melted the thermometer! At least you've found the hot spot!") else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'This is not the hot spot!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "This is not the hot spot!") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/spirit_hunters/magical_device.lua b/data-otservbr-global/scripts/actions/quests/spirit_hunters/magical_device.lua index f71013b73d6..36bad4ceecd 100644 --- a/data-otservbr-global/scripts/actions/quests/spirit_hunters/magical_device.lua +++ b/data-otservbr-global/scripts/actions/quests/spirit_hunters/magical_device.lua @@ -7,11 +7,11 @@ function spiritMagical.onUse(cid, item, fromPosition, itemEx, toPosition) qStorage = player:getStorageValue(Storage.SpiritHunters.TombUse) if qStorage < 3 then position = player:getPosition() - player:say('An incredibly slimy substance oozes out of every crack in the old gravestone. It seems to attack you.', TALKTYPE_MONSTER_SAY) + player:say("An incredibly slimy substance oozes out of every crack in the old gravestone. It seems to attack you.", TALKTYPE_MONSTER_SAY) player:setStorageValue(Storage.SpiritHunters.TombUse, qStorage + 1) - Game.createMonster('Squidgy Slime', Position(position.x + 1, position.y, position.z), false, false) + Game.createMonster("Squidgy Slime", Position(position.x + 1, position.y, position.z), false, false) elseif qStorage == 4 then - player:say('You have used items in gravestone.', TALKTYPE_MONSTER_SAY) + player:say("You have used items in gravestone.", TALKTYPE_MONSTER_SAY) end end end diff --git a/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/active_teleport_switches.lua b/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/active_teleport_switches.lua index 308f986b63d..8b846f435ea 100644 --- a/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/active_teleport_switches.lua +++ b/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/active_teleport_switches.lua @@ -1,7 +1,7 @@ local config = { [12121] = GlobalStorage.TheAncientTombs.ThalasSwitchesGlobalStorage, [12122] = GlobalStorage.TheAncientTombs.DiprathSwitchesGlobalStorage, - [12123] = GlobalStorage.TheAncientTombs.AshmunrahSwitchesGlobalStorage + [12123] = GlobalStorage.TheAncientTombs.AshmunrahSwitchesGlobalStorage, } local function resetScript(position, storage) diff --git a/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/lever.lua b/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/lever.lua index c2461f44694..7c37af8b682 100644 --- a/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/lever.lua +++ b/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/lever.lua @@ -5,17 +5,16 @@ local config = { { position = Position(33120, 32794, 14), groundId = 727 }, { position = Position(33120, 32795, 14), groundId = 727 }, { position = Position(33121, 32794, 14), groundId = 727 }, - { position = Position(33121, 32795, 14), groundId = 727 } - + { position = Position(33121, 32795, 14), groundId = 727 }, }, leverPositions = { Position(33115, 32797, 14), Position(33118, 32790, 14), - Position(33122, 32790, 14) + Position(33122, 32790, 14), }, relocatePosition = Position(33120, 2791, 14), relocateMonsterPosition = Position(33120, 32799, 14), - bridgeId = 5770 + bridgeId = 5770, } local theAncientLever = Action() diff --git a/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/oasis_lever_door.lua b/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/oasis_lever_door.lua index c1ce3de6c87..29c93a793e2 100644 --- a/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/oasis_lever_door.lua +++ b/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/oasis_lever_door.lua @@ -15,7 +15,7 @@ end local theAncientOasisLever = Action() function theAncientOasisLever.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 1662 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You first must find the Carrot under one of the three hats to get the access!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You first must find the Carrot under one of the three hats to get the access!") return true end @@ -29,7 +29,7 @@ function theAncientOasisLever.onUse(player, item, fromPosition, target, toPositi doorPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN) Game.createItem(3595, 1, hatPosition) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You found the carrot! The door is open!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You found the carrot! The door is open!") item:transform(2773) addEvent(revertCarrotAndLever, 4 * 1000, toPosition, hatPosition) @@ -40,7 +40,7 @@ function theAncientOasisLever.onUse(player, item, fromPosition, target, toPositi return true end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You guessed wrong! Take this! Carrot changed now the Hat!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You guessed wrong! Take this! Carrot changed now the Hat!") doAreaCombatHealth(player, COMBAT_PHYSICALDAMAGE, player:getPosition(), 0, -200, -200, CONST_ME_POFF) return true end diff --git a/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/ruins_instruments.lua b/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/ruins_instruments.lua index c0bb135fa6e..7b405f94d0d 100644 --- a/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/ruins_instruments.lua +++ b/data-otservbr-global/scripts/actions/quests/the_ancient_tombs/ruins_instruments.lua @@ -3,7 +3,7 @@ local config = { [3261] = 2, [3258] = 3, [3260] = 4, - [3257] = 5 + [3257] = 5, } local storage = Storage.TheAncientTombs.VashresamunInstruments @@ -13,7 +13,7 @@ function theAncientRuinsInstru.onUse(player, item, fromPosition, target, toPosit local targetTable = config[item.itemid] if not targetTable then player:setStorageValue(storage, 0) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You played them wrong, now you must begin with first again!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You played them wrong, now you must begin with first again!") doTargetCombatHealth(0, player, COMBAT_PHYSICALDAMAGE, -20, -20, CONST_ME_GROUNDSHAKER) return true end @@ -23,7 +23,7 @@ function theAncientRuinsInstru.onUse(player, item, fromPosition, target, toPosit fromPosition:sendMagicEffect(CONST_ME_SOUND_BLUE) else player:setStorageValue(Storage.TheAncientTombs.VashresamunsDoor, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You played them in correct order and got the access through door!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You played them in correct order and got the access through door!") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/the_ape_city/mission9_catacombs_lever.lua b/data-otservbr-global/scripts/actions/quests/the_ape_city/mission9_catacombs_lever.lua index aea4cde18b2..b1674b723db 100644 --- a/data-otservbr-global/scripts/actions/quests/the_ape_city/mission9_catacombs_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/the_ape_city/mission9_catacombs_lever.lua @@ -4,7 +4,7 @@ local config = { { leverpos = Position(32808, 32613, 11) }, { leverpos = Position(32775, 32583, 11) }, { leverpos = Position(32756, 32494, 11) }, - { leverpos = Position(32799, 32556, 11) } + { leverpos = Position(32799, 32556, 11) }, } local function revertLever(position) diff --git a/data-otservbr-global/scripts/actions/quests/the_ape_city/mission9_catacombs_snake_destroyer.lua b/data-otservbr-global/scripts/actions/quests/the_ape_city/mission9_catacombs_snake_destroyer.lua index e50f8f1fc0b..f726109d622 100644 --- a/data-otservbr-global/scripts/actions/quests/the_ape_city/mission9_catacombs_snake_destroyer.lua +++ b/data-otservbr-global/scripts/actions/quests/the_ape_city/mission9_catacombs_snake_destroyer.lua @@ -4,8 +4,7 @@ function theApeMiss9.onUse(player, item, fromPosition, target, toPosition, isHot return false end - if player:getStorageValue(Storage.TheApeCity.Questline) ~= 17 - or player:getStorageValue(Storage.TheApeCity.SnakeDestroyer) == 1 then + if player:getStorageValue(Storage.TheApeCity.Questline) ~= 17 or player:getStorageValue(Storage.TheApeCity.SnakeDestroyer) == 1 then return false end diff --git a/data-otservbr-global/scripts/actions/quests/the_cursed_crystal/MedusaOil.lua b/data-otservbr-global/scripts/actions/quests/the_cursed_crystal/MedusaOil.lua index 8c8760ae464..37428f549f7 100644 --- a/data-otservbr-global/scripts/actions/quests/the_cursed_crystal/MedusaOil.lua +++ b/data-otservbr-global/scripts/actions/quests/the_cursed_crystal/MedusaOil.lua @@ -2,15 +2,14 @@ local ItemsCursed = { [11466] = { usedID = 21504, finalID = 21505 }, -- Flask with oil and blood [21504] = { usedID = 11466, finalID = 21505 }, -- Flask with oil and blood [21505] = { usedID = 21507, finalID = 21506 }, -- Medusa's oilment - [21507] = { usedID = 21505, finalID = 21506 } -- Medusa's oilment + [21507] = { usedID = 21505, finalID = 21506 }, -- Medusa's oilment } local theCursedMedusa = Action() function theCursedMedusa.onUse(player, item, fromPosition, target, toPosition, isHotkey) if (item.itemid == 21506) and (item.itemid == 10420) then - if (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) == 2) then - if not (((Player(player):getPosition().x - TCC_PILLARPETRIFIED.x) < 5) and ((Player(player):getPosition().x - TCC_PILLARPETRIFIED.x) > -5) and - ((Player(player):getPosition().y - TCC_PILLARPETRIFIED.y) < 5) and ((Player(player):getPosition().y - TCC_PILLARPETRIFIED.y) > -5) and (Player(player):getPosition().z == TCC_PILLARPETRIFIED.z)) then + if player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) == 2 then + if not (((Player(player):getPosition().x - TCC_PILLARPETRIFIED.x) < 5) and ((Player(player):getPosition().x - TCC_PILLARPETRIFIED.x) > -5) and ((Player(player):getPosition().y - TCC_PILLARPETRIFIED.y) < 5) and ((Player(player):getPosition().y - TCC_PILLARPETRIFIED.y) > -5) and (Player(player):getPosition().z == TCC_PILLARPETRIFIED.z)) then return end player:setStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe, 3) @@ -19,19 +18,17 @@ function theCursedMedusa.onUse(player, item, fromPosition, target, toPosition, i local stone = Tile(TCC_PILLARPETRIFIED):getItemById(10797) doSendMagicEffect(stone:getPosition(), CONST_ME_POFF) stone:transform(10870) - addEvent( - function() - stone:transform(10797) - end, 5000) + addEvent(function() + stone:transform(10797) + end, 5000) end return - elseif (item.itemid == 9106) then + elseif item.itemid == 9106 then if not (Tile(topos)) or not (Tile(topos):getTopCreature()) or not (Tile(topos):getTopCreature():isPlayer()) then return end if (Player(player) == Player(Tile(topos):getTopCreature())) and (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) < 2) then - if not (((Player(player):getPosition().x - TCC_PILLARPETRIFIED.x) < 5) and ((Player(player):getPosition().x - TCC_PILLARPETRIFIED.x) > -5) and - ((Player(player):getPosition().y - TCC_PILLARPETRIFIED.y) < 5) and ((Player(player):getPosition().y - TCC_PILLARPETRIFIED.y) > -5) and (Player(player):getPosition().z == TCC_PILLARPETRIFIED.z)) then + if not (((Player(player):getPosition().x - TCC_PILLARPETRIFIED.x) < 5) and ((Player(player):getPosition().x - TCC_PILLARPETRIFIED.x) > -5) and ((Player(player):getPosition().y - TCC_PILLARPETRIFIED.y) < 5) and ((Player(player):getPosition().y - TCC_PILLARPETRIFIED.y) > -5) and (Player(player):getPosition().z == TCC_PILLARPETRIFIED.z)) then return end player:setStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe, 2) @@ -43,10 +40,10 @@ function theCursedMedusa.onUse(player, item, fromPosition, target, toPosition, i end for index, value in pairs(ItemsCursed) do if item.itemid == index and item.itemid == value.usedID then - if (value.finalID == 21505) then + if value.finalID == 21505 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You mixed the first ingredients to create a special ointment. But it isn't complete yet.") - elseif (value.finalID == 21506) then - if (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline) < 2) then + elseif value.finalID == 21506 then + if player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline) < 2 then player:setStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline, 2) end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You mixed the proper ingredients to create a special ointment. With this salve you may unpetrify a petrified object.") diff --git a/data-otservbr-global/scripts/actions/quests/the_cursed_crystal/Misc.lua b/data-otservbr-global/scripts/actions/quests/the_cursed_crystal/Misc.lua index fedbbc62f10..fd2e42d286e 100644 --- a/data-otservbr-global/scripts/actions/quests/the_cursed_crystal/Misc.lua +++ b/data-otservbr-global/scripts/actions/quests/the_cursed_crystal/Misc.lua @@ -1,15 +1,14 @@ local theCursedMiscItem = Action() function theCursedMiscItem.onUse(cid, item, frompos, item2, topos) local user1 = Player(cid) - if (item.itemid == 5902) then - if ((item2.itemid == 2535) or (item2.itemid == 2537) or (item2.itemid == 2539) or (item2.itemid == 2541)) then + if item.itemid == 5902 then + if (item2.itemid == 2535) or (item2.itemid == 2537) or (item2.itemid == 2539) or (item2.itemid == 2541) then item:remove(1) doPlayerAddItem(cid, 9106, 1) end return - elseif (item.itemid == 21554) then - if (((user1:getPosition().x - TCC_VORTEX_POSITION.x) < 4) and ((user1:getPosition().x - TCC_VORTEX_POSITION.x) > -4)) and - (((user1:getPosition().y - TCC_VORTEX_POSITION.y) < 4) and ((user1:getPosition().y - TCC_VORTEX_POSITION.y) > -4)) then + elseif item.itemid == 21554 then + if (((user1:getPosition().x - TCC_VORTEX_POSITION.x) < 4) and ((user1:getPosition().x - TCC_VORTEX_POSITION.x) > -4)) and (((user1:getPosition().y - TCC_VORTEX_POSITION.y) < 4) and ((user1:getPosition().y - TCC_VORTEX_POSITION.y) > -4)) then Game.createItem(7804, 1, TCC_VORTEX_POSITION) Tile(TCC_VORTEX_POSITION):getItemById(7804):setActionId(35001) doSendMagicEffect(user1:getPosition(), CONST_ME_SOUND_WHITE) @@ -27,17 +26,19 @@ theCursedMiscItem:register() local theCursedMiscAction = Action() function theCursedMiscAction.onUse(cid, item, frompos, item2, topos) if (item.actionid == 40001) and (item:getPosition() == TCC_SKELETON_PAPER_POS) then -- 40028 - if (user1:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) < 1) then + if user1:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) < 1 then user1:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a sheet of paper.") local paperCursedCrystal = doPlayerAddItem(cid, 2820, 1) - Item(paperCursedCrystal):setAttribute(ITEM_ATTRIBUTE_TEXT, - "I did it! I reached the crystal gardens! What beauty and splendor I have seen down there. Even more: I discovered a small subterranean lake - but Harry was there before me. And he did something strange: He ringed a small, transparent looking bell and immediatly a big whirl appeared in the water. I suppose this is the mysterious way deeper into the caves we sought after for so long. But Harry, the coward, didn't dare to dive into the water. Instead he left the caverns and heeded back to the surface. I have to go after him tomorrow. I must have this bell!") + Item(paperCursedCrystal):setAttribute( + ITEM_ATTRIBUTE_TEXT, + "I did it! I reached the crystal gardens! What beauty and splendor I have seen down there. Even more: I discovered a small subterranean lake - but Harry was there before me. And he did something strange: He ringed a small, transparent looking bell and immediatly a big whirl appeared in the water. I suppose this is the mysterious way deeper into the caves we sought after for so long. But Harry, the coward, didn't dare to dive into the water. Instead he left the caverns and heeded back to the surface. I have to go after him tomorrow. I must have this bell!" + ) else user1:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The pile of bones empty.") end return elseif (item.actionid == 40001) and (item:getPosition() == TCC_SKELETON_BELL_POS) then -- 40029 - if (user1:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) < 1) then + if user1:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) < 1 then user1:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a small crystal bell.") doPlayerAddItem(cid, 21554, 1) user1:setStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe, 1) @@ -46,8 +47,8 @@ function theCursedMiscAction.onUse(cid, item, frompos, item2, topos) end return elseif (item.actionid == 40002) and (item.itemid == 21572) then - if (user1:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) > 0) then - if (user1:getStorageValue(Storage.TibiaTales.TheCursedCrystal.MedusaOil) < os.time()) then + if user1:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) > 0 then + if user1:getStorageValue(Storage.TibiaTales.TheCursedCrystal.MedusaOil) < os.time() then user1:setStorageValue(Storage.TibiaTales.TheCursedCrystal.MedusaOil, os.time() + 72000) doPlayerAddItem(cid, 21504, 1) doSendMagicEffect(item:getPosition(), CONST_ME_MAGIC_RED) diff --git a/data-otservbr-global/scripts/actions/quests/the_cursed_crystal/Ointment.lua b/data-otservbr-global/scripts/actions/quests/the_cursed_crystal/Ointment.lua index c83219effd0..e857ec66253 100644 --- a/data-otservbr-global/scripts/actions/quests/the_cursed_crystal/Ointment.lua +++ b/data-otservbr-global/scripts/actions/quests/the_cursed_crystal/Ointment.lua @@ -2,12 +2,11 @@ local theCursedOintment = Action() function theCursedOintment.onUse(player, item, frompos, item2, topos) -- The Cursed Crystal quest: if (item.itemid == 21506) and (item2.itemid == 10420) then - if (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) == 2) then - if not (((Player(player):getPosition().x - TCC_PILLARPETRIFIED.x) < 5) and ((Player(player):getPosition().x - TCC_PILLARPETRIFIED.x) > -5) and - ((Player(player):getPosition().y - TCC_PILLARPETRIFIED.y) < 5) and ((Player(player):getPosition().y - TCC_PILLARPETRIFIED.y) > -5) and (Player(player):getPosition().z == TCC_PILLARPETRIFIED.z)) then + if player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) == 2 then + if not (((Player(player):getPosition().x - TCC_PILLARPETRIFIED.x) < 5) and ((Player(player):getPosition().x - TCC_PILLARPETRIFIED.x) > -5) and ((Player(player):getPosition().y - TCC_PILLARPETRIFIED.y) < 5) and ((Player(player):getPosition().y - TCC_PILLARPETRIFIED.y) > -5) and (Player(player):getPosition().z == TCC_PILLARPETRIFIED.z)) then return end - if (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline) < 3) then + if player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline) < 3 then player:setStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline, 3) end player:setStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe, 3) @@ -17,12 +16,9 @@ function theCursedOintment.onUse(player, item, frompos, item2, topos) local stone = Tile(TCC_PILLARPETRIFIED):getItemById(10797) doSendMagicEffect(stone:getPosition(), CONST_ME_POFF) stone:transform(10870) - addEvent( - function() - stone:transform(10797) - end, - 5000 - ) + addEvent(function() + stone:transform(10797) + end, 5000) end return -- The dream courts quest: not ready diff --git a/data-otservbr-global/scripts/actions/quests/the_dream_courts/dream_courts_lever.lua b/data-otservbr-global/scripts/actions/quests/the_dream_courts/dream_courts_lever.lua index b0100bf8d0b..4386e18b3e3 100644 --- a/data-otservbr-global/scripts/actions/quests/the_dream_courts/dream_courts_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/the_dream_courts/dream_courts_lever.lua @@ -1,12 +1,12 @@ local config = { bossName = { - ['Monday'] = 'Plagueroot', - ['Tuesday'] = 'Malofur Mangrinder', - ['Wednesday'] = 'Maxxenius', - ['Thursday'] = 'Alptramun', - ['Friday'] = 'Izcandar The Banished', - ['Saturday'] = 'Maxxenius', - ['Sunday'] = 'Alptramun' + ["Monday"] = "Plagueroot", + ["Tuesday"] = "Malofur Mangrinder", + ["Wednesday"] = "Maxxenius", + ["Thursday"] = "Alptramun", + ["Friday"] = "Izcandar The Banished", + ["Saturday"] = "Maxxenius", + ["Sunday"] = "Alptramun", }, requiredLevel = 250, timeToFightAgain = 10, -- In hour @@ -16,15 +16,15 @@ local config = { { pos = Position(32208, 32022, 13), teleport = Position(32207, 32041, 14), effect = CONST_ME_TELEPORT }, { pos = Position(32208, 32023, 13), teleport = Position(32207, 32041, 14), effect = CONST_ME_TELEPORT }, { pos = Position(32208, 32024, 13), teleport = Position(32207, 32041, 14), effect = CONST_ME_TELEPORT }, - { pos = Position(32208, 32025, 13), teleport = Position(32207, 32041, 14), effect = CONST_ME_TELEPORT } + { pos = Position(32208, 32025, 13), teleport = Position(32207, 32041, 14), effect = CONST_ME_TELEPORT }, }, bossPosition = Position(32207, 32051, 14), specPos = { from = Position(32199, 32039, 14), - to = Position(32229, 32055, 14) + to = Position(32229, 32055, 14), }, exit = Position(32210, 32035, 13), - storage = Storage.Quest.U12_00.TheDreamCourts.ArenaTimer + storage = Storage.Quest.U12_00.TheDreamCourts.ArenaTimer, } local dreamCourtsLever = Action() diff --git a/data-otservbr-global/scripts/actions/quests/the_dream_courts/entrances_dream_courts.lua b/data-otservbr-global/scripts/actions/quests/the_dream_courts/entrances_dream_courts.lua index 120ea6c08fe..cdbbb60aa4e 100644 --- a/data-otservbr-global/scripts/actions/quests/the_dream_courts/entrances_dream_courts.lua +++ b/data-otservbr-global/scripts/actions/quests/the_dream_courts/entrances_dream_courts.lua @@ -2,7 +2,7 @@ local config = { { position = { x = 32042, y = 31938, z = 15 } }, { position = { x = 32043, y = 31938, z = 15 } }, { position = { x = 32042, y = 31939, z = 15 } }, - { position = { x = 32043, y = 31939, z = 15 } } + { position = { x = 32043, y = 31939, z = 15 } }, } local entranceDreamCourts = MoveEvent() diff --git a/data-otservbr-global/scripts/actions/quests/the_dream_courts/lever.lua b/data-otservbr-global/scripts/actions/quests/the_dream_courts/lever.lua index 2fa60cff7ab..7a05976ffee 100644 --- a/data-otservbr-global/scripts/actions/quests/the_dream_courts/lever.lua +++ b/data-otservbr-global/scripts/actions/quests/the_dream_courts/lever.lua @@ -11,14 +11,14 @@ local config = { { pos = Position(33639, 32562, 13), teleport = Position(33617, 32567, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33640, 32562, 13), teleport = Position(33617, 32567, 13), effect = CONST_ME_TELEPORT }, { pos = Position(33641, 32562, 13), teleport = Position(33617, 32567, 13), effect = CONST_ME_TELEPORT }, - { pos = Position(33642, 32562, 13), teleport = Position(33617, 32567, 13), effect = CONST_ME_TELEPORT } + { pos = Position(33642, 32562, 13), teleport = Position(33617, 32567, 13), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33607, 32553, 13), - to = Position(33627, 32570, 13) + to = Position(33627, 32570, 13), }, exit = Position(33618, 32523, 15), - storage = Storage.Quest.U12_00.TheDreamCourts.FacelessBaneTime + storage = Storage.Quest.U12_00.TheDreamCourts.FacelessBaneTime, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/the_dream_courts/nightmare_beast_lever.lua b/data-otservbr-global/scripts/actions/quests/the_dream_courts/nightmare_beast_lever.lua index e2de3f94b2b..fc47fe72006 100644 --- a/data-otservbr-global/scripts/actions/quests/the_dream_courts/nightmare_beast_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/the_dream_courts/nightmare_beast_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "The Nightmare Beast", - position = Position(32208, 32046, 15) + position = Position(32208, 32046, 15), }, requiredLevel = 250, @@ -15,14 +15,14 @@ local config = { { pos = Position(32211, 32071, 15), teleport = Position(32208, 32052, 15), effect = CONST_ME_TELEPORT }, { pos = Position(32212, 32071, 15), teleport = Position(32208, 32052, 15), effect = CONST_ME_TELEPORT }, { pos = Position(32213, 32071, 15), teleport = Position(32208, 32052, 15), effect = CONST_ME_TELEPORT }, - { pos = Position(32214, 32071, 15), teleport = Position(32208, 32052, 15), effect = CONST_ME_TELEPORT } + { pos = Position(32214, 32071, 15), teleport = Position(32208, 32052, 15), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(32195, 32035, 15), - to = Position(32220, 32055, 15) + to = Position(32220, 32055, 15), }, exit = Position(32211, 32084, 15), - storage = Storage.Quest.U12_00.TheDreamCourts.NightmareBeastTimer + storage = Storage.Quest.U12_00.TheDreamCourts.NightmareBeastTimer, } local lever = BossLever(config) diff --git a/data-otservbr-global/scripts/actions/quests/the_hidden_city_of_beregar/bargate_lever.lua b/data-otservbr-global/scripts/actions/quests/the_hidden_city_of_beregar/bargate_lever.lua index 0b37862ec86..05dfb1cc2aa 100644 --- a/data-otservbr-global/scripts/actions/quests/the_hidden_city_of_beregar/bargate_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/the_hidden_city_of_beregar/bargate_lever.lua @@ -1,6 +1,6 @@ local config = { { gatePosX = Position(32569, 31421, 9), gatePosY = Position(32569, 31422, 9), tileIdX = 501, tileIdY = 502 }, - { gatePosX = Position(32600, 31421, 9), gatePosY = Position(32600, 31422, 9), tileIdX = 502, tileIdY = 501 } + { gatePosX = Position(32600, 31421, 9), gatePosY = Position(32600, 31422, 9), tileIdX = 502, tileIdY = 501 }, } local function wall(i) diff --git a/data-otservbr-global/scripts/actions/quests/the_hidden_city_of_beregar/ore wagon.lua b/data-otservbr-global/scripts/actions/quests/the_hidden_city_of_beregar/ore wagon.lua index 973d27f5552..ad4bb8227f4 100644 --- a/data-otservbr-global/scripts/actions/quests/the_hidden_city_of_beregar/ore wagon.lua +++ b/data-otservbr-global/scripts/actions/quests/the_hidden_city_of_beregar/ore wagon.lua @@ -20,7 +20,7 @@ local travel = { { wagon = Position(32548, 31408, 11), destination = Position(32687, 31470, 13) }, -- infested tavern { wagon = Position(32700, 31449, 15), destination = Position(32687, 31470, 13) }, -- npc tehlim { wagon = Position(32720, 31488, 15), destination = Position(32687, 31470, 13) }, -- troll tribe's hideout - { wagon = Position(32688, 31471, 13), destination = Position(32687, 31470, 13) } -- maze logic + { wagon = Position(32688, 31471, 13), destination = Position(32687, 31470, 13) }, -- maze logic } local checkpoint = { @@ -31,7 +31,7 @@ local checkpoint = { [5] = Position(32687, 31470, 13), -- maze checkpoint [6] = Position(32687, 31470, 13), -- maze checkpoint [7] = Position(32687, 31470, 13), -- maze checkpoint - [8] = Position(32687, 31470, 13) -- maze checkpoint + [8] = Position(32687, 31470, 13), -- maze checkpoint } local wagonposin = { @@ -41,7 +41,7 @@ local wagonposin = { [4] = Position(32708, 31492, 11), [5] = Position(32711, 31492, 11), [6] = Position(32714, 31492, 11), - [7] = Position(32717, 31492, 11) + [7] = Position(32717, 31492, 11), } local wagonposout = { @@ -52,7 +52,7 @@ local wagonposout = { [5] = Position(32706, 31492, 11), [6] = Position(32703, 31492, 11), [7] = Position(32700, 31492, 11), - [8] = Position(32699, 31492, 11) + [8] = Position(32699, 31492, 11), } local wagons = Action() @@ -61,50 +61,36 @@ function wagons.onUse(player, item, fromPosition, target, toPosition, isHotkey) --Coal Room { teleportPos = Position(32692, 31501, 11), - railCheck = Tile(Position(32688, 31469, 13)):getItemById(7124) - and Tile(Position(32690, 31465, 13)):getItemById(7122) + railCheck = Tile(Position(32688, 31469, 13)):getItemById(7124) and Tile(Position(32690, 31465, 13)):getItemById(7122), }, --Infested Tavern { teleportPos = Position(32549, 31407, 11), - railCheck = Tile(Position(32688, 31469, 13)):getItemById(7124) - and Tile(Position(32690, 31465, 13)):getItemById(7125) - and Tile(Position(32684, 31464, 13)):getItemById(7123) + railCheck = Tile(Position(32688, 31469, 13)):getItemById(7124) and Tile(Position(32690, 31465, 13)):getItemById(7125) and Tile(Position(32684, 31464, 13)):getItemById(7123), }, --Beregar { teleportPos = Position(32579, 31487, 9), - railCheck = Tile(Position(32688, 31469, 13)):getItemById(7124) - and Tile(Position(32690, 31465, 13)):getItemById(7125) - and Tile(Position(32684, 31464, 13)):getItemById(7122) - and Tile(Position(32682, 31455, 13)):getItemById(7124) + railCheck = Tile(Position(32688, 31469, 13)):getItemById(7124) and Tile(Position(32690, 31465, 13)):getItemById(7125) and Tile(Position(32684, 31464, 13)):getItemById(7122) and Tile(Position(32682, 31455, 13)):getItemById(7124), }, --NPC Tehlim { teleportPos = Position(32701, 31448, 15), - railCheck = Tile(Position(32688, 31469, 13)):getItemById(7124) - and Tile(Position(32690, 31465, 13)):getItemById(7125) - and Tile(Position(32684, 31464, 13)):getItemById(7122) - and Tile(Position(32682, 31455, 13)):getItemById(7121) - and Tile(Position(32687, 31452, 13)):getItemById(7125) - and Tile(Position(32692, 31453, 13)):getItemById(7126) + railCheck = Tile(Position(32688, 31469, 13)):getItemById(7124) and Tile(Position(32690, 31465, 13)):getItemById(7125) and Tile(Position(32684, 31464, 13)):getItemById(7122) and Tile(Position(32682, 31455, 13)):getItemById(7121) and Tile(Position(32687, 31452, 13)):getItemById(7125) and Tile(Position(32692, 31453, 13)):getItemById(7126), }, --Troll tribe's hideout { teleportPos = Position(32721, 31487, 15), - railCheck = Tile(Position(32688, 31469, 13)):getItemById(7121) - and Tile(Position(32692, 31459, 13)):getItemById(7123) - and Tile(Position(32696, 31453, 13)):getItemById(7123) + railCheck = Tile(Position(32688, 31469, 13)):getItemById(7121) and Tile(Position(32692, 31459, 13)):getItemById(7123) and Tile(Position(32696, 31453, 13)):getItemById(7123), }, --City's Entrance { teleportPos = Position(32600, 31504, 13), - railCheck = Tile(Position(32688, 31469, 13)):getItemById(7123) - and Tile(Position(32695, 31464, 13)):getItemById(7123) - } + railCheck = Tile(Position(32688, 31469, 13)):getItemById(7123) and Tile(Position(32695, 31464, 13)):getItemById(7123), + }, } local getstory = player:getStorageValue(Storage.HiddenCityOfBeregar.RoyalRescue) - local story = (Storage.HiddenCityOfBeregar.RoyalRescue) + local story = Storage.HiddenCityOfBeregar.RoyalRescue local position = (Position(32571, 31508, 9)) local tile = Tile(position) local tile2 = Tile(Position(32619, 31514, 9)) diff --git a/data-otservbr-global/scripts/actions/quests/the_hunt_for_the_sea_serpent/bait.lua b/data-otservbr-global/scripts/actions/quests/the_hunt_for_the_sea_serpent/bait.lua index e43750fcb51..4289d8eee96 100644 --- a/data-otservbr-global/scripts/actions/quests/the_hunt_for_the_sea_serpent/bait.lua +++ b/data-otservbr-global/scripts/actions/quests/the_hunt_for_the_sea_serpent/bait.lua @@ -24,11 +24,13 @@ local words = { "dot", "a dot", "a shadow", - "a huge shadow" }, + "a huge shadow", + }, direction = { " straight ahead of you", ". It is to the starboard side", - ". It is on the larboard side" } + ". It is on the larboard side", + }, } local telescope = Action() diff --git a/data-otservbr-global/scripts/actions/quests/the_outlaw_camp/oven.lua b/data-otservbr-global/scripts/actions/quests/the_outlaw_camp/oven.lua index 38c9e952662..b7f7499336b 100644 --- a/data-otservbr-global/scripts/actions/quests/the_outlaw_camp/oven.lua +++ b/data-otservbr-global/scripts/actions/quests/the_outlaw_camp/oven.lua @@ -1,6 +1,6 @@ local config = { [2772] = { position = { Position(32623, 32188, 9), Position(32623, 32189, 9) } }, - [2773] = { position = { Position(32623, 32189, 9), Position(32623, 32188, 9) } } + [2773] = { position = { Position(32623, 32189, 9), Position(32623, 32188, 9) } }, } local theOutlawOven = Action() @@ -10,7 +10,6 @@ function theOutlawOven.onUse(player, item, fromPosition, target, toPosition, isH return true end - local oven = Tile(useItem.position[1]):getTopTopItem() if oven and table.contains({ 2535, 2536 }, oven.itemid) then oven:moveTo(useItem.position[2]) diff --git a/data-otservbr-global/scripts/actions/quests/the_secret_library/asura_mirror.lua b/data-otservbr-global/scripts/actions/quests/the_secret_library/asura_mirror.lua index 2551e4bcb22..0659f5f95e0 100644 --- a/data-otservbr-global/scripts/actions/quests/the_secret_library/asura_mirror.lua +++ b/data-otservbr-global/scripts/actions/quests/the_secret_library/asura_mirror.lua @@ -12,7 +12,7 @@ function asuraMirror.onUse(creature, item, position, fromPosition, pos, target, player:teleportTo(goPos) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) else - player:sendCancelMessage('You do not have enough level.') + player:sendCancelMessage("You do not have enough level.") end return true end diff --git a/data-otservbr-global/scripts/actions/quests/the_secret_library/bastion_access.lua b/data-otservbr-global/scripts/actions/quests/the_secret_library/bastion_access.lua index f4280ec4fac..285722c4a7a 100644 --- a/data-otservbr-global/scripts/actions/quests/the_secret_library/bastion_access.lua +++ b/data-otservbr-global/scripts/actions/quests/the_secret_library/bastion_access.lua @@ -3,7 +3,7 @@ local bastionAccess = Action() function bastionAccess.onUse(player, item, fromPosition, target, toPosition, isHotkey) local time = getTibiaTimerDayOrNight() if time == "night" and target:getId() == 27836 and player:getStorageValue(Storage.TheSecretLibrary.FalconBastionAccess) == 1 then - player:teleportTo(Position { x = 33357, y = 31308, z = 4 }) + player:teleportTo(Position({ x = 33357, y = 31308, z = 4 })) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) end return true diff --git a/data-otservbr-global/scripts/actions/quests/the_secret_library/energybasin.lua b/data-otservbr-global/scripts/actions/quests/the_secret_library/energybasin.lua index 3b053428592..99109f91ebb 100644 --- a/data-otservbr-global/scripts/actions/quests/the_secret_library/energybasin.lua +++ b/data-otservbr-global/scripts/actions/quests/the_secret_library/energybasin.lua @@ -6,7 +6,7 @@ local config = { storage = Storage.TheSecretLibrary.Mota, getValue = 4, setValue = 5, - basin = 3514 + basin = 3514, }, -- green [1086] = { @@ -15,17 +15,10 @@ local config = { storage = Storage.TheSecretLibrary.Mota, getValue = 5, setValue = 6, - basin = 3514 + basin = 3514, }, -- red - [1087] = - { itemId = 27869, - msg = "Success", - storage = Storage.TheSecretLibrary.Mota, - getValue = 6, - setValue = 7, - basin = 3514 - } + [1087] = { itemId = 27869, msg = "Success", storage = Storage.TheSecretLibrary.Mota, getValue = 6, setValue = 7, basin = 3514 }, } local energyBasin = Action() diff --git a/data-otservbr-global/scripts/actions/quests/the_shattered_isles/nargor_maps.lua b/data-otservbr-global/scripts/actions/quests/the_shattered_isles/nargor_maps.lua index ea6e9060fa5..c183522c08d 100644 --- a/data-otservbr-global/scripts/actions/quests/the_shattered_isles/nargor_maps.lua +++ b/data-otservbr-global/scripts/actions/quests/the_shattered_isles/nargor_maps.lua @@ -1,16 +1,16 @@ local UniqueTable = { [40001] = { storage = Storage.TheShatteredIsles.TavernMap1, - message = "You have sucessfully read plan A." + message = "You have sucessfully read plan A.", }, [40002] = { storage = Storage.TheShatteredIsles.TavernMap2, - message = "You have sucessfully read plan B." + message = "You have sucessfully read plan B.", }, [40003] = { storage = Storage.TheShatteredIsles.TavernMap3, - message = "You have sucessfully read plan C." - } + message = "You have sucessfully read plan C.", + }, } local nargorMaps = Action() diff --git a/data-otservbr-global/scripts/actions/quests/the_shattered_isles/tortoise_egg_nargor.lua b/data-otservbr-global/scripts/actions/quests/the_shattered_isles/tortoise_egg_nargor.lua index 2f4a364eb5b..b556faeefc7 100644 --- a/data-otservbr-global/scripts/actions/quests/the_shattered_isles/tortoise_egg_nargor.lua +++ b/data-otservbr-global/scripts/actions/quests/the_shattered_isles/tortoise_egg_nargor.lua @@ -2,8 +2,8 @@ local UniqueTable = { [14024] = { itemId = 6125, name = "tortoise egg from Nargor", - count = 1 - } + count = 1, + }, } local tortoiseEggNargor = Action() diff --git a/data-otservbr-global/scripts/actions/quests/the_tainted_soul/star_herb.lua b/data-otservbr-global/scripts/actions/quests/the_tainted_soul/star_herb.lua index a78288660d4..05e7a80e844 100644 --- a/data-otservbr-global/scripts/actions/quests/the_tainted_soul/star_herb.lua +++ b/data-otservbr-global/scripts/actions/quests/the_tainted_soul/star_herb.lua @@ -1,6 +1,6 @@ local config = { antlers = 10297, - antler_talisman = 22008 + antler_talisman = 22008, } local starHerb = Action() diff --git a/data-otservbr-global/scripts/actions/quests/the_thieves_guild/climbing_vine.lua b/data-otservbr-global/scripts/actions/quests/the_thieves_guild/climbing_vine.lua index df3b445e5c2..7326710a105 100644 --- a/data-otservbr-global/scripts/actions/quests/the_thieves_guild/climbing_vine.lua +++ b/data-otservbr-global/scripts/actions/quests/the_thieves_guild/climbing_vine.lua @@ -1,6 +1,6 @@ local config = { [12501] = Position(32336, 31813, 6), -- to the room - [12502] = Position(32337, 31815, 7) -- outside the room + [12502] = Position(32337, 31815, 7), -- outside the room } local theThievesVine = Action() diff --git a/data-otservbr-global/scripts/actions/quests/the_thieves_guild/fish_napping_door.lua b/data-otservbr-global/scripts/actions/quests/the_thieves_guild/fish_napping_door.lua index ba77287cf6e..9cc51744294 100644 --- a/data-otservbr-global/scripts/actions/quests/the_thieves_guild/fish_napping_door.lua +++ b/data-otservbr-global/scripts/actions/quests/the_thieves_guild/fish_napping_door.lua @@ -1,7 +1,7 @@ local theThievesDoor = Action() function theThievesDoor.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.ThievesGuild.Mission06) == 3 then - player:say('You slip through the door', TALKTYPE_MONSTER_SAY) + player:say("You slip through the door", TALKTYPE_MONSTER_SAY) player:teleportTo(Position(32359, 32786, 6)) end return true diff --git a/data-otservbr-global/scripts/actions/quests/the_thieves_guild/fish_napping_key.lua b/data-otservbr-global/scripts/actions/quests/the_thieves_guild/fish_napping_key.lua index 0874535ee7f..23b22149583 100644 --- a/data-otservbr-global/scripts/actions/quests/the_thieves_guild/fish_napping_key.lua +++ b/data-otservbr-global/scripts/actions/quests/the_thieves_guild/fish_napping_key.lua @@ -5,7 +5,7 @@ function theThievesKey.onUse(player, item, fromPosition, target, toPosition, isH if player:getStorageValue(Storage.ThievesGuild.Mission06) == 2 then if target.actionid == 51394 and item.itemid == 7934 then player:removeItem(7934, 1) - player:say('In your haste you break the key while slipping in.', TALKTYPE_MONSTER_SAY) + player:say("In your haste you break the key while slipping in.", TALKTYPE_MONSTER_SAY) player:teleportTo(Position(32359, 32788, 6)) return true end diff --git a/data-otservbr-global/scripts/actions/quests/too_hot_to_handle/the_brainstealer_lever.lua b/data-otservbr-global/scripts/actions/quests/too_hot_to_handle/the_brainstealer_lever.lua index 8449f52ee90..09410fa6341 100644 --- a/data-otservbr-global/scripts/actions/quests/too_hot_to_handle/the_brainstealer_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/too_hot_to_handle/the_brainstealer_lever.lua @@ -13,7 +13,7 @@ local config = { }, specPos = { from = Position(32490, 31117, 15), - to = Position(32506, 31132, 15) + to = Position(32506, 31132, 15), }, exit = Position(32536, 31122, 15), storage = Storage.Quest.U12_70.TooHotToHandle.BrainstealerTimer, diff --git a/data-otservbr-global/scripts/actions/quests/what_a_foolish/cat_basket.lua b/data-otservbr-global/scripts/actions/quests/what_a_foolish/cat_basket.lua index 56f1827c538..a86c72577d7 100644 --- a/data-otservbr-global/scripts/actions/quests/what_a_foolish/cat_basket.lua +++ b/data-otservbr-global/scripts/actions/quests/what_a_foolish/cat_basket.lua @@ -4,7 +4,7 @@ local effectPositions = { Position(32314, 31746, 9), Position(32315, 31746, 9), Position(32316, 31746, 9), - Position(32317, 31745, 9) + Position(32317, 31745, 9), } local function removeKitty(monsterId) @@ -16,15 +16,14 @@ end local whatFoolishCat = Action() function whatFoolishCat.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if player:getStorageValue(Storage.WhatAFoolish.Questline) ~= 19 - or player:getStorageValue(Storage.WhatAFoolish.CatBasket) == 1 then + if player:getStorageValue(Storage.WhatAFoolish.Questline) ~= 19 or player:getStorageValue(Storage.WhatAFoolish.CatBasket) == 1 then return false end player:setStorageValue(Storage.WhatAFoolish.CatBasket, 1) - player:say('The queen\'s cat is not amused!', TALKTYPE_MONSTER_SAY) + player:say("The queen's cat is not amused!", TALKTYPE_MONSTER_SAY) player:getPosition():sendMagicEffect(CONST_ME_DRAWBLOOD) - player:say('Fchhhhh', TALKTYPE_MONSTER_SAY, false, player, effectPositions[1]) + player:say("Fchhhhh", TALKTYPE_MONSTER_SAY, false, player, effectPositions[1]) for i = 1, #effectPositions do effectPositions[i]:sendMagicEffect(CONST_ME_POFF) @@ -32,7 +31,7 @@ function whatFoolishCat.onUse(player, item, fromPosition, target, toPosition, is Game.createItem(123, 1, toPosition) toPosition:sendMagicEffect(CONST_ME_POFF) - local monster = Game.createMonster('Kitty', Position(toPosition.x, toPosition.y + 1, toPosition.z)) + local monster = Game.createMonster("Kitty", Position(toPosition.x, toPosition.y + 1, toPosition.z)) addEvent(removeKitty, 10000, monster.uid) return true end diff --git a/data-otservbr-global/scripts/actions/quests/what_a_foolish/contract.lua b/data-otservbr-global/scripts/actions/quests/what_a_foolish/contract.lua index c94d93a896c..281ee0bac6b 100644 --- a/data-otservbr-global/scripts/actions/quests/what_a_foolish/contract.lua +++ b/data-otservbr-global/scripts/actions/quests/what_a_foolish/contract.lua @@ -8,7 +8,7 @@ function whatFoolishContract.onUse(player, item, fromPosition, target, toPositio return false end - player:say('You sign the contract', TALKTYPE_MONSTER_SAY) + player:say("You sign the contract", TALKTYPE_MONSTER_SAY) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) item:remove() target:transform(128) diff --git a/data-otservbr-global/scripts/actions/quests/what_a_foolish/crate.lua b/data-otservbr-global/scripts/actions/quests/what_a_foolish/crate.lua index 79673c2826f..f38e278e3fa 100644 --- a/data-otservbr-global/scripts/actions/quests/what_a_foolish/crate.lua +++ b/data-otservbr-global/scripts/actions/quests/what_a_foolish/crate.lua @@ -9,7 +9,7 @@ function whatFoolishCrate.onUse(player, item, fromPosition, target, toPosition, end player:getPosition():sendMagicEffect(CONST_ME_SOUND_GREEN) - player:say('Your innocent whistle will fool them all...', TALKTYPE_MONSTER_SAY) + player:say("Your innocent whistle will fool them all...", TALKTYPE_MONSTER_SAY) toPosition:sendMagicEffect(CONST_ME_BLOCKHIT) item:transform(item.itemid + 1) return true diff --git a/data-otservbr-global/scripts/actions/quests/what_a_foolish/cushion.lua b/data-otservbr-global/scripts/actions/quests/what_a_foolish/cushion.lua index 5695484be2e..0def0a0284b 100644 --- a/data-otservbr-global/scripts/actions/quests/what_a_foolish/cushion.lua +++ b/data-otservbr-global/scripts/actions/quests/what_a_foolish/cushion.lua @@ -4,15 +4,14 @@ function whatFoolishCushion.onUse(player, item, fromPosition, target, toPosition return false end - if player:getStorageValue(Storage.WhatAFoolish.Questline) ~= 17 - or player:getStorageValue(Storage.WhatAFoolish.WhoopeeCushion) == 1 then + if player:getStorageValue(Storage.WhatAFoolish.Questline) ~= 17 or player:getStorageValue(Storage.WhatAFoolish.WhoopeeCushion) == 1 then return false end player:setStorageValue(Storage.WhatAFoolish.WhoopeeCushion, 1) - player:say('*chuckles maniacally*', TALKTYPE_MONSTER_SAY) + player:say("*chuckles maniacally*", TALKTYPE_MONSTER_SAY) player:getPosition():sendMagicEffect(CONST_ME_POFF) - player:say('Woooosh!', TALKTYPE_MONSTER_SAY, false, player, toPosition) + player:say("Woooosh!", TALKTYPE_MONSTER_SAY, false, player, toPosition) item:remove() return true end diff --git a/data-otservbr-global/scripts/actions/quests/what_a_foolish/disguise.lua b/data-otservbr-global/scripts/actions/quests/what_a_foolish/disguise.lua index 6edd261ad0f..86cec9563a4 100644 --- a/data-otservbr-global/scripts/actions/quests/what_a_foolish/disguise.lua +++ b/data-otservbr-global/scripts/actions/quests/what_a_foolish/disguise.lua @@ -5,7 +5,7 @@ condition:setOutfit({ lookType = 65 }) local whatFoolishDisguise = Action() function whatFoolishDisguise.onUse(player, item, fromPosition, target, toPosition, isHotkey) player:addCondition(condition) - player:say('You are now disguised as a mummy for 10 seconds. Hurry up and scare the caliph!', TALKTYPE_MONSTER_SAY) + player:say("You are now disguised as a mummy for 10 seconds. Hurry up and scare the caliph!", TALKTYPE_MONSTER_SAY) return true end diff --git a/data-otservbr-global/scripts/actions/quests/what_a_foolish/flask.lua b/data-otservbr-global/scripts/actions/quests/what_a_foolish/flask.lua index 089914f4682..221fb1bddec 100644 --- a/data-otservbr-global/scripts/actions/quests/what_a_foolish/flask.lua +++ b/data-otservbr-global/scripts/actions/quests/what_a_foolish/flask.lua @@ -1,7 +1,7 @@ local config = { - [2127] = { text = 'This mission stinks ... and now you do as well!', condition = true, transformId = 9170 }, - [6065] = { text = 'You carefully gather the quara ink', transformId = 9149 }, - [18233] = { text = 'You carefully gather the stalker blood.', transformId = 125 } + [2127] = { text = "This mission stinks ... and now you do as well!", condition = true, transformId = 9170 }, + [6065] = { text = "You carefully gather the quara ink", transformId = 9149 }, + [18233] = { text = "You carefully gather the stalker blood.", transformId = 125 }, } local poisonField = Condition(CONDITION_OUTFIT) diff --git a/data-otservbr-global/scripts/actions/quests/what_a_foolish/watch.lua b/data-otservbr-global/scripts/actions/quests/what_a_foolish/watch.lua index b12277c0feb..4a3c881af45 100644 --- a/data-otservbr-global/scripts/actions/quests/what_a_foolish/watch.lua +++ b/data-otservbr-global/scripts/actions/quests/what_a_foolish/watch.lua @@ -1,6 +1,6 @@ local targetDestination = { Position(32659, 31853, 13), - Position(32646, 31903, 3) + Position(32646, 31903, 3), } local whatFoolishWatch = Action() @@ -21,7 +21,7 @@ function whatFoolishWatch.onUse(player, item, fromPosition, target, toPosition, player:teleportTo(destination) destination:sendMagicEffect(CONST_ME_TELEPORT) - player:say('You are travelling in time', TALKTYPE_MONSTER_SAY) + player:say("You are travelling in time", TALKTYPE_MONSTER_SAY) return true end diff --git a/data-otservbr-global/scripts/actions/quests/what_a_foolish/worn_cloth.lua b/data-otservbr-global/scripts/actions/quests/what_a_foolish/worn_cloth.lua index c2beafe53e9..c65580e58de 100644 --- a/data-otservbr-global/scripts/actions/quests/what_a_foolish/worn_cloth.lua +++ b/data-otservbr-global/scripts/actions/quests/what_a_foolish/worn_cloth.lua @@ -4,13 +4,12 @@ function whatFoolishWorn.onUse(player, item, fromPosition, target, toPosition, i return false end - if player:getStorageValue(Storage.WhatAFoolish.Questline) ~= 34 - or player:getStorageValue(Storage.WhatAFoolish.OldWornCloth) == 1 then + if player:getStorageValue(Storage.WhatAFoolish.Questline) ~= 34 or player:getStorageValue(Storage.WhatAFoolish.OldWornCloth) == 1 then return false end player:setStorageValue(Storage.WhatAFoolish.OldWornCloth, 1) - player:say('Amazing! That was quite fast!', TALKTYPE_MONSTER_SAY) + player:say("Amazing! That was quite fast!", TALKTYPE_MONSTER_SAY) toPosition:sendMagicEffect(CONST_ME_BLOCKHIT) item:transform(143) return true diff --git a/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission01_lights.lua b/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission01_lights.lua index 06f200c30bc..0aa09ce5f3b 100644 --- a/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission01_lights.lua +++ b/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission01_lights.lua @@ -2,7 +2,7 @@ local positions = { { x = 33370, y = 31067, z = 9 }, { x = 33359, y = 31070, z = 9 }, { x = 33349, y = 31075, z = 8 }, - { x = 33351, y = 31069, z = 9 } + { x = 33351, y = 31069, z = 9 }, } local function transformLamp(position, itemId, transformId) @@ -21,7 +21,7 @@ function wrathEmperorMiss1Light.onUse(player, item, fromPosition, target, toPosi local pos = { Position(33369, 31075, 8), Position(33372, 31075, 8), - Position(33375, 31075, 8) + Position(33375, 31075, 8), } for i = 1, #pos do transformLamp(pos[i], 10491, 10479) @@ -34,7 +34,7 @@ function wrathEmperorMiss1Light.onUse(player, item, fromPosition, target, toPosi addEvent(Game.setStorageValue, 20 * 1000, GlobalStorage.WrathOfTheEmperor.Light02, 0) local pos = { Position(33357, 31077, 8), - Position(33360, 31079, 8) + Position(33360, 31079, 8), } for i = 1, #pos do transformLamp(pos[i], 10493, 10478) diff --git a/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission02_firstcontact_repair_teleport.lua b/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission02_firstcontact_repair_teleport.lua index f46c3df4c97..2fd2d315621 100644 --- a/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission02_firstcontact_repair_teleport.lua +++ b/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission02_firstcontact_repair_teleport.lua @@ -4,7 +4,7 @@ local waterpos = { Position({ x = 33283, y = 31037, z = 10 }), Position({ x = 33283, y = 31036, z = 10 }), Position({ x = 33283, y = 31038, z = 10 }), - Position({ x = 33283, y = 31035, z = 10 }) + Position({ x = 33283, y = 31035, z = 10 }), } local function revertWater(position) diff --git a/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission03_the_keeper.lua b/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission03_the_keeper.lua index 8c45f8fc45c..ea8d7d09571 100644 --- a/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission03_the_keeper.lua +++ b/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission03_the_keeper.lua @@ -12,7 +12,7 @@ function wrathEmperorMiss3Keeper.onUse(player, item, fromPosition, target, toPos player:removeItem(11364, 1) Game.setStorageValue(Storage.WrathoftheEmperor.Mission03, 6) toPosition:sendMagicEffect(CONST_ME_YELLOW_RINGS) - Game.createMonster('the keeper', { x = 33171, y = 31058, z = 11 }) + Game.createMonster("the keeper", { x = 33171, y = 31058, z = 11 }) Position({ x = 33171, y = 31058, z = 11 }):sendMagicEffect(CONST_ME_TELEPORT) addEvent(revertKeeperstorage, 60 * 1000) end diff --git a/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission08_uninvited_guests_lever.lua b/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission08_uninvited_guests_lever.lua index 53048e9ba1a..f638f28e0f7 100644 --- a/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission08_uninvited_guests_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission08_uninvited_guests_lever.lua @@ -1,6 +1,6 @@ local config = { [3184] = Position(33082, 31110, 2), - [3185] = Position(33078, 31080, 13) + [3185] = Position(33078, 31080, 13), } local wrathEmperorMiss8Uninvited = Action() diff --git a/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission10_a_message_of_freedom_sceptre.lua b/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission10_a_message_of_freedom_sceptre.lua index 33ea3b6cbd7..b4bb8b26500 100644 --- a/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission10_a_message_of_freedom_sceptre.lua +++ b/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission10_a_message_of_freedom_sceptre.lua @@ -12,29 +12,25 @@ function wrathEmperorMiss10Message.onUse(player, item, fromPosition, target, toP Game.createMonster(boss[target.uid], { x = toPosition.x + 4, y = toPosition.y, z = toPosition.z }) Game.setStorageValue(target.uid - 4, 1) elseif target.itemid == 11361 then - if toPosition.x > 33034 and toPosition.x < 33071 and - toPosition.y > 31079 and toPosition.y < 31102 then + if toPosition.x > 33034 and toPosition.x < 33071 and toPosition.y > 31079 and toPosition.y < 31102 then if player:getStorageValue(Storage.WrathoftheEmperor.BossStatus) == 1 then player:setStorageValue(Storage.WrathoftheEmperor.BossStatus, 2) player:setStorageValue(Storage.WrathoftheEmperor.Mission10, 3) --Questlog, Wrath of the Emperor "Mission 10: A Message of Freedom" player:say("The sceptre is almost torn from your hand as you banish the presence of the emperor.", TALKTYPE_MONSTER_SAY) end - elseif toPosition.x > 33080 and toPosition.x < 33111 and - toPosition.y > 31079 and toPosition.y < 31100 then + elseif toPosition.x > 33080 and toPosition.x < 33111 and toPosition.y > 31079 and toPosition.y < 31100 then if player:getStorageValue(Storage.WrathoftheEmperor.BossStatus) == 2 then player:setStorageValue(Storage.WrathoftheEmperor.BossStatus, 3) player:setStorageValue(Storage.WrathoftheEmperor.Mission10, 4) --Questlog, Wrath of the Emperor "Mission 10: A Message of Freedom" player:say("The sceptre is almost torn from your hand as you banish the presence of the emperor.", TALKTYPE_MONSTER_SAY) end - elseif toPosition.x > 33078 and toPosition.x < 33112 and - toPosition.y > 31106 and toPosition.y < 31127 then + elseif toPosition.x > 33078 and toPosition.x < 33112 and toPosition.y > 31106 and toPosition.y < 31127 then if player:getStorageValue(Storage.WrathoftheEmperor.BossStatus) == 3 then player:setStorageValue(Storage.WrathoftheEmperor.BossStatus, 4) player:setStorageValue(Storage.WrathoftheEmperor.Mission10, 5) --Questlog, Wrath of the Emperor "Mission 10: A Message of Freedom" player:say("The sceptre is almost torn from your hand as you banish the presence of the emperor.", TALKTYPE_MONSTER_SAY) end - elseif toPosition.x > 33035 and toPosition.x < 33069 and - toPosition.y > 31107 and toPosition.y < 31127 then + elseif toPosition.x > 33035 and toPosition.x < 33069 and toPosition.y > 31107 and toPosition.y < 31127 then if player:getStorageValue(Storage.WrathoftheEmperor.BossStatus) == 4 then player:setStorageValue(Storage.WrathoftheEmperor.BossStatus, 5) player:setStorageValue(Storage.WrathoftheEmperor.Mission10, 6) --Questlog, Wrath of the Emperor "Mission 10: A Message of Freedom" diff --git a/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission11_payback_time_lever.lua b/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission11_payback_time_lever.lua index 627b8d1403a..a32caefdea2 100644 --- a/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission11_payback_time_lever.lua +++ b/data-otservbr-global/scripts/actions/quests/wrath_of_the_emperor/mission11_payback_time_lever.lua @@ -7,16 +7,16 @@ local config = { Position(33355, 31403, 10), Position(33364, 31403, 10), Position(33355, 31410, 10), - Position(33364, 31410, 10) + Position(33364, 31410, 10), }, startAreaPosition = Position(33357, 31404, 9), - arenaPosition = Position(33359, 31406, 10) + arenaPosition = Position(33359, 31406, 10), } local wrathEmperorMiss11Payback = Action() function wrathEmperorMiss11Payback.onUse(player, item, fromPosition, target, toPosition, isHotkey) if Game.getStorageValue(Storage.WrathoftheEmperor.Mission11) == 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The arena is already in use.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The arena is already in use.") return true end diff --git a/data-otservbr-global/scripts/actions/rookgaard/banana_quest.lua b/data-otservbr-global/scripts/actions/rookgaard/banana_quest.lua index fefecd740bc..05e89ebae69 100644 --- a/data-otservbr-global/scripts/actions/rookgaard/banana_quest.lua +++ b/data-otservbr-global/scripts/actions/rookgaard/banana_quest.lua @@ -2,9 +2,9 @@ local bananaQuest = Action() function bananaQuest.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.QuestChests.BananaPalm) == 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The banana palm is empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The banana palm is empty.") else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found a banana.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a banana.") player:addItem(3587, 1) player:setStorageValue(Storage.QuestChests.BananaPalm, 1) end diff --git a/data-otservbr-global/scripts/actions/rookgaard/chest.lua b/data-otservbr-global/scripts/actions/rookgaard/chest.lua index d0865d378fc..504c54a69e9 100644 --- a/data-otservbr-global/scripts/actions/rookgaard/chest.lua +++ b/data-otservbr-global/scripts/actions/rookgaard/chest.lua @@ -1,7 +1,7 @@ local chest = Action() function chest.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if (player:getStorageValue(405492) == 1) then + if player:getStorageValue(405492) == 1 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The chest is empty.") return true end diff --git a/data-otservbr-global/scripts/actions/rookgaard/doublet_quest.lua b/data-otservbr-global/scripts/actions/rookgaard/doublet_quest.lua index 232588d5fef..cb74877614e 100644 --- a/data-otservbr-global/scripts/actions/rookgaard/doublet_quest.lua +++ b/data-otservbr-global/scripts/actions/rookgaard/doublet_quest.lua @@ -2,9 +2,9 @@ local doubletQuest = Action() function doubletQuest.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.QuestChests.DoubletQuest) == 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The loose board is empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The loose board is empty.") else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found a doublet.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a doublet.") player:addItem(3379, 1) player:setStorageValue(Storage.QuestChests.DoubletQuest, 1) end diff --git a/data-otservbr-global/scripts/actions/rookgaard/honey_flower_quest.lua b/data-otservbr-global/scripts/actions/rookgaard/honey_flower_quest.lua index 929f13fb136..8f5b7e08857 100644 --- a/data-otservbr-global/scripts/actions/rookgaard/honey_flower_quest.lua +++ b/data-otservbr-global/scripts/actions/rookgaard/honey_flower_quest.lua @@ -2,9 +2,9 @@ local honeyFlowerQuest = Action() function honeyFlowerQuest.onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.QuestChests.HoneyFlower) == 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The honeyflower patch is empty.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The honeyflower patch is empty.") else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found a honey flower.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a honey flower.") player:addItem(2984, 1) player:setStorageValue(Storage.QuestChests.HoneyFlower, 1) end diff --git a/data-otservbr-global/scripts/actions/rookgaard/sewer_lever.lua b/data-otservbr-global/scripts/actions/rookgaard/sewer_lever.lua index 6c15d5cd53e..9ad668f5ccc 100644 --- a/data-otservbr-global/scripts/actions/rookgaard/sewer_lever.lua +++ b/data-otservbr-global/scripts/actions/rookgaard/sewer_lever.lua @@ -2,15 +2,15 @@ local config = { bridgePositions = { { position = Position(32099, 32205, 8), groundId = 352, itemId = 4634 }, { position = Position(32100, 32205, 8), groundId = 4611 }, - { position = Position(32101, 32205, 8), groundId = 352, itemId = 4636 } + { position = Position(32101, 32205, 8), groundId = 352, itemId = 4636 }, }, leverPositions = { Position(32098, 32204, 8), - Position(32104, 32204, 8) + Position(32104, 32204, 8), }, relocatePosition = Position(32102, 32205, 8), relocateMonsterPosition = Position(32103, 32205, 8), - bridgeId = 5770 + bridgeId = 5770, } function moveToPosition(self, toPosition, pushMove, monsterPosition) diff --git a/data-otservbr-global/scripts/actions/roshamuul/prison/golden.lua b/data-otservbr-global/scripts/actions/roshamuul/prison/golden.lua index 89a710d2b33..40258b086d2 100644 --- a/data-otservbr-global/scripts/actions/roshamuul/prison/golden.lua +++ b/data-otservbr-global/scripts/actions/roshamuul/prison/golden.lua @@ -6,7 +6,7 @@ local setting = { storage = Storage.PrinceDrazzakTime, clearRoomStorage = GlobalStorage.PrinceDrazzakEventTime, bossName = "prince drazzak", - bossPosition = { x = 33528, y = 32333, z = 12 } + bossPosition = { x = 33528, y = 32333, z = 12 }, } local playerPositions = { @@ -14,7 +14,7 @@ local playerPositions = { { fromPos = { x = 33608, y = 32362, z = 11 }, toPos = { x = 33527, y = 32341, z = 12 } }, { fromPos = { x = 33609, y = 32362, z = 11 }, toPos = { x = 33528, y = 32341, z = 12 } }, { fromPos = { x = 33610, y = 32362, z = 11 }, toPos = { x = 33529, y = 32341, z = 12 } }, - { fromPos = { x = 33611, y = 32362, z = 11 }, toPos = { x = 33530, y = 32341, z = 12 } } + { fromPos = { x = 33611, y = 32362, z = 11 }, toPos = { x = 33530, y = 32341, z = 12 } }, } local golden = Action() @@ -31,8 +31,7 @@ function golden.onUse(player, item, fromPosition, target, toPosition, monster, i end if toPosition == Position(33606, 32362, 11) then - if roomIsOccupied(setting.centerRoom, setting.range, setting.range) - or Game.getStorageValue(setting.clearRoomStorage) == 1 then + if roomIsOccupied(setting.centerRoom, setting.range, setting.range) or Game.getStorageValue(setting.clearRoomStorage) == 1 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Someone is fighting against the boss! You need wait awhile.") return true end @@ -55,8 +54,7 @@ function golden.onUse(player, item, fromPosition, target, toPosition, monster, i end item:remove() -- One hour for clean the room and other time goto again - addEvent(clearRoom, setting.clearRoomTime * 60 * 1000, setting.centerRoom, - setting.range, setting.range, setting.clearRoomStorage) + addEvent(clearRoom, setting.clearRoomTime * 60 * 1000, setting.centerRoom, setting.range, setting.range, setting.clearRoomStorage) Game.createMonster(setting.bossName, setting.bossPosition) Game.setStorageValue(setting.clearRoomStorage, 1) end diff --git a/data-otservbr-global/scripts/actions/roshamuul/prison/keys.lua b/data-otservbr-global/scripts/actions/roshamuul/prison/keys.lua index bfd916c8bb5..f84fc173750 100644 --- a/data-otservbr-global/scripts/actions/roshamuul/prison/keys.lua +++ b/data-otservbr-global/scripts/actions/roshamuul/prison/keys.lua @@ -1,7 +1,7 @@ local config = { [20272] = { targetId = 20302, -- Target ID. - bossName = 'Zavarash', -- boss name + bossName = "Zavarash", -- boss name keyPlayerPosition = Position(33608, 32394, 11), -- Where the player should be. newPosition = Position(33567, 32422, 12), -- Position to teleport bossPosition = Position(33565, 32418, 12), -- Boss Position @@ -13,7 +13,7 @@ local config = { }, [20271] = { targetId = 20300, -- Target ID. - bossName = 'Horadron', -- boss name + bossName = "Horadron", -- boss name keyPlayerPosition = Position(33603, 32394, 11), -- Where the player should be. newPosition = Position(33607, 32421, 12), -- Position to teleport bossPosition = Position(33606, 32417, 12), -- Boss Position @@ -25,7 +25,7 @@ local config = { }, [20270] = { targetId = 20304, -- Target ID. - bossName = 'Terofar', -- boss name + bossName = "Terofar", -- boss name keyPlayerPosition = Position(33614, 32394, 11), -- Where the player should be. newPosition = Position(33526, 32421, 12), -- Position to teleport bossPosition = Position(33524, 32418, 12), -- Boss Position @@ -34,7 +34,7 @@ local config = { rangeX = 20, rangeY = 20, time = 15, -- time in minutes to remove the player - } + }, } local function roomIsOccupied(centerPosition, rangeX, rangeY) @@ -89,8 +89,8 @@ function keys.onUse(player, item, fromPosition, target, toPosition, isHotkey) end -- Send message - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have entered an ancient demon prison cell!') - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have fifteen minutes to kill and loot this boss, else you will lose that chance.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have entered an ancient demon prison cell!") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have fifteen minutes to kill and loot this boss, else you will lose that chance.") -- Let's roll addEvent(clearBossRoom, 60 * tmpConfig.time * 1000, player:getId(), tmpConfig.centerPosition, tmpConfig.rangeX, tmpConfig.rangeY, tmpConfig.exitPosition) diff --git a/data-otservbr-global/scripts/actions/shrines/feyrist_exit.lua b/data-otservbr-global/scripts/actions/shrines/feyrist_exit.lua index a99c5e57174..172056320ec 100644 --- a/data-otservbr-global/scripts/actions/shrines/feyrist_exit.lua +++ b/data-otservbr-global/scripts/actions/shrines/feyrist_exit.lua @@ -2,7 +2,7 @@ local backPositions = { { actionId = 24999, toPos = Position(32972, 32227, 7), effect = CONST_ME_SMALLPLANTS }, { actionId = 25000, toPos = Position(32192, 31419, 2), effect = CONST_ME_ICEATTACK }, { actionId = 25001, toPos = Position(33059, 32716, 5), effect = CONST_ME_ENERGYHIT }, - { actionId = 25002, toPos = Position(32911, 32336, 15), effect = CONST_ME_MAGIC_RED } + { actionId = 25002, toPos = Position(32911, 32336, 15), effect = CONST_ME_MAGIC_RED }, } local feyristExit = Action() diff --git a/data-otservbr-global/scripts/actions/spellbook.lua b/data-otservbr-global/scripts/actions/spellbook.lua index c58748f0347..2e1328bcac4 100644 --- a/data-otservbr-global/scripts/actions/spellbook.lua +++ b/data-otservbr-global/scripts/actions/spellbook.lua @@ -11,14 +11,16 @@ function spellbook.onUse(player, item, fromPosition, target, toPosition, isHotke spell.mana = spell.manapercent .. "%" end if spell.level > 0 then - tlvl[#tlvl+1] = spell + tlvl[#tlvl + 1] = spell elseif spell.mlevel > 0 then - tml[#tml+1] = spell + tml[#tml + 1] = spell end end end - table.sort(tlvl, function(a, b) return a.level < b.level end) + table.sort(tlvl, function(a, b) + return a.level < b.level + end) local prevLevel = -1 for i, spell in ipairs(tlvl) do local line = "" @@ -32,7 +34,9 @@ function spellbook.onUse(player, item, fromPosition, target, toPosition, isHotke text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n" end text = text .. "\n" - table.sort(tml, function(a, b) return a.mlevel < b.mlevel end) + table.sort(tml, function(a, b) + return a.mlevel < b.mlevel + end) local prevmLevel = -1 for i, spell in ipairs(tml) do local line = "" @@ -46,7 +50,6 @@ function spellbook.onUse(player, item, fromPosition, target, toPosition, isHotke text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n" end - player:showTextDialog(item:getId(), text) return true end diff --git a/data-otservbr-global/scripts/actions/system/quest_reward_common.lua b/data-otservbr-global/scripts/actions/system/quest_reward_common.lua index 0629b5ada74..7c79df383e7 100644 --- a/data-otservbr-global/scripts/actions/system/quest_reward_common.lua +++ b/data-otservbr-global/scripts/actions/system/quest_reward_common.lua @@ -16,8 +16,8 @@ Harsky *** Stutch * Ferumbras * Frodo ** -Noodles ****]] - } +Noodles ****]], + }, } local achievementTable = { @@ -26,7 +26,7 @@ local achievementTable = { [6085] = "Annihilator", [6086] = "Annihilator", [6087] = "Annihilator", - [6088] = "Annihilator" + [6088] = "Annihilator", } local function playerAddItem(params, item) @@ -113,8 +113,7 @@ function questReward.onUse(player, item, fromPosition, itemEx, toPosition) return true end if (player:getFreeCapacity() / 100) < setting.weight then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - message .. ". Weighing " .. setting.weight .. " oz, it is too heavy for you to carry.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, message .. ". Weighing " .. setting.weight .. " oz, it is too heavy for you to carry.") return true end end @@ -156,7 +155,7 @@ function questReward.onUse(player, item, fromPosition, itemEx, toPosition) } if count > 1 and ItemType(itemid):isStackable() then - if (itemDescriptions.plural) then + if itemDescriptions.plural then itemName = itemDescriptions.plural end addItemParams.message = "You have found " .. count .. " " .. itemName @@ -182,7 +181,7 @@ function questReward.onUse(player, item, fromPosition, itemEx, toPosition) storage = setting.storage, action = setting.keyAction, itemBagName = itemBagName, - containerReward = itemBag + containerReward = itemBag, } if not playerAddContainerItem(addContainerItemParams, item) then diff --git a/data-otservbr-global/scripts/actions/tools/grinder.lua b/data-otservbr-global/scripts/actions/tools/grinder.lua index 958e735ce14..2f66cb4c060 100644 --- a/data-otservbr-global/scripts/actions/tools/grinder.lua +++ b/data-otservbr-global/scripts/actions/tools/grinder.lua @@ -1,7 +1,7 @@ local grinder = Action() function grinder.onUse(player, item, frompos, item2, topos) - if (item2.itemid == 21573) then + if item2.itemid == 21573 then return onGrindItem(player, item, frompos, item2, topos) end end diff --git a/data-otservbr-global/scripts/actions/tools/hammer.lua b/data-otservbr-global/scripts/actions/tools/hammer.lua index ee97c032ebc..3473a76fd4f 100644 --- a/data-otservbr-global/scripts/actions/tools/hammer.lua +++ b/data-otservbr-global/scripts/actions/tools/hammer.lua @@ -15,28 +15,28 @@ local settingTable = { [42501] = { position = Position(32647, 32216, 7), removeItem = 12183, - createItem = 6474 + createItem = 6474, }, [42502] = { position = Position(32660, 32213, 7), removeItem = 12183, - createItem = 6474 + createItem = 6474, }, [42503] = { position = Position(32644, 32183, 6), removeItem = 12185, - createItem = 6473 + createItem = 6473, }, [42504] = { position = Position(32660, 32201, 7), removeItem = 12184, - createItem = 6473 + createItem = 6473, }, [42505] = { position = Position(32652, 32200, 5), removeItem = 12185, - createItem = 6473 - } + createItem = 6473, + }, } local hammer = Action() diff --git a/data-otservbr-global/scripts/actions/tools/present.lua b/data-otservbr-global/scripts/actions/tools/present.lua index 5ed0a2f1baf..af9bf394378 100644 --- a/data-otservbr-global/scripts/actions/tools/present.lua +++ b/data-otservbr-global/scripts/actions/tools/present.lua @@ -1,9 +1,9 @@ local present = Action() function present.onUse(cid, item, fromPosition, itemEx, toPosition) - if (item.itemid == 12171) then - if (itemEx.itemid == 12172) then - if (getPlayerStorageValue(cid, Storage.RottinWoodAndMaried.Mission03) == 1) then + if item.itemid == 12171 then + if itemEx.itemid == 12172 then + if getPlayerStorageValue(cid, Storage.RottinWoodAndMaried.Mission03) == 1 then doRemoveItem(item.uid, 1) doRemoveItem(itemEx.uid, 1) doPlayerAddItem(cid, 12173, 1) diff --git a/data-otservbr-global/scripts/actions/tools/rust_remover.lua b/data-otservbr-global/scripts/actions/tools/rust_remover.lua index 386bee7d49d..f5adad4511f 100644 --- a/data-otservbr-global/scripts/actions/tools/rust_remover.lua +++ b/data-otservbr-global/scripts/actions/tools/rust_remover.lua @@ -9,7 +9,7 @@ local config = { { { 60001, 90000 }, SCALE_ARMOR }, { { 90001, 97000 }, BRASS_ARMOR }, { { 97001, 99000 }, PLATE_ARMOR }, - { { 99001, 100000 }, KNIGHT_ARMOR } + { { 99001, 100000 }, KNIGHT_ARMOR }, }, [8906] = { -- semi-rare rusty helmet @@ -19,10 +19,9 @@ local config = { { { 70001, 81000 }, STEEL_HELMET }, { { 81001, 94000 }, CROWN_HELMET }, { { 94001, 98500 }, CRUSADER_HELMET }, - { { 98501, 100000 }, ROYAL_HELMET } + { { 98501, 100000 }, ROYAL_HELMET }, }, - [8895] = { -- semi-rare rusty armor { { 1, 35165 } }, { { 35166, 57500 }, CHAIN_ARMOR }, @@ -31,7 +30,7 @@ local config = { { { 81001, 90000 }, PLATE_ARMOR }, { { 90001, 96500 }, KNIGHT_ARMOR }, { { 96501, 99500 }, PALADIN_ARMOR }, - { { 99501, 100000 }, CROWN_ARMOR } + { { 99501, 100000 }, CROWN_ARMOR }, }, [8896] = { -- rare rusty armor { { 1, 50000 } }, @@ -44,7 +43,7 @@ local config = { { { 96000, 97000 }, CROWN_ARMOR }, { { 96001, 98500 }, GOLDEN_ARMOR }, { { 98501, 99500 }, DRAGON_SCALE_MAIL }, - { { 99501, 100000 }, MAGIC_PLATE_ARMOR } + { { 99501, 100000 }, MAGIC_PLATE_ARMOR }, }, [8897] = { -- common rusty legs { { 1, 26764 } }, @@ -52,7 +51,7 @@ local config = { { { 60001, 85000 }, CHAIN_LEGS }, { { 85001, 98000 }, BRASS_LEGS }, { { 98001, 99500 }, PLATE_LEGS }, - { { 99501, 100000 }, KNIGHT_LEGS } + { { 99501, 100000 }, KNIGHT_LEGS }, }, [8898] = { -- semi-rare rusty legs { { 1, 35165 } }, @@ -62,7 +61,7 @@ local config = { { { 87501, 95500 }, PLATE_LEGS }, { { 95501, 98250 }, KNIGHT_LEGS }, { { 98251, 99250 }, CROWN_LEGS }, - { { 99251, 100000 }, GOLDEN_LEGS } + { { 99251, 100000 }, GOLDEN_LEGS }, }, [8899] = { -- rare rusty legs { { 1, 50000 } }, @@ -70,8 +69,8 @@ local config = { { { 75001, 90000 }, PLATE_LEGS }, { { 90001, 97500 }, KNIGHT_LEGS }, { { 97501, 99000 }, CROWN_LEGS }, - { { 99001, 100000 }, GOLDEN_LEGS } - } + { { 99001, 100000 }, GOLDEN_LEGS }, + }, } local rustRemover = Action() diff --git a/data-otservbr-global/scripts/actions/tools/skinning.lua b/data-otservbr-global/scripts/actions/tools/skinning.lua index a18ed2db470..b87f9c92cca 100644 --- a/data-otservbr-global/scripts/actions/tools/skinning.lua +++ b/data-otservbr-global/scripts/actions/tools/skinning.lua @@ -94,8 +94,8 @@ local config = { [8109] = { value = CREATURE_SKINNING_CHANCE, newItem = 5905, after = 8111 }, -- vampire lord, after being killed (the count, diblis, etc) [8110] = { value = CREATURE_SKINNING_CHANCE, newItem = 5905, after = 8111 }, -- vampire lord (the count, diblis, etc) [18958] = { value = CREATURE_SKINNING_CHANCE, newItem = 5905, after = 18959 }, -- vampire viscount - [18961] = { value = CREATURE_SKINNING_CHANCE, newItem = 5905, after = 18959 } -- vampire viscount, after being killed - } + [18961] = { value = CREATURE_SKINNING_CHANCE, newItem = 5905, after = 18959 }, -- vampire viscount, after being killed + }, } local skinning = Action() @@ -160,7 +160,7 @@ function skinning.onUse(player, item, fromPosition, target, toPosition, isHotkey end local random, effect, transform = math.random(1, chanceRange), CONST_ME_MAGIC_GREEN, true - if type(skin[1]) == 'table' then + if type(skin[1]) == "table" then local added = false local _skin for i = 1, #skin do @@ -170,7 +170,7 @@ function skinning.onUse(player, item, fromPosition, target, toPosition, isHotkey target:getPosition():sendMagicEffect(CONST_ME_ICEAREA) local gobletItem = player:addItem(_skin.newItem, _skin.amount or 1) if gobletItem then - gobletItem:setDescription(_skin.desc:gsub('|PLAYERNAME|', player:getName())) + gobletItem:setDescription(_skin.desc:gsub("|PLAYERNAME|", player:getName())) end target:remove() added = true @@ -193,7 +193,7 @@ function skinning.onUse(player, item, fromPosition, target, toPosition, isHotkey elseif random <= skin.value then if isInArray({ 7441, 7442, 7444, 7445 }, target.itemid) then if skin.newItem == 7446 then - player:addAchievement('Ice Sculptor') + player:addAchievement("Ice Sculptor") end target:transform(skin.newItem, 1) effect = CONST_ME_HITAREA @@ -202,7 +202,7 @@ function skinning.onUse(player, item, fromPosition, target, toPosition, isHotkey end else if isInArray({ 7441, 7442, 7444, 7445 }, target.itemid) then - player:say('The attempt of sculpting failed miserably.', TALKTYPE_MONSTER_SAY) + player:say("The attempt of sculpting failed miserably.", TALKTYPE_MONSTER_SAY) effect = CONST_ME_HITAREA target:remove() else diff --git a/data-otservbr-global/scripts/actions/tools/toolgear.lua b/data-otservbr-global/scripts/actions/tools/toolgear.lua index 476449bcd24..7afafd32bea 100644 --- a/data-otservbr-global/scripts/actions/tools/toolgear.lua +++ b/data-otservbr-global/scripts/actions/tools/toolgear.lua @@ -2,13 +2,13 @@ local toolGear = Action() function toolGear.onUse(player, item, fromPosition, target, toPosition, isHotkey) return onUseRope(player, item, fromPosition, target, toPosition, isHotkey) - or onUseShovel(player, item, fromPosition, target, toPosition, isHotkey) - or onUsePick(player, item, fromPosition, target, toPosition, isHotkey) - or onUseMachete(player, item, fromPosition, target, toPosition, isHotkey) - or onUseCrowbar(player, item, fromPosition, target, toPosition, isHotkey) - or onUseSpoon(player, item, fromPosition, target, toPosition, isHotkey) - or onUseScythe(player, item, fromPosition, target, toPosition, isHotkey) - or onUseKitchenKnife(player, item, fromPosition, target, toPosition, isHotkey) + or onUseShovel(player, item, fromPosition, target, toPosition, isHotkey) + or onUsePick(player, item, fromPosition, target, toPosition, isHotkey) + or onUseMachete(player, item, fromPosition, target, toPosition, isHotkey) + or onUseCrowbar(player, item, fromPosition, target, toPosition, isHotkey) + or onUseSpoon(player, item, fromPosition, target, toPosition, isHotkey) + or onUseScythe(player, item, fromPosition, target, toPosition, isHotkey) + or onUseKitchenKnife(player, item, fromPosition, target, toPosition, isHotkey) end toolGear:id(9594, 9596, 9598) diff --git a/data-otservbr-global/scripts/actions/valuables/random_items.lua b/data-otservbr-global/scripts/actions/valuables/random_items.lua index 1ef6963af04..c012c549a44 100644 --- a/data-otservbr-global/scripts/actions/valuables/random_items.lua +++ b/data-otservbr-global/scripts/actions/valuables/random_items.lua @@ -28,9 +28,9 @@ local config = { { from = 9892, to = 9929, itemId = 5895 }, { from = 9930, to = 9967, itemId = 5880 }, { from = 9968, to = 9998, itemId = 12519 }, - { from = 9999, to = 10001, itemId = 3079 } + { from = 9999, to = 10001, itemId = 3079 }, }, - effect = CONST_ME_POFF + effect = CONST_ME_POFF, }, [14172] = { -- gooey mass chances = { @@ -42,9 +42,9 @@ local config = { { from = 8150, to = 9823, itemId = 238, count = 2 }, { from = 9824, to = 9923, itemId = 9058 }, { from = 9924, to = 9990, itemId = 14143 }, - { from = 9991, to = 10001, itemId = 14089 } + { from = 9991, to = 10001, itemId = 14089 }, }, - effect = CONST_ME_HITBYPOISON + effect = CONST_ME_HITBYPOISON, }, [15698] = { -- gnomish supply package chances = { @@ -72,9 +72,9 @@ local config = { { from = 9930, to = 9958, itemId = 16242 }, { from = 9959, to = 9987, itemId = 3037 }, { from = 9988, to = 9994, itemId = 3041 }, - { from = 9995, to = 10001, itemId = 3038 } + { from = 9995, to = 10001, itemId = 3038 }, }, - effect = CONST_ME_CRAPS + effect = CONST_ME_CRAPS, }, [22763] = { -- shaggy ogre bag chances = { @@ -95,9 +95,9 @@ local config = { { from = 8711, to = 9033, itemId = 22192 }, { from = 9034, to = 9356, itemId = 7413 }, { from = 9357, to = 9679, itemId = 7452 }, - { from = 9680, to = 10001, itemId = 5668 } + { from = 9680, to = 10001, itemId = 5668 }, }, - effect = CONST_ME_CRAPS + effect = CONST_ME_CRAPS, }, [23509] = { -- mysterious remains chances = { @@ -123,9 +123,9 @@ local config = { { from = 9837, to = 9893, itemId = 9058 }, { from = 9894, to = 9929, itemId = 22737 }, { from = 9930, to = 9958, itemId = 23536 }, - { from = 9959, to = 10001, itemId = 22731 } + { from = 9959, to = 10001, itemId = 22731 }, }, - effect = CONST_ME_CRAPS + effect = CONST_ME_CRAPS, }, [27654] = { -- surprise jar chances = { @@ -133,10 +133,10 @@ local config = { { from = 2501, to = 5001, itemId = 3036 }, { from = 5002, to = 6668, itemId = 22721 }, { from = 6668, to = 8335, itemId = 22516 }, - { from = 8336, to = 10001, itemId = 27653 } + { from = 8336, to = 10001, itemId = 27653 }, }, - effect = CONST_ME_CRAPS - } + effect = CONST_ME_CRAPS, + }, } local randomItems = Action() @@ -156,10 +156,10 @@ function randomItems.onUse(player, item, fromPosition, target, toPosition, isHot player:addItem(itemId, count) if item.itemid == 12413 then local itemType = ItemType(itemId) - player:say('You found ' .. (count > 1 and count or (itemType:getArticle() ~= '' and itemType:getArticle() or '')) .. ' ' .. (count > 1 and itemType:getPluralName() or itemType:getName()) .. ' in the bag.', TALKTYPE_MONSTER_SAY) + player:say("You found " .. (count > 1 and count or (itemType:getArticle() ~= "" and itemType:getArticle() or "")) .. " " .. (count > 1 and itemType:getPluralName() or itemType:getName()) .. " in the bag.", TALKTYPE_MONSTER_SAY) end else - player:say('You found nothing useful.', TALKTYPE_MONSTER_SAY) + player:say("You found nothing useful.", TALKTYPE_MONSTER_SAY) end item:getPosition():sendMagicEffect(useId.effect) diff --git a/data-otservbr-global/scripts/actions/worldboard.lua b/data-otservbr-global/scripts/actions/worldboard.lua index 518f6a56cc3..3d50c2fb350 100644 --- a/data-otservbr-global/scripts/actions/worldboard.lua +++ b/data-otservbr-global/scripts/actions/worldboard.lua @@ -4,18 +4,18 @@ local communicates = { -- Fury Gates [1] = { globalStorage = 65000, - communicate = "A fiery fury gate has opened near one of the major cities somewhere in Tibia." + communicate = "A fiery fury gate has opened near one of the major cities somewhere in Tibia.", }, -- Yasir [2] = { globalStorage = 65014, - communicate = "Oriental ships sighted! A trader for exotic creature products may currently be visiting Carlin, Ankrahmun or Liberty Bay." + communicate = "Oriental ships sighted! A trader for exotic creature products may currently be visiting Carlin, Ankrahmun or Liberty Bay.", }, -- Nightmare Isle [3] = { globalStorage = 65015, - communicate = "A sandstorm travels through Darama, leading to isles full of deadly creatures inside a nightmare. Avoid the river near Drefia/northernmost coast/Ankhramun tar pits!" - } + communicate = "A sandstorm travels through Darama, leading to isles full of deadly creatures inside a nightmare. Avoid the river near Drefia/northernmost coast/Ankhramun tar pits!", + }, } function worldBoard.onUse(player, item, fromPosition, target, toPosition, isHotkey) diff --git a/data-otservbr-global/scripts/actions/worldchanges/deeplings/bosses_reward.lua b/data-otservbr-global/scripts/actions/worldchanges/deeplings/bosses_reward.lua index bb066216c1d..d8b3604e9c5 100644 --- a/data-otservbr-global/scripts/actions/worldchanges/deeplings/bosses_reward.lua +++ b/data-otservbr-global/scripts/actions/worldchanges/deeplings/bosses_reward.lua @@ -1,36 +1,36 @@ local rewards = { [9302] = { storage = Storage.DeeplingBosses.Jaul, - bossName = 'Jaul', + bossName = "Jaul", items = { { rand = true, itemId = { 13990, 14021 } }, { itemId = 3035, count = 50 }, { itemId = 14224 }, - { itemId = 14042 } - } + { itemId = 14042 }, + }, }, [9303] = { storage = Storage.DeeplingBosses.Tanjis, - bossName = 'Tanjis', + bossName = "Tanjis", items = { { rand = true, itemId = { 14022, 3027 } }, { itemId = 14223 }, { itemId = 3035, count = 20 }, { itemId = 13990 }, - { itemId = 14042 } - } + { itemId = 14042 }, + }, }, [9304] = { storage = Storage.DeeplingBosses.Obujos, - bossName = 'Obujos', + bossName = "Obujos", items = { { rand = true, itemId = { 14023, 281 } }, { itemId = 14222 }, { itemId = 14043 }, { itemId = 3035, count = 30 }, - { itemId = 13987 } - } - } + { itemId = 13987 }, + }, + }, } local bossesReward = Action() @@ -43,11 +43,10 @@ function bossesReward.onUse(player, item, fromPosition, target, toPosition, isHo end if player:getStorageValue(reward.storage) ~= 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, reward.bossName .. ' defends his belongings and will not let you open his chest.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, reward.bossName .. " defends his belongings and will not let you open his chest.") return true end - for i = 1, #reward.items do local items = reward.items[i] if items.rand then diff --git a/data-otservbr-global/scripts/actions/worldchanges/the_mummys_curse/horestis_jars.lua b/data-otservbr-global/scripts/actions/worldchanges/the_mummys_curse/horestis_jars.lua index 9c511518a36..31af13df3e1 100644 --- a/data-otservbr-global/scripts/actions/worldchanges/the_mummys_curse/horestis_jars.lua +++ b/data-otservbr-global/scripts/actions/worldchanges/the_mummys_curse/horestis_jars.lua @@ -21,7 +21,7 @@ function horestisJars.onUse(cid, item, fromPosition, itemEx, toPosition) local chances = math.random(10) if item.actionid == 50006 then - if (item.itemid == 12511) then + if item.itemid == 12511 then if getPlayerStorageValue(cid, Storage.TheMummysCurse.Time1) <= os.time() then if chances == 1 then doTransformItem(item.uid, 12506) @@ -36,8 +36,8 @@ function horestisJars.onUse(cid, item, fromPosition, itemEx, toPosition) end end elseif item.actionid == 50007 then - if (item.itemid == 12511) then - if (getGlobalStorageValue(GlobalStorage.TheMummysCurse) == 1) then + if item.itemid == 12511 then + if getGlobalStorageValue(GlobalStorage.TheMummysCurse) == 1 then if getPlayerStorageValue(cid, Storage.TheMummysCurse.Time2) <= os.time() then if chances == 1 then doTransformItem(item.uid, 12506) @@ -55,8 +55,8 @@ function horestisJars.onUse(cid, item, fromPosition, itemEx, toPosition) end end elseif item.actionid == 50008 then - if (item.itemid == 12511) then - if (getGlobalStorageValue(GlobalStorage.TheMummysCurse) == 2) then + if item.itemid == 12511 then + if getGlobalStorageValue(GlobalStorage.TheMummysCurse) == 2 then if getPlayerStorageValue(cid, Storage.TheMummysCurse.Time3) <= os.time() then if chances == 1 then doTransformItem(item.uid, 12506) @@ -74,8 +74,8 @@ function horestisJars.onUse(cid, item, fromPosition, itemEx, toPosition) end end elseif item.actionid == 50009 then - if (item.itemid == 12511) then - if (getGlobalStorageValue(GlobalStorage.TheMummysCurse) == 3) then + if item.itemid == 12511 then + if getGlobalStorageValue(GlobalStorage.TheMummysCurse) == 3 then if getPlayerStorageValue(cid, Storage.TheMummysCurse.Time4) <= os.time() then if chances == 1 then doTransformItem(item.uid, 12506) @@ -93,8 +93,8 @@ function horestisJars.onUse(cid, item, fromPosition, itemEx, toPosition) end end elseif item.actionid == 50010 then - if (item.itemid == 12511) then - if (getGlobalStorageValue(GlobalStorage.TheMummysCurse) == 4) then + if item.itemid == 12511 then + if getGlobalStorageValue(GlobalStorage.TheMummysCurse) == 4 then doTransformItem(item.uid, 12506) -- Remover Barreira e Sumonar Boss doRemoveItem(getTileItemById({ x = 32941, y = 32754, z = 12 }, 3514).uid, 1) diff --git a/data-otservbr-global/scripts/bestiary/charms.lua b/data-otservbr-global/scripts/bestiary/charms.lua index 03114d52a6a..951b935dc6d 100644 --- a/data-otservbr-global/scripts/bestiary/charms.lua +++ b/data-otservbr-global/scripts/bestiary/charms.lua @@ -11,7 +11,7 @@ local charms = { messageCancel = "You wounded the monster.", messageServerLog = "[Wound charm]", effect = CONST_ME_HITAREA, - points = 600 + points = 600, }, -- Enflame charm [2] = { @@ -25,7 +25,7 @@ local charms = { messageCancel = "You enflamed the monster.", messageServerLog = "[Enflame charm]", effect = CONST_ME_HITBYFIRE, - points = 1000 + points = 1000, }, -- Poison charm [3] = { @@ -39,7 +39,7 @@ local charms = { messageCancel = "You poisoned the monster.", messageServerLog = "[Poison charm]", effect = CONST_ME_GREEN_RINGS, - points = 600 + points = 600, }, -- Freeze charm [4] = { @@ -53,7 +53,7 @@ local charms = { messageCancel = "You frozen the monster.", messageServerLog = "[Freeze charm]", effect = CONST_ME_ICEATTACK, - points = 800 + points = 800, }, --Zap charm [5] = { @@ -67,7 +67,7 @@ local charms = { messageCancel = "You eletrocuted the monster.", messageServerLog = "[Zap charm]", effect = CONST_ME_ENERGYHIT, - points = 800 + points = 800, }, --Curse charm [6] = { @@ -81,7 +81,7 @@ local charms = { messageCancel = "You curse the monster.", messageServerLog = "[Curse charm]", effect = CONST_ME_SMALLCLOUDS, - points = 900 + points = 900, }, -- Cripple charm [7] = { @@ -90,7 +90,7 @@ local charms = { type = CHARM_OFFENSIVE, chance = 10, messageCancel = "You cripple the monster.", - points = 500 + points = 500, }, -- Parry charm [8] = { @@ -102,7 +102,7 @@ local charms = { messageCancel = "You parry the attack.", messageServerLog = "[Parry charm]", effect = CONST_ME_EXPLOSIONAREA, - points = 1000 + points = 1000, }, -- Dodge charm [9] = { @@ -112,7 +112,7 @@ local charms = { chance = 10, messageCancel = "You dodge the attack.", effect = CONST_ME_POFF, - points = 600 + points = 600, }, -- Adrenaline burst charm [10] = { @@ -122,7 +122,7 @@ local charms = { type = CHARM_DEFENSIVE, chance = 10, messageCancel = "Your movements where bursted.", - points = 500 + points = 500, }, -- Numb charm [11] = { @@ -131,7 +131,7 @@ local charms = { type = CHARM_DEFENSIVE, chance = 10, messageCancel = "You numb the monster.", - points = 500 + points = 500, }, -- Cleanse charm [12] = { @@ -141,7 +141,7 @@ local charms = { type = CHARM_DEFENSIVE, chance = 10, messageCancel = "You purified the attack.", - points = 700 + points = 700, }, -- Bless charm [13] = { @@ -150,7 +150,7 @@ local charms = { type = CHARM_PASSIVE, percent = 10, chance = 100, - points = 800 + points = 800, }, -- Scavenge charm [14] = { @@ -159,7 +159,7 @@ local charms = { type = CHARM_PASSIVE, percent = 25, chance = 100, - points = 800 + points = 800, }, -- Gut charm [15] = { @@ -177,7 +177,7 @@ local charms = { type = CHARM_PASSIVE, percent = 8, chance = 100, - points = 2000 + points = 2000, }, -- Divine wrath charm [17] = { @@ -191,7 +191,7 @@ local charms = { messageCancel = "You divine the monster.", messageServerLog = "[Divine charm]", effect = CONST_ME_HOLYDAMAGE, - points = 1500 + points = 1500, }, -- Vampiric embrace charm [18] = { @@ -200,7 +200,7 @@ local charms = { type = CHARM_PASSIVE, percent = 400, chance = 100, - points = 1500 + points = 1500, }, -- Void's call charm [19] = { @@ -209,8 +209,8 @@ local charms = { type = CHARM_PASSIVE, percent = 200, chance = 100, - points = 1500 - } + points = 1500, + }, } for charmId, charmsTable in ipairs(charms) do diff --git a/data-otservbr-global/scripts/creaturescripts/customs/freequests.lua b/data-otservbr-global/scripts/creaturescripts/customs/freequests.lua index fa7fed14022..e1f28ed9b42 100644 --- a/data-otservbr-global/scripts/creaturescripts/customs/freequests.lua +++ b/data-otservbr-global/scripts/creaturescripts/customs/freequests.lua @@ -400,8 +400,7 @@ end local freeQuests = CreatureEvent("FreeQuests") function freeQuests.onLogin(player) - if not configManager.getBoolean(configKeys.TOGGLE_FREE_QUEST) or - player:getStorageValue(Storage.FreeQuests) == stage then + if not configManager.getBoolean(configKeys.TOGGLE_FREE_QUEST) or player:getStorageValue(Storage.FreeQuests) == stage then return true end diff --git a/data-otservbr-global/scripts/creaturescripts/customs/vip.lua b/data-otservbr-global/scripts/creaturescripts/customs/vip.lua index 00be2754e82..4c6485c4c6c 100644 --- a/data-otservbr-global/scripts/creaturescripts/customs/vip.lua +++ b/data-otservbr-global/scripts/creaturescripts/customs/vip.lua @@ -3,8 +3,12 @@ local playerLogin = CreatureEvent("VipLogin") function playerLogin.onLogin(player) if configManager.getBoolean(configKeys.VIP_SYSTEM_ENABLED) then local wasVip = player:getStorageValue(Storage.VipSystem.IsVip) == 1 - if wasVip and not player:isVip() then player:onRemoveVip() end - if not wasVip and player:isVip() then player:onAddVip(player:getVipDays()) end + if wasVip and not player:isVip() then + player:onRemoveVip() + end + if not wasVip and player:isVip() then + player:onAddVip(player:getVipDays()) + end if player:isVip() then CheckPremiumAndPrint(player, MESSAGE_LOGIN) diff --git a/data-otservbr-global/scripts/creaturescripts/familiar/on_login.lua b/data-otservbr-global/scripts/creaturescripts/familiar/on_login.lua index 4f4f34fa58d..8e9c7fdbf81 100644 --- a/data-otservbr-global/scripts/creaturescripts/familiar/on_login.lua +++ b/data-otservbr-global/scripts/creaturescripts/familiar/on_login.lua @@ -26,7 +26,9 @@ function familiarOnLogin.onLogin(player) end end - if not familiarName then return true end + if not familiarName then + return true + end player:createFamiliar(familiarName, familiarTimeLeft) return true end diff --git a/data-otservbr-global/scripts/creaturescripts/monster/gaz_haragoth_heal.lua b/data-otservbr-global/scripts/creaturescripts/monster/gaz_haragoth_heal.lua index e8335c939b3..77dbbac6034 100644 --- a/data-otservbr-global/scripts/creaturescripts/monster/gaz_haragoth_heal.lua +++ b/data-otservbr-global/scripts/creaturescripts/monster/gaz_haragoth_heal.lua @@ -7,7 +7,7 @@ condition:setParameter(CONDITION_PARAM_HEALTHTICKS, 7 * 1000) local gazHaragothHeal = CreatureEvent("GazHaragothHeal") function gazHaragothHeal.onThink(creature) local hp = (creature:getHealth() / creature:getMaxHealth()) * 100 - if (hp < 12.5 and not creature:getCondition(CONDITION_REGENERATION, CONDITIONID_DEFAULT, 88888)) then + if hp < 12.5 and not creature:getCondition(CONDITION_REGENERATION, CONDITIONID_DEFAULT, 88888) then creature:addCondition(condition) creature:say("Gaz'haragoth begins to draw on the nightmares to HEAL himself!", TALKTYPE_ORANGE_2) addEvent(function(cid) diff --git a/data-otservbr-global/scripts/creaturescripts/monster/lower_roshamuul.lua b/data-otservbr-global/scripts/creaturescripts/monster/lower_roshamuul.lua index aec0ff9a7bc..c27c83a21b1 100644 --- a/data-otservbr-global/scripts/creaturescripts/monster/lower_roshamuul.lua +++ b/data-otservbr-global/scripts/creaturescripts/monster/lower_roshamuul.lua @@ -1,6 +1,6 @@ local setting = { ["frazzlemaw"] = roshamuul_killed_frazzlemaws, - ["silencer"] = ROSHAMUUL_KILLED_SILENCERS + ["silencer"] = ROSHAMUUL_KILLED_SILENCERS, } local lowerRoshamuul = CreatureEvent("LowerRoshamuul") diff --git a/data-otservbr-global/scripts/creaturescripts/monster/omrafir_explode.lua b/data-otservbr-global/scripts/creaturescripts/monster/omrafir_explode.lua index d968fc39726..1804c3f086e 100644 --- a/data-otservbr-global/scripts/creaturescripts/monster/omrafir_explode.lua +++ b/data-otservbr-global/scripts/creaturescripts/monster/omrafir_explode.lua @@ -23,8 +23,7 @@ local omrafirExplode = CreatureEvent("OmrafirExplode") function omrafirExplode.onThink(creature) local hp = (creature:getHealth() / creature:getMaxHealth()) * 100 local summons = creature:getSummons() - if hp <= 50 and #summons < 4 and not creature:getCondition(CONDITION_REGENERATION, CONDITIONID_DEFAULT, 88888) and - Game.getStorageValue(112416) < 2 then + if hp <= 50 and #summons < 4 and not creature:getCondition(CONDITION_REGENERATION, CONDITIONID_DEFAULT, 88888) and Game.getStorageValue(112416) < 2 then addEvent(boom, 10, creature:getId()) addEvent(function(cid) Game.createMonster("Omrafir", Position(33586, 32379, 12), false, true) diff --git a/data-otservbr-global/scripts/creaturescripts/monster/shared_life.lua b/data-otservbr-global/scripts/creaturescripts/monster/shared_life.lua index 456af185f7b..25750789c9d 100644 --- a/data-otservbr-global/scripts/creaturescripts/monster/shared_life.lua +++ b/data-otservbr-global/scripts/creaturescripts/monster/shared_life.lua @@ -11,7 +11,7 @@ function sharedLife.onHealthChange(creature, attacker, primaryDamage, primaryTyp if primaryType == COMBAT_HEALING then creature:onReceivDamageSL(primaryDamage, "healing", killer) else - if (creature:getHealth() - primaryDamage <= 0) then + if creature:getHealth() - primaryDamage <= 0 then killer = true end creature:onReceivDamageSL(primaryDamage, "damage", killer) @@ -20,7 +20,7 @@ function sharedLife.onHealthChange(creature, attacker, primaryDamage, primaryTyp if secondaryType == COMBAT_HEALING then creature:onReceivDamageSL(secondaryDamage, "healing", killer) else - if (creature:getHealth() - secondaryDamage <= 0) then + if creature:getHealth() - secondaryDamage <= 0 then killer = true end creature:onReceivDamageSL(secondaryDamage, "damage", killer) diff --git a/data-otservbr-global/scripts/creaturescripts/monster/shlorg_teleport.lua b/data-otservbr-global/scripts/creaturescripts/monster/shlorg_teleport.lua index cb4eaa8f989..72683357aa8 100644 --- a/data-otservbr-global/scripts/creaturescripts/monster/shlorg_teleport.lua +++ b/data-otservbr-global/scripts/creaturescripts/monster/shlorg_teleport.lua @@ -2,14 +2,14 @@ local position = { [1] = { pos = { x = 33170, y = 31730, z = 9 } }, [2] = { pos = { x = 33175, y = 31736, z = 9 } }, [3] = { pos = { x = 33174, y = 31747, z = 9 } }, - [4] = { pos = { x = 33164, y = 31744, z = 9 } } + [4] = { pos = { x = 33164, y = 31744, z = 9 } }, } local shlorgTeleport = CreatureEvent("ShlorgTeleport") function shlorgTeleport.onThink(creature) local chance = math.random(1, 100) if chance < 7 then - if (not creature:isMonster()) then + if not creature:isMonster() then return true end local spawn = position[math.random(4)] diff --git a/data-otservbr-global/scripts/creaturescripts/monster/the_pale_count_kill.lua b/data-otservbr-global/scripts/creaturescripts/monster/the_pale_count_kill.lua index a1777ca97f4..f484035f5e2 100644 --- a/data-otservbr-global/scripts/creaturescripts/monster/the_pale_count_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/monster/the_pale_count_kill.lua @@ -1,7 +1,7 @@ local thePaleCountKill = CreatureEvent("ThePaleCountKill") function thePaleCountKill.onThink(creature) local hp = (creature:getHealth() / creature:getMaxHealth()) * 100 - if (hp < 75) then + if hp < 75 then creature:say("Dare to follow me to my Sanctuary below and you shall DIE!", TALKTYPE_ORANGE_1) creature:remove() Game.createMonster("the pale count2", { x = 32972, y = 32419, z = 15 }) diff --git a/data-otservbr-global/scripts/creaturescripts/monster/urmahlullu_change.lua b/data-otservbr-global/scripts/creaturescripts/monster/urmahlullu_change.lua index 709f0b22c60..3df9cbfa229 100644 --- a/data-otservbr-global/scripts/creaturescripts/monster/urmahlullu_change.lua +++ b/data-otservbr-global/scripts/creaturescripts/monster/urmahlullu_change.lua @@ -21,7 +21,9 @@ local revertEvent = nil local function revert(cid, name) local creature = Creature(cid, name) - if not creature then return end + if not creature then + return + end if creature:getName() == name then return @@ -30,7 +32,9 @@ local function revert(cid, name) local position = creature:getPosition() creature:remove() local monster = Game.createMonster(name, position, true, true) - if not monster then return end + if not monster then + return + end if name ~= stages[5].name then changeEvent = nil revertEvent = addEvent(revert, timetochange * 1000, creature:getId(), stages[1].name) @@ -43,18 +47,24 @@ end local function changeStage(cid, stage) changeEvent = nil local creature = Creature(cid) - if not creature then return end + if not creature then + return + end local position = creature:getPosition() local previousName = creature:getName() creature:remove() local newCreature = Game.createMonster(stage, position, true, true) - if not newCreature then return end + if not newCreature then + return + end revertEvent = addEvent(revert, timetochange * 1000, newCreature:getId(), previousName) end function urmahlulluChanges.onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType) - if not creature then return primaryDamage, primaryType, secondaryDamage, secondaryType end + if not creature then + return primaryDamage, primaryType, secondaryDamage, secondaryType + end local name = creature:getName() local nextStageIndex = 1 for i, stage in ipairs(stages) do @@ -64,11 +74,15 @@ function urmahlulluChanges.onHealthChange(creature, attacker, primaryDamage, pri end end - if nextStageIndex > #stages then return primaryDamage, primaryType, secondaryDamage, secondaryType end + if nextStageIndex > #stages then + return primaryDamage, primaryType, secondaryDamage, secondaryType + end local stage = stages[nextStageIndex] if creature:getHealth() <= stage.health and not changeEvent then - if revertEvent then stopEvent(revertEvent) end + if revertEvent then + stopEvent(revertEvent) + end revertEvent = nil changeEvent = addEvent(changeStage, SCHEDULER_MIN_TICKS, creature:getId(), stage.name) end diff --git a/data-otservbr-global/scripts/creaturescripts/monster/white_deer.lua b/data-otservbr-global/scripts/creaturescripts/monster/white_deer.lua index 59d8447ce0e..5fff12eaad4 100644 --- a/data-otservbr-global/scripts/creaturescripts/monster/white_deer.lua +++ b/data-otservbr-global/scripts/creaturescripts/monster/white_deer.lua @@ -1,7 +1,7 @@ local config = { -- ordered by chance, the last chance being 100 - { chance = 30, monster = 'Enraged White Deer', message = 'The white deer summons all his strength and turns to fight!' }, - { chance = 100, monster = 'Desperate White Deer', message = 'The white deer desperately tries to escape!' } + { chance = 30, monster = "Enraged White Deer", message = "The white deer summons all his strength and turns to fight!" }, + { chance = 100, monster = "Desperate White Deer", message = "The white deer desperately tries to escape!" }, } local whiteDeerDeath = CreatureEvent("WhiteDeerDeath") diff --git a/data-otservbr-global/scripts/creaturescripts/monster/white_deer_scout.lua b/data-otservbr-global/scripts/creaturescripts/monster/white_deer_scout.lua index 852eb5c8b64..8466df46af7 100644 --- a/data-otservbr-global/scripts/creaturescripts/monster/white_deer_scout.lua +++ b/data-otservbr-global/scripts/creaturescripts/monster/white_deer_scout.lua @@ -8,13 +8,13 @@ function whiteDeerScoutsDeath.onDeath(creature, corpse, lasthitkiller, mostdamag local chance = math.random(100) if chance <= 10 then for i = 1, 2 do - local spawnMonster = Game.createMonster('Elf Scout', targetMonster:getPosition(), true, true) + local spawnMonster = Game.createMonster("Elf Scout", targetMonster:getPosition(), true, true) if spawnMonster then spawnMonster:getPosition():sendMagicEffect(CONST_ME_TELEPORT) end end - targetMonster:say('The elves came too late to save the deer, however they might avenge it.', TALKTYPE_MONSTER_SAY) + targetMonster:say("The elves came too late to save the deer, however they might avenge it.", TALKTYPE_MONSTER_SAY) end end diff --git a/data-otservbr-global/scripts/creaturescripts/monster/zavarash_hide.lua b/data-otservbr-global/scripts/creaturescripts/monster/zavarash_hide.lua index 54d953a8bce..d3bc367e819 100644 --- a/data-otservbr-global/scripts/creaturescripts/monster/zavarash_hide.lua +++ b/data-otservbr-global/scripts/creaturescripts/monster/zavarash_hide.lua @@ -14,11 +14,7 @@ function zavarashHide.onThink(creature) creature:addCondition(condition2) creature:setHiddenHealth(creature) end - if creature:getCondition(CONDITION_POISON, CONDITIONID_COMBAT) or - creature:getCondition(CONDITION_FIRE, CONDITIONID_COMBAT) or - creature:getCondition(CONDITION_ENERGY, CONDITIONID_COMBAT) or - creature:getCondition(CONDITION_BLEEDING, CONDITIONID_COMBAT) or - creature:getCondition(CONDITION_DAZZLED, CONDITIONID_COMBAT) then + if creature:getCondition(CONDITION_POISON, CONDITIONID_COMBAT) or creature:getCondition(CONDITION_FIRE, CONDITIONID_COMBAT) or creature:getCondition(CONDITION_ENERGY, CONDITIONID_COMBAT) or creature:getCondition(CONDITION_BLEEDING, CONDITIONID_COMBAT) or creature:getCondition(CONDITION_DAZZLED, CONDITIONID_COMBAT) then creature:setOutfit({ lookType = 12, lookHead = 0, lookAddons = 0, lookLegs = 57, lookBody = 15, lookFeet = 85 }, -1) creature:removeCondition(CONDITION_INVISIBLE) creature:removeCondition(CONDITION_OUTFIT) diff --git a/data-otservbr-global/scripts/creaturescripts/others/#modal_window_example.lua b/data-otservbr-global/scripts/creaturescripts/others/#modal_window_example.lua index 61283cb782a..e2de4a9e474 100644 --- a/data-otservbr-global/scripts/creaturescripts/others/#modal_window_example.lua +++ b/data-otservbr-global/scripts/creaturescripts/others/#modal_window_example.lua @@ -23,16 +23,16 @@ local moveDirectionTest = { local pos = player:getPosition() pos:getNextPosition(DIRECTION_SOUTH) player:teleportTo(pos, true) - end + end, } local talkAction = TalkAction("!modalTest") function talkAction.onSay(player, words, param, type) - local modalWindow = ModalWindow { + local modalWindow = ModalWindow({ title = "Modal Window Helper Example", - message = "This is an example of ModalWindowHelper." - } + message = "This is an example of ModalWindowHelper.", + }) if param == "choices" then for text, callback in pairs(moveDirectionTest) do modalWindow:addChoice(text, function(player, button, choice) diff --git a/data-otservbr-global/scripts/creaturescripts/others/advance_save.lua b/data-otservbr-global/scripts/creaturescripts/others/advance_save.lua index f1cfce2ad18..8bd6fd2fd06 100644 --- a/data-otservbr-global/scripts/creaturescripts/others/advance_save.lua +++ b/data-otservbr-global/scripts/creaturescripts/others/advance_save.lua @@ -1,7 +1,7 @@ local config = { heal = true, save = true, - effect = false + effect = false, } local advanceSave = CreatureEvent("AdvanceSave") @@ -13,7 +13,7 @@ function advanceSave.onAdvance(player, skill, oldLevel, newLevel) if config.effect then player:getPosition():sendMagicEffect(math.random(CONST_ME_FIREWORK_YELLOW, CONST_ME_FIREWORK_BLUE)) - player:say('LEVEL UP!', TALKTYPE_MONSTER_SAY) + player:say("LEVEL UP!", TALKTYPE_MONSTER_SAY) end if config.heal then diff --git a/data-otservbr-global/scripts/creaturescripts/others/dawnport.lua b/data-otservbr-global/scripts/creaturescripts/others/dawnport.lua index ab2909752b8..b3721c20aa0 100644 --- a/data-otservbr-global/scripts/creaturescripts/others/dawnport.lua +++ b/data-otservbr-global/scripts/creaturescripts/others/dawnport.lua @@ -26,10 +26,7 @@ function dawnportAdvance.onAdvance(player, skill, oldLevel, newLevel) ) -- Notify max level to stay in dawnport elseif newLevel >= 20 then - player:sendTextMessage( - MESSAGE_EVENT_ADVANCE, - "You have reached the limit level and have to choose your vocation and leave Dawnport." - ) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have reached the limit level and have to choose your vocation and leave Dawnport.") if not dawnportEvents[player:getId()] then -- Adds the event that teleports the player to the temple in five minutes after reaching level 20 dawnportEvents[player:getId()] = addEvent(teleportToDawnportTemple, 5 * 60 * 1000, player:getId()) diff --git a/data-otservbr-global/scripts/creaturescripts/others/login.lua b/data-otservbr-global/scripts/creaturescripts/others/login.lua index 7cb738018ec..1f309894ed4 100644 --- a/data-otservbr-global/scripts/creaturescripts/others/login.lua +++ b/data-otservbr-global/scripts/creaturescripts/others/login.lua @@ -23,7 +23,7 @@ local playerLogin = CreatureEvent("PlayerLogin") function playerLogin.onLogin(player) local items = { { 3003, 1 }, - { 3457, 1 } + { 3457, 1 }, } if player:getLastLoginSaved() == 0 then player:sendOutfitWindow() @@ -34,7 +34,7 @@ function playerLogin.onLogin(player) end end player:addItem(2920, 1, true, 1, CONST_SLOT_AMMO) - db.query('UPDATE `players` SET `istutorial` = 0 where `id`=' .. player:getGuid()) + db.query("UPDATE `players` SET `istutorial` = 0 where `id`=" .. player:getGuid()) -- Open channels if table.contains({ TOWNS_LIST.DAWNPORT, TOWNS_LIST.DAWNPORT_TUTORIAL }, player:getTown():getId()) then player:openChannel(3) -- World chat @@ -76,15 +76,15 @@ function playerLogin.onLogin(player) end if home ~= nil and not isPremium(player) then setHouseOwner(home, 0) - player:sendTextMessage(MESSAGE_GAME_HIGHLIGHT, 'You\'ve lost your house because you are not premium anymore.') - player:sendTextMessage(MESSAGE_GAME_HIGHLIGHT, 'Your items from house are send to your inbox.') + player:sendTextMessage(MESSAGE_GAME_HIGHLIGHT, "You've lost your house because you are not premium anymore.") + player:sendTextMessage(MESSAGE_GAME_HIGHLIGHT, "Your items from house are send to your inbox.") end end -- End 'Premium Ends Teleport to Temple' -- Recruiter system - local resultId = db.storeQuery('SELECT `recruiter` from `accounts` where `id`=' .. getAccountNumberByPlayerName(getPlayerName(player))) - local recruiterStatus = Result.getNumber(resultId, 'recruiter') + local resultId = db.storeQuery("SELECT `recruiter` from `accounts` where `id`=" .. getAccountNumberByPlayerName(getPlayerName(player))) + local recruiterStatus = Result.getNumber(resultId, "recruiter") local sex = player:getSex() if recruiterStatus >= 1 then if sex == 1 then @@ -146,8 +146,11 @@ function playerLogin.onLogin(player) if SCHEDULE_EXP_RATE ~= 100 then if SCHEDULE_EXP_RATE > 100 then - player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Exp Rate Event! Monsters yield more experience points than usual \ - Happy Hunting!") + player:sendTextMessage( + MESSAGE_BOOSTED_CREATURE, + "Exp Rate Event! Monsters yield more experience points than usual \ + Happy Hunting!" + ) else player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Exp Rate Decreased! Monsters yield less experience points than usual.") end @@ -155,8 +158,11 @@ function playerLogin.onLogin(player) if SCHEDULE_SPAWN_RATE ~= 100 then if SCHEDULE_SPAWN_RATE > 100 then - player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Spawn Rate Event! Monsters respawn at a faster rate \ - Happy Hunting!") + player:sendTextMessage( + MESSAGE_BOOSTED_CREATURE, + "Spawn Rate Event! Monsters respawn at a faster rate \ + Happy Hunting!" + ) else player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Spawn Rate Decreased! Monsters respawn at a slower rate.") end @@ -164,8 +170,11 @@ function playerLogin.onLogin(player) if SCHEDULE_LOOT_RATE ~= 100 then if SCHEDULE_LOOT_RATE > 100 then - player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Loot Rate Event! Monsters carry more loot than usual \ - Happy Hunting!") + player:sendTextMessage( + MESSAGE_BOOSTED_CREATURE, + "Loot Rate Event! Monsters carry more loot than usual \ + Happy Hunting!" + ) else player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Loot Rate Decreased! Monsters carry less loot than usual.") end @@ -173,8 +182,11 @@ function playerLogin.onLogin(player) if SCHEDULE_SKILL_RATE ~= 100 then if SCHEDULE_SKILL_RATE > 100 then - player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Skill Rate Event! Your skills progresses at a higher rate \ - Happy Hunting!") + player:sendTextMessage( + MESSAGE_BOOSTED_CREATURE, + "Skill Rate Event! Your skills progresses at a higher rate \ + Happy Hunting!" + ) else player:sendTextMessage(MESSAGE_BOOSTED_CREATURE, "Skill Rate Decreased! Your skills progresses at a lower rate.") end @@ -192,7 +204,7 @@ function playerLogin.onLogin(player) -- Concoction Duration nextUseConcoctionTime[playerId] = 1 - if (player:getAccountType() == ACCOUNT_TYPE_TUTOR) then + if player:getAccountType() == ACCOUNT_TYPE_TUTOR then local msg = [[:: Tutor Rules 1 *> 3 Warnings you lose the job. 2 *> Without parallel conversations with players in Help, if the player starts offending, you simply mute it. @@ -216,9 +228,8 @@ function playerLogin.onLogin(player) -- Rewards local rewards = #player:getRewardList() - if (rewards > 0) then - player:sendTextMessage(MESSAGE_LOGIN, string.format("You have %d %s in your reward chest.", - rewards, rewards > 1 and "rewards" or "reward")) + if rewards > 0 then + player:sendTextMessage(MESSAGE_LOGIN, string.format("You have %d %s in your reward chest.", rewards, rewards > 1 and "rewards" or "reward")) end -- Update player id diff --git a/data-otservbr-global/scripts/creaturescripts/others/login_events.lua b/data-otservbr-global/scripts/creaturescripts/others/login_events.lua index 2fee94c8641..f61182bea3f 100644 --- a/data-otservbr-global/scripts/creaturescripts/others/login_events.lua +++ b/data-otservbr-global/scripts/creaturescripts/others/login_events.lua @@ -121,7 +121,7 @@ function loginEvents.onLogin(player) -- Concoctions "ConcoctionsOnLogin", -- Hazard System - "PrimalHazardKill" + "PrimalHazardKill", } for i = 1, #events do diff --git a/data-otservbr-global/scripts/creaturescripts/others/offline_training.lua b/data-otservbr-global/scripts/creaturescripts/others/offline_training.lua index 95ad9476e75..afe28e82134 100644 --- a/data-otservbr-global/scripts/creaturescripts/others/offline_training.lua +++ b/data-otservbr-global/scripts/creaturescripts/others/offline_training.lua @@ -57,8 +57,7 @@ function offlineTraining.onLogin(player) local updateSkill = false if table.contains({ SKILL_CLUB, SKILL_SWORD, SKILL_AXE, SKILL_DISTANCE }, offlineTrainingSkill) then local modifier = topVocation:getBaseAttackSpeed() / 1000 / configManager.getFloat(configKeys.RATE_OFFLINE_TRAINING_SPEED) - updateSkill = player:addOfflineTrainingTries( - offlineTrainingSkill, (trainingTime / modifier) / (offlineTrainingSkill == SKILL_DISTANCE and 4 or 2)) + updateSkill = player:addOfflineTrainingTries(offlineTrainingSkill, (trainingTime / modifier) / (offlineTrainingSkill == SKILL_DISTANCE and 4 or 2)) elseif offlineTrainingSkill == SKILL_MAGLEVEL then local gainTicks = (topVocation:getManaGainTicks() / 1000) * 2 if gainTicks == 0 then diff --git a/data-otservbr-global/scripts/creaturescripts/others/player_death.lua b/data-otservbr-global/scripts/creaturescripts/others/player_death.lua index 9cc4941e56c..ef79ffee7d4 100644 --- a/data-otservbr-global/scripts/creaturescripts/others/player_death.lua +++ b/data-otservbr-global/scripts/creaturescripts/others/player_death.lua @@ -24,7 +24,7 @@ function playerDeath.onDeath(player, corpse, killer, mostDamageKiller, unjustifi end killerName = killer:isMonster() and killer:getType():getNameDescription() or killer:getName() else - killerName = 'field item' + killerName = "field item" end local byPlayerMostDamage = 0 @@ -41,13 +41,32 @@ function playerDeath.onDeath(player, corpse, killer, mostDamageKiller, unjustifi end mostDamageName = mostDamageKiller:isMonster() and mostDamageKiller:getType():getNameDescription() or mostDamageKiller:getName() else - mostDamageName = 'field item' + mostDamageName = "field item" end local playerGuid = player:getGuid() - db.query('INSERT INTO `player_deaths` (`player_id`, `time`, `level`, `killed_by`, `is_player`, `mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified`) VALUES (' .. - playerGuid .. ', ' .. os.time() .. ', ' .. player:getLevel() .. ', ' .. db.escapeString(killerName) .. ', ' .. byPlayer .. ', ' .. db.escapeString(mostDamageName) .. ', ' .. byPlayerMostDamage .. ', ' .. (unjustified and 1 or 0) .. ', ' .. (mostDamageUnjustified and 1 or 0) .. ')') - local resultId = db.storeQuery('SELECT `player_id` FROM `player_deaths` WHERE `player_id` = ' .. playerGuid) + db.query( + "INSERT INTO `player_deaths` (`player_id`, `time`, `level`, `killed_by`, `is_player`, `mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified`) VALUES (" + .. playerGuid + .. ", " + .. os.time() + .. ", " + .. player:getLevel() + .. ", " + .. db.escapeString(killerName) + .. ", " + .. byPlayer + .. ", " + .. db.escapeString(mostDamageName) + .. ", " + .. byPlayerMostDamage + .. ", " + .. (unjustified and 1 or 0) + .. ", " + .. (mostDamageUnjustified and 1 or 0) + .. ")" + ) + local resultId = db.storeQuery("SELECT `player_id` FROM `player_deaths` WHERE `player_id` = " .. playerGuid) -- Start Webhook Player Death local playerName = player:getName() local playerLevel = player:getLevel() @@ -80,18 +99,18 @@ function playerDeath.onDeath(player, corpse, killer, mostDamageKiller, unjustifi killerGuild = killerGuild and killerGuild:getId() or 0 if killerGuild ~= 0 and targetGuild ~= killerGuild and isInWar(player:getId(), killer.uid) then local warId = false - resultId = db.storeQuery('SELECT `id` FROM `guild_wars` WHERE `status` = 1 AND \z - ((`guild1` = ' .. killerGuild .. ' AND `guild2` = ' .. targetGuild .. ') OR \z - (`guild1` = ' .. targetGuild .. ' AND `guild2` = ' .. killerGuild .. '))') + resultId = db.storeQuery("SELECT `id` FROM `guild_wars` WHERE `status` = 1 AND \z + ((`guild1` = " .. killerGuild .. " AND `guild2` = " .. targetGuild .. ") OR \z + (`guild1` = " .. targetGuild .. " AND `guild2` = " .. killerGuild .. "))") if resultId ~= false then - warId = Result.getNumber(resultId, 'id') + warId = Result.getNumber(resultId, "id") Result.free(resultId) end if warId ~= false then - db.asyncQuery('INSERT INTO `guildwar_kills` (`killer`, `target`, `killerguild`, `targetguild`, `time`, `warid`) \z - VALUES (' .. db.escapeString(killerName) .. ', ' .. db.escapeString(player:getName()) .. ', ' .. killerGuild .. ', \z - ' .. targetGuild .. ', ' .. os.time() .. ', ' .. warId .. ')') + db.asyncQuery("INSERT INTO `guildwar_kills` (`killer`, `target`, `killerguild`, `targetguild`, `time`, `warid`) \z + VALUES (" .. db.escapeString(killerName) .. ", " .. db.escapeString(player:getName()) .. ", " .. killerGuild .. ", \z + " .. targetGuild .. ", " .. os.time() .. ", " .. warId .. ")") end end end diff --git a/data-otservbr-global/scripts/creaturescripts/others/rookgaard_advance.lua b/data-otservbr-global/scripts/creaturescripts/others/rookgaard_advance.lua index 86a2726b1dd..caec8ab1ad8 100644 --- a/data-otservbr-global/scripts/creaturescripts/others/rookgaard_advance.lua +++ b/data-otservbr-global/scripts/creaturescripts/others/rookgaard_advance.lua @@ -4,7 +4,7 @@ function rookgaardAdvance.onAdvance(player, skill, oldLevel, newLevel) return true end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Congratulations! You are ready to leave this island and choose a vocation now. Go see the Oracle over the academy in Rookgaard before you advance to level 10!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Congratulations! You are ready to leave this island and choose a vocation now. Go see the Oracle over the academy in Rookgaard before you advance to level 10!") return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/adventurers_guild/the_great_dragon_hunt.lua b/data-otservbr-global/scripts/creaturescripts/quests/adventurers_guild/the_great_dragon_hunt.lua index 3feb74e157f..d4011bbfc8a 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/adventurers_guild/the_great_dragon_hunt.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/adventurers_guild/the_great_dragon_hunt.lua @@ -5,7 +5,7 @@ local areas = { { from = Position(33007, 32612, 6), to = Position(33020, 32623, 6) }, { from = Position(32987, 32621, 6), to = Position(33043, 32661, 6) }, { from = Position(33002, 32614, 5), to = Position(33023, 32642, 5) }, - { from = Position(32993, 32632, 7), to = Position(33042, 32688, 7) } + { from = Position(32993, 32632, 7), to = Position(33042, 32688, 7) }, } local adventurersGuildHunt = CreatureEvent("TheGreatDragonHuntKill") @@ -18,7 +18,7 @@ function adventurersGuildHunt.onKill(creature, target) return true end - if table.contains({ 'dragon lord', 'dragon' }, target:getName():lower()) then + if table.contains({ "dragon lord", "dragon" }, target:getName():lower()) then for _, area in ipairs(areas) do if creature:getPosition():isInRange(area.from, area.to) then creature:setStorageValue(Storage.AdventurersGuild.GreatDragonHunt.DragonCounter, creature:getStorageValue(Storage.AdventurersGuild.GreatDragonHunt.DragonCounter) + 1) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/bosses_warzone.lua b/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/bosses_warzone.lua index d0da77c8518..b123a941a37 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/bosses_warzone.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/bosses_warzone.lua @@ -1,7 +1,7 @@ local bosses = { - ['deathstrike'] = { status = 2, storage = Storage.BigfootBurden.Warzone1Reward }, - ['gnomevil'] = { status = 3, storage = Storage.BigfootBurden.Warzone2Reward }, - ['abyssador'] = { status = 4, storage = Storage.BigfootBurden.Warzone3Reward }, + ["deathstrike"] = { status = 2, storage = Storage.BigfootBurden.Warzone1Reward }, + ["gnomevil"] = { status = 3, storage = Storage.BigfootBurden.Warzone2Reward }, + ["abyssador"] = { status = 4, storage = Storage.BigfootBurden.Warzone3Reward }, } -- This will set the status of warzone (killing 1, 2 and 3 wz bosses in order you can open the chest and get "some golden fruits") and the reward chest storages diff --git a/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/parasite.lua b/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/parasite.lua index 3ed74d03726..912e6704225 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/parasite.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/parasite.lua @@ -2,7 +2,7 @@ local positionsWall = { { x = 33098, y = 31979, z = 11 }, { x = 33098, y = 31978, z = 11 }, { x = 33098, y = 31977, z = 11 }, - { x = 33098, y = 31976, z = 11 } + { x = 33098, y = 31976, z = 11 }, } local function recreateCrystals(c) @@ -33,7 +33,7 @@ function parasiteWarzone.onKill(player, target) end local targetName = targetMonster:getName():lower() - if targetName ~= 'parasite' then + if targetName ~= "parasite" then return false end @@ -47,7 +47,7 @@ function parasiteWarzone.onKill(player, target) return false end - local config = warzoneConfig.findByName('Gnomevil') + local config = warzoneConfig.findByName("Gnomevil") if config.locked then targetMonster:say("It seems that someone has already destroyed the walls in the last 30 minutes.", TALKTYPE_MONSTER_SAY) return false diff --git a/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/versperoth_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/versperoth_kill.lua index 3e79b472c7b..4c7df5f6f43 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/versperoth_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/versperoth_kill.lua @@ -23,7 +23,7 @@ function versperothKill.onKill(creature, target) return true end - if targetMonster:getName():lower() ~= 'versperoth' then + if targetMonster:getName():lower() ~= "versperoth" then return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/wiggler_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/wiggler_kill.lua index 1fd7f47033c..72421a59925 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/wiggler_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/bigfoot_burden/wiggler_kill.lua @@ -5,7 +5,7 @@ function wigglerKill.onKill(creature, target) return true end - if targetMonster:getName():lower() ~= 'wiggler' then + if targetMonster:getName():lower() ~= "wiggler" then return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/bosses_mission_cults.lua b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/bosses_mission_cults.lua index 6e30d1f6917..a0186fa664d 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/bosses_mission_cults.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/bosses_mission_cults.lua @@ -7,7 +7,7 @@ function bossesCults.onKill(player, creature) ["the unarmored voidborn"] = { storage = Storage.CultsOfTibia.Orcs.Mission, value = 2 }, ["the false god"] = { storage = Storage.CultsOfTibia.Minotaurs.Mission, value = 4 }, ["the sandking"] = { storage = Storage.CultsOfTibia.Life.Mission, value = 8, global = "sandking", g_value = 5 }, - ["the corruptor of souls"] = { createNew = 'The Source Of Corruption', pos = Position(33039, 31922, 15), removeMonster = 'zarcorix of yalahar', area1 = Position(33073, 31885, 15), area2 = Position(33075, 31887, 15) }, + ["the corruptor of souls"] = { createNew = "The Source Of Corruption", pos = Position(33039, 31922, 15), removeMonster = "zarcorix of yalahar", area1 = Position(33073, 31885, 15), area2 = Position(33075, 31887, 15) }, ["the source of corruption"] = { storage = Storage.CultsOfTibia.FinalBoss.Mission, value = 2 }, } @@ -26,7 +26,7 @@ function bossesCults.onKill(player, creature) return true end if boss.createNew then - Game.setStorageValue('CheckTile', -1) + Game.setStorageValue("CheckTile", -1) Game.createMonster(boss.createNew, boss.pos) if removeMonster then for _x = boss.area1.x, boss.area2.x, 1 do diff --git a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/carlin_vortex_spawn.lua b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/carlin_vortex_spawn.lua index 47835811b72..9b4037c31e3 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/carlin_vortex_spawn.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/carlin_vortex_spawn.lua @@ -8,7 +8,7 @@ function vortexCarlin.onKill(creature, target, item) return true end - if table.contains({ 'cult enforcer', 'cult believer', 'cult scholar' }, target:getName():lower()) then + if table.contains({ "cult enforcer", "cult believer", "cult scholar" }, target:getName():lower()) then local corpsePosition = target:getPosition() local rand = math.random(32414, 32415) Game.createItem(rand, 1, corpsePosition):setActionId(5580) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/check_tile.lua b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/check_tile.lua index 2c6acfe289f..a1b1273f314 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/check_tile.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/check_tile.lua @@ -1,11 +1,11 @@ local checkTile = CreatureEvent("CheckTile") function checkTile.onThink(creature, interval) - if creature:getName():lower() == 'the corruptor of souls' then - if Game.getStorageValue('CheckTile') < os.time() then + if creature:getName():lower() == "the corruptor of souls" then + if Game.getStorageValue("CheckTile") < os.time() then local pos = creature:getPosition() - Game.setStorageValue('healthSoul', creature:getHealth()) + Game.setStorageValue("healthSoul", creature:getHealth()) creature:remove() - Game.createMonster('the remorseless corruptor', pos) + Game.createMonster("the remorseless corruptor", pos) end end return true diff --git a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/destroyed_pillar.lua b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/destroyed_pillar.lua index 03a5de47373..2c2bd08dfc8 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/destroyed_pillar.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/destroyed_pillar.lua @@ -12,7 +12,7 @@ function destroyedPillar.onKill(creature, target) [2] = "pillar of death", [3] = "pillar of protection", [4] = "pillar of healing", - [5] = "pillar of draining" + [5] = "pillar of draining", } local monsterName = target:getName():lower() diff --git a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/evaporate.lua b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/evaporate.lua index 88b7e6c70d7..bf92fe20f0f 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/evaporate.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/evaporate.lua @@ -8,7 +8,7 @@ combat:setArea(createCombatArea({ { 1, 1, 1, 3, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 1, 1, 0 }, - { 0, 0, 1, 1, 1, 0, 0 } + { 0, 0, 1, 1, 1, 0, 0 }, })) function onTargetTile(creature, pos) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/machine.lua b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/machine.lua index 2354cb11ad2..b915d5ae3e4 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/machine.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/machine.lua @@ -34,7 +34,7 @@ function machineDeath.onDeath(creature, attacker) Position(33133, 31856, 15), Position(33140, 31856, 15), Position(33140, 31863, 15), - Position(33133, 31863, 15) + Position(33133, 31863, 15), } for _, position in pairs(itensToMonster) do local tile = Tile(position) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/minotaur_task_count.lua b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/minotaur_task_count.lua index 7443a79b5a2..83c5e2000cc 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/minotaur_task_count.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/minotaur_task_count.lua @@ -9,7 +9,7 @@ function minotaurTask.onKill(creature, target) end local storage = creature:getStorageValue(Storage.CultsOfTibia.Minotaurs.JamesfrancisTask) - if (table.contains({ 'minotaur cult follower', 'minotaur cult zealot', 'minotaur cult prophet' }, target:getName():lower()) and storage >= 0 and storage < 50) then + if table.contains({ "minotaur cult follower", "minotaur cult zealot", "minotaur cult prophet" }, target:getName():lower()) and storage >= 0 and storage < 50 then creature:setStorageValue(Storage.CultsOfTibia.Minotaurs.JamesfrancisTask, storage + 1) end return true diff --git a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/pillar_health.lua b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/pillar_health.lua index 35136a79434..dc71bca90b5 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/pillar_health.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/pillar_health.lua @@ -12,7 +12,7 @@ function healthPillar.onHealthChange(creature, attacker, primaryDamage, primaryT return primaryDamage, primaryType, secondaryDamage, secondaryType end local monster = defensor[creature:getName():lower()] - local protector = 'pillar of' + local protector = "pillar of" if monster then local pMonster = Tile(Position(monster)):getTopCreature() if not pMonster then diff --git a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/sandking.lua b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/sandking.lua index 1ba0871d624..8897d1fa208 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/sandking.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/cults_of_tibia/sandking.lua @@ -75,7 +75,7 @@ function sandkingThink.onThink(creature) end elseif str == 4 then local tm = os.time() - if ((maxhealth * 0.50) > creature:getHealth()) then + if (maxhealth * 0.50) > creature:getHealth() then creature:say("THE SANDKING VANISHES INTO THE SAND AND HIS BROOD EMERGES!", TALKTYPE_MONSTER_SAY) creature:remove() local ps = { @@ -107,17 +107,15 @@ function sandkingDeath.onDeath(creature, attacker, corpse) return true end if creature:getName():lower() == "sand brood" then - addEvent( - function(position, corpseid) - local tile = Tile(position) - if tile then - local corpoCount = tile:getItemCountById(corpseid) - if corpoCount > 0 then - tile:getItemById(corpseid):setActionId(5595) - end + addEvent(function(position, corpseid) + local tile = Tile(position) + if tile then + local corpoCount = tile:getItemCountById(corpseid) + if corpoCount > 0 then + tile:getItemById(corpseid):setActionId(5595) end - end, 200, creature:getPosition(), MonsterType(creature:getName()):getCorpseId() - ) + end + end, 200, creature:getPosition(), MonsterType(creature:getName()):getCorpseId()) return true end local stg = Game.getStorageValue("sandking") @@ -131,7 +129,6 @@ end sandkingDeath:register() - local sandHealth = CreatureEvent("SandHealth") function sandHealth.onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) if not creature:isMonster() then diff --git a/data-otservbr-global/scripts/creaturescripts/quests/dangerous_depths/bosses_mission_depths.lua b/data-otservbr-global/scripts/creaturescripts/quests/dangerous_depths/bosses_mission_depths.lua index f3947238dd0..15d23787b7a 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/dangerous_depths/bosses_mission_depths.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/dangerous_depths/bosses_mission_depths.lua @@ -17,12 +17,9 @@ function bossesMissionDepth.onKill(creature, creature) end local bosses = { - ["the count of the core"] = { stg = Storage.DangerousDepths.Bosses.TheCountOfTheCore, value = os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN), teleportPosition = Position(33681, 32340, 15), - toPosition = Position(33682, 32315, 15), toPositionBack = Position(33324, 32111, 15) }, - ["the duke of the depths"] = { stg = Storage.DangerousDepths.Bosses.TheDukeOfTheDepths, value = os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN), teleportPosition = Position(33719, 32302, 15), - toPosition = Position(33691, 32301, 15), toPositionBack = Position(33275, 32318, 15) }, - ["the baron from below"] = { stg = Storage.DangerousDepths.Bosses.TheBaronFromBelow, value = os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN), teleportPosition = Position(33650, 32312, 15), - toPosition = Position(33668, 32301, 15), toPositionBack = Position(33462, 32267, 15) }, + ["the count of the core"] = { stg = Storage.DangerousDepths.Bosses.TheCountOfTheCore, value = os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN), teleportPosition = Position(33681, 32340, 15), toPosition = Position(33682, 32315, 15), toPositionBack = Position(33324, 32111, 15) }, + ["the duke of the depths"] = { stg = Storage.DangerousDepths.Bosses.TheDukeOfTheDepths, value = os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN), teleportPosition = Position(33719, 32302, 15), toPosition = Position(33691, 32301, 15), toPositionBack = Position(33275, 32318, 15) }, + ["the baron from below"] = { stg = Storage.DangerousDepths.Bosses.TheBaronFromBelow, value = os.time() + configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN), teleportPosition = Position(33650, 32312, 15), toPosition = Position(33668, 32301, 15), toPositionBack = Position(33462, 32267, 15) }, } local boss = bosses[creature:getName():lower()] diff --git a/data-otservbr-global/scripts/creaturescripts/quests/dangerous_depths/lost_exile_task.lua b/data-otservbr-global/scripts/creaturescripts/quests/dangerous_depths/lost_exile_task.lua index 0eb58fdc10d..ce1062785e0 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/dangerous_depths/lost_exile_task.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/dangerous_depths/lost_exile_task.lua @@ -14,7 +14,7 @@ function lostExileKill.onKill(creature, target) local storage = creature:getStorageValue(Storage.DangerousDepths.Dwarves.LostExiles) local storage2 = creature:getStorageValue(Storage.DangerousDepths.Dwarves.Organisms) - if (table.contains({ 'lost exile' }, monsterName)) then + if table.contains({ "lost exile" }, monsterName) then if creature:getStorageValue(Storage.DangerousDepths.Dwarves.Home) == 1 then if target:getPosition():isInRange(fromPos, toPos) then if storage < 20 then @@ -25,7 +25,7 @@ function lostExileKill.onKill(creature, target) end end end - elseif (table.contains({ 'deepworm', 'diremaw' }, monsterName)) then + elseif table.contains({ "deepworm", "diremaw" }, monsterName) then if creature:getStorageValue(Storage.DangerousDepths.Dwarves.Subterranean) == 1 then if storage2 < 50 then if storage2 < 0 then @@ -34,7 +34,7 @@ function lostExileKill.onKill(creature, target) creature:setStorageValue(Storage.DangerousDepths.Dwarves.Organisms, storage2 + 1) end end - elseif (table.contains({ 'makeshift home' }, monsterName)) then + elseif table.contains({ "makeshift home" }, monsterName) then local woodenTrash = Game.createItem(398, 1, target:getPosition()) woodenTrash:setActionId(57233) end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/dark_trails/kill_death_priest_shargon.lua b/data-otservbr-global/scripts/creaturescripts/quests/dark_trails/kill_death_priest_shargon.lua index 356125a5108..489c033bc33 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/dark_trails/kill_death_priest_shargon.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/dark_trails/kill_death_priest_shargon.lua @@ -4,7 +4,7 @@ local config = { destinationPosition = Position(33489, 32088, 9), storageKey = Storage.DarkTrails.Mission18, getStorageValue = 1, - setStorageValue = 2 + setStorageValue = 2, } local function removeTeleport(position) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/elemental_spheres/overlord_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/elemental_spheres/overlord_kill.lua index 6da47278e57..206923c3328 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/elemental_spheres/overlord_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/elemental_spheres/overlord_kill.lua @@ -1,9 +1,9 @@ local overlords = { - ['energy overlord'] = { storage = Storage.ElementalSphere.BossStorage, globalStorage = GlobalStorage.ElementalSphere.KnightBoss }, - ['fire overlord'] = { storage = Storage.ElementalSphere.BossStorage, globalStorage = GlobalStorage.ElementalSphere.SorcererBoss }, - ['ice overlord'] = { storage = Storage.ElementalSphere.BossStorage, globalStorage = GlobalStorage.ElementalSphere.PaladinBoss }, - ['earth overlord'] = { storage = Storage.ElementalSphere.BossStorage, globalStorage = GlobalStorage.ElementalSphere.DruidBoss }, - ['lord of the elements'] = {} + ["energy overlord"] = { storage = Storage.ElementalSphere.BossStorage, globalStorage = GlobalStorage.ElementalSphere.KnightBoss }, + ["fire overlord"] = { storage = Storage.ElementalSphere.BossStorage, globalStorage = GlobalStorage.ElementalSphere.SorcererBoss }, + ["ice overlord"] = { storage = Storage.ElementalSphere.BossStorage, globalStorage = GlobalStorage.ElementalSphere.PaladinBoss }, + ["earth overlord"] = { storage = Storage.ElementalSphere.BossStorage, globalStorage = GlobalStorage.ElementalSphere.DruidBoss }, + ["lord of the elements"] = {}, } local elementalSpheresOver = CreatureEvent("OverlordKill") @@ -26,7 +26,7 @@ function elementalSpheresOver.onKill(creature, target) creature:setStorageValue(bossConfig.storage, 1) end - creature:say('You slayed ' .. bossName .. '.', TALKTYPE_MONSTER_SAY) + creature:say("You slayed " .. bossName .. ".", TALKTYPE_MONSTER_SAY) return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/bone_capsule.lua b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/bone_capsule.lua index 463bd1c1da9..2d6e90036c4 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/bone_capsule.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/bone_capsule.lua @@ -3,11 +3,11 @@ function boneCapsule.onDeath(creature, corpse, lasthitkiller, mostdamagekiller, local targetMonster = creature:getMonster() local position = targetMonster:getPosition() position:sendMagicEffect(CONST_ME_POFF) - if not targetMonster or targetMonster:getName():lower() ~= 'bone capsule' then + if not targetMonster or targetMonster:getName():lower() ~= "bone capsule" then return true end - local monster = Game.createMonster('bone capsule', Position(33485, 32333, 14), true, true) + local monster = Game.createMonster("bone capsule", Position(33485, 32333, 14), true, true) if not monster then return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/bosses_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/bosses_kill.lua index ea4577d8d00..4d1960f55b9 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/bosses_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/bosses_kill.lua @@ -1,13 +1,13 @@ local bosses = { - ['the lord of the lice'] = { teleportPos = Position(33226, 31478, 12), godbreakerPos = Position(33237, 31477, 13) }, - ['tarbaz'] = { teleportPos = Position(33460, 32853, 11), godbreakerPos = Position(33427, 32852, 13), timer = Storage.FerumbrasAscension.TarbazTimer }, - ['ragiaz'] = { teleportPos = Position(33482, 32345, 13), godbreakerPos = Position(33466, 32392, 13), timer = Storage.FerumbrasAscension.RagiazTimer }, - ['plagirath'] = { teleportPos = Position(33174, 31511, 13), godbreakerPos = Position(33204, 31510, 13), timer = Storage.FerumbrasAscension.PlagirathTimer }, - ['razzagorn'] = { teleportPos = Position(33413, 32467, 14), godbreakerPos = Position(33357, 32440, 13), timer = Storage.FerumbrasAscension.RazzagornTimer }, - ['zamulosh'] = { teleportPos = Position(33644, 32764, 11), godbreakerPos = Position(33678, 32758, 13), timer = Storage.FerumbrasAscension.ZamuloshTimer }, - ['mazoran'] = { teleportPos = Position(33585, 32699, 14), godbreakerPos = Position(33614, 32679, 15), timer = Storage.FerumbrasAscension.MazoranTimer }, - ['shulgrax'] = { teleportPos = Position(33486, 32796, 13), godbreakerPos = Position(33459, 32820, 14), timer = Storage.FerumbrasAscension.ShulgraxTimer }, - ['ferumbras mortal shell'] = { teleportPos = Position(33392, 31485, 14), godbreakerPos = Position(33388, 31414, 14), timer = Storage.FerumbrasAscension.FerumbrasTimer } + ["the lord of the lice"] = { teleportPos = Position(33226, 31478, 12), godbreakerPos = Position(33237, 31477, 13) }, + ["tarbaz"] = { teleportPos = Position(33460, 32853, 11), godbreakerPos = Position(33427, 32852, 13), timer = Storage.FerumbrasAscension.TarbazTimer }, + ["ragiaz"] = { teleportPos = Position(33482, 32345, 13), godbreakerPos = Position(33466, 32392, 13), timer = Storage.FerumbrasAscension.RagiazTimer }, + ["plagirath"] = { teleportPos = Position(33174, 31511, 13), godbreakerPos = Position(33204, 31510, 13), timer = Storage.FerumbrasAscension.PlagirathTimer }, + ["razzagorn"] = { teleportPos = Position(33413, 32467, 14), godbreakerPos = Position(33357, 32440, 13), timer = Storage.FerumbrasAscension.RazzagornTimer }, + ["zamulosh"] = { teleportPos = Position(33644, 32764, 11), godbreakerPos = Position(33678, 32758, 13), timer = Storage.FerumbrasAscension.ZamuloshTimer }, + ["mazoran"] = { teleportPos = Position(33585, 32699, 14), godbreakerPos = Position(33614, 32679, 15), timer = Storage.FerumbrasAscension.MazoranTimer }, + ["shulgrax"] = { teleportPos = Position(33486, 32796, 13), godbreakerPos = Position(33459, 32820, 14), timer = Storage.FerumbrasAscension.ShulgraxTimer }, + ["ferumbras mortal shell"] = { teleportPos = Position(33392, 31485, 14), godbreakerPos = Position(33388, 31414, 14), timer = Storage.FerumbrasAscension.FerumbrasTimer }, } local crystals = { @@ -18,7 +18,7 @@ local crystals = { [5] = { crystalPosition = Position(33394, 31478, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal5 }, [6] = { crystalPosition = Position(33390, 31478, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal6 }, [7] = { crystalPosition = Position(33387, 31475, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal7 }, - [8] = { crystalPosition = Position(33387, 31471, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal8 } + [8] = { crystalPosition = Position(33387, 31471, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal8 }, } local function transformCrystal() for c = 1, #crystals do @@ -55,11 +55,11 @@ function ascendantBossesKill.onKill(creature, target) for player, _ in pairs(targetMonster:getDamageMap()) do local attackerPlayer = Player(player) if attackerPlayer then - if targetMonster:getName():lower() == 'ferumbras mortal shell' then + if targetMonster:getName():lower() == "ferumbras mortal shell" then if bossConfig.timer then attackerPlayer:setStorageValue(bossConfig.timer, os.time() + 60 * 60 * 14 * 24) end - elseif targetMonster:getName():lower() == 'the lord of the lice' then + elseif targetMonster:getName():lower() == "the lord of the lice" then attackerPlayer:setStorageValue(Storage.FerumbrasAscension.TheLordOfTheLiceAccess, 1) end end @@ -77,7 +77,7 @@ function ascendantBossesKill.onKill(creature, target) addEvent(revertTeleport, 2 * 60 * 1000, bossConfig.teleportPos, 22761, 1949, Position(33319, 32318, 13)) end - if targetMonster:getName():lower() == 'ferumbras mortal shell' then + if targetMonster:getName():lower() == "ferumbras mortal shell" then addEvent(transformCrystal, 2 * 60 * 1000) end return true diff --git a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/death_dragon.lua b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/death_dragon.lua index e03f803afd9..ad1a355a5b2 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/death_dragon.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/death_dragon.lua @@ -1,11 +1,11 @@ local deathDragon = CreatureEvent("DeathDragon") function deathDragon.onDeath(creature, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified) local targetMonster = creature:getMonster() - if not targetMonster or targetMonster:getName():lower() ~= 'death dragon' then + if not targetMonster or targetMonster:getName():lower() ~= "death dragon" then return true end - local monster = addEvent(Game.createMonster, 1 * 1000, 'death dragon', creature:getPosition(), true, true) + local monster = addEvent(Game.createMonster, 1 * 1000, "death dragon", creature:getPosition(), true, true) if not monster then return true end @@ -13,8 +13,8 @@ function deathDragon.onDeath(creature, corpse, lasthitkiller, mostdamagekiller, local spectators = Game.getSpectators(targetMonster:getPosition(), false, false, 10, 10, 10, 10) for i = 1, #spectators do local spectator = spectators[i] - if spectator:isMonster() and spectator:getName():lower() == 'ragiaz' then - spectator:say('Ragiaz power revives his minion!', TALKTYPE_MONSTER_SAY) + if spectator:isMonster() and spectator:getName():lower() == "ragiaz" then + spectator:say("Ragiaz power revives his minion!", TALKTYPE_MONSTER_SAY) return true end end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/disgusting_ooze_death.lua b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/disgusting_ooze_death.lua index 3bc5663b1ec..691b3c2c145 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/disgusting_ooze_death.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/disgusting_ooze_death.lua @@ -1,19 +1,19 @@ local disgustingOozeDeath = CreatureEvent("DisgustingOozeDeath") function disgustingOozeDeath.onDeath(creature, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified) local targetMonster = creature:getMonster() - if not targetMonster or targetMonster:getName():lower() ~= 'disgusting ooze' then + if not targetMonster or targetMonster:getName():lower() ~= "disgusting ooze" then return true end if math.random(20) < 3 then for i = 1, 2 do - local monster = Game.createMonster('disgusting ooze', targetMonster:getPosition(), false, true) + local monster = Game.createMonster("disgusting ooze", targetMonster:getPosition(), false, true) if not monster then return true end monster:setMaster(targetMonster:getMaster()) end - targetMonster:say('The ooze splits and regenerates.', TALKTYPE_MONSTER_SAY) + targetMonster:say("The ooze splits and regenerates.", TALKTYPE_MONSTER_SAY) end return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/ferumbras_mortal_shell_death.lua b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/ferumbras_mortal_shell_death.lua index be8850315d6..32f3216c48e 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/ferumbras_mortal_shell_death.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/ferumbras_mortal_shell_death.lua @@ -1,16 +1,16 @@ local ferumbrasMortalShell = CreatureEvent("FerumbrasMortalShell") function ferumbrasMortalShell.onDeath(creature, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified) local targetMonster = creature:getMonster() - if not targetMonster or targetMonster:getName():lower() ~= 'destabilized ferumbras' then + if not targetMonster or targetMonster:getName():lower() ~= "destabilized ferumbras" then return true end - local monster = Game.createMonster('Ferumbras Mortal Shell', Position(33392, 31473, 14), true, true) + local monster = Game.createMonster("Ferumbras Mortal Shell", Position(33392, 31473, 14), true, true) if not monster then return true end - monster:say('AAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHH!', TALKTYPE_MONSTER_SAY) - lasthitkiller:say('FINALY YOU FORCED FERUMBRAS BACK INTO A MORTAL FORM - HE IS NOT AMUSED!', TALKTYPE_MONSTER_SAY, nil, nil, Position(33392, 31475, 14)) + monster:say("AAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHH!", TALKTYPE_MONSTER_SAY) + lasthitkiller:say("FINALY YOU FORCED FERUMBRAS BACK INTO A MORTAL FORM - HE IS NOT AMUSED!", TALKTYPE_MONSTER_SAY, nil, nil, Position(33392, 31475, 14)) return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/ferumbras_soul_splinter.lua b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/ferumbras_soul_splinter.lua index a57cbfd9b49..b259d727fe6 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/ferumbras_soul_splinter.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/ferumbras_soul_splinter.lua @@ -1,11 +1,11 @@ local ferumbrasSoulSplinter = CreatureEvent("FerumbrasSoulSplinter") function ferumbrasSoulSplinter.onDeath(creature, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified) local targetMonster = creature:getMonster() - if not targetMonster or targetMonster:getName():lower() ~= 'ferumbras soul splinter' then + if not targetMonster or targetMonster:getName():lower() ~= "ferumbras soul splinter" then return true end - local monster = Game.createMonster('ferumbras essence', targetMonster:getPosition(), true, true) + local monster = Game.createMonster("ferumbras essence", targetMonster:getPosition(), true, true) if not monster then return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/rift_invader_death.lua b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/rift_invader_death.lua index fce0a6332bc..73109373b8d 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/rift_invader_death.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/rift_invader_death.lua @@ -6,12 +6,12 @@ local crystals = { [5] = { fromPosition = Position(33393, 31477, 14), toPosition = Position(33395, 31479, 14), crystalPosition = Position(33394, 31478, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal5 }, [6] = { fromPosition = Position(33389, 31477, 14), toPosition = Position(33391, 31479, 14), crystalPosition = Position(33390, 31478, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal6 }, [7] = { fromPosition = Position(33386, 31474, 14), toPosition = Position(33388, 31476, 14), crystalPosition = Position(33387, 31475, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal7 }, - [8] = { fromPosition = Position(33386, 31470, 14), toPosition = Position(33388, 31472, 14), crystalPosition = Position(33387, 31471, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal8 } + [8] = { fromPosition = Position(33386, 31470, 14), toPosition = Position(33388, 31472, 14), crystalPosition = Position(33387, 31471, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal8 }, } local riftInvaderDeath = CreatureEvent("RiftInvaderDeath") function riftInvaderDeath.onDeath(creature, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified) - if not targetMonster or targetMonster:getName():lower() ~= 'rift invader' then + if not targetMonster or targetMonster:getName():lower() ~= "rift invader" then return true end @@ -33,13 +33,13 @@ function riftInvaderDeath.onDeath(creature, corpse, lasthitkiller, mostdamagekil end if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Crystals.AllCrystals) == 8 then local creature = Tile(Position(33392, 31473, 14)):getTopCreature() - creature:say('NOOOOOOOOOOO!', TALKTYPE_MONSTER_YELL) - creature:say('FERUMBRAS BURSTS INTO SOUL SPLINTERS!', TALKTYPE_MONSTER_YELL, nil, nil, Position(33392, 31475, 14)) + creature:say("NOOOOOOOOOOO!", TALKTYPE_MONSTER_YELL) + creature:say("FERUMBRAS BURSTS INTO SOUL SPLINTERS!", TALKTYPE_MONSTER_YELL, nil, nil, Position(33392, 31475, 14)) creature:remove() for a = 1, #crystals do local crystalEffect = crystals[i] crystalEffect.crystalPosition:sendMagicEffect(CONST_ME_FERUMBRAS) - Game.createMonster('Ferumbras Soul Splinter', Position(33392, 31473, 14), false, true) + Game.createMonster("Ferumbras Soul Splinter", Position(33392, 31473, 14), false, true) end end Game.setStorageValue(crystal.globalStorage, Game.getStorageValue(crystal.globalStorage) + 1) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/the_shatterer_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/the_shatterer_kill.lua index 96eada2e7a1..3267107d8f5 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/the_shatterer_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/the_shatterer_kill.lua @@ -15,7 +15,7 @@ local chains = { [5] = { itemid = 21285, position = Position(33405, 32419, 14) }, [6] = { itemid = 21286, position = Position(33406, 32419, 14) }, [7] = { itemid = 2126, position = Position(33403, 32418, 14) }, - [8] = { itemid = 2126, position = Position(33404, 32418, 14) } + [8] = { itemid = 2126, position = Position(33404, 32418, 14) }, }, North = { [1] = { itemid = 21288, position = Position(33407, 32414, 14) }, @@ -24,7 +24,7 @@ local chains = { [4] = { itemid = 21288, position = Position(33407, 32417, 14) }, [5] = { itemid = 21289, position = Position(33407, 32418, 14) }, [6] = { itemid = 2126, position = Position(33406, 32415, 14) }, - [7] = { itemid = 2126, position = Position(33406, 32416, 14) } + [7] = { itemid = 2126, position = Position(33406, 32416, 14) }, }, East = { [1] = { itemid = 21285, position = Position(33408, 32419, 14) }, @@ -33,7 +33,7 @@ local chains = { [4] = { itemid = 21284, position = Position(33411, 32419, 14) }, [5] = { itemid = 21286, position = Position(33412, 32419, 14) }, [6] = { itemid = 2126, position = Position(33408, 32418, 14) }, - [7] = { itemid = 2126, position = Position(33409, 32418, 14) } + [7] = { itemid = 2126, position = Position(33409, 32418, 14) }, }, South = { [1] = { itemid = 21288, position = Position(33407, 32420, 14) }, @@ -42,14 +42,14 @@ local chains = { [4] = { itemid = 21287, position = Position(33407, 32423, 14) }, [5] = { itemid = 21289, position = Position(33407, 32424, 14) }, [6] = { itemid = 2126, position = Position(33406, 32420, 14) }, - [7] = { itemid = 2126, position = Position(33406, 32421, 14) } - } + [7] = { itemid = 2126, position = Position(33406, 32421, 14) }, + }, } local levers = { [1] = { position = Position(33385, 32410, 14) }, [2] = { position = Position(33403, 32391, 14) }, [3] = { position = Position(33430, 32418, 14) }, - [4] = { position = Position(33410, 32441, 14) } + [4] = { position = Position(33410, 32441, 14) }, } local function revert() for i = 1, #chains.West do @@ -80,19 +80,21 @@ end local theShattererKill = CreatureEvent("TheShattererKill") function theShattererKill.onKill(creature, target) local targetMonster = target:getMonster() - if not targetMonster or targetMonster:getMaster() or targetMonster:getName():lower() ~= 'the shatterer' then + if not targetMonster or targetMonster:getMaster() or targetMonster:getName():lower() ~= "the shatterer" then return true end for pid, _ in pairs(targetMonster:getDamageMap()) do local attackerPlayer = Player(pid) if attackerPlayer then - if targetMonster:getName():lower() == 'the shatterer' then + if targetMonster:getName():lower() == "the shatterer" then attackerPlayer:setStorageValue(Storage.FerumbrasAscension.TheShatterer, 1) end end end local teleport = Tile(Position(33393, 32438, 14)):getItemById(1949) - if not teleport then return true end + if not teleport then + return true + end local oldPos = teleport:getDestination() local teleportPos = Position(33393, 32438, 14) local newPos = Position(33436, 32443, 15) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/zamulosh_clone.lua b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/zamulosh_clone.lua index 85f9d76429b..6b73b47c2e8 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/zamulosh_clone.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/ferumbras_ascendant/zamulosh_clone.lua @@ -1,10 +1,10 @@ function onDeath(creature, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified) local targetMonster = creature:getMonster() - if not targetMonster or targetMonster:getName():lower() ~= 'zamulosh' and not targetMonster:getMaster() then + if not targetMonster or targetMonster:getName():lower() ~= "zamulosh" and not targetMonster:getMaster() then return true end - local monster = Game.createMonster('Zamulosh3', targetMonster:getPosition(), true, true) + local monster = Game.createMonster("Zamulosh3", targetMonster:getPosition(), true, true) if not monster then return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/astral_glyph_death.lua b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/astral_glyph_death.lua index 64c2a8476ff..07e48921c7d 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/astral_glyph_death.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/astral_glyph_death.lua @@ -5,8 +5,8 @@ function astralGlyphDeath.onDeath(creature, corpse, lasthitkiller, mostdamagekil return true end - if targetMonster:getName():lower() == 'an astral glyph' then - Game.createMonster('the last lore keeper', targetMonster:getPosition(), true, true) + if targetMonster:getName():lower() == "an astral glyph" then + Game.createMonster("the last lore keeper", targetMonster:getPosition(), true, true) end return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/astral_source.lua b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/astral_source.lua index 353ad58885d..9d243f4be65 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/astral_source.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/astral_source.lua @@ -4,7 +4,7 @@ function astralSource.onThink(creature) local health, difference, glyph, pos = 0, 0, Tile(Position(31989, 32823, 15)):getTopCreature(), creature:getPosition() if hp < 5.5 and Game.getStorageValue(GlobalStorage.ForgottenKnowledge.AstralGlyph) >= 1 then sourcePos = creature:getPosition() - creature:say('Your damage distorted the source and prevents the Glyph to draw on its power.', TALKTYPE_MONSTER_SAY) + creature:say("Your damage distorted the source and prevents the Glyph to draw on its power.", TALKTYPE_MONSTER_SAY) creature:remove() local source = Tile(Position(31986, 32823, 15)):getTopCreature() if source then @@ -13,14 +13,14 @@ function astralSource.onThink(creature) local spectators = Game.getSpectators(Position(31986, 32847, 14), false, false, 12, 12, 12, 12) for i = 1, #spectators do local spec = spectators[i] - if spec:getName():lower() == 'a shielded astral glyph' then + if spec:getName():lower() == "a shielded astral glyph" then health = spec:getHealth() difference = glyph:getHealth() - health local pos = spec:getPosition() spec:teleportTo(Position(31989, 32823, 15)) glyph:addHealth(-difference) glyph:teleportTo(pos) - glyph:say('Without the power of the source the Glyph loses its protection!', TALKTYPE_MONSTER_SAY) + glyph:say("Without the power of the source the Glyph loses its protection!", TALKTYPE_MONSTER_SAY) end end elseif Game.getStorageValue(GlobalStorage.ForgottenKnowledge.AstralGlyph) < 1 then diff --git a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/bosses_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/bosses_kill.lua index e6117b3ac17..047da278310 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/bosses_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/bosses_kill.lua @@ -10,7 +10,7 @@ local bosses = { ["the freezing time guardian"] = { storage = Storage.ForgottenKnowledge.TimeGuardianKilled }, ["the last lore keeper"] = { storage = Storage.ForgottenKnowledge.LastLoreKilled }, -- IA interactions - ["an astral glyph"] = {} + ["an astral glyph"] = {}, } local bossesForgottenKill = CreatureEvent("BossesForgottenKill") diff --git a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/bound_astral_power.lua b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/bound_astral_power.lua index 3cbe7c3dfdb..c0c327f92ab 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/bound_astral_power.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/bound_astral_power.lua @@ -2,7 +2,7 @@ local positions = { [1] = { pos = Position(31975, 32856, 15), nextPos = Position(31975, 32839, 15) }, [2] = { pos = Position(31975, 32839, 15), nextPos = Position(31995, 32839, 15) }, [3] = { pos = Position(31995, 32839, 15), nextPos = Position(31995, 32856, 15) }, - [4] = { pos = Position(31995, 32856, 15), nextPos = Position(31975, 32856, 15) } + [4] = { pos = Position(31995, 32856, 15), nextPos = Position(31975, 32856, 15) }, } local astralPower = CreatureEvent("AstralPower") @@ -17,12 +17,11 @@ function astralPower.onKill(creature, target) return true end - local bossConfig = targetMonster:getName():lower() == 'bound astral power' + local bossConfig = targetMonster:getName():lower() == "bound astral power" if not bossConfig then return true end - Game.setStorageValue(GlobalStorage.ForgottenKnowledge.AstralPowerCounter, - Game.getStorageValue(GlobalStorage.ForgottenKnowledge.AstralPowerCounter) + 1) + Game.setStorageValue(GlobalStorage.ForgottenKnowledge.AstralPowerCounter, Game.getStorageValue(GlobalStorage.ForgottenKnowledge.AstralPowerCounter) + 1) if Game.getStorageValue(GlobalStorage.ForgottenKnowledge.AstralPowerCounter) >= 4 then Game.setStorageValue(GlobalStorage.ForgottenKnowledge.AstralPowerCounter, 1) end @@ -31,7 +30,7 @@ function astralPower.onKill(creature, target) for i = 1, #positions do if creature:getPosition():getDistance(positions[i].pos) < 7 then target:say(msg, TALKTYPE_MONSTER_SAY, false, nil, positions[i].pos) - Game.createMonster('bound astral power', positions[i].nextPos, true, true) + Game.createMonster("bound astral power", positions[i].nextPos, true, true) Game.setStorageValue(GlobalStorage.ForgottenKnowledge.AstralGlyph, 1) addEvent(Game.setStorageValue, 1 * 60 * 1000, GlobalStorage.ForgottenKnowledge.AstralGlyph, 0) end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/distorted_source.lua b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/distorted_source.lua index 8378edca529..334c7bc8cf6 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/distorted_source.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/distorted_source.lua @@ -7,14 +7,14 @@ function distortedSource.onThink(creature) local spectators = Game.getSpectators(Position(31986, 32847, 14), false, false, 12, 12, 12, 12) for i = 1, #spectators do local spec = spectators[i] - if spec:getName():lower() == 'an astral glyph' then + if spec:getName():lower() == "an astral glyph" then local pos2 = spec:getPosition() health = spec:getHealth() difference = glyph:getHealth() - health spec:teleportTo(Position(31989, 32823, 15)) glyph:addHealth(-difference) glyph:teleportTo(pos2) - glyph:say('Drawing upon the power of the source, the Glyph becomes shielded again!', TALKTYPE_MONSTER_SAY) + glyph:say("Drawing upon the power of the source, the Glyph becomes shielded again!", TALKTYPE_MONSTER_SAY) return true end end @@ -24,14 +24,14 @@ function distortedSource.onThink(creature) local spectators = Game.getSpectators(Position(31986, 32847, 14), false, false, 12, 12, 12, 12) for i = 1, #spectators do local spec2 = spectators[i] - if spec2:getName():lower() == 'a shielded astral glyph' then + if spec2:getName():lower() == "a shielded astral glyph" then local pos3 = spec2:getPosition() health = spec2:getHealth() difference = glyph:getHealth() - health spec2:teleportTo(Position(31989, 32823, 15)) glyph:addHealth(-difference) glyph:teleportTo(pos3) - glyph:say('Without the power of the source the Glyph loses its protection!', TALKTYPE_MONSTER_SAY) + glyph:say("Without the power of the source the Glyph loses its protection!", TALKTYPE_MONSTER_SAY) return true end end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/dragon_egg.lua b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/dragon_egg.lua index a632cefb74a..0554ec201e4 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/dragon_egg.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/dragon_egg.lua @@ -4,7 +4,7 @@ local function revertHorror() local specs, spec = Game.getSpectators(Position(32269, 31091, 14), false, false, 12, 12, 12, 12) for i = 1, #specs do spec = specs[i] - if spec:isMonster() and spec:getName():lower() == 'melting frozen horror' then + if spec:isMonster() and spec:getName():lower() == "melting frozen horror" then health = spec:getHealth() pos = spec:getPosition() spec:teleportTo(Position(32267, 31071, 14)) @@ -27,7 +27,7 @@ local function changeHorror() local specs, spec = Game.getSpectators(Position(32269, 31091, 14), false, false, 12, 12, 12, 12) for i = 1, #specs do spec = specs[i] - if spec:isMonster() and spec:getName():lower() == 'solid frozen horror' then + if spec:isMonster() and spec:getName():lower() == "solid frozen horror" then pos = spec:getPosition() spec:teleportTo(Position(32267, 31071, 14)) melting:teleportTo(pos) @@ -49,7 +49,7 @@ dragonEggPrepareDeath:register() local dragonEggHealthChange = CreatureEvent("DragonEggHealthChange") function dragonEggHealthChange.onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) - if creature:getName():lower() == 'dragon egg' then + if creature:getName():lower() == "dragon egg" then if primaryType == COMBAT_HEALING then doTargetCombatHealth(0, creature, COMBAT_ICEDAMAGE, -primaryDamage, -primaryDamage, CONST_ME_MAGIC_GREEN) return true @@ -58,7 +58,7 @@ function dragonEggHealthChange.onHealthChange(creature, attacker, primaryDamage, primaryType = COMBAT_HEALING creature:addHealth(primaryDamage, true) if creature:getHealth() == creature:getMaxHealth() then - creature:say('The egg sends out a fiery eruption!\n Weakening the frozen horror significantly!', TALKTYPE_MONSTER_SAY) + creature:say("The egg sends out a fiery eruption!\n Weakening the frozen horror significantly!", TALKTYPE_MONSTER_SAY) doTargetCombatHealth(0, creature, COMBAT_ICEDAMAGE, -4500, -4500, CONST_ME_MAGIC_GREEN) changeHorror() end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/energy_prism.lua b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/energy_prism.lua index 4f3894f7a4a..52ac5e0dc7f 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/energy_prism.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/energy_prism.lua @@ -2,7 +2,7 @@ local energyPrism = CreatureEvent("EnergyPrism") function energyPrism.onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) if not Tile(Position(32799, 32826, 14)):getTopCreature() then if creature:getHealth() < creature:getMaxHealth() then - creature:say('*zap!*', TALKTYPE_MONSTER_SAY) + creature:say("*zap!*", TALKTYPE_MONSTER_SAY) creature:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) creature:addHealth(10000, false) end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/lloyd_preparedeath.lua b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/lloyd_preparedeath.lua index 50e94856b61..ba912aed7f2 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/lloyd_preparedeath.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/lloyd_preparedeath.lua @@ -1,8 +1,8 @@ local monsters = { - { cosmicNormal = 'cosmic energy prism a', cosmicInvu = 'cosmic energy prism a invu', pos = Position(32801, 32827, 14) }, - { cosmicNormal = 'cosmic energy prism b', cosmicInvu = 'cosmic energy prism b invu', pos = Position(32798, 32827, 14) }, - { cosmicNormal = 'cosmic energy prism c', cosmicInvu = 'cosmic energy prism c invu', pos = Position(32803, 32826, 14) }, - { cosmicNormal = 'cosmic energy prism d', cosmicInvu = 'cosmic energy prism d invu', pos = Position(32796, 32826, 14) } + { cosmicNormal = "cosmic energy prism a", cosmicInvu = "cosmic energy prism a invu", pos = Position(32801, 32827, 14) }, + { cosmicNormal = "cosmic energy prism b", cosmicInvu = "cosmic energy prism b invu", pos = Position(32798, 32827, 14) }, + { cosmicNormal = "cosmic energy prism c", cosmicInvu = "cosmic energy prism c invu", pos = Position(32803, 32826, 14) }, + { cosmicNormal = "cosmic energy prism d", cosmicInvu = "cosmic energy prism d invu", pos = Position(32796, 32826, 14) }, } local function revertLloyd(prismId) @@ -43,7 +43,7 @@ function lloydPrepareDeath.onPrepareDeath(creature, lastHitKiller, mostDamageKil creature:teleportTo(Position(32799, 32826, 14)) creature:getPosition():sendMagicEffect(CONST_ME_TELEPORT) creature:addHealth(300000, true) - creature:say('The cosmic energies in the chamber refocus on Lloyd.', TALKTYPE_MONSTER_SAY) + creature:say("The cosmic energies in the chamber refocus on Lloyd.", TALKTYPE_MONSTER_SAY) Storage.ForgottenKnowledge.LloydEvent = addEvent(revertLloyd, 10 * 1000, prismCount) end return true diff --git a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/melting_death.lua b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/melting_death.lua index 667a50b5582..42cdb6cf6a5 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/melting_death.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/melting_death.lua @@ -1,6 +1,6 @@ local monster = { - name = 'baby dragon', - pos = Position(32269, 31084, 14) + name = "baby dragon", + pos = Position(32269, 31084, 14), } local meltingDeath = CreatureEvent("MeltingDeath") @@ -9,7 +9,7 @@ function meltingDeath.onDeath(creature, corpse, lasthitkiller, mostdamagekiller, return end - if creature:isMonster() and creature:getName():lower() ~= 'melting frozen horror' then + if creature:isMonster() and creature:getName():lower() ~= "melting frozen horror" then return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/replica_servants.lua b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/replica_servants.lua index 91637e84b78..6c8811a29fc 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/replica_servants.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/replica_servants.lua @@ -1,12 +1,12 @@ local servants = { - ['golden servant replica'] = { + ["golden servant replica"] = { storage = GlobalStorage.ForgottenKnowledge.GoldenServant, - playerStorage = Storage.ForgottenKnowledge.GoldenServantCounter + playerStorage = Storage.ForgottenKnowledge.GoldenServantCounter, }, - ['diamond servant replica'] = { + ["diamond servant replica"] = { storage = GlobalStorage.ForgottenKnowledge.DiamondServant, - playerStorage = Storage.ForgottenKnowledge.DiamondServantCounter - } + playerStorage = Storage.ForgottenKnowledge.DiamondServantCounter, + }, } local replicaServant = CreatureEvent("ReplicaServant") function replicaServant.onKill(creature, target) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/soulcatcher_summon.lua b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/soulcatcher_summon.lua index f3bd3b81f7b..f3b5a4918d7 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/soulcatcher_summon.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/soulcatcher_summon.lua @@ -1,10 +1,10 @@ local soulcatcherSummon = CreatureEvent("SoulcatcherSummon") function soulcatcherSummon.onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType) - if creature and creature:getName() == 'Soulcatcher' then + if creature and creature:getName() == "Soulcatcher" then if creature:getHealth() <= 49999 then local random = math.random(1, 100) if random <= 15 then - Game.createMonster('Corrupted Soul', Position(33358, 31187, 10), true, true) + Game.createMonster("Corrupted Soul", Position(33358, 31187, 10), true, true) end end end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/thorn_knight_death.lua b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/thorn_knight_death.lua index 6dc8f25eec1..058612fc21d 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/thorn_knight_death.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/forgotten_knowledge/thorn_knight_death.lua @@ -14,14 +14,14 @@ function thornKnightDeath.onDeath(creature, corpse, lasthitkiller, mostdamagekil if not targetMonster then return true end - if targetMonster:getName():lower() == 'mounted thorn knight' then - targetMonster:say('The thorn knight unmounts!', TALKTYPE_MONSTER_SAY) - Game.createMonster('the shielded thorn knight', targetMonster:getPosition(), true, true) - Game.createMonster('thorn steed', targetMonster:getPosition(), false, true) + if targetMonster:getName():lower() == "mounted thorn knight" then + targetMonster:say("The thorn knight unmounts!", TALKTYPE_MONSTER_SAY) + Game.createMonster("the shielded thorn knight", targetMonster:getPosition(), true, true) + Game.createMonster("thorn steed", targetMonster:getPosition(), false, true) addEvent(checkBlood, 1, targetMonster:getPosition()) return true - elseif targetMonster:getName():lower() == 'the shielded thorn knight' then - Game.createMonster('the enraged thorn knight', targetMonster:getPosition(), true, true) + elseif targetMonster:getName():lower() == "the shielded thorn knight" then + Game.createMonster("the enraged thorn knight", targetMonster:getPosition(), true, true) addEvent(checkBlood, 1, targetMonster:getPosition()) return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/grave_danger/cobra_bastion/scarlett.lua b/data-otservbr-global/scripts/creaturescripts/quests/grave_danger/cobra_bastion/scarlett.lua index 44d0f946123..9287e1b5726 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/grave_danger/cobra_bastion/scarlett.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/grave_danger/cobra_bastion/scarlett.lua @@ -7,7 +7,7 @@ local arr = { { 1, 1, 1, 1, 1 }, { 1, 1, 3, 1, 1 }, { 1, 1, 1, 1, 1 }, - { 0, 1, 1, 1, 0 } + { 0, 1, 1, 1, 0 }, } combat:setArea(createCombatArea(arr)) @@ -30,7 +30,7 @@ local rooms = { [6] = { fromPos = Position(33394, 32650, 6), toPos = Position(33398, 32654, 6) }, [7] = { fromPos = Position(33398, 32642, 6), toPos = Position(33402, 32646, 6) }, [8] = { fromPos = Position(33398, 32646, 6), toPos = Position(33402, 32650, 6) }, - [9] = { fromPos = Position(33398, 32650, 6), toPos = Position(33402, 32654, 6) } + [9] = { fromPos = Position(33398, 32650, 6), toPos = Position(33402, 32654, 6) }, } local function isMirrorsCorrect(fromPosition, toPosition) @@ -54,7 +54,7 @@ local eventDoDamage = function(creatureid, attackerid, type) end local damage = creature:getMaxHealth() / 4 - creature:say('AHHHHHHHHHHH!', TALKTYPE_MONSTER_SAY) + creature:say("AHHHHHHHHHHH!", TALKTYPE_MONSTER_SAY) doTargetCombatHealth(attackerid, creature, type, -damage, -damage, CONST_ME_POFF, ORIGIN_NONE) combat:execute(creature, Variant(creature:getPosition())) @@ -82,7 +82,7 @@ local function changeScarlett(creatureid) return end - creature:say('Galthen... is that you?', TALKTYPE_MONSTER_SAY) + creature:say("Galthen... is that you?", TALKTYPE_MONSTER_SAY) SCARLETT_MAY_DIE = 1 SCARLETT_MAY_TRANSFORM = 0 creature:setMoveLocked(true) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/grave_danger/cobra_bastion/ugly_monster.lua b/data-otservbr-global/scripts/creaturescripts/quests/grave_danger/cobra_bastion/ugly_monster.lua index 13409d09b97..799081897e6 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/grave_danger/cobra_bastion/ugly_monster.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/grave_danger/cobra_bastion/ugly_monster.lua @@ -9,7 +9,7 @@ local randLoot = { { itemId = 3601 }, { itemId = 30059 }, { itemId = 30060 }, - { itemId = 30061 } + { itemId = 30061 }, } local uglyMonster = nil @@ -18,7 +18,9 @@ local creatureToSpawn = {} local uglyMonsterSpawn = CreatureEvent("UglyMonsterSpawn") function uglyMonsterSpawn.onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) - if not creature then return primaryDamage, primaryType, secondaryDamage, secondaryType end + if not creature then + return primaryDamage, primaryType, secondaryDamage, secondaryType + end if creatureToSpawn[creature:getId()] then return primaryDamage, primaryType, secondaryDamage, secondaryType end @@ -41,8 +43,12 @@ uglyMonsterSpawn:register() local uglyMonsterCleanup = CreatureEvent("UglyMonsterCleanup") function uglyMonsterCleanup.onDeath(creature, corpse, killer, mostDamage, unjustified, mostDamage_unjustified) - if not creature then return true end - if not creatureToSpawn[creature:getId()] then return true end + if not creature then + return true + end + if not creatureToSpawn[creature:getId()] then + return true + end table.remove(creatureToSpawn, creature:getId()) return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/grimvale/feroxa_transform.lua b/data-otservbr-global/scripts/creaturescripts/quests/grimvale/feroxa_transform.lua index 1baa7b3956e..ac7cd6f2b0f 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/grimvale/feroxa_transform.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/grimvale/feroxa_transform.lua @@ -1,12 +1,12 @@ local feroxaTransform = CreatureEvent("FeroxaTransform") function feroxaTransform.onThink(creature) - if creature:getName():lower() ~= 'feroxa' then + if creature:getName():lower() ~= "feroxa" then return true end if creature:getMaxHealth() == 100000 then if creature:getHealth() <= 50000 then creature:getPosition():sendMagicEffect(CONST_ME_POFF) - Game.createMonster('feroxa2', creature:getPosition(), true, true) + Game.createMonster("feroxa2", creature:getPosition(), true, true) creature:remove() end end @@ -14,8 +14,8 @@ function feroxaTransform.onThink(creature) if creature:getHealth() <= 25000 then creature:getPosition():sendMagicEffect(CONST_ME_POFF) local feroxas = { - [1] = { name = 'feroxa3' }, - [2] = { name = 'feroxa4' } + [1] = { name = "feroxa3" }, + [2] = { name = "feroxa4" }, } Game.createMonster(feroxas[math.random(#feroxas)].name, creature:getPosition(), true, true) creature:remove() diff --git a/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/aftershock_transform.lua b/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/aftershock_transform.lua index a97bfff1635..2bb9584e206 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/aftershock_transform.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/aftershock_transform.lua @@ -8,7 +8,7 @@ function aftershockTransform.onThink(creature) { x = 32203, y = 31246, z = 14 }, { x = 32205, y = 31251, z = 14 }, { x = 32210, y = 31251, z = 14 }, - { x = 32212, y = 31246, z = 14 } + { x = 32212, y = 31246, z = 14 }, } local monsterTable = { @@ -16,7 +16,7 @@ function aftershockTransform.onThink(creature) [60] = { fromStage = 1, toStage = 2 }, [40] = { fromStage = 2, toStage = 3 }, [25] = { fromStage = 3, toStage = 4 }, - [10] = { fromStage = 4, toStage = 5 } + [10] = { fromStage = 4, toStage = 5 }, } for index, value in pairs(monsterTable) do diff --git a/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/charged_anomaly_death.lua b/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/charged_anomaly_death.lua index 3510edf61b6..ce44a75d501 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/charged_anomaly_death.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/charged_anomaly_death.lua @@ -2,7 +2,7 @@ local monsterTable = { [1] = 72500, [2] = 145000, [3] = 217500, - [4] = 275500 + [4] = 275500, } local chargedAnomalyDeath = CreatureEvent("ChargedAnomalyDeath") diff --git a/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/eradicator_transform.lua b/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/eradicator_transform.lua index 3fe5c90c08d..c1ba319ed9d 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/eradicator_transform.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/eradicator_transform.lua @@ -22,7 +22,9 @@ function eradicatorTransform.onThink(creature) Game.createMonster("spark of destruction", { x = 32314, y = 31282, z = 14 }, false, true) eradicatorWeak = 1 -- Eradicator form eradicatorReleaseT = false -- Release spell - areaEradicator2 = addEvent(function() eradicatorReleaseT = true end, 9000) + areaEradicator2 = addEvent(function() + eradicatorReleaseT = true + end, 9000) elseif eradicatorWeak == 1 then local pos = creature:getPosition() local health = creature:getHealth() @@ -37,7 +39,9 @@ function eradicatorTransform.onThink(creature) monster:addHealth(-monster:getHealth() + health, COMBAT_PHYSICALDAMAGE) eradicatorWeak = 0 eradicatorReleaseT = false -- Release spell - areaEradicator2 = addEvent(function() eradicatorReleaseT = true end, 74000) + areaEradicator2 = addEvent(function() + eradicatorReleaseT = true + end, 74000) end end return true diff --git a/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/foreshock_transform.lua b/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/foreshock_transform.lua index c3b7842c707..7a4e60e4d85 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/foreshock_transform.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/foreshock_transform.lua @@ -8,7 +8,7 @@ function foreshockTransform.onThink(creature) { x = 32203, y = 31246, z = 14 }, { x = 32205, y = 31251, z = 14 }, { x = 32210, y = 31251, z = 14 }, - { x = 32212, y = 31246, z = 14 } + { x = 32212, y = 31246, z = 14 }, } local monsterTable = { @@ -16,7 +16,7 @@ function foreshockTransform.onThink(creature) [60] = { fromStage = 1, toStage = 2 }, [40] = { fromStage = 2, toStage = 3 }, [25] = { fromStage = 3, toStage = 4 }, - [10] = { fromStage = 4, toStage = 5 } + [10] = { fromStage = 4, toStage = 5 }, } for index, value in pairs(monsterTable) do diff --git a/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/heart_boss_death.lua b/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/heart_boss_death.lua index fabe3e473cc..2c90381a9bb 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/heart_boss_death.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/heart_of_destruction/heart_boss_death.lua @@ -78,36 +78,36 @@ local bosses = { actionId = 14325, fromPos = { x = 32258, y = 31237, z = 14 }, toPos = { x = 32284, y = 31262, z = 14 }, - storage = 14326 + storage = 14326, }, ["rupture"] = { tile = { x = 32326, y = 31250, z = 14 }, actionId = 14325, fromPos = { x = 32324, y = 31239, z = 14 }, toPos = { x = 32347, y = 31263, z = 14 }, - storage = 14327 + storage = 14327, }, ["realityquake"] = { tile = { x = 32199, y = 31248, z = 14 }, actionId = 14325, fromPos = { x = 32197, y = 31236, z = 14 }, toPos = { x = 32220, y = 31260, z = 14 }, - storage = 14328 + storage = 14328, }, ["eradicator"] = { tile = { x = 32318, y = 31284, z = 14 }, actionId = 14325, fromPos = { x = 32297, y = 31272, z = 14 }, toPos = { x = 32321, y = 31296, z = 14 }, - storage = 14330 + storage = 14330, }, ["outburst"] = { tile = { x = 32225, y = 31285, z = 14 }, actionId = 14325, fromPos = { x = 32223, y = 31273, z = 14 }, toPos = { x = 32246, y = 31297, z = 14 }, - storage = 14332 - } + storage = 14332, + }, } local heartBossDeath = CreatureEvent("HeartBossDeath") diff --git a/data-otservbr-global/scripts/creaturescripts/quests/hero_of_rathleton/bosses_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/hero_of_rathleton/bosses_kill.lua index 745109aa2e8..99478b3b603 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/hero_of_rathleton/bosses_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/hero_of_rathleton/bosses_kill.lua @@ -1,16 +1,19 @@ local bosses = { - ['deep terror'] = { + ["deep terror"] = { teleportPos = Position(33749, 31952, 14), nextpos = Position(33740, 31940, 15), - globaltimer = GlobalStorage.HeroRathleton.DeepRunning }, - ['empowered glooth horror'] = { + globaltimer = GlobalStorage.HeroRathleton.DeepRunning, + }, + ["empowered glooth horror"] = { teleportPos = Position(33545, 31955, 15), nextpos = Position(33534, 31955, 15), - globaltimer = GlobalStorage.HeroRathleton.HorrorRunning }, - ['professor maxxen'] = { + globaltimer = GlobalStorage.HeroRathleton.HorrorRunning, + }, + ["professor maxxen"] = { teleportPos = Position(33718, 32047, 15), nextpos = Position(33707, 32107, 15), - globaltimer = GlobalStorage.HeroRathleton.MaxxenRunning } + globaltimer = GlobalStorage.HeroRathleton.MaxxenRunning, + }, } local function checkHorror() @@ -18,15 +21,15 @@ local function checkHorror() for i = 1, #spectators do local spectator = spectators[i] if spectator:isMonster() then - if spectator:getName():lower() == 'empowered glooth horror' and spectator:getHealth() >= 1 then + if spectator:getName():lower() == "empowered glooth horror" and spectator:getHealth() >= 1 then return true - elseif spectator:getName():lower() == 'strong glooth horror' and spectator:getHealth() >= 1 then + elseif spectator:getName():lower() == "strong glooth horror" and spectator:getHealth() >= 1 then return true - elseif spectator:getName():lower() == 'feeble glooth horror' and spectator:getHealth() >= 1 then + elseif spectator:getName():lower() == "feeble glooth horror" and spectator:getHealth() >= 1 then return true - elseif spectator:getName():lower() == 'weakened glooth horror' and spectator:getHealth() >= 1 then + elseif spectator:getName():lower() == "weakened glooth horror" and spectator:getHealth() >= 1 then return true - elseif spectator:getName():lower() == 'glooth horror' and spectator:getHealth() >= 1 then + elseif spectator:getName():lower() == "glooth horror" and spectator:getHealth() >= 1 then return true end end @@ -52,7 +55,7 @@ function rathletonBossKill.onKill(creature, target) if not bossConfig then return true end - if targetMonster:getName():lower() == 'empowered glooth horror' then + if targetMonster:getName():lower() == "empowered glooth horror" then if checkHorror() == true then return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/hero_of_rathleton/glooth_horror.lua b/data-otservbr-global/scripts/creaturescripts/quests/hero_of_rathleton/glooth_horror.lua index 1e3a52b4b9a..6a3bb27b3dc 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/hero_of_rathleton/glooth_horror.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/hero_of_rathleton/glooth_horror.lua @@ -1,8 +1,8 @@ local config = { - { name = 'Feeble Glooth Horror', monster = 'Weakened Glooth Horror' }, - { name = 'Weakened Glooth Horror', monster = 'Glooth Horror' }, - { name = 'Glooth Horror', monster = 'Strong Glooth Horror' }, - { name = 'Strong Glooth Horror', monster = 'Empowered Glooth Horror' } + { name = "Feeble Glooth Horror", monster = "Weakened Glooth Horror" }, + { name = "Weakened Glooth Horror", monster = "Glooth Horror" }, + { name = "Glooth Horror", monster = "Strong Glooth Horror" }, + { name = "Strong Glooth Horror", monster = "Empowered Glooth Horror" }, } local gloothHorror = CreatureEvent("GloothHorror") diff --git a/data-otservbr-global/scripts/creaturescripts/quests/hero_of_rathleton/tentacle.lua b/data-otservbr-global/scripts/creaturescripts/quests/hero_of_rathleton/tentacle.lua index 69797f798cf..6e09ac50b8d 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/hero_of_rathleton/tentacle.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/hero_of_rathleton/tentacle.lua @@ -3,14 +3,14 @@ local function checkTentacle() local position = math.random(33736, 33746), math.random(31948, 31957), 14 for i = 1, #spectators do local spec = spectators[i] - if spec:isMonster() and spec:getName():lower() == 'tentacle of the deep terror' and spec:getHealth() >= 1 then - Game.createMonster('tentacle of the deep terror', Position(position), true, true) + if spec:isMonster() and spec:getName():lower() == "tentacle of the deep terror" and spec:getHealth() >= 1 then + Game.createMonster("tentacle of the deep terror", Position(position), true, true) return true else if Game.getStorageValue(GlobalStorage.HeroRathleton.DeepRunning) == 2 then return true end - Game.createMonster('Deep Terror', Position(33741, 31953, 14), true, true) + Game.createMonster("Deep Terror", Position(33741, 31953, 14), true, true) Game.setStorageValue(GlobalStorage.HeroRathleton.DeepRunning, 2) return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/in_service_of_yalahar/azerus_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/in_service_of_yalahar/azerus_kill.lua index 6e7c5c72f87..d150950da65 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/in_service_of_yalahar/azerus_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/in_service_of_yalahar/azerus_kill.lua @@ -9,7 +9,7 @@ end local azerus = CreatureEvent("Azerus") function azerus.onKill(creature, target) local targetMonster = target:getMonster() - if not target or not targetMonster or targetMonster:getName():lower() ~= 'azerus' then + if not target or not targetMonster or targetMonster:getName():lower() ~= "azerus" then return true end @@ -20,8 +20,7 @@ function azerus.onKill(creature, target) if item:isTeleport() then item:setDestination(teleportToPosition) end - targetMonster:say("Azerus ran into teleporter! It will disappear in 2 minutes. Enter it!", - TALKTYPE_MONSTER_SAY, 0, 0, position) + targetMonster:say("Azerus ran into teleporter! It will disappear in 2 minutes. Enter it!", TALKTYPE_MONSTER_SAY, 0, 0, position) --remove portal after 2 min addEvent(removeTeleport, 2 * 60 * 1000, position) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/in_service_of_yalahar/diseased_trio_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/in_service_of_yalahar/diseased_trio_kill.lua index 3920743a200..d0d92ac7c08 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/in_service_of_yalahar/diseased_trio_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/in_service_of_yalahar/diseased_trio_kill.lua @@ -1,7 +1,7 @@ local diseasedTrio = { - ['diseased bill'] = Storage.InServiceofYalahar.DiseasedBill, - ['diseased dan'] = Storage.InServiceofYalahar.DiseasedDan, - ['diseased fred'] = Storage.InServiceofYalahar.DiseasedFred + ["diseased bill"] = Storage.InServiceofYalahar.DiseasedBill, + ["diseased dan"] = Storage.InServiceofYalahar.DiseasedDan, + ["diseased fred"] = Storage.InServiceofYalahar.DiseasedFred, } local diseasedTrioKill = CreatureEvent("DiseasedTrio") @@ -19,13 +19,10 @@ function diseasedTrioKill.onKill(creature, target) local player = creature:getPlayer() if player:getStorageValue(bossStorage) < 1 then player:setStorageValue(bossStorage, 1) - player:say('You slayed ' .. targetMonster:getName() .. '.', TALKTYPE_MONSTER_SAY) + player:say("You slayed " .. targetMonster:getName() .. ".", TALKTYPE_MONSTER_SAY) end - if (player:getStorageValue(Storage.InServiceofYalahar.DiseasedDan) == 1 and - player:getStorageValue(Storage.InServiceofYalahar.DiseasedBill) == 1 and - player:getStorageValue(Storage.InServiceofYalahar.DiseasedFred) == 1 and - player:getStorageValue(Storage.InServiceofYalahar.AlchemistFormula) ~= 1) then + if player:getStorageValue(Storage.InServiceofYalahar.DiseasedDan) == 1 and player:getStorageValue(Storage.InServiceofYalahar.DiseasedBill) == 1 and player:getStorageValue(Storage.InServiceofYalahar.DiseasedFred) == 1 and player:getStorageValue(Storage.InServiceofYalahar.AlchemistFormula) ~= 1 then player:setStorageValue(Storage.InServiceofYalahar.AlchemistFormula, 0) end return true diff --git a/data-otservbr-global/scripts/creaturescripts/quests/in_service_of_yalahar/quara_leader_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/in_service_of_yalahar/quara_leader_kill.lua index 669f6c2d452..51eb420a80f 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/in_service_of_yalahar/quara_leader_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/in_service_of_yalahar/quara_leader_kill.lua @@ -1,7 +1,7 @@ local quaraLeaders = { - ['inky'] = Storage.InServiceofYalahar.QuaraInky, - ['sharptooth'] = Storage.InServiceofYalahar.QuaraSharptooth, - ['splasher'] = Storage.InServiceofYalahar.QuaraSplasher + ["inky"] = Storage.InServiceofYalahar.QuaraInky, + ["sharptooth"] = Storage.InServiceofYalahar.QuaraSharptooth, + ["splasher"] = Storage.InServiceofYalahar.QuaraSplasher, } local quaraLeadersKill = CreatureEvent("QuaraLeaders") @@ -19,7 +19,7 @@ function quaraLeadersKill.onKill(creature, target) local player = creature:getPlayer() if player:getStorageValue(bossStorage) < 1 then player:setStorageValue(bossStorage, 1) - player:say('You slayed ' .. targetMonster:getName() .. '.', TALKTYPE_MONSTER_SAY) + player:say("You slayed " .. targetMonster:getName() .. ".", TALKTYPE_MONSTER_SAY) player:setStorageValue(Storage.InServiceofYalahar.QuaraState, 2) player:setStorageValue(Storage.InServiceofYalahar.Questline, 41) -- StorageValue for Questlog 'Mission 07: A Fishy Mission' diff --git a/data-otservbr-global/scripts/creaturescripts/quests/inquisition/inquisition_boss.lua b/data-otservbr-global/scripts/creaturescripts/quests/inquisition/inquisition_boss.lua index ac19f2ac40e..e2b15b60137 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/inquisition/inquisition_boss.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/inquisition/inquisition_boss.lua @@ -1,11 +1,11 @@ local bosses = { - ['ushuriel'] = 200, - ['zugurosh'] = 201, - ['madareth'] = 202, - ['latrivan'] = 203, - ['golgordan'] = 203, - ['annihilon'] = 204, - ['hellgorak'] = 205 + ["ushuriel"] = 200, + ["zugurosh"] = 201, + ["madareth"] = 202, + ["latrivan"] = 203, + ["golgordan"] = 203, + ["annihilon"] = 204, + ["hellgorak"] = 205, } local inquisitionBossKill = CreatureEvent("InquisitionBossKill") @@ -22,13 +22,13 @@ function inquisitionBossKill.onKill(player, target) end local newValue = 2 - if targetName == 'latrivan' or targetName == 'golgordan' then + if targetName == "latrivan" or targetName == "golgordan" then newValue = math.max(0, Game.getStorageValue(bossStorage)) + 1 end Game.setStorageValue(bossStorage, newValue) if newValue == 2 then - player:say('You now have 10 minutes to exit this room through the teleporter. It will bring you to the next room.', TALKTYPE_MONSTER_SAY) + player:say("You now have 10 minutes to exit this room through the teleporter. It will bring you to the next room.", TALKTYPE_MONSTER_SAY) addEvent(Game.setStorageValue, 10 * 60 * 1000, bossStorage, 0) end return true diff --git a/data-otservbr-global/scripts/creaturescripts/quests/inquisition/inquisition_ungreez.lua b/data-otservbr-global/scripts/creaturescripts/quests/inquisition/inquisition_ungreez.lua index 9f5a2a0a067..22cdf8b76fb 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/inquisition/inquisition_ungreez.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/inquisition/inquisition_ungreez.lua @@ -5,7 +5,7 @@ function ungreezKill.onKill(creature, target) return true end - if targetMonster:getName():lower() ~= 'ungreez' then + if targetMonster:getName():lower() ~= "ungreez" then return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/killing_in_the_name_of/kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/killing_in_the_name_of/kill.lua index cd364a862b1..254e72273d4 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/killing_in_the_name_of/kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/killing_in_the_name_of/kill.lua @@ -30,7 +30,7 @@ local taskBoss = { [28] = "tiquandas revenge", [29] = "demodras", [30] = "necropharus", - [31] = "the horned fox" + [31] = "the horned fox", } local function killCheck(player, targetName, taskName, taskStage, taskInfo, taskAltKillCount, taskkillCount) if player:getStorageValue(taskName) == taskStage then diff --git a/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/bragrumol.lua b/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/bragrumol.lua index 0877247ddd8..9310a34737c 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/bragrumol.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/bragrumol.lua @@ -1,8 +1,8 @@ local bragrumol = CreatureEvent("BragrumolKill") function bragrumol.onKill(cid, target, damage, flags, corpse) - if (isMonster(target)) then - if (string.lower(getCreatureName(target)) == "bragrumol") then + if isMonster(target) then + if string.lower(getCreatureName(target)) == "bragrumol" then for attackerUid, damage in pairs(target:getDamageMap()) do local player = Player(attackerUid) if player and player:getStorageValue(Storage.Kilmaresh.Twelve.Bragrumol) == 1 then diff --git a/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/fafnar.lua b/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/fafnar.lua index 1e8d3f617a7..157b2302848 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/fafnar.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/fafnar.lua @@ -1,6 +1,6 @@ local monster = { - ['burning gladiator'] = Storage.Kilmaresh.Thirteen.Fafnar, - ['priestess of the wild sun'] = Storage.Kilmaresh.Thirteen.Fafnar + ["burning gladiator"] = Storage.Kilmaresh.Thirteen.Fafnar, + ["priestess of the wild sun"] = Storage.Kilmaresh.Thirteen.Fafnar, } local fafnar = CreatureEvent("FafnarKill") @@ -13,10 +13,10 @@ function fafnar.onKill(creature, target) local kills = creature:getStorageValue(storage) if kills == 300 and creature:getStorageValue(storage) == 1 then - creature:say('You slayed ' .. target:getName() .. '.', TALKTYPE_MONSTER_SAY) + creature:say("You slayed " .. target:getName() .. ".", TALKTYPE_MONSTER_SAY) else kills = kills + 1 - creature:say('You have slayed ' .. target:getName() .. ' ' .. kills .. ' times!', TALKTYPE_MONSTER_SAY) + creature:say("You have slayed " .. target:getName() .. " " .. kills .. " times!", TALKTYPE_MONSTER_SAY) creature:setStorageValue(storage, kills) end return true diff --git a/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/mozradek.lua b/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/mozradek.lua index ac7147a8460..e87fef037eb 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/mozradek.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/mozradek.lua @@ -1,8 +1,8 @@ local mozradek = CreatureEvent("MozradekKill") function mozradek.onKill(cid, target, damage, flags, corpse) - if (isMonster(target)) then - if (string.lower(getCreatureName(target)) == "mozradek") then + if isMonster(target) then + if string.lower(getCreatureName(target)) == "mozradek" then for attackerUid, damage in pairs(target:getDamageMap()) do local player = Player(attackerUid) if player and player:getStorageValue(Storage.Kilmaresh.Twelve.Mozradek) == 1 then diff --git a/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/xogixath.lua b/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/xogixath.lua index 1b2bd4a6fdf..d9e2dba2e5e 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/xogixath.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/kilmaresh/xogixath.lua @@ -1,8 +1,8 @@ local xogixath = CreatureEvent("XogixathKill") function xogixath.onKill(cid, target, damage, flags, corpse) - if (isMonster(target)) then - if (string.lower(getCreatureName(target)) == "xogixath") then + if isMonster(target) then + if string.lower(getCreatureName(target)) == "xogixath" then for attackerUid, damage in pairs(target:getDamageMap()) do local player = Player(attackerUid) if player and player:getStorageValue(Storage.Kilmaresh.Twelve.Xogixath) == 1 then diff --git a/data-otservbr-global/scripts/creaturescripts/quests/liquid_black/deepling_boss_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/liquid_black/deepling_boss_kill.lua index 0cc48e2d7f3..369d57155ca 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/liquid_black/deepling_boss_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/liquid_black/deepling_boss_kill.lua @@ -1,7 +1,7 @@ local bosses = { - ['jaul'] = { status = 2, storage = Storage.DeeplingBosses.Jaul }, - ['tanjis'] = { status = 3, storage = Storage.DeeplingBosses.Tanjis }, - ['obujos'] = { status = 4, storage = Storage.DeeplingBosses.Obujos }, + ["jaul"] = { status = 2, storage = Storage.DeeplingBosses.Jaul }, + ["tanjis"] = { status = 3, storage = Storage.DeeplingBosses.Tanjis }, + ["obujos"] = { status = 4, storage = Storage.DeeplingBosses.Obujos }, } local deeplingBosses = CreatureEvent("DeeplingBosses") diff --git a/data-otservbr-global/scripts/creaturescripts/quests/raging_mage_tower/raging_mage_1.lua b/data-otservbr-global/scripts/creaturescripts/quests/raging_mage_tower/raging_mage_1.lua index 6a7c5cdf2cc..e9ca2dd65bd 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/raging_mage_tower/raging_mage_1.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/raging_mage_tower/raging_mage_1.lua @@ -4,21 +4,17 @@ function ragingMage1.onDeath(creature, corpse, killer, mostDamageKiller, unjusti local yielothaxKillStorage = 673003 local enoughKills = 775559 - if killer:getStorageValue(playerDoubleMageKill) < 2 and not - mostDamageKiller:hasAchievement('Mageslayer') and Game.getStorageValue(yielothaxKillStorage) < 2000 then - creature:say("MWAAAHAHAAA!! NO ONE!! NO ONE CAN DEFEAT MEEE!!!", - TALKTYPE_MONSTER_YELL, false, nil, Position(33143, 31527, 2)) + if killer:getStorageValue(playerDoubleMageKill) < 2 and not mostDamageKiller:hasAchievement("Mageslayer") and Game.getStorageValue(yielothaxKillStorage) < 2000 then + creature:say("MWAAAHAHAAA!! NO ONE!! NO ONE CAN DEFEAT MEEE!!!", TALKTYPE_MONSTER_YELL, false, nil, Position(33143, 31527, 2)) Game.createMonster("energized raging mage", Position(33142, 31529, 2)) mostDamageKiller:setStorageValue(playerDoubleMageKill, mostDamageKiller:getStorageValue(playerDoubleMageKill) + 1) - mostDamageKiller:addAchievement('Mageslayer') + mostDamageKiller:addAchievement("Mageslayer") elseif Game.getStorageValue(yielothaxKillStorage) < 2000 then - creature:say("MWAAAHAHAAA!! NO ONE!! NO ONE CAN DEFEAT MEEE!!!", - TALKTYPE_MONSTER_YELL, false, nil, Position(33143, 31527, 2)) + creature:say("MWAAAHAHAAA!! NO ONE!! NO ONE CAN DEFEAT MEEE!!!", TALKTYPE_MONSTER_YELL, false, nil, Position(33143, 31527, 2)) Game.createMonster("Energized Raging Mage", Position(33142, 31529, 2)) elseif Game.getStorageValue(yielothaxKillStorage) > 1999 then Game.createMonster("raging mage", Position(33142, 31529, 2)) - creature:say("GNAAAAAHRRRG!! WHAT? WHAT DID YOU DO TO ME!! I... I feel the energies crawling away... from me... DIE!!!", - TALKTYPE_MONSTER_YELL, false, nil, Position(33143, 31527, 2)) + creature:say("GNAAAAAHRRRG!! WHAT? WHAT DID YOU DO TO ME!! I... I feel the energies crawling away... from me... DIE!!!", TALKTYPE_MONSTER_YELL, false, nil, Position(33143, 31527, 2)) Game.setStorageValue(yielothaxKillStorage, 0) Game.setStorageValue(enoughKills, 1) local t, spectator = Game.getSpectators(creature:getPosition(), false, false, 10, 10, 10, 10) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/raging_mage_tower/raging_mage_2.lua b/data-otservbr-global/scripts/creaturescripts/quests/raging_mage_tower/raging_mage_2.lua index 9799fe3c220..222ac163523 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/raging_mage_tower/raging_mage_2.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/raging_mage_tower/raging_mage_2.lua @@ -1,22 +1,34 @@ local ragingMage2 = CreatureEvent("RagingMage2") function ragingMage2.onDeath(creature, corpse, killer, mostDamageKiller, unjustified, mostDamageUnjustified) local targetMonster = creature:getMonster() - if not creature or not targetMonster or targetMonster:getName():lower() ~= 'raging mage' then + if not creature or not targetMonster or targetMonster:getName():lower() ~= "raging mage" then return true end - broadcastMessage("The remains of the Raging Mage are scattered on the floor of his Tower. \z - The dimensional portal quakes.", MESSAGE_EVENT_ADVANCE) - targetMonster:say("I WILL RETURN!! My death will just be a door to await my homecoming, \z - my physical hull will be... my... argh...", TALKTYPE_MONSTER_SAY, 0, 0, Position(33142, 31529, 2)) + broadcastMessage( + "The remains of the Raging Mage are scattered on the floor of his Tower. \z + The dimensional portal quakes.", + MESSAGE_EVENT_ADVANCE + ) + targetMonster:say( + "I WILL RETURN!! My death will just be a door to await my homecoming, \z + my physical hull will be... my... argh...", + TALKTYPE_MONSTER_SAY, + 0, + 0, + Position(33142, 31529, 2) + ) addEvent(function() local tilePos = Tile(Position(33143, 31527, 2)):getItemById(10840) if not tilePos then return true end tilePos:remove() - broadcastMessage("With a great bang the dimensional portal in Zao collapsed and \z - with it the connection to the other dimension shattered.", MESSAGE_EVENT_ADVANCE) + broadcastMessage( + "With a great bang the dimensional portal in Zao collapsed and \z + with it the connection to the other dimension shattered.", + MESSAGE_EVENT_ADVANCE + ) end, 5 * 60 * 1000) mostDamageKiller:setStorageValue(673004, 0) Game.setStorageValue(775559, 0) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/raging_mage_tower/yielothax_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/raging_mage_tower/yielothax_kill.lua index 8c37d0fa5bd..c22332db7a2 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/raging_mage_tower/yielothax_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/raging_mage_tower/yielothax_kill.lua @@ -1,7 +1,7 @@ local yielothaxKill = CreatureEvent("YielothaxKill") function yielothaxKill.onKill(cid, target, damage, flags) - if (isMonster(target)) then - if (string.lower(getCreatureName(target)) == "yielothax") then + if isMonster(target) then + if string.lower(getCreatureName(target)) == "yielothax" then setGlobalStorageValue(673003, getGlobalStorageValue(673003) + 1) end end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/spike_tasks/lower_spike_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/spike_tasks/lower_spike_kill.lua index 5ebcdbefcc5..02282ff3f37 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/spike_tasks/lower_spike_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/spike_tasks/lower_spike_kill.lua @@ -1,7 +1,7 @@ local range = { -- Only the Drillworms killed on this area count from = Position(32120, 32470, 13), - to = Position(32345, 32710, 15) + to = Position(32345, 32710, 15), } local lowerSpikeKill = CreatureEvent("LowerSpikeKill") diff --git a/data-otservbr-global/scripts/creaturescripts/quests/spike_tasks/middle_spike_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/spike_tasks/middle_spike_kill.lua index 01b2dc11782..f5f8e0b673f 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/spike_tasks/middle_spike_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/spike_tasks/middle_spike_kill.lua @@ -1,7 +1,7 @@ local range = { -- Only the Crystalcrushers killed on this area count from = Position(32100, 32470, 11), - to = Position(32380, 32725, 12) + to = Position(32380, 32725, 12), } local middleSpikeKill = CreatureEvent("MiddleSpikeKill") diff --git a/data-otservbr-global/scripts/creaturescripts/quests/spike_tasks/upper_spike_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/spike_tasks/upper_spike_kill.lua index d401355db8f..d06f4e2c94f 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/spike_tasks/upper_spike_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/spike_tasks/upper_spike_kill.lua @@ -1,7 +1,7 @@ local range = { -- Only the Demon Skeletons killed on this area count from = Position(32008, 32522, 8), - to = Position(32365, 32759, 10) + to = Position(32365, 32759, 10), } local upperSpikeKill = CreatureEvent("UpperSpikeKill") diff --git a/data-otservbr-global/scripts/creaturescripts/quests/svargrond_arena/arena_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/svargrond_arena/arena_kill.lua index 73f829c30de..7798c4b3738 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/svargrond_arena/arena_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/svargrond_arena/arena_kill.lua @@ -36,7 +36,7 @@ function svargrondArenaKill.onKill(creature, target) end end player:setStorageValue(Storage.SvargrondArena.PitDoor, pit + 1) - player:say('Victory! Head through the new teleporter into the next room.', TALKTYPE_MONSTER_SAY) + player:say("Victory! Head through the new teleporter into the next room.", TALKTYPE_MONSTER_SAY) return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/the_first_dragon/death_dragon_essence.lua b/data-otservbr-global/scripts/creaturescripts/quests/the_first_dragon/death_dragon_essence.lua index e8c4c418d6d..eb20aa06645 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/the_first_dragon/death_dragon_essence.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/the_first_dragon/death_dragon_essence.lua @@ -4,12 +4,12 @@ function deathDragonEssence.onDeath(creature, corpse, lasthitkiller, mostdamagek local spectators = Game.getSpectators(Position(33617, 31023, 14), false, false, 14, 14, 14, 14) for i = 1, #spectators do local spec = spectators[i] - if spec:getName() == 'Dragon Essence' then + if spec:getName() == "Dragon Essence" then spec:remove() end end - Game.createMonster('The First Dragon', Position(33617, 31023, 14), true, true) - creature:say('BEWARE! THE FIRST DRAGON APROACHES!', TALKTYPE_MONSTER_SAY, false, nil, Position(33617, 31023, 14)) + Game.createMonster("The First Dragon", Position(33617, 31023, 14), true, true) + creature:say("BEWARE! THE FIRST DRAGON APROACHES!", TALKTYPE_MONSTER_SAY, false, nil, Position(33617, 31023, 14)) return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/the_first_dragon/death_first_dragon.lua b/data-otservbr-global/scripts/creaturescripts/quests/the_first_dragon/death_first_dragon.lua index d8dea2a090b..90a2451066c 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/the_first_dragon/death_first_dragon.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/the_first_dragon/death_first_dragon.lua @@ -15,7 +15,7 @@ local destinations = { Position(33618, 31023, 13), Position(33616, 31024, 13), Position(33617, 31024, 13), - Position(33618, 31024, 13) + Position(33618, 31024, 13), } function deathFirstDragon.onDeath(creature, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified) diff --git a/data-otservbr-global/scripts/creaturescripts/quests/the_first_dragon/death_somewhat_beatable.lua b/data-otservbr-global/scripts/creaturescripts/quests/the_first_dragon/death_somewhat_beatable.lua index c9bf9eebd0b..be0cab0cd7b 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/the_first_dragon/death_somewhat_beatable.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/the_first_dragon/death_somewhat_beatable.lua @@ -12,7 +12,7 @@ function deathSomewhatBeatable.onDeath(creature, target) end if spec:getStorageValue(Storage.FirstDragon.SomewhatBeatable) == 5 then for b = 1, 6 do - Game.createMonster('dragon essence', Position(math.random(33609, 33624), math.random(31017, 31028), 14), true, true) + Game.createMonster("dragon essence", Position(math.random(33609, 33624), math.random(31017, 31028), 14), true, true) end spec:setStorageValue(Storage.FirstDragon.SomewhatBeatable, 0) end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/the_primal_ordeal/the_primal_menace_killed.lua b/data-otservbr-global/scripts/creaturescripts/quests/the_primal_ordeal/the_primal_menace_killed.lua index 62abf7edc6c..2f5af644afa 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/the_primal_ordeal/the_primal_menace_killed.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/the_primal_ordeal/the_primal_menace_killed.lua @@ -7,7 +7,9 @@ function thePrimalMenaceDeath.onDeath(creature, corpse, killer, mostDamage, unju local damageMap = creature:getMonster():getDamageMap() local hazard = Hazard.getByName("hazard.gnomprona-gardens") - if not hazard then return end + if not hazard then + return + end local _, hazardPoints = hazard:getHazardPlayerAndPoints(damageMap) for key, value in pairs(damageMap) do diff --git a/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/bosses_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/bosses_kill.lua index 39a56c83791..2cb2db29438 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/bosses_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/bosses_kill.lua @@ -1,16 +1,20 @@ local bosses = { - ['fury of the emperor'] = { + ["fury of the emperor"] = { position = Position(33048, 31085, 15), - storage = GlobalStorage.WrathOfTheEmperor.Bosses.Fury }, - ['wrath of the emperor'] = { + storage = GlobalStorage.WrathOfTheEmperor.Bosses.Fury, + }, + ["wrath of the emperor"] = { position = Position(33094, 31087, 15), - storage = GlobalStorage.WrathOfTheEmperor.Bosses.Wrath }, - ['scorn of the emperor'] = { + storage = GlobalStorage.WrathOfTheEmperor.Bosses.Wrath, + }, + ["scorn of the emperor"] = { position = Position(33095, 31110, 15), - storage = GlobalStorage.WrathOfTheEmperor.Bosses.Scorn }, - ['spite of the emperor'] = { + storage = GlobalStorage.WrathOfTheEmperor.Bosses.Scorn, + }, + ["spite of the emperor"] = { position = Position(33048, 31111, 15), - storage = GlobalStorage.WrathOfTheEmperor.Bosses.Spite }, + storage = GlobalStorage.WrathOfTheEmperor.Bosses.Spite, + }, } local bossesKill = CreatureEvent("BossesKill") diff --git a/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/keeper_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/keeper_kill.lua index d5335d12c84..f43204ce59c 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/keeper_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/keeper_kill.lua @@ -5,7 +5,7 @@ function keeperKill.onKill(creature, target) return true end - if targetMonster:getName():lower() == 'the keeper' then + if targetMonster:getName():lower() == "the keeper" then Game.setStorageValue(Storage.WrathoftheEmperor.Mission03, 0) end return true diff --git a/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/lizard_magistratus_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/lizard_magistratus_kill.lua index f07a771c70a..e526a699b20 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/lizard_magistratus_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/lizard_magistratus_kill.lua @@ -5,7 +5,7 @@ function lizardMagistratusKill.onKill(creature, target) return true end - if targetMonster:getName():lower() ~= 'lizard magistratus' then + if targetMonster:getName():lower() ~= "lizard magistratus" then return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/lizard_noble_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/lizard_noble_kill.lua index 4272a187322..ab45524fba1 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/lizard_noble_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/lizard_noble_kill.lua @@ -5,7 +5,7 @@ function lizardNobleKill.onKill(creature, target) return true end - if targetMonster:getName():lower() ~= 'lizard noble' then + if targetMonster:getName():lower() ~= "lizard noble" then return true end diff --git a/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/zalamon_kill.lua b/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/zalamon_kill.lua index 820ec7b1884..143049aaece 100644 --- a/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/zalamon_kill.lua +++ b/data-otservbr-global/scripts/creaturescripts/quests/wrath_of_the_emperor/zalamon_kill.lua @@ -1,16 +1,16 @@ local bossForms = { - ['snake god essence'] = { - text = 'IT\'S NOT THAT EASY MORTALS! FEEL THE POWER OF THE GOD!', - newForm = 'snake thing' + ["snake god essence"] = { + text = "IT'S NOT THAT EASY MORTALS! FEEL THE POWER OF THE GOD!", + newForm = "snake thing", }, - ['snake thing'] = { - text = 'NOOO! NOW YOU HERETICS WILL FACE MY GODLY WRATH!', - newForm = 'lizard abomination' + ["snake thing"] = { + text = "NOOO! NOW YOU HERETICS WILL FACE MY GODLY WRATH!", + newForm = "lizard abomination", + }, + ["lizard abomination"] = { + text = "YOU ... WILL ... PAY WITH ETERNITY ... OF AGONY!", + newForm = "mutated zalamon", }, - ['lizard abomination'] = { - text = 'YOU ... WILL ... PAY WITH ETERNITY ... OF AGONY!', - newForm = 'mutated zalamon' - } } local zalamonKill = CreatureEvent("ZalamonKill") @@ -20,7 +20,7 @@ function zalamonKill.onKill(player, target) return true end - if targetMonster:getName():lower() == 'mutated zalamon' then + if targetMonster:getName():lower() == "mutated zalamon" then Game.setStorageValue(Storage.WrathoftheEmperor.Mission11, -1) return true end diff --git a/data-otservbr-global/scripts/custom/change_gold.lua b/data-otservbr-global/scripts/custom/change_gold.lua index 26acee03385..bcde27d9fca 100644 --- a/data-otservbr-global/scripts/custom/change_gold.lua +++ b/data-otservbr-global/scripts/custom/change_gold.lua @@ -1,7 +1,7 @@ local config = { [ITEM_GOLD_COIN] = { changeTo = ITEM_PLATINUM_COIN }, [ITEM_PLATINUM_COIN] = { changeBack = ITEM_GOLD_COIN, changeTo = ITEM_CRYSTAL_COIN }, - [ITEM_CRYSTAL_COIN] = { changeBack = ITEM_PLATINUM_COIN } + [ITEM_CRYSTAL_COIN] = { changeBack = ITEM_PLATINUM_COIN }, } local changeGold = Action() function changeGold.onUse(player, item, fromPosition, target, toPosition, isHotkey) diff --git a/data-otservbr-global/scripts/custom/monster_training_machine.lua b/data-otservbr-global/scripts/custom/monster_training_machine.lua index 23aa4e333c8..7ef2f78d707 100644 --- a/data-otservbr-global/scripts/custom/monster_training_machine.lua +++ b/data-otservbr-global/scripts/custom/monster_training_machine.lua @@ -3,7 +3,7 @@ local monster = {} monster.description = "Training Machine" monster.experience = 0 monster.outfit = { - lookType = 1142 + lookType = 1142, } monster.health = 1000000 @@ -14,7 +14,7 @@ monster.speed = 0 monster.changeTarget = { interval = 1 * 1000, - chance = 0 + chance = 0, } monster.flags = { @@ -29,8 +29,7 @@ monster.flags = { staticAttackChance = 100, } -monster.summons = { -} +monster.summons = {} monster.voices = { interval = 5000, @@ -43,26 +42,23 @@ monster.voices = { { text = "klonk klonk klonk", yell = false }, { text = "Self-diagnosis running.", yell = false }, { text = "Battle simulation proceeding.", yell = false }, - { text = "Repairs initiated!", yell = false } + { text = "Repairs initiated!", yell = false }, } -monster.loot = { -} +monster.loot = {} monster.attacks = { - { name = "melee", attack = 130, interval = 2 * 1000, minDamage = -1, maxDamage = -2 } + { name = "melee", attack = 130, interval = 2 * 1000, minDamage = -1, maxDamage = -2 }, } monster.defenses = { defense = 1, armor = 1, - { name = "combat", type = COMBAT_HEALING, chance = 15, interval = 2 * 1000, minDamage = 10000, maxDamage = 50000, effect = CONST_ME_MAGIC_BLUE } + { name = "combat", type = COMBAT_HEALING, chance = 15, interval = 2 * 1000, minDamage = 10000, maxDamage = 50000, effect = CONST_ME_MAGIC_BLUE }, } -monster.elements = { -} +monster.elements = {} -monster.immunities = { -} +monster.immunities = {} mType:register(monster) diff --git a/data-otservbr-global/scripts/custom/movement_trainer_entrance.lua b/data-otservbr-global/scripts/custom/movement_trainer_entrance.lua index 42bac70b1fe..161c0ffb220 100644 --- a/data-otservbr-global/scripts/custom/movement_trainer_entrance.lua +++ b/data-otservbr-global/scripts/custom/movement_trainer_entrance.lua @@ -8,7 +8,7 @@ local config = { -- Number of columns columns = 7, -- Number of lines - lines = 54 + lines = 54, } local function isBusyable(position) diff --git a/data-otservbr-global/scripts/custom/movement_trainer_exit.lua b/data-otservbr-global/scripts/custom/movement_trainer_exit.lua index 38679ecf31d..c3a58bc18b5 100644 --- a/data-otservbr-global/scripts/custom/movement_trainer_exit.lua +++ b/data-otservbr-global/scripts/custom/movement_trainer_exit.lua @@ -15,7 +15,7 @@ end local positions = { { x = 991, y = 1031, z = 7 }, - { x = 1057, y = 1023, z = 7 } + { x = 1057, y = 1023, z = 7 }, } for index, position in pairs(positions) do trainerExit:position(position) diff --git a/data-otservbr-global/scripts/globalevents/customs/rain.lua b/data-otservbr-global/scripts/globalevents/customs/rain.lua index e54063851cf..f2520d880ee 100644 --- a/data-otservbr-global/scripts/globalevents/customs/rain.lua +++ b/data-otservbr-global/scripts/globalevents/customs/rain.lua @@ -4,9 +4,9 @@ if configManager.getBoolean(configKeys.WEATHER_RAIN) then function weatherStartup.onStartup() local rain = math.random(100) if rain > 95 then - Game.setStorageValue('Weather', 1) + Game.setStorageValue("Weather", 1) else - Game.setStorageValue('Weather', 0) + Game.setStorageValue("Weather", 0) end return true end @@ -18,9 +18,9 @@ if configManager.getBoolean(configKeys.WEATHER_RAIN) then function weather.onThink(interval, lastExecution) local rain = math.random(100) if rain > 95 then - Game.setStorageValue('Weather', 1) + Game.setStorageValue("Weather", 1) else - Game.setStorageValue('Weather', 0) + Game.setStorageValue("Weather", 0) end return true end @@ -31,7 +31,7 @@ if configManager.getBoolean(configKeys.WEATHER_RAIN) then local weatherRain = GlobalEvent("WeatherRain") function weatherRain.onThink(interval, lastExecution) - if Game.getStorageValue('Weather') == 1 then + if Game.getStorageValue("Weather") == 1 then local players = Game.getPlayers() if #players == 0 then return true diff --git a/data-otservbr-global/scripts/globalevents/dawnport_magic_effect.lua b/data-otservbr-global/scripts/globalevents/dawnport_magic_effect.lua index fb2c1314179..d2cafef85ff 100644 --- a/data-otservbr-global/scripts/globalevents/dawnport_magic_effect.lua +++ b/data-otservbr-global/scripts/globalevents/dawnport_magic_effect.lua @@ -6,7 +6,7 @@ local positions = { { x = 32074, y = 31892, z = 5 }, { x = 32074, y = 31889, z = 5 }, { x = 32063, y = 31881, z = 5 }, - { x = 32066, y = 31881, z = 5 } + { x = 32066, y = 31881, z = 5 }, } local dawnportMagicEffect = GlobalEvent("DawnportMagicEffect") diff --git a/data-otservbr-global/scripts/globalevents/others/check_mount.lua b/data-otservbr-global/scripts/globalevents/others/check_mount.lua index 333b39a16c3..85c4ece1c82 100644 --- a/data-otservbr-global/scripts/globalevents/others/check_mount.lua +++ b/data-otservbr-global/scripts/globalevents/others/check_mount.lua @@ -25,7 +25,7 @@ function rentedMounts.onThink(interval) end player:setStorageValue(Storage.RentedHorseTimer, -1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Your contract with your horse expired and it returned back to the horse station.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your contract with your horse expired and it returned back to the horse station.") end return true end diff --git a/data-otservbr-global/scripts/globalevents/others/global_server_save.lua b/data-otservbr-global/scripts/globalevents/others/global_server_save.lua index 2e6b86930b6..6cdb27447b6 100644 --- a/data-otservbr-global/scripts/globalevents/others/global_server_save.lua +++ b/data-otservbr-global/scripts/globalevents/others/global_server_save.lua @@ -11,7 +11,7 @@ local function ServerSave() -- Updating daily reward next server save. UpdateDailyRewardGlobalStorage(DailyReward.storages.lastServerSave, os.time()) -- Reset gamestore exp boost count. - db.query('UPDATE `player_storage` SET `value` = 0 WHERE `player_storage`.`key` = 51052') + db.query("UPDATE `player_storage` SET `value` = 0 WHERE `player_storage`.`key` = 51052") end local function ServerSaveWarning(time) diff --git a/data-otservbr-global/scripts/globalevents/others/online_record.lua b/data-otservbr-global/scripts/globalevents/others/online_record.lua index 2df6b89390e..9d7bb82e284 100644 --- a/data-otservbr-global/scripts/globalevents/others/online_record.lua +++ b/data-otservbr-global/scripts/globalevents/others/online_record.lua @@ -1,6 +1,6 @@ local playerrecord = GlobalEvent("playerrecord") function playerrecord.onRecord(current, old) - addEvent(Game.broadcastMessage, 150, 'New record: ' .. current .. ' players online.', MESSAGE_EVENT_ADVANCE) + addEvent(Game.broadcastMessage, 150, "New record: " .. current .. " players online.", MESSAGE_EVENT_ADVANCE) return true end diff --git a/data-otservbr-global/scripts/globalevents/others/spawns_npc_by_time.lua b/data-otservbr-global/scripts/globalevents/others/spawns_npc_by_time.lua index 1b40ce30f38..060c4277be0 100644 --- a/data-otservbr-global/scripts/globalevents/others/spawns_npc_by_time.lua +++ b/data-otservbr-global/scripts/globalevents/others/spawns_npc_by_time.lua @@ -7,7 +7,7 @@ local periods = { [LIGHT_STATE_NIGHT] = "Night", [LIGHT_STATE_DAY] = "Day", [LIGHT_STATE_SUNRISE] = "Sunrise", - [LIGHT_STATE_SUNSET] = "Sunset" + [LIGHT_STATE_SUNSET] = "Sunset", } local spawns = { @@ -16,20 +16,20 @@ local spawns = { name = "Ghostly Wolf", spawn = LIGHT_STATE_SUNSET, despawn = LIGHT_STATE_SUNRISE, - position = { x = 33332, y = 32052, z = 7 } + position = { x = 33332, y = 32052, z = 7 }, }, [2] = { -- spawn in night name = "Talila", spawn = LIGHT_STATE_SUNSET, despawn = LIGHT_STATE_SUNRISE, - position = { x = 33504, y = 32222, z = 7 } + position = { x = 33504, y = 32222, z = 7 }, }, [3] = { -- spawn in day name = "Valindara", spawn = LIGHT_STATE_SUNRISE, despawn = LIGHT_STATE_SUNSET, - position = { x = 33504, y = 32222, z = 7 } - } + position = { x = 33504, y = 32222, z = 7 }, + }, } local spawnsByTime = GlobalEvent("spawnsByTime") @@ -37,8 +37,7 @@ function spawnsByTime.onPeriodChange(period, light) local time = getWorldTime() if configManager.getBoolean(configKeys.ALL_CONSOLE_LOG) then - logger.info("Starting {} Current light is {} and it's {} Tibian Time", - periods[period], light, getFormattedWorldTime(time)) + logger.info("Starting {} Current light is {} and it's {} Tibian Time", periods[period], light, getFormattedWorldTime(time)) end for index, value in pairs(spawns) do if value.spawn == period then diff --git a/data-otservbr-global/scripts/globalevents/others/startup.lua b/data-otservbr-global/scripts/globalevents/others/startup.lua index 2898992d102..22af76e94c2 100644 --- a/data-otservbr-global/scripts/globalevents/others/startup.lua +++ b/data-otservbr-global/scripts/globalevents/others/startup.lua @@ -57,50 +57,50 @@ function serverstartup.onStartup() end local time = os.time() - db.asyncQuery('TRUNCATE TABLE `players_online`') + db.asyncQuery("TRUNCATE TABLE `players_online`") local resetSessionsOnStartup = configManager.getBoolean(configKeys.RESET_SESSIONS_ON_STARTUP) if AUTH_TYPE == "session" then if resetSessionsOnStartup then - db.query('TRUNCATE TABLE `account_sessions`') + db.query("TRUNCATE TABLE `account_sessions`") else - db.query('DELETE FROM `account_sessions` WHERE `expires` <= ' .. time) + db.query("DELETE FROM `account_sessions` WHERE `expires` <= " .. time) end end -- reset Daily Reward status - db.query('UPDATE `players` SET `isreward` = ' .. DAILY_REWARD_NOTCOLLECTED) + db.query("UPDATE `players` SET `isreward` = " .. DAILY_REWARD_NOTCOLLECTED) -- reset storages and allow purchase of boost in the store - db.query('UPDATE `player_storage` SET `value` = 0 WHERE `player_storage`.`key` = 51052') + db.query("UPDATE `player_storage` SET `value` = 0 WHERE `player_storage`.`key` = 51052") -- reset familiars message storage - db.query('DELETE FROM `player_storage` WHERE `key` = ' .. Global.Storage.FamiliarSummonEvent10) - db.query('DELETE FROM `player_storage` WHERE `key` = ' .. Global.Storage.FamiliarSummonEvent60) + db.query("DELETE FROM `player_storage` WHERE `key` = " .. Global.Storage.FamiliarSummonEvent10) + db.query("DELETE FROM `player_storage` WHERE `key` = " .. Global.Storage.FamiliarSummonEvent60) -- delete canceled and rejected guilds - db.asyncQuery('DELETE FROM `guild_wars` WHERE `status` = 2') - db.asyncQuery('DELETE FROM `guild_wars` WHERE `status` = 3') + db.asyncQuery("DELETE FROM `guild_wars` WHERE `status` = 2") + db.asyncQuery("DELETE FROM `guild_wars` WHERE `status` = 3") -- Delete guilds that are pending for 3 days - db.asyncQuery('DELETE FROM `guild_wars` WHERE `status` = 0 AND (`started` + 72 * 60 * 60) <= ' .. os.time()) + db.asyncQuery("DELETE FROM `guild_wars` WHERE `status` = 0 AND (`started` + 72 * 60 * 60) <= " .. os.time()) - db.asyncQuery('DELETE FROM `players` WHERE `deletion` != 0 AND `deletion` < ' .. time) - db.asyncQuery('DELETE FROM `ip_bans` WHERE `expires_at` != 0 AND `expires_at` <= ' .. time) - db.asyncQuery('DELETE FROM `market_history` WHERE `inserted` <= \z - ' .. (time - configManager.getNumber(configKeys.MARKET_OFFER_DURATION))) + db.asyncQuery("DELETE FROM `players` WHERE `deletion` != 0 AND `deletion` < " .. time) + db.asyncQuery("DELETE FROM `ip_bans` WHERE `expires_at` != 0 AND `expires_at` <= " .. time) + db.asyncQuery("DELETE FROM `market_history` WHERE `inserted` <= \z + " .. (time - configManager.getNumber(configKeys.MARKET_OFFER_DURATION))) -- Move expired bans to ban history - local banResultId = db.storeQuery('SELECT * FROM `account_bans` WHERE `expires_at` != 0 AND `expires_at` <= ' .. time) + local banResultId = db.storeQuery("SELECT * FROM `account_bans` WHERE `expires_at` != 0 AND `expires_at` <= " .. time) if banResultId ~= false then repeat - local accountId = Result.getNumber(banResultId, 'account_id') - db.asyncQuery('INSERT INTO `account_ban_history` (`account_id`, `reason`, `banned_at`, \z - `expired_at`, `banned_by`) VALUES (' .. accountId .. ', \z - ' .. db.escapeString(Result.getString(banResultId, 'reason')) .. ', \z - ' .. Result.getNumber(banResultId, 'banned_at') .. ', ' .. Result.getNumber(banResultId, 'expires_at') .. ', \z - ' .. Result.getNumber(banResultId, 'banned_by') .. ')') - db.asyncQuery('DELETE FROM `account_bans` WHERE `account_id` = ' .. accountId) + local accountId = Result.getNumber(banResultId, "account_id") + db.asyncQuery("INSERT INTO `account_ban_history` (`account_id`, `reason`, `banned_at`, \z + `expired_at`, `banned_by`) VALUES (" .. accountId .. ", \z + " .. db.escapeString(Result.getString(banResultId, "reason")) .. ", \z + " .. Result.getNumber(banResultId, "banned_at") .. ", " .. Result.getNumber(banResultId, "expires_at") .. ", \z + " .. Result.getNumber(banResultId, "banned_by") .. ")") + db.asyncQuery("DELETE FROM `account_bans` WHERE `account_id` = " .. accountId) until not Result.next(banResultId) Result.free(banResultId) end @@ -112,22 +112,22 @@ function serverstartup.onStartup() end -- Check house auctions - local resultId = db.storeQuery('SELECT `id`, `highest_bidder`, `last_bid`, (SELECT `balance` FROM \z + local resultId = db.storeQuery("SELECT `id`, `highest_bidder`, `last_bid`, (SELECT `balance` FROM \z `players` WHERE `players`.`id` = `highest_bidder`) AS `balance` FROM `houses` WHERE `owner` = 0 AND \z - `bid_end` != 0 AND `bid_end` < ' .. time) + `bid_end` != 0 AND `bid_end` < " .. time) if resultId ~= false then repeat - local house = House(Result.getNumber(resultId, 'id')) + local house = House(Result.getNumber(resultId, "id")) if house then - local highestBidder = Result.getNumber(resultId, 'highest_bidder') - local balance = Result.getNumber(resultId, 'balance') - local lastBid = Result.getNumber(resultId, 'last_bid') + local highestBidder = Result.getNumber(resultId, "highest_bidder") + local balance = Result.getNumber(resultId, "balance") + local lastBid = Result.getNumber(resultId, "last_bid") if balance >= lastBid then - db.query('UPDATE `players` SET `balance` = ' .. (balance - lastBid) .. ' WHERE `id` = ' .. highestBidder) + db.query("UPDATE `players` SET `balance` = " .. (balance - lastBid) .. " WHERE `id` = " .. highestBidder) house:setOwnerGuid(highestBidder) end - db.asyncQuery('UPDATE `houses` SET `last_bid` = 0, `bid_end` = 0, `highest_bidder` = 0, \z - `bid` = 0 WHERE `id` = ' .. house:getId()) + db.asyncQuery("UPDATE `houses` SET `last_bid` = 0, `bid_end` = 0, `highest_bidder` = 0, \z + `bid` = 0 WHERE `id` = " .. house:getId()) end until not Result.next(resultId) Result.free(resultId) diff --git a/data-otservbr-global/scripts/globalevents/quests/cobra_minis_custodian.lua b/data-otservbr-global/scripts/globalevents/quests/cobra_minis_custodian.lua index caec4710503..997c4bfbcdf 100644 --- a/data-otservbr-global/scripts/globalevents/quests/cobra_minis_custodian.lua +++ b/data-otservbr-global/scripts/globalevents/quests/cobra_minis_custodian.lua @@ -1,9 +1,9 @@ local config = { - monsterName = 'Custodian', + monsterName = "Custodian", bossPosition = Position(33376, 32825, 8), centerPosition = Position(33376, 32825, 8), rangeX = 50, - rangeY = 50 + rangeY = 50, } local function checkBoss(centerPosition, rangeX, rangeY, bossName) diff --git a/data-otservbr-global/scripts/globalevents/quests/cobra_minis_gaffir.lua b/data-otservbr-global/scripts/globalevents/quests/cobra_minis_gaffir.lua index 39230e63f19..722854eb021 100644 --- a/data-otservbr-global/scripts/globalevents/quests/cobra_minis_gaffir.lua +++ b/data-otservbr-global/scripts/globalevents/quests/cobra_minis_gaffir.lua @@ -1,9 +1,9 @@ local config = { - monsterName = 'Gaffir', + monsterName = "Gaffir", bossPosition = Position(33394, 32674, 4), centerPosition = Position(33394, 32674, 4), rangeX = 50, - rangeY = 50 + rangeY = 50, } local function checkBoss(centerPosition, rangeX, rangeY, bossName) diff --git a/data-otservbr-global/scripts/globalevents/quests/cobra_minis_quaid.lua b/data-otservbr-global/scripts/globalevents/quests/cobra_minis_quaid.lua index 59fe9322fb1..7ab469e5186 100644 --- a/data-otservbr-global/scripts/globalevents/quests/cobra_minis_quaid.lua +++ b/data-otservbr-global/scripts/globalevents/quests/cobra_minis_quaid.lua @@ -1,9 +1,9 @@ local config = { - monsterName = 'Guard Captain Quaid', + monsterName = "Guard Captain Quaid", bossPosition = Position(33392, 32660, 3), centerPosition = Position(33392, 32660, 3), rangeX = 50, - rangeY = 50 + rangeY = 50, } local function checkBoss(centerPosition, rangeX, rangeY, bossName) diff --git a/data-otservbr-global/scripts/globalevents/quests/demon_oak_voices.lua b/data-otservbr-global/scripts/globalevents/quests/demon_oak_voices.lua index e57047655e7..c5266d1e149 100644 --- a/data-otservbr-global/scripts/globalevents/quests/demon_oak_voices.lua +++ b/data-otservbr-global/scripts/globalevents/quests/demon_oak_voices.lua @@ -1,16 +1,16 @@ local questArea = { Position(32706, 32345, 7), - Position(32725, 32357, 7) + Position(32725, 32357, 7), } local sounds = { - 'Release me and you will be rewarded greatefully!', - 'What is this? Demon Legs lying here? Someone might have lost them!', - 'I\'m trapped, come here and free me fast!!', - 'I can bring your beloved back from the dead, just release me!', - 'What a nice shiny golden armor. Come to me and you can have it!', - 'Find a way in here and release me! Pleeeease hurry!', - 'You can have my demon set, if you help me get out of here!' + "Release me and you will be rewarded greatefully!", + "What is this? Demon Legs lying here? Someone might have lost them!", + "I'm trapped, come here and free me fast!!", + "I can bring your beloved back from the dead, just release me!", + "What a nice shiny golden armor. Come to me and you can have it!", + "Find a way in here and release me! Pleeeease hurry!", + "You can have my demon set, if you help me get out of here!", } local demonOakVoices = GlobalEvent("demon oak voices") diff --git a/data-otservbr-global/scripts/globalevents/quests/ferumbras_ascendant_effect_1.lua b/data-otservbr-global/scripts/globalevents/quests/ferumbras_ascendant_effect_1.lua index 58e7855643a..0db4941502e 100644 --- a/data-otservbr-global/scripts/globalevents/quests/ferumbras_ascendant_effect_1.lua +++ b/data-otservbr-global/scripts/globalevents/quests/ferumbras_ascendant_effect_1.lua @@ -1,19 +1,19 @@ local effects = { - { position = Position(33472, 32383, 13), text = '', effect = 73 }, - { position = Position(33469, 32382, 13), text = '', effect = 73 }, - { position = Position(33359, 32431, 13), text = '', effect = 73 }, - { position = Position(33356, 32433, 13), text = '', effect = 73 }, - { position = Position(33614, 32671, 15), text = '', effect = 73 }, - { position = Position(33619, 32672, 15), text = '', effect = 73 }, - { position = Position(33672, 32748, 13), text = '', effect = 73 }, - { position = Position(33678, 32751, 13), text = '', effect = 73 }, - { position = Position(33205, 31502, 13), text = '', effect = 73 }, - { position = Position(33203, 31506, 13), text = '', effect = 73 }, - { position = Position(33426, 32844, 13), text = '', effect = 73 }, - { position = Position(33427, 32849, 13), text = '', effect = 73 }, - { position = Position(33434, 32841, 13), text = '', effect = 73 }, - { position = Position(33453, 32811, 14), text = '', effect = 73 }, - { position = Position(33461, 32810, 14), text = '', effect = 73 } + { position = Position(33472, 32383, 13), text = "", effect = 73 }, + { position = Position(33469, 32382, 13), text = "", effect = 73 }, + { position = Position(33359, 32431, 13), text = "", effect = 73 }, + { position = Position(33356, 32433, 13), text = "", effect = 73 }, + { position = Position(33614, 32671, 15), text = "", effect = 73 }, + { position = Position(33619, 32672, 15), text = "", effect = 73 }, + { position = Position(33672, 32748, 13), text = "", effect = 73 }, + { position = Position(33678, 32751, 13), text = "", effect = 73 }, + { position = Position(33205, 31502, 13), text = "", effect = 73 }, + { position = Position(33203, 31506, 13), text = "", effect = 73 }, + { position = Position(33426, 32844, 13), text = "", effect = 73 }, + { position = Position(33427, 32849, 13), text = "", effect = 73 }, + { position = Position(33434, 32841, 13), text = "", effect = 73 }, + { position = Position(33453, 32811, 14), text = "", effect = 73 }, + { position = Position(33461, 32810, 14), text = "", effect = 73 }, } local ferumbrasEffect1 = GlobalEvent("effect") diff --git a/data-otservbr-global/scripts/globalevents/quests/ferumbras_ascendant_effect_2.lua b/data-otservbr-global/scripts/globalevents/quests/ferumbras_ascendant_effect_2.lua index a5c3c2ec486..fc6524418db 100644 --- a/data-otservbr-global/scripts/globalevents/quests/ferumbras_ascendant_effect_2.lua +++ b/data-otservbr-global/scripts/globalevents/quests/ferumbras_ascendant_effect_2.lua @@ -1,18 +1,18 @@ local effects = { - { position = Position(33463, 32385, 13), text = '', effect = 73 }, - { position = Position(33468, 32387, 13), text = '', effect = 73 }, - { position = Position(33363, 32435, 13), text = '', effect = 73 }, - { position = Position(33354, 32437, 13), text = '', effect = 73 }, - { position = Position(33608, 32669, 15), text = '', effect = 73 }, - { position = Position(33611, 32676, 15), text = '', effect = 73 }, - { position = Position(33675, 32753, 13), text = '', effect = 73 }, - { position = Position(33684, 32754, 13), text = '', effect = 73 }, - { position = Position(33198, 31506, 13), text = '', effect = 73 }, - { position = Position(33211, 31504, 13), text = '', effect = 73 }, - { position = Position(33421, 32847, 13), text = '', effect = 73 }, - { position = Position(33429, 32845, 13), text = '', effect = 73 }, - { position = Position(33458, 32813, 14), text = '', effect = 73 }, - { position = Position(33464, 32817, 14), text = '', effect = 73 }, + { position = Position(33463, 32385, 13), text = "", effect = 73 }, + { position = Position(33468, 32387, 13), text = "", effect = 73 }, + { position = Position(33363, 32435, 13), text = "", effect = 73 }, + { position = Position(33354, 32437, 13), text = "", effect = 73 }, + { position = Position(33608, 32669, 15), text = "", effect = 73 }, + { position = Position(33611, 32676, 15), text = "", effect = 73 }, + { position = Position(33675, 32753, 13), text = "", effect = 73 }, + { position = Position(33684, 32754, 13), text = "", effect = 73 }, + { position = Position(33198, 31506, 13), text = "", effect = 73 }, + { position = Position(33211, 31504, 13), text = "", effect = 73 }, + { position = Position(33421, 32847, 13), text = "", effect = 73 }, + { position = Position(33429, 32845, 13), text = "", effect = 73 }, + { position = Position(33458, 32813, 14), text = "", effect = 73 }, + { position = Position(33464, 32817, 14), text = "", effect = 73 }, } local ferumbrasEffect2 = GlobalEvent("effcts") diff --git a/data-otservbr-global/scripts/globalevents/quests/grimvale_feroxa.lua b/data-otservbr-global/scripts/globalevents/quests/grimvale_feroxa.lua index afee4cc223e..d2f97956d6c 100644 --- a/data-otservbr-global/scripts/globalevents/quests/grimvale_feroxa.lua +++ b/data-otservbr-global/scripts/globalevents/quests/grimvale_feroxa.lua @@ -15,10 +15,10 @@ function grimVale.onThink(interval, lastExecution) if spawnDay == tonumber(currentDay) then if chance <= 5 then addEvent(removeItems, 30 * 60 * 1000) - addEvent(Game.loadMap, 30 * 60 * 1000, DATA_DIRECTORY .. '/world/world_changes/full_moon/middle.otbm') + addEvent(Game.loadMap, 30 * 60 * 1000, DATA_DIRECTORY .. "/world/world_changes/full_moon/middle.otbm") addEvent(grimvaleSpectators, 30 * 60 * 1000) Game.setStorageValue(GlobalStorage.Feroxa.Active, 1) - Game.broadcastMessage('Grimvale drowns in werecreatures as the full moon reaches its apex and ancient evil returns.', MESSAGE_EVENT_ADVANCE) + Game.broadcastMessage("Grimvale drowns in werecreatures as the full moon reaches its apex and ancient evil returns.", MESSAGE_EVENT_ADVANCE) else Game.setStorageValue(GlobalStorage.Feroxa.Chance, math.random(1, 10)) end diff --git a/data-otservbr-global/scripts/globalevents/quests/pits_of_inferno_bosses.lua b/data-otservbr-global/scripts/globalevents/quests/pits_of_inferno_bosses.lua index 7c7795015f6..044b6ed3f52 100644 --- a/data-otservbr-global/scripts/globalevents/quests/pits_of_inferno_bosses.lua +++ b/data-otservbr-global/scripts/globalevents/quests/pits_of_inferno_bosses.lua @@ -1,11 +1,11 @@ local spawns = { - [1] = { position = Position(32876, 32270, 15), monster = 'Massacre' }, - [2] = { position = Position(32837, 32309, 15), monster = 'Dracola' }, - [3] = { position = Position(32907, 32215, 15), monster = 'The Imperor' }, - [4] = { position = Position(32763, 32243, 15), monster = 'Mr. Punish' }, - [5] = { position = Position(32802, 32333, 15), monster = 'Countess Sorrow' }, - [6] = { position = Position(32845, 32332, 15), monster = 'The Plasmother' }, - [7] = { position = Position(32785, 32290, 15), monster = 'The Handmaiden' } + [1] = { position = Position(32876, 32270, 15), monster = "Massacre" }, + [2] = { position = Position(32837, 32309, 15), monster = "Dracola" }, + [3] = { position = Position(32907, 32215, 15), monster = "The Imperor" }, + [4] = { position = Position(32763, 32243, 15), monster = "Mr. Punish" }, + [5] = { position = Position(32802, 32333, 15), monster = "Countess Sorrow" }, + [6] = { position = Position(32845, 32332, 15), monster = "The Plasmother" }, + [7] = { position = Position(32785, 32290, 15), monster = "The Handmaiden" }, } local pitsOfInfernoBosses = GlobalEvent("PitsOfInfernoBosses") @@ -14,8 +14,7 @@ function pitsOfInfernoBosses.onThink(interval, lastExecution) local monster = Game.createMonster(spawn.monster, spawn.position, true, true) if not monster then - logger.error("[PitsOfInfernoBosses] - Failed to spawn {}", - rand.bossName) + logger.error("[PitsOfInfernoBosses] - Failed to spawn {}", rand.bossName) return true end return true diff --git a/data-otservbr-global/scripts/globalevents/quests/secret_library_grand_canon_dominus.lua b/data-otservbr-global/scripts/globalevents/quests/secret_library_grand_canon_dominus.lua index 12a353ff8bf..4556bee10a3 100644 --- a/data-otservbr-global/scripts/globalevents/quests/secret_library_grand_canon_dominus.lua +++ b/data-otservbr-global/scripts/globalevents/quests/secret_library_grand_canon_dominus.lua @@ -1,9 +1,9 @@ local config = { - monsterName = 'Grand Canon Dominus', + monsterName = "Grand Canon Dominus", bossPosition = Position(33384, 31282, 6), centerPosition = Position(33384, 31282, 6), rangeX = 50, - rangeY = 50 + rangeY = 50, } local function checkBoss(centerPosition, rangeX, rangeY, bossName) diff --git a/data-otservbr-global/scripts/globalevents/quests/secret_library_grand_chaplain_gaunder.lua b/data-otservbr-global/scripts/globalevents/quests/secret_library_grand_chaplain_gaunder.lua index 0e0ce91c499..264ea1e0f2f 100644 --- a/data-otservbr-global/scripts/globalevents/quests/secret_library_grand_chaplain_gaunder.lua +++ b/data-otservbr-global/scripts/globalevents/quests/secret_library_grand_chaplain_gaunder.lua @@ -1,9 +1,9 @@ local config = { - monsterName = 'Grand Chaplain Gaunder', + monsterName = "Grand Chaplain Gaunder", bossPosition = Position(33370, 31327, 5), centerPosition = Position(33370, 31327, 5), rangeX = 50, - rangeY = 50 + rangeY = 50, } local function checkBoss(centerPosition, rangeX, rangeY, bossName) diff --git a/data-otservbr-global/scripts/globalevents/quests/secret_library_grand_commander_soeren.lua b/data-otservbr-global/scripts/globalevents/quests/secret_library_grand_commander_soeren.lua index 149202ee00c..0804b18e3e8 100644 --- a/data-otservbr-global/scripts/globalevents/quests/secret_library_grand_commander_soeren.lua +++ b/data-otservbr-global/scripts/globalevents/quests/secret_library_grand_commander_soeren.lua @@ -1,9 +1,9 @@ local config = { - monsterName = 'Grand Commander Soeren', + monsterName = "Grand Commander Soeren", bossPosition = Position(33376, 31320, 2), centerPosition = Position(33376, 31320, 2), rangeX = 50, - rangeY = 50 + rangeY = 50, } local function checkBoss(centerPosition, rangeX, rangeY, bossName) diff --git a/data-otservbr-global/scripts/globalevents/quests/secret_library_preceptor_lazare.lua b/data-otservbr-global/scripts/globalevents/quests/secret_library_preceptor_lazare.lua index 449a4e9d8f6..4e2a7a053d1 100644 --- a/data-otservbr-global/scripts/globalevents/quests/secret_library_preceptor_lazare.lua +++ b/data-otservbr-global/scripts/globalevents/quests/secret_library_preceptor_lazare.lua @@ -1,9 +1,9 @@ local config = { - monsterName = 'Preceptor Lazare', + monsterName = "Preceptor Lazare", bossPosition = Position(33373, 31348, 3), centerPosition = Position(33373, 31348, 3), rangeX = 50, - rangeY = 50 + rangeY = 50, } local function checkBoss(centerPosition, rangeX, rangeY, bossName) diff --git a/data-otservbr-global/scripts/globalevents/quests/their_master_voice_mad_mage.lua b/data-otservbr-global/scripts/globalevents/quests/their_master_voice_mad_mage.lua index 7a729817e75..4accfd49690 100644 --- a/data-otservbr-global/scripts/globalevents/quests/their_master_voice_mad_mage.lua +++ b/data-otservbr-global/scripts/globalevents/quests/their_master_voice_mad_mage.lua @@ -1,11 +1,11 @@ local spawns = { - [1] = { position = Position(33339, 31914, 9), monster = 'Mad Mage' }, - [2] = { position = Position(33358, 31914, 9), monster = 'Mad Mage' }, - [3] = { position = Position(33348, 31899, 9), monster = 'Mad Mage' }, - [4] = { position = Position(33369, 31873, 9), monster = 'Mad Mage' }, - [5] = { position = Position(33360, 31852, 9), monster = 'Mad Mage' }, - [6] = { position = Position(33328, 31860, 9), monster = 'Mad Mage' }, - [7] = { position = Position(33335, 31873, 9), monster = 'Mad Mage' } + [1] = { position = Position(33339, 31914, 9), monster = "Mad Mage" }, + [2] = { position = Position(33358, 31914, 9), monster = "Mad Mage" }, + [3] = { position = Position(33348, 31899, 9), monster = "Mad Mage" }, + [4] = { position = Position(33369, 31873, 9), monster = "Mad Mage" }, + [5] = { position = Position(33360, 31852, 9), monster = "Mad Mage" }, + [6] = { position = Position(33328, 31860, 9), monster = "Mad Mage" }, + [7] = { position = Position(33335, 31873, 9), monster = "Mad Mage" }, } local mad = GlobalEvent("MadMage") diff --git a/data-otservbr-global/scripts/globalevents/spawn/grimvale_respawn.lua b/data-otservbr-global/scripts/globalevents/spawn/grimvale_respawn.lua index 3db09ce0e55..aff3f6e3fa0 100644 --- a/data-otservbr-global/scripts/globalevents/spawn/grimvale_respawn.lua +++ b/data-otservbr-global/scripts/globalevents/spawn/grimvale_respawn.lua @@ -1,5 +1,5 @@ local config = { - position = { fromPosition = Position(33330, 31670, 7), toPosition = Position(33350, 31690, 7) } + position = { fromPosition = Position(33330, 31670, 7), toPosition = Position(33350, 31690, 7) }, } local spawnDay = 13 local currentDay = os.date("%d") @@ -27,8 +27,8 @@ end local grimvaleRespawn = GlobalEvent("grimvale respawn") function grimvaleRespawn.onStartup() if spawnDay == tonumber(currentDay) then - table.insert(monsters, 'wereboar') - table.insert(monsters, 'werebadger') + table.insert(monsters, "wereboar") + table.insert(monsters, "werebadger") for x = config.position.fromPosition.x, config.position.toPosition.x do for y = config.position.fromPosition.y, config.position.toPosition.y do if math.random(1000) >= 983 then @@ -39,10 +39,10 @@ function grimvaleRespawn.onStartup() end end else - table.insert(monsters, 'bandit') - table.insert(monsters, 'badger') - table.insert(monsters, 'blue butterfly') - table.insert(monsters, 'yellow butterfly') + table.insert(monsters, "bandit") + table.insert(monsters, "badger") + table.insert(monsters, "blue butterfly") + table.insert(monsters, "yellow butterfly") for x = config.position.fromPosition.x, config.position.toPosition.x do for y = config.position.fromPosition.y, config.position.toPosition.y do if math.random(1000) >= 983 then diff --git a/data-otservbr-global/scripts/globalevents/spawn/mawhawk.lua b/data-otservbr-global/scripts/globalevents/spawn/mawhawk.lua index 37892c99cf1..4ffe051e04f 100644 --- a/data-otservbr-global/scripts/globalevents/spawn/mawhawk.lua +++ b/data-otservbr-global/scripts/globalevents/spawn/mawhawk.lua @@ -1,9 +1,9 @@ local config = { - monsterName = 'Mawhawk', + monsterName = "Mawhawk", bossPosition = Position(33703, 32461, 7), centerPosition = Position(33703, 32461, 7), rangeX = 50, - rangeY = 50 + rangeY = 50, } local function checkBoss(centerPosition, rangeX, rangeY, bossName) @@ -24,7 +24,7 @@ function mawhawk.onThink(interval, lastExecution) if checkBoss(config.centerPosition, config.rangeX, config.rangeY, config.monsterName) then return true end - addEvent(Game.broadcastMessage, 150, 'Beware! Mawhawk!', MESSAGE_EVENT_ADVANCE) + addEvent(Game.broadcastMessage, 150, "Beware! Mawhawk!", MESSAGE_EVENT_ADVANCE) local boss = Game.createMonster(config.monsterName, config.bossPosition, true, true) boss:setReward(true) return true diff --git a/data-otservbr-global/scripts/globalevents/spawn/raids.lua b/data-otservbr-global/scripts/globalevents/spawn/raids.lua index 621d5d32d06..27b60628852 100644 --- a/data-otservbr-global/scripts/globalevents/spawn/raids.lua +++ b/data-otservbr-global/scripts/globalevents/spawn/raids.lua @@ -1,57 +1,57 @@ local raids = { -- Weekly --Segunda-Feira - ['Monday'] = { - ['06:00'] = { raidName = 'RatsThais' }, + ["Monday"] = { + ["06:00"] = { raidName = "RatsThais" }, }, --Terça-Feira - ['Tuesday'] = { - ['16:00'] = { raidName = 'Midnight Panther' } + ["Tuesday"] = { + ["16:00"] = { raidName = "Midnight Panther" }, }, --Quarta-Feira - ['Wednesday'] = { - ['12:00'] = { raidName = 'Draptor' } + ["Wednesday"] = { + ["12:00"] = { raidName = "Draptor" }, }, --Quinta-Feira - ['Thursday'] = { - ['19:00'] = { raidName = 'Undead Cavebear' } + ["Thursday"] = { + ["19:00"] = { raidName = "Undead Cavebear" }, }, --Sexta-feira - ['Friday'] = { - ['06:00'] = { raidName = 'Titanica' } + ["Friday"] = { + ["06:00"] = { raidName = "Titanica" }, }, --Sábado - ['Saturday'] = { - ['20:00'] = { raidName = 'Draptor' } + ["Saturday"] = { + ["20:00"] = { raidName = "Draptor" }, }, --Domingo - ['Sunday'] = { - ['15:00'] = { raidName = 'Midnight Panther' }, - ['13:00'] = { raidName = 'Orc Backpack' } + ["Sunday"] = { + ["15:00"] = { raidName = "Midnight Panther" }, + ["13:00"] = { raidName = "Orc Backpack" }, }, -- By date (Day/Month) - ['31/10'] = { - ['16:00'] = { raidName = 'Halloween Hare' } - } + ["31/10"] = { + ["16:00"] = { raidName = "Halloween Hare" }, + }, } local spawnRaids = GlobalEvent("spawn raids") function spawnRaids.onThink(interval, lastExecution, thinkInterval) - local day, date = os.date('%A'), getRealDate() + local day, date = os.date("%A"), getRealDate() local raidDays = {} if raids[day] then - raidDays[#raidDays+1] = raids[day] + raidDays[#raidDays + 1] = raids[day] end if raids[date] then - raidDays[#raidDays+1] = raids[date] + raidDays[#raidDays + 1] = raids[date] end if #raidDays == 0 then return true diff --git a/data-otservbr-global/scripts/globalevents/spawn/rashid.lua b/data-otservbr-global/scripts/globalevents/spawn/rashid.lua index db65d7cb7aa..0e21385eb75 100644 --- a/data-otservbr-global/scripts/globalevents/spawn/rashid.lua +++ b/data-otservbr-global/scripts/globalevents/spawn/rashid.lua @@ -5,7 +5,7 @@ local positionByDay = { [4] = { position = Position(32577, 32753, 7), city = "Port Hope" }, -- Wednesday [5] = { position = Position(33066, 32879, 6), city = "Ankrahmun" }, -- Thursday [6] = { position = Position(33235, 32483, 7), city = "Darashia" }, -- Friday - [7] = { position = Position(33166, 31810, 6), city = "Edron" } -- Saturday + [7] = { position = Position(33166, 31810, 6), city = "Edron" }, -- Saturday } local function rashidwebhook(message) -- New local function that runs on delay to send webhook message. @@ -28,8 +28,7 @@ function rashid.onStartup() local message = string.format("Rashid arrived at %s today.", config.city) -- Declaring the message to send to webhook. addEvent(rashidwebhook, 60000, message) -- Event with 1 minute delay to send webhook message after server starts. else - logger.warn("[rashid.onStartup] - Cannot create Rashid. Day: {}", - os.date("%A")) + logger.warn("[rashid.onStartup] - Cannot create Rashid. Day: {}", os.date("%A")) end return true diff --git a/data-otservbr-global/scripts/globalevents/spawn/thawing_dragon_lord.lua b/data-otservbr-global/scripts/globalevents/spawn/thawing_dragon_lord.lua index 6d0f9bf65d1..3d47c6f2818 100644 --- a/data-otservbr-global/scripts/globalevents/spawn/thawing_dragon_lord.lua +++ b/data-otservbr-global/scripts/globalevents/spawn/thawing_dragon_lord.lua @@ -1,9 +1,9 @@ local config = { - monsterName = 'Thawing Dragon Lord', + monsterName = "Thawing Dragon Lord", bossPosition = Position(33361, 31316, 5), centerPosition = Position(33361, 31316, 5), rangeX = 50, - rangeY = 50 + rangeY = 50, } local function checkBoss(centerPosition, rangeX, rangeY, bossName) diff --git a/data-otservbr-global/scripts/globalevents/spawn/tyrn.lua b/data-otservbr-global/scripts/globalevents/spawn/tyrn.lua index badc46f751d..674d5065695 100644 --- a/data-otservbr-global/scripts/globalevents/spawn/tyrn.lua +++ b/data-otservbr-global/scripts/globalevents/spawn/tyrn.lua @@ -1,9 +1,9 @@ local config = { - monsterName = 'Tyrn', + monsterName = "Tyrn", bossPosition = Position(33056, 32393, 14), centerPosition = Position(33056, 32393, 14), rangeX = 50, - rangeY = 50 + rangeY = 50, } local function checkBoss(centerPosition, rangeX, rangeY, bossName) @@ -24,7 +24,7 @@ function tyrn.onThink(interval, lastExecution) if checkBoss(config.centerPosition, config.rangeX, config.rangeY, config.monsterName) then return true end - addEvent(Game.broadcastMessage, 150, 'Beware of Tyrn!', MESSAGE_EVENT_ADVANCE) + addEvent(Game.broadcastMessage, 150, "Beware of Tyrn!", MESSAGE_EVENT_ADVANCE) local boss = Game.createMonster(config.monsterName, config.bossPosition, true, true) boss:setReward(true) return true diff --git a/data-otservbr-global/scripts/globalevents/update.lua b/data-otservbr-global/scripts/globalevents/update.lua index 62cc05348fb..057360c4dc5 100644 --- a/data-otservbr-global/scripts/globalevents/update.lua +++ b/data-otservbr-global/scripts/globalevents/update.lua @@ -5,14 +5,14 @@ local update = GlobalEvent("Update") function update.onStartup() if updated then db.query("UPDATE `players` SET `posx` = 0, `posy` = 0, `posz` = 0;") - local readFile = io.open(fileToUpdate, 'r') + local readFile = io.open(fileToUpdate, "r") if readFile then io.input(readFile) local str = io.read() io.close(readFile) local ae = string.match(str, "updated = true") if ae then - afterUpdate = 'updated = false' + afterUpdate = "updated = false" local updateFile = io.open(fileToUpdate, "w") io.output(updateFile) io.write(afterUpdate) diff --git a/data-otservbr-global/scripts/globalevents/vip/online_coins.lua b/data-otservbr-global/scripts/globalevents/vip/online_coins.lua index 1ad7cb097dd..074df6d6be3 100644 --- a/data-otservbr-global/scripts/globalevents/vip/online_coins.lua +++ b/data-otservbr-global/scripts/globalevents/vip/online_coins.lua @@ -49,7 +49,7 @@ function onlineCoinsEvent.onThink(interval) end end - :: continue :: + ::continue:: end return true end diff --git a/data-otservbr-global/scripts/globalevents/vip/online_tokens.lua b/data-otservbr-global/scripts/globalevents/vip/online_tokens.lua index b4eb791c60d..8733f4fa0d3 100644 --- a/data-otservbr-global/scripts/globalevents/vip/online_tokens.lua +++ b/data-otservbr-global/scripts/globalevents/vip/online_tokens.lua @@ -52,7 +52,7 @@ function onlineTokensEvent.onThink(interval) end end - :: continue :: + ::continue:: end return true end diff --git a/data-otservbr-global/scripts/globalevents/worldchanges/dream_courts_worldchange.lua b/data-otservbr-global/scripts/globalevents/worldchanges/dream_courts_worldchange.lua index 8647f862fba..090887b9540 100644 --- a/data-otservbr-global/scripts/globalevents/worldchanges/dream_courts_worldchange.lua +++ b/data-otservbr-global/scripts/globalevents/worldchanges/dream_courts_worldchange.lua @@ -1,11 +1,11 @@ local config = { - ['Monday'] = 'Plagueroot', - ['Tuesday'] = 'Malofur_Mangrinder', - ['Wednesday'] = 'Maxxenius', - ['Thursday'] = 'Alptramun', - ['Friday'] = 'Izcandar_the_Banished', - ['Saturday'] = 'Maxxenius', - ['Sunday'] = 'Alptramun' + ["Monday"] = "Plagueroot", + ["Tuesday"] = "Malofur_Mangrinder", + ["Wednesday"] = "Maxxenius", + ["Thursday"] = "Alptramun", + ["Friday"] = "Izcandar_the_Banished", + ["Saturday"] = "Maxxenius", + ["Sunday"] = "Alptramun", } local spawnByDay = true @@ -13,7 +13,7 @@ local DreamCourts = GlobalEvent("DreamCourts") function DreamCourts.onStartup() if spawnByDay then logger.info("[WorldChanges] Dream Courts loaded: {}.otbm", config[os.date("%A")]) - Game.loadMap('data-otservbr-global/world/world_changes/dream_courts_bosses/' .. config[os.date("%A")] .. '.otbm') + Game.loadMap("data-otservbr-global/world/world_changes/dream_courts_bosses/" .. config[os.date("%A")] .. ".otbm") end return true end diff --git a/data-otservbr-global/scripts/globalevents/worldchanges/fury_gates.lua b/data-otservbr-global/scripts/globalevents/worldchanges/fury_gates.lua index b57073f8f55..44c5a4c78c6 100644 --- a/data-otservbr-global/scripts/globalevents/worldchanges/fury_gates.lua +++ b/data-otservbr-global/scripts/globalevents/worldchanges/fury_gates.lua @@ -3,13 +3,13 @@ local gates = { [1] = { city = "Ab'dendriel", mapName = "abdendriel", - exitPosition = Position(32680, 31720, 7) + exitPosition = Position(32680, 31720, 7), }, -- Ankrahmun [2] = { city = "Ankrahmun", mapName = "ankrahmun", - exitPosition = Position(33269, 32841, 7) + exitPosition = Position(33269, 32841, 7), }, -- Carlin [3] = { @@ -19,8 +19,8 @@ local gates = { burntItems = { { position = Position(32266, 31842, 7), itemId = 6217 }, { position = Position(32258, 31843, 7), itemId = 6218 }, - { position = Position(32264, 31843, 7), itemId = 3917 } - } + { position = Position(32264, 31843, 7), itemId = 3917 }, + }, }, -- Darashia [4] = { @@ -28,14 +28,14 @@ local gates = { mapName = "darashia", exitPosition = Position(33304, 32371, 7), burntItems = { - { position = Position(33300, 32366, 7), itemId = 6217 } - } + { position = Position(33300, 32366, 7), itemId = 6217 }, + }, }, -- Edron [5] = { city = "Edron", mapName = "edron", - exitPosition = Position(33221, 31923, 7) + exitPosition = Position(33221, 31923, 7), }, -- Kazordoon [6] = { @@ -47,14 +47,14 @@ local gates = { { position = Position(32573, 31977, 7), itemId = 6218 }, { position = Position(32569, 31984, 7), itemId = 6217 }, { position = Position(32572, 31984, 7), itemId = 6217 }, - { position = Position(32572, 31985, 7), itemId = 6218 } - } + { position = Position(32572, 31985, 7), itemId = 6218 }, + }, }, -- Liberty Bay [7] = { city = "Liberty Bay", mapName = "libertybay", - exitPosition = Position(32348, 32693, 7) + exitPosition = Position(32348, 32693, 7), }, -- Port Hope [8] = { @@ -62,8 +62,8 @@ local gates = { mapName = "porthope", exitPosition = Position(32530, 32712, 7), burntItems = { - { position = Position(32532, 32719, 7), itemId = 3696 } - } + { position = Position(32532, 32719, 7), itemId = 3696 }, + }, }, -- Thais [9] = { @@ -72,8 +72,8 @@ local gates = { exitPosition = Position(32265, 32164, 7), burntItems = { { position = Position(32269, 32157, 7), itemId = 6218 }, - { position = Position(32274, 32165, 7), itemId = 6218 } - } + { position = Position(32274, 32165, 7), itemId = 6218 }, + }, }, -- Venore [10] = { @@ -95,9 +95,9 @@ local gates = { { position = Position(32836, 32087, 7), itemId = 3686 }, { position = Position(32838, 32087, 7), itemId = 3696 }, { position = Position(32835, 32089, 7), itemId = 6217 }, - { position = Position(32836, 32091, 7), itemId = 3689 } - } - } + { position = Position(32836, 32091, 7), itemId = 3689 }, + }, + }, } local function Furywebhook(message) -- New local function that runs on delay to send webhook message. @@ -125,13 +125,12 @@ function furygates.onStartup(interval) end end - Game.loadMap(DATA_DIRECTORY .. '/world/world_changes/fury_gates/' .. gates[gateId].mapName .. '.otbm') + Game.loadMap(DATA_DIRECTORY .. "/world/world_changes/fury_gates/" .. gates[gateId].mapName .. ".otbm") setGlobalStorageValue(GlobalStorage.FuryGates, gateId) logger.info("Fury Gate will be active in {} today", gates[gateId].city) - local message = (string.format("Fury Gate will be active in %s today", - gates[gateId].city)) -- Declaring the message to send to webhook. + local message = (string.format("Fury Gate will be active in %s today", gates[gateId].city)) -- Declaring the message to send to webhook. addEvent(Furywebhook, 60000, message) -- Event with 1 minute delay to send webhook message after server starts. return true diff --git a/data-otservbr-global/scripts/globalevents/worldchanges/nightmare_isle.lua b/data-otservbr-global/scripts/globalevents/worldchanges/nightmare_isle.lua index ab357d6c12d..b367b490679 100644 --- a/data-otservbr-global/scripts/globalevents/worldchanges/nightmare_isle.lua +++ b/data-otservbr-global/scripts/globalevents/worldchanges/nightmare_isle.lua @@ -2,18 +2,18 @@ local config = { -- ankrahmun - north [1] = { mapName = "ankrahmun-north", - displayName = "north of Ankrahmun" + displayName = "north of Ankrahmun", }, -- darashia - west [2] = { mapName = "darashia-west", - displayName = "west of Darashia" + displayName = "west of Darashia", }, -- darashia - north [3] = { mapName = "darashia-north", - displayName = "north of Darashia" - } + displayName = "north of Darashia", + }, } local function Nightmarewebhook(message) -- New local function that runs on delay to send webhook message. @@ -23,10 +23,9 @@ end local NightmareIsle = GlobalEvent("NightmareIsle") function NightmareIsle.onStartup(interval) local select = config[math.random(#config)] - Game.loadMap(DATA_DIRECTORY .. '/world/world_changes/nightmare_isle/' .. select.mapName .. '.otbm') + Game.loadMap(DATA_DIRECTORY .. "/world/world_changes/nightmare_isle/" .. select.mapName .. ".otbm") logger.info("[WorldChanges] Nightmare Isle will be active {} today", select.displayName) - local message = string.format("Nightmare Isle will be active %s today", - select.displayName) -- Declaring the message to send to webhook. + local message = string.format("Nightmare Isle will be active %s today", select.displayName) -- Declaring the message to send to webhook. addEvent(Nightmarewebhook, 60000, message) -- Event with 1 minute delay to send webhook message after server starts. setGlobalStorageValue(GlobalStorage.NightmareIsle, 1) diff --git a/data-otservbr-global/scripts/globalevents/worldchanges/yasir.lua b/data-otservbr-global/scripts/globalevents/worldchanges/yasir.lua index b8c8e5005b1..a0bd427f568 100644 --- a/data-otservbr-global/scripts/globalevents/worldchanges/yasir.lua +++ b/data-otservbr-global/scripts/globalevents/worldchanges/yasir.lua @@ -7,24 +7,24 @@ local config = { { position = Position(33096, 32883, 6), itemId = 4920 }, { position = Position(33096, 32884, 6), itemId = 4920 }, { position = Position(33096, 32885, 6), itemId = 4920 }, - { position = Position(33097, 32883, 6), itemId = 4976 } + { position = Position(33097, 32883, 6), itemId = 4976 }, }, fromPosition = Position(33099, 32875, 7), toPosition = Position(33106, 32893, 7), mapName = "Ankrahmun", - yasirPosition = Position(33102, 32884, 6) + yasirPosition = Position(33102, 32884, 6), }, -- Carlin [2] = { removeItems = { { position = Position(32393, 31814, 6), itemId = 9491 }, { position = Position(32393, 31815, 6), itemId = 9491 }, - { position = Position(32393, 31816, 6), itemId = 9491 } + { position = Position(32393, 31816, 6), itemId = 9491 }, }, fromPosition = Position(32397, 31806, 7), toPosition = Position(32403, 31824, 7), mapName = "Carlin", - yasirPosition = Position(32400, 31815, 6) + yasirPosition = Position(32400, 31815, 6), }, -- Liberty Bay [3] = { @@ -36,13 +36,13 @@ local config = { { position = Position(32309, 32896, 6), itemId = 2257 }, { position = Position(32309, 32895, 6), itemId = 2257 }, { position = Position(32309, 32894, 6), itemId = 2257 }, - { position = Position(32309, 32893, 6), itemId = 2257 } + { position = Position(32309, 32893, 6), itemId = 2257 }, }, fromPosition = Position(32311, 32884, 1), toPosition = Position(32318, 32904, 7), mapName = "Liberty Bay", - yasirPosition = Position(32314, 32895, 6) - } + yasirPosition = Position(32314, 32895, 6), + }, } local function yasirwebhook(message) -- New local function that runs on delay to send webhook message. @@ -53,7 +53,7 @@ local yasirEnabled = true local yasirChance = 33 local function spawnYasir(position) - local npc = Game.createNpc('yasir', position) + local npc = Game.createNpc("yasir", position) if npc then npc:setMasterPos(position) end @@ -67,26 +67,22 @@ function yasir.onStartup() local randTown = config[math.random(#config)] logger.info("[WorldChanges] Yasir: {}", randTown.mapName) local message = string.format("Yasir is in %s today.", randTown.mapName) -- Declaring the message to send to webhook. - iterateArea( - function(position) - local tile = Tile(position) - if tile then - local items = tile:getItems() - if items then - for i = 1, #items do - items[i]:remove() - end + iterateArea(function(position) + local tile = Tile(position) + if tile then + local items = tile:getItems() + if items then + for i = 1, #items do + items[i]:remove() end + end - local ground = tile:getGround() - if ground then - ground:remove() - end + local ground = tile:getGround() + if ground then + ground:remove() end - end, - randTown.fromPosition, - randTown.toPosition - ) + end + end, randTown.fromPosition, randTown.toPosition) if randTown.removeItems then local item @@ -102,7 +98,7 @@ function yasir.onStartup() end local mapName = string.removeAllSpaces(randTown.mapName):lower() - Game.loadMap(DATA_DIRECTORY .. '/world/world_changes/oriental_trader/' .. mapName .. '.otbm') + Game.loadMap(DATA_DIRECTORY .. "/world/world_changes/oriental_trader/" .. mapName .. ".otbm") addEvent(spawnYasir, 60000, randTown.yasirPosition) addEvent(yasirwebhook, 60000, message) -- Event with 1 minute delay to send webhook message after server starts. setGlobalStorageValue(GlobalStorage.Yasir, 1) diff --git a/data-otservbr-global/scripts/item_classification/item_tiers.lua b/data-otservbr-global/scripts/item_classification/item_tiers.lua index f981b567104..8551624c9a2 100644 --- a/data-otservbr-global/scripts/item_classification/item_tiers.lua +++ b/data-otservbr-global/scripts/item_classification/item_tiers.lua @@ -2,20 +2,20 @@ local itemTierClassifications = { -- Upgrade classification 1 [1] = { -- Update tier 0 - [1] = { price = 25000, core = 1 } + [1] = { price = 25000, core = 1 }, }, -- Upgrade classification 2 [2] = { -- Update tier 0 [1] = { price = 750000, core = 1 }, -- Update tier 1 - [2] = { price = 5000000, core = 1 } + [2] = { price = 5000000, core = 1 }, }, -- Upgrade classification 3 [3] = { [1] = { price = 4000000, core = 1 }, [2] = { price = 10000000, core = 1 }, - [3] = { price = 20000000, core = 2 } + [3] = { price = 20000000, core = 2 }, }, -- Upgrade classification 4 [4] = { @@ -28,8 +28,8 @@ local itemTierClassifications = { [7] = { price = 750000000, core = 25 }, [8] = { price = 2500000000, core = 35 }, [9] = { price = 8000000000, core = 50 }, - [10] = { price = 15000000000, core = 65 } - } + [10] = { price = 15000000000, core = 65 }, + }, } -- Item tier with gold price for uprading it diff --git a/data-otservbr-global/scripts/lib/register_actions.lua b/data-otservbr-global/scripts/lib/register_actions.lua index b2ba5b49d65..e931fa87027 100644 --- a/data-otservbr-global/scripts/lib/register_actions.lua +++ b/data-otservbr-global/scripts/lib/register_actions.lua @@ -1,25 +1,104 @@ local holeId = { - 294, 369, 370, 385, 394, 411, 412, 413, 432, 433, 435, 8709, 594, 595, 615, 609, 610, 615, 1156, 482, 483, 868, 874, 4824, 7768, 433, 432, 413, 7767, 411, 370, 369, 7737, 7755, 7768, 7767, 7515, 7516, 7517, 7518, 7519, 7520, 7521, 7522, 7762, 8144, 8690, 8709, 12203, 12961, 17239, 19220, 23364 + 294, + 369, + 370, + 385, + 394, + 411, + 412, + 413, + 432, + 433, + 435, + 8709, + 594, + 595, + 615, + 609, + 610, + 615, + 1156, + 482, + 483, + 868, + 874, + 4824, + 7768, + 433, + 432, + 413, + 7767, + 411, + 370, + 369, + 7737, + 7755, + 7768, + 7767, + 7515, + 7516, + 7517, + 7518, + 7519, + 7520, + 7521, + 7522, + 7762, + 8144, + 8690, + 8709, + 12203, + 12961, + 17239, + 19220, + 23364, } local Itemsgrinder = { [675] = { item_id = 30004, effect = CONST_ME_BLUE_FIREWORKS }, -- Sapphire dust - [16122] = { item_id = 21507, effect = CONST_ME_GREENSMOKE } -- Pinch of crystal dust + [16122] = { item_id = 21507, effect = CONST_ME_GREENSMOKE }, -- Pinch of crystal dust } local holes = { - 593, 606, 608, 867, 21341 + 593, + 606, + 608, + 867, + 21341, } local JUNGLE_GRASS = { - 3696, 3702, 17153 + 3696, + 3702, + 17153, } local WILD_GROWTH = { - 2130, 2130, 2982, 2524, 2030, 2029, 10182 + 2130, + 2130, + 2982, + 2524, + 2030, + 2029, + 10182, } local fruits = { - 3584, 3585, 3586, 3587, 3588, 3589, 3590, 3591, 3592, 3593, 3595, 3596, 5096, 8011, 8012, 8013 + 3584, + 3585, + 3586, + 3587, + 3588, + 3589, + 3590, + 3591, + 3592, + 3593, + 3595, + 3596, + 5096, + 8011, + 8012, + 8013, } local lava = { @@ -70,7 +149,7 @@ local lava = { Position(32813, 32335, 11), Position(32814, 32335, 11), Position(32814, 32333, 11), - Position(32813, 32333, 11) + Position(32813, 32333, 11), } local function revertItem(position, itemId, transformId) @@ -225,13 +304,13 @@ local cutItems = { [183] = 189, [233] = 234, [25798] = 0, - [25800] = 0 + [25800] = 0, } -- Ferumbras ascendant ring reward local function addFerumbrasAscendantReward(player, target, toPosition) local stonePos = Position(32648, 32134, 10) - if (toPosition == stonePos) then + if toPosition == stonePos then local tile = Tile(stonePos) local stone = tile:getItemById(1772) if stone then @@ -332,8 +411,7 @@ function onUseRope(player, item, fromPosition, target, toPosition, isHotkey) player:teleportTo(toPosition:moveUpstairs()) if target.itemid == 7762 then if player:getStorageValue(Storage.RookgaardTutorialIsland.TutorialHintsStorage) < 22 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "You have successfully used your rope to climb out of the hole. Congratulations! Now continue to the east.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have successfully used your rope to climb out of the hole. Congratulations! Now continue to the east.") end end elseif table.contains(holeId, target.itemid) then @@ -359,7 +437,7 @@ function onUseShovel(player, item, fromPosition, target, toPosition, isHotkey) addFerumbrasAscendantReward(player, target, toPosition) --Dawnport quest (Morris amulet task) local sandPosition = Position(32099, 31933, 7) - if (toPosition == sandPosition) then + if toPosition == sandPosition then local sandTile = Tile(sandPosition) local amuletId = sandTile:getItemById(19401) if amuletId then @@ -412,23 +490,19 @@ function onUseShovel(player, item, fromPosition, target, toPosition, isHotkey) player:addItem(11341, 1) player:say("You dig out a handful of earth from this sacred place.", TALKTYPE_MONSTER_SAY) elseif target.itemid == 7749 and player:getStorageValue(Storage.RookgaardTutorialIsland.TutorialHintsStorage) < 20 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "You dug a hole! Walk onto it as long as it is open to jump down into the forest cave." - ) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You dug a hole! Walk onto it as long as it is open to jump down into the forest cave.") player:setStorageValue(Storage.RookgaardTutorialIsland.TutorialHintsStorage, 19) Position(32070, 32266, 7):sendMagicEffect(CONST_ME_TUTORIALARROW) Position(32070, 32266, 7):sendMagicEffect(CONST_ME_TUTORIALSQUARE) target:transform(594) addEvent(revertItem, 30 * 1000, toPosition, 594, 7749) - elseif target.actionid == 4654 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) == 1 - and player:getStorageValue(Storage.GravediggerOfDrefia.Mission50) < 1 then + elseif target.actionid == 4654 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission50) < 1 then -- Gravedigger Quest player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You found a piece of the scroll. You pocket it quickly.") player:getPosition():sendMagicEffect(CONST_ME_POFF) player:addItem(18933, 1) player:setStorageValue(Storage.GravediggerOfDrefia.Mission50, 1) - elseif target.actionid == 4668 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission69) == 1 - and player:getStorageValue(Storage.GravediggerOfDrefia.Mission70) < 1 then + elseif target.actionid == 4668 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission69) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission70) < 1 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "A torn scroll piece emerges. Probably gnawed off by rats.") player:getPosition():sendMagicEffect(CONST_ME_POFF) player:addItem(18933, 1) @@ -462,7 +536,7 @@ function onUseShovel(player, item, fromPosition, target, toPosition, isHotkey) local config = { { from = 1, to = 39, itemId = 3998 }, { from = 40, to = 79, itemId = 3028 }, - { from = 80, to = 100, itemId = 17858 } + { from = 80, to = 100, itemId = 17858 }, } local chance = math.random(100) @@ -503,7 +577,7 @@ end function onUsePick(player, item, fromPosition, target, toPosition, isHotkey) local stonePos = Position(32648, 32134, 10) - if (toPosition == stonePos) then + if toPosition == stonePos then local tile = Tile(stonePos) local stone = tile:getItemById(1772) if stone then @@ -525,7 +599,7 @@ function onUsePick(player, item, fromPosition, target, toPosition, isHotkey) --Dawnport some cracks down local crackPosition = Position(32099, 31930, 7) - if (toPosition == crackPosition) then + if toPosition == crackPosition then local tile = Tile(crackPosition) local crack = tile:getItemById(6298) if crack then @@ -624,8 +698,10 @@ function onUsePick(player, item, fromPosition, target, toPosition, isHotkey) player:setStorageValue(Storage.Grimvale.SilverVein, os.time() + 2 * 60) else player:sendTextMessage( - MESSAGE_EVENT_ADVANCE, "You are still exhausted from earlier attempts. \z - Getting liquid silver out of the mountain needs concentration and a steady hand.") + MESSAGE_EVENT_ADVANCE, + "You are still exhausted from earlier attempts. \z + Getting liquid silver out of the mountain needs concentration and a steady hand." + ) end elseif target.itemid == 7185 then --The Ice Islands Quest, Nibelor 1: Breaking the Ice @@ -711,15 +787,13 @@ function onUsePick(player, item, fromPosition, target, toPosition, isHotkey) player:teleportTo(Position(32566, 31338, 10)) end elseif target.actionid == 40028 then - if Tile(Position(32617, 31513, 9)):getItemById(1272) - and Tile(Position(32617, 31514, 9)):getItemById(1624) then + if Tile(Position(32617, 31513, 9)):getItemById(1272) and Tile(Position(32617, 31514, 9)):getItemById(1624) then local rubbleItem = Tile(Position(32619, 31514, 9)):getItemById(5709) if rubbleItem then rubbleItem:remove(1) end else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "You can't remove this pile since it's currently holding up the tunnel.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can't remove this pile since it's currently holding up the tunnel.") end elseif target.actionid == 50127 then -- Pythius The Rotten (Firewalker Boots) @@ -754,8 +828,7 @@ function onUsePick(player, item, fromPosition, target, toPosition, isHotkey) elseif target.itemid == 11340 then -- Wrath of the emperor quest player:addItem(11339, 1) - player:say("The cracked part of the table lets you cut out a large chunk of wood with your pick.", - TALKTYPE_MONSTER_SAY) + player:say("The cracked part of the table lets you cut out a large chunk of wood with your pick.", TALKTYPE_MONSTER_SAY) elseif target.itemid == 372 then target:transform(394) target:decay() @@ -786,10 +859,7 @@ function onUsePick(player, item, fromPosition, target, toPosition, isHotkey) target:decay() else Game.createMonster("Frazzlemaw", toPosition) - player:sendTextMessage( - MESSAGE_EVENT_ADVANCE, - "Crushing the stone yields nothing but slightly finer, yet still unusable rubber." - ) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Crushing the stone yields nothing but slightly finer, yet still unusable rubber.") target:transform(20134) target:decay() end @@ -830,8 +900,7 @@ function onUseCrowbar(player, item, fromPosition, target, toPosition, isHotkey) fromPosition:sendMagicEffect(CONST_ME_ENERGYHIT) player:setStorageValue(Storage.InServiceofYalahar.SewerPipe01, 1) -- StorageValue for Questlog "Mission 01: Something Rotten" - player:setStorageValue(Storage.InServiceofYalahar.Mission01, - player:getStorageValue(Storage.InServiceofYalahar.Mission01) + 1) + player:setStorageValue(Storage.InServiceofYalahar.Mission01, player:getStorageValue(Storage.InServiceofYalahar.Mission01) + 1) local position = player:getPosition() for x = -1, 1 do for y = -1, 1 do @@ -844,8 +913,7 @@ function onUseCrowbar(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(Storage.InServiceofYalahar.SewerPipe02) < 1 then player:setStorageValue(Storage.InServiceofYalahar.SewerPipe02, 1) -- StorageValue for Questlog "Mission 01: Something Rotten" - player:setStorageValue(Storage.InServiceofYalahar.Mission01, - player:getStorageValue(Storage.InServiceofYalahar.Mission01) + 1) + player:setStorageValue(Storage.InServiceofYalahar.Mission01, player:getStorageValue(Storage.InServiceofYalahar.Mission01) + 1) local position = player:getPosition() for x = -1, 1 do for y = -1, 1 do @@ -862,8 +930,7 @@ function onUseCrowbar(player, item, fromPosition, target, toPosition, isHotkey) player:say("You have used the crowbar on a grate.", TALKTYPE_MONSTER_SAY) player:setStorageValue(Storage.InServiceofYalahar.SewerPipe03, 1) -- StorageValue for Questlog "Mission 01: Something Rotten" - player:setStorageValue(Storage.InServiceofYalahar.Mission01, - player:getStorageValue(Storage.InServiceofYalahar.Mission01) + 1) + player:setStorageValue(Storage.InServiceofYalahar.Mission01, player:getStorageValue(Storage.InServiceofYalahar.Mission01) + 1) end elseif target.uid == 3074 then if player:getStorageValue(Storage.InServiceofYalahar.SewerPipe04) < 1 then @@ -871,8 +938,7 @@ function onUseCrowbar(player, item, fromPosition, target, toPosition, isHotkey) player:say("You have used the crowbar on a knot.", TALKTYPE_MONSTER_SAY) player:setStorageValue(Storage.InServiceofYalahar.SewerPipe04, 1) -- StorageValue for Questlog "Mission 01: Something Rotten" - player:setStorageValue(Storage.InServiceofYalahar.Mission01, - player:getStorageValue(Storage.InServiceofYalahar.Mission01) + 1) + player:setStorageValue(Storage.InServiceofYalahar.Mission01, player:getStorageValue(Storage.InServiceofYalahar.Mission01) + 1) end elseif target.actionid == 100 then if target.itemid == 3501 then @@ -932,8 +998,7 @@ function onUseSpoon(player, item, fromPosition, target, toPosition, isHotkey) end elseif target.itemid == 7743 or target.itemid == 390 then -- What a foolish quest - mission 8 (sulphur) - if player:getStorageValue(Storage.WhatAFoolishQuest.Questline) ~= 21 - or player:getStorageValue(Storage.WhatAFoolishQuest.InflammableSulphur) == 1 then + if player:getStorageValue(Storage.WhatAFoolishQuest.Questline) ~= 21 or player:getStorageValue(Storage.WhatAFoolishQuest.InflammableSulphur) == 1 then return false end @@ -1033,9 +1098,7 @@ function onUseKitchenKnife(player, item, fromPosition, target, toPosition, isHot elseif target.actionid == 4200 then if toPosition.x == 32349 and toPosition.y == 32361 and toPosition.z == 7 then player:addItem(102, 1) - player:say( - "The stubborn flower has ruined your knife but at least you got it.", - TALKTYPE_MONSTER_SAY, false, player, toPosition) + player:say("The stubborn flower has ruined your knife but at least you got it.", TALKTYPE_MONSTER_SAY, false, player, toPosition) item:remove(1) else player:say("This flower is too pathetic.", TALKTYPE_MONSTER_SAY, false, player, toPosition) @@ -1053,8 +1116,7 @@ function onUseKitchenKnife(player, item, fromPosition, target, toPosition, isHot Game.createMonster("dwarf guard", Position(32656, 31853, 13)) -- What a foolish quest (mission 8) elseif target.itemid == 3744 then - if player:getStorageValue(Storage.WhatAFoolishQuest.Questline) ~= 22 or - player:getStorageValue(Storage.WhatAFoolishQuest.SpecialLeaves) == 1 then + if player:getStorageValue(Storage.WhatAFoolishQuest.Questline) ~= 22 or player:getStorageValue(Storage.WhatAFoolishQuest.SpecialLeaves) == 1 then return false end diff --git a/data-otservbr-global/scripts/lib/register_bestiary_charm.lua b/data-otservbr-global/scripts/lib/register_bestiary_charm.lua index 3ec072ad68b..c0daffff9f9 100644 --- a/data-otservbr-global/scripts/lib/register_bestiary_charm.lua +++ b/data-otservbr-global/scripts/lib/register_bestiary_charm.lua @@ -1,13 +1,11 @@ registerCharm = {} -setmetatable(registerCharm, - { - __call = - function(self, charm, mask) - for _, parse in pairs(self) do - parse(charm, mask) - end - end - }) +setmetatable(registerCharm, { + __call = function(self, charm, mask) + for _, parse in pairs(self) do + parse(charm, mask) + end + end, +}) Charm.register = function(self, mask) return registerCharm(self, mask) diff --git a/data-otservbr-global/scripts/lib/register_item_tier.lua b/data-otservbr-global/scripts/lib/register_item_tier.lua index 5a8083bdf31..51ad62ccc6e 100644 --- a/data-otservbr-global/scripts/lib/register_item_tier.lua +++ b/data-otservbr-global/scripts/lib/register_item_tier.lua @@ -1,13 +1,11 @@ registerItemClassification = {} -setmetatable(registerItemClassification, - { - __call = - function(self, itemClass, mask) - for _, parse in pairs(self) do - parse(itemClass, mask) - end - end - }) +setmetatable(registerItemClassification, { + __call = function(self, itemClass, mask) + for _, parse in pairs(self) do + parse(itemClass, mask) + end + end, +}) ItemClassification.register = function(self, mask) return registerItemClassification(self, mask) diff --git a/data-otservbr-global/scripts/lib/register_monster_type.lua b/data-otservbr-global/scripts/lib/register_monster_type.lua index 1b0d40bd6b7..68983418159 100644 --- a/data-otservbr-global/scripts/lib/register_monster_type.lua +++ b/data-otservbr-global/scripts/lib/register_monster_type.lua @@ -2,15 +2,13 @@ local smallAreaRadius = 3 local superDrunkDuration = 4000 registerMonsterType = {} -setmetatable(registerMonsterType, - { - __call = - function(self, mtype, mask) - for _, parse in pairs(self) do - parse(mtype, mask) - end - end - }) +setmetatable(registerMonsterType, { + __call = function(self, mtype, mask) + for _, parse in pairs(self) do + parse(mtype, mask) + end + end, +}) MonsterType.register = function(self, mask) return registerMonsterType(self, mask) @@ -156,7 +154,7 @@ registerMonsterType.enemyFactions = function(mtype, mask) if mask.enemyFactions then for _, enemyFaction in pairs(mask.enemyFactions) do if not enemyFaction then - print("[Error - Loading monsters] Monster: \"" .. mtype:name() .. "\". Unknown enemy faction.") + print('[Error - Loading monsters] Monster: "' .. mtype:name() .. '". Unknown enemy faction.') else mtype:enemyFactions(enemyFaction) end @@ -196,8 +194,7 @@ registerMonsterType.flags = function(mtype, mask) mtype:familiar(mask.flags.familiar) end if mask.flags.respawntype or mask.flags.respawnType then - logger.warn("[registerMonsterType.flags] - Monster: {}. Deprecated flag 'respawnType', use instead table 'respawnType = { period = RespawnPeriod_t, underground = boolean}'", - mtype:name()) + logger.warn("[registerMonsterType.flags] - Monster: {}. Deprecated flag 'respawnType', use instead table 'respawnType = { period = RespawnPeriod_t, underground = boolean}'", mtype:name()) end if mask.flags.canPushCreatures ~= nil then mtype:canPushCreatures(mask.flags.canPushCreatures) @@ -280,7 +277,7 @@ registerMonsterType.sounds = function(mtype, mask) if mask.sounds.death then mtype:deathSound(mask.sounds.death) end - if mask.sounds.ticks and mask.sounds.chance and mask.sounds.ids and type(mask.sounds.ids) == "table" and #(mask.sounds.ids) > 0 then + if mask.sounds.ticks and mask.sounds.chance and mask.sounds.ids and type(mask.sounds.ids) == "table" and #mask.sounds.ids > 0 then mtype:soundSpeedTicks(mask.sounds.ticks) mtype:soundChance(mask.sounds.chance) for _, v in pairs(mask.sounds.ids) do @@ -538,71 +535,66 @@ end local function loadcastSound(effect, incomingLua, mtype) -- Throw shoottype - if effect == CONST_ANI_SPEAR or - effect == CONST_ANI_THROWINGSTAR or - effect == CONST_ANI_THROWINGKNIFE or - effect == CONST_ANI_SMALLSTONE or - effect == CONST_ANI_LARGEROCK or - effect == CONST_ANI_SNOWBALL or - effect == CONST_ANI_HUNTINGSPEAR or - effect == CONST_ANI_ENCHANTEDSPEAR or - effect == CONST_ANI_REDSTAR or - effect == CONST_ANI_GREENSTAR or - effect == CONST_ANI_ROYALSPEAR or - effect == CONST_ANI_WHIRLWINDSWORD or - effect == CONST_ANI_WHIRLWINDAXE or - effect == CONST_ANI_WHIRLWINDCLUB or - effect == CONST_ANI_CAKE or - effect == CONST_ANI_GLOOTHSPEAR or - effect == CONST_ANI_LEAFSTAR or - effect == CONST_ANI_ROYALSTAR + if + effect == CONST_ANI_SPEAR + or effect == CONST_ANI_THROWINGSTAR + or effect == CONST_ANI_THROWINGKNIFE + or effect == CONST_ANI_SMALLSTONE + or effect == CONST_ANI_LARGEROCK + or effect == CONST_ANI_SNOWBALL + or effect == CONST_ANI_HUNTINGSPEAR + or effect == CONST_ANI_ENCHANTEDSPEAR + or effect == CONST_ANI_REDSTAR + or effect == CONST_ANI_GREENSTAR + or effect == CONST_ANI_ROYALSPEAR + or effect == CONST_ANI_WHIRLWINDSWORD + or effect == CONST_ANI_WHIRLWINDAXE + or effect == CONST_ANI_WHIRLWINDCLUB + or effect == CONST_ANI_CAKE + or effect == CONST_ANI_GLOOTHSPEAR + or effect == CONST_ANI_LEAFSTAR + or effect == CONST_ANI_ROYALSTAR then return SOUND_EFFECT_TYPE_DIST_ATK_THROW -- Crossbow shoottype - elseif effect == CONST_ANI_BOLT or - effect == CONST_ANI_POWERBOLT or - effect == CONST_ANI_INFERNALBOLT or - effect == CONST_ANI_PIERCINGBOLT or - effect == CONST_ANI_VORTEXBOLT or - effect == CONST_ANI_PRISMATICBOLT or - effect == CONST_ANI_DRILLBOLT or - effect == CONST_ANI_SPECTRALBOLT - then + elseif effect == CONST_ANI_BOLT or effect == CONST_ANI_POWERBOLT or effect == CONST_ANI_INFERNALBOLT or effect == CONST_ANI_PIERCINGBOLT or effect == CONST_ANI_VORTEXBOLT or effect == CONST_ANI_PRISMATICBOLT or effect == CONST_ANI_DRILLBOLT or effect == CONST_ANI_SPECTRALBOLT then return SOUND_EFFECT_TYPE_DIST_ATK_CROSSBOW -- Bow shoottype - elseif effect == CONST_ANI_POISONARROW or - effect == CONST_ANI_BURSTARROW or - effect == CONST_ANI_SNIPERARROW or - effect == CONST_ANI_ONYXARROW or - effect == CONST_ANI_FLASHARROW or - effect == CONST_ANI_FLAMMINGARROW or - effect == CONST_ANI_SHIVERARROW or - effect == CONST_ANI_EARTHARROW or - effect == CONST_ANI_TARSALARROW or - effect == CONST_ANI_CRYSTALLINEARROW or - effect == CONST_ANI_ENVENOMEDARROW or - effect == CONST_ANI_SIMPLEARROW or - effect == CONST_ANI_DIAMONDARROW + elseif + effect == CONST_ANI_POISONARROW + or effect == CONST_ANI_BURSTARROW + or effect == CONST_ANI_SNIPERARROW + or effect == CONST_ANI_ONYXARROW + or effect == CONST_ANI_FLASHARROW + or effect == CONST_ANI_FLAMMINGARROW + or effect == CONST_ANI_SHIVERARROW + or effect == CONST_ANI_EARTHARROW + or effect == CONST_ANI_TARSALARROW + or effect == CONST_ANI_CRYSTALLINEARROW + or effect == CONST_ANI_ENVENOMEDARROW + or effect == CONST_ANI_SIMPLEARROW + or effect == CONST_ANI_DIAMONDARROW then return SOUND_EFFECT_TYPE_DIST_ATK_BOW -- Magical shoottype - elseif effect == CONST_ANI_FIRE or - effect == CONST_ANI_ENERGY or - effect == CONST_ANI_DEATH or - effect == CONST_ANI_POISON or - effect == CONST_ANI_ETHEREALSPEAR or - effect == CONST_ANI_ICE or - effect == CONST_ANI_EARTH or - effect == CONST_ANI_HOLY or - effect == CONST_ANI_SUDDENDEATH or - effect == CONST_ANI_ENERGYBALL or - effect == CONST_ANI_SMALLICE or - effect == CONST_ANI_SMALLHOLY or - effect == CONST_ANI_SMALLEARTH or - effect == CONST_ANI_EXPLOSION + elseif + effect == CONST_ANI_FIRE + or effect == CONST_ANI_ENERGY + or effect == CONST_ANI_DEATH + or effect == CONST_ANI_POISON + or effect == CONST_ANI_ETHEREALSPEAR + or effect == CONST_ANI_ICE + or effect == CONST_ANI_EARTH + or effect == CONST_ANI_HOLY + or effect == CONST_ANI_SUDDENDEATH + or effect == CONST_ANI_ENERGYBALL + or effect == CONST_ANI_SMALLICE + or effect == CONST_ANI_SMALLHOLY + or effect == CONST_ANI_SMALLEARTH + or effect == CONST_ANI_EXPLOSION then return SOUND_EFFECT_TYPE_MAGICAL_RANGE_ATK end @@ -961,12 +953,12 @@ function readSpell(incomingLua, mtype) end end - if not (hasImpactSound) or not (hasCastSound) then + if not hasImpactSound or not hasCastSound then local sounds = loadSpellSoundType(incomingLua, mtype) - if (not (hasCastSound) and sounds.cast ~= SOUND_EFFECT_TYPE_SILENCE) then + if not hasCastSound and sounds.cast ~= SOUND_EFFECT_TYPE_SILENCE then spell:castSound(sounds.cast) end - if (not (hasImpactSound) and sounds.impact ~= SOUND_EFFECT_TYPE_SILENCE) then + if not hasImpactSound and sounds.impact ~= SOUND_EFFECT_TYPE_SILENCE then spell:castSound(sounds.impact) end end diff --git a/data-otservbr-global/scripts/lib/register_npc_type.lua b/data-otservbr-global/scripts/lib/register_npc_type.lua index 02a2809130c..53a5d525e59 100644 --- a/data-otservbr-global/scripts/lib/register_npc_type.lua +++ b/data-otservbr-global/scripts/lib/register_npc_type.lua @@ -1,13 +1,11 @@ registerNpcType = {} -setmetatable(registerNpcType, - { - __call = - function(self, npcType, mask) - for _, parse in pairs(self) do - parse(npcType, mask) - end - end - }) +setmetatable(registerNpcType, { + __call = function(self, npcType, mask) + for _, parse in pairs(self) do + parse(npcType, mask) + end + end, +}) NpcType.register = function(self, mask) return registerNpcType(self, mask) @@ -108,7 +106,7 @@ end registerNpcType.sounds = function(npcType, mask) if type(mask.sounds) == "table" then - if mask.sounds.ticks and mask.sounds.chance and mask.sounds.ids and type(mask.sounds.ids) == "table" and #(mask.sounds.ids) > 0 then + if mask.sounds.ticks and mask.sounds.chance and mask.sounds.ids and type(mask.sounds.ids) == "table" and #mask.sounds.ids > 0 then npcType:soundSpeedTicks(mask.sounds.ticks) npcType:soundChance(mask.sounds.chance) for _, v in pairs(mask.sounds.ids) do diff --git a/data-otservbr-global/scripts/lib/register_spells.lua b/data-otservbr-global/scripts/lib/register_spells.lua index 8c475dcd333..0aa63ca3471 100644 --- a/data-otservbr-global/scripts/lib/register_spells.lua +++ b/data-otservbr-global/scripts/lib/register_spells.lua @@ -3,7 +3,7 @@ AREA_SHORTWAVE3 = { { 1, 1, 1 }, { 1, 1, 1 }, - { 0, 3, 0 } + { 0, 3, 0 }, } AREA_WAVE10 = { @@ -14,7 +14,7 @@ AREA_WAVE10 = { { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 1, 1, 1, 0, 0 }, - { 0, 0, 0, 3, 0, 0, 0 } + { 0, 0, 0, 3, 0, 0, 0 }, } AREA_WAVE11 = { @@ -26,7 +26,7 @@ AREA_WAVE11 = { { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0 }, - { 0, 0, 0, 3, 0, 0, 0 } + { 0, 0, 0, 3, 0, 0, 0 }, } AREA_WAVE12 = { @@ -37,7 +37,7 @@ AREA_WAVE12 = { { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0 }, - { 0, 0, 0, 3, 0, 0, 0 } + { 0, 0, 0, 3, 0, 0, 0 }, } AREA_WAVE13 = { @@ -50,14 +50,14 @@ AREA_WAVE13 = { { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0 }, - { 0, 0, 0, 3, 0, 0, 0 } + { 0, 0, 0, 3, 0, 0, 0 }, } AREA_WAVE4 = { { 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 0 }, - { 0, 0, 3, 0, 0 } + { 0, 0, 3, 0, 0 }, } AREA_WAVE5 = { @@ -66,13 +66,13 @@ AREA_WAVE5 = { { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 1, 0, 0 }, - { 0, 0, 3, 0, 0 } + { 0, 0, 3, 0, 0 }, } AREA_WAVE6 = { { 0, 0, 0, 0, 0 }, { 0, 1, 3, 1, 0 }, - { 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0 }, } AREA_WAVE7 = { @@ -80,7 +80,7 @@ AREA_WAVE7 = { { 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 0 }, - { 0, 0, 3, 0, 0 } + { 0, 0, 3, 0, 0 }, } AREA_SQUAREWAVE5 = { @@ -88,7 +88,7 @@ AREA_SQUAREWAVE5 = { { 1, 1, 1 }, { 1, 1, 1 }, { 0, 1, 0 }, - { 0, 3, 0 } + { 0, 3, 0 }, } AREA_SQUAREWAVE6 = { @@ -103,7 +103,7 @@ AREA_SQUAREWAVE6 = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } AREA_SQUAREWAVE7 = { @@ -117,7 +117,7 @@ AREA_SQUAREWAVE7 = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } --Diagonal waves @@ -127,7 +127,7 @@ AREADIAGONAL_WAVE4 = { { 0, 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 1, 0 }, { 1, 1, 1, 1, 1, 0 }, - { 0, 0, 0, 0, 0, 3 } + { 0, 0, 0, 0, 0, 3 }, } AREADIAGONAL_SQUAREWAVE5 = { @@ -135,13 +135,13 @@ AREADIAGONAL_SQUAREWAVE5 = { { 1, 1, 1, 0, 0 }, { 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 0 }, - { 0, 0, 0, 0, 3 } + { 0, 0, 0, 0, 3 }, } AREADIAGONAL_WAVE6 = { { 0, 0, 1 }, { 0, 3, 0 }, - { 1, 0, 0 } + { 1, 0, 0 }, } AREADIAGONAL_WAVE7 = { @@ -151,12 +151,12 @@ AREADIAGONAL_WAVE7 = { { 0, 0, 1, 1, 1, 1, 0 }, { 0, 1, 1, 1, 1, 1, 0 }, { 1, 1, 1, 1, 1, 1, 0 }, - { 0, 0, 0, 0, 0, 0, 3 } + { 0, 0, 0, 0, 0, 0, 3 }, } --Beams AREA_BEAM1 = { - { 3 } + { 3 }, } AREA_BEAM5 = { @@ -164,7 +164,7 @@ AREA_BEAM5 = { { 1 }, { 1 }, { 1 }, - { 3 } + { 3 }, } AREA_BEAM6 = { @@ -173,7 +173,7 @@ AREA_BEAM6 = { { 1 }, { 1 }, { 1 }, - { 3 } + { 3 }, } AREA_BEAM7 = { @@ -183,7 +183,7 @@ AREA_BEAM7 = { { 1 }, { 1 }, { 1 }, - { 3 } + { 3 }, } AREA_BEAM8 = { @@ -194,7 +194,7 @@ AREA_BEAM8 = { { 1 }, { 1 }, { 1 }, - { 3 } + { 3 }, } AREA_BEAM10 = { @@ -207,7 +207,7 @@ AREA_BEAM10 = { { 1 }, { 1 }, { 1 }, - { 3 } + { 3 }, } --Diagonal Beams @@ -216,7 +216,7 @@ AREADIAGONAL_BEAM5 = { { 0, 1, 0, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 0, 0, 1, 0 }, - { 0, 0, 0, 0, 3 } + { 0, 0, 0, 0, 3 }, } AREADIAGONAL_BEAM7 = { @@ -226,7 +226,7 @@ AREADIAGONAL_BEAM7 = { { 0, 0, 0, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0 }, - { 0, 0, 0, 0, 0, 0, 3 } + { 0, 0, 0, 0, 0, 0, 3 }, } AREADIAGONAL_SQUAREWAVE5_NAGA = { @@ -234,7 +234,7 @@ AREADIAGONAL_SQUAREWAVE5_NAGA = { { 0, 1, 1, 0, 0 }, { 0, 1, 1, 0, 0 }, { 0, 0, 0, 1, 0 }, - { 0, 0, 0, 0, 3 } + { 0, 0, 0, 0, 3 }, } --Circles @@ -243,7 +243,7 @@ AREA_CIRCLE2X2 = { { 1, 1, 1, 1, 1 }, { 1, 1, 3, 1, 1 }, { 1, 1, 1, 1, 1 }, - { 0, 1, 1, 1, 0 } + { 0, 1, 1, 1, 0 }, } AREA_CIRCLE3X3 = { @@ -253,7 +253,7 @@ AREA_CIRCLE3X3 = { { 1, 1, 1, 3, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 1, 1, 0 }, - { 0, 0, 1, 1, 1, 0, 0 } + { 0, 0, 1, 1, 1, 0, 0 }, } AREA_CIRCLE3X32 = { @@ -263,7 +263,7 @@ AREA_CIRCLE3X32 = { { 1, 1, 1, 3, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1 }, - { 1, 1, 1, 1, 1, 1, 1 } + { 1, 1, 1, 1, 1, 1, 1 }, } AREA_CIRCLE3X33 = { @@ -273,14 +273,14 @@ AREA_CIRCLE3X33 = { { 1, 1, 0, 3, 1, 1, 1 }, { 1, 1, 0, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1 }, - { 1, 1, 1, 1, 1, 1, 1 } + { 1, 1, 1, 1, 1, 1, 1 }, } -- Crosses AREA_CIRCLE1X1 = { { 0, 1, 0 }, { 1, 3, 1 }, - { 0, 1, 0 } + { 0, 1, 0 }, } AREA_CIRCLE5X5 = { @@ -294,7 +294,7 @@ AREA_CIRCLE5X5 = { { 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, } AREA_CIRCLE5X5V2 = { @@ -308,7 +308,7 @@ AREA_CIRCLE5X5V2 = { { 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, } AREA_CIRCLE6X6 = { @@ -324,26 +324,26 @@ AREA_CIRCLE6X6 = { { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, } --Squares AREA_SQUARE1X1 = { { 1, 1, 1 }, { 1, 3, 1 }, - { 1, 1, 1 } + { 1, 1, 1 }, } AREA_SQUAREWAVE5_NAGA = { { 1, 1, 1 }, { 1, 1, 1 }, { 0, 1, 0 }, - { 0, 3, 0 } + { 0, 3, 0 }, } -- Walls AREA_WALLFIELD = { - { 1, 1, 3, 1, 1 } + { 1, 1, 3, 1, 1 }, } AREADIAGONAL_WALLFIELD = { @@ -356,7 +356,7 @@ AREADIAGONAL_WALLFIELD = { -- Walls Energy AREA_WALLFIELD_ENERGY = { - { 1, 1, 1, 3, 1, 1, 1 } + { 1, 1, 1, 3, 1, 1, 1 }, } AREADIAGONAL_WALLFIELD_ENERGY = { @@ -378,7 +378,7 @@ AREA_RING1_BURST3 = { { 1, 1, 1, 0, 0, 0, 1, 1, 1 }, { 0, 1, 1, 1, 1, 1, 1, 1, 0 }, { 0, 0, 1, 1, 1, 1, 1, 0, 0 }, - { 0, 0, 0, 1, 1, 1, 0, 0, 0 } + { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, } -- The numbered-keys represents the damage values, and their table @@ -402,7 +402,7 @@ RANGE = { [16] = { 1, 2 }, [17] = { 1, 2 }, [18] = { 1, 2 }, - [19] = { 1, 2 } + [19] = { 1, 2 }, } function Creature:addDamageCondition(target, conditionType, listType, damage, time, rounds) @@ -457,13 +457,13 @@ function Player:addPartyCondition(combat, variant, condition, baseMana) end local members = party:getMembers() - members[#members+1] = party:getLeader() + members[#members + 1] = party:getLeader() local position = self:getPosition() local affectedMembers = {} for _, member in ipairs(members) do if member:getPosition():getDistance(position) <= 36 then - affectedMembers[#affectedMembers+1] = member + affectedMembers[#affectedMembers + 1] = member end end diff --git a/data-otservbr-global/scripts/modal_window/#example.lua b/data-otservbr-global/scripts/modal_window/#example.lua index ae8c79e766f..7d252a1433e 100644 --- a/data-otservbr-global/scripts/modal_window/#example.lua +++ b/data-otservbr-global/scripts/modal_window/#example.lua @@ -1,16 +1,16 @@ local config = { { name = "Hunts", position = Position(1054, 1040, 7) }, { name = "Trainer", position = Position(1116, 1094, 7) }, - { name = "Temple", position = Position(32369, 32241, 7) } + { name = "Temple", position = Position(32369, 32241, 7) }, } local modalTeleport = TalkAction("!teleport") function modalTeleport.onSay(player, words, param) - local menu = ModalWindow { + local menu = ModalWindow({ title = "Teleport Modal", - message = "Locations" - } + message = "Locations", + }) for i, info in pairs(config) do menu:addChoice(string.format("%s", info.name), function(player, button, choice) diff --git a/data-otservbr-global/scripts/movements/equipment/unscripted_equipments.lua b/data-otservbr-global/scripts/movements/equipment/unscripted_equipments.lua index 3284f0bb1bd..83b78dce5bf 100644 --- a/data-otservbr-global/scripts/movements/equipment/unscripted_equipments.lua +++ b/data-otservbr-global/scripts/movements/equipment/unscripted_equipments.lua @@ -7,8 +7,8 @@ local items = { level = 500, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- sanguine galoshes @@ -18,8 +18,8 @@ local items = { level = 500, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- grand sanguine rod @@ -29,8 +29,8 @@ local items = { level = 600, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- grand sanguine rod @@ -40,8 +40,8 @@ local items = { level = 600, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- sanguine rod @@ -51,8 +51,8 @@ local items = { level = 600, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- sanguine rod @@ -62,8 +62,8 @@ local items = { level = 600, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- sanguine boots @@ -73,8 +73,8 @@ local items = { level = 500, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- sanguine boots @@ -84,8 +84,8 @@ local items = { level = 500, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- grand sanguine coil @@ -95,8 +95,8 @@ local items = { level = 600, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- grand sanguine coil @@ -106,8 +106,8 @@ local items = { level = 600, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- sanguine coil @@ -117,8 +117,8 @@ local items = { level = 600, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- sanguine coil @@ -128,8 +128,8 @@ local items = { level = 600, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- sanguine Greaves @@ -139,8 +139,8 @@ local items = { level = 500, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- sanguine Greaves @@ -150,8 +150,8 @@ local items = { level = 500, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- grand sanguine crossbow @@ -161,8 +161,8 @@ local items = { level = 600, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- grand sanguine crossbow @@ -172,8 +172,8 @@ local items = { level = 600, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- sanguine crossbow @@ -183,8 +183,8 @@ local items = { level = 600, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- sanguine crossbow @@ -194,8 +194,8 @@ local items = { level = 600, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- grand sanguine bow @@ -205,8 +205,8 @@ local items = { level = 600, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- grand sanguine bow @@ -216,8 +216,8 @@ local items = { level = 600, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- sanguine bow @@ -227,8 +227,8 @@ local items = { level = 600, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- sanguine bow @@ -238,8 +238,8 @@ local items = { level = 600, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- sanguine legs @@ -249,8 +249,8 @@ local items = { level = 500, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine legs @@ -260,8 +260,8 @@ local items = { level = 500, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine battleaxe @@ -271,8 +271,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine battleaxe @@ -282,8 +282,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine battleaxe @@ -293,8 +293,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine battleaxe @@ -304,8 +304,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine bludgeon @@ -315,8 +315,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine bludgeon @@ -326,8 +326,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine bludgeon @@ -337,8 +337,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine bludgeon @@ -348,8 +348,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine razor @@ -359,8 +359,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine razor @@ -370,8 +370,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine razor @@ -381,8 +381,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine razor @@ -392,8 +392,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine hatchet @@ -403,8 +403,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine hatchet @@ -414,8 +414,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine hatchet @@ -425,8 +425,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine hatchet @@ -436,8 +436,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine cudgel @@ -447,8 +447,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine cudgel @@ -458,8 +458,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine cudgel @@ -469,8 +469,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine cudgel @@ -480,8 +480,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine blade @@ -491,8 +491,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine blade @@ -502,8 +502,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine blade @@ -513,8 +513,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine blade @@ -524,8 +524,8 @@ local items = { level = 600, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mutant bone kilt @@ -535,15 +535,15 @@ local items = { level = 300, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- mutant bone kilt itemid = 40595, type = "deequip", slot = "legs", - level = 300 + level = 300, }, { -- alchemist's notepad @@ -553,15 +553,15 @@ local items = { level = 250, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- alchemist's notepad itemid = 40594, type = "deequip", slot = "shield", - level = 250 + level = 250, }, { -- mutant bone boots @@ -571,15 +571,15 @@ local items = { level = 250, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- mutant bone boots itemid = 40593, type = "deequip", slot = "feet", - level = 250 + level = 250, }, { -- alchemist's boots @@ -589,15 +589,15 @@ local items = { level = 250, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- alchemist's boots itemid = 40592, type = "deequip", slot = "feet", - level = 250 + level = 250, }, { -- mutated skin armor @@ -607,15 +607,15 @@ local items = { level = 270, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- mutated skin armor itemid = 40591, type = "deequip", slot = "armor", - level = 270 + level = 270, }, { -- Mutated Skin Legs @@ -625,15 +625,15 @@ local items = { level = 270, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- Mutated Skin Legs itemid = 40590, type = "deequip", slot = "legs", - level = 270 + level = 270, }, { -- Stitched Mutant Hide Legs @@ -643,15 +643,15 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- Stitched Mutant Hide Legs itemid = 40589, type = "deequip", slot = "legs", - level = 270 + level = 270, }, { -- Antler-Horn Helmet @@ -661,75 +661,75 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- Antler-Horn Helmet itemid = 40588, type = "deequip", slot = "head", - level = 250 + level = 250, }, { -- broken iks cuirass itemid = 40533, type = "equip", - slot = "armor" + slot = "armor", }, { -- broken iks cuirass itemid = 40533, type = "deequip", - slot = "armor" + slot = "armor", }, { -- broken iks faulds itemid = 40531, type = "equip", - slot = "legs" + slot = "legs", }, { -- broken iks faulds itemid = 40531, type = "deequip", - slot = "legs" + slot = "legs", }, { -- broken iks sandals itemid = 40534, type = "equip", - slot = "feet" + slot = "feet", }, { -- broken iks sandals itemid = 40534, type = "deequip", - slot = "feet" + slot = "feet", }, { -- broken macuahuitl itemid = 40530, type = "equip", - slot = "hand" + slot = "hand", }, { -- broken macuahuitl itemid = 40530, type = "deequip", - slot = "hand" + slot = "hand", }, { -- 25 years backpack itemid = 39693, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- 25 years backpack itemid = 39693, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- turtle amulet @@ -739,14 +739,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } + { "Elite Knight" }, }, }, { -- turtle amulet itemid = 39235, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- enchanted turtle amulet @@ -756,14 +756,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } + { "Elite Knight" }, }, }, { -- enchanted turtle amulet itemid = 39234, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- enchanted turtle amulet @@ -773,14 +773,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } + { "Elite Knight" }, }, }, { -- enchanted turtle amulet itemid = 39233, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- arboreal ring @@ -790,14 +790,14 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- arboreal ring itemid = 39188, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged arboreal ring @@ -807,14 +807,14 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- charged arboreal ring itemid = 39187, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged arboreal ring @@ -824,14 +824,14 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- charged arboreal ring itemid = 39186, type = "deequip", - slot = "ring" + slot = "ring", }, { -- arcanomancer sigil @@ -841,14 +841,14 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- arcanomancer sigil itemid = 39185, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged arcanomancer sigil @@ -858,14 +858,14 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- charged arcanomancer sigil itemid = 39184, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged arcanomancer sigil @@ -875,14 +875,14 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- charged arcanomancer sigil itemid = 39183, type = "deequip", - slot = "ring" + slot = "ring", }, { -- alicorn ring @@ -892,14 +892,14 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- alicorn ring itemid = 39182, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged alicorn ring @@ -909,14 +909,14 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- charged alicorn ring itemid = 39181, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged alicorn ring @@ -926,14 +926,14 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- charged alicorn ring itemid = 39180, type = "deequip", - slot = "ring" + slot = "ring", }, { -- spiritthorn ring @@ -943,14 +943,14 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spiritthorn ring itemid = 39179, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged spiritthorn ring @@ -960,14 +960,14 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- charged spiritthorn ring itemid = 39178, type = "deequip", - slot = "ring" + slot = "ring", }, { -- charged spiritthorn ring @@ -977,14 +977,14 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- charged spiritthorn ring itemid = 39177, type = "deequip", - slot = "ring" + slot = "ring", }, { -- midnight sarong @@ -994,14 +994,14 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- midnight sarong itemid = 39167, type = "deequip", - slot = "legs" + slot = "legs", }, { -- dawnfire pantaloons @@ -1011,14 +1011,14 @@ local items = { level = 300, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- dawnfire pantaloons itemid = 39166, type = "deequip", - slot = "legs" + slot = "legs", }, { -- midnight tunic @@ -1028,14 +1028,14 @@ local items = { level = 300, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- midnight tunic itemid = 39165, type = "deequip", - slot = "armor" + slot = "armor", }, { -- dawnfire sherwani @@ -1045,14 +1045,14 @@ local items = { level = 270, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- dawnfire sherwani itemid = 39164, type = "deequip", - slot = "armor" + slot = "armor", }, { -- naga rod @@ -1062,14 +1062,14 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- naga rod itemid = 39163, type = "deequip", - slot = "hand" + slot = "hand", }, { -- naga wand @@ -1079,14 +1079,14 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- naga wand itemid = 39162, type = "deequip", - slot = "hand" + slot = "hand", }, { -- feverbloom boots @@ -1096,8 +1096,8 @@ local items = { level = 270, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- feverbloom boots @@ -1113,14 +1113,14 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- naga quiver itemid = 39160, type = "deequip", - slot = "right-hand" + slot = "right-hand", }, { -- naga crossbow @@ -1130,14 +1130,14 @@ local items = { level = 300, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- naga crossbow itemid = 39159, type = "deequip", - slot = "hand" + slot = "hand", }, { -- frostflower boots @@ -1147,8 +1147,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- frostflower boots @@ -1164,14 +1164,14 @@ local items = { level = 300, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- naga club itemid = 39157, type = "deequip", - slot = "hand" + slot = "hand", }, { -- naga axe @@ -1181,14 +1181,14 @@ local items = { level = 300, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- naga axe itemid = 39156, type = "deequip", - slot = "hand" + slot = "hand", }, { -- naga sword @@ -1198,14 +1198,14 @@ local items = { level = 300, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- naga sword itemid = 39155, type = "deequip", - slot = "hand" + slot = "hand", }, { -- arboreal tome @@ -1215,14 +1215,14 @@ local items = { level = 400, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- arboreal tome itemid = 39154, type = "deequip", - slot = "shield" + slot = "shield", }, { -- arboreal crown @@ -1232,14 +1232,14 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- arboreal crown itemid = 39153, type = "deequip", - slot = "head" + slot = "head", }, { -- arcanomancer folio @@ -1249,14 +1249,14 @@ local items = { level = 400, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- arcanomancer folio itemid = 39152, type = "deequip", - slot = "shield" + slot = "shield", }, { -- arcanomancer regalia @@ -1266,14 +1266,14 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- arcanomancer regalia itemid = 39151, type = "deequip", - slot = "head" + slot = "head", }, { -- alicorn quiver @@ -1283,14 +1283,14 @@ local items = { level = 400, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- alicorn quiver itemid = 39150, type = "deequip", - slot = "right-hand" + slot = "right-hand", }, { -- alicorn headguard @@ -1300,14 +1300,14 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- alicorn headguard itemid = 39149, type = "deequip", - slot = "head" + slot = "head", }, { -- spiritthorn helmet @@ -1317,14 +1317,14 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spiritthorn helmet itemid = 39148, type = "deequip", - slot = "head" + slot = "head", }, { -- spiritthorn armor @@ -1334,88 +1334,88 @@ local items = { level = 400, vocation = { { "Knight", true, true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spiritthorn armor itemid = 39147, type = "deequip", - slot = "armor" + slot = "armor", }, { -- green demon slippers itemid = 37610, type = "equip", - slot = "feet" + slot = "feet", }, { -- green demon slippers itemid = 37610, type = "deequip", - slot = "feet" + slot = "feet", }, { -- Morshabaal's mask itemid = 37611, type = "equip", slot = "shield", - level = 150 + level = 150, }, { -- Morshabaal's mask itemid = 37611, type = "deequip", slot = "shield", - level = 150 + level = 150, }, { -- green demon helmet itemid = 37609, type = "equip", - slot = "head" + slot = "head", }, { -- green demon helmet itemid = 37609, type = "deequip", - slot = "head" + slot = "head", }, { -- green demon armor itemid = 37608, type = "equip", - slot = "armor" + slot = "armor", }, { -- green demon armor itemid = 37608, type = "deequip", - slot = "armor" + slot = "armor", }, { -- green demon legs itemid = 37607, type = "equip", - slot = "legs" + slot = "legs", }, { -- green demon legs itemid = 37607, type = "deequip", - slot = "legs" + slot = "legs", }, { -- changing backpack itemid = 37536, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- changing backpack itemid = 37536, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- gilded eldritch rod @@ -1425,8 +1425,8 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gilded eldritch rod @@ -1436,8 +1436,8 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch rod @@ -1447,8 +1447,8 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch rod @@ -1458,8 +1458,8 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch tome @@ -1469,8 +1469,8 @@ local items = { level = 300, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch tome @@ -1480,8 +1480,8 @@ local items = { level = 300, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch folio @@ -1491,8 +1491,8 @@ local items = { level = 300, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch folio @@ -1502,8 +1502,8 @@ local items = { level = 300, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch hood @@ -1513,8 +1513,8 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch hood @@ -1524,8 +1524,8 @@ local items = { level = 250, vocation = { { "Druid", true, true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch cowl @@ -1535,8 +1535,8 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch cowl @@ -1546,8 +1546,8 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- gilded eldritch wand @@ -1557,8 +1557,8 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- gilded eldritch wand @@ -1568,8 +1568,8 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch wand @@ -1579,8 +1579,8 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch wand @@ -1590,8 +1590,8 @@ local items = { level = 250, vocation = { { "Sorcerer", true, true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch breeches @@ -1601,8 +1601,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch breeches @@ -1612,9 +1612,9 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } - }, + { "Royal Paladin" }, + }, + }, { -- eldritch quiver itemid = 36666, @@ -1623,8 +1623,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch quiver @@ -1634,8 +1634,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- gilded eldritch bow @@ -1645,8 +1645,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- gilded eldritch bow @@ -1656,8 +1656,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch bow @@ -1667,8 +1667,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch bow @@ -1678,8 +1678,8 @@ local items = { level = 250, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch cuirass @@ -1689,8 +1689,8 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch cuirass @@ -1700,8 +1700,8 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch greataxe @@ -1711,8 +1711,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch greataxe @@ -1722,8 +1722,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch greataxe @@ -1733,8 +1733,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch greataxe @@ -1744,8 +1744,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch warmace @@ -1755,8 +1755,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch warmace @@ -1766,8 +1766,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch warmace @@ -1777,8 +1777,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch warmace @@ -1788,8 +1788,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch claymore @@ -1799,8 +1799,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch claymore @@ -1810,8 +1810,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch claymore @@ -1821,8 +1821,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch claymore @@ -1832,8 +1832,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch shield @@ -1843,8 +1843,8 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch shield @@ -1854,20 +1854,20 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spectral bolt (no decay) itemid = 35902, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- spectral bolt (no decay) itemid = 35902, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- red quiver @@ -1877,8 +1877,8 @@ local items = { vocation = { { "None", true }, { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- red quiver @@ -1888,8 +1888,8 @@ local items = { vocation = { { "None", true }, { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- blue quiver @@ -1899,8 +1899,8 @@ local items = { vocation = { { "None", true }, { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- blue quiver @@ -1910,8 +1910,8 @@ local items = { vocation = { { "None", true }, { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- quiver @@ -1921,8 +1921,8 @@ local items = { vocation = { { "None", true }, { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- quiver @@ -1932,8 +1932,8 @@ local items = { vocation = { { "None", true }, { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- jungle quiver @@ -1943,8 +1943,8 @@ local items = { level = 150, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- jungle quiver @@ -1954,21 +1954,21 @@ local items = { level = 150, vocation = { { "Paladin", true, true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- exotic amulet itemid = 35523, type = "equip", slot = "necklace", - level = 180 + level = 180, }, { -- exotic amulet itemid = 35523, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- jungle wand @@ -1978,8 +1978,8 @@ local items = { level = 150, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- jungle wand @@ -1995,8 +1995,8 @@ local items = { level = 150, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- jungle rod @@ -2012,8 +2012,8 @@ local items = { level = 150, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- make-do boots @@ -2029,8 +2029,8 @@ local items = { level = 150, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- makeshift boots @@ -2046,8 +2046,8 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- jungle bow @@ -2063,8 +2063,8 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- bast legs @@ -2080,8 +2080,8 @@ local items = { level = 130, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- exotic legs @@ -2097,8 +2097,8 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- throwing axe @@ -2114,8 +2114,8 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- jungle flail @@ -2131,14 +2131,14 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion hammer itemid = 34254, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lion axe @@ -2148,35 +2148,35 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion axe itemid = 34253, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lion amulet itemid = 34158, type = "equip", slot = "necklace", - level = 230 + level = 230, }, { -- lion amulet itemid = 34158, type = "deequip", slot = "necklace", - level = 230 + level = 230, }, { -- lion plate itemid = 34157, type = "deequip", slot = "armor", - level = 270 + level = 270, }, { -- lion plate @@ -2186,14 +2186,14 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion spangenhelm itemid = 34156, type = "deequip", - slot = "head" + slot = "head", }, { -- lion spangenhelm @@ -2203,8 +2203,8 @@ local items = { level = 230, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- lion longsword @@ -2214,14 +2214,14 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion longsword itemid = 34155, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lion shield @@ -2231,21 +2231,21 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion shield itemid = 34154, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lion spellbook itemid = 34153, type = "deequip", slot = "shield", - level = 220 + level = 220, }, { -- lion spellbook @@ -2257,8 +2257,8 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lion wand @@ -2268,14 +2268,14 @@ local items = { level = 220, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- lion wand itemid = 34152, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lion rod @@ -2285,14 +2285,14 @@ local items = { level = 270, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lion rod itemid = 34151, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lion longbow @@ -2302,20 +2302,20 @@ local items = { level = 270, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- lion longbow itemid = 34150, type = "deequip", - slot = "hand" + slot = "hand", }, { -- soulbastion shield itemid = 34099, type = "deequip", - slot = "shield" + slot = "shield", }, { -- soulbastion shield @@ -2325,14 +2325,14 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- pair of soulstalkers itemid = 34098, type = "deequip", - slot = "feet" + slot = "feet", }, { -- pair of soulstalkers @@ -2342,14 +2342,14 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- pair of soulwalkers itemid = 34097, type = "deequip", - slot = "feet" + slot = "feet", }, { -- pair of soulwalkers @@ -2359,14 +2359,14 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulshroud armor itemid = 34096, type = "deequip", - slot = "armor" + slot = "armor", }, { -- soulshroud armor @@ -2376,14 +2376,14 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- soulmantle itemid = 34095, type = "deequip", - slot = "armor" + slot = "armor", }, { -- soulmantle @@ -2393,15 +2393,15 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- soulshell armor itemid = 34094, type = "deequip", slot = "armor", - level = 400 + level = 400, }, { -- soulshell armor @@ -2411,15 +2411,15 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- soulstrider legs itemid = 34093, type = "deequip", slot = "legs", - level = 400 + level = 400, }, { -- soulstrider legs @@ -2429,15 +2429,15 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- soulshanks legs itemid = 34092, type = "deequip", slot = "legs", - level = 400 + level = 400, }, { -- soulshanks legs @@ -2447,8 +2447,8 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- soulhexer @@ -2464,8 +2464,8 @@ local items = { level = 400, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- soultainter @@ -2481,8 +2481,8 @@ local items = { level = 400, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- soulpiercer @@ -2498,8 +2498,8 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- soulbleeder @@ -2515,8 +2515,8 @@ local items = { level = 400, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- soulmaimer @@ -2532,8 +2532,8 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulcrusher @@ -2549,8 +2549,8 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- souleater @@ -2566,8 +2566,8 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulbiter @@ -2583,8 +2583,8 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulshredder @@ -2600,8 +2600,8 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulcutter @@ -2617,84 +2617,84 @@ local items = { level = 400, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion ring itemid = 34080, type = "deequip", - slot = "ring" + slot = "ring", }, { -- lion ring itemid = 34080, type = "equip", - slot = "ring" + slot = "ring", }, { -- Lit Torch (Sparkling) itemid = 34016, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- Lit Torch (Sparkling) itemid = 34016, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- pair of old bracers itemid = 32705, type = "equip", - slot = "armor" + slot = "armor", }, { -- pair of old bracers itemid = 32705, type = "deequip", - slot = "armor" + slot = "armor", }, { -- ring of souls itemid = 32636, type = "equip", slot = "ring", - level = 200 + level = 200, }, { -- ring of souls itemid = 32636, type = "deequip", slot = "ring", - level = 200 + level = 200, }, { -- enchanted ring of souls itemid = 32635, type = "equip", slot = "ring", - level = 200 + level = 200, }, { -- enchanted ring of souls itemid = 32635, type = "deequip", slot = "ring", - level = 200 + level = 200, }, { -- spooky hood itemid = 32630, type = "equip", - slot = "head" + slot = "head", }, { -- spooky hood itemid = 32630, type = "deequip", - slot = "head" + slot = "head", }, { -- ghost chestplate @@ -2704,41 +2704,41 @@ local items = { level = 230, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ghost chestplate itemid = 32628, type = "deequip", slot = "armor", - level = 230 + level = 230, }, { -- enchanted ring of souls itemid = 32621, type = "equip", slot = "ring", - level = 200 + level = 200, }, { -- enchanted ring of souls itemid = 32621, type = "deequip", slot = "ring", - level = 200 + level = 200, }, { -- ghost backpack itemid = 32620, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- ghost backpack itemid = 32620, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- pair of nightmare boots @@ -2750,15 +2750,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- pair of nightmare boots itemid = 32619, type = "deequip", slot = "feet", - level = 140 + level = 140, }, { -- soulful legs @@ -2770,15 +2770,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- soulful legs itemid = 32618, type = "deequip", slot = "legs", - level = 180 + level = 180, }, { -- fabulous legs @@ -2790,15 +2790,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- fabulous legs itemid = 32617, type = "deequip", slot = "legs", - level = 225 + level = 225, }, { -- phantasmal axe @@ -2808,74 +2808,74 @@ local items = { level = 180, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- phantasmal axe itemid = 32616, type = "deequip", - slot = "hand" + slot = "hand", }, { -- burial shroud itemid = 32585, type = "equip", - slot = "armor" + slot = "armor", }, { -- burial shroud itemid = 32585, type = "deequip", - slot = "armor" + slot = "armor", }, { -- Traditional Gamsbart Hat itemid = 32100, type = "equip", - slot = "head" + slot = "head", }, { -- Traditional Gamsbart Hat itemid = 32100, type = "deequip", - slot = "head" + slot = "head", }, { -- traditional shirt itemid = 32099, type = "equip", - slot = "armor" + slot = "armor", }, { -- traditional shirt itemid = 32099, type = "deequip", - slot = "armor" + slot = "armor", }, { -- lederhosen itemid = 32097, type = "equip", - slot = "legs" + slot = "legs", }, { -- lederhosen itemid = 32097, type = "deequip", - slot = "legs" + slot = "legs", }, { -- traditional leather shoes itemid = 32098, type = "equip", - slot = "feet" + slot = "feet", }, { -- traditional leather shoes itemid = 32098, type = "deequip", - slot = "feet" + slot = "feet", }, { -- meat hammer @@ -2949,7 +2949,7 @@ local items = { level = 220, vocation = { { "Paladin", true }, - { "Royal Paladin" } + { "Royal Paladin" }, }, }, { @@ -2981,8 +2981,8 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- tagralt blade @@ -2998,7 +2998,7 @@ local items = { level = 220, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } + { "Master Sorcerer" }, }, }, { @@ -3016,7 +3016,7 @@ local items = { level = 220, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } + { "Master Sorcerer" }, }, }, { @@ -3024,7 +3024,7 @@ local items = { itemid = 31582, type = "deequip", slot = "head", - level = 220 + level = 220, }, { -- bow of cataclysm @@ -3034,8 +3034,8 @@ local items = { level = 250, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- bow of cataclysm @@ -3051,8 +3051,8 @@ local items = { level = 220, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mortal mace @@ -3068,7 +3068,7 @@ local items = { level = 220, vocation = { { "Paladin", true }, - { "Royal Paladin" } + { "Royal Paladin" }, }, }, { @@ -3086,7 +3086,7 @@ local items = { level = 230, vocation = { { "Druid", true }, - { "Elder Druid" } + { "Elder Druid" }, }, }, { @@ -3104,7 +3104,7 @@ local items = { level = 230, vocation = { { "Knight", true }, - { "Elite Knight" } + { "Elite Knight" }, }, }, { @@ -3236,7 +3236,7 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } + { "Elder Druid" }, }, }, { @@ -3244,7 +3244,7 @@ local items = { itemid = 30403, type = "deequip", slot = "necklace", - level = 220 + level = 220, }, { -- enchanted theurgic amulet @@ -3256,7 +3256,7 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } + { "Elder Druid" }, }, }, { @@ -3264,7 +3264,7 @@ local items = { itemid = 30402, type = "deequip", slot = "necklace", - level = 220 + level = 220, }, { -- amulet of theurgy @@ -3276,7 +3276,7 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } + { "Elder Druid" }, }, }, { @@ -3294,7 +3294,7 @@ local items = { level = 220, vocation = { { "Druid", true }, - { "Elder Druid" } + { "Elder Druid" }, }, }, { @@ -3312,7 +3312,7 @@ local items = { level = 270, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } + { "Master Sorcerer" }, }, }, { @@ -3330,8 +3330,8 @@ local items = { level = 220, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cobra sword @@ -3341,8 +3341,8 @@ local items = { level = 220, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cobra hood @@ -3352,7 +3352,7 @@ local items = { level = 270, vocation = { { "Knight", true }, - { "Elite Knight" } + { "Elite Knight" }, }, }, { @@ -3370,8 +3370,8 @@ local items = { level = 220, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cobra axe @@ -3387,8 +3387,8 @@ local items = { level = 220, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cobra club @@ -3404,7 +3404,7 @@ local items = { level = 220, vocation = { { "Knight", true }, - { "Elite Knight" } + { "Elite Knight" }, }, }, { @@ -3422,8 +3422,8 @@ local items = { level = 220, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- cobra crossbow @@ -3436,86 +3436,86 @@ local items = { itemid = 30323, type = "equip", slot = "necklace", - level = 220 + level = 220, }, { -- rainbow necklace itemid = 30323, type = "deequip", slot = "necklace", - level = 220 + level = 220, }, { -- ice hatchet itemid = 30283, type = "equip", - slot = "hand" + slot = "hand", }, { -- ice hatchet itemid = 30283, type = "deequip", - slot = "hand" + slot = "hand", }, { -- frozen claw itemid = 30279, type = "equip", - slot = "ring" + slot = "ring", }, { -- frozen claw itemid = 30279, type = "deequip", - slot = "ring" + slot = "ring", }, { -- the crown of the percht queen itemid = 30276, type = "equip", - slot = "head" + slot = "head", }, { -- the crown of the percht queen itemid = 30276, type = "deequip", - slot = "head" + slot = "head", }, { -- the crown of the percht queen itemid = 30275, type = "equip", - slot = "head" + slot = "head", }, { -- the crown of the percht queen itemid = 30275, type = "deequip", - slot = "head" + slot = "head", }, { -- festive backpack itemid = 30197, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- festive backpack itemid = 30197, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- yetislippers itemid = 30196, type = "equip", - slot = "feet" + slot = "feet", }, { -- yetislippers itemid = 30196, type = "deequip", - slot = "feet" + slot = "feet", }, { -- enchanted pendulet @@ -3525,15 +3525,15 @@ local items = { level = 180, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- enchanted pendulet itemid = 30345, type = "deequip", slot = "necklace", - level = 180 + level = 180, }, { -- enchanted pendulet @@ -3543,15 +3543,15 @@ local items = { level = 180, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- enchanted pendulet itemid = 30344, type = "deequip", slot = "necklace", - level = 180 + level = 180, }, { -- enchanted sleep shawl @@ -3561,15 +3561,15 @@ local items = { level = 180, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- enchanted sleep shawl itemid = 30343, type = "deequip", slot = "necklace", - level = 180 + level = 180, }, { -- enchanted sleep shawl @@ -3579,27 +3579,27 @@ local items = { level = 180, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- enchanted sleep shawl itemid = 30342, type = "deequip", slot = "necklace", - level = 180 + level = 180, }, { -- shield of endless search itemid = 30181, type = "equip", - slot = "shield" + slot = "shield", }, { -- shield of endless search itemid = 30181, type = "deequip", - slot = "shield" + slot = "shield", }, { -- spirit guide @@ -3611,15 +3611,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spirit guide itemid = 29431, type = "deequip", slot = "shield", - level = 180 + level = 180, }, { -- ectoplasmic shield @@ -3629,15 +3629,15 @@ local items = { level = 180, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ectoplasmic shield itemid = 29430, type = "deequip", slot = "shield", - level = 180 + level = 180, }, { -- pendulet @@ -3647,15 +3647,15 @@ local items = { level = 180, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- pendulet itemid = 29429, type = "deequip", slot = "necklace", - level = 180 + level = 180, }, { -- sleep shawl @@ -3665,15 +3665,15 @@ local items = { level = 180, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- sleep shawl itemid = 29428, type = "deequip", slot = "necklace", - level = 180 + level = 180, }, { -- dark whispers @@ -3683,15 +3683,15 @@ local items = { level = 180, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } - }, + { "Royal Paladin" }, + }, + }, { -- dark whispers itemid = 29427, type = "deequip", slot = "head", - level = 180 + level = 180, }, { -- brain in a jar @@ -3703,15 +3703,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- brain in a jar itemid = 29426, type = "deequip", slot = "shield", - level = 180 + level = 180, }, { -- energized limb @@ -3723,15 +3723,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- energized limb itemid = 29425, type = "deequip", slot = "hand", - level = 180 + level = 180, }, { -- pair of dreamwalkers @@ -3743,15 +3743,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- pair of dreamwalkers itemid = 29424, type = "deequip", slot = "feet", - level = 180 + level = 180, }, { -- dream shroud @@ -3763,15 +3763,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- dream shroud itemid = 29423, type = "deequip", slot = "armor", - level = 180 + level = 180, }, { -- winterblade @@ -3781,14 +3781,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- winterblade itemid = 29422, type = "deequip", - slot = "hand" + slot = "hand", }, { -- summerblade @@ -3798,14 +3798,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- summerblade itemid = 29421, type = "deequip", - slot = "hand" + slot = "hand", }, { -- shoulder plate @@ -3817,15 +3817,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- shoulder plate itemid = 29420, type = "deequip", slot = "shield", - level = 180 + level = 180, }, { -- resizer @@ -3835,14 +3835,14 @@ local items = { level = 230, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- resizer itemid = 29419, type = "deequip", - slot = "hand" + slot = "hand", }, { -- living armor @@ -3854,15 +3854,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- living armor itemid = 29418, type = "deequip", slot = "armor", - level = 180 + level = 180, }, { -- living vine bow @@ -3872,8 +3872,8 @@ local items = { level = 220, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- living vine bow @@ -3883,156 +3883,156 @@ local items = { level = 220, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- golden axe itemid = 29286, type = "equip", - slot = "hand" + slot = "hand", }, { -- golden axe itemid = 29286, type = "deequip", - slot = "hand" + slot = "hand", }, { -- book backpack itemid = 28571, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- book backpack itemid = 28571, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- wand of destruction test itemid = 28479, type = "equip", - slot = "hand" + slot = "hand", }, { -- wand of destruction test itemid = 28479, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master bow test itemid = 28478, type = "equip", - slot = "hand" + slot = "hand", }, { -- umbral master bow test itemid = 28478, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate testtplate itemid = 28475, type = "equip", - slot = "armor" + slot = "armor", }, { -- ornate testtplate itemid = 28475, type = "deequip", - slot = "armor" + slot = "armor", }, { -- sorcerer test weapon itemid = 28466, type = "equip", - slot = "hand" + slot = "hand", }, { -- sorcerer test weapon itemid = 28466, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bow of destruction test itemid = 28465, type = "equip", - slot = "hand" + slot = "hand", }, { -- bow of destruction test itemid = 28465, type = "deequip", - slot = "hand" + slot = "hand", }, { -- test weapon for knights itemid = 28464, type = "equip", - slot = "hand" + slot = "hand", }, { -- test weapon for knights itemid = 28464, type = "deequip", - slot = "hand" + slot = "hand", }, { -- sulphurous demonbone itemid = 28832, type = "equip", slot = "hand", - level = 80 + level = 80, }, { -- sulphurous demonbone itemid = 28832, type = "deequip", - slot = "hand" + slot = "hand", }, { -- unliving demonbone itemid = 28831, type = "equip", slot = "hand", - level = 80 + level = 80, }, { -- unliving demonbone itemid = 28831, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energized demonbone itemid = 28830, type = "equip", slot = "hand", - level = 80 + level = 80, }, { -- energized demonbone itemid = 28830, type = "deequip", - slot = "hand" + slot = "hand", }, { -- rotten demonbone itemid = 28829, type = "equip", slot = "hand", - level = 80 + level = 80, }, { -- rotten demonbone itemid = 28829, type = "deequip", - slot = "hand" + slot = "hand", }, { -- deepling fork @@ -4044,15 +4044,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- deepling fork itemid = 28826, type = "deequip", slot = "hand", - level = 230 + level = 230, }, { -- deepling ceremonial dagger @@ -4064,15 +4064,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- deepling ceremonial dagger itemid = 28825, type = "deequip", slot = "hand", - level = 180 + level = 180, }, { -- falcon mace @@ -4082,14 +4082,14 @@ local items = { level = 300, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- falcon mace itemid = 28725, type = "deequip", - slot = "hand" + slot = "hand", }, { -- falcon battleaxe @@ -4099,14 +4099,14 @@ local items = { level = 300, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- falcon battleaxe itemid = 28724, type = "deequip", - slot = "hand" + slot = "hand", }, { -- falcon longsword @@ -4116,14 +4116,14 @@ local items = { level = 300, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- falcon longsword itemid = 28723, type = "deequip", - slot = "hand" + slot = "hand", }, { -- falcon escutcheon @@ -4135,15 +4135,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- falcon escutcheon itemid = 28722, type = "deequip", slot = "shield", - level = 300 + level = 300, }, { -- falcon shield @@ -4155,15 +4155,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- falcon shield itemid = 28721, type = "deequip", slot = "shield", - level = 300 + level = 300, }, { -- falcon greaves @@ -4175,15 +4175,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- falcon greaves itemid = 28720, type = "deequip", slot = "legs", - level = 300 + level = 300, }, { -- falcon plate @@ -4193,15 +4193,15 @@ local items = { level = 300, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- falcon plate itemid = 28719, type = "deequip", slot = "armor", - level = 300 + level = 300, }, { -- falcon bow @@ -4211,15 +4211,15 @@ local items = { level = 300, vocation = { { "paladin", true }, - { "royal paladin" } - } + { "royal paladin" }, + }, }, { -- falcon bow itemid = 28718, type = "deequip", slot = "hand", - level = 300 + level = 300, }, { -- falcon wand @@ -4229,15 +4229,15 @@ local items = { level = 300, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- falcon wand itemid = 28717, type = "deequip", slot = "hand", - level = 300 + level = 300, }, { -- falcon rod @@ -4247,15 +4247,15 @@ local items = { level = 300, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- falcon rod itemid = 28716, type = "deequip", slot = "hand", - level = 300 + level = 300, }, { -- falcon coif @@ -4267,15 +4267,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- falcon coif itemid = 28715, type = "deequip", slot = "head", - level = 300 + level = 300, }, { -- falcon circlet @@ -4287,39 +4287,39 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- falcon circlet itemid = 28714, type = "deequip", slot = "head", - level = 300 + level = 300, }, { -- silver chimes itemid = 12126, type = "equip", - slot = "shield" + slot = "shield", }, { -- silver chimes itemid = 12126, type = "deequip", - slot = "shield" + slot = "shield", }, { -- suspicious device itemid = 27653, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- suspicious device itemid = 27653, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- gnome sword @@ -4329,14 +4329,14 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gnome sword itemid = 27651, type = "deequip", - slot = "hand" + slot = "hand", }, { -- gnome shield @@ -4348,15 +4348,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Royal Paladin" }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gnome shield itemid = 27650, type = "deequip", slot = "shield", - level = 200 + level = 200, }, { -- gnome legs @@ -4368,15 +4368,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gnome legs itemid = 27649, type = "deequip", slot = "legs", - level = 200 + level = 200, }, { -- gnome armor @@ -4386,15 +4386,15 @@ local items = { level = 200, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- gnome armor itemid = 27648, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- gnome helmet @@ -4406,65 +4406,65 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gnome helmet itemid = 27647, type = "deequip", slot = "head", - level = 200 + level = 200, }, { -- foxtail amulet itemid = 27565, type = "equip", slot = "necklace", - level = 100 + level = 100, }, { -- foxtail amulet itemid = 27565, type = "deequip", slot = "necklace", - level = 100 + level = 100, }, { -- mallet handle itemid = 27525, type = "equip", - slot = "hand" + slot = "hand", }, { -- mallet handle itemid = 27525, type = "deequip", - slot = "hand" + slot = "hand", }, { -- strange mallet itemid = 27523, type = "equip", - slot = "hand" + slot = "hand", }, { -- strange mallet itemid = 27523, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blue spectacles itemid = 27522, type = "equip", - slot = "head" + slot = "head", }, { -- blue spectacles itemid = 27522, type = "deequip", - slot = "head" + slot = "head", }, { -- rod of destruction @@ -4474,15 +4474,15 @@ local items = { level = 200, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- rod of destruction itemid = 27458, type = "deequip", slot = "hand", - level = 200 + level = 200, }, { -- wand of destruction @@ -4492,15 +4492,15 @@ local items = { level = 200, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of destruction itemid = 27457, type = "deequip", slot = "hand", - level = 200 + level = 200, }, { -- crossbow of destruction @@ -4510,14 +4510,14 @@ local items = { level = 200, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crossbow of destruction itemid = 27456, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bow of destruction @@ -4527,14 +4527,14 @@ local items = { level = 200, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- bow of destruction itemid = 27455, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hammer of destruction @@ -4544,14 +4544,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- hammer of destruction itemid = 27454, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mace of destruction @@ -4561,14 +4561,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mace of destruction itemid = 27453, type = "deequip", - slot = "hand" + slot = "hand", }, { -- chopper of destruction @@ -4578,14 +4578,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- chopper of destruction itemid = 27452, type = "deequip", - slot = "hand" + slot = "hand", }, { -- axe of destruction @@ -4595,14 +4595,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- axe of destruction itemid = 27451, type = "deequip", - slot = "hand" + slot = "hand", }, { -- slayer of destruction @@ -4612,14 +4612,14 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- slayer of destruction itemid = 27450, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blade of destruction @@ -4629,8 +4629,8 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- blade of destruction @@ -4640,1510 +4640,1510 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- Journal Shield itemid = 26947, type = "equip", - slot = "shield" + slot = "shield", }, { -- Journal Shield itemid = 26947, type = "deequip", - slot = "shield" + slot = "shield", }, { -- reflecting crown itemid = 26190, type = "equip", - slot = "head" + slot = "head", }, { -- reflecting crown itemid = 26190, type = "deequip", - slot = "head" + slot = "head", }, { -- incandescent crown itemid = 26189, type = "equip", - slot = "head" + slot = "head", }, { -- incandescent crown itemid = 26189, type = "deequip", - slot = "head" + slot = "head", }, { -- iron crown itemid = 26188, type = "equip", - slot = "head" + slot = "head", }, { -- iron crown itemid = 26188, type = "deequip", - slot = "head" + slot = "head", }, { -- leaf crown itemid = 26187, type = "equip", - slot = "head" + slot = "head", }, { -- leaf crown itemid = 26187, type = "deequip", - slot = "head" + slot = "head", }, { -- ornate carving hammer itemid = 26061, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate carving hammer itemid = 26061, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable carving hammer itemid = 26060, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable carving hammer itemid = 26060, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain carving hammer itemid = 26059, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain carving hammer itemid = 26059, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate carving mace itemid = 26058, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate carving mace itemid = 26058, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable carving mace itemid = 26057, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable carving mace itemid = 26057, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain carving mace itemid = 26056, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain carving mace itemid = 26056, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate carving chopper itemid = 26055, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate carving chopper itemid = 26055, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable carving chopper itemid = 26054, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable carving chopper itemid = 26054, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain carving chopper itemid = 26053, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain carving chopper itemid = 26053, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate carving axe itemid = 26052, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate carving axe itemid = 26052, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable carving axe itemid = 26051, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable carving axe itemid = 26051, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain carving axe itemid = 26050, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain carving axe itemid = 26050, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate carving slayer itemid = 26049, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate carving slayer itemid = 26049, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable carving slayer itemid = 26048, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable carving slayer itemid = 26048, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain carving slayer itemid = 26047, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain carving slayer itemid = 26047, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate carving blade itemid = 26046, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate carving blade itemid = 26046, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable carving blade itemid = 26045, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable carving blade itemid = 26045, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain carving blade itemid = 26044, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain carving blade itemid = 26044, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate remedy hammer itemid = 26031, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate remedy hammer itemid = 26031, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable remedy hammer itemid = 26030, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable remedy hammer itemid = 26030, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain remedy hammer itemid = 26029, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain remedy hammer itemid = 26029, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate remedy mace itemid = 26028, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate remedy mace itemid = 26028, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable remedy mace itemid = 26027, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable remedy mace itemid = 26027, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain remedy mace itemid = 26026, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain remedy mace itemid = 26026, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate remedy chopper itemid = 26025, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate remedy chopper itemid = 26025, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable remedy chopper itemid = 26024, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable remedy chopper itemid = 26024, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain remedy chopper itemid = 26023, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain remedy chopper itemid = 26023, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate remedy axe itemid = 26022, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate remedy axe itemid = 26022, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable remedy axe itemid = 26021, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable remedy axe itemid = 26021, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain remedy axe itemid = 26020, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain remedy axe itemid = 26020, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate remedy slayer itemid = 26019, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate remedy slayer itemid = 26019, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable remedy slayer itemid = 26018, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable remedy slayer itemid = 26018, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain remedy slayer itemid = 26017, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain remedy slayer itemid = 26017, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate remedy blade itemid = 26016, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate remedy blade itemid = 26016, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable remedy blade itemid = 26015, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable remedy blade itemid = 26015, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain remedy blade itemid = 26014, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain remedy blade itemid = 26014, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem hammer itemid = 26000, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem hammer itemid = 26000, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem hammer itemid = 25999, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem hammer itemid = 25999, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain mayhem hammer itemid = 25998, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain mayhem hammer itemid = 25998, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem mace itemid = 25997, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem mace itemid = 25997, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem mace itemid = 25996, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem mace itemid = 25996, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain mayhem mace itemid = 25995, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain mayhem mace itemid = 25995, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem chopper itemid = 25994, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem chopper itemid = 25994, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem chopper itemid = 25993, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem chopper itemid = 25993, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain mayhem chopper itemid = 25992, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain mayhem chopper itemid = 25992, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem axe itemid = 25991, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem axe itemid = 25991, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem axe itemid = 25990, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem axe itemid = 25990, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain mayhem axe itemid = 25989, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain mayhem axe itemid = 25989, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem slayer itemid = 25988, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem slayer itemid = 25988, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem slayer itemid = 25987, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem slayer itemid = 25987, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain mayhem slayer itemid = 25986, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain mayhem slayer itemid = 25986, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem blade itemid = 25985, type = "equip", - slot = "hand" + slot = "hand", }, { -- ornate mayhem blade itemid = 25985, type = "deequip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem blade itemid = 25984, type = "equip", - slot = "hand" + slot = "hand", }, { -- valuable mayhem blade itemid = 25984, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plain mayhem blade itemid = 25983, type = "equip", - slot = "hand" + slot = "hand", }, { -- plain mayhem blade itemid = 25983, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mathmaster shield (souvenir) itemid = 25982, type = "equip", - slot = "shield" + slot = "shield", }, { -- mathmaster shield (souvenir) itemid = 25982, type = "deequip", - slot = "shield" + slot = "shield", }, { -- sun catcher itemid = 25977, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- sun catcher itemid = 25977, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- starlight vial itemid = 25976, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- starlight vial itemid = 25976, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- moon mirror itemid = 25975, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- moon mirror itemid = 25975, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- energy war hammer replica itemid = 25974, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy war hammer replica itemid = 25974, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy orcish maul replica itemid = 25973, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy orcish maul replica itemid = 25973, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy basher replica itemid = 25972, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy basher replica itemid = 25972, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy crystal mace replica itemid = 25971, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy crystal mace replica itemid = 25971, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy clerical mace replica itemid = 25970, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy clerical mace replica itemid = 25970, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy war axe replica itemid = 25969, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy war axe replica itemid = 25969, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy headchopper replica itemid = 25968, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy headchopper replica itemid = 25968, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy heroic axe replica itemid = 25967, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy heroic axe replica itemid = 25967, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy knight axe replica itemid = 25966, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy knight axe replica itemid = 25966, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy barbarian axe replica itemid = 25965, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy barbarian axe replica itemid = 25965, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy dragon slayer replica itemid = 25964, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy dragon slayer replica itemid = 25964, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy blacksteel replica itemid = 25963, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy blacksteel replica itemid = 25963, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy mystic blade replica itemid = 25962, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy mystic blade replica itemid = 25962, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy relic sword replica itemid = 25961, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy relic sword replica itemid = 25961, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy spike sword replica itemid = 25960, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy spike sword replica itemid = 25960, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth war hammer replica itemid = 25959, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth war hammer replica itemid = 25959, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth orcish maul replica itemid = 25958, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth orcish maul replica itemid = 25958, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth basher replica itemid = 25957, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth basher replica itemid = 25957, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth crystal mace replica itemid = 25956, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth crystal mace replica itemid = 25956, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth clerical mace replica itemid = 25955, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth clerical mace replica itemid = 25955, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth war axe replica itemid = 25954, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth war axe replica itemid = 25954, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth headchopper replica itemid = 25953, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth headchopper replica itemid = 25953, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth heroic axe replica itemid = 25952, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth heroic axe replica itemid = 25952, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth knight axe replica itemid = 25951, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth knight axe replica itemid = 25951, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth barbarian axe replica itemid = 25950, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth barbarian axe replica itemid = 25950, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth dragon slayer replica itemid = 25949, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth dragon slayer replica itemid = 25949, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth blacksteel replica itemid = 25948, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth blacksteel replica itemid = 25948, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth mystic blade replica itemid = 25947, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth mystic blade replica itemid = 25947, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth relic sword replica itemid = 25946, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth relic sword replica itemid = 25946, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth spike sword replica itemid = 25945, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth spike sword replica itemid = 25945, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy war hammer replica itemid = 25944, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy war hammer replica itemid = 25944, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy orcish maul replica itemid = 25943, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy orcish maul replica itemid = 25943, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy basher replica itemid = 25942, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy basher replica itemid = 25942, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy crystal mace replica itemid = 25941, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy crystal mace replica itemid = 25941, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy clerical mace replica itemid = 25940, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy clerical mace replica itemid = 25940, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy war axe replica itemid = 25939, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy war axe replica itemid = 25939, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy headchopper replica itemid = 25938, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy headchopper replica itemid = 25938, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy heroic axe replica itemid = 25937, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy heroic axe replica itemid = 25937, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy knight axe replica itemid = 25936, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy knight axe replica itemid = 25936, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy barbarian axe replica itemid = 25935, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy barbarian axe replica itemid = 25935, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy dragon slayer replica itemid = 25934, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy dragon slayer replica itemid = 25934, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy blacksteel replica itemid = 25933, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy blacksteel replica itemid = 25933, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy mystic blade replica itemid = 25932, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy mystic blade replica itemid = 25932, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy relic sword replica itemid = 25931, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy relic sword replica itemid = 25931, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy spike sword replica itemid = 25930, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy spike sword replica itemid = 25930, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery war hammer replica itemid = 25929, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery war hammer replica itemid = 25929, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery orcish maul replica itemid = 25928, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery orcish maul replica itemid = 25928, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery basher replica itemid = 25927, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery basher replica itemid = 25927, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery crystal mace replica itemid = 25926, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery crystal mace replica itemid = 25926, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery clerical mace replica itemid = 25925, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery clerical mace replica itemid = 25925, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery war axe replica itemid = 25924, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery war axe replica itemid = 25924, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery headchopper replica itemid = 25923, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery headchopper replica itemid = 25923, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery heroic axe replica itemid = 25922, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery heroic axe replica itemid = 25922, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery knight axe replica itemid = 25921, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery knight axe replica itemid = 25921, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery barbarian axe replica itemid = 25920, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery barbarian axe replica itemid = 25920, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery dragon slayer replica itemid = 25919, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery dragon slayer replica itemid = 25919, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery blacksteel replica itemid = 25918, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery blacksteel replica itemid = 25918, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery mystic blade replica itemid = 25917, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery mystic blade replica itemid = 25917, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery relic sword replica itemid = 25916, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery relic sword replica itemid = 25916, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery spike sword replica itemid = 25915, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery spike sword replica itemid = 25915, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blossom bag itemid = 25780, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- blossom bag itemid = 25780, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- swan feather cloak itemid = 25779, type = "equip", slot = "armor", - level = 60 + level = 60, }, { -- swan feather cloak itemid = 25779, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- wand of darkness @@ -6153,55 +6153,55 @@ local items = { level = 41, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of darkness itemid = 25760, type = "deequip", slot = "hand", - level = 41 + level = 41, }, { -- royal star itemid = 25759, type = "equip", slot = "hand", - level = 120 + level = 120, }, { -- royal star itemid = 25759, type = "deequip", slot = "hand", - level = 120 + level = 120, }, { -- spectral bolt itemid = 25758, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- spectral bolt itemid = 25758, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- leaf star itemid = 25735, type = "equip", slot = "hand", - level = 60 + level = 60, }, { -- leaf star itemid = 25735, type = "deequip", slot = "hand", - level = 60 + level = 60, }, { -- dream blossom staff @@ -6213,15 +6213,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- dream blossom staff itemid = 25700, type = "deequip", slot = "hand", - level = 80 + level = 80, }, { -- wooden spellbook @@ -6233,149 +6233,149 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- wooden spellbook itemid = 25699, type = "deequip", slot = "shield", - level = 80 + level = 80, }, { -- butterfly ring itemid = 25698, type = "equip", slot = "ring", - level = 50 + level = 50, }, { -- butterfly ring itemid = 25698, type = "deequip", slot = "ring", - level = 50 + level = 50, }, { -- glowing rubbish amulet itemid = 25297, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- glowing rubbish amulet itemid = 25297, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- rubbish amulet itemid = 25296, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- rubbish amulet itemid = 25296, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- porcelain mask itemid = 25088, type = "equip", - slot = "head" + slot = "head", }, { -- porcelain mask itemid = 25088, type = "deequip", - slot = "head" + slot = "head", }, { -- filthy bunnyslippers itemid = 24409, type = "equip", - slot = "feet" + slot = "feet", }, { -- filthy bunnyslippers itemid = 24409, type = "deequip", - slot = "feet" + slot = "feet", }, { -- rusty winged helmet itemid = 24405, type = "equip", - slot = "head" + slot = "head", }, { -- rusty winged helmet itemid = 24405, type = "deequip", - slot = "head" + slot = "head", }, { -- tatty Dragon scale legs itemid = 24404, type = "equip", - slot = "legs" + slot = "legs", }, { -- tatty Dragon scale legs itemid = 24404, type = "deequip", - slot = "legs" + slot = "legs", }, { -- chocolatey dragon scale legs itemid = 24402, type = "equip", - slot = "legs" + slot = "legs", }, { -- chocolatey dragon scale legs itemid = 24402, type = "deequip", - slot = "legs" + slot = "legs", }, { -- Ferumbras' Candy Hat itemid = 24397, type = "equip", - slot = "head" + slot = "head", }, { -- Ferumbras' Candy Hat itemid = 24397, type = "deequip", - slot = "head" + slot = "head", }, { -- birthday backpack itemid = 24395, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- birthday backpack itemid = 24395, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- pillow backpack itemid = 24393, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- pillow backpack itemid = 24393, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- collar of red plasma @@ -6385,15 +6385,15 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- collar of red plasma itemid = 23544, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- collar of green plasma @@ -6405,15 +6405,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- collar of green plasma itemid = 23543, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- collar of blue plasma @@ -6423,15 +6423,15 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- collar of blue plasma itemid = 23542, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- ring of red plasma @@ -6441,15 +6441,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ring of red plasma itemid = 23534, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- ring of red plasma @@ -6459,15 +6459,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ring of red plasma itemid = 23533, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- ring of green plasma @@ -6479,15 +6479,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- ring of green plasma itemid = 23532, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- ring of green plasma @@ -6499,15 +6499,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- ring of green plasma itemid = 23531, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- ring of blue plasma @@ -6517,15 +6517,15 @@ local items = { level = 100, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ring of blue plasma itemid = 23530, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- ring of blue plasma @@ -6535,15 +6535,15 @@ local items = { level = 100, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ring of blue plasma itemid = 23529, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- collar of red plasma @@ -6553,15 +6553,15 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- collar of red plasma itemid = 23528, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- collar of green plasma @@ -6573,15 +6573,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- collar of green plasma itemid = 23527, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- collar of blue plasma @@ -6591,55 +6591,55 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- collar of blue plasma itemid = 23526, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- energetic backpack itemid = 23525, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- energetic backpack itemid = 23525, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- void boots itemid = 23477, type = "equip", slot = "feet", - level = 150 + level = 150, }, { -- void boots itemid = 23477, type = "deequip", slot = "feet", - level = 150 + level = 150, }, { -- void boots itemid = 23476, type = "equip", slot = "feet", - level = 150 + level = 150, }, { -- void boots itemid = 23476, type = "deequip", slot = "feet", - level = 150 + level = 150, }, { -- tiara of power @@ -6651,15 +6651,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- tiara of power itemid = 23475, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- tiara of power @@ -6671,15 +6671,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- tiara of power itemid = 23474, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- rod of carving @@ -6689,15 +6689,15 @@ local items = { level = 100, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- rod of carving itemid = 23339, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- wand of carving @@ -6707,111 +6707,111 @@ local items = { level = 100, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of carving itemid = 23335, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- crossbow of carving itemid = 23331, type = "equip", - slot = "hand" + slot = "hand", }, { -- crossbow of carving itemid = 23331, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bow of carving itemid = 23327, type = "equip", - slot = "hand" + slot = "hand", }, { -- bow of carving itemid = 23327, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hammer of carving itemid = 23323, type = "equip", - slot = "hand" + slot = "hand", }, { -- hammer of carving itemid = 23323, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mace of carving itemid = 23319, type = "equip", - slot = "hand" + slot = "hand", }, { -- mace of carving itemid = 23319, type = "deequip", - slot = "hand" + slot = "hand", }, { -- chopper of carving itemid = 23315, type = "equip", - slot = "hand" + slot = "hand", }, { -- chopper of carving itemid = 23315, type = "deequip", - slot = "hand" + slot = "hand", }, { -- axe of carving itemid = 23311, type = "equip", - slot = "hand" + slot = "hand", }, { -- axe of carving itemid = 23311, type = "deequip", - slot = "hand" + slot = "hand", }, { -- slayer of carving itemid = 23307, type = "equip", - slot = "hand" + slot = "hand", }, { -- slayer of carving itemid = 23307, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blade of carving itemid = 23303, type = "equip", - slot = "hand" + slot = "hand", }, { -- blade of carving itemid = 23303, type = "deequip", - slot = "hand" + slot = "hand", }, { -- rod of remedy @@ -6821,15 +6821,15 @@ local items = { level = 100, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- rod of remedy itemid = 23299, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- wand of remedy @@ -6839,99 +6839,99 @@ local items = { level = 100, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of remedy itemid = 23295, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- crossbow of remedy itemid = 23291, type = "equip", - slot = "hand" + slot = "hand", }, { -- crossbow of remedy itemid = 23291, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bow of remedy itemid = 23287, type = "equip", - slot = "hand" + slot = "hand", }, { -- bow of remedy itemid = 23287, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mace of remedy itemid = 23279, type = "equip", - slot = "hand" + slot = "hand", }, { -- mace of remedy itemid = 23279, type = "deequip", - slot = "hand" + slot = "hand", }, { -- chopper of remedy itemid = 23275, type = "equip", - slot = "hand" + slot = "hand", }, { -- chopper of remedy itemid = 23275, type = "deequip", - slot = "hand" + slot = "hand", }, { -- axe of remedy itemid = 23271, type = "equip", - slot = "hand" + slot = "hand", }, { -- axe of remedy itemid = 23271, type = "deequip", - slot = "hand" + slot = "hand", }, { -- slayer of remedy itemid = 23267, type = "equip", - slot = "hand" + slot = "hand", }, { -- slayer of remedy itemid = 23267, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blade of remedy itemid = 23263, type = "equip", - slot = "hand" + slot = "hand", }, { -- blade of remedy itemid = 23263, type = "deequip", - slot = "hand" + slot = "hand", }, { -- rod of mayhem @@ -6941,15 +6941,15 @@ local items = { level = 100, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- rod of mayhem itemid = 23232, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- wand of mayhem @@ -6959,135 +6959,135 @@ local items = { level = 100, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of mayhem itemid = 23231, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- crossbow of mayhem itemid = 23230, type = "equip", - slot = "hand" + slot = "hand", }, { -- crossbow of mayhem itemid = 23230, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bow of mayhem itemid = 23229, type = "equip", - slot = "hand" + slot = "hand", }, { -- bow of mayhem itemid = 23229, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hammer of mayhem itemid = 23228, type = "equip", - slot = "hand" + slot = "hand", }, { -- hammer of mayhem itemid = 23228, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mace of mayhem itemid = 23227, type = "equip", - slot = "hand" + slot = "hand", }, { -- mace of mayhem itemid = 23227, type = "deequip", - slot = "hand" + slot = "hand", }, { -- chopper of mayhem itemid = 23226, type = "equip", - slot = "hand" + slot = "hand", }, { -- chopper of mayhem itemid = 23226, type = "deequip", - slot = "hand" + slot = "hand", }, { -- axe of mayhem itemid = 23225, type = "equip", - slot = "hand" + slot = "hand", }, { -- axe of mayhem itemid = 23225, type = "deequip", - slot = "hand" + slot = "hand", }, { -- slayer of mayhem itemid = 23224, type = "equip", - slot = "hand" + slot = "hand", }, { -- slayer of mayhem itemid = 23224, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blade of mayhem itemid = 23223, type = "equip", - slot = "hand" + slot = "hand", }, { -- blade of mayhem itemid = 23223, type = "deequip", - slot = "hand" + slot = "hand", }, { -- shield of destiny itemid = 22890, type = "equip", - slot = "shield" + slot = "shield", }, { -- shield of destiny itemid = 22890, type = "deequip", - slot = "shield" + slot = "shield", }, { -- shield of destiny itemid = 22889, type = "equip", - slot = "shield" + slot = "shield", }, { -- shield of destiny itemid = 22889, type = "deequip", - slot = "shield" + slot = "shield", }, { -- rift crossbow @@ -7097,14 +7097,14 @@ local items = { level = 120, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- rift crossbow itemid = 22867, type = "deequip", - slot = "hand" + slot = "hand", }, { -- rift bow @@ -7114,70 +7114,70 @@ local items = { level = 120, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- rift bow itemid = 22866, type = "deequip", - slot = "hand" + slot = "hand", }, { -- boots of homecoming itemid = 22774, type = "equip", slot = "feet", - level = 100 + level = 100, }, { -- boots of homecoming itemid = 22774, type = "deequip", slot = "feet", - level = 100 + level = 100, }, { -- boots of homecoming itemid = 22773, type = "equip", slot = "feet", - level = 100 + level = 100, }, { -- boots of homecoming itemid = 22773, type = "deequip", slot = "feet", - level = 100 + level = 100, }, { -- ferumbras' amulet itemid = 22768, type = "equip", slot = "necklace", - level = 100 + level = 100, }, { -- ferumbras' amulet itemid = 22768, type = "deequip", slot = "necklace", - level = 100 + level = 100, }, { -- ferumbras' amulet itemid = 22767, type = "equip", slot = "necklace", - level = 100 + level = 100, }, { -- ferumbras' amulet itemid = 22767, type = "deequip", slot = "necklace", - level = 100 + level = 100, }, { -- ferumbras' staff (enchanted) @@ -7187,15 +7187,15 @@ local items = { level = 100, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- ferumbras' staff (enchanted) itemid = 22766, type = "deequip", slot = "hand", - level = 100 + level = 100, }, { -- ferumbras' staff (failed) @@ -7205,107 +7205,107 @@ local items = { level = 65, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- ferumbras' staff (failed) itemid = 22765, type = "deequip", slot = "hand", - level = 65 + level = 65, }, { -- Ferumbras' staff (club) itemid = 22764, type = "equip", slot = "hand", - level = 100 + level = 100, }, { -- Ferumbras' staff (club) itemid = 22764, type = "deequip", - slot = "hand" + slot = "hand", }, { -- maimer itemid = 22762, type = "equip", slot = "hand", - level = 150 + level = 150, }, { -- maimer itemid = 22762, type = "deequip", - slot = "hand" + slot = "hand", }, { -- Impaler of the igniter itemid = 22760, type = "equip", slot = "hand", - level = 150 + level = 150, }, { -- Impaler of the igniter itemid = 22760, type = "deequip", - slot = "hand" + slot = "hand", }, { -- plague bite itemid = 22759, type = "equip", slot = "hand", - level = 150 + level = 150, }, { -- plague bite itemid = 22759, type = "deequip", - slot = "hand" + slot = "hand", }, { -- death gaze itemid = 22758, type = "equip", slot = "shield", - level = 200 + level = 200, }, { -- death gaze itemid = 22758, type = "deequip", slot = "shield", - level = 200 + level = 200, }, { -- shroud of despair itemid = 22757, type = "equip", slot = "head", - level = 150 + level = 150, }, { -- shroud of despair itemid = 22757, type = "deequip", slot = "head", - level = 150 + level = 150, }, { -- treader of torment itemid = 22756, type = "equip", - slot = "feet" + slot = "feet", }, { -- treader of torment itemid = 22756, type = "deequip", - slot = "feet" + slot = "feet", }, { -- book of lies @@ -7317,88 +7317,88 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- book of lies itemid = 22755, type = "deequip", slot = "shield", - level = 150 + level = 150, }, { -- visage of the end days itemid = 22754, type = "equip", - slot = "head" + slot = "head", }, { -- visage of the end days itemid = 22754, type = "deequip", - slot = "head" + slot = "head", }, { -- ancient amulet itemid = 22746, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- ancient amulet itemid = 22746, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- rift lance itemid = 22727, type = "equip", slot = "hand", - level = 70 + level = 70, }, { -- rift lance itemid = 22727, type = "deequip", - slot = "hand" + slot = "hand", }, { -- rift shield itemid = 22726, type = "equip", - slot = "shield" + slot = "shield", }, { -- rift shield itemid = 22726, type = "deequip", - slot = "shield" + slot = "shield", }, { -- rattling gourd itemid = 22651, type = "equip", - slot = "shield" + slot = "shield", }, { -- rattling gourd itemid = 22651, type = "deequip", - slot = "shield" + slot = "shield", }, { -- gourd itemid = 22650, type = "equip", - slot = "shield" + slot = "shield", }, { -- gourd itemid = 22650, type = "deequip", - slot = "shield" + slot = "shield", }, { -- frostmind raiment @@ -7410,15 +7410,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- frostmind raiment itemid = 22537, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- thundermind raiment @@ -7430,15 +7430,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- thundermind raiment itemid = 22536, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- earthmind raiment @@ -7450,15 +7450,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- earthmind raiment itemid = 22535, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- firemind raiment @@ -7470,15 +7470,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- firemind raiment itemid = 22534, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- frostsoul tabard @@ -7488,15 +7488,15 @@ local items = { level = 200, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- frostsoul tabard itemid = 22533, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- thundersoul tabard @@ -7506,15 +7506,15 @@ local items = { level = 200, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- thundersoul tabard itemid = 22532, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- earthsoul tabard @@ -7524,15 +7524,15 @@ local items = { level = 200, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- earthsoul tabard itemid = 22531, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- firesoul tabard @@ -7542,15 +7542,15 @@ local items = { level = 200, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- firesoul tabard itemid = 22530, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- frostheart platemail @@ -7560,15 +7560,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- frostheart platemail itemid = 22529, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- frostheart hauberk @@ -7578,15 +7578,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- frostheart hauberk itemid = 22528, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- frostheart cuirass @@ -7596,15 +7596,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- frostheart cuirass itemid = 22527, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- thunderheart platemail @@ -7614,15 +7614,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- thunderheart platemail itemid = 22526, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- thunderheart hauberk @@ -7632,15 +7632,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- thunderheart hauberk itemid = 22525, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- thunderheart cuirass @@ -7650,15 +7650,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- thunderheart cuirass itemid = 22524, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- earthheart platemail @@ -7668,15 +7668,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earthheart platemail itemid = 22523, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- earthheart hauberk @@ -7686,15 +7686,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earthheart hauberk itemid = 22522, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- earthheart cuirass @@ -7704,15 +7704,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earthheart cuirass itemid = 22521, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- fireheart platemail @@ -7722,15 +7722,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fireheart platemail itemid = 22520, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- fireheart hauberk @@ -7740,15 +7740,15 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fireheart hauberk itemid = 22519, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- fireheart cuirass @@ -7758,53 +7758,53 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fireheart cuirass itemid = 22518, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- onyx pendant itemid = 22195, type = "equip", slot = "necklace", - level = 60 + level = 60, }, { -- onyx pendant itemid = 22195, type = "deequip", slot = "necklace", - level = 60 + level = 60, }, { -- shamanic mask itemid = 22192, type = "equip", - slot = "head" + slot = "head", }, { -- shamanic mask itemid = 22192, type = "deequip", - slot = "head" + slot = "head", }, { -- painted gourd rattle itemid = 22190, type = "equip", - slot = "shield" + slot = "shield", }, { -- painted gourd rattle itemid = 22190, type = "deequip", - slot = "shield" + slot = "shield", }, { -- ogre scepta @@ -7814,89 +7814,89 @@ local items = { level = 37, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- ogre scepta itemid = 22183, type = "deequip", slot = "hand", - level = 37 + level = 37, }, { -- ogre choppa itemid = 22172, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- ogre choppa itemid = 22172, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ogre klubba itemid = 22171, type = "equip", slot = "hand", - level = 50 + level = 50, }, { -- ogre klubba itemid = 22171, type = "deequip", - slot = "hand" + slot = "hand", }, { -- house silversun's signet ring itemid = 22170, type = "equip", - slot = "ring" + slot = "ring", }, { -- house silversun's signet ring itemid = 22170, type = "deequip", - slot = "ring" + slot = "ring", }, { -- dark wizard's crown itemid = 22154, type = "equip", - slot = "head" + slot = "head", }, { -- dark wizard's crown itemid = 22154, type = "deequip", - slot = "head" + slot = "head", }, { -- dark wizard's crown itemid = 22153, type = "equip", - slot = "head" + slot = "head", }, { -- dark wizard's crown itemid = 22153, type = "deequip", - slot = "head" + slot = "head", }, { -- enchanted werewolf amulet itemid = 22134, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- enchanted werewolf amulet itemid = 22134, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- enchanted werewolf helmet - sword @@ -7906,15 +7906,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- enchanted werewolf helmet - sword itemid = 22132, type = "deequip", slot = "necklace", - level = 100 + level = 100, }, { -- enchanted werewolf helmet - ml @@ -7926,15 +7926,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- enchanted werewolf helmet - ml itemid = 22130, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- enchanted werewolf helmet - distance @@ -7944,15 +7944,15 @@ local items = { level = 100, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- enchanted werewolf helmet - distance itemid = 22129, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- enchanted werewolf helmet - club @@ -7962,15 +7962,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- enchanted werewolf helmet - club itemid = 22128, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- enchanted werewolf helmet - axe @@ -7980,105 +7980,105 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- enchanted werewolf helmet - axe itemid = 22127, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- wereboar loincloth itemid = 22087, type = "equip", - slot = "legs" + slot = "legs", }, { -- wereboar loincloth itemid = 22087, type = "deequip", - slot = "legs" + slot = "legs", }, { -- badger boots itemid = 22086, type = "equip", slot = "feet", - level = 60 + level = 60, }, { -- badger boots itemid = 22086, type = "deequip", slot = "feet", - level = 60 + level = 60, }, { -- fur armor itemid = 22085, type = "equip", slot = "armor", - level = 50 + level = 50, }, { -- fur armor itemid = 22085, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- wolf backpack itemid = 22084, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- wolf backpack itemid = 22084, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- werewolf helmet itemid = 22062, type = "equip", slot = "head", - level = 100 + level = 100, }, { -- werewolf helmet itemid = 22062, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- enchanted werewolf amulet itemid = 22061, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- enchanted werewolf amulet itemid = 22061, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- werewolf amulet itemid = 22060, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- werewolf amulet itemid = 22060, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- oriental shoes @@ -8090,113 +8090,113 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- oriental shoes itemid = 21981, type = "deequip", slot = "feet", - level = 80 + level = 80, }, { -- sweetheart ring itemid = 21955, type = "equip", - slot = "ring" + slot = "ring", }, { -- sweetheart ring itemid = 21955, type = "deequip", - slot = "ring" + slot = "ring", }, { -- crest of the deep seas itemid = 21892, type = "equip", slot = "head", - level = 80 + level = 80, }, { -- crest of the deep seas itemid = 21892, type = "deequip", slot = "head", - level = 80 + level = 80, }, { -- brandon's wedding ring itemid = 21745, type = "equip", - slot = "ring" + slot = "ring", }, { -- brandon's wedding ring itemid = 21745, type = "deequip", - slot = "ring" + slot = "ring", }, { -- simple arrow itemid = 21470, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- simple arrow itemid = 21470, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- war backpack itemid = 21445, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- war backpack itemid = 21445, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- the Lion's Heart itemid = 21439, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- the Lion's Heart itemid = 21439, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- shopping bag itemid = 21411, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- shopping bag itemid = 21411, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- broken wooden shield itemid = 21401, type = "equip", - slot = "shield" + slot = "shield", }, { -- broken wooden shield itemid = 21401, type = "deequip", - slot = "shield" + slot = "shield", }, { -- spellbook of the novice @@ -8207,14 +8207,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of the novice itemid = 21400, type = "deequip", - slot = "shield" + slot = "shield", }, { -- the chiller @@ -8224,15 +8224,15 @@ local items = { level = 1, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- the chiller itemid = 21350, type = "deequip", slot = "hand", - level = 1 + level = 1, }, { -- the scorcher @@ -8242,52 +8242,52 @@ local items = { level = 1, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- the scorcher itemid = 21348, type = "deequip", slot = "hand", - level = 1 + level = 1, }, { -- glooth backpack itemid = 21295, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- glooth backpack itemid = 21295, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- feedbag itemid = 21292, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- feedbag itemid = 21292, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- one hit wonder itemid = 21219, type = "equip", slot = "hand", - level = 70 + level = 70, }, { -- one hit wonder itemid = 21219, type = "deequip", - slot = "hand" + slot = "hand", }, { -- glooth amulet @@ -8299,15 +8299,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glooth amulet itemid = 21183, type = "deequip", slot = "necklace", - level = 75 + level = 75, }, { -- glooth axe @@ -8317,14 +8317,14 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- glooth axe itemid = 21180, type = "deequip", - slot = "hand" + slot = "hand", }, { -- glooth blade @@ -8334,14 +8334,14 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- glooth blade itemid = 21179, type = "deequip", - slot = "hand" + slot = "hand", }, { -- glooth club @@ -8351,119 +8351,119 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- glooth club itemid = 21178, type = "deequip", - slot = "hand" + slot = "hand", }, { -- cowtana itemid = 21177, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- cowtana itemid = 21177, type = "deequip", slot = "hand", - level = 25 + level = 25, }, { -- execowtioner axe itemid = 21176, type = "equip", slot = "hand", - level = 55 + level = 55, }, { -- execowtioner axe itemid = 21176, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mino shield itemid = 21175, type = "equip", - slot = "shield" + slot = "shield", }, { -- mino shield itemid = 21175, type = "deequip", - slot = "shield" + slot = "shield", }, { -- mino lance itemid = 21174, type = "equip", slot = "hand", - level = 45 + level = 45, }, { -- mino lance itemid = 21174, type = "deequip", - slot = "hand" + slot = "hand", }, { -- moohtant cudgel itemid = 21173, type = "equip", slot = "hand", - level = 60 + level = 60, }, { -- moohtant cudgel itemid = 21173, type = "deequip", - slot = "hand" + slot = "hand", }, { -- glooth whip itemid = 21172, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- glooth whip itemid = 21172, type = "deequip", - slot = "hand" + slot = "hand", }, { -- metal bat itemid = 21171, type = "equip", slot = "hand", - level = 55 + level = 55, }, { -- metal bat itemid = 21171, type = "deequip", - slot = "hand" + slot = "hand", }, { -- gearwheel chain itemid = 21170, type = "equip", slot = "necklace", - level = 75 + level = 75, }, { -- gearwheel chain itemid = 21170, type = "deequip", slot = "necklace", - level = 75 + level = 75, }, { -- metal spats @@ -8475,41 +8475,41 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- metal spats itemid = 21169, type = "deequip", slot = "feet", - level = 50 + level = 50, }, { -- alloy legs itemid = 21168, type = "equip", slot = "legs", - level = 60 + level = 60, }, { -- alloy legs itemid = 21168, type = "deequip", slot = "legs", - level = 60 + level = 60, }, { -- heat core itemid = 21167, type = "equip", - slot = "armor" + slot = "armor", }, { -- heat core itemid = 21167, type = "deequip", - slot = "armor" + slot = "armor", }, { -- mooh'tah plate @@ -8520,14 +8520,14 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- mooh'tah plate itemid = 21166, type = "deequip", - slot = "armor" + slot = "armor", }, { -- rubber cap @@ -8539,15 +8539,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- rubber cap itemid = 21165, type = "deequip", slot = "head", - level = 70 + level = 70, }, { -- glooth cape @@ -8559,91 +8559,91 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glooth cape itemid = 21164, type = "deequip", slot = "armor", - level = 40 + level = 40, }, { -- glooth spear itemid = 21158, type = "equip", slot = "hand", - level = 60 + level = 60, }, { -- glooth spear itemid = 21158, type = "deequip", slot = "hand", - level = 60 + level = 60, }, { -- cake backpack itemid = 20347, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- cake backpack itemid = 20347, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- unstable ring of ending itemid = 20209, type = "equip", - slot = "ring" + slot = "ring", }, { -- unstable ring of ending itemid = 20209, type = "deequip", - slot = "ring" + slot = "ring", }, { -- broken visor itemid = 20184, type = "equip", - slot = "head" + slot = "head", }, { -- broken visor itemid = 20184, type = "deequip", - slot = "head" + slot = "head", }, { -- ring of ending itemid = 20182, type = "equip", slot = "ring", - level = 200 + level = 200, }, { -- ring of ending itemid = 20182, type = "deequip", slot = "ring", - level = 200 + level = 200, }, { -- eerie song book itemid = 20140, type = "equip", - slot = "shield" + slot = "shield", }, { -- eerie song book itemid = 20140, type = "deequip", - slot = "shield" + slot = "shield", }, { -- umbral master spellbook @@ -8655,15 +8655,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- umbral master spellbook itemid = 20090, type = "deequip", slot = "shield", - level = 250 + level = 250, }, { -- umbral spellbook @@ -8675,15 +8675,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- umbral spellbook itemid = 20089, type = "deequip", slot = "shield", - level = 150 + level = 150, }, { -- crude umbral spellbook @@ -8695,15 +8695,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- crude umbral spellbook itemid = 20088, type = "deequip", slot = "shield", - level = 75 + level = 75, }, { -- umbral master crossbow @@ -8713,14 +8713,14 @@ local items = { level = 250, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- umbral master crossbow itemid = 20087, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral crossbow @@ -8730,14 +8730,14 @@ local items = { level = 120, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- umbral crossbow itemid = 20086, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral crossbow @@ -8747,14 +8747,14 @@ local items = { level = 75, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crude umbral crossbow itemid = 20085, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master bow @@ -8764,14 +8764,14 @@ local items = { level = 250, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- umbral master bow itemid = 20084, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral bow @@ -8781,14 +8781,14 @@ local items = { level = 120, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- umbral bow itemid = 20083, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral bow @@ -8798,14 +8798,14 @@ local items = { level = 75, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crude umbral bow itemid = 20082, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master hammer @@ -8815,14 +8815,14 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral master hammer itemid = 20081, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral hammer @@ -8832,14 +8832,14 @@ local items = { level = 120, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral hammer itemid = 20080, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral hammer @@ -8849,14 +8849,14 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral hammer itemid = 20079, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master mace @@ -8866,14 +8866,14 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral master mace itemid = 20078, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral mace @@ -8883,14 +8883,14 @@ local items = { level = 120, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral mace itemid = 20077, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral mace @@ -8900,14 +8900,14 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral mace itemid = 20076, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master chopper @@ -8917,14 +8917,14 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral master chopper itemid = 20075, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral chopper @@ -8934,14 +8934,14 @@ local items = { level = 120, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral chopper itemid = 20074, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral chopper @@ -8951,14 +8951,14 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral chopper itemid = 20073, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master axe @@ -8968,15 +8968,14 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } - + { "Elite Knight" }, + }, }, { -- umbral master axe itemid = 20072, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral axe @@ -8986,14 +8985,14 @@ local items = { level = 120, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral axe itemid = 20071, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral axe @@ -9003,14 +9002,14 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral axe itemid = 20070, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral master slayer @@ -9020,14 +9019,14 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral master slayer itemid = 20069, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral slayer @@ -9037,14 +9036,14 @@ local items = { level = 120, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral slayer itemid = 20068, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral slayer @@ -9054,8 +9053,8 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral slayer @@ -9065,8 +9064,8 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral masterblade @@ -9076,14 +9075,14 @@ local items = { level = 250, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral masterblade itemid = 20066, type = "deequip", - slot = "hand" + slot = "hand", }, { -- umbral blade @@ -9093,14 +9092,14 @@ local items = { level = 120, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral blade itemid = 20065, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crude umbral blade @@ -9110,8 +9109,8 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral blade @@ -9121,20 +9120,20 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- strange good night songs itemid = 20050, type = "equip", - slot = "shield" + slot = "shield", }, { -- strange good night songs itemid = 20050, type = "deequip", - slot = "shield" + slot = "shield", }, { -- furious frock @@ -9146,51 +9145,51 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- furious frock itemid = 19391, type = "deequip", slot = "armor", - level = 130 + level = 130, }, { -- vampire silk slippers itemid = 19374, type = "equip", - slot = "feet" + slot = "feet", }, { -- vampire silk slippers itemid = 19374, type = "deequip", - slot = "feet" + slot = "feet", }, { -- haunted mirror piece itemid = 19373, type = "equip", - slot = "shield" + slot = "shield", }, { -- haunted mirror piece itemid = 19373, type = "deequip", - slot = "shield" + slot = "shield", }, { -- goo shell itemid = 19372, type = "equip", - slot = "armor" + slot = "armor", }, { -- goo shell itemid = 19372, type = "deequip", - slot = "armor" + slot = "armor", }, { -- icy culottes @@ -9201,76 +9200,76 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- icy culottes itemid = 19366, type = "deequip", - slot = "legs" + slot = "legs", }, { -- runic ice shield itemid = 19363, type = "equip", - slot = "shield" + slot = "shield", }, { -- runic ice shield itemid = 19363, type = "deequip", - slot = "shield" + slot = "shield", }, { -- icicle bow itemid = 19362, type = "equip", - slot = "hand" + slot = "hand", }, { -- icicle bow itemid = 19362, type = "deequip", - slot = "hand" + slot = "hand", }, { -- horn itemid = 19359, type = "equip", - slot = "ring" + slot = "ring", }, { -- horn itemid = 19359, type = "deequip", - slot = "ring" + slot = "ring", }, { -- albino plate itemid = 19358, type = "equip", - slot = "armor" + slot = "armor", }, { -- albino plate itemid = 19358, type = "deequip", - slot = "armor" + slot = "armor", }, { -- shrunken head necklace itemid = 19357, type = "equip", slot = "necklace", - level = 150 + level = 150, }, { -- shrunken head necklace itemid = 19357, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- triple bolt crossbow @@ -9280,99 +9279,99 @@ local items = { level = 70, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- triple bolt crossbow itemid = 19356, type = "deequip", - slot = "hand" + slot = "hand", }, { -- pannier backpack itemid = 19159, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- pannier backpack itemid = 19159, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- friendship amulet itemid = 19153, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- friendship amulet itemid = 19153, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- vampire's signet ring itemid = 18935, type = "equip", - slot = "ring" + slot = "ring", }, { -- vampire's signet ring itemid = 18935, type = "deequip", - slot = "ring" + slot = "ring", }, { -- spiky club itemid = 17859, type = "equip", slot = "hand", - level = 20 + level = 20, }, { -- spiky club itemid = 17859, type = "deequip", - slot = "hand" + slot = "hand", }, { -- helmet of the lost itemid = 17852, type = "equip", - slot = "head" + slot = "head", }, { -- helmet of the lost itemid = 17852, type = "deequip", - slot = "head" + slot = "head", }, { -- leather harness itemid = 17846, type = "equip", - slot = "armor" + slot = "armor", }, { -- leather harness itemid = 17846, type = "deequip", - slot = "armor" + slot = "armor", }, { -- buckle itemid = 17829, type = "equip", - slot = "armor" + slot = "armor", }, { -- buckle itemid = 17829, type = "deequip", - slot = "armor" + slot = "armor", }, { -- pair of iron fists @@ -9382,64 +9381,64 @@ local items = { level = 50, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- pair of iron fists itemid = 17828, type = "deequip", - slot = "hand" + slot = "hand", }, { -- swampling club itemid = 17824, type = "equip", - slot = "hand" + slot = "hand", }, { -- swampling club itemid = 17824, type = "deequip", - slot = "hand" + slot = "hand", }, { -- life preserver itemid = 17813, type = "equip", slot = "hand", - level = 20 + level = 20, }, { -- life preserver itemid = 17813, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ratana itemid = 17812, type = "equip", slot = "hand", - level = 15 + level = 15, }, { -- ratana itemid = 17812, type = "deequip", - slot = "hand" + slot = "hand", }, { -- spike shield itemid = 17810, type = "equip", - slot = "shield" + slot = "shield", }, { -- spike shield itemid = 17810, type = "deequip", - slot = "shield" + slot = "shield", }, { -- sorc and druid staff @@ -9448,15 +9447,15 @@ local items = { slot = "hand", level = 1, vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- sorc and druid staff itemid = 17111, type = "deequip", slot = "hand", - level = 1 + level = 1, }, { -- mean paladin spear @@ -9464,8 +9463,8 @@ local items = { type = "equip", slot = "hand", vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- mean paladin spear @@ -9473,8 +9472,8 @@ local items = { type = "deequip", slot = "hand", vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- mean knight sword @@ -9482,41 +9481,41 @@ local items = { type = "equip", slot = "hand", vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- mean knight sword itemid = 17109, type = "deequip", - slot = "hand" + slot = "hand", }, { -- prismatic ring itemid = 16264, type = "equip", slot = "ring", - level = 120 + level = 120, }, { -- prismatic ring itemid = 16264, type = "deequip", slot = "ring", - level = 120 + level = 120, }, { -- shiny blade itemid = 16175, type = "equip", slot = "hand", - level = 120 + level = 120, }, { -- shiny blade itemid = 16175, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mycological bow @@ -9526,14 +9525,14 @@ local items = { level = 105, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- mycological bow itemid = 16164, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crystal crossbow @@ -9543,90 +9542,89 @@ local items = { level = 90, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crystal crossbow itemid = 16163, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mycological mace itemid = 16162, type = "equip", slot = "hand", - level = 120 - + level = 120, }, { -- mycological mace itemid = 16162, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crystalline axe itemid = 16161, type = "equip", slot = "hand", - level = 120 + level = 120, }, { -- crystalline axe itemid = 16161, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crystalline sword itemid = 16160, type = "equip", slot = "hand", - level = 62 + level = 62, }, { -- crystalline sword itemid = 16160, type = "deequip", - slot = "hand" + slot = "hand", }, { -- envenomed arrow itemid = 16143, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- envenomed arrow itemid = 16143, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- drill bolt itemid = 16142, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- drill bolt itemid = 16142, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- prismatic bolt itemid = 16141, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- prismatic bolt itemid = 16141, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- glacial rod @@ -9636,15 +9634,15 @@ local items = { level = 65, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glacial rod itemid = 16118, type = "deequip", slot = "hand", - level = 65 + level = 65, }, { -- muck rod @@ -9654,15 +9652,15 @@ local items = { level = 65, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- muck rod itemid = 16117, type = "deequip", slot = "hand", - level = 65 + level = 65, }, { -- prismatic shield @@ -9672,15 +9670,15 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- prismatic shield itemid = 16116, type = "deequip", slot = "shield", - level = 150 + level = 150, }, { -- wand of everblazing @@ -9690,43 +9688,43 @@ local items = { level = 65, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of everblazing itemid = 16115, type = "deequip", slot = "hand", - level = 65 + level = 65, }, { -- prismatic ring itemid = 16114, type = "equip", slot = "ring", - level = 120 + level = 120, }, { -- prismatic ring itemid = 16114, type = "deequip", slot = "ring", - level = 120 + level = 120, }, { -- prismatic necklace itemid = 16113, type = "equip", slot = "necklace", - level = 150 + level = 150, }, { -- prismatic necklace itemid = 16113, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- prismatic boots @@ -9736,15 +9734,15 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- prismatic boots itemid = 16112, type = "deequip", slot = "feet", - level = 150 + level = 150, }, { -- prismatic legs @@ -9754,15 +9752,15 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- prismatic legs itemid = 16111, type = "deequip", slot = "legs", - level = 150 + level = 150, }, { -- prismatic armor @@ -9774,15 +9772,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- prismatic armor itemid = 16110, type = "deequip", slot = "armor", - level = 120 + level = 120, }, { -- prismatic helmet @@ -9792,29 +9790,29 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- prismatic helmet itemid = 16109, type = "deequip", slot = "head", - level = 150 + level = 150, }, { -- gill necklace itemid = 16108, type = "equip", slot = "necklace", - level = 150 + level = 150, }, { -- gill necklace itemid = 16108, type = "deequip", slot = "necklace", - level = 150 + level = 150, }, { -- spellbook of vigilance @@ -9826,15 +9824,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of vigilance itemid = 16107, type = "deequip", slot = "shield", - level = 130 + level = 130, }, { -- gill legs @@ -9846,15 +9844,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gill legs itemid = 16106, type = "deequip", slot = "legs", - level = 150 + level = 150, }, { -- gill coat @@ -9866,15 +9864,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gill coat itemid = 16105, type = "deequip", slot = "armor", - level = 150 + level = 150, }, { -- gill gugel @@ -9886,39 +9884,39 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gill gugel itemid = 16104, type = "deequip", slot = "head", - level = 150 + level = 150, }, { -- crystal backpack itemid = 16100, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- crystal backpack itemid = 16100, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- mushroom backpack itemid = 16099, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- mushroom backpack itemid = 16099, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- wand of defiance @@ -9928,39 +9926,39 @@ local items = { level = 65, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of defiance itemid = 16096, type = "deequip", slot = "hand", - level = 65 + level = 65, }, { -- crystalline arrow itemid = 15793, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- crystalline arrow itemid = 15793, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- crystal bolt itemid = 15792, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- crystal bolt itemid = 15792, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- spellbook of ancient arcana @@ -9972,15 +9970,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of ancient arcana itemid = 14769, type = "deequip", slot = "shield", - level = 150 + level = 150, }, { -- thorn spitter @@ -9990,112 +9988,111 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- thorn spitter itemid = 14768, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mathmaster shield itemid = 14761, type = "equip", - slot = "shield" + slot = "shield", }, { -- mathmaster shield itemid = 14761, type = "deequip", - slot = "shield" + slot = "shield", }, { -- mathmaster shield itemid = 14760, type = "equip", - slot = "shield" + slot = "shield", }, { -- mathmaster shield itemid = 14760, type = "deequip", - slot = "shield" + slot = "shield", }, { -- anniversary backpack itemid = 14674, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- anniversary backpack itemid = 14674, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- vortex bolt itemid = 14252, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- vortex bolt itemid = 14252, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- tarsal arrow itemid = 14251, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- tarsal arrow itemid = 14251, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- deepling squelcher itemid = 14250, type = "equip", slot = "hand", - level = 48 - + level = 48, }, { -- deepling squelcher itemid = 14250, type = "deequip", - slot = "hand" + slot = "hand", }, { -- buggy backpack itemid = 14249, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- buggy backpack itemid = 14249, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- deepling backpack itemid = 14248, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- deepling backpack itemid = 14248, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- ornate crossbow @@ -10105,14 +10102,14 @@ local items = { level = 50, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ornate crossbow itemid = 14247, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hive bow @@ -10122,53 +10119,53 @@ local items = { level = 85, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hive bow itemid = 14246, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hive scythe itemid = 14089, type = "equip", slot = "hand", - level = 70 + level = 70, }, { -- hive scythe itemid = 14089, type = "deequip", - slot = "hand" + slot = "hand", }, { -- carapace shield itemid = 14088, type = "equip", - slot = "shield" + slot = "shield", }, { -- carapace shield itemid = 14088, type = "deequip", - slot = "shield" + slot = "shield", }, { -- grasshopper legs itemid = 14087, type = "equip", slot = "legs", - level = 75 + level = 75, }, { -- grasshopper legs itemid = 14087, type = "deequip", slot = "legs", - level = 75 + level = 75, }, { -- calopteryx cape @@ -10180,66 +10177,66 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- calopteryx cape itemid = 14086, type = "deequip", slot = "armor", - level = 80 + level = 80, }, { -- guardian axe itemid = 14043, type = "equip", slot = "hand", - level = 50 + level = 50, }, { -- guardian axe itemid = 14043, type = "deequip", - slot = "hand" + slot = "hand", }, { -- warrior's shield itemid = 14042, type = "equip", - slot = "shield" + slot = "shield", }, { -- warrior's shield itemid = 14042, type = "deequip", - slot = "shield" + slot = "shield", }, { -- warrior's axe itemid = 14040, type = "equip", slot = "hand", - level = 40 + level = 40, }, { -- warrior's axe itemid = 14040, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate mace itemid = 14001, type = "equip", slot = "hand", - level = 90 + level = 90, }, { -- ornate mace itemid = 14001, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornate shield @@ -10249,15 +10246,15 @@ local items = { level = 130, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ornate shield itemid = 14000, type = "deequip", slot = "shield", - level = 130 + level = 130, }, { -- ornate legs @@ -10267,15 +10264,15 @@ local items = { level = 185, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ornate legs itemid = 13999, type = "deequip", slot = "legs", - level = 185 + level = 185, }, { -- depth scutum @@ -10287,15 +10284,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- depth scutum itemid = 13998, type = "deequip", slot = "shield", - level = 120 + level = 120, }, { -- depth calcei @@ -10305,15 +10302,15 @@ local items = { level = 150, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- depth calcei itemid = 13997, type = "deequip", slot = "feet", - level = 150 + level = 150, }, { -- depth ocrea @@ -10325,29 +10322,29 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- depth ocrea itemid = 13996, type = "deequip", slot = "legs", - level = 130 + level = 130, }, { -- depth galea itemid = 13995, type = "equip", slot = "head", - level = 150 + level = 150, }, { -- depth galea itemid = 13995, type = "deequip", slot = "head", - level = 150 + level = 150, }, { -- depth lorica @@ -10357,15 +10354,15 @@ local items = { level = 150, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- depth lorica itemid = 13994, type = "deequip", slot = "armor", - level = 150 + level = 150, }, { -- ornate chestplate @@ -10375,79 +10372,79 @@ local items = { level = 200, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ornate chestplate itemid = 13993, type = "deequip", slot = "armor", - level = 200 + level = 200, }, { -- deepling axe itemid = 13991, type = "equip", slot = "hand", - level = 80 + level = 80, }, { -- deepling axe itemid = 13991, type = "deequip", - slot = "hand" + slot = "hand", }, { -- necklace of the deep itemid = 13990, type = "equip", slot = "necklace", - level = 120 + level = 120, }, { -- necklace of the deep itemid = 13990, type = "deequip", slot = "necklace", - level = 120 + level = 120, }, { -- deepling staff itemid = 13987, type = "equip", slot = "hand", - level = 38 + level = 38, }, { -- deepling staff itemid = 13987, type = "deequip", - slot = "hand" + slot = "hand", }, { -- the Epic Wisdom itemid = 12810, type = "equip", - slot = "head" + slot = "head", }, { -- the Epic Wisdom itemid = 12810, type = "deequip", - slot = "head" + slot = "head", }, { -- the Epic Wisdom itemid = 12809, type = "equip", - slot = "head" + slot = "head", }, { -- the Epic Wisdom itemid = 12809, type = "deequip", - slot = "head" + slot = "head", }, { -- shimmer wand @@ -10457,27 +10454,27 @@ local items = { level = 40, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- shimmer wand itemid = 12741, type = "deequip", slot = "hand", - level = 40 + level = 40, }, { -- broken ring of ending itemid = 12737, type = "equip", - slot = "ring" + slot = "ring", }, { -- broken ring of ending itemid = 12737, type = "deequip", - slot = "ring" + slot = "ring", }, { -- shimmer bow @@ -10487,14 +10484,14 @@ local items = { level = 40, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- shimmer bow itemid = 12733, type = "deequip", - slot = "hand" + slot = "hand", }, { -- shimmer rod @@ -10504,53 +10501,53 @@ local items = { level = 40, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- shimmer rod itemid = 12732, type = "deequip", slot = "hand", - level = 40 + level = 40, }, { -- shimmer sword itemid = 12731, type = "equip", slot = "hand", - level = 40 + level = 40, }, { -- shimmer sword itemid = 12731, type = "deequip", - slot = "hand" + slot = "hand", }, { -- heavy trident itemid = 12683, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- heavy trident itemid = 12683, type = "deequip", - slot = "hand" + slot = "hand", }, { -- wooden sword itemid = 12673, type = "equip", - slot = "hand" + slot = "hand", }, { -- wooden sword itemid = 12673, type = "deequip", - slot = "hand" + slot = "hand", }, { -- star ring @@ -10558,8 +10555,8 @@ local items = { type = "equip", slot = "ring", vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- star ring @@ -10567,8 +10564,8 @@ local items = { type = "deequip", slot = "ring", vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- star ring @@ -10576,8 +10573,8 @@ local items = { type = "equip", slot = "ring", vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- star ring @@ -10585,8 +10582,8 @@ local items = { type = "deequip", slot = "ring", vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- wand of dimensions @@ -10596,15 +10593,15 @@ local items = { level = 37, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of dimensions itemid = 12603, type = "deequip", slot = "hand", - level = 37 + level = 37, }, { -- mage's cap @@ -10615,113 +10612,113 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- mage's cap itemid = 12599, type = "deequip", - slot = "head" + slot = "head", }, { -- fish tail (equipped) itemid = 11543, type = "equip", - slot = "feet" + slot = "feet", }, { -- fish tail (equipped) itemid = 11543, type = "deequip", - slot = "feet" + slot = "feet", }, { -- golden hyena pendant itemid = 12543, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- golden hyena pendant itemid = 12543, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- golden scorpion pendant itemid = 12542, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- golden scorpion pendant itemid = 12542, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- old cape itemid = 11701, type = "equip", - slot = "armor" + slot = "armor", }, { -- old cape itemid = 11701, type = "deequip", - slot = "armor" + slot = "armor", }, { -- sedge hat itemid = 11700, type = "equip", - slot = "head" + slot = "head", }, { -- sedge hat itemid = 11700, type = "deequip", - slot = "head" + slot = "head", }, { -- loot bag itemid = 11698, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- loot bag itemid = 11698, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- blade of corruption itemid = 11693, type = "equip", slot = "hand", - level = 82 + level = 82, }, { -- blade of corruption itemid = 11693, type = "deequip", slot = "hand", - level = 82 + level = 82, }, { -- snake god's sceptre itemid = 11692, type = "equip", slot = "hand", - level = 82 + level = 82, }, { -- snake god's sceptre itemid = 11692, type = "deequip", - slot = "hand" + slot = "hand", }, { -- snake god's wristguard @@ -10733,15 +10730,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- snake god's wristguard itemid = 11691, type = "deequip", slot = "shield", - level = 100 + level = 100, }, { -- draken boots @@ -10753,15 +10750,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- draken boots itemid = 4033, type = "deequip", slot = "feet", - level = 80 + level = 80, }, { -- elite draken helmet @@ -10771,15 +10768,15 @@ local items = { level = 100, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- elite draken helmet itemid = 11689, type = "deequip", slot = "head", - level = 100 + level = 100, }, { -- shield of corruption @@ -10789,15 +10786,15 @@ local items = { level = 80, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- shield of corruption itemid = 11688, type = "deequip", slot = "shield", - level = 80 + level = 80, }, { -- royal scale robe @@ -10809,15 +10806,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- royal scale robe itemid = 11687, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- royal draken mail @@ -10827,15 +10824,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- royal draken mail itemid = 11686, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- cobra crown @@ -10846,14 +10843,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- cobra crown itemid = 11674, type = "deequip", - slot = "head" + slot = "head", }, { -- twiceslicer @@ -10863,14 +10860,14 @@ local items = { level = 58, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- twiceslicer itemid = 11657, type = "deequip", - slot = "hand" + slot = "hand", }, { -- elite draken mail @@ -10882,63 +10879,63 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- elite draken mail itemid = 11651, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- fish tail (unequipped) itemid = 11542, type = "equip", - slot = "feet" + slot = "feet", }, { -- fish tail (unequipped) itemid = 11542, type = "deequip", - slot = "feet" + slot = "feet", }, { -- ornamented brooch itemid = 11468, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- ornamented brooch itemid = 11468, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- lucky clover amulet itemid = 10476, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- lucky clover amulet itemid = 10476, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- beetle necklace itemid = 10457, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- beetle necklace itemid = 10457, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- jade hat @@ -10950,15 +10947,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- jade hat itemid = 10451, type = "deequip", slot = "head", - level = 60 + level = 60, }, { -- Zaoan robe @@ -10970,15 +10967,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- Zaoan robe itemid = 10439, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- spellweaver's robe @@ -10990,40 +10987,40 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellweaver's robe itemid = 10438, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- wailing widow's necklace itemid = 10412, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- wailing widow's necklace itemid = 10412, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- Zaoan halberd itemid = 10406, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- Zaoan halberd itemid = 10406, type = "deequip", - slot = "hand" + slot = "hand", }, { -- twin hooks @@ -11033,14 +11030,14 @@ local items = { level = 20, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- twin hooks itemid = 10392, type = "deequip", - slot = "hand" + slot = "hand", }, { -- drachaku @@ -11050,27 +11047,27 @@ local items = { level = 55, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- drachaku itemid = 10391, type = "deequip", - slot = "hand" + slot = "hand", }, { -- Zaoan sword itemid = 10390, type = "equip", slot = "hand", - level = 55 + level = 55, }, { -- Zaoan sword itemid = 10390, type = "deequip", - slot = "hand" + slot = "hand", }, { -- sai @@ -11080,51 +11077,51 @@ local items = { level = 50, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sai itemid = 10389, type = "deequip", - slot = "hand" + slot = "hand", }, { -- drakinata itemid = 10388, type = "equip", slot = "hand", - level = 60 + level = 60, }, { -- drakinata itemid = 10388, type = "deequip", - slot = "hand" + slot = "hand", }, { -- Zaoan legs itemid = 10387, type = "equip", - slot = "legs" + slot = "legs", }, { -- Zaoan legs itemid = 10387, type = "deequip", - slot = "legs" + slot = "legs", }, { -- zaoan shoes itemid = 10386, type = "equip", - slot = "feet" + slot = "feet", }, { -- zaoan shoes itemid = 10386, type = "deequip", - slot = "feet" + slot = "feet", }, { -- Zaoan helmet @@ -11135,14 +11132,14 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- Zaoan helmet itemid = 10385, type = "deequip", - slot = "head" + slot = "head", }, { -- Zaoan armor @@ -11154,75 +11151,75 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- Zaoan armor itemid = 10384, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- santa backpack itemid = 10346, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- santa backpack itemid = 10346, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- minotaur backpack itemid = 10327, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- minotaur backpack itemid = 10327, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- dragon backpack itemid = 10326, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- dragon backpack itemid = 10326, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- expedition bag itemid = 10325, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- expedition bag itemid = 10325, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- expedition backpack itemid = 10324, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- expedition backpack itemid = 10324, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- guardian boots @@ -11234,27 +11231,27 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- guardian boots itemid = 10323, type = "deequip", slot = "feet", - level = 70 + level = 70, }, { -- heart backpack itemid = 10202, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- heart backpack itemid = 10202, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- dragon scale boots @@ -11266,15 +11263,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- dragon scale boots itemid = 10201, type = "deequip", slot = "feet", - level = 70 + level = 70, }, { -- crystal boots @@ -11286,15 +11283,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crystal boots itemid = 10200, type = "deequip", slot = "feet", - level = 70 + level = 70, }, { -- witch hat @@ -11305,506 +11302,506 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- witch hat itemid = 9653, type = "deequip", - slot = "head" + slot = "head", }, { -- crown backpack itemid = 9605, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- crown backpack itemid = 9605, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- moon backpack itemid = 9604, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- moon backpack itemid = 9604, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- orange bag itemid = 9603, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- orange bag itemid = 9603, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- orange backpack itemid = 9602, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- orange backpack itemid = 9602, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- demon backpack itemid = 9601, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- demon backpack itemid = 9601, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- broken wedding ring itemid = 9593, type = "equip", - slot = "ring" + slot = "ring", }, { -- broken wedding ring itemid = 9593, type = "deequip", - slot = "ring" + slot = "ring", }, { -- engraved wedding ring itemid = 9585, type = "equip", - slot = "ring" + slot = "ring", }, { -- engraved wedding ring itemid = 9585, type = "deequip", - slot = "ring" + slot = "ring", }, { -- the shield Nevermourn itemid = 9447, type = "equip", - slot = "shield" + slot = "shield", }, { -- the shield Nevermourn itemid = 9447, type = "deequip", - slot = "shield" + slot = "shield", }, { -- the rain coat itemid = 9446, type = "equip", - slot = "armor" + slot = "armor", }, { -- the rain coat itemid = 9446, type = "deequip", - slot = "armor" + slot = "armor", }, { -- the shield Nevermourn itemid = 9401, type = "equip", - slot = "shield" + slot = "shield", }, { -- the shield Nevermourn itemid = 9401, type = "deequip", - slot = "shield" + slot = "shield", }, { -- the rain coat itemid = 9400, type = "equip", - slot = "armor" + slot = "armor", }, { -- the rain coat itemid = 9400, type = "deequip", - slot = "armor" + slot = "armor", }, { -- mighty helm of green sparks itemid = 9399, type = "equip", - slot = "head" + slot = "head", }, { -- mighty helm of green sparks itemid = 9399, type = "deequip", - slot = "head" + slot = "head", }, { -- incredible mumpiz slayer itemid = 9396, type = "equip", - slot = "hand" + slot = "hand", }, { -- incredible mumpiz slayer itemid = 9396, type = "deequip", - slot = "hand" + slot = "hand", }, { -- claw of 'The Noxious Spawn' itemid = 9394, type = "equip", slot = "ring", - level = 100 + level = 100, }, { -- claw of 'The Noxious Spawn' itemid = 9394, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- claw of 'The Noxious Spawn' itemid = 9392, type = "equip", slot = "ring", - level = 100 + level = 100, }, { -- claw of 'The Noxious Spawn' itemid = 9392, type = "deequip", slot = "ring", - level = 100 + level = 100, }, { -- poet's fencing quill itemid = 9387, type = "equip", - slot = "hand" + slot = "hand", }, { -- poet's fencing quill itemid = 9387, type = "deequip", - slot = "hand" + slot = "hand", }, { -- farmer's avenger itemid = 9386, type = "equip", - slot = "hand" + slot = "hand", }, { -- farmer's avenger itemid = 9386, type = "deequip", - slot = "hand" + slot = "hand", }, { -- club of the fury itemid = 9385, type = "equip", - slot = "hand" + slot = "hand", }, { -- club of the fury itemid = 9385, type = "deequip", - slot = "hand" + slot = "hand", }, { -- scythe of the reaper itemid = 9384, type = "equip", - slot = "hand" + slot = "hand", }, { -- scythe of the reaper itemid = 9384, type = "deequip", - slot = "hand" + slot = "hand", }, { -- trousers of the ancients itemid = 9383, type = "equip", - slot = "legs" + slot = "legs", }, { -- trousers of the ancients itemid = 9383, type = "deequip", - slot = "legs" + slot = "legs", }, { -- helmet of nature itemid = 9382, type = "equip", - slot = "head" + slot = "head", }, { -- helmet of nature itemid = 9382, type = "deequip", - slot = "head" + slot = "head", }, { -- helmet of ultimate terror itemid = 9381, type = "equip", - slot = "head" + slot = "head", }, { -- helmet of ultimate terror itemid = 9381, type = "deequip", - slot = "head" + slot = "head", }, { -- shield of care itemid = 9380, type = "equip", - slot = "shield" + slot = "shield", }, { -- shield of care itemid = 9380, type = "deequip", - slot = "shield" + slot = "shield", }, { -- heavy metal t-shirt itemid = 9379, type = "equip", - slot = "armor" + slot = "armor", }, { -- heavy metal t-shirt itemid = 9379, type = "deequip", - slot = "armor" + slot = "armor", }, { -- musician's bow itemid = 9378, type = "equip", - slot = "hand" + slot = "hand", }, { -- musician's bow itemid = 9378, type = "deequip", - slot = "hand" + slot = "hand", }, { -- shield of the white knight itemid = 9377, type = "equip", - slot = "shield" + slot = "shield", }, { -- shield of the white knight itemid = 9377, type = "deequip", - slot = "shield" + slot = "shield", }, { -- stale bread of ancientness itemid = 9376, type = "equip", - slot = "hand" + slot = "hand", }, { -- stale bread of ancientness itemid = 9376, type = "deequip", - slot = "hand" + slot = "hand", }, { -- pointed rabbitslayer itemid = 9375, type = "equip", - slot = "hand" + slot = "hand", }, { -- pointed rabbitslayer itemid = 9375, type = "deequip", - slot = "hand" + slot = "hand", }, { -- odd hat itemid = 9374, type = "equip", - slot = "head" + slot = "head", }, { -- odd hat itemid = 9374, type = "deequip", - slot = "head" + slot = "head", }, { -- glutton's mace itemid = 9373, type = "equip", - slot = "hand" + slot = "hand", }, { -- glutton's mace itemid = 9373, type = "deequip", - slot = "hand" + slot = "hand", }, { -- meat shield itemid = 9372, type = "equip", - slot = "shield" + slot = "shield", }, { -- meat shield itemid = 9372, type = "deequip", - slot = "shield" + slot = "shield", }, { -- shockwave amulet itemid = 9304, type = "equip", slot = "necklace", - level = 80 + level = 80, }, { -- shockwave amulet itemid = 9304, type = "deequip", slot = "necklace", - level = 80 + level = 80, }, { -- leviathan's amulet itemid = 9303, type = "equip", slot = "necklace", - level = 80 + level = 80, }, { -- leviathan's amulet itemid = 9303, type = "deequip", slot = "necklace", - level = 80 + level = 80, }, { -- sacred tree amulet itemid = 9302, type = "equip", slot = "necklace", - level = 80 + level = 80, }, { -- sacred tree amulet itemid = 9302, type = "deequip", slot = "necklace", - level = 80 + level = 80, }, { -- bonfire amulet itemid = 9301, type = "equip", slot = "necklace", - level = 80 + level = 80, }, { -- bonfire amulet itemid = 9301, type = "deequip", slot = "necklace", - level = 80 + level = 80, }, { -- laurel wreath itemid = 9221, type = "equip", - slot = "head" + slot = "head", }, { -- laurel wreath itemid = 9221, type = "deequip", - slot = "head" + slot = "head", }, { -- bronze medal itemid = 9217, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- bronze medal itemid = 9217, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- silver medal itemid = 9216, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- silver medal itemid = 9216, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- gold medal itemid = 9215, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- gold medal itemid = 9215, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- grey bag itemid = 9151, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- grey bag itemid = 9151, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- batwing hat @@ -11816,91 +11813,91 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- batwing hat itemid = 9103, type = "deequip", slot = "head", - level = 50 + level = 50, }, { -- pair firewalker boots itemid = 9019, type = "equip", slot = "feet", - level = 130 + level = 130, }, { -- pair firewalker boots itemid = 9019, type = "deequip", slot = "feet", - level = 130 + level = 130, }, { -- firewalker boots itemid = 9018, type = "equip", slot = "feet", - level = 130 + level = 130, }, { -- firewalker boots itemid = 9018, type = "deequip", slot = "feet", - level = 130 + level = 130, }, { -- coconut shoes itemid = 9017, type = "equip", - slot = "feet" + slot = "feet", }, { -- coconut shoes itemid = 9017, type = "deequip", - slot = "feet" + slot = "feet", }, { -- flower dress itemid = 9015, type = "equip", - slot = "armor" + slot = "armor", }, { -- flower dress itemid = 9015, type = "deequip", - slot = "armor" + slot = "armor", }, { -- leaf legs itemid = 9014, type = "equip", - slot = "legs" + slot = "legs", }, { -- leaf legs itemid = 9014, type = "deequip", - slot = "legs" + slot = "legs", }, { -- flower wreath itemid = 9013, type = "equip", - slot = "head" + slot = "head", }, { -- flower wreath itemid = 9013, type = "deequip", - slot = "head" + slot = "head", }, { -- yalahari mask @@ -11912,15 +11909,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- yalahari mask itemid = 8864, type = "deequip", slot = "head", - level = 80 + level = 80, }, { -- yalahari leg piece @@ -11930,15 +11927,15 @@ local items = { level = 80, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- yalahari leg piece itemid = 8863, type = "deequip", slot = "legs", - level = 80 + level = 80, }, { -- yalahari armor @@ -11948,63 +11945,63 @@ local items = { level = 80, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- yalahari armor itemid = 8862, type = "deequip", slot = "armor", - level = 80 + level = 80, }, { -- brocade bag itemid = 8861, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- brocade bag itemid = 8861, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- brocade backpack itemid = 8860, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- brocade backpack itemid = 8860, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- golden bag itemid = 655, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- golden bag itemid = 655, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- purple bag itemid = 653, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- purple bag itemid = 653, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- the calamity @@ -12014,40 +12011,40 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- the calamity itemid = 8104, type = "deequip", - slot = "hand" + slot = "hand", }, { -- the epiphany itemid = 8103, type = "equip", slot = "hand", - level = 120 + level = 120, }, { -- the epiphany itemid = 8103, type = "deequip", - slot = "hand" + slot = "hand", }, { -- emerald sword itemid = 8102, type = "equip", slot = "hand", - level = 100 + level = 100, }, { -- emerald sword itemid = 8102, type = "deequip", - slot = "hand" + slot = "hand", }, { -- the stomper @@ -12057,40 +12054,40 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- the stomper itemid = 8101, type = "deequip", - slot = "hand" + slot = "hand", }, { -- obsidian truncheon itemid = 8100, type = "equip", slot = "hand", - level = 100 + level = 100, }, { -- obsidian truncheon itemid = 8100, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dark trinity mace itemid = 8099, type = "equip", slot = "hand", - level = 120 + level = 120, }, { -- dark trinity mace itemid = 8099, type = "deequip", - slot = "hand" + slot = "hand", }, { -- demonwing axe @@ -12100,40 +12097,40 @@ local items = { level = 120, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- demonwing axe itemid = 8098, type = "deequip", - slot = "hand" + slot = "hand", }, { -- solar axe itemid = 8097, type = "equip", slot = "hand", - level = 130 + level = 130, }, { -- solar axe itemid = 8097, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hellforged axe itemid = 8096, type = "equip", slot = "hand", - level = 110 + level = 110, }, { -- hellforged axe itemid = 8096, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ranger legs @@ -12142,14 +12139,14 @@ local items = { slot = "legs", vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ranger legs itemid = 8095, type = "deequip", - slot = "legs" + slot = "legs", }, { -- wand of voodoo @@ -12159,15 +12156,15 @@ local items = { level = 42, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of voodoo itemid = 8094, type = "deequip", slot = "hand", - level = 42 + level = 42, }, { -- wand of draconia @@ -12177,15 +12174,15 @@ local items = { level = 22, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of draconia itemid = 8093, type = "deequip", slot = "hand", - level = 22 + level = 22, }, { -- wand of starstorm @@ -12195,15 +12192,15 @@ local items = { level = 37, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of starstorm itemid = 8092, type = "deequip", slot = "hand", - level = 37 + level = 37, }, { -- spellbook of dark mysteries @@ -12215,15 +12212,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of dark mysteries itemid = 8090, type = "deequip", slot = "shield", - level = 80 + level = 80, }, { -- springsprout rod @@ -12233,15 +12230,15 @@ local items = { level = 37, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- springsprout rod itemid = 8084, type = "deequip", slot = "hand", - level = 37 + level = 37, }, { -- northwind rod @@ -12251,15 +12248,15 @@ local items = { level = 22, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- northwind rod itemid = 8083, type = "deequip", slot = "hand", - level = 22 + level = 22, }, { -- underworld rod @@ -12269,15 +12266,15 @@ local items = { level = 42, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- underworld rod itemid = 8082, type = "deequip", slot = "hand", - level = 42 + level = 42, }, { -- terran rainbow shield @@ -12287,15 +12284,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- terran rainbow shield itemid = 8081, type = "deequip", slot = "shield", - level = 100 + level = 100, }, { -- sparking rainbow shield @@ -12305,15 +12302,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sparking rainbow shield itemid = 8080, type = "deequip", slot = "shield", - level = 100 + level = 100, }, { -- icy rainbow shield @@ -12323,15 +12320,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icy rainbow shield itemid = 8079, type = "deequip", slot = "shield", - level = 100 + level = 100, }, { -- fiery rainbow shield @@ -12341,15 +12338,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fiery rainbow shield itemid = 8078, type = "deequip", slot = "shield", - level = 100 + level = 100, }, { -- rainbow shield @@ -12359,15 +12356,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- rainbow shield itemid = 8077, type = "deequip", slot = "shield", - level = 100 + level = 100, }, { -- spellscroll of prophecies @@ -12379,15 +12376,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellscroll of prophecies itemid = 8076, type = "deequip", slot = "shield", - level = 70 + level = 70, }, { -- spellbook of lost souls @@ -12399,15 +12396,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of lost souls itemid = 8075, type = "deequip", slot = "shield", - level = 60 + level = 60, }, { -- spellbook of mind control @@ -12419,15 +12416,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of mind control itemid = 8074, type = "deequip", slot = "shield", - level = 50 + level = 50, }, { -- spellbook of warding @@ -12439,15 +12436,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of warding itemid = 8073, type = "deequip", slot = "shield", - level = 40 + level = 40, }, { -- spellbook of enlightenment @@ -12459,15 +12456,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook of enlightenment itemid = 8072, type = "deequip", slot = "shield", - level = 30 + level = 30, }, { -- ethno coat @@ -12478,14 +12475,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- ethno coat itemid = 8064, type = "deequip", - slot = "armor" + slot = "armor", }, { -- paladin armor @@ -12494,14 +12491,14 @@ local items = { slot = "armor", vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- paladin armor itemid = 8063, type = "deequip", - slot = "armor" + slot = "armor", }, { -- robe of the underworld @@ -12511,15 +12508,15 @@ local items = { level = 100, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- robe of the underworld itemid = 8062, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- skullcracker armor @@ -12529,15 +12526,15 @@ local items = { level = 85, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- skullcracker armor itemid = 8061, type = "deequip", slot = "armor", - level = 85 + level = 85, }, { -- master archer's armor @@ -12547,15 +12544,15 @@ local items = { level = 100, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- master archer's armor itemid = 8060, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- frozen plate @@ -12565,15 +12562,15 @@ local items = { level = 75, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- frozen plate itemid = 8059, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- molten plate @@ -12583,15 +12580,15 @@ local items = { level = 75, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- molten plate itemid = 8058, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- divine plate @@ -12601,15 +12598,15 @@ local items = { level = 75, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- divine plate itemid = 8057, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- oceanborn leviathan armor @@ -12619,15 +12616,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- oceanborn leviathan armor itemid = 8056, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- windborn colossus armor @@ -12637,15 +12634,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- windborn colossus armor itemid = 8055, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- earthborn titan armor @@ -12655,15 +12652,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earthborn titan armor itemid = 8054, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- fireborn giant armor @@ -12673,15 +12670,15 @@ local items = { level = 100, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fireborn giant armor itemid = 8053, type = "deequip", slot = "armor", - level = 100 + level = 100, }, { -- swamplair armor @@ -12693,15 +12690,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- swamplair armor itemid = 8052, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- voltage armor @@ -12713,15 +12710,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- voltage armor itemid = 8051, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- crystalline armor @@ -12733,15 +12730,15 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crystalline armor itemid = 8050, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- lavos armor @@ -12753,63 +12750,63 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- lavos armor itemid = 8049, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- girl's dress itemid = 8048, type = "equip", - slot = "armor" + slot = "armor", }, { -- girl's dress itemid = 8048, type = "deequip", - slot = "armor" + slot = "armor", }, { -- tunic itemid = 8047, type = "equip", - slot = "armor" + slot = "armor", }, { -- tunic itemid = 8047, type = "deequip", - slot = "armor" + slot = "armor", }, { -- summer dress itemid = 8046, type = "equip", - slot = "armor" + slot = "armor", }, { -- summer dress itemid = 8046, type = "deequip", - slot = "armor" + slot = "armor", }, { -- hibiscus dress itemid = 8045, type = "equip", - slot = "armor" + slot = "armor", }, { -- hibiscus dress itemid = 8045, type = "deequip", - slot = "armor" + slot = "armor", }, { -- belted cape @@ -12818,14 +12815,14 @@ local items = { slot = "armor", vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- belted cape itemid = 8044, type = "deequip", - slot = "armor" + slot = "armor", }, { -- focus cape @@ -12836,14 +12833,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- focus cape itemid = 8043, type = "deequip", - slot = "armor" + slot = "armor", }, { -- spirit cloak @@ -12854,14 +12851,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spirit cloak itemid = 8042, type = "deequip", - slot = "armor" + slot = "armor", }, { -- greenwood coat @@ -12871,15 +12868,15 @@ local items = { level = 75, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- greenwood coat itemid = 8041, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- velvet mantle @@ -12889,15 +12886,15 @@ local items = { level = 75, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- velvet mantle itemid = 8040, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- dragon robe @@ -12907,15 +12904,15 @@ local items = { level = 75, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- dragon robe itemid = 8039, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- robe of the ice queen @@ -12925,15 +12922,15 @@ local items = { level = 75, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- robe of the ice queen itemid = 8038, type = "deequip", slot = "armor", - level = 75 + level = 75, }, { -- dark lord's cape @@ -12943,15 +12940,15 @@ local items = { level = 65, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- dark lord's cape itemid = 8037, type = "deequip", slot = "armor", - level = 65 + level = 65, }, { -- elethriel's elemental bow @@ -12961,14 +12958,14 @@ local items = { level = 70, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- elethriel's elemental bow itemid = 8030, type = "deequip", - slot = "hand" + slot = "hand", }, { -- silkweaver bow @@ -12978,14 +12975,14 @@ local items = { level = 40, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- silkweaver bow itemid = 8029, type = "deequip", - slot = "hand" + slot = "hand", }, { -- yol's bow @@ -12995,14 +12992,14 @@ local items = { level = 60, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- yol's bow itemid = 8028, type = "deequip", - slot = "hand" + slot = "hand", }, { -- composite hornbow @@ -13012,14 +13009,14 @@ local items = { level = 50, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- composite hornbow itemid = 8027, type = "deequip", - slot = "hand" + slot = "hand", }, { -- warsinger bow @@ -13029,14 +13026,14 @@ local items = { level = 80, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- warsinger bow itemid = 8026, type = "deequip", - slot = "hand" + slot = "hand", }, { -- The ironworker @@ -13046,14 +13043,14 @@ local items = { level = 80, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- The ironworker itemid = 8025, type = "deequip", - slot = "hand" + slot = "hand", }, { -- The Devileye @@ -13063,8 +13060,8 @@ local items = { level = 100, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- The Devileye @@ -13074,8 +13071,8 @@ local items = { level = 100, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- royal crossbow @@ -13085,14 +13082,14 @@ local items = { level = 130, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- royal crossbow itemid = 8023, type = "deequip", - slot = "hand" + slot = "hand", }, { -- chain bolter @@ -13102,14 +13099,14 @@ local items = { level = 60, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- chain bolter itemid = 8022, type = "deequip", - slot = "hand" + slot = "hand", }, { -- modified crossbow @@ -13119,28 +13116,28 @@ local items = { level = 45, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- modified crossbow itemid = 8021, type = "deequip", - slot = "hand" + slot = "hand", }, { -- witchhunter's coat itemid = 7993, type = "equip", slot = "armor", - level = 50 + level = 50, }, { -- witchhunter's coat itemid = 7993, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- mage hat @@ -13151,14 +13148,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- mage hat itemid = 7992, type = "deequip", - slot = "head" + slot = "head", }, { -- magician's robe @@ -13169,134 +13166,134 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- magician's robe itemid = 7991, type = "deequip", - slot = "armor" + slot = "armor", }, { -- jagged sword itemid = 7774, type = "equip", - slot = "hand" + slot = "hand", }, { -- jagged sword itemid = 7774, type = "deequip", - slot = "hand" + slot = "hand", }, { -- steel axe itemid = 7773, type = "equip", - slot = "hand" + slot = "hand", }, { -- steel axe itemid = 7773, type = "deequip", - slot = "hand" + slot = "hand", }, { -- Jerom's family necklace itemid = 7754, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- Jerom's family necklace itemid = 7754, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- Koshei's ancient amulet itemid = 7532, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- Koshei's ancient amulet itemid = 7532, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- viper star itemid = 7366, type = "equip", - slot = "hand" + slot = "hand", }, { -- viper star itemid = 7366, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crimson sword itemid = 860, type = "equip", - slot = "hand" + slot = "hand", }, { -- crimson sword itemid = 860, type = "deequip", - slot = "hand" + slot = "hand", }, { -- shapeshifter ring itemid = 908, type = "equip", - slot = "ring" + slot = "ring", }, { -- shapeshifter ring itemid = 908, type = "deequip", - slot = "ring" + slot = "ring", }, { -- shapeshifter ring itemid = 907, type = "equip", - slot = "ring" + slot = "ring", }, { -- shapeshifter ring itemid = 907, type = "deequip", - slot = "ring" + slot = "ring", }, { -- Throwing Cake itemid = 904, type = "equip", - slot = "ring" + slot = "ring", }, { -- Throwing Cake itemid = 904, type = "deequip", - slot = "ring" + slot = "ring", }, { -- jester hat itemid = 894, type = "equip", - slot = "head" + slot = "head", }, { -- jester hat itemid = 894, type = "deequip", - slot = "head" + slot = "head", }, { -- terra hood @@ -13307,14 +13304,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- terra hood itemid = 830, type = "deequip", - slot = "head" + slot = "head", }, { -- glacier mask @@ -13325,14 +13322,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glacier mask itemid = 829, type = "deequip", - slot = "head" + slot = "head", }, { -- lightning headband @@ -13343,14 +13340,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lightning headband itemid = 828, type = "deequip", - slot = "head" + slot = "head", }, { -- magma monocle @@ -13361,14 +13358,14 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- magma monocle itemid = 827, type = "deequip", - slot = "head" + slot = "head", }, { -- magma coat @@ -13380,15 +13377,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- magma coat itemid = 826, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- lightning robe @@ -13400,15 +13397,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lightning robe itemid = 825, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- glacier robe @@ -13420,15 +13417,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glacier robe itemid = 824, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- glacier kilt @@ -13440,15 +13437,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glacier kilt itemid = 823, type = "deequip", slot = "legs", - level = 40 + level = 40, }, { -- lightning legs @@ -13460,15 +13457,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lightning legs itemid = 822, type = "deequip", slot = "legs", - level = 40 + level = 40, }, { -- magma legs @@ -13480,15 +13477,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- magma legs itemid = 821, type = "deequip", slot = "legs", - level = 40 + level = 40, }, { -- lightning boots @@ -13500,15 +13497,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lightning boots itemid = 820, type = "deequip", slot = "feet", - level = 35 + level = 35, }, { -- glacier shoes @@ -13520,15 +13517,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- glacier shoes itemid = 819, type = "deequip", slot = "feet", - level = 35 + level = 35, }, { -- magma boots @@ -13540,71 +13537,71 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- magma boots itemid = 818, type = "deequip", slot = "feet", - level = 35 + level = 35, }, { -- magma amulet itemid = 817, type = "equip", slot = "necklace", - level = 60 + level = 60, }, { -- magma amulet itemid = 817, type = "deequip", slot = "necklace", - level = 60 + level = 60, }, { -- lightning pendant itemid = 816, type = "equip", slot = "necklace", - level = 60 + level = 60, }, { -- lightning pendant itemid = 816, type = "deequip", slot = "necklace", - level = 60 + level = 60, }, { -- glacier amulet itemid = 815, type = "equip", slot = "necklace", - level = 60 + level = 60, }, { -- glacier amulet itemid = 815, type = "deequip", slot = "necklace", - level = 60 + level = 60, }, { -- terra amulet itemid = 814, type = "equip", slot = "necklace", - level = 60 + level = 60, }, { -- terra amulet itemid = 814, type = "deequip", slot = "necklace", - level = 60 + level = 60, }, { -- terra boots @@ -13616,15 +13613,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- terra boots itemid = 813, type = "deequip", slot = "feet", - level = 35 + level = 35, }, { -- terra legs @@ -13636,15 +13633,15 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- terra legs itemid = 812, type = "deequip", slot = "legs", - level = 40 + level = 40, }, { -- terra mantle @@ -13656,136 +13653,136 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- terra mantle itemid = 811, type = "deequip", slot = "armor", - level = 50 + level = 50, }, { -- energy war hammer itemid = 810, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy war hammer itemid = 810, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy orcish maul itemid = 809, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy orcish maul itemid = 809, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy cranial basher itemid = 808, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy cranial basher itemid = 808, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy crystal mace itemid = 807, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy crystal mace itemid = 807, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy clerical mace itemid = 806, type = "equip", slot = "hand", - level = 20 + level = 20, }, { -- energy clerical mace itemid = 806, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy war axe itemid = 805, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy war axe itemid = 805, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy headchopper itemid = 804, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy headchopper itemid = 804, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy heroic axe itemid = 803, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy heroic axe itemid = 803, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy knight axe itemid = 802, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy knight axe itemid = 802, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy barbarian axe itemid = 801, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy barbarian axe itemid = 801, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy dragon slayer @@ -13795,821 +13792,821 @@ local items = { level = 45, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- energy dragon slayer itemid = 798, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy blacksteel sword itemid = 797, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy blacksteel sword itemid = 797, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy mystic blade itemid = 796, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy mystic blade itemid = 796, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy relic sword itemid = 795, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy relic sword itemid = 795, type = "deequip", - slot = "hand" + slot = "hand", }, { -- energy spike sword itemid = 794, type = "equip", - slot = "hand" + slot = "hand", }, { -- energy spike sword itemid = 794, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth war hammer itemid = 793, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth war hammer itemid = 793, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth orcish maul itemid = 792, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth orcish maul itemid = 792, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth cranial basher itemid = 791, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth cranial basher itemid = 791, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth crystal mace itemid = 790, type = "equip", slot = "hand", - level = 35 + level = 35, }, { -- earth crystal mace itemid = 790, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth clerical mace itemid = 789, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth clerical mace itemid = 789, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth war axe itemid = 788, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth war axe itemid = 788, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth headchopper itemid = 787, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth headchopper itemid = 787, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth heroic axe itemid = 786, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth heroic axe itemid = 786, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth knight axe itemid = 785, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth knight axe itemid = 785, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth barbarian axe itemid = 784, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth barbarian axe itemid = 784, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth dragon slayer itemid = 783, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth dragon slayer itemid = 783, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth blacksteel sword itemid = 782, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth blacksteel sword itemid = 782, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth mystic blade itemid = 781, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth mystic blade itemid = 781, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth relic sword itemid = 780, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth relic sword itemid = 780, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth spike sword itemid = 779, type = "equip", - slot = "hand" + slot = "hand", }, { -- earth spike sword itemid = 779, type = "deequip", - slot = "hand" + slot = "hand", }, { -- earth arrow itemid = 774, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- earth arrow itemid = 774, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- flaming arrow itemid = 763, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- flaming arrow itemid = 763, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- shiver arrow itemid = 762, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- shiver arrow itemid = 762, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- flash arrow itemid = 761, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- flash arrow itemid = 761, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- icy war hammer itemid = 693, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy war hammer itemid = 693, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy orcish maul itemid = 692, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy orcish maul itemid = 692, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy cranial basher itemid = 691, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy cranial basher itemid = 691, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy crystal mace itemid = 690, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy crystal mace itemid = 690, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy clerical mace itemid = 689, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy clerical mace itemid = 689, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy war axe itemid = 688, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy war axe itemid = 688, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy headchopper itemid = 687, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy headchopper itemid = 687, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy heroic axe itemid = 686, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy heroic axe itemid = 686, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy knight axe itemid = 685, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy knight axe itemid = 685, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy barbarian axe itemid = 684, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy barbarian axe itemid = 684, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy dragon slayer itemid = 683, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy dragon slayer itemid = 683, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy blacksteel sword itemid = 682, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy blacksteel sword itemid = 682, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy mystic blade itemid = 681, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy mystic blade itemid = 681, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy relic sword itemid = 680, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy relic sword itemid = 680, type = "deequip", - slot = "hand" + slot = "hand", }, { -- icy spike sword itemid = 679, type = "equip", - slot = "hand" + slot = "hand", }, { -- icy spike sword itemid = 679, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery war hammer itemid = 674, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery war hammer itemid = 674, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery orcish maul itemid = 673, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery orcish maul itemid = 673, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery cranial basher itemid = 672, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery cranial basher itemid = 672, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery crystal mace itemid = 671, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery crystal mace itemid = 671, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery clerical mace itemid = 670, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery clerical mace itemid = 670, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery war axe itemid = 669, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery war axe itemid = 669, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery headchopper itemid = 668, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery headchopper itemid = 668, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery heroic axe itemid = 667, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery heroic axe itemid = 667, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery knight axe itemid = 666, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery knight axe itemid = 666, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery barbarian axe itemid = 665, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery barbarian axe itemid = 665, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery dragon slayer itemid = 664, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery dragon slayer itemid = 664, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery blacksteel sword itemid = 663, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery blacksteel sword itemid = 663, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery mystic blade itemid = 662, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery mystic blade itemid = 662, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery relic sword itemid = 661, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery relic sword itemid = 661, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fiery spike sword itemid = 660, type = "equip", - slot = "hand" + slot = "hand", }, { -- fiery spike sword itemid = 660, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blue legs itemid = 645, type = "equip", - slot = "legs" + slot = "legs", }, { -- blue legs itemid = 645, type = "deequip", - slot = "legs" + slot = "legs", }, { -- family signet ring itemid = 406, type = "equip", - slot = "ring" + slot = "ring", }, { -- family signet ring itemid = 406, type = "deequip", - slot = "ring" + slot = "ring", }, { -- suspicious signet ring itemid = 349, type = "equip", - slot = "ring" + slot = "ring", }, { -- suspicious signet ring itemid = 349, type = "deequip", - slot = "ring" + slot = "ring", }, { -- mining helmet itemid = 875, type = "equip", - slot = "head" + slot = "head", }, { -- mining helmet itemid = 875, type = "deequip", - slot = "head" + slot = "head", }, { -- mammoth fur shorts itemid = 7464, type = "equip", - slot = "legs" + slot = "legs", }, { -- mammoth fur shorts itemid = 7464, type = "deequip", - slot = "legs" + slot = "legs", }, { -- mammoth fur cape itemid = 7463, type = "equip", - slot = "armor" + slot = "armor", }, { -- mammoth fur cape itemid = 7463, type = "deequip", - slot = "armor" + slot = "armor", }, { -- ragnir helmet itemid = 7462, type = "equip", - slot = "head" + slot = "head", }, { -- ragnir helmet itemid = 7462, type = "deequip", - slot = "head" + slot = "head", }, { -- krimhorn helmet itemid = 7461, type = "equip", - slot = "head" + slot = "head", }, { -- krimhorn helmet itemid = 7461, type = "deequip", - slot = "head" + slot = "head", }, { -- norse shield itemid = 7460, type = "equip", - slot = "shield" + slot = "shield", }, { -- norse shield itemid = 7460, type = "deequip", - slot = "shield" + slot = "shield", }, { -- pair of earmuffs itemid = 7459, type = "equip", - slot = "head" + slot = "head", }, { -- pair of earmuffs itemid = 7459, type = "deequip", - slot = "head" + slot = "head", }, { -- fur cap itemid = 7458, type = "equip", - slot = "head" + slot = "head", }, { -- fur cap itemid = 7458, type = "deequip", - slot = "head" + slot = "head", }, { -- fur boots itemid = 7457, type = "equip", - slot = "feet" + slot = "feet", }, { -- fur boots itemid = 7457, type = "deequip", - slot = "feet" + slot = "feet", }, { -- noble axe itemid = 7456, type = "equip", slot = "hand", - level = 35 + level = 35, }, { -- noble axe itemid = 7456, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mythril axe itemid = 7455, type = "equip", slot = "hand", - level = 80 + level = 80, }, { -- mythril axe itemid = 7455, type = "deequip", - slot = "hand" + slot = "hand", }, { -- glorious axe @@ -14619,14 +14616,14 @@ local items = { level = 30, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- glorious axe itemid = 7454, type = "deequip", - slot = "hand" + slot = "hand", }, { -- executioner @@ -14636,14 +14633,14 @@ local items = { level = 85, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- executioner itemid = 7453, type = "deequip", - slot = "hand" + slot = "hand", }, { -- spiked squelcher @@ -14653,27 +14650,27 @@ local items = { level = 30, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spiked squelcher itemid = 7452, type = "deequip", - slot = "hand" + slot = "hand", }, { -- shadow sceptre itemid = 7451, type = "equip", slot = "hand", - level = 35 + level = 35, }, { -- shadow sceptre itemid = 7451, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hammer of prophecy @@ -14683,14 +14680,14 @@ local items = { level = 120, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- hammer of prophecy itemid = 7450, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crystal sword @@ -14700,39 +14697,39 @@ local items = { level = 25, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crystal sword itemid = 7449, type = "deequip", - slot = "hand" + slot = "hand", }, { -- elvish bow itemid = 7438, type = "equip", - slot = "hand" + slot = "hand", }, { -- elvish bow itemid = 7438, type = "deequip", - slot = "hand" + slot = "hand", }, { -- sapphire hammer itemid = 7437, type = "equip", slot = "hand", - level = 30 + level = 30, }, { -- sapphire hammer itemid = 7437, type = "deequip", - slot = "hand" + slot = "hand", }, { -- angelic axe @@ -14742,105 +14739,105 @@ local items = { level = 45, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- angelic axe itemid = 7436, type = "deequip", - slot = "hand" + slot = "hand", }, { -- impaler itemid = 7435, type = "equip", slot = "hand", - level = 85 + level = 85, }, { -- impaler itemid = 7435, type = "deequip", - slot = "hand" + slot = "hand", }, { -- royal axe itemid = 7434, type = "equip", slot = "hand", - level = 75 + level = 75, }, { -- royal axe itemid = 7434, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ravenwing itemid = 7433, type = "equip", slot = "hand", - level = 65 + level = 65, }, { -- ravenwing itemid = 7433, type = "deequip", - slot = "hand" + slot = "hand", }, { -- furry club itemid = 7432, type = "equip", slot = "hand", - level = 20 + level = 20, }, { -- furry club itemid = 7432, type = "deequip", - slot = "hand" + slot = "hand", }, { -- demonbone itemid = 7431, type = "equip", slot = "hand", - level = 80 + level = 80, }, { -- demonbone itemid = 7431, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dragonbone staff itemid = 7430, type = "equip", slot = "hand", - level = 30 + level = 30, }, { -- dragonbone staff itemid = 7430, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blessed sceptre itemid = 7429, type = "equip", slot = "hand", - level = 75 + level = 75, }, { -- blessed sceptre itemid = 7429, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bonebreaker @@ -14850,66 +14847,66 @@ local items = { level = 55, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- bonebreaker itemid = 7428, type = "deequip", - slot = "hand" + slot = "hand", }, { -- chaos mace itemid = 7427, type = "equip", slot = "hand", - level = 45 + level = 45, }, { -- chaos mace itemid = 7427, type = "deequip", - slot = "hand" + slot = "hand", }, { -- amber staff itemid = 7426, type = "equip", slot = "hand", - level = 40 + level = 40, }, { -- amber staff itemid = 7426, type = "deequip", - slot = "hand" + slot = "hand", }, { -- taurus mace itemid = 7425, type = "equip", slot = "hand", - level = 20 + level = 20, }, { -- taurus mace itemid = 7425, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lunar staff itemid = 7424, type = "equip", slot = "hand", - level = 30 + level = 30, }, { -- lunar staff itemid = 7424, type = "deequip", - slot = "hand" + slot = "hand", }, { -- skullcrusher @@ -14919,119 +14916,119 @@ local items = { level = 85, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- skullcrusher itemid = 7423, type = "deequip", - slot = "hand" + slot = "hand", }, { -- jade hammer itemid = 7422, type = "equip", slot = "hand", - level = 70 + level = 70, }, { -- jade hammer itemid = 7422, type = "deequip", - slot = "hand" + slot = "hand", }, { -- onyx flail itemid = 7421, type = "equip", slot = "hand", - level = 65 + level = 65, }, { -- onyx flail itemid = 7421, type = "deequip", - slot = "hand" + slot = "hand", }, { -- reaper's axe itemid = 7420, type = "equip", slot = "hand", - level = 70 + level = 70, }, { -- reaper's axe itemid = 7420, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dreaded cleaver itemid = 7419, type = "equip", slot = "hand", - level = 40 + level = 40, }, { -- dreaded cleaver itemid = 7419, type = "deequip", - slot = "hand" + slot = "hand", }, { -- nightmare blade itemid = 7418, type = "equip", slot = "hand", - level = 70 + level = 70, }, { -- nightmare blade itemid = 7418, type = "deequip", - slot = "hand" + slot = "hand", }, { -- runed sword itemid = 7417, type = "equip", slot = "hand", - level = 65 + level = 65, }, { -- runed sword itemid = 7417, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bloody edge itemid = 7416, type = "equip", slot = "hand", - level = 55 + level = 55, }, { -- bloody edge itemid = 7416, type = "deequip", slot = "hand", - level = 55 + level = 55, }, { -- cranial basher itemid = 7415, type = "equip", slot = "hand", - level = 60 + level = 60, }, { -- cranial basher itemid = 7415, type = "deequip", - slot = "hand" + slot = "hand", }, { -- abyss hammer @@ -15041,14 +15038,14 @@ local items = { level = 60, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- abyss hammer itemid = 7414, type = "deequip", - slot = "hand" + slot = "hand", }, { -- titan axe @@ -15058,79 +15055,79 @@ local items = { level = 40, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- titan axe itemid = 7413, type = "deequip", - slot = "hand" + slot = "hand", }, { -- butcher's axe itemid = 7412, type = "equip", slot = "hand", - level = 45 + level = 45, }, { -- butcher's axe itemid = 7412, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ornamented axe itemid = 7411, type = "equip", slot = "hand", - level = 50 + level = 50, }, { -- ornamented axe itemid = 7411, type = "deequip", - slot = "hand" + slot = "hand", }, { -- queen's sceptre itemid = 7410, type = "equip", slot = "hand", - level = 55 + level = 55, }, { -- queen's sceptre itemid = 7410, type = "deequip", - slot = "hand" + slot = "hand", }, { -- northern star itemid = 7409, type = "equip", slot = "hand", - level = 50 + level = 50, }, { -- northern star itemid = 7409, type = "deequip", - slot = "hand" + slot = "hand", }, { -- wyvern fang itemid = 7408, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- wyvern fang itemid = 7408, type = "deequip", - slot = "hand" + slot = "hand", }, { -- haunted blade @@ -15140,14 +15137,14 @@ local items = { level = 30, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- haunted blade itemid = 7407, type = "deequip", - slot = "hand" + slot = "hand", }, { -- blacksteel sword @@ -15157,15 +15154,15 @@ local items = { level = 35, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- blacksteel sword itemid = 7406, type = "deequip", slot = "hand", - level = 35 + level = 35, }, { -- havoc blade @@ -15175,35 +15172,35 @@ local items = { level = 70, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- havoc blade itemid = 7405, type = "deequip", - slot = "hand" + slot = "hand", }, { -- assassin dagger itemid = 7404, type = "equip", slot = "hand", - level = 40 + level = 40, }, { -- assassin dagger itemid = 7404, type = "deequip", slot = "hand", - level = 40 + level = 40, }, { -- berserker itemid = 7403, type = "equip", slot = "hand", - level = 65 + level = 65, }, { -- berserker @@ -15213,8 +15210,8 @@ local items = { level = 65, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- dragon slayer @@ -15224,27 +15221,27 @@ local items = { level = 45, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- dragon slayer itemid = 7402, type = "deequip", - slot = "hand" + slot = "hand", }, { -- orcish maul itemid = 7392, type = "equip", slot = "hand", - level = 35 + level = 35, }, { -- orcish maul itemid = 7392, type = "deequip", - slot = "hand" + slot = "hand", }, { -- thaian sword @@ -15254,66 +15251,66 @@ local items = { level = 50, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- thaian sword itemid = 7391, type = "deequip", - slot = "hand" + slot = "hand", }, { -- the justice seeker itemid = 7390, type = "equip", slot = "hand", - level = 75 + level = 75, }, { -- the justice seeker itemid = 7390, type = "deequip", - slot = "hand" + slot = "hand", }, { -- heroic axe itemid = 7389, type = "equip", slot = "hand", - level = 60 + level = 60, }, { -- heroic axe itemid = 7389, type = "deequip", - slot = "hand" + slot = "hand", }, { -- vile axe itemid = 7388, type = "equip", slot = "hand", - level = 55 + level = 55, }, { -- vile axe itemid = 7388, type = "deequip", - slot = "hand" + slot = "hand", }, { -- diamond sceptre itemid = 7387, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- diamond sceptre itemid = 7387, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mercenary sword @@ -15323,54 +15320,54 @@ local items = { level = 40, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mercenary sword itemid = 7386, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crimson sword itemid = 7385, type = "equip", slot = "hand", - level = 20 + level = 20, }, { -- crimson sword itemid = 7385, type = "deequip", slot = "hand", - level = 20 + level = 20, }, { -- mystic blade itemid = 7384, type = "equip", slot = "hand", - level = 60 + level = 60, }, { -- mystic blade itemid = 7384, type = "deequip", - slot = "hand" + slot = "hand", }, { -- relic sword itemid = 7383, type = "equip", slot = "hand", - level = 50 + level = 50, }, { -- relic sword itemid = 7383, type = "deequip", - slot = "hand" + slot = "hand", }, { -- demonrage sword @@ -15380,27 +15377,27 @@ local items = { level = 60, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- demonrage sword itemid = 7382, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mammoth whopper itemid = 7381, type = "equip", slot = "hand", - level = 20 + level = 20, }, { -- mammoth whopper itemid = 7381, type = "deequip", - slot = "hand" + slot = "hand", }, { -- headchopper @@ -15410,151 +15407,151 @@ local items = { level = 35, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- headchopper itemid = 7380, type = "deequip", - slot = "hand" + slot = "hand", }, { -- brutetamer's staff itemid = 7379, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- brutetamer's staff itemid = 7379, type = "deequip", - slot = "hand" + slot = "hand", }, { -- royal spear itemid = 7378, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- royal spear itemid = 7378, type = "deequip", slot = "hand", - level = 25 + level = 25, }, { -- assassin star itemid = 7368, type = "equip", slot = "hand", - level = 80 + level = 80, }, { -- assassin star itemid = 7368, type = "deequip", slot = "hand", - level = 80 + level = 80, }, { -- enchanted spear itemid = 7367, type = "equip", slot = "hand", - level = 42 + level = 42, }, { -- enchanted spear itemid = 7367, type = "deequip", slot = "hand", - level = 42 + level = 42, }, { -- onyx arrow itemid = 7365, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- onyx arrow itemid = 7365, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- sniper arrow itemid = 7364, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- sniper arrow itemid = 7364, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- piercing bolt itemid = 7363, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- piercing bolt itemid = 7363, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- flame of life itemid = 7360, - type = "additem" + type = "additem", }, { -- flame of life itemid = 7359, - type = "stepin" + type = "stepin", }, { -- fur bag itemid = 7343, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- fur bag itemid = 7343, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- fur backpack itemid = 7342, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- fur backpack itemid = 7342, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- party hat itemid = 6578, type = "equip", - slot = "head" + slot = "head", }, { -- party hat itemid = 6578, type = "deequip", - slot = "head" + slot = "head", }, { -- ruthless axe @@ -15564,38 +15561,38 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ruthless axe itemid = 6553, type = "deequip", - slot = "hand" + slot = "hand", }, { -- santa hat itemid = 6531, type = "equip", - slot = "head" + slot = "head", }, { -- santa hat itemid = 6531, type = "deequip", - slot = "head" + slot = "head", }, { -- infernal bolt itemid = 6528, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- infernal bolt itemid = 6528, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- the avenger @@ -15605,218 +15602,218 @@ local items = { level = 75, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- the avenger itemid = 6527, type = "deequip", - slot = "hand" + slot = "hand", }, { -- necromancer shield itemid = 6432, type = "equip", - slot = "shield" + slot = "shield", }, { -- necromancer shield itemid = 6432, type = "deequip", - slot = "shield" + slot = "shield", }, { -- nightmare shield itemid = 6390, type = "equip", - slot = "shield" + slot = "shield", }, { -- nightmare shield itemid = 6390, type = "deequip", - slot = "shield" + slot = "shield", }, { -- death ring itemid = 6300, type = "equip", - slot = "ring" + slot = "ring", }, { -- death ring itemid = 6300, type = "deequip", - slot = "ring" + slot = "ring", }, { -- death ring itemid = 6299, type = "equip", - slot = "ring" + slot = "ring", }, { -- death ring itemid = 6299, type = "deequip", - slot = "ring" + slot = "ring", }, { -- pair of soft boots itemid = 6529, type = "equip", - slot = "feet" + slot = "feet", }, { -- pair of soft boots itemid = 6529, type = "deequip", - slot = "feet" + slot = "feet", }, { -- tortoise shield itemid = 6131, type = "equip", - slot = "shield" + slot = "shield", }, { -- tortoise shield itemid = 6131, type = "deequip", - slot = "shield" + slot = "shield", }, { -- Dragha's spellbook itemid = 6120, type = "equip", - slot = "shield" + slot = "shield", }, { -- Dragha's spellbook itemid = 6120, type = "deequip", - slot = "shield" + slot = "shield", }, { -- Ron the Ripper's sabre itemid = 6101, type = "equip", - slot = "hand" + slot = "hand", }, { -- Ron the Ripper's sabre itemid = 6101, type = "deequip", - slot = "hand" + slot = "hand", }, { -- pirate hat itemid = 6096, type = "equip", - slot = "head" + slot = "head", }, { -- pirate hat itemid = 6096, type = "deequip", - slot = "head" + slot = "head", }, { -- pirate shirt itemid = 6095, type = "equip", - slot = "armor" + slot = "armor", }, { -- pirate shirt itemid = 6095, type = "deequip", - slot = "armor" + slot = "armor", }, { -- beach bag itemid = 5950, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- beach bag itemid = 5950, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- beach backpack itemid = 5949, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- beach backpack itemid = 5949, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- pirate bag itemid = 5927, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- pirate bag itemid = 5927, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- pirate backpack itemid = 5926, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- pirate backpack itemid = 5926, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- pirate knee breeches itemid = 5918, type = "equip", - slot = "legs" + slot = "legs", }, { -- pirate knee breeches itemid = 5918, type = "deequip", - slot = "legs" + slot = "legs", }, { -- bandana itemid = 5917, type = "equip", - slot = "head" + slot = "head", }, { -- bandana itemid = 5917, type = "deequip", - slot = "head" + slot = "head", }, { -- Ferumbras' hat itemid = 5903, type = "equip", - slot = "head" + slot = "head", }, { -- Ferumbras' hat itemid = 5903, type = "deequip", - slot = "head" + slot = "head", }, { -- arbalest @@ -15826,330 +15823,330 @@ local items = { level = 75, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- arbalest itemid = 5803, type = "deequip", - slot = "hand" + slot = "hand", }, { -- jewelled backpack itemid = 5801, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- jewelled backpack itemid = 5801, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- skull helmet itemid = 5741, type = "equip", - slot = "head" + slot = "head", }, { -- skull helmet itemid = 5741, type = "deequip", - slot = "head" + slot = "head", }, { -- pirate boots itemid = 5461, type = "equip", - slot = "feet" + slot = "feet", }, { -- pirate boots itemid = 5461, type = "deequip", - slot = "feet" + slot = "feet", }, { -- helmet of the deep itemid = 5460, type = "equip", - slot = "head" + slot = "head", }, { -- helmet of the deep itemid = 5460, type = "deequip", - slot = "head" + slot = "head", }, { -- spectral dress itemid = 4836, type = "equip", - slot = "armor" + slot = "armor", }, { -- spectral dress itemid = 4836, type = "deequip", - slot = "armor" + slot = "armor", }, { -- bast skirt itemid = 3560, type = "equip", - slot = "legs" + slot = "legs", }, { -- bast skirt itemid = 3560, type = "deequip", - slot = "legs" + slot = "legs", }, { -- crocodile boots itemid = 3556, type = "equip", - slot = "feet" + slot = "feet", }, { -- crocodile boots itemid = 3556, type = "deequip", - slot = "feet" + slot = "feet", }, { -- salamander shield itemid = 3445, type = "equip", - slot = "shield" + slot = "shield", }, { -- salamander shield itemid = 3445, type = "deequip", - slot = "shield" + slot = "shield", }, { -- sentinel shield itemid = 3444, type = "equip", - slot = "shield" + slot = "shield", }, { -- sentinel shield itemid = 3444, type = "deequip", - slot = "shield" + slot = "shield", }, { -- tusk shield itemid = 3443, type = "equip", - slot = "shield" + slot = "shield", }, { -- tusk shield itemid = 3443, type = "deequip", - slot = "shield" + slot = "shield", }, { -- bonelord helmet itemid = 3408, type = "equip", - slot = "head" + slot = "head", }, { -- bonelord helmet itemid = 3408, type = "deequip", - slot = "head" + slot = "head", }, { -- charmer's tiara itemid = 3407, type = "equip", - slot = "head" + slot = "head", }, { -- charmer's tiara itemid = 3407, type = "deequip", - slot = "head" + slot = "head", }, { -- feather headdress itemid = 3406, type = "equip", - slot = "head" + slot = "head", }, { -- feather headdress itemid = 3406, type = "deequip", - slot = "head" + slot = "head", }, { -- horseman helmet itemid = 3405, type = "equip", - slot = "head" + slot = "head", }, { -- horseman helmet itemid = 3405, type = "deequip", - slot = "head" + slot = "head", }, { -- leopard armor itemid = 3404, type = "equip", - slot = "armor" + slot = "armor", }, { -- leopard armor itemid = 3404, type = "deequip", - slot = "armor" + slot = "armor", }, { -- tribal mask itemid = 3403, type = "equip", - slot = "head" + slot = "head", }, { -- tribal mask itemid = 3403, type = "deequip", - slot = "head" + slot = "head", }, { -- banana staff itemid = 3348, type = "equip", - slot = "hand" + slot = "hand", }, { -- banana staff itemid = 3348, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hunting spear itemid = 3347, type = "equip", slot = "hand", - level = 20 + level = 20, }, { -- hunting spear itemid = 3347, type = "deequip", slot = "hand", - level = 20 + level = 20, }, { -- ripper lance itemid = 3346, type = "equip", - slot = "hand" + slot = "hand", }, { -- ripper lance itemid = 3346, type = "deequip", - slot = "hand" + slot = "hand", }, { -- templar scytheblade itemid = 3345, type = "equip", - slot = "hand" + slot = "hand", }, { -- templar scytheblade itemid = 3345, type = "deequip", - slot = "hand" + slot = "hand", }, { -- beastslayer axe itemid = 3344, type = "equip", slot = "hand", - level = 30 + level = 30, }, { -- beastslayer axe itemid = 3344, type = "deequip", - slot = "hand" + slot = "hand", }, { -- lich staff itemid = 3343, type = "equip", slot = "hand", - level = 40 + level = 40, }, { -- lich staff itemid = 3343, type = "deequip", - slot = "hand" + slot = "hand", }, { -- old and used backpack itemid = 3244, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- old and used backpack itemid = 3244, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- camouflage backpack itemid = 2872, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- camouflage backpack itemid = 2872, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- camouflage bag itemid = 2864, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- camouflage bag itemid = 2864, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- post officer's hat itemid = 3576, type = "equip", - slot = "head" + slot = "head", }, { -- post officer's hat itemid = 3576, type = "deequip", - slot = "head" + slot = "head", }, { -- wood cape @@ -16158,50 +16155,50 @@ local items = { slot = "head", vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- wood cape itemid = 3575, type = "deequip", - slot = "head" + slot = "head", }, { -- mystic turban itemid = 3574, type = "equip", - slot = "head" + slot = "head", }, { -- mystic turban itemid = 3574, type = "deequip", - slot = "head" + slot = "head", }, { -- magician hat itemid = 3573, type = "equip", - slot = "head" + slot = "head", }, { -- magician hat itemid = 3573, type = "deequip", - slot = "head" + slot = "head", }, { -- scarf itemid = 3572, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- scarf itemid = 3572, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- ranger's cloak @@ -16210,806 +16207,806 @@ local items = { slot = "armor", vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ranger's cloak itemid = 3571, type = "deequip", - slot = "armor" + slot = "armor", }, { -- ball gown itemid = 3570, type = "equip", - slot = "armor" + slot = "armor", }, { -- ball gown itemid = 3570, type = "deequip", - slot = "armor" + slot = "armor", }, { -- white dress itemid = 3569, type = "equip", - slot = "armor" + slot = "armor", }, { -- white dress itemid = 3569, type = "deequip", - slot = "armor" + slot = "armor", }, { -- simple dress itemid = 3568, type = "equip", - slot = "armor" + slot = "armor", }, { -- simple dress itemid = 3568, type = "deequip", - slot = "armor" + slot = "armor", }, { -- blue robe itemid = 3567, type = "equip", - slot = "armor" + slot = "armor", }, { -- blue robe itemid = 3567, type = "deequip", - slot = "armor" + slot = "armor", }, { -- red robe itemid = 3566, type = "equip", - slot = "armor" + slot = "armor", }, { -- red robe itemid = 3566, type = "deequip", - slot = "armor" + slot = "armor", }, { -- cape itemid = 3565, type = "equip", - slot = "armor" + slot = "armor", }, { -- cape itemid = 3565, type = "deequip", - slot = "armor" + slot = "armor", }, { -- red tunic itemid = 3564, type = "equip", - slot = "armor" + slot = "armor", }, { -- red tunic itemid = 3564, type = "deequip", - slot = "armor" + slot = "armor", }, { -- green tunic itemid = 3563, type = "equip", - slot = "armor" + slot = "armor", }, { -- green tunic itemid = 3563, type = "deequip", - slot = "armor" + slot = "armor", }, { -- coat itemid = 3562, type = "equip", - slot = "armor" + slot = "armor", }, { -- coat itemid = 3562, type = "deequip", - slot = "armor" + slot = "armor", }, { -- jacket itemid = 3561, type = "equip", - slot = "armor" + slot = "armor", }, { -- jacket itemid = 3561, type = "deequip", - slot = "armor" + slot = "armor", }, { -- leather legs itemid = 3559, type = "equip", - slot = "legs" + slot = "legs", }, { -- leather legs itemid = 3559, type = "deequip", - slot = "legs" + slot = "legs", }, { -- chain legs itemid = 3558, type = "equip", - slot = "legs" + slot = "legs", }, { -- chain legs itemid = 3558, type = "deequip", - slot = "legs" + slot = "legs", }, { -- plate legs itemid = 3557, type = "equip", - slot = "legs" + slot = "legs", }, { -- plate legs itemid = 3557, type = "deequip", - slot = "legs" + slot = "legs", }, { -- golden boots itemid = 3555, type = "equip", - slot = "feet" + slot = "feet", }, { -- golden boots itemid = 3555, type = "deequip", - slot = "feet" + slot = "feet", }, { -- steel boots itemid = 3554, type = "equip", - slot = "feet" + slot = "feet", }, { -- steel boots itemid = 3554, type = "deequip", - slot = "feet" + slot = "feet", }, { -- bunnyslippers itemid = 3553, type = "equip", - slot = "feet" + slot = "feet", }, { -- bunnyslippers itemid = 3553, type = "deequip", - slot = "feet" + slot = "feet", }, { -- leather boots itemid = 3552, type = "equip", - slot = "feet" + slot = "feet", }, { -- leather boots itemid = 3552, type = "deequip", - slot = "feet" + slot = "feet", }, { -- sandals itemid = 3551, type = "equip", - slot = "feet" + slot = "feet", }, { -- sandals itemid = 3551, type = "deequip", - slot = "feet" + slot = "feet", }, { -- patched boots itemid = 3550, type = "equip", - slot = "feet" + slot = "feet", }, { -- patched boots itemid = 3550, type = "deequip", - slot = "feet" + slot = "feet", }, { -- pair of soft boots itemid = 3549, type = "equip", - slot = "feet" + slot = "feet", }, { -- pair of soft boots itemid = 3549, type = "deequip", - slot = "feet" + slot = "feet", }, { -- scythe itemid = 3453, type = "equip", - slot = "hand" + slot = "hand", }, { -- scythe itemid = 3453, type = "deequip", - slot = "hand" + slot = "hand", }, { -- power bolt itemid = 3450, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- power bolt itemid = 3450, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- arrow itemid = 3447, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- arrow itemid = 3447, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- bolt itemid = 3446, type = "equip", - slot = "ammo" + slot = "ammo", }, { -- bolt itemid = 3446, type = "deequip", - slot = "ammo" + slot = "ammo", }, { -- tempest shield itemid = 3442, type = "equip", - slot = "shield" + slot = "shield", }, { -- tempest shield itemid = 3442, type = "deequip", - slot = "shield" + slot = "shield", }, { -- bone shield itemid = 3441, type = "equip", - slot = "shield" + slot = "shield", }, { -- bone shield itemid = 3441, type = "deequip", - slot = "shield" + slot = "shield", }, { -- scarab shield itemid = 3440, type = "equip", - slot = "shield" + slot = "shield", }, { -- scarab shield itemid = 3440, type = "deequip", - slot = "shield" + slot = "shield", }, { -- phoenix shield itemid = 3439, type = "equip", - slot = "shield" + slot = "shield", }, { -- phoenix shield itemid = 3439, type = "deequip", - slot = "shield" + slot = "shield", }, { -- eagle shield itemid = 3438, type = "equip", - slot = "shield" + slot = "shield", }, { -- eagle shield itemid = 3438, type = "deequip", - slot = "shield" + slot = "shield", }, { -- amazon shield itemid = 3437, type = "equip", - slot = "shield" + slot = "shield", }, { -- amazon shield itemid = 3437, type = "deequip", - slot = "shield" + slot = "shield", }, { -- medusa shield itemid = 3436, type = "equip", - slot = "shield" + slot = "shield", }, { -- medusa shield itemid = 3436, type = "deequip", - slot = "shield" + slot = "shield", }, { -- castle shield itemid = 3435, type = "equip", - slot = "shield" + slot = "shield", }, { -- castle shield itemid = 3435, type = "deequip", - slot = "shield" + slot = "shield", }, { -- vampire shield itemid = 3434, type = "equip", - slot = "shield" + slot = "shield", }, { -- vampire shield itemid = 3434, type = "deequip", - slot = "shield" + slot = "shield", }, { -- griffin shield itemid = 3433, type = "equip", - slot = "shield" + slot = "shield", }, { -- griffin shield itemid = 3433, type = "deequip", - slot = "shield" + slot = "shield", }, { -- ancient shield itemid = 3432, type = "equip", - slot = "shield" + slot = "shield", }, { -- ancient shield itemid = 3432, type = "deequip", - slot = "shield" + slot = "shield", }, { -- viking shield itemid = 3431, type = "equip", - slot = "shield" + slot = "shield", }, { -- viking shield itemid = 3431, type = "deequip", - slot = "shield" + slot = "shield", }, { -- copper shield itemid = 3430, type = "equip", - slot = "shield" + slot = "shield", }, { -- copper shield itemid = 3430, type = "deequip", - slot = "shield" + slot = "shield", }, { -- black shield itemid = 3429, type = "equip", - slot = "shield" + slot = "shield", }, { -- black shield itemid = 3429, type = "deequip", - slot = "shield" + slot = "shield", }, { -- tower shield itemid = 3428, type = "equip", - slot = "shield" + slot = "shield", }, { -- tower shield itemid = 3428, type = "deequip", - slot = "shield" + slot = "shield", }, { -- rose shield itemid = 3427, type = "equip", - slot = "shield" + slot = "shield", }, { -- rose shield itemid = 3427, type = "deequip", - slot = "shield" + slot = "shield", }, { -- studded shield itemid = 3426, type = "equip", - slot = "shield" + slot = "shield", }, { -- studded shield itemid = 3426, type = "deequip", - slot = "shield" + slot = "shield", }, { -- dwarven shield itemid = 3425, type = "equip", - slot = "shield" + slot = "shield", }, { -- dwarven shield itemid = 3425, type = "deequip", - slot = "shield" + slot = "shield", }, { -- ornamented shield itemid = 3424, type = "equip", - slot = "shield" + slot = "shield", }, { -- ornamented shield itemid = 3424, type = "deequip", - slot = "shield" + slot = "shield", }, { -- blessed shield itemid = 3423, type = "equip", - slot = "shield" + slot = "shield", }, { -- blessed shield itemid = 3423, type = "deequip", - slot = "shield" + slot = "shield", }, { -- great shield itemid = 3422, type = "equip", - slot = "shield" + slot = "shield", }, { -- great shield itemid = 3422, type = "deequip", - slot = "shield" + slot = "shield", }, { -- dark shield itemid = 3421, type = "equip", - slot = "shield" + slot = "shield", }, { -- dark shield itemid = 3421, type = "deequip", - slot = "shield" + slot = "shield", }, { -- demon shield itemid = 3420, type = "equip", - slot = "shield" + slot = "shield", }, { -- demon shield itemid = 3420, type = "deequip", - slot = "shield" + slot = "shield", }, { -- crown shield itemid = 3419, type = "equip", - slot = "shield" + slot = "shield", }, { -- crown shield itemid = 3419, type = "deequip", - slot = "shield" + slot = "shield", }, { -- bonelord shield itemid = 3418, type = "equip", - slot = "shield" + slot = "shield", }, { -- bonelord shield itemid = 3418, type = "deequip", - slot = "shield" + slot = "shield", }, { -- shield of honour itemid = 3417, type = "equip", - slot = "shield" + slot = "shield", }, { -- shield of honour itemid = 3417, type = "deequip", - slot = "shield" + slot = "shield", }, { -- dragon shield itemid = 3416, type = "equip", - slot = "shield" + slot = "shield", }, { -- dragon shield itemid = 3416, type = "deequip", - slot = "shield" + slot = "shield", }, { -- guardian shield itemid = 3415, type = "equip", - slot = "shield" + slot = "shield", }, { -- guardian shield itemid = 3415, type = "deequip", - slot = "shield" + slot = "shield", }, { -- mastermind shield itemid = 3414, type = "equip", - slot = "shield" + slot = "shield", }, { -- mastermind shield itemid = 3414, type = "deequip", - slot = "shield" + slot = "shield", }, { -- battle shield itemid = 3413, type = "equip", - slot = "shield" + slot = "shield", }, { -- battle shield itemid = 3413, type = "deequip", - slot = "shield" + slot = "shield", }, { -- wooden shield itemid = 3412, type = "equip", - slot = "shield" + slot = "shield", }, { -- wooden shield itemid = 3412, type = "deequip", - slot = "shield" + slot = "shield", }, { -- brass shield itemid = 3411, type = "equip", - slot = "shield" + slot = "shield", }, { -- brass shield itemid = 3411, type = "deequip", - slot = "shield" + slot = "shield", }, { -- plate shield itemid = 3410, type = "equip", - slot = "shield" + slot = "shield", }, { -- plate shield itemid = 3410, type = "deequip", - slot = "shield" + slot = "shield", }, { -- steel shield itemid = 3409, type = "equip", - slot = "shield" + slot = "shield", }, { -- steel shield itemid = 3409, type = "deequip", - slot = "shield" + slot = "shield", }, { -- native armor itemid = 3402, type = "equip", - slot = "armor" + slot = "armor", }, { -- native armor itemid = 3402, type = "deequip", - slot = "armor" + slot = "armor", }, { -- elven legs itemid = 3401, type = "equip", - slot = "legs" + slot = "legs", }, { -- elven legs itemid = 3401, type = "deequip", - slot = "legs" + slot = "legs", }, { -- dragon scale helmet itemid = 3400, type = "equip", - slot = "head" + slot = "head", }, { -- dragon scale helmet itemid = 3400, type = "deequip", - slot = "head" + slot = "head", }, { -- elven mail itemid = 3399, type = "equip", - slot = "armor" + slot = "armor", }, { -- elven mail itemid = 3399, type = "deequip", - slot = "armor" + slot = "armor", }, { -- dwarven legs itemid = 3398, type = "equip", - slot = "legs" + slot = "legs", }, { -- dwarven legs itemid = 3398, type = "deequip", - slot = "legs" + slot = "legs", }, { -- dwarven armor itemid = 3397, type = "equip", - slot = "armor" + slot = "armor", }, { -- dwarven armor itemid = 3397, type = "deequip", - slot = "armor" + slot = "armor", }, { -- dwarven helmet itemid = 3396, type = "equip", - slot = "head" + slot = "head", }, { -- dwarven helmet itemid = 3396, type = "deequip", - slot = "head" + slot = "head", }, { -- ceremonial mask itemid = 3395, type = "equip", - slot = "head" + slot = "head", }, { -- ceremonial mask itemid = 3395, type = "deequip", - slot = "head" + slot = "head", }, { -- amazon armor @@ -17019,99 +17016,99 @@ local items = { level = 60, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- amazon armor itemid = 3394, type = "deequip", slot = "armor", - level = 60 + level = 60, }, { -- amazon helmet itemid = 3393, type = "equip", - slot = "head" + slot = "head", }, { -- amazon helmet itemid = 3393, type = "deequip", - slot = "head" + slot = "head", }, { -- royal helmet itemid = 3392, type = "equip", - slot = "head" + slot = "head", }, { -- royal helmet itemid = 3392, type = "deequip", - slot = "head" + slot = "head", }, { -- crusader helmet itemid = 3391, type = "equip", - slot = "head" + slot = "head", }, { -- crusader helmet itemid = 3391, type = "deequip", - slot = "head" + slot = "head", }, { -- horned helmet itemid = 3390, type = "equip", - slot = "head" + slot = "head", }, { -- horned helmet itemid = 3390, type = "deequip", - slot = "head" + slot = "head", }, { -- demon legs itemid = 3389, type = "equip", - slot = "legs" + slot = "legs", }, { -- demon legs itemid = 3389, type = "deequip", - slot = "legs" + slot = "legs", }, { -- demon armor itemid = 3388, type = "equip", - slot = "armor" + slot = "armor", }, { -- demon armor itemid = 3388, type = "deequip", - slot = "armor" + slot = "armor", }, { -- demon helmet itemid = 3387, type = "equip", - slot = "head" + slot = "head", }, { -- demon helmet itemid = 3387, type = "deequip", - slot = "head" + slot = "head", }, { -- dragon scale mail @@ -17122,50 +17119,50 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- dragon scale mail itemid = 3386, type = "deequip", - slot = "armor" + slot = "armor", }, { -- crown helmet itemid = 3385, type = "equip", - slot = "head" + slot = "head", }, { -- crown helmet itemid = 3385, type = "deequip", - slot = "head" + slot = "head", }, { -- dark helmet itemid = 3384, type = "equip", - slot = "head" + slot = "head", }, { -- dark helmet itemid = 3384, type = "deequip", - slot = "head" + slot = "head", }, { -- dark armor itemid = 3383, type = "equip", - slot = "armor" + slot = "armor", }, { -- dark armor itemid = 3383, type = "deequip", - slot = "armor" + slot = "armor", }, { -- crown legs @@ -17176,14 +17173,14 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crown legs itemid = 3382, type = "deequip", - slot = "legs" + slot = "legs", }, { -- crown armor @@ -17194,122 +17191,122 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crown armor itemid = 3381, type = "deequip", - slot = "armor" + slot = "armor", }, { -- noble armor itemid = 3380, type = "equip", - slot = "armor" + slot = "armor", }, { -- noble armor itemid = 3380, type = "deequip", - slot = "armor" + slot = "armor", }, { -- doublet itemid = 3379, type = "equip", - slot = "armor" + slot = "armor", }, { -- doublet itemid = 3379, type = "deequip", - slot = "armor" + slot = "armor", }, { -- studded armor itemid = 3378, type = "equip", - slot = "armor" + slot = "armor", }, { -- studded armor itemid = 3378, type = "deequip", - slot = "armor" + slot = "armor", }, { -- scale armor itemid = 3377, type = "equip", - slot = "armor" + slot = "armor", }, { -- scale armor itemid = 3377, type = "deequip", - slot = "armor" + slot = "armor", }, { -- studded helmet itemid = 3376, type = "equip", - slot = "head" + slot = "head", }, { -- studded helmet itemid = 3376, type = "deequip", - slot = "head" + slot = "head", }, { -- soldier helmet itemid = 3375, type = "equip", - slot = "head" + slot = "head", }, { -- soldier helmet itemid = 3375, type = "deequip", - slot = "head" + slot = "head", }, { -- legion helmet itemid = 3374, type = "equip", - slot = "head" + slot = "head", }, { -- legion helmet itemid = 3374, type = "deequip", - slot = "head" + slot = "head", }, { -- strange helmet itemid = 3373, type = "equip", - slot = "head" + slot = "head", }, { -- strange helmet itemid = 3373, type = "deequip", - slot = "head" + slot = "head", }, { -- brass legs itemid = 3372, type = "equip", - slot = "legs" + slot = "legs", }, { -- brass legs itemid = 3372, type = "deequip", - slot = "legs" + slot = "legs", }, { -- knight legs @@ -17320,14 +17317,14 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- knight legs itemid = 3371, type = "deequip", - slot = "legs" + slot = "legs", }, { -- knight armor @@ -17338,50 +17335,50 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- knight armor itemid = 3370, type = "deequip", - slot = "armor" + slot = "armor", }, { -- warrior helmet itemid = 3369, type = "equip", - slot = "head" + slot = "head", }, { -- warrior helmet itemid = 3369, type = "deequip", - slot = "head" + slot = "head", }, { -- winged helmet itemid = 3368, type = "equip", - slot = "head" + slot = "head", }, { -- winged helmet itemid = 3368, type = "deequip", - slot = "head" + slot = "head", }, { -- viking helmet itemid = 3367, type = "equip", - slot = "head" + slot = "head", }, { -- viking helmet itemid = 3367, type = "deequip", - slot = "head" + slot = "head", }, { -- magic plate armor @@ -17392,26 +17389,26 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- magic plate armor itemid = 3366, type = "deequip", - slot = "armor" + slot = "armor", }, { -- golden helmet itemid = 3365, type = "equip", - slot = "head" + slot = "head", }, { -- golden helmet itemid = 3365, type = "deequip", - slot = "head" + slot = "head", }, { -- golden legs @@ -17422,50 +17419,50 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- golden legs itemid = 3364, type = "deequip", - slot = "legs" + slot = "legs", }, { -- dragon scale legs itemid = 3363, type = "equip", - slot = "legs" + slot = "legs", }, { -- dragon scale legs itemid = 3363, type = "deequip", - slot = "legs" + slot = "legs", }, { -- studded legs itemid = 3362, type = "equip", - slot = "legs" + slot = "legs", }, { -- studded legs itemid = 3362, type = "deequip", - slot = "legs" + slot = "legs", }, { -- leather armor itemid = 3361, type = "equip", - slot = "armor" + slot = "armor", }, { -- leather armor itemid = 3361, type = "deequip", - slot = "armor" + slot = "armor", }, { -- golden armor @@ -17476,146 +17473,146 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- golden armor itemid = 3360, type = "deequip", - slot = "armor" + slot = "armor", }, { -- brass armor itemid = 3359, type = "equip", - slot = "armor" + slot = "armor", }, { -- brass armor itemid = 3359, type = "deequip", - slot = "armor" + slot = "armor", }, { -- chain armor itemid = 3358, type = "equip", - slot = "armor" + slot = "armor", }, { -- chain armor itemid = 3358, type = "deequip", - slot = "armor" + slot = "armor", }, { -- plate armor itemid = 3357, type = "equip", - slot = "armor" + slot = "armor", }, { -- plate armor itemid = 3357, type = "deequip", - slot = "armor" + slot = "armor", }, { -- devil helmet itemid = 3356, type = "equip", - slot = "head" + slot = "head", }, { -- devil helmet itemid = 3356, type = "deequip", - slot = "head" + slot = "head", }, { -- leather helmet itemid = 3355, type = "equip", - slot = "head" + slot = "head", }, { -- leather helmet itemid = 3355, type = "deequip", - slot = "head" + slot = "head", }, { -- brass helmet itemid = 3354, type = "equip", - slot = "head" + slot = "head", }, { -- brass helmet itemid = 3354, type = "deequip", - slot = "head" + slot = "head", }, { -- iron helmet itemid = 3353, type = "equip", - slot = "head" + slot = "head", }, { -- iron helmet itemid = 3353, type = "deequip", - slot = "head" + slot = "head", }, { -- chain helmet itemid = 3352, type = "equip", - slot = "head" + slot = "head", }, { -- chain helmet itemid = 3352, type = "deequip", - slot = "head" + slot = "head", }, { -- steel helmet itemid = 3351, type = "equip", - slot = "head" + slot = "head", }, { -- steel helmet itemid = 3351, type = "deequip", - slot = "head" + slot = "head", }, { -- bow itemid = 3350, type = "equip", - slot = "hand" + slot = "hand", }, { -- bow itemid = 3350, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crossbow itemid = 3349, type = "equip", - slot = "hand" + slot = "hand", }, { -- crossbow itemid = 3349, type = "deequip", - slot = "hand" + slot = "hand", }, { -- war axe @@ -17625,89 +17622,89 @@ local items = { level = 65, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- war axe itemid = 3342, type = "deequip", - slot = "hand" + slot = "hand", }, { -- arcane staff itemid = 3341, type = "equip", slot = "hand", - level = 75 + level = 75, }, { -- arcane staff itemid = 3341, type = "deequip", - slot = "hand" + slot = "hand", }, { -- heavy mace itemid = 3340, type = "equip", slot = "hand", - level = 70 + level = 70, }, { -- heavy mace itemid = 3340, type = "deequip", - slot = "hand" + slot = "hand", }, { -- djinn blade itemid = 3339, type = "equip", slot = "hand", - level = 35 + level = 35, }, { -- djinn blade itemid = 3339, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bone sword itemid = 3338, type = "equip", - slot = "hand" + slot = "hand", }, { -- bone sword itemid = 3338, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bone club itemid = 3337, type = "equip", - slot = "hand" + slot = "hand", }, { -- bone club itemid = 3337, type = "deequip", - slot = "hand" + slot = "hand", }, { -- studded club itemid = 3336, type = "equip", - slot = "hand" + slot = "hand", }, { -- studded club itemid = 3336, type = "deequip", - slot = "hand" + slot = "hand", }, { -- twin axe @@ -17717,40 +17714,40 @@ local items = { level = 50, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- twin axe itemid = 3335, type = "deequip", - slot = "hand" + slot = "hand", }, { -- pharaoh sword itemid = 3334, type = "equip", slot = "hand", - level = 45 + level = 45, }, { -- pharaoh sword itemid = 3334, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crystal mace itemid = 3333, type = "equip", slot = "hand", - level = 35 + level = 35, }, { -- crystal mace itemid = 3333, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hammer of wrath @@ -17760,51 +17757,51 @@ local items = { level = 65, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- hammer of wrath itemid = 3332, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ravager's axe itemid = 3331, type = "equip", slot = "hand", - level = 70 + level = 70, }, { -- ravager's axe itemid = 3331, type = "deequip", - slot = "hand" + slot = "hand", }, { -- heavy machete itemid = 3330, type = "equip", - slot = "hand" + slot = "hand", }, { -- heavy machete itemid = 3330, type = "deequip", - slot = "hand" + slot = "hand", }, { -- daramian axe itemid = 3329, type = "equip", - slot = "hand" + slot = "hand", }, { -- daramian axe itemid = 3329, type = "deequip", - slot = "hand" + slot = "hand", }, { -- daramian waraxe @@ -17814,316 +17811,316 @@ local items = { level = 25, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- daramian waraxe itemid = 3328, type = "deequip", - slot = "hand" + slot = "hand", }, { -- daramian mace itemid = 3327, type = "equip", - slot = "hand" + slot = "hand", }, { -- daramian mace itemid = 3327, type = "deequip", - slot = "hand" + slot = "hand", }, { -- epee itemid = 3326, type = "equip", slot = "hand", - level = 30 + level = 30, }, { -- epee itemid = 3326, type = "deequip", - slot = "hand" + slot = "hand", }, { -- light mace itemid = 3325, type = "equip", - slot = "hand" + slot = "hand", }, { -- light mace itemid = 3325, type = "deequip", - slot = "hand" + slot = "hand", }, { -- skull staff itemid = 3324, type = "equip", slot = "hand", - level = 30 + level = 30, }, { -- skull staff itemid = 3324, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dwarven axe itemid = 3323, type = "equip", slot = "hand", - level = 20 + level = 20, }, { -- dwarven axe itemid = 3323, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dragon hammer itemid = 3322, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- dragon hammer itemid = 3322, type = "deequip", - slot = "hand" + slot = "hand", }, { -- enchanted staff itemid = 3321, type = "equip", - slot = "hand" + slot = "hand", }, { -- enchanted staff itemid = 3321, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fire axe itemid = 3320, type = "equip", slot = "hand", - level = 35 + level = 35, }, { -- fire axe itemid = 3320, type = "deequip", - slot = "hand" + slot = "hand", }, { -- stonecutter axe itemid = 3319, type = "equip", slot = "hand", - level = 90 + level = 90, }, { -- stonecutter axe itemid = 3319, type = "deequip", - slot = "hand" + slot = "hand", }, { -- knight axe itemid = 3318, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- knight axe itemid = 3318, type = "deequip", - slot = "hand" + slot = "hand", }, { -- barbarian axe itemid = 3317, type = "equip", slot = "hand", - level = 20 + level = 20, }, { -- barbarian axe itemid = 3317, type = "deequip", - slot = "hand" + slot = "hand", }, { -- orcish axe itemid = 3316, type = "equip", - slot = "hand" + slot = "hand", }, { -- orcish axe itemid = 3316, type = "deequip", - slot = "hand" + slot = "hand", }, { -- guardian halberd itemid = 3315, type = "equip", slot = "hand", - level = 55 + level = 55, }, { -- guardian halberd itemid = 3315, type = "deequip", - slot = "hand" + slot = "hand", }, { -- naginata itemid = 3314, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- naginata itemid = 3314, type = "deequip", - slot = "hand" + slot = "hand", }, { -- obsidian lance itemid = 3313, type = "equip", slot = "hand", - level = 20 + level = 20, }, { -- obsidian lance itemid = 3313, type = "deequip", - slot = "hand" + slot = "hand", }, { -- silver mace itemid = 3312, type = "equip", slot = "hand", - level = 45 + level = 45, }, { -- silver mace itemid = 3312, type = "deequip", - slot = "hand" + slot = "hand", }, { -- clerical mace itemid = 3311, type = "equip", slot = "hand", - level = 20 + level = 20, }, { -- clerical mace itemid = 3311, type = "deequip", - slot = "hand" + slot = "hand", }, { -- iron hammer itemid = 3310, type = "equip", - slot = "hand" + slot = "hand", }, { -- iron hammer itemid = 3310, type = "deequip", - slot = "hand" + slot = "hand", }, { -- thunder hammer itemid = 3309, type = "equip", slot = "hand", - level = 85 + level = 85, }, { -- thunder hammer itemid = 3309, type = "deequip", - slot = "hand" + slot = "hand", }, { -- machete itemid = 3308, type = "equip", - slot = "hand" + slot = "hand", }, { -- machete itemid = 3308, type = "deequip", - slot = "hand" + slot = "hand", }, { -- scimitar itemid = 3307, type = "equip", - slot = "hand" + slot = "hand", }, { -- scimitar itemid = 3307, type = "deequip", - slot = "hand" + slot = "hand", }, { -- golden sickle itemid = 3306, type = "equip", - slot = "hand" + slot = "hand", }, { -- golden sickle itemid = 3306, type = "deequip", - slot = "hand" + slot = "hand", }, { -- battle hammer itemid = 3305, type = "equip", - slot = "hand" + slot = "hand", }, { -- battle hammer itemid = 3305, type = "deequip", - slot = "hand" + slot = "hand", }, { -- crowbar itemid = 3304, type = "equip", - slot = "hand" + slot = "hand", }, { -- crowbar itemid = 3304, type = "deequip", - slot = "hand" + slot = "hand", }, { -- great axe @@ -18133,27 +18130,27 @@ local items = { level = 95, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- great axe itemid = 3303, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dragon lance itemid = 3302, type = "equip", slot = "hand", - level = 60 + level = 60, }, { -- dragon lance itemid = 3302, type = "deequip", - slot = "hand" + slot = "hand", }, { -- broadsword @@ -18162,8 +18159,8 @@ local items = { slot = "hand", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- broadsword @@ -18172,56 +18169,56 @@ local items = { slot = "hand", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- katana itemid = 3300, type = "equip", - slot = "hand" + slot = "hand", }, { -- katana itemid = 3300, type = "deequip", - slot = "hand" + slot = "hand", }, { -- poison dagger itemid = 3299, type = "equip", - slot = "hand" + slot = "hand", }, { -- poison dagger itemid = 3299, type = "deequip", - slot = "hand" + slot = "hand", }, { -- throwing knife itemid = 3298, type = "equip", - slot = "hand" + slot = "hand", }, { -- throwing knife itemid = 3298, type = "deequip", - slot = "hand" + slot = "hand", }, { -- serpent sword itemid = 3297, type = "equip", - slot = "hand" + slot = "hand", }, { -- serpent sword itemid = 3297, type = "deequip", - slot = "hand" + slot = "hand", }, { -- warlord sword @@ -18231,185 +18228,185 @@ local items = { level = 120, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- warlord sword itemid = 3296, type = "deequip", - slot = "hand" + slot = "hand", }, { -- bright sword itemid = 3295, type = "equip", slot = "hand", - level = 30 + level = 30, }, { -- bright sword itemid = 3295, type = "deequip", slot = "hand", - level = 30 + level = 30, }, { -- short sword itemid = 3294, type = "equip", - slot = "hand" + slot = "hand", }, { -- short sword itemid = 3294, type = "deequip", - slot = "hand" + slot = "hand", }, { -- sickle itemid = 3293, type = "equip", - slot = "hand" + slot = "hand", }, { -- sickle itemid = 3293, type = "deequip", - slot = "hand" + slot = "hand", }, { -- combat knife itemid = 3292, type = "equip", - slot = "hand" + slot = "hand", }, { -- combat knife itemid = 3292, type = "deequip", - slot = "hand" + slot = "hand", }, { -- knife itemid = 3291, type = "equip", - slot = "hand" + slot = "hand", }, { -- knife itemid = 3291, type = "deequip", - slot = "hand" + slot = "hand", }, { -- silver dagger itemid = 3290, type = "equip", - slot = "hand" + slot = "hand", }, { -- silver dagger itemid = 3290, type = "deequip", - slot = "hand" + slot = "hand", }, { -- staff itemid = 3289, type = "equip", - slot = "hand" + slot = "hand", }, { -- staff itemid = 3289, type = "deequip", - slot = "hand" + slot = "hand", }, { -- magic sword itemid = 3288, type = "equip", slot = "hand", - level = 80 + level = 80, }, { -- magic sword itemid = 3288, type = "deequip", - slot = "hand" + slot = "hand", }, { -- throwing star itemid = 3287, type = "equip", - slot = "hand" + slot = "hand", }, { -- throwing star itemid = 3287, type = "deequip", - slot = "hand" + slot = "hand", }, { -- mace itemid = 3286, type = "equip", - slot = "hand" + slot = "hand", }, { -- mace itemid = 3286, type = "deequip", - slot = "hand" + slot = "hand", }, { -- longsword itemid = 3285, type = "equip", - slot = "hand" + slot = "hand", }, { -- longsword itemid = 3285, type = "deequip", - slot = "hand" + slot = "hand", }, { -- ice rapier itemid = 3284, type = "equip", - slot = "hand" + slot = "hand", }, { -- ice rapier itemid = 3284, type = "deequip", - slot = "hand" + slot = "hand", }, { -- carlin sword itemid = 3283, type = "equip", - slot = "hand" + slot = "hand", }, { -- carlin sword itemid = 3283, type = "deequip", - slot = "hand" + slot = "hand", }, { -- morning star itemid = 3282, type = "equip", - slot = "hand" + slot = "hand", }, { -- morning star itemid = 3282, type = "deequip", - slot = "hand" + slot = "hand", }, { -- giant sword @@ -18419,27 +18416,27 @@ local items = { level = 55, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- giant sword itemid = 3281, type = "deequip", - slot = "hand" + slot = "hand", }, { -- fire sword itemid = 3280, type = "equip", slot = "hand", - level = 30 + level = 30, }, { -- fire sword itemid = 3280, type = "deequip", - slot = "hand" + slot = "hand", }, { -- war hammer @@ -18449,14 +18446,14 @@ local items = { level = 50, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- war hammer itemid = 3279, type = "deequip", - slot = "hand" + slot = "hand", }, { -- magic longsword @@ -18466,38 +18463,38 @@ local items = { level = 140, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- magic longsword itemid = 3278, type = "deequip", - slot = "hand" + slot = "hand", }, { -- spear itemid = 3277, type = "equip", - slot = "hand" + slot = "hand", }, { -- spear itemid = 3277, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hatchet itemid = 3276, type = "equip", - slot = "hand" + slot = "hand", }, { -- hatchet itemid = 3276, type = "deequip", - slot = "hand" + slot = "hand", }, { -- double axe @@ -18507,111 +18504,111 @@ local items = { level = 25, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- double axe itemid = 3275, type = "deequip", - slot = "hand" + slot = "hand", }, { -- axe itemid = 3274, type = "equip", - slot = "hand" + slot = "hand", }, { -- axe itemid = 3274, type = "deequip", - slot = "hand" + slot = "hand", }, { -- sabre itemid = 3273, type = "equip", - slot = "hand" + slot = "hand", }, { -- sabre itemid = 3273, type = "deequip", - slot = "hand" + slot = "hand", }, { -- rapier itemid = 3272, type = "equip", - slot = "hand" + slot = "hand", }, { -- rapier itemid = 3272, type = "deequip", - slot = "hand" + slot = "hand", }, { -- spike sword itemid = 3271, type = "equip", - slot = "hand" + slot = "hand", }, { -- spike sword itemid = 3271, type = "deequip", - slot = "hand" + slot = "hand", }, { -- club itemid = 3270, type = "equip", - slot = "hand" + slot = "hand", }, { -- club itemid = 3270, type = "deequip", - slot = "hand" + slot = "hand", }, { -- halberd itemid = 3269, type = "equip", slot = "hand", - level = 25 + level = 25, }, { -- halberd itemid = 3269, type = "deequip", - slot = "hand" + slot = "hand", }, { -- hand axe itemid = 3268, type = "equip", - slot = "hand" + slot = "hand", }, { -- hand axe itemid = 3268, type = "deequip", - slot = "hand" + slot = "hand", }, { -- dagger itemid = 3267, type = "equip", - slot = "hand" + slot = "hand", }, { -- dagger itemid = 3267, type = "deequip", - slot = "hand" + slot = "hand", }, { -- battle axe @@ -18620,14 +18617,14 @@ local items = { slot = "hand", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- battle axe itemid = 3266, type = "deequip", - slot = "hand" + slot = "hand", }, { -- two handed sword @@ -18637,98 +18634,98 @@ local items = { level = 20, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- two handed sword itemid = 3265, type = "deequip", - slot = "hand" + slot = "hand", }, { -- sword itemid = 3264, type = "equip", - slot = "hand" + slot = "hand", }, { -- sword itemid = 3264, type = "deequip", - slot = "hand" + slot = "hand", }, { -- backpack of holding itemid = 3253, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- backpack of holding itemid = 3253, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- boots of waterwalking itemid = 3246, type = "equip", - slot = "feet" + slot = "feet", }, { -- boots of waterwalking itemid = 3246, type = "deequip", - slot = "feet" + slot = "feet", }, { -- ring of wishes itemid = 3245, type = "equip", - slot = "ring" + slot = "ring", }, { -- ring of wishes itemid = 3245, type = "deequip", - slot = "ring" + slot = "ring", }, { -- helmet of the ancients itemid = 3230, type = "equip", - slot = "head" + slot = "head", }, { -- helmet of the ancients itemid = 3230, type = "deequip", - slot = "head" + slot = "head", }, { -- helmet of the ancients itemid = 3229, type = "equip", - slot = "head" + slot = "head", }, { -- helmet of the ancients itemid = 3229, type = "deequip", - slot = "head" + slot = "head", }, { -- damaged helmet itemid = 3226, type = "equip", - slot = "head" + slot = "head", }, { -- damaged helmet itemid = 3226, type = "deequip", - slot = "head" + slot = "head", }, { -- hat of the mad @@ -18739,182 +18736,182 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- hat of the mad itemid = 3210, type = "deequip", - slot = "head" + slot = "head", }, { -- giant smithhammer itemid = 3208, type = "equip", - slot = "hand" + slot = "hand", }, { -- giant smithhammer itemid = 3208, type = "deequip", - slot = "hand" + slot = "hand", }, { -- paw amulet itemid = 3102, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- paw amulet itemid = 3102, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- ring of healing itemid = 3100, type = "equip", - slot = "ring" + slot = "ring", }, { -- ring of healing itemid = 3100, type = "deequip", - slot = "ring" + slot = "ring", }, { -- dwarven ring itemid = 3099, type = "equip", - slot = "ring" + slot = "ring", }, { -- dwarven ring itemid = 3099, type = "deequip", - slot = "ring" + slot = "ring", }, { -- ring of healing itemid = 3098, type = "equip", - slot = "ring" + slot = "ring", }, { -- ring of healing itemid = 3098, type = "deequip", - slot = "ring" + slot = "ring", }, { -- dwarven ring itemid = 3097, type = "equip", - slot = "ring" + slot = "ring", }, { -- dwarven ring itemid = 3097, type = "deequip", - slot = "ring" + slot = "ring", }, { -- club ring itemid = 3096, type = "equip", - slot = "ring" + slot = "ring", }, { -- club ring itemid = 3096, type = "deequip", - slot = "ring" + slot = "ring", }, { -- axe ring itemid = 3095, type = "equip", - slot = "ring" + slot = "ring", }, { -- axe ring itemid = 3095, type = "deequip", - slot = "ring" + slot = "ring", }, { -- sword ring itemid = 3094, type = "equip", - slot = "ring" + slot = "ring", }, { -- sword ring itemid = 3094, type = "deequip", - slot = "ring" + slot = "ring", }, { -- club ring itemid = 3093, type = "equip", - slot = "ring" + slot = "ring", }, { -- club ring itemid = 3093, type = "deequip", - slot = "ring" + slot = "ring", }, { -- axe ring itemid = 3092, type = "equip", - slot = "ring" + slot = "ring", }, { -- axe ring itemid = 3092, type = "deequip", - slot = "ring" + slot = "ring", }, { -- sword ring itemid = 3091, type = "equip", - slot = "ring" + slot = "ring", }, { -- sword ring itemid = 3091, type = "deequip", - slot = "ring" + slot = "ring", }, { -- time ring itemid = 3090, type = "equip", - slot = "ring" + slot = "ring", }, { -- time ring itemid = 3090, type = "deequip", - slot = "ring" + slot = "ring", }, { -- life ring itemid = 3089, type = "equip", - slot = "ring" + slot = "ring", }, { -- life ring itemid = 3089, type = "deequip", - slot = "ring" + slot = "ring", }, { -- energy ring @@ -18925,122 +18922,122 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- energy ring itemid = 3088, type = "deequip", - slot = "ring" + slot = "ring", }, { -- power ring itemid = 3087, type = "equip", - slot = "ring" + slot = "ring", }, { -- power ring itemid = 3087, type = "deequip", - slot = "ring" + slot = "ring", }, { -- stealth ring itemid = 3086, type = "equip", - slot = "ring" + slot = "ring", }, { -- stealth ring itemid = 3086, type = "deequip", - slot = "ring" + slot = "ring", }, { -- dragon necklace itemid = 3085, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- dragon necklace itemid = 3085, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- protection amulet itemid = 3084, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- protection amulet itemid = 3084, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- garlic necklace itemid = 3083, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- garlic necklace itemid = 3083, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- elven amulet itemid = 3082, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- elven amulet itemid = 3082, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- stone skin amulet itemid = 3081, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- stone skin amulet itemid = 3081, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- amulet of life itemid = 3080, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- amulet of life itemid = 3080, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- boots of haste itemid = 3079, type = "equip", - slot = "feet" + slot = "feet", }, { -- boots of haste itemid = 3079, type = "deequip", - slot = "feet" + slot = "feet", }, { -- wand of dragonbreath @@ -19050,15 +19047,15 @@ local items = { level = 13, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of dragonbreath itemid = 3075, type = "deequip", slot = "hand", - level = 13 + level = 13, }, { -- wand of vortex @@ -19068,15 +19065,15 @@ local items = { level = 6, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of vortex itemid = 3074, type = "deequip", slot = "hand", - level = 6 + level = 6, }, { -- wand of cosmic energy @@ -19086,15 +19083,15 @@ local items = { level = 26, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of cosmic energy itemid = 3073, type = "deequip", slot = "hand", - level = 26 + level = 26, }, { -- wand of decay @@ -19104,15 +19101,15 @@ local items = { level = 19, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of decay itemid = 3072, type = "deequip", slot = "hand", - level = 19 + level = 19, }, { -- wand of inferno @@ -19122,15 +19119,15 @@ local items = { level = 33, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of inferno itemid = 3071, type = "deequip", slot = "hand", - level = 33 + level = 33, }, { -- moonlight rod @@ -19140,15 +19137,15 @@ local items = { level = 13, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- moonlight rod itemid = 3070, type = "deequip", slot = "hand", - level = 13 + level = 13, }, { -- necrotic rod @@ -19158,15 +19155,15 @@ local items = { level = 19, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- necrotic rod itemid = 3069, type = "deequip", slot = "hand", - level = 19 + level = 19, }, { -- hailstorm rod @@ -19176,15 +19173,15 @@ local items = { level = 33, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- hailstorm rod itemid = 3067, type = "deequip", slot = "hand", - level = 33 + level = 33, }, { -- snakebite rod @@ -19194,15 +19191,15 @@ local items = { level = 6, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- snakebite rod itemid = 3066, type = "deequip", slot = "hand", - level = 6 + level = 6, }, { -- terra rod @@ -19212,27 +19209,27 @@ local items = { level = 26, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- terra rod itemid = 3065, type = "deequip", slot = "hand", - level = 26 + level = 26, }, { -- gold ring itemid = 3063, type = "equip", - slot = "ring" + slot = "ring", }, { -- gold ring itemid = 3063, type = "deequip", - slot = "ring" + slot = "ring", }, { -- spellbook @@ -19243,86 +19240,86 @@ local items = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- spellbook itemid = 3059, type = "deequip", - slot = "shield" + slot = "shield", }, { -- amulet of loss itemid = 3057, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- amulet of loss itemid = 3057, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- bronze amulet itemid = 3056, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- bronze amulet itemid = 3056, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- platinum amulet itemid = 3055, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- platinum amulet itemid = 3055, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- silver amulet itemid = 3054, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- silver amulet itemid = 3054, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- time ring itemid = 3053, type = "equip", - slot = "ring" + slot = "ring", }, { -- time ring itemid = 3053, type = "deequip", - slot = "ring" + slot = "ring", }, { -- life ring itemid = 3052, type = "equip", - slot = "ring" + slot = "ring", }, { -- life ring itemid = 3052, type = "deequip", - slot = "ring" + slot = "ring", }, { -- energy ring @@ -19333,727 +19330,727 @@ local items = { { "Knight", true }, { "Paladin", true, true }, { "Elite Knight" }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- energy ring itemid = 3051, type = "deequip", - slot = "ring" + slot = "ring", }, { -- power ring itemid = 3050, type = "equip", - slot = "ring" + slot = "ring", }, { -- power ring itemid = 3050, type = "deequip", - slot = "ring" + slot = "ring", }, { -- stealth ring itemid = 3049, type = "equip", - slot = "ring" + slot = "ring", }, { -- stealth ring itemid = 3049, type = "deequip", - slot = "ring" + slot = "ring", }, { -- might ring itemid = 3048, type = "equip", - slot = "ring" + slot = "ring", }, { -- might ring itemid = 3048, type = "deequip", - slot = "ring" + slot = "ring", }, { -- strange talisman itemid = 3045, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- strange talisman itemid = 3045, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- ancient amulet itemid = 3025, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- ancient amulet itemid = 3025, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- ancient tiara itemid = 3022, type = "equip", - slot = "head" + slot = "head", }, { -- ancient tiara itemid = 3022, type = "deequip", - slot = "head" + slot = "head", }, { -- sapphire amulet itemid = 3021, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- sapphire amulet itemid = 3021, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- demonbone amulet itemid = 3019, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- demonbone amulet itemid = 3019, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- scarab amulet itemid = 3018, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- scarab amulet itemid = 3018, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- ruby necklace itemid = 3016, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- ruby necklace itemid = 3016, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- silver necklace itemid = 3015, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- silver necklace itemid = 3015, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- star amulet itemid = 3014, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- star amulet itemid = 3014, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- golden amulet itemid = 3013, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- golden amulet itemid = 3013, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- wolf tooth chain itemid = 3012, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- wolf tooth chain itemid = 3012, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- crown itemid = 3011, type = "equip", - slot = "head" + slot = "head", }, { -- crown itemid = 3011, type = "deequip", - slot = "head" + slot = "head", }, { -- bronze necklace itemid = 3009, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- bronze necklace itemid = 3009, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- crystal necklace itemid = 3008, type = "equip", - slot = "necklace" + slot = "necklace", }, { -- crystal necklace itemid = 3008, type = "deequip", - slot = "necklace" + slot = "necklace", }, { -- crystal ring itemid = 3007, type = "equip", - slot = "ring" + slot = "ring", }, { -- crystal ring itemid = 3007, type = "deequip", - slot = "ring" + slot = "ring", }, { -- ring of the sky itemid = 3006, type = "equip", - slot = "ring" + slot = "ring", }, { -- ring of the sky itemid = 3006, type = "deequip", - slot = "ring" + slot = "ring", }, { -- wedding ring itemid = 3004, type = "equip", - slot = "ring" + slot = "ring", }, { -- wedding ring itemid = 3004, type = "deequip", - slot = "ring" + slot = "ring", }, { -- snowball itemid = 2992, type = "equip", - slot = "hand" + slot = "hand", }, { -- snowball itemid = 2992, type = "deequip", - slot = "hand" + slot = "hand", }, { -- golden backpack itemid = 2871, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- golden backpack itemid = 2871, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- grey backpack itemid = 2870, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- grey backpack itemid = 2870, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- blue backpack itemid = 2869, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- blue backpack itemid = 2869, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- purple backpack itemid = 2868, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- purple backpack itemid = 2868, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- red backpack itemid = 2867, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- red backpack itemid = 2867, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- yellow backpack itemid = 2866, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- yellow backpack itemid = 2866, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- green backpack itemid = 2865, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- green backpack itemid = 2865, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- golden bag itemid = 2863, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- golden bag itemid = 2863, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- grey bag itemid = 2862, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- grey bag itemid = 2862, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- blue bag itemid = 2861, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- blue bag itemid = 2861, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- purple bag itemid = 2860, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- purple bag itemid = 2860, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- red bag itemid = 2859, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- red bag itemid = 2859, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- yellow bag itemid = 2858, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- yellow bag itemid = 2858, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- green bag itemid = 2857, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- green bag itemid = 2857, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- backpack itemid = 2854, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- backpack itemid = 2854, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- bag itemid = 2853, type = "equip", - slot = "backpack" + slot = "backpack", }, { -- bag itemid = 2853, type = "deequip", - slot = "backpack" + slot = "backpack", }, { -- searing fire itemid = 2138, - type = "stepin" + type = "stepin", }, { -- searing fire itemid = 2138, - type = "additem" + type = "additem", }, { -- searing fire itemid = 2137, - type = "stepin" + type = "stepin", }, { -- searing fire itemid = 2137, - type = "additem" + type = "additem", }, { -- smoke itemid = 2136, - type = "stepin" + type = "stepin", }, { -- smoke itemid = 2136, - type = "additem" + type = "additem", }, { -- energy field itemid = 2135, - type = "stepin" + type = "stepin", }, { -- energy field itemid = 2135, - type = "additem" + type = "additem", }, { -- poison gas itemid = 2134, - type = "stepin" + type = "stepin", }, { -- poison gas itemid = 2134, - type = "additem" + type = "additem", }, { -- fire field itemid = 2133, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2133, - type = "additem" + type = "additem", }, { -- fire field itemid = 2132, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2132, - type = "additem" + type = "additem", }, { -- fire field itemid = 21465, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 21465, - type = "additem" + type = "additem", }, { -- rush wood itemid = 2130, - type = "stepin" + type = "stepin", }, { -- rush wood itemid = 2130, - type = "additem" + type = "additem", }, { -- magic wall itemid = 2129, - type = "stepin" + type = "stepin", }, { -- magic wall itemid = 2129, - type = "additem" + type = "additem", }, { -- magic wall itemid = 2128, - type = "stepin" + type = "stepin", }, { -- magic wall itemid = 2128, - type = "additem" + type = "additem", }, { -- poison field itemid = 2121, - type = "stepin" + type = "stepin", }, { -- poison field itemid = 2121, - type = "additem" + type = "additem", }, { -- energy field itemid = 2126, - type = "stepin" + type = "stepin", }, { -- energy field itemid = 2126, - type = "additem" + type = "additem", }, { -- fire field itemid = 2125, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2125, - type = "additem" + type = "additem", }, { -- fire field itemid = 2124, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2124, - type = "additem" + type = "additem", }, { -- fire field itemid = 2123, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2123, - type = "additem" + type = "additem", }, { -- energy field itemid = 2122, - type = "stepin" + type = "stepin", }, { -- energy field itemid = 2122, - type = "additem" + type = "additem", }, { -- poison field itemid = 105, - type = "stepin" + type = "stepin", }, { -- poison field itemid = 105, - type = "additem" + type = "additem", }, { -- fire field itemid = 2120, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2120, - type = "additem" + type = "additem", }, { -- fire field itemid = 2119, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2119, - type = "additem" + type = "additem", }, { -- fire field itemid = 2118, - type = "stepin" + type = "stepin", }, { -- fire field itemid = 2118, - type = "additem" + type = "additem", }, { -- campfire itemid = 2000, - type = "stepin" + type = "stepin", }, { -- campfire itemid = 2000, - type = "additem" + type = "additem", }, { -- campfire itemid = 1999, - type = "stepin" + type = "stepin", }, { -- campfire itemid = 1999, - type = "additem" + type = "additem", }, { -- campfire itemid = 1998, - type = "stepin" + type = "stepin", }, { -- campfire itemid = 1998, - type = "additem" + type = "additem", }, { -- small stone itemid = 1781, type = "equip", - slot = "hand" + slot = "hand", }, { -- small stone itemid = 1781, type = "deequip", - slot = "hand" - } + slot = "hand", + }, } for _, i in ipairs(items) do local movement = MoveEvent() movement:id(i.itemid or i.itemId) - if (i.type) then + if i.type then movement:type(i.type) end - if (i.slot) then + if i.slot then movement:slot(i.slot) end - if (i.level) then + if i.level then movement:level(i.level) end - if (i.vocation) then + if i.vocation then for _, v in ipairs(i.vocation) do movement:vocation(v[1], v[2] or false, v[3] or false) end diff --git a/data-otservbr-global/scripts/movements/oramond/oramond_entrance.lua b/data-otservbr-global/scripts/movements/oramond/oramond_entrance.lua index 0c2341efbb6..e660d10ef56 100644 --- a/data-otservbr-global/scripts/movements/oramond/oramond_entrance.lua +++ b/data-otservbr-global/scripts/movements/oramond/oramond_entrance.lua @@ -1,6 +1,6 @@ local portals = { - [50500] = { position = Position(33539, 32014, 6), message = 'Slrrp!' }, --entrance - [50501] = { position = Position(33491, 31985, 7), message = 'Slrrp!' }, --exit + [50500] = { position = Position(33539, 32014, 6), message = "Slrrp!" }, --entrance + [50501] = { position = Position(33491, 31985, 7), message = "Slrrp!" }, --exit } local oramondEntrance = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/oramond/seacrest.lua b/data-otservbr-global/scripts/movements/oramond/seacrest.lua index f003a3202d8..ba55979030b 100644 --- a/data-otservbr-global/scripts/movements/oramond/seacrest.lua +++ b/data-otservbr-global/scripts/movements/oramond/seacrest.lua @@ -9,10 +9,10 @@ function oramondSeacrest.onStepIn(creature, item, position, fromPosition) local headItem = player:getSlotItem(CONST_SLOT_HEAD) if headItem and table.contains({ 5460, 11585, 13995 }, headItem.itemid) then player:teleportTo(Position(33552, 31775, 13)) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You enter the seacrest ground.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You enter the seacrest ground.") else player:teleportTo(Position(33544, 31861, 7)) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You must wear an underwater exploration helmet in order to dive.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must wear an underwater exploration helmet in order to dive.") end return true end diff --git a/data-otservbr-global/scripts/movements/oramond/teleport.lua b/data-otservbr-global/scripts/movements/oramond/teleport.lua index 2671008ab3e..3e1509a3e60 100644 --- a/data-otservbr-global/scripts/movements/oramond/teleport.lua +++ b/data-otservbr-global/scripts/movements/oramond/teleport.lua @@ -1,15 +1,15 @@ local setting = { - [50510] = { position = Position(33459, 31715, 9), message = 'Slrrp!', premium = false }, --entrance - [50511] = { position = Position(33668, 31887, 5), message = 'Slrrp!', premium = false }, --exit + [50510] = { position = Position(33459, 31715, 9), message = "Slrrp!", premium = false }, --entrance + [50511] = { position = Position(33668, 31887, 5), message = "Slrrp!", premium = false }, --exit - [50512] = { position = Position(31254, 32604, 9), message = 'Slrrp!', premium = false }, --minos entrance - [50513] = { position = Position(31061, 32605, 9), message = 'Slrrp!', premium = false }, --golens entrance + [50512] = { position = Position(31254, 32604, 9), message = "Slrrp!", premium = false }, --minos entrance + [50513] = { position = Position(31061, 32605, 9), message = "Slrrp!", premium = false }, --golens entrance - [50514] = { position = Position(33668, 31887, 5), message = 'Slrrp!', premium = false }, --minos exit - [50515] = { position = Position(33668, 31887, 5), message = 'Slrrp!', premium = false }, --golens exit + [50514] = { position = Position(33668, 31887, 5), message = "Slrrp!", premium = false }, --minos exit + [50515] = { position = Position(33668, 31887, 5), message = "Slrrp!", premium = false }, --golens exit - [50624] = { position = Position(33668, 31887, 5), message = 'Slrrp!', premium = false }, --minos exit - [50625] = { position = Position(33668, 31887, 5), message = 'Slrrp!', premium = false }, --golens exit + [50624] = { position = Position(33668, 31887, 5), message = "Slrrp!", premium = false }, --minos exit + [50625] = { position = Position(33668, 31887, 5), message = "Slrrp!", premium = false }, --golens exit } local oramondTeleports = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/oramond/voting_oramond.lua b/data-otservbr-global/scripts/movements/oramond/voting_oramond.lua index ede8f320926..50d19afcaf9 100644 --- a/data-otservbr-global/scripts/movements/oramond/voting_oramond.lua +++ b/data-otservbr-global/scripts/movements/oramond/voting_oramond.lua @@ -5,7 +5,7 @@ local setting = { ["Thursday"] = Position(33459, 31715, 9), --Catacombs ["Friday"] = Position(33459, 31715, 9), --Catacombs ["Saturday"] = Position(31254, 32604, 9), --Minos - ["Sunday"] = Position(33459, 31715, 9) --Catacombs + ["Sunday"] = Position(33459, 31715, 9), --Catacombs } local votingOramond = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/others/dawnport_tiles.lua b/data-otservbr-global/scripts/movements/others/dawnport_tiles.lua index 2ce6d298648..79939fc42ed 100644 --- a/data-otservbr-global/scripts/movements/others/dawnport_tiles.lua +++ b/data-otservbr-global/scripts/movements/others/dawnport_tiles.lua @@ -3,19 +3,19 @@ local chestRooms = { [25010] = { destination = { x = 32054, y = 31883, z = 6 } }, [25011] = { destination = { x = 32073, y = 31883, z = 6 } }, [25012] = { destination = { x = 32059, y = 31883, z = 6 } }, - [25013] = { destination = { x = 32068, y = 31883, z = 6 } } + [25013] = { destination = { x = 32068, y = 31883, z = 6 } }, }, exits = { [25014] = { vocation = VOCATION.ID.SORCERER, destination = { x = 32054, y = 31879, z = 6 } }, [25015] = { vocation = VOCATION.ID.DRUID, destination = { x = 32073, y = 31879, z = 6 } }, [25016] = { vocation = VOCATION.ID.PALADIN, destination = { x = 32059, y = 31879, z = 6 } }, - [25017] = { vocation = VOCATION.ID.KNIGHT, destination = { x = 32068, y = 31879, z = 6 } } - } + [25017] = { vocation = VOCATION.ID.KNIGHT, destination = { x = 32068, y = 31879, z = 6 } }, + }, } local effects = { CONST_ME_TUTORIALARROW, - CONST_ME_TUTORIALSQUARE + CONST_ME_TUTORIALSQUARE, } local chestRoomTile = MoveEvent() @@ -29,17 +29,11 @@ function chestRoomTile.onStepIn(creature, item, position, fromPosition) if chestRoomExit then if player:getVocation():getId() == chestRoomExit.vocation then if player:getStorageValue(Storage.Quest.U10_55.Dawnport.VocationReward) == -1 then - player:sendTextMessage( - MESSAGE_EVENT_ADVANCE, - "You should check the chest for your " .. player:getVocation():getName() .. " equipment." - ) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You should check the chest for your " .. player:getVocation():getName() .. " equipment.") elseif player:getStorageValue(Storage.Quest.U10_55.Dawnport.VocationReward) == 1 then player:teleportTo(chestRoomExit.destination, true) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:sendTextMessage( - MESSAGE_EVENT_ADVANCE, - "You should leave for the Mainland now. Go left to reach the ship." - ) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You should leave for the Mainland now. Go left to reach the ship.") end elseif player:getVocation():getId() ~= chestRoomExit.vocation then player:teleportTo(chestRoomExit.destination, true) @@ -79,10 +73,7 @@ function templeStairs.onStepIn(creature, item, position, fromPosition) return true end if player:getStorageValue(Storage.Dawnport.DoorVocation) == player:getVocation():getId() then - player:sendTextMessage( - MESSAGE_EVENT_ADVANCE, - "You cannot go upstairs. You have chosen a vocation and must now leave for the Mainlands." - ) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You cannot go upstairs. You have chosen a vocation and must now leave for the Mainlands.") player:teleportTo({ x = 32063, y = 31891, z = 6 }, true) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) elseif player:getLevel() >= 20 then @@ -130,10 +121,7 @@ function tutorialTile1.onStepIn(creature, item, position, fromPosition) return true end if player:getStorageValue(Storage.Quest.U10_55.Dawnport.Questline) < 1 then - player:sendTextMessage( - MESSAGE_EVENT_ADVANCE, - "Welcome to Dawnport! Walk around and explore on your own, or talk to Inigo if you need directions." - ) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Welcome to Dawnport! Walk around and explore on your own, or talk to Inigo if you need directions.") player:sendTutorial(2) player:setStorageValue(Storage.Quest.U10_55.Dawnport.Questline, 1) player:setStorageValue(Storage.Quest.U10_55.Dawnport.GoMain, 1) @@ -174,10 +162,7 @@ function tutorialTile3.onStepIn(creature, item, position, fromPosition) return true end if player:getStorageValue(Storage.Dawnport.Tutorial) ~= 0 then - player:sendTextMessage( - MESSAGE_EVENT_ADVANCE, - "To walk on STAIRS, use your arrow keys on your keyboard. You can also use them to walk in general." - ) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "To walk on STAIRS, use your arrow keys on your keyboard. You can also use them to walk in general.") player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:setStorageValue(Storage.Dawnport.Tutorial, 0) end @@ -189,7 +174,7 @@ local positions = { { x = 32074, y = 31896, z = 5 }, { x = 32073, y = 31896, z = 5 }, { x = 32072, y = 31896, z = 5 }, - { x = 32072, y = 31895, z = 5 } + { x = 32072, y = 31895, z = 5 }, } for i = 1, #positions do @@ -231,7 +216,7 @@ local positions = { { x = 32079, y = 31892, z = 6 }, { x = 32063, y = 31875, z = 6 }, { x = 32064, y = 31875, z = 6 }, - { x = 32065, y = 31875, z = 6 } + { x = 32065, y = 31875, z = 6 }, } for i = 1, #positions do diff --git a/data-otservbr-global/scripts/movements/others/dawnport_vocation_trial.lua b/data-otservbr-global/scripts/movements/others/dawnport_vocation_trial.lua index a3a66a375da..faf2c2caee9 100644 --- a/data-otservbr-global/scripts/movements/others/dawnport_vocation_trial.lua +++ b/data-otservbr-global/scripts/movements/others/dawnport_vocation_trial.lua @@ -1,6 +1,6 @@ local tutorialEffects = { CONST_ME_TUTORIALARROW, - CONST_ME_TUTORIALSQUARE + CONST_ME_TUTORIALSQUARE, } local vocationTrials = { @@ -16,13 +16,13 @@ local vocationTrials = { outfit = { lookType = { [PLAYERSEX_FEMALE] = 138, - [PLAYERSEX_MALE] = 130 + [PLAYERSEX_MALE] = 130, }, lookHead = 95, lookBody = 109, lookLegs = 112, - lookFeet = 128 - } + lookFeet = 128, + }, }, items = { { id = 21348, amount = 1, slot = CONST_SLOT_LEFT }, -- The scorcher @@ -31,8 +31,8 @@ local vocationTrials = { { id = 268, amount = 10, storage = Storage.Dawnport.SorcererManaPotion, limit = 1 }, -- Mana potion { id = 21352, amount = 2, storage = Storage.Dawnport.SorcererLightestMissile, limit = 1 }, -- Lightest missile runes { id = 21351, amount = 2, storage = Storage.Dawnport.SorcererLightStoneShower, limit = 1 }, -- Light stone shower runes - { id = 3577, amount = 1, storage = Storage.Dawnport.SorcererMeat, limit = 1 } -- Meat - } + { id = 3577, amount = 1, storage = Storage.Dawnport.SorcererMeat, limit = 1 }, -- Meat + }, }, -- Druid trial [25006] = { @@ -46,13 +46,13 @@ local vocationTrials = { outfit = { lookType = { [PLAYERSEX_FEMALE] = 138, - [PLAYERSEX_MALE] = 130 + [PLAYERSEX_MALE] = 130, }, lookHead = 95, lookBody = 123, lookLegs = 9, - lookFeet = 118 - } + lookFeet = 118, + }, }, items = { { id = 21350, amount = 1, slot = CONST_SLOT_LEFT }, -- The chiller @@ -61,8 +61,8 @@ local vocationTrials = { { id = 268, amount = 10, storage = Storage.Dawnport.DruidManaPotion, limit = 1 }, -- Mana potion { id = 21352, amount = 2, storage = Storage.Dawnport.DruidLightestMissile, limit = 1 }, -- Lightest missile runes { id = 21351, amount = 2, storage = Storage.Dawnport.DruidLightStoneShower, limit = 1 }, -- Light stone shower runes - { id = 3577, amount = 1, storage = Storage.Dawnport.DruidMeat, limit = 1 } -- Meat - } + { id = 3577, amount = 1, storage = Storage.Dawnport.DruidMeat, limit = 1 }, -- Meat + }, }, -- Paladin trial [25007] = { @@ -76,13 +76,13 @@ local vocationTrials = { outfit = { lookType = { [PLAYERSEX_FEMALE] = 137, - [PLAYERSEX_MALE] = 129 + [PLAYERSEX_MALE] = 129, }, lookHead = 95, lookBody = 117, lookLegs = 98, - lookFeet = 78 - } + lookFeet = 78, + }, }, items = { { id = 3350, amount = 1, slot = CONST_SLOT_LEFT }, -- Bow @@ -92,8 +92,8 @@ local vocationTrials = { { id = 268, amount = 5, storage = Storage.Dawnport.PaladinManaPotion, limit = 1 }, -- Mana potion { id = 21352, amount = 1, storage = Storage.Dawnport.PaladinLightestMissile, limit = 1 }, -- Lightest missile rune { id = 21351, amount = 1, storage = Storage.Dawnport.PaladinLightStoneShower, limit = 1 }, -- Light stone shower rune - { id = 3577, amount = 1, storage = Storage.Dawnport.PaladinMeat, limit = 1 } -- Meat - } + { id = 3577, amount = 1, storage = Storage.Dawnport.PaladinMeat, limit = 1 }, -- Meat + }, }, -- Knight trial [25008] = { @@ -107,22 +107,22 @@ local vocationTrials = { outfit = { lookType = { [PLAYERSEX_FEMALE] = 139, - [PLAYERSEX_MALE] = 131 + [PLAYERSEX_MALE] = 131, }, lookHead = 95, lookBody = 38, lookLegs = 94, - lookFeet = 115 - } + lookFeet = 115, + }, }, items = { { id = 3267, amount = 1, slot = CONST_SLOT_LEFT }, -- Dagger { id = 3412, amount = 1, slot = CONST_SLOT_RIGHT }, -- Wooden shield { id = 7876, amount = 10, storage = Storage.Dawnport.KnightHealthPotion, limit = 1 }, -- Health potion { id = 268, amount = 2, storage = Storage.Dawnport.KnightManaPotion, limit = 1 }, -- Mana potion - { id = 3577, amount = 1, storage = Storage.Dawnport.KnightMeat, limit = 1 } -- Meat - } - } + { id = 3577, amount = 1, storage = Storage.Dawnport.KnightMeat, limit = 1 }, -- Meat + }, + }, } -- First items, added only in first step and having no vocation @@ -132,8 +132,8 @@ local function addFirstItems(player) [CONST_SLOT_HEAD] = Game.createItem(3355), [CONST_SLOT_ARMOR] = Game.createItem(3562), [CONST_SLOT_LEGS] = Game.createItem(3559), - [CONST_SLOT_FEET] = Game.createItem(3552) - } + [CONST_SLOT_FEET] = Game.createItem(3552), + }, } for slot, item in pairs(firstItems.slots) do local ret = player:addItemEx(item, false, sot) @@ -152,19 +152,24 @@ local function tileStep(player, trial) Position(trial.effectPosition):sendMagicEffect(tutorialEffects[i]) end player:sendTutorial(trial.tutorialId) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "As this is the first time you try out a vocation, the Guild has kitted you out. " .. trial.message) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "As this is the first time you try out a vocation, the Guild has kitted you out. " .. trial.message) addFirstItems(player) -- Second step elseif player:getStorageValue(trial.storage) == -1 and vocationId ~= VOCATION.ID.NONE then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("As this is your first time as a \z - " .. trial.vocation.name .. ', you received a few extra items. ' .. trial.message)) + player:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + string.format("As this is your first time as a \z + " .. trial.vocation.name .. ", you received a few extra items. " .. trial.message) + ) player:setStorageValue(trial.storage, 1) player:sendTutorial(trial.tutorialId) -- Other steps elseif player:getStorageValue(trial.storage) == 1 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("You have received the weapons of a \z - " .. trial.vocation.name .. '. ' .. trial.message)) + player:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + string.format("You have received the weapons of a \z + " .. trial.vocation.name .. ". " .. trial.message) + ) end return true end @@ -178,7 +183,7 @@ local function removeItems(player) 3350, -- Bow 3267, -- Dagger 3412, -- Wooden shield - 35562 -- Quiver + 35562, -- Quiver } for i = 1, #equipmentItemIds do local equipmentItemAmount = player:getItemCount(equipmentItemIds[i]) @@ -239,7 +244,7 @@ local function setOutfit(player, outfit) lookLegs = outfit.lookLegs, lookFeet = outfit.lookFeet, lookAddons = 0, - lookMount = 0 + lookMount = 0, }) end diff --git a/data-otservbr-global/scripts/movements/others/dough.lua b/data-otservbr-global/scripts/movements/others/dough.lua index 4322e04011c..73adf73377d 100644 --- a/data-otservbr-global/scripts/movements/others/dough.lua +++ b/data-otservbr-global/scripts/movements/others/dough.lua @@ -1,6 +1,6 @@ local pastries = { [3604] = 3600, - [6276] = 6277 + [6276] = 6277, } local dough = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/others/swimming.lua b/data-otservbr-global/scripts/movements/others/swimming.lua index 642039eaf39..eee6858a1ce 100644 --- a/data-otservbr-global/scripts/movements/others/swimming.lua +++ b/data-otservbr-global/scripts/movements/others/swimming.lua @@ -3,10 +3,16 @@ condition:setOutfit({ lookType = 267 }) condition:setTicks(-1) local conditions = { - CONDITION_POISON, CONDITION_FIRE, CONDITION_ENERGY, - CONDITION_PARALYZE, CONDITION_DRUNK, CONDITION_DROWN, - CONDITION_FREEZING, CONDITION_DAZZLED, CONDITION_CURSED, - CONDITION_BLEEDING + CONDITION_POISON, + CONDITION_FIRE, + CONDITION_ENERGY, + CONDITION_PARALYZE, + CONDITION_DRUNK, + CONDITION_DROWN, + CONDITION_FREEZING, + CONDITION_DAZZLED, + CONDITION_CURSED, + CONDITION_BLEEDING, } local swimming = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/others/trap.lua b/data-otservbr-global/scripts/movements/others/trap.lua index 30d0e5c49ff..155209b7245 100644 --- a/data-otservbr-global/scripts/movements/others/trap.lua +++ b/data-otservbr-global/scripts/movements/others/trap.lua @@ -3,7 +3,7 @@ local traps = { [2148] = { damage = { -50, -100 } }, [3482] = { transformTo = 3481, damage = { -15, -30 }, ignorePlayer = (Game.getWorldType() == WORLD_TYPE_NO_PVP) }, [3944] = { transformTo = 3945, damage = { -15, -30 }, type = COMBAT_EARTHDAMAGE }, - [12368] = { ignorePlayer = true } + [12368] = { ignorePlayer = true }, } local trap = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/others/walkback.lua b/data-otservbr-global/scripts/movements/others/walkback.lua index 73098396e5c..605c70647c4 100644 --- a/data-otservbr-global/scripts/movements/others/walkback.lua +++ b/data-otservbr-global/scripts/movements/others/walkback.lua @@ -9,7 +9,7 @@ function walkback.onStepIn(creature, item, position, fromPosition) return true end - if (Container(item.uid) and not table.contains(SPECIAL_QUESTS, item.actionid) and item.uid > 65535) then + if Container(item.uid) and not table.contains(SPECIAL_QUESTS, item.actionid) and item.uid > 65535 then return true end diff --git a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/gnomebase_teleport.lua b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/gnomebase_teleport.lua index d289e91ab39..5878882c7ec 100644 --- a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/gnomebase_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/gnomebase_teleport.lua @@ -6,10 +6,11 @@ local teleports = { { x = 32403, y = 32818, z = 6 }, { x = 33187, y = 32384, z = 8 }, { x = 32196, y = 31183, z = 8 }, - { x = 33154, y = 31834, z = 10 } }, + { x = 33154, y = 31834, z = 10 }, + }, destination = Position(32801, 31766, 9), storageValue = 1, - needCrystal = true + needCrystal = true, }, { teleportPosition = { x = 32803, y = 31798, z = 9 }, destination = Position(32627, 31864, 11), storageValue = 1, needCrystal = true }, { teleportPosition = { x = 32795, y = 31761, z = 10 }, destination = Position(33000, 31870, 13), storageValue = 1 }, @@ -28,7 +29,7 @@ local teleports = { { teleportPosition = { x = 32831, y = 31797, z = 9 }, destination = Position(33153, 31833, 10), storageValue = 1, needCrystal = true }, { teleportPosition = { x = 32827, y = 31757, z = 9 }, destination = Position(33186, 32385, 8), storageValue = 1, needCrystal = true }, { teleportPosition = { x = 32789, y = 31796, z = 10 }, destination = Position(32771, 31800, 10), storageValue = 25, needCrystal = false }, - { teleportPosition = { x = 32772, y = 31799, z = 10 }, destination = Position(32790, 31795, 10), storageValue = 25, needCrystal = false } + { teleportPosition = { x = 32772, y = 31799, z = 10 }, destination = Position(32790, 31795, 10), storageValue = 25, needCrystal = false }, } local gnomebaseTeleport = MoveEvent() @@ -45,7 +46,7 @@ function gnomebaseTeleport.onStepIn(creature, item, position, fromPosition) if player:getStorageValue(Storage.BigfootBurden.QuestLine) < 1 then fromPosition:sendMagicEffect(CONST_ME_POFF) player:teleportTo(fromPosition) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have no idea on how to use this device. Xelvar in Kazordoon might tell you more about it.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have no idea on how to use this device. Xelvar in Kazordoon might tell you more about it.") return false end @@ -70,7 +71,7 @@ function gnomebaseTeleport.onStepIn(creature, item, position, fromPosition) else fromPosition:sendMagicEffect(CONST_ME_POFF) player:teleportTo(fromPosition) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You need a teleport crystal in order to use this device.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You need a teleport crystal in order to use this device.") end end end @@ -78,7 +79,7 @@ function gnomebaseTeleport.onStepIn(creature, item, position, fromPosition) if player:getStorageValue(Storage.BigfootBurden.QuestLine) < 1 then fromPosition:sendMagicEffect(CONST_ME_POFF) player:teleportTo(fromPosition) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have no idea on how to use this device. Xelvar in Kazordoon might tell you more about it.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have no idea on how to use this device. Xelvar in Kazordoon might tell you more about it.") return false end @@ -103,7 +104,7 @@ function gnomebaseTeleport.onStepIn(creature, item, position, fromPosition) else fromPosition:sendMagicEffect(CONST_ME_POFF) player:teleportTo(fromPosition) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You need a teleport crystal in order to use this device.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You need a teleport crystal in order to use this device.") end end end diff --git a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_ear.lua b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_ear.lua index e8b9601bdcd..41770076e5b 100644 --- a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_ear.lua +++ b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_ear.lua @@ -6,7 +6,7 @@ local messages = { { "Gnomedix: I need a drill! Gnomenursey, quick!" }, { "Gnomedix: Hold still now! This might tickle a little..", CONST_ME_STUN }, { "Gnomedix: Take this, you evil ... whatever you are!" }, - { "Gnomedix: I got it! Yikes! What was that? Uhm, well ... you passed the ear examination. Talk to Gnomaticus for your next test.", CONST_ME_BLOCKHIT } + { "Gnomedix: I got it! Yikes! What was that? Uhm, well ... you passed the ear examination. Talk to Gnomaticus for your next test.", CONST_ME_BLOCKHIT }, } local function sendTextMessages(cid, index) @@ -27,8 +27,7 @@ local function sendTextMessages(cid, index) if messages[index][2] then player:getPosition():sendMagicEffect(messages[index][2]) end - player:setStorageValue(Storage.BigfootBurden.GnomedixMsg, - player:getStorageValue(Storage.BigfootBurden.GnomedixMsg) + 1) + player:setStorageValue(Storage.BigfootBurden.GnomedixMsg, player:getStorageValue(Storage.BigfootBurden.GnomedixMsg) + 1) if index == 8 then Game.createMonster("Strange Slime", Position(32767, 31772, 10)) player:setStorageValue(Storage.BigfootBurden.QuestLine, 11) diff --git a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_shooting.lua b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_shooting.lua index 93df4f91f70..f8f65c6df79 100644 --- a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_shooting.lua +++ b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_shooting.lua @@ -24,7 +24,7 @@ end local shootingPos = { { x = 32751, y = 31789, z = 10 }, { x = 32753, y = 31789, z = 10 }, - { x = 32755, y = 31789, z = 10 } + { x = 32755, y = 31789, z = 10 }, } local taskShooting = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_truffles.lua b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_truffles.lua index 72a8ef3b5a1..8c1d5bf688d 100644 --- a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_truffles.lua +++ b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_truffles.lua @@ -1,7 +1,7 @@ local taskTruffles = MoveEvent() function taskTruffles.onStepIn(creature, item, position, fromPosition) - if creature:getName():lower() ~= 'mushroom sniffer' then + if creature:getName():lower() ~= "mushroom sniffer" then return true end diff --git a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_x_ray.lua b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_x_ray.lua index 6ca4f6b4537..c16d3e81df9 100644 --- a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_x_ray.lua +++ b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/task_x_ray.lua @@ -17,7 +17,7 @@ local xRay = { { x = 32764, y = 31763, z = 10 }, -- Endline { x = 32765, y = 31763, z = 10 }, { x = 32766, y = 31763, z = 10 }, - { x = 32767, y = 31763, z = 10 } + { x = 32767, y = 31763, z = 10 }, } local condition = Condition(CONDITION_OUTFIT) diff --git a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/versperoth_spawn.lua b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/versperoth_spawn.lua index 7cb75d6bef0..78a9a5d9da9 100644 --- a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/versperoth_spawn.lua +++ b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/versperoth_spawn.lua @@ -36,7 +36,7 @@ local function executeVersperothBattle(mid) local position, minionMonster for i = 1, 10 do position = Position(math.random(33070, 33081), math.random(31874, 31883), 12) - minionMonster = Game.createMonster('Minion of Versperoth', position) + minionMonster = Game.createMonster("Minion of Versperoth", position) position:sendMagicEffect(CONST_ME_TELEPORT) if minionMonster then addEvent(removeMinion, 20 * 1000, minionMonster:getId()) @@ -46,7 +46,7 @@ local function executeVersperothBattle(mid) return end - local monster = Game.createMonster('Versperoth', versperothPosition, false, true) + local monster = Game.createMonster("Versperoth", versperothPosition, false, true) if monster then local holee = Tile(versperothPosition):getItemById(16172) if holee then diff --git a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/warzone_boss.lua b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/warzone_boss.lua index b95f64d82af..06ef06a5630 100644 --- a/data-otservbr-global/scripts/movements/quests/bigfoot_burden/warzone_boss.lua +++ b/data-otservbr-global/scripts/movements/quests/bigfoot_burden/warzone_boss.lua @@ -12,7 +12,7 @@ end local function spawnBoss(inf) local boss = Game.createMonster(inf.boss, inf.bossResp) - boss:registerEvent('BossWarzoneDeath') + boss:registerEvent("BossWarzoneDeath") end local warzoneBoss = MoveEvent() @@ -35,8 +35,11 @@ function warzoneBoss.onStepIn(creature, item, pos, fromPosition) end if warzone.locked then - creature:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Please, wait until the room is cleared. \z - This happens 30 minutes after the last team entered.") + creature:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + "Please, wait until the room is cleared. \z + This happens 30 minutes after the last team entered." + ) creature:teleportTo(fromPosition) return true end diff --git a/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/click.lua b/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/click.lua index fcb158f2e1a..b2a7bde94f2 100644 --- a/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/click.lua +++ b/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/click.lua @@ -1,9 +1,9 @@ local config = { positions = { - ({ x = 33258, y = 31080, z = 8 }), - ({ x = 33266, y = 31084, z = 8 }), - ({ x = 33259, y = 31089, z = 8 }), - ({ x = 33263, y = 31093, z = 8 }) + { x = 33258, y = 31080, z = 8 }, + { x = 33266, y = 31084, z = 8 }, + { x = 33259, y = 31089, z = 8 }, + { x = 33263, y = 31093, z = 8 }, }, stairPosition = Position(33265, 31116, 8), areaCenter = Position(33268, 31119, 7), @@ -11,14 +11,14 @@ local config = { summonArea = { from = Position(33252, 31105, 7), - to = Position(33288, 31134, 7) + to = Position(33288, 31134, 7), }, waves = { - { monster = 'eternal guardian', size = 20 }, - { monster = 'eternal guardian', size = 20 }, - { monster = 'eternal guardian', size = 20 }, - { monster = 'lizard chosen', size = 20 } - } + { monster = "eternal guardian", size = 20 }, + { monster = "eternal guardian", size = 20 }, + { monster = "eternal guardian", size = 20 }, + { monster = "lizard chosen", size = 20 }, + }, } function doClearMissionArea() @@ -66,8 +66,7 @@ function click.onStepIn(creature, item, position, fromPosition) return true end - if player:getStorageValue(Storage.ChildrenoftheRevolution.Questline) ~= 19 - or Game.getStorageValue(Storage.ChildrenoftheRevolution.Mission05) == 1 then + if player:getStorageValue(Storage.ChildrenoftheRevolution.Questline) ~= 19 or Game.getStorageValue(Storage.ChildrenoftheRevolution.Mission05) == 1 then return true end @@ -75,12 +74,12 @@ function click.onStepIn(creature, item, position, fromPosition) for i = 1, #config.positions do local creature = Tile(Position(config.positions[i])):getTopCreature() if creature and creature:isPlayer() then - players[#players+1] = creature + players[#players + 1] = creature end end for i = 1, #players do - players[i]:say('A clicking sound tatters the silence.', TALKTYPE_MONSTER_SAY) + players[i]:say("A clicking sound tatters the silence.", TALKTYPE_MONSTER_SAY) end if #players ~= #config.positions then diff --git a/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/spy.lua b/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/spy.lua index 0847e604ede..2f57f794100 100644 --- a/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/spy.lua +++ b/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/spy.lua @@ -1,13 +1,16 @@ local config = { [8009] = { storage = Storage.ChildrenoftheRevolution.SpyBuilding01, - text = "An impressive ammount of fish is stored here." }, + text = "An impressive ammount of fish is stored here.", + }, [8010] = { storage = Storage.ChildrenoftheRevolution.SpyBuilding02, - text = "A seemingly endless array of weapon stretches before you into the darkness." }, + text = "A seemingly endless array of weapon stretches before you into the darkness.", + }, [8011] = { storage = Storage.ChildrenoftheRevolution.SpyBuilding03, - text = "These barracks seem to be home for quite a lot of soldiers." } + text = "These barracks seem to be home for quite a lot of soldiers.", + }, } local spy = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/stair.lua b/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/stair.lua index df7cb1342bb..9fe3e6db9ba 100644 --- a/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/stair.lua +++ b/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/stair.lua @@ -23,7 +23,7 @@ function stair.onStepIn(creature, item, position, fromPosition) addEvent(revertStairs, 5 * 30 * 1000) end - player:say('The area around the gate is suspiciously quiet, you have a bad feeling about this.', TALKTYPE_MONSTER_SAY) + player:say("The area around the gate is suspiciously quiet, you have a bad feeling about this.", TALKTYPE_MONSTER_SAY) if player:getStorageValue(Storage.ChildrenoftheRevolution.Mission05) == 1 then --Questlog, Children of the Revolution 'Mission 5: Phantom Army' player:setStorageValue(Storage.ChildrenoftheRevolution.Mission05, 2) diff --git a/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/symbol.lua b/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/symbol.lua index 198ecdc6db3..b6b0bfe6d88 100644 --- a/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/symbol.lua +++ b/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/symbol.lua @@ -6,12 +6,11 @@ function symbol.onStepIn(creature, item, position, fromPosition) return true end - if player:getStorageValue(Storage.ChildrenoftheRevolution.StrangeSymbols) < 1 and - player:getStorageValue(Storage.ChildrenoftheRevolution.Mission03) >= 2 then + if player:getStorageValue(Storage.ChildrenoftheRevolution.StrangeSymbols) < 1 and player:getStorageValue(Storage.ChildrenoftheRevolution.Mission03) >= 2 then --Questlog, Children of the Revolution 'Mission 4: Zze Way of Zztonezz' player:setStorageValue(Storage.ChildrenoftheRevolution.Mission04, 2) player:setStorageValue(Storage.ChildrenoftheRevolution.StrangeSymbols, 1) - player:say('A part of the floor before you displays an arrangement of strange symbols.', TALKTYPE_MONSTER_SAY) + player:say("A part of the floor before you displays an arrangement of strange symbols.", TALKTYPE_MONSTER_SAY) end return true end diff --git a/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/teleport.lua b/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/teleport.lua index 061f782cf5f..50148b07d2f 100644 --- a/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/teleport.lua @@ -1,6 +1,6 @@ local positions = { { x = 33356, y = 31124, z = 7 }, - { x = 33261, y = 31076, z = 8 } + { x = 33261, y = 31076, z = 8 }, } local teleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/temple.lua b/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/temple.lua index 6ca954a5b60..c178493a27d 100644 --- a/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/temple.lua +++ b/data-otservbr-global/scripts/movements/quests/children_of_the_revolution/temple.lua @@ -10,8 +10,7 @@ function temple.onStepIn(creature, item, position, fromPosition) --Questlog, Children of the Revolution 'Mission 1: Corruption' player:setStorageValue(Storage.ChildrenoftheRevolution.Mission01, 2) player:setStorageValue(Storage.ChildrenoftheRevolution.Questline, 5) - player:say('The temple has been corrupted and is lost. Zalamon should be informed about this as soon as possible.', - TALKTYPE_MONSTER_SAY) + player:say("The temple has been corrupted and is lost. Zalamon should be informed about this as soon as possible.", TALKTYPE_MONSTER_SAY) end return true end diff --git a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/begin_task.lua b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/begin_task.lua index b217c7fde56..f1bf05f4b08 100644 --- a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/begin_task.lua +++ b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/begin_task.lua @@ -24,18 +24,19 @@ function beginTask.onEquip(player, item, slot, isCheck) return true end - if player:getStorageValue(Storage.CultsOfTibia.Misguided.Mission) >= 2 and - player:getStorageValue(Storage.CultsOfTibia.Misguided.Mission) <= 3 then + if player:getStorageValue(Storage.CultsOfTibia.Misguided.Mission) >= 2 and player:getStorageValue(Storage.CultsOfTibia.Misguided.Mission) <= 3 then local equippedBefore = item:getCustomAttribute("task") or 0 - if equippedBefore ~= player:getGuid() and - player:getStorageValue(Storage.CultsOfTibia.Misguided.Monsters) < 10 then + if equippedBefore ~= player:getGuid() and player:getStorageValue(Storage.CultsOfTibia.Misguided.Monsters) < 10 then player:setStorageValue(Storage.CultsOfTibia.Misguided.Monsters, 0) item:setCustomAttribute("task", player:getGuid()) end if player:getStorageValue(Storage.CultsOfTibia.Misguided.Mission) == 2 then player:setStorageValue(Storage.CultsOfTibia.Misguided.Mission, 3) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The amulet burns your skin. \z - It hungers for energy right now, gather a large amount of energy as fast as possible to charge it. ") + player:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + "The amulet burns your skin. \z + It hungers for energy right now, gather a large amount of energy as fast as possible to charge it. " + ) end end addEvent(fallFloor, 10000, player:getId(), item:getId()) diff --git a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/boss_timer.lua b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/boss_timer.lua index 4497d6ff37c..2a1b7be1453 100644 --- a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/boss_timer.lua +++ b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/boss_timer.lua @@ -2,33 +2,33 @@ local setting = { { tpPos = { x = 33176, y = 31894, z = 15 }, tpDestination = { x = 33166, y = 31894, z = 15 }, - storage = Storage.CultsOfTibia.Minotaurs.BossTimer + storage = Storage.CultsOfTibia.Minotaurs.BossTimer, }, { tpPos = { x = 33125, y = 31950, z = 15 }, tpDestination = { x = 33136, y = 31948, z = 15 }, - storage = Storage.CultsOfTibia.Barkless.BossTimer + storage = Storage.CultsOfTibia.Barkless.BossTimer, }, { tpPos = { x = 33096, y = 31963, z = 15 }, tpDestination = { x = 33095, y = 31953, z = 15 }, - storage = Storage.CultsOfTibia.Humans.BossTimer + storage = Storage.CultsOfTibia.Humans.BossTimer, }, { tpPos = { x = 33114, y = 31887, z = 15 }, tpDestination = { x = 33131, y = 31899, z = 15 }, - storage = Storage.CultsOfTibia.Misguided.BossTimer + storage = Storage.CultsOfTibia.Misguided.BossTimer, }, { tpPos = { x = 33072, y = 31871, z = 15 }, tpDestination = { x = 33078, y = 31889, z = 15 }, - storage = Storage.CultsOfTibia.FinalBoss.BossTimer + storage = Storage.CultsOfTibia.FinalBoss.BossTimer, }, { tpPos = { x = 33178, y = 31845, z = 15 }, tpDestination = { x = 33164, y = 31866, z = 15 }, - storage = Storage.CultsOfTibia.Orcs.BossTimer - } + storage = Storage.CultsOfTibia.Orcs.BossTimer, + }, } local bossTimer = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/check_oasis.lua b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/check_oasis.lua index 57ea263b6a9..5a52cb16748 100644 --- a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/check_oasis.lua +++ b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/check_oasis.lua @@ -7,8 +7,7 @@ function checkOasis.onStepIn(creature, item, position, fromPosition) end if player:getStorageValue(Storage.CultsOfTibia.Life.Mission) == 2 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "You have found a lovely oasis with green fauna and juicy fruit. You didn't expect that.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a lovely oasis with green fauna and juicy fruit. You didn't expect that.") player:setStorageValue(Storage.CultsOfTibia.Life.Mission, 3) end return true diff --git a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/energy_fence.lua b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/energy_fence.lua index dcee01d3469..7f5314001b4 100644 --- a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/energy_fence.lua +++ b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/energy_fence.lua @@ -10,7 +10,7 @@ local misguided = { [9] = Position(32535, 32468, 10), [10] = Position(32536, 32468, 10), [11] = Position(32537, 32468, 10), - [12] = Position(32538, 32468, 10) + [12] = Position(32538, 32468, 10), } local energyFence = MoveEvent() @@ -26,33 +26,39 @@ function energyFence.onStepIn(creature, item, position, fromPosition) return false end - if position == firstCheck or position == Position(firstCheck.x + 1, firstCheck.y, firstCheck.z) or - position == Position(firstCheck.x + 2, firstCheck.y, firstCheck.z) then + if position == firstCheck or position == Position(firstCheck.x + 1, firstCheck.y, firstCheck.z) or position == Position(firstCheck.x + 2, firstCheck.y, firstCheck.z) then if player:getStorageValue(Storage.CultsOfTibia.Humans.Vaporized) == 10 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "With you being the vessel binding the power of whitered souls, you step through the magic barrier.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "With you being the vessel binding the power of whitered souls, you step through the magic barrier.") player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) else player:teleportTo(fromPosition, true) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The combined powers of decaying souls \z - roaming these halls may help breach this barrier, it needs but a vessel to bind them.") + player:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + "The combined powers of decaying souls \z + roaming these halls may help breach this barrier, it needs but a vessel to bind them." + ) end elseif position == secondCheck or position == Position(secondCheck.x + 1, secondCheck.y, secondCheck.z) then if player:getStorageValue(Storage.CultsOfTibia.Humans.Decaying) == 10 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "With you being the vessel binding the power of whitered souls, you step through the magic barrier.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "With you being the vessel binding the power of whitered souls, you step through the magic barrier.") player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) else player:teleportTo(fromPosition, true) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The combined powers of decaying souls \z - roaming these halls may help breach this barrier, it needs but a vessel to bind them.") + player:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + "The combined powers of decaying souls \z + roaming these halls may help breach this barrier, it needs but a vessel to bind them." + ) end elseif misguided then for i, position in pairs(misguided) do if player:getStorageValue(Storage.CultsOfTibia.Misguided.Exorcisms) >= 5 then player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "As you cross the threshold in to the inner \z - sanctuary of the cult of the Misguided, you feel an eerie presence all around you.") + player:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + "As you cross the threshold in to the inner \z + sanctuary of the cult of the Misguided, you feel an eerie presence all around you." + ) break else player:teleportTo(fromPosition, true) diff --git a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/ice.lua b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/ice.lua index 3581cc5df9a..fe1340bb44f 100644 --- a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/ice.lua +++ b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/ice.lua @@ -4,8 +4,8 @@ function sendConditionCults(playerid, info, fromPos, toPos, fromPos2, toPos2, ti return false end - if (not player:getPosition():isInRange(fromPos2, toPos2)) then - if (not player:getPosition():isInRange(fromPos, toPos)) then + if not player:getPosition():isInRange(fromPos2, toPos2) then + if not player:getPosition():isInRange(fromPos, toPos) then return true end end @@ -18,8 +18,7 @@ function sendConditionCults(playerid, info, fromPos, toPos, fromPos2, toPos2, ti elseif time == 90 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, info.msgs[2]) elseif time >= 120 then - local storage = player:getStorageValue(info.storageBarkless) < 0 and 0 or - player:getStorageValue(info.storageBarkless) + local storage = player:getStorageValue(info.storageBarkless) < 0 and 0 or player:getStorageValue(info.storageBarkless) if storage < 3 and storage ~= 1 and storage ~= 2 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, info.msgs[3]) player:setStorageValue(info.storageBarkless, 1) @@ -34,8 +33,7 @@ local function floorPassage(playerid, info, time) if not player then return true end - local storage = player:getStorageValue(info.storageBarkless) < 0 and 0 or - player:getStorageValue(info.storageBarkless) + local storage = player:getStorageValue(info.storageBarkless) < 0 and 0 or player:getStorageValue(info.storageBarkless) if time == 0 and storage < 3 then player:setStorageValue(info.storageBarkless, 0) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, info.msgs[6]) @@ -70,12 +68,11 @@ function ice.onStepIn(creature, item, position, fromPosition) "You are now washed and ready to purify yourself in the chambers of purification.", -- step in the first tile "You are now ready to prove your worth. Take heart and cross the threshold of ice.", -- step in the second tile "You took so long. You are no longer purified.", -- there's no time to step - } + }, } if fromPosition.y == 31441 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, setting.msgs[1]) - sendConditionCults(player:getId(), setting, setting.fromPos, - setting.toPos, setting.fromPos2, setting.toPos2, 0) + sendConditionCults(player:getId(), setting, setting.fromPos, setting.toPos, setting.fromPos2, setting.toPos2, 0) return true end diff --git a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/ice_death.lua b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/ice_death.lua index 717ad56ce2d..aff8d2462af 100644 --- a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/ice_death.lua +++ b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/ice_death.lua @@ -1,11 +1,11 @@ function Player.sendFakeDeathWindow(self) -- consider migrating to ProtocolGame::sendDeath - local msg = NetworkMessage(); - msg:addByte(0x28); - msg:addByte(0x01); - msg:addByte(2); - msg:addByte(0x00); -- Use death redemption - msg:sendToPlayer(self, false); + local msg = NetworkMessage() + msg:addByte(0x28) + msg:addByte(0x01) + msg:addByte(2) + msg:addByte(0x00) -- Use death redemption + msg:sendToPlayer(self, false) return true end @@ -34,7 +34,7 @@ local conditions = { CONDITION_EXHAUST_COMBAT, CONDITION_EXHAUST_HEAL, CONDITION_SPELLCOOLDOWN, - CONDITION_SPELLGROUPCOOLDOWN + CONDITION_SPELLGROUPCOOLDOWN, } local iceDeath = MoveEvent() @@ -61,9 +61,11 @@ function iceDeath.onStepIn(creature, item, position, fromPosition) player:addHealth((-player:getHealth() + 1)) player:sendTextMessage(MESSAGE_BEYOND_LAST, "You were killed by something evil and others.") -- TODO parse active blessings and show that you didn't lose any blessings - player:sendTextMessage(MESSAGE_BEYOND_LAST, + player:sendTextMessage( + MESSAGE_BEYOND_LAST, "You are still blessed with Wisdom of Solitude, Spark of the Phoenix,Fire of the Suns, \z - Spiritual Shielding, Embrace of Tibia, Heart of the Mountani, Blood of the Montain and Twist of Fate.") + Spiritual Shielding, Embrace of Tibia, Heart of the Mountani, Blood of the Montain and Twist of Fate." + ) player:sendTextMessage(MESSAGE_BEYOND_LAST, "You lost 0 experience and 0.00% of all of your skills.") player:sendTextMessage(MESSAGE_BEYOND_LAST, "You did not lose any items.") player:setStorageValue(Storage.CultsOfTibia.Barkless.Mission, 3) diff --git a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/looktype.lua b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/looktype.lua index 96e1a3eb885..021ccfc5aae 100644 --- a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/looktype.lua +++ b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/looktype.lua @@ -23,8 +23,7 @@ function looktype.onStepIn(creature, item, position, fromPosition) if position == secondCheck or position == Position(secondCheck.x + 1, secondCheck.y, secondCheck.z) then if player:getStorageValue(Storage.CultsOfTibia.Orcs.LookType) < 2 then if creature:getOutfit().lookType == 2 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "With the help off the might of an orc warlod you are able to pass this rift.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "With the help off the might of an orc warlod you are able to pass this rift.") player:setStorageValue(Storage.CultsOfTibia.Orcs.LookType, 2) else player:teleportTo(fromPosition, true) @@ -32,12 +31,10 @@ function looktype.onStepIn(creature, item, position, fromPosition) end end end - if position == thirdCheck or position == Position(thirdCheck.x + 1, thirdCheck.y, thirdCheck.z) or - position == Position(thirdCheck.x + 2, thirdCheck.y, thirdCheck.z) then + if position == thirdCheck or position == Position(thirdCheck.x + 1, thirdCheck.y, thirdCheck.z) or position == Position(thirdCheck.x + 2, thirdCheck.y, thirdCheck.z) then if player:getStorageValue(Storage.CultsOfTibia.Orcs.LookType) < 3 then if creature:getOutfit().lookType == 6 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "With the help of the wisdom of an orc shaman you are able to pass this rift.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "With the help of the wisdom of an orc shaman you are able to pass this rift.") player:setStorageValue(Storage.CultsOfTibia.Orcs.LookType, 3) else player:teleportTo(fromPosition, true) diff --git a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/river_teleport.lua b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/river_teleport.lua index cd7c1023f8b..a1f3a99c700 100644 --- a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/river_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/river_teleport.lua @@ -6,8 +6,8 @@ function riverTeleport.onStepIn(creature, item, position, fromPosition) return true end - if (player:getStorageValue(player:getStorageValue(Storage.CultsOfTibia.Life.BossTimer)) > os.time()) then - player:sendCancelMessage('You need to wait for 20 hours to face this boss again.') + if player:getStorageValue(player:getStorageValue(Storage.CultsOfTibia.Life.BossTimer)) > os.time() then + player:sendCancelMessage("You need to wait for 20 hours to face this boss again.") player:teleportTo(fromPosition) return false end diff --git a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/sand_entrance.lua b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/sand_entrance.lua index 154717163e6..e8937a4bdf1 100644 --- a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/sand_entrance.lua +++ b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/sand_entrance.lua @@ -14,5 +14,5 @@ function sandEntrance.onStepIn(creature, item, position, fromPosition) end sandEntrance:type("stepin") -sandEntrance:position { x = 33296, y = 32291, z = 11 } +sandEntrance:position({ x = 33296, y = 32291, z = 11 }) sandEntrance:register() diff --git a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/tar.lua b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/tar.lua index 449999e9fa2..a19273791b5 100644 --- a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/tar.lua +++ b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/tar.lua @@ -20,7 +20,7 @@ local configQuest = { You feel an urge for more of this energy.", -- step in the second tile "The tar covering you has cooled down and tell off for the most part. \z Your body is not heated up anymore.", -- there's no time to step - } + }, }, ["acid"] = { itemId = 4406, @@ -42,7 +42,7 @@ local configQuest = { Take heart and cross the threshold of sulphur.", -- step in the second tile "The acid covering you has cooled down and tell off for the most part. \z Your body is not heated up anymore.", -- there's no time to step - } + }, }, } @@ -109,8 +109,7 @@ function tar.onStepIn(creature, item, position, fromPosition) elseif position:compare(value.secondSqm) then if player:getStorageValue(value.storageBarkless) == 2 then player:setStorageValue(value.storageBarkless, 3) - if player:getStorageValue(Storage.CultsOfTibia.Barkless.sulphur) == 3 and - player:getStorageValue(Storage.CultsOfTibia.Barkless.Tar) == 3 then + if player:getStorageValue(Storage.CultsOfTibia.Barkless.sulphur) == 3 and player:getStorageValue(Storage.CultsOfTibia.Barkless.Tar) == 3 then player:setStorageValue(Storage.CultsOfTibia.Barkless.Mission, 2) end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, value.msgs[5]) diff --git a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/task_teleport.lua b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/task_teleport.lua index 9e70255108e..acf48416449 100644 --- a/data-otservbr-global/scripts/movements/quests/cults_of_tibia/task_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/cults_of_tibia/task_teleport.lua @@ -3,14 +3,14 @@ local setting = { storage = Storage.CultsOfTibia.Humans.Decaying, max = 10, text = "You absorb the energetic remains of this decaying soul. Its power is very fragile and fleeting", - effect = CONST_ME_GREEN_ENERGY_SPARK + effect = CONST_ME_GREEN_ENERGY_SPARK, }, [32414] = { storage = Storage.CultsOfTibia.Humans.Vaporized, max = 10, text = "You absorb the energetic remains of this whitering soul. Its power is very fragile and fleeting.", - effect = CONST_ME_BLUE_ENERGY_SPARK - } + effect = CONST_ME_BLUE_ENERGY_SPARK, + }, } local taskTeleport = MoveEvent() @@ -32,10 +32,9 @@ function taskTeleport.onStepIn(creature, item, position, fromPosition) local teleport = Tile(position):getItemById(index) if teleport then local storage = (player:getStorageValue(value.storage) < 0 and 0 or player:getStorageValue(value.storage)) - local attribute = teleport:getCustomAttribute("task") or '' + local attribute = teleport:getCustomAttribute("task") or "" if attribute:find(player:getName()) or storage >= value.max then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "The power of these souls is now within you. You cannot absorb any more souls.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The power of these souls is now within you. You cannot absorb any more souls.") return false end attribute = string.format("%s, %s", attribute, player:getName()) diff --git a/data-otservbr-global/scripts/movements/quests/dangerous_depth/boss_entrance.lua b/data-otservbr-global/scripts/movements/quests/dangerous_depth/boss_entrance.lua index 2dbeb0c8a7a..30af7f7676b 100644 --- a/data-otservbr-global/scripts/movements/quests/dangerous_depth/boss_entrance.lua +++ b/data-otservbr-global/scripts/movements/quests/dangerous_depth/boss_entrance.lua @@ -18,7 +18,7 @@ function bossEntrance.onStepIn(creature, item, position, fromPosition, toPositio if item:getPosition() == WarzoneIV then -- Warzone IV if player:getStorageValue(Storage.DangerousDepths.Bosses.TheBaronFromBelow) > os.time() then player:teleportTo(fromPosition) - player:say('You have to wait to challenge this enemy again!', TALKTYPE_MONSTER_SAY) + player:say("You have to wait to challenge this enemy again!", TALKTYPE_MONSTER_SAY) else player:teleportTo(WarzoneIV_b) end @@ -27,7 +27,7 @@ function bossEntrance.onStepIn(creature, item, position, fromPosition, toPositio if item:getPosition() == WarzoneV then -- Warzone V if player:getStorageValue(Storage.DangerousDepths.Bosses.TheCountOfTheCore) > os.time() then player:teleportTo(fromPosition) - player:say('You have to wait to challenge this enemy again!', TALKTYPE_MONSTER_SAY) + player:say("You have to wait to challenge this enemy again!", TALKTYPE_MONSTER_SAY) else player:teleportTo(WarzoneV_b) end @@ -36,7 +36,7 @@ function bossEntrance.onStepIn(creature, item, position, fromPosition, toPositio if item:getPosition() == WarzoneVI then -- Warzone VI if player:getStorageValue(Storage.DangerousDepths.Bosses.TheDukeOfTheDepths) > os.time() then player:teleportTo(fromPosition) - player:say('You have to wait to challenge this enemy again!', TALKTYPE_MONSTER_SAY) + player:say("You have to wait to challenge this enemy again!", TALKTYPE_MONSTER_SAY) else player:teleportTo(WarzoneVI_b) end diff --git a/data-otservbr-global/scripts/movements/quests/dangerous_depth/warzone_entrance.lua b/data-otservbr-global/scripts/movements/quests/dangerous_depth/warzone_entrance.lua index 1a6fe161fd9..0d6b38fcdd8 100644 --- a/data-otservbr-global/scripts/movements/quests/dangerous_depth/warzone_entrance.lua +++ b/data-otservbr-global/scripts/movements/quests/dangerous_depth/warzone_entrance.lua @@ -8,19 +8,19 @@ function warzoneEntrance.onStepIn(creature, item, position, fromPosition, toPosi local warzoneVI = Position(33367, 32307, 15) if item:getPosition() == Position(33829, 32128, 14) then - if player:getStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneVI) == 1 and - player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneVI) <= os.time() then + if player:getStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneVI) == 1 and player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneVI) <= os.time() then player:setStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneVI, 0) - player:setStorageValue(Storage.DangerousDepths.Scouts.Status, - player:getStorageValue(Storage.DangerousDepths.Scouts.Status) - 10) + player:setStorageValue(Storage.DangerousDepths.Scouts.Status, player:getStorageValue(Storage.DangerousDepths.Scouts.Status) - 10) player:setStorageValue(Storage.DangerousDepths.Access.TimerWarzoneVI, os.time() + 8 * 60 * 60) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Entering the warzone (you can enter freely for 8 hours from now).") player:teleportTo(warzoneVI) - elseif player:getStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneVI) < 1 and - player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneVI) <= os.time() then + elseif player:getStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneVI) < 1 and player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneVI) <= os.time() then player:teleportTo(Position(fromPosition.x + 1, fromPosition.y, fromPosition.z)) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You cannot enter this warzone. \z - The enemy still pumps lava into this area. Find a way to stop the pumps!") + player:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + "You cannot enter this warzone. \z + The enemy still pumps lava into this area. Find a way to stop the pumps!" + ) elseif player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneVI) > os.time() then player:teleportTo(warzoneVI) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Entering the warzone.") @@ -28,19 +28,19 @@ function warzoneEntrance.onStepIn(creature, item, position, fromPosition, toPosi end local warzoneV = Position(33208, 32119, 15) if item:getPosition() == Position(33777, 32192, 14) then - if player:getStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneV) == 1 and - player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneV) <= os.time() then + if player:getStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneV) == 1 and player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneV) <= os.time() then player:setStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneV, 0) - player:setStorageValue(Storage.DangerousDepths.Dwarves.Status, - player:getStorageValue(Storage.DangerousDepths.Dwarves.Status) - 10) + player:setStorageValue(Storage.DangerousDepths.Dwarves.Status, player:getStorageValue(Storage.DangerousDepths.Dwarves.Status) - 10) player:setStorageValue(Storage.DangerousDepths.Access.TimerWarzoneV, os.time() + 8 * 60 * 60) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Entering the warzone (you can enter freely for 8 hours from now).") player:teleportTo(warzoneV) - elseif player:getStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneV) < 1 and - player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneV) <= os.time() then + elseif player:getStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneV) < 1 and player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneV) <= os.time() then player:teleportTo(Position(fromPosition.x, fromPosition.y + 1, fromPosition.z)) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You cannot enter this warzone. \z - The enemy still pumps lava into this area. Find a way to stop the pumps!") + player:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + "You cannot enter this warzone. \z + The enemy still pumps lava into this area. Find a way to stop the pumps!" + ) elseif player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneV) > os.time() then player:teleportTo(warzoneV) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Entering the warzone.") @@ -48,18 +48,19 @@ function warzoneEntrance.onStepIn(creature, item, position, fromPosition, toPosi end local warzoneIV = Position(33534, 32184, 15) if item:getPosition() == Position(33827, 32172, 14) then - if player:getStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneIV) == 1 and - player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneIV) <= os.time() then + if player:getStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneIV) == 1 and player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneIV) <= os.time() then player:setStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneIV, 0) - player:setStorageValue(Storage.DangerousDepths.Gnomes.Status, - player:getStorageValue(Storage.DangerousDepths.Gnomes.Status) - 10) + player:setStorageValue(Storage.DangerousDepths.Gnomes.Status, player:getStorageValue(Storage.DangerousDepths.Gnomes.Status) - 10) player:setStorageValue(Storage.DangerousDepths.Access.TimerWarzoneIV, os.time() + 8 * 60 * 60) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Entering the warzone (you can enter freely for 8 hours from now).") player:teleportTo(warzoneIV) elseif player:getStorageValue(Storage.DangerousDepths.Access.LavaPumpWarzoneIV) < 1 and player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneIV) <= os.time() then player:teleportTo(Position(fromPosition.x, fromPosition.y + 1, fromPosition.z)) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You cannot enter this warzone. \z - The enemy still pumps lava into this area. Find a way to stop the pumps!") + player:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + "You cannot enter this warzone. \z + The enemy still pumps lava into this area. Find a way to stop the pumps!" + ) elseif player:getStorageValue(Storage.DangerousDepths.Access.TimerWarzoneIV) > os.time() then player:teleportTo(warzoneIV) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Entering the warzone.") diff --git a/data-otservbr-global/scripts/movements/quests/deeplings_worldchange/deepling_bosses.lua b/data-otservbr-global/scripts/movements/quests/deeplings_worldchange/deepling_bosses.lua index 097c191b33a..ce8f046eedb 100644 --- a/data-otservbr-global/scripts/movements/quests/deeplings_worldchange/deepling_bosses.lua +++ b/data-otservbr-global/scripts/movements/quests/deeplings_worldchange/deepling_bosses.lua @@ -1,7 +1,7 @@ local config = { [28574] = { storage = Storage.DeeplingsWorldChange.Crystal, value = 13, position = Position(33641, 31236, 11) }, [28575] = { storage = Storage.DeeplingsWorldChange.Crystal, value = 13, position = Position(33421, 31255, 11) }, - [28576] = { storage = Storage.DeeplingsWorldChange.Crystal, value = 13, position = Position(33543, 31263, 11) } + [28576] = { storage = Storage.DeeplingsWorldChange.Crystal, value = 13, position = Position(33543, 31263, 11) }, } local deeplingBosses = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/demon_oak/entrance.lua b/data-otservbr-global/scripts/movements/quests/demon_oak/entrance.lua index e9205faba00..6e99d0f8edf 100644 --- a/data-otservbr-global/scripts/movements/quests/demon_oak/entrance.lua +++ b/data-otservbr-global/scripts/movements/quests/demon_oak/entrance.lua @@ -19,8 +19,8 @@ function entrance.onStepIn(creature, item, position, fromPosition) return true end - if (#Game.getSpectators(DEMON_OAK_POSITION, false, true, 9, 9, 6, 6) == 0) then - if (player:getItemCount(9388) == 0) then + if #Game.getSpectators(DEMON_OAK_POSITION, false, true, 9, 9, 6, 6) == 0 then + if player:getItemCount(9388) == 0 then if player:getStorageValue(Storage.DemonOak.Progress) < 1 then player:say("You need finish the demons task!", TALKTYPE_MONSTER_YELL, false, player, DEMON_OAK_KICK_POSITION) player:teleportTo(DEMON_OAK_KICK_POSITION) @@ -29,17 +29,15 @@ function entrance.onStepIn(creature, item, position, fromPosition) end end - if (player:getItemCount(919) == 0) then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "Go talk with Odralk and get the Hallowed Axe to kill The Demon Oak.") + if player:getItemCount(919) == 0 then + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Go talk with Odralk and get the Hallowed Axe to kill The Demon Oak.") end player:removeItem(9388, 1) player:teleportTo(DEMON_OAK_ENTER_POSITION) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:setStorageValue(Storage.DemonOak.Progress, 1) - player:say("I AWAITED YOU! COME HERE AND GET YOUR REWARD!", - TALKTYPE_MONSTER_YELL, false, player, DEMON_OAK_POSITION) + player:say("I AWAITED YOU! COME HERE AND GET YOUR REWARD!", TALKTYPE_MONSTER_YELL, false, player, DEMON_OAK_POSITION) else player:teleportTo(DEMON_OAK_KICK_POSITION) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/scripts/movements/quests/demon_oak/squares.lua b/data-otservbr-global/scripts/movements/quests/demon_oak/squares.lua index 8657e4e13bb..f0b704f8e0c 100644 --- a/data-otservbr-global/scripts/movements/quests/demon_oak/squares.lua +++ b/data-otservbr-global/scripts/movements/quests/demon_oak/squares.lua @@ -5,7 +5,7 @@ local voices = { "I can bring your beloved back from the dead, just release me!", "What a nice shiny golden armor. Come to me and you can have it!", "Find a way in here and release me! Pleeeease hurry!", - "You can have my demon set, if you help me get out of here!" + "You can have my demon set, if you help me get out of here!", } local squares = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/clock_tile.lua b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/clock_tile.lua index 2273dea06a0..6b31290ad9b 100644 --- a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/clock_tile.lua +++ b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/clock_tile.lua @@ -3,7 +3,7 @@ local words = { "WAKE UP!", "TIC TAC", "TAC", - "TIC" + "TIC", } local clockTile = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/court_teleport.lua b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/court_teleport.lua index daa5c5fa742..e161d244f17 100644 --- a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/court_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/court_teleport.lua @@ -2,7 +2,7 @@ local teleports = { [3200] = { position = Position(33672, 32228, 7) }, -- summer entry [3201] = { position = Position(33584, 32208, 7) }, -- summer exit [3202] = { position = Position(33675, 32148, 7) }, -- winter entry - [3203] = { position = Position(32354, 31248, 3) } -- winter exit + [3203] = { position = Position(32354, 31248, 3) }, -- winter exit } local courtTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/death_ring.lua b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/death_ring.lua index 7f42f3756f9..8f5345245e8 100644 --- a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/death_ring.lua +++ b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/death_ring.lua @@ -1,7 +1,7 @@ local trees = { Position(32857, 32231, 11), Position(32857, 32232, 11), - Position(32857, 32233, 11) + Position(32857, 32233, 11), } local deathRing = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/death_ring_teleport.lua b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/death_ring_teleport.lua index 798131bbcf4..007640a9504 100644 --- a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/death_ring_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/death_ring_teleport.lua @@ -1,7 +1,7 @@ local trees = { Position(32857, 32231, 11), Position(32857, 32232, 11), - Position(32857, 32233, 11) + Position(32857, 32233, 11), } local deathRingTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/riddle_teleport.lua b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/riddle_teleport.lua index 03f5d12176c..928bb5da43e 100644 --- a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/riddle_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/riddle_teleport.lua @@ -2,7 +2,7 @@ local function shuffleTable(t) local newTable = {} for i = 1, #t do randomId = math.random(1, #t) - newTable[#newTable+1] = t[randomId] + newTable[#newTable + 1] = t[randomId] table.remove(t, randomId) end return newTable @@ -15,7 +15,7 @@ local function doResetPillows() for i = 0, 3 do local pillowId = 2394 + i for i = 1, 9 do - storePillows[#storePillows+1] = pillowId + storePillows[#storePillows + 1] = pillowId end end @@ -49,10 +49,7 @@ function riddleTeleport.onStepIn(creature, item, position, fromPosition) return false end - if checkPillows(arenaPosition.x, arenaPosition.y, 2394) - and checkPillows(arenaPosition.x + 3, arenaPosition.y, 2396) - and checkPillows(arenaPosition.x, arenaPosition.y + 3, 2395) - and (checkPillows(arenaPosition.x + 3, arenaPosition.y + 3, 2397) or checkPillows(arenaPosition.x + 3, arenaPosition.y + 3, 900)) then + if checkPillows(arenaPosition.x, arenaPosition.y, 2394) and checkPillows(arenaPosition.x + 3, arenaPosition.y, 2396) and checkPillows(arenaPosition.x, arenaPosition.y + 3, 2395) and (checkPillows(arenaPosition.x + 3, arenaPosition.y + 3, 2397) or checkPillows(arenaPosition.x + 3, arenaPosition.y + 3, 900)) then player:teleportTo(Position(32766, 32275, 14)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) doResetPillows() diff --git a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/stone_teleport.lua b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/stone_teleport.lua index 9d90493843c..bb13ec5cd99 100644 --- a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/stone_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/stone_teleport.lua @@ -3,7 +3,7 @@ local config = { { position = Position(32874, 32263, 14), itemId = 2098, transformId = 2094 }, { position = Position(32875, 32263, 14), itemId = 2099, transformId = 2095 }, { position = Position(32874, 32264, 14), itemId = 2100, transformId = 2096 }, - { position = Position(32875, 32264, 14), itemId = 2101, transformId = 2097 } + { position = Position(32875, 32264, 14), itemId = 2101, transformId = 2097 }, } local stoneTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/teleport.lua b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/teleport.lua index c9825fad997..c844f344ac8 100644 --- a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/teleport.lua @@ -4,7 +4,7 @@ local teleports = { [2252] = { x = 32976, y = 32270, z = 14 }, [2253] = { x = 32933, y = 32282, z = 13 }, [2254] = { x = 32753, y = 32344, z = 14 }, - [2255] = { x = 32753, y = 32344, z = 14 } + [2255] = { x = 32753, y = 32344, z = 14 }, } local teleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/tic_teleport.lua b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/tic_teleport.lua index 24059367de6..14d1cc3e514 100644 --- a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/tic_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/tic_teleport.lua @@ -1,7 +1,7 @@ local config = { { position = Position(32836, 32288, 14), itemId = 1949, transformId = 6298 }, { position = Position(32836, 32278, 14), itemId = 2773, transformId = 2772 }, - { position = Position(32834, 32285, 14), itemId = 2773, transformId = 2772 } + { position = Position(32834, 32285, 14), itemId = 2773, transformId = 2772 }, } local tokens = { @@ -13,7 +13,7 @@ local tokens = { { position = Position(32840, 32269, 14), itemId = 3548 }, { position = Position(32841, 32269, 14), itemId = 3547 }, { position = Position(32840, 32268, 14), itemId = 3547 }, - { position = Position(32842, 32267, 14), itemId = 3547 } + { position = Position(32842, 32267, 14), itemId = 3547 }, } local ticTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/tower.lua b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/tower.lua index f9e534f4a89..db955f2e356 100644 --- a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/tower.lua +++ b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/tower.lua @@ -7,7 +7,7 @@ local config = { [3053] = { storageValue = 2, toPosition = Position(32181, 32436, 7) }, -- Fibula [3054] = { storageValue = 4, toPosition = Position(33213, 32454, 1) }, -- Darashia [3055] = { storageValue = 4, toPosition = Position(33194, 32853, 8) }, -- Ankrahmun - [3056] = { storageValue = 4, toPosition = Position(32417, 32139, 15) } -- Mintwalin + [3056] = { storageValue = 4, toPosition = Position(32417, 32139, 15) }, -- Mintwalin } local tower = MoveEvent() @@ -23,9 +23,7 @@ function tower.onStepIn(creature, item, position, fromPosition) return true end - if (player:getStorageValue(Storage.OutfitQuest.NightmareOutfit) >= targetTeleport.storageValue - or player:getStorageValue(Storage.OutfitQuest.BrotherhoodOutfit) >= targetTeleport.storageValue) - and player:removeItem(5021, 1) then + if (player:getStorageValue(Storage.OutfitQuest.NightmareOutfit) >= targetTeleport.storageValue or player:getStorageValue(Storage.OutfitQuest.BrotherhoodOutfit) >= targetTeleport.storageValue) and player:removeItem(5021, 1) then player:teleportTo(targetTeleport.toPosition) else player:teleportTo(fromPosition) diff --git a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/wall_teleport.lua b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/wall_teleport.lua index f30fb28c973..71a59f861bd 100644 --- a/data-otservbr-global/scripts/movements/quests/dreamer_challenge/wall_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/dreamer_challenge/wall_teleport.lua @@ -14,7 +14,7 @@ local walls = { { x = 32760, y = 32292, z = 14 }, { x = 32760, y = 32291, z = 14 }, { x = 32760, y = 32290, z = 14 }, - { x = 32760, y = 32289, z = 14 } + { x = 32760, y = 32289, z = 14 }, } local wallTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/elemental_spheres/soil_entrance.lua b/data-otservbr-global/scripts/movements/quests/elemental_spheres/soil_entrance.lua index 5f9ace10c12..804fe2999dc 100644 --- a/data-otservbr-global/scripts/movements/quests/elemental_spheres/soil_entrance.lua +++ b/data-otservbr-global/scripts/movements/quests/elemental_spheres/soil_entrance.lua @@ -2,7 +2,7 @@ local setting = { [1062] = { destination = Position(33085, 32096, 13), vocation = VOCATION.BASE_ID.KNIGHT, storage = 10130 }, [1063] = { destination = Position(33264, 32201, 13), vocation = VOCATION.BASE_ID.PALADIN, storage = 10131 }, [1064] = { destination = Position(33330, 32077, 13), vocation = VOCATION.BASE_ID.DRUID, storage = 10132 }, - [1065] = { destination = Position(33183, 32198, 13), vocation = VOCATION.BASE_ID.SORCERER, storage = 10133 } + [1065] = { destination = Position(33183, 32198, 13), vocation = VOCATION.BASE_ID.SORCERER, storage = 10133 }, } local soilEntrance = MoveEvent() @@ -17,7 +17,7 @@ function soilEntrance.onStepIn(creature, item, position, fromPosition) if not teleport or player:getVocation():getBaseId() ~= teleport.vocation or player:getLevel() < 10 then player:teleportTo(fromPosition, true) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:say('Your vocation cant enter in this teleport.', TALKTYPE_MONSTER_SAY) + player:say("Your vocation cant enter in this teleport.", TALKTYPE_MONSTER_SAY) return true end diff --git a/data-otservbr-global/scripts/movements/quests/elemental_spheres/soil_exit.lua b/data-otservbr-global/scripts/movements/quests/elemental_spheres/soil_exit.lua index 162068745bc..ad3e174a56b 100644 --- a/data-otservbr-global/scripts/movements/quests/elemental_spheres/soil_exit.lua +++ b/data-otservbr-global/scripts/movements/quests/elemental_spheres/soil_exit.lua @@ -2,7 +2,7 @@ local setting = { { storage = 10130, toPosition = Position(33264, 31835, 10) }, --EK { storage = 10131, toPosition = Position(33272, 31835, 10) }, --RP { storage = 10132, toPosition = Position(33268, 31840, 10) }, --ED - { storage = 10133, toPosition = Position(33268, 31831, 10) } -- SORC + { storage = 10133, toPosition = Position(33268, 31831, 10) }, -- SORC } local soilExit = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/elemental_spheres/summon_overlord.lua b/data-otservbr-global/scripts/movements/quests/elemental_spheres/summon_overlord.lua index 50d5bf052c1..fc50d2f0577 100644 --- a/data-otservbr-global/scripts/movements/quests/elemental_spheres/summon_overlord.lua +++ b/data-otservbr-global/scripts/movements/quests/elemental_spheres/summon_overlord.lua @@ -15,8 +15,8 @@ local config = { Position(33097, 32196, 13), Position(33094, 32196, 13), Position(33092, 32194, 13), - Position(33092, 32191, 13) - } + Position(33092, 32191, 13), + }, }, [7739] = { storage = GlobalStorage.ElementalSphere.SorcererBoss, @@ -34,15 +34,15 @@ local config = { Position(33201, 32109, 13), Position(33198, 32109, 13), Position(33196, 32107, 13), - Position(33196, 32104, 13) - } + Position(33196, 32104, 13), + }, }, [7740] = { storage = GlobalStorage.ElementalSphere.PaladinBoss, corpse = 8140, charged = 7744, inactive = 7741, - boss = 'Ice Overlord', + boss = "Ice Overlord", effect = CONST_ME_ICETORNADO, summonEffect = CONST_ME_ICEAREA, summonPos = Position(33286, 32102, 13), @@ -54,15 +54,15 @@ local config = { Position(33288, 32104, 13), Position(33285, 32104, 13), Position(33283, 32102, 13), - Position(33283, 32099, 13) - } + Position(33283, 32099, 13), + }, }, [7748] = { storage = GlobalStorage.ElementalSphere.DruidBoss, corpse = 8106, charged = 7746, inactive = 7742, - boss = 'Earth Overlord', + boss = "Earth Overlord", effect = CONST_ME_BIGPLANTS, summonPos = Position(33347, 32208, 13), positions = { @@ -73,9 +73,9 @@ local config = { Position(33349, 32210, 13), Position(33346, 32210, 13), Position(33344, 32208, 13), - Position(33344, 32205, 13) - } - } + Position(33344, 32205, 13), + }, + }, } local summonOverlord = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/explorer_society/calassa.lua b/data-otservbr-global/scripts/movements/quests/explorer_society/calassa.lua index a4319691f59..c589bcd4725 100644 --- a/data-otservbr-global/scripts/movements/quests/explorer_society/calassa.lua +++ b/data-otservbr-global/scripts/movements/quests/explorer_society/calassa.lua @@ -11,11 +11,11 @@ function calassa.onStepIn(creature, item, position, fromPosition) player:teleportTo(Position(31914, 32713, 12)) player:getPosition():sendMagicEffect(CONST_ME_WATERSPLASH) player:getPosition():sendMagicEffect(CONST_ME_LOSEENERGY) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You enter the realm of Calassa.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You enter the realm of Calassa.") else player:teleportTo(fromPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You must wear an underwater exploration helmet in order to dive.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must wear an underwater exploration helmet in order to dive.") end return true end diff --git a/data-otservbr-global/scripts/movements/quests/explorer_society/carving_teleport_liberty_bay.lua b/data-otservbr-global/scripts/movements/quests/explorer_society/carving_teleport_liberty_bay.lua index 800f3654ae3..c709008c9e4 100644 --- a/data-otservbr-global/scripts/movements/quests/explorer_society/carving_teleport_liberty_bay.lua +++ b/data-otservbr-global/scripts/movements/quests/explorer_society/carving_teleport_liberty_bay.lua @@ -1,6 +1,6 @@ local destination = { [25020] = { position = Position(32320, 31137, 6) }, - [25021] = { position = Position(32359, 32807, 6) } + [25021] = { position = Position(32359, 32807, 6) }, } local carvingTeleportLibertyBay = MoveEvent() @@ -16,9 +16,7 @@ function carvingTeleportLibertyBay.onStepIn(creature, item, position, fromPositi return end - if player:getStorageValue(Storage.ExplorerSociety.TheIceMusic) >= 62 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) >= 62 - and player:removeItem(5021, 1) then + if player:getStorageValue(Storage.ExplorerSociety.TheIceMusic) >= 62 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) >= 62 and player:removeItem(5021, 1) then player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:teleportTo(carvingTP.position) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/scripts/movements/quests/explorer_society/carvingteleport_port_hope.lua b/data-otservbr-global/scripts/movements/quests/explorer_society/carvingteleport_port_hope.lua index 4f73f01008c..572a3a86738 100644 --- a/data-otservbr-global/scripts/movements/quests/explorer_society/carvingteleport_port_hope.lua +++ b/data-otservbr-global/scripts/movements/quests/explorer_society/carvingteleport_port_hope.lua @@ -1,6 +1,6 @@ local destination = { [25018] = { position = Position(32498, 31622, 6) }, - [25019] = { position = Position(32665, 32735, 6) } + [25019] = { position = Position(32665, 32735, 6) }, } local carvingTeleportPortHope = MoveEvent() @@ -16,9 +16,7 @@ function carvingTeleportPortHope.onStepIn(creature, item, position, fromPosition return end - if player:getStorageValue(Storage.ExplorerSociety.TheAstralPortals) >= 56 - and player:getStorageValue(Storage.ExplorerSociety.QuestLine) >= 56 - and player:removeItem(5021, 1) then + if player:getStorageValue(Storage.ExplorerSociety.TheAstralPortals) >= 56 and player:getStorageValue(Storage.ExplorerSociety.QuestLine) >= 56 and player:removeItem(5021, 1) then player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:teleportTo(carvingTP.position) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/scripts/movements/quests/extension_mota/extension_mota.lua b/data-otservbr-global/scripts/movements/quests/extension_mota/extension_mota.lua index 404f4df6877..b2341c71413 100644 --- a/data-otservbr-global/scripts/movements/quests/extension_mota/extension_mota.lua +++ b/data-otservbr-global/scripts/movements/quests/extension_mota/extension_mota.lua @@ -1,6 +1,6 @@ local destination = { [64015] = { toPosition = Position(33246, 32099, 8) }, --Entrance - [64016] = { toPosition = Position(33246, 32108, 8) } --Exit + [64016] = { toPosition = Position(33246, 32108, 8) }, --Exit } local extensionMota = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/blue_gem.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/blue_gem.lua index c4af4b80820..60083434a04 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/blue_gem.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/blue_gem.lua @@ -50,20 +50,19 @@ function blueGem.onStepIn(creature, item, position, fromPosition) return true end if item.itemid == 8647 then - local leverFirst = Tile(Position(33671, 32638, 13)):getItemById(9110) - or Tile(Position(33671, 32638, 13)):getItemById(9111) -- lever blue - local leverSecond = Tile(Position(33613, 32691, 13)):getItemById(9110) - or Tile(Position(33613, 32691, 13)):getItemById(9111) -- lever green - local leverThird = Tile(Position(33651, 32661, 13)):getItemById(9110) - or Tile(Position(33651, 32661, 13)):getItemById(9111) -- lever red - local leverFour = Tile(Position(33672, 32688, 13)):getItemById(9110) - or Tile(Position(33672, 32688, 13)):getItemById(9111) -- lever green + local leverFirst = Tile(Position(33671, 32638, 13)):getItemById(9110) or Tile(Position(33671, 32638, 13)):getItemById(9111) -- lever blue + local leverSecond = Tile(Position(33613, 32691, 13)):getItemById(9110) or Tile(Position(33613, 32691, 13)):getItemById(9111) -- lever green + local leverThird = Tile(Position(33651, 32661, 13)):getItemById(9110) or Tile(Position(33651, 32661, 13)):getItemById(9111) -- lever red + local leverFour = Tile(Position(33672, 32688, 13)):getItemById(9110) or Tile(Position(33672, 32688, 13)):getItemById(9111) -- lever green Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Elements.First, 3) -- blue Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Elements.Second, 2) -- green Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Elements.Third, 1) -- red Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Elements.Four, 5) -- grass - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You hear a whisper: \z - 'You will not be guided but your path shines in the colours blue, green and red. Heed this hierarchy.'") + player:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + "You hear a whisper: \z + 'You will not be guided but your path shines in the colours blue, green and red. Heed this hierarchy.'" + ) if not leverFirst or not leverSecond or not leverThird or not leverFour then return false end diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/boss_teleport.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/boss_teleport.lua index cd067927642..812cfff1421 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/boss_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/boss_teleport.lua @@ -5,7 +5,7 @@ local config = { [24833] = { storage = Storage.FerumbrasAscension.Mazoran }, [24834] = { storage = Storage.FerumbrasAscension.Tarbaz }, [24835] = { storage = Storage.FerumbrasAscension.Shulgrax }, - [24836] = { storage = Storage.FerumbrasAscension.Plagirath } + [24836] = { storage = Storage.FerumbrasAscension.Plagirath }, } local bossTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/desperate_soul.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/desperate_soul.lua index d12456687e0..63c79aa5d44 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/desperate_soul.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/desperate_soul.lua @@ -2,7 +2,7 @@ local desperateSoul = MoveEvent() function desperateSoul.onStepIn(creature, item, position, fromPosition) local monster = creature:getMonster() - if not monster or monster:getName():lower() ~= 'desperate soul' then + if not monster or monster:getName():lower() ~= "desperate soul" then return true end diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/entrance.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/entrance.lua index 1feb682820f..356434282bb 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/entrance.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/entrance.lua @@ -5,7 +5,7 @@ local config = { [4] = { storage = Storage.FerumbrasAscension.Mazoran }, [5] = { storage = Storage.FerumbrasAscension.Tarbaz }, [6] = { storage = Storage.FerumbrasAscension.Shulgrax }, - [7] = { storage = Storage.FerumbrasAscension.Plagirath } + [7] = { storage = Storage.FerumbrasAscension.Plagirath }, } local entrance = MoveEvent() @@ -38,8 +38,7 @@ function entrance.onStepIn(creature, item, position, fromPosition) if player:getStorageValue(Storage.FerumbrasAscension.Access) < 1 then player:teleportTo(Position(33275, 32390, 8)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "This portal is not yet strong enough to breach the destination dimension.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "This portal is not yet strong enough to breach the destination dimension.") return true end player:teleportTo(Position(33319, 32317, 13)) diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/flower_puzzle.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/flower_puzzle.lua index 610aeff5f6f..de00f104558 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/flower_puzzle.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/flower_puzzle.lua @@ -3,108 +3,110 @@ local positions = { squarePos = Position(33452, 32721, 14), flowerOne = Position(33455, 32685, 14), flowerTwo = Position(33455, 32691, 14), - flowerThree = Position(33455, 32707, 14) + flowerThree = Position(33455, 32707, 14), }, [2] = { squarePos = Position(33455, 32721, 14), flowerOne = Position(33456, 32685, 14), flowerTwo = Position(33456, 32691, 14), - flowerThree = Position(33456, 32707, 14) + flowerThree = Position(33456, 32707, 14), }, [3] = { squarePos = Position(33458, 32721, 14), flowerOne = Position(33457, 32685, 14), flowerTwo = Position(33457, 32691, 14), - flowerThree = Position(33457, 32707, 14) + flowerThree = Position(33457, 32707, 14), }, [4] = { squarePos = Position(33461, 32721, 14), flowerOne = Position(33458, 32685, 14), flowerTwo = Position(33458, 32691, 14), - flowerThree = Position(33458, 32707, 14) + flowerThree = Position(33458, 32707, 14), }, [5] = { squarePos = Position(33464, 32721, 14), flowerOne = Position(33459, 32685, 14), flowerTwo = Position(33459, 32691, 14), - flowerThree = Position(33459, 32707, 14) + flowerThree = Position(33459, 32707, 14), }, [6] = { squarePos = Position(33467, 32721, 14), flowerOne = Position(33460, 32685, 14), flowerTwo = Position(33460, 32691, 14), - flowerThree = Position(33460, 32707, 14) }, -- done + flowerThree = Position(33460, 32707, 14), + }, -- done [7] = { squarePos = Position(33452, 32724, 14), flowerOne = Position(33455, 32686, 14), flowerTwo = Position(33455, 32692, 14), - flowerThree = Position(33455, 32708, 14) + flowerThree = Position(33455, 32708, 14), }, [8] = { squarePos = Position(33455, 32724, 14), flowerOne = Position(33456, 32686, 14), flowerTwo = Position(33456, 32692, 14), - flowerThree = Position(33456, 32708, 14) + flowerThree = Position(33456, 32708, 14), }, [9] = { squarePos = Position(33458, 32724, 14), flowerOne = Position(33457, 32686, 14), flowerTwo = Position(33457, 32692, 14), - flowerThree = Position(33457, 32708, 14) + flowerThree = Position(33457, 32708, 14), }, [10] = { squarePos = Position(33461, 32724, 14), flowerOne = Position(33458, 32686, 14), flowerTwo = Position(33458, 32692, 14), - flowerThree = Position(33458, 32708, 14) + flowerThree = Position(33458, 32708, 14), }, [11] = { squarePos = Position(33464, 32724, 14), flowerOne = Position(33459, 32686, 14), flowerTwo = Position(33459, 32692, 14), - flowerThree = Position(33459, 32708, 14) + flowerThree = Position(33459, 32708, 14), }, [12] = { squarePos = Position(33467, 32724, 14), flowerOne = Position(33460, 32686, 14), flowerTwo = Position(33460, 32692, 14), - flowerThree = Position(33460, 32708, 14) }, -- done + flowerThree = Position(33460, 32708, 14), + }, -- done [13] = { squarePos = Position(33452, 32727, 14), flowerOne = Position(33455, 32687, 14), flowerTwo = Position(33455, 32693, 14), - flowerThree = Position(33455, 32709, 14) + flowerThree = Position(33455, 32709, 14), }, [14] = { squarePos = Position(33455, 32727, 14), flowerOne = Position(33456, 32687, 14), flowerTwo = Position(33456, 32693, 14), - flowerThree = Position(33456, 32709, 14) + flowerThree = Position(33456, 32709, 14), }, [15] = { squarePos = Position(33458, 32727, 14), flowerOne = Position(33457, 32687, 14), flowerTwo = Position(33457, 32693, 14), - flowerThree = Position(33457, 32709, 14) + flowerThree = Position(33457, 32709, 14), }, [16] = { squarePos = Position(33461, 32727, 14), flowerOne = Position(33458, 32687, 14), flowerTwo = Position(33458, 32693, 14), - flowerThree = Position(33458, 32709, 14) + flowerThree = Position(33458, 32709, 14), }, [17] = { squarePos = Position(33464, 32727, 14), flowerOne = Position(33459, 32687, 14), flowerTwo = Position(33459, 32693, 14), - flowerThree = Position(33459, 32709, 14) + flowerThree = Position(33459, 32709, 14), }, [18] = { squarePos = Position(33467, 32727, 14), flowerOne = Position(33460, 32687, 14), flowerTwo = Position(33460, 32693, 14), - flowerThree = Position(33460, 32709, 14) } - + flowerThree = Position(33460, 32709, 14), + }, } local flowerPuzzle = MoveEvent() @@ -115,15 +117,9 @@ function flowerPuzzle.onStepIn(creature, item, position, fromPosition) if position == itempos.squarePos then if item.itemid == 22538 then item:transform(22539) - local flowerOne = Tile(itempos.flowerOne):getItemById(3676) - or Tile(itempos.flowerOne):getItemById(3678) - or Tile(itempos.flowerOne):getItemById(3677) - local flowerTwo = Tile(itempos.flowerTwo):getItemById(3676) - or Tile(itempos.flowerTwo):getItemById(3678) - or Tile(itempos.flowerTwo):getItemById(3677) - local flowerThree = Tile(itempos.flowerThree):getItemById(3676) - or Tile(itempos.flowerThree):getItemById(3678) - or Tile(itempos.flowerThree):getItemById(3677) + local flowerOne = Tile(itempos.flowerOne):getItemById(3676) or Tile(itempos.flowerOne):getItemById(3678) or Tile(itempos.flowerOne):getItemById(3677) + local flowerTwo = Tile(itempos.flowerTwo):getItemById(3676) or Tile(itempos.flowerTwo):getItemById(3678) or Tile(itempos.flowerTwo):getItemById(3677) + local flowerThree = Tile(itempos.flowerThree):getItemById(3676) or Tile(itempos.flowerThree):getItemById(3678) or Tile(itempos.flowerThree):getItemById(3677) if not flowerOne then flowerOne = Game.createItem(3677, 1, itempos.flowerOne) end @@ -138,15 +134,9 @@ function flowerPuzzle.onStepIn(creature, item, position, fromPosition) flowerThree:transform(3677) elseif item.itemid == 22539 then item:transform(22540) - local flowerOne = Tile(itempos.flowerOne):getItemById(3676) - or Tile(itempos.flowerOne):getItemById(3678) - or Tile(itempos.flowerOne):getItemById(3677) - local flowerTwo = Tile(itempos.flowerTwo):getItemById(3676) - or Tile(itempos.flowerTwo):getItemById(3678) - or Tile(itempos.flowerTwo):getItemById(3677) - local flowerThree = Tile(itempos.flowerThree):getItemById(3676) - or Tile(itempos.flowerThree):getItemById(3678) - or Tile(itempos.flowerThree):getItemById(3677) + local flowerOne = Tile(itempos.flowerOne):getItemById(3676) or Tile(itempos.flowerOne):getItemById(3678) or Tile(itempos.flowerOne):getItemById(3677) + local flowerTwo = Tile(itempos.flowerTwo):getItemById(3676) or Tile(itempos.flowerTwo):getItemById(3678) or Tile(itempos.flowerTwo):getItemById(3677) + local flowerThree = Tile(itempos.flowerThree):getItemById(3676) or Tile(itempos.flowerThree):getItemById(3678) or Tile(itempos.flowerThree):getItemById(3677) if not flowerOne then flowerOne = Game.createItem(3678, 1, itempos.flowerOne) end @@ -161,15 +151,9 @@ function flowerPuzzle.onStepIn(creature, item, position, fromPosition) flowerThree:transform(3678) elseif item.itemid == 22540 then item:transform(22541) - local flowerOne = Tile(itempos.flowerOne):getItemById(3676) - or Tile(itempos.flowerOne):getItemById(3678) - or Tile(itempos.flowerOne):getItemById(3677) - local flowerTwo = Tile(itempos.flowerTwo):getItemById(3676) - or Tile(itempos.flowerTwo):getItemById(3678) - or Tile(itempos.flowerTwo):getItemById(3677) - local flowerThree = Tile(itempos.flowerThree):getItemById(3676) - or Tile(itempos.flowerThree):getItemById(3678) - or Tile(itempos.flowerThree):getItemById(3677) + local flowerOne = Tile(itempos.flowerOne):getItemById(3676) or Tile(itempos.flowerOne):getItemById(3678) or Tile(itempos.flowerOne):getItemById(3677) + local flowerTwo = Tile(itempos.flowerTwo):getItemById(3676) or Tile(itempos.flowerTwo):getItemById(3678) or Tile(itempos.flowerTwo):getItemById(3677) + local flowerThree = Tile(itempos.flowerThree):getItemById(3676) or Tile(itempos.flowerThree):getItemById(3678) or Tile(itempos.flowerThree):getItemById(3677) if not flowerOne then flowerOne = Game.createItem(3676, 1, itempos.flowerOne) end @@ -184,15 +168,9 @@ function flowerPuzzle.onStepIn(creature, item, position, fromPosition) flowerThree:transform(3676) elseif item.itemid == 22541 then item:transform(22538) - local flowerOne = Tile(itempos.flowerOne):getItemById(3676) - or Tile(itempos.flowerOne):getItemById(3678) - or Tile(itempos.flowerOne):getItemById(3677) - local flowerTwo = Tile(itempos.flowerTwo):getItemById(3676) - or Tile(itempos.flowerTwo):getItemById(3678) - or Tile(itempos.flowerTwo):getItemById(3677) - local flowerThree = Tile(itempos.flowerThree):getItemById(3676) - or Tile(itempos.flowerThree):getItemById(3678) - or Tile(itempos.flowerThree):getItemById(3677) + local flowerOne = Tile(itempos.flowerOne):getItemById(3676) or Tile(itempos.flowerOne):getItemById(3678) or Tile(itempos.flowerOne):getItemById(3677) + local flowerTwo = Tile(itempos.flowerTwo):getItemById(3676) or Tile(itempos.flowerTwo):getItemById(3678) or Tile(itempos.flowerTwo):getItemById(3677) + local flowerThree = Tile(itempos.flowerThree):getItemById(3676) or Tile(itempos.flowerThree):getItemById(3678) or Tile(itempos.flowerThree):getItemById(3677) if flowerOne then flowerOne:remove() end diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/gate_of_deathstruction.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/gate_of_deathstruction.lua index f5d8a5fedb7..0b74b80d86e 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/gate_of_deathstruction.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/gate_of_deathstruction.lua @@ -16,8 +16,7 @@ function gateOfDeathstruction.onStepIn(creature, item, position, fromPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) local gatePos = Position(33415, 32377, 13) gatePos:sendMagicEffect(CONST_ME_TELEPORT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "You have performed the Blood Well Ritual and now are worthy to enter the lower tunnels.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have performed the Blood Well Ritual and now are worthy to enter the lower tunnels.") end return true end diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/green_gem.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/green_gem.lua index 154e68550c6..885d2a2e0ff 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/green_gem.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/green_gem.lua @@ -46,26 +46,24 @@ local greenGem = MoveEvent() function greenGem.onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() - if not player - or Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Elements.Active) >= 1 then + if not player or Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Elements.Active) >= 1 then position:sendMagicEffect(CONST_ME_TELEPORT) return true end if item.itemid == 8649 then - local leverFirst = Tile(Position(33613, 32691, 13)):getItemById(9110) - or Tile(Position(33613, 32691, 13)):getItemById(9111) -- lever green - local leverSecond = Tile(Position(33671, 32638, 13)):getItemById(9110) - or Tile(Position(33671, 32638, 13)):getItemById(9111) -- lever blue - local leverThird = Tile(Position(33651, 32661, 13)):getItemById(9110) - or Tile(Position(33651, 32661, 13)):getItemById(9111) -- lever red - local leverFour = Tile(Position(33673, 32688, 13)):getItemById(9110) - or Tile(Position(33673, 32688, 13)):getItemById(9111) -- lever green + local leverFirst = Tile(Position(33613, 32691, 13)):getItemById(9110) or Tile(Position(33613, 32691, 13)):getItemById(9111) -- lever green + local leverSecond = Tile(Position(33671, 32638, 13)):getItemById(9110) or Tile(Position(33671, 32638, 13)):getItemById(9111) -- lever blue + local leverThird = Tile(Position(33651, 32661, 13)):getItemById(9110) or Tile(Position(33651, 32661, 13)):getItemById(9111) -- lever red + local leverFour = Tile(Position(33673, 32688, 13)):getItemById(9110) or Tile(Position(33673, 32688, 13)):getItemById(9111) -- lever green Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Elements.First, 2) -- green Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Elements.Second, 3) -- blue Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Elements.Third, 1) -- red Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Elements.Four, 6) -- ice - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You hear a whisper: \z - 'You will not be guided but your path shines in the colours green, blue and red. Heed this hierarchy.'") + player:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + "You hear a whisper: \z + 'You will not be guided but your path shines in the colours green, blue and red. Heed this hierarchy.'" + ) if not leverFirst or not leverSecond or not leverThird or not leverFour then return false end diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/habitats_access.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/habitats_access.lua index 2410ee268c4..748ba3d574f 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/habitats_access.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/habitats_access.lua @@ -2,8 +2,8 @@ local config = { [34323] = { toPosition = Position(33630, 32651, 12), backPosition = Position(33630, 32651, 12), - timer = Storage.FerumbrasAscension.HabitatsTimer - } + timer = Storage.FerumbrasAscension.HabitatsTimer, + }, } local habitatsAccess = MoveEvent() @@ -29,14 +29,14 @@ function habitatsAccess.onStepIn(creature, item, position, fromPosition) pos.y = pos.y + 2 player:teleportTo(pos) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:say('You have to wait to challenge this enemy again!', TALKTYPE_MONSTER_SAY) + player:say("You have to wait to challenge this enemy again!", TALKTYPE_MONSTER_SAY) return true end else local pos = position pos.y = pos.y + 2 player:teleportTo(pos) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You not proven your worth. There is no escape for you here.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You not proven your worth. There is no escape for you here.") item:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true end diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/lovely_monsters.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/lovely_monsters.lua index 5ed609a95c6..f9808413ca6 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/lovely_monsters.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/lovely_monsters.lua @@ -1,12 +1,12 @@ local config = { - [34315] = { name = 'lovely frazzlemaw', centerPos = Position(33618, 32666, 12) }, - [34316] = { name = 'lovely deer', centerPos = Position(33641, 32666, 12) }, - [34317] = { name = 'lovely rotworm', centerPos = Position(33618, 32684, 12) }, - [34318] = { name = 'lovely scorpion', centerPos = Position(33641, 32684, 12) }, - [34319] = { name = 'lovely snake', centerPos = Position(33618, 32702, 12) }, - [34320] = { name = 'lovely polar bear', centerPos = Position(33641, 32702, 12) }, - [34321] = { name = 'lovely souleater', centerPos = Position(33618, 32720, 12) }, - [34322] = { name = 'lovely yielothax', centerPos = Position(33641, 32720, 12) } + [34315] = { name = "lovely frazzlemaw", centerPos = Position(33618, 32666, 12) }, + [34316] = { name = "lovely deer", centerPos = Position(33641, 32666, 12) }, + [34317] = { name = "lovely rotworm", centerPos = Position(33618, 32684, 12) }, + [34318] = { name = "lovely scorpion", centerPos = Position(33641, 32684, 12) }, + [34319] = { name = "lovely snake", centerPos = Position(33618, 32702, 12) }, + [34320] = { name = "lovely polar bear", centerPos = Position(33641, 32702, 12) }, + [34321] = { name = "lovely souleater", centerPos = Position(33618, 32720, 12) }, + [34322] = { name = "lovely yielothax", centerPos = Position(33641, 32720, 12) }, } local lovelyMonsters = MoveEvent() @@ -23,7 +23,7 @@ function lovelyMonsters.onStepIn(creature, item, position, fromPosition) local monster = creature:getMonster() if monster:getName():lower() == config.name then - monster:say('That seemed correct!', TALKTYPE_MONSTER_SAY) + monster:say("That seemed correct!", TALKTYPE_MONSTER_SAY) monster:getPosition():sendMagicEffect(CONST_ME_THUNDER) monster:remove() local spectators = Game.getSpectators(config.centerPos, false, true, 9, 9, 9, 9) @@ -33,8 +33,7 @@ function lovelyMonsters.onStepIn(creature, item, position, fromPosition) if player:getStorageValue(Storage.FerumbrasAscension.ZamuloshTeleports) < 0 then player:setStorageValue(Storage.FerumbrasAscension.ZamuloshTeleports, 0) end - player:setStorageValue(Storage.FerumbrasAscension.ZamuloshTeleports, - player:getStorageValue(Storage.FerumbrasAscension.ZamuloshTeleports) + 1) + player:setStorageValue(Storage.FerumbrasAscension.ZamuloshTeleports, player:getStorageValue(Storage.FerumbrasAscension.ZamuloshTeleports) + 1) end end return true diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/red_gem.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/red_gem.lua index f8dad399d3f..a4acd970006 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/red_gem.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/red_gem.lua @@ -51,20 +51,19 @@ function redGem.onStepIn(creature, item, position, fromPosition) return true end if item.itemid == 8646 then - local leverFirst = Tile(Position(33651, 32661, 13)):getItemById(9110) - or Tile(Position(33651, 32661, 13)):getItemById(9111) -- lever red - local leverSecond = Tile(Position(33671, 32638, 13)):getItemById(9110) - or Tile(Position(33671, 32638, 13)):getItemById(9111) -- lever blue - local leverThird = Tile(Position(33613, 32691, 13)):getItemById(9110) - or Tile(Position(33613, 32691, 13)):getItemById(9111) -- lever green - local leverFour = Tile(Position(33671, 32688, 13)):getItemById(9110) - or Tile(Position(33671, 32688, 13)):getItemById(9111) -- lever green + local leverFirst = Tile(Position(33651, 32661, 13)):getItemById(9110) or Tile(Position(33651, 32661, 13)):getItemById(9111) -- lever red + local leverSecond = Tile(Position(33671, 32638, 13)):getItemById(9110) or Tile(Position(33671, 32638, 13)):getItemById(9111) -- lever blue + local leverThird = Tile(Position(33613, 32691, 13)):getItemById(9110) or Tile(Position(33613, 32691, 13)):getItemById(9111) -- lever green + local leverFour = Tile(Position(33671, 32688, 13)):getItemById(9110) or Tile(Position(33671, 32688, 13)):getItemById(9111) -- lever green Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Elements.First, 1) -- red Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Elements.Second, 3) -- blue Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Elements.Third, 2) -- green Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Elements.Four, 4) -- blood - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You hear a whisper: \z - 'You will not be guided but your path shines in the colours red, blue and green. Heed this hierarchy.'") + player:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + "You hear a whisper: \z + 'You will not be guided but your path shines in the colours red, blue and green. Heed this hierarchy.'" + ) if not leverFirst or not leverSecond or not leverThird or not leverFour then return false end diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/seal.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/seal.lua index 0c07d8fc49c..2b1322d8815 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/seal.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/seal.lua @@ -2,44 +2,43 @@ local config = { [24839] = { toPosition = Position(33419, 32841, 11), backPosition = Position(33484, 32775, 12), - timer = Storage.FerumbrasAscension.TarbazTimer - + timer = Storage.FerumbrasAscension.TarbazTimer, }, [24840] = { toPosition = Position(33452, 32356, 13), backPosition = Position(33432, 32330, 14), - timer = Storage.FerumbrasAscension.RagiazTimer + timer = Storage.FerumbrasAscension.RagiazTimer, }, [24841] = { toPosition = Position(33230, 31493, 13), backPosition = Position(33197, 31438, 13), - timer = Storage.FerumbrasAscension.PlagirathTimer + timer = Storage.FerumbrasAscension.PlagirathTimer, }, [24842] = { toPosition = Position(33380, 32454, 14), backPosition = Position(33399, 32402, 15), - timer = Storage.FerumbrasAscension.RazzagornTimer + timer = Storage.FerumbrasAscension.RazzagornTimer, }, [24843] = { toPosition = Position(33680, 32736, 11), backPosition = Position(33664, 32682, 10), - timer = Storage.FerumbrasAscension.ZamuloshTimer + timer = Storage.FerumbrasAscension.ZamuloshTimer, }, [24844] = { toPosition = Position(33593, 32658, 14), backPosition = Position(33675, 32690, 13), - timer = Storage.FerumbrasAscension.MazoranTimer + timer = Storage.FerumbrasAscension.MazoranTimer, }, [24845] = { toPosition = Position(33436, 32800, 13), backPosition = Position(33477, 32701, 14), - timer = Storage.FerumbrasAscension.ShulgraxTimer + timer = Storage.FerumbrasAscension.ShulgraxTimer, }, [24846] = { toPosition = Position(33270, 31474, 14), backPosition = Position(33324, 31374, 14), - timer = Storage.FerumbrasAscension.FerumbrasTimer - } + timer = Storage.FerumbrasAscension.FerumbrasTimer, + }, } local seal = MoveEvent() @@ -63,14 +62,14 @@ function seal.onStepIn(creature, item, position, fromPosition) else player:teleportTo(Position(33675, 32690, 13)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:say('You have to wait to challenge this enemy again!', TALKTYPE_MONSTER_SAY) + player:say("You have to wait to challenge this enemy again!", TALKTYPE_MONSTER_SAY) return true end else local pos = position pos.y = pos.y + 2 player:teleportTo(pos) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You not proven your worth. There is no escape for you here.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You not proven your worth. There is no escape for you here.") item:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true end @@ -83,14 +82,14 @@ function seal.onStepIn(creature, item, position, fromPosition) else player:teleportTo(Position(33477, 32701, 14)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:say('You have to wait to challenge this enemy again!', TALKTYPE_MONSTER_SAY) + player:say("You have to wait to challenge this enemy again!", TALKTYPE_MONSTER_SAY) return true end else local pos = position pos.y = pos.y + 2 player:teleportTo(pos) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You not proven your worth. There is no escape for you here.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You not proven your worth. There is no escape for you here.") item:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true end @@ -101,10 +100,9 @@ function seal.onStepIn(creature, item, position, fromPosition) elseif player:getStorageValue(setting.timer) >= os.time() then player:teleportTo(setting.backPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:say('You have to wait to challenge this enemy again!', TALKTYPE_MONSTER_SAY) + player:say("You have to wait to challenge this enemy again!", TALKTYPE_MONSTER_SAY) elseif item.actionid == 24846 and player:getStorageValue(setting.timer) >= os.time() then - player:say('You cannot enter, you must wait fourteen days after preventing the ascension of Ferumbras.', - TALKTYPE_MONSTER_SAY) + player:say("You cannot enter, you must wait fourteen days after preventing the ascension of Ferumbras.", TALKTYPE_MONSTER_SAY) end return true end diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/stair.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/stair.lua index e1932bd4cf7..3ab9d7b1a30 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/stair.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/stair.lua @@ -5,7 +5,7 @@ local config = { [4] = { storage = Storage.FerumbrasAscension.Mazoran }, [5] = { storage = Storage.FerumbrasAscension.Tarbaz }, [6] = { storage = Storage.FerumbrasAscension.Shulgrax }, - [7] = { storage = Storage.FerumbrasAscension.Plagirath } + [7] = { storage = Storage.FerumbrasAscension.Plagirath }, } local stair = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/vortex.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/vortex.lua index 15db2682272..2c74fc917dd 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/vortex.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/vortex.lua @@ -2,18 +2,17 @@ local vortex = MoveEvent() function vortex.onStepIn(creature, item, position, fromPosition) local monster = creature:getMonster() - if not monster or monster:getName():lower() ~= 'ferumbras essence' then + if not monster or monster:getName():lower() ~= "ferumbras essence" then return true end monster:remove() position:sendMagicEffect(CONST_ME_POFF) - Game.setStorageValue(GlobalStorage.FerumbrasAscendant.FerumbrasEssence, - Game.getStorageValue(GlobalStorage.FerumbrasAscendant.FerumbrasEssence) + 1) + Game.setStorageValue(GlobalStorage.FerumbrasAscendant.FerumbrasEssence, Game.getStorageValue(GlobalStorage.FerumbrasAscendant.FerumbrasEssence) + 1) if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.FerumbrasEssence) >= 8 then - Game.createMonster('Destabilized Ferumbras', Position(33392, 31473, 14), true, true) + Game.createMonster("Destabilized Ferumbras", Position(33392, 31473, 14), true, true) for i = 1, 20 do - Game.createMonster('Rift Fragment', Position(math.random(33381, 33403), math.random(31462, 31483), 14), true, true) + Game.createMonster("Rift Fragment", Position(math.random(33381, 33403), math.random(31462, 31483), 14), true, true) end end return true diff --git a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/zamulosh_teleport.lua b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/zamulosh_teleport.lua index 1e4d6eaf1bf..11f98b10861 100644 --- a/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/zamulosh_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/ferumbras_ascendant/zamulosh_teleport.lua @@ -10,8 +10,7 @@ function zamuloshTeleport.onStepIn(creature, item, position, fromPosition) if player:getStorageValue(Storage.FerumbrasAscension.ZamuloshTeleports) >= 9 then player:teleportTo(Position(33618, 32620, 10)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "What was wrong is not necessarily right now. Nevertheless you nade it further.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "What was wrong is not necessarily right now. Nevertheless you nade it further.") return true else local pos = player:getPosition() @@ -22,12 +21,10 @@ function zamuloshTeleport.onStepIn(creature, item, position, fromPosition) return true end elseif item.actionid == 34314 then - if player:getStorageValue(Storage.FerumbrasAscension.ZamuloshTeleports) >= 4 - and Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) >= 8 then + if player:getStorageValue(Storage.FerumbrasAscension.ZamuloshTeleports) >= 4 and Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Habitats.AllHabitats) >= 8 then player:teleportTo(Position(33618, 32620, 10)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "What was wrong is not necessarily right now. Nevertheless you nade it further.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "What was wrong is not necessarily right now. Nevertheless you nade it further.") player:setStorageValue(Storage.FerumbrasAscension.ZamuloshTeleports, 9) return true else diff --git a/data-otservbr-global/scripts/movements/quests/first_dragon/entrance_teleport.lua b/data-otservbr-global/scripts/movements/quests/first_dragon/entrance_teleport.lua index 586fa241d5b..9e597e4401e 100644 --- a/data-otservbr-global/scripts/movements/quests/first_dragon/entrance_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/first_dragon/entrance_teleport.lua @@ -7,7 +7,7 @@ local UniqueTable = { timer = Storage.FirstDragon.TazhadurTimer, newPos = { x = 32015, y = 32466, z = 8 }, bossName = "Tazhadur", - bossPos = { x = 32018, y = 32465, z = 8 } + bossPos = { x = 32018, y = 32465, z = 8 }, }, -- Kalyassa entrance [35002] = { @@ -17,7 +17,7 @@ local UniqueTable = { timer = Storage.FirstDragon.KalyassaTimer, newPos = { x = 32078, y = 32456, z = 8 }, bossName = "Kalyassa", - bossPos = { x = 32079, y = 32459, z = 8 } + bossPos = { x = 32079, y = 32459, z = 8 }, }, -- Zorvorax entrance [35003] = { @@ -27,7 +27,7 @@ local UniqueTable = { timer = Storage.FirstDragon.ZorvoraxTimer, newPos = { x = 32008, y = 32396, z = 8 }, bossName = "Zorvorax", - bossPos = { x = 32015, y = 32396, z = 8 } + bossPos = { x = 32015, y = 32396, z = 8 }, }, -- Gelidrazah entrance [35004] = { @@ -37,8 +37,8 @@ local UniqueTable = { timer = Storage.FirstDragon.GelidrazahTimer, newPos = { x = 32076, y = 32402, z = 8 }, bossName = "Gelidrazah The Frozen", - bossPos = { x = 32078, y = 32400, z = 8 } - } + bossPos = { x = 32078, y = 32400, z = 8 }, + }, } local entranceTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/first_dragon/exit_teleport.lua b/data-otservbr-global/scripts/movements/quests/first_dragon/exit_teleport.lua index 83dde781a1b..666108d36b2 100644 --- a/data-otservbr-global/scripts/movements/quests/first_dragon/exit_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/first_dragon/exit_teleport.lua @@ -1,20 +1,20 @@ local UniqueTable = { -- Tazhadur exit [35005] = { - backPos = { x = 33234, y = 32278, z = 12 } + backPos = { x = 33234, y = 32278, z = 12 }, }, -- Kalyassa exit [35006] = { - backPos = { x = 33162, y = 31320, z = 5 } + backPos = { x = 33162, y = 31320, z = 5 }, }, -- Zorvorax exit [35007] = { - backPos = { x = 33002, y = 31595, z = 11 } + backPos = { x = 33002, y = 31595, z = 11 }, }, -- Gelidrazah exit [35008] = { - backPos = { x = 32278, y = 31367, z = 4 } - } + backPos = { x = 32278, y = 31367, z = 4 }, + }, } local exitTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/first_dragon/flower_bowl.lua b/data-otservbr-global/scripts/movements/quests/first_dragon/flower_bowl.lua index 46449f66554..b2e468f1fe5 100644 --- a/data-otservbr-global/scripts/movements/quests/first_dragon/flower_bowl.lua +++ b/data-otservbr-global/scripts/movements/quests/first_dragon/flower_bowl.lua @@ -6,10 +6,10 @@ function flowerBowl.onStepIn(creature, item, position, fromPosition) end if item.uid == 1066 then - if creature:getName() == 'Unbeatable Dragon' then - creature:say('An allergic reaction weakens the dragon!', TALKTYPE_MONSTER_SAY) + if creature:getName() == "Unbeatable Dragon" then + creature:say("An allergic reaction weakens the dragon!", TALKTYPE_MONSTER_SAY) creature:remove() - Game.createMonster('Somewhat Beatable', position, true, true) + Game.createMonster("Somewhat Beatable", position, true, true) end end return true diff --git a/data-otservbr-global/scripts/movements/quests/first_dragon/heaven_blossom.lua b/data-otservbr-global/scripts/movements/quests/first_dragon/heaven_blossom.lua index 1b1a0fe774c..982f66f8bb9 100644 --- a/data-otservbr-global/scripts/movements/quests/first_dragon/heaven_blossom.lua +++ b/data-otservbr-global/scripts/movements/quests/first_dragon/heaven_blossom.lua @@ -6,12 +6,12 @@ function heavenBlossom.onStepIn(creature, item, position, fromPosition) end if item.uid == 1066 then - if creature:getName() == 'Spirit of Fertility' then - creature:say('An allergic reaction weakens the dragon!', TALKTYPE_MONSTER_SAY) + if creature:getName() == "Spirit of Fertility" then + creature:say("An allergic reaction weakens the dragon!", TALKTYPE_MONSTER_SAY) creature:remove() - Game.createMonster('Angry Plant', position, true, true) + Game.createMonster("Angry Plant", position, true, true) item:remove() - creature:say('The fertile spirit brings a plant monster to life!', TALKTYPE_MONSTER_SAY) + creature:say("The fertile spirit brings a plant monster to life!", TALKTYPE_MONSTER_SAY) end end return true diff --git a/data-otservbr-global/scripts/movements/quests/first_dragon/zorvorax_secrets.lua b/data-otservbr-global/scripts/movements/quests/first_dragon/zorvorax_secrets.lua index fc92bcc81f5..16ea14e9fcd 100644 --- a/data-otservbr-global/scripts/movements/quests/first_dragon/zorvorax_secrets.lua +++ b/data-otservbr-global/scripts/movements/quests/first_dragon/zorvorax_secrets.lua @@ -2,18 +2,18 @@ local UniqueTable = { [25002] = { storage = Storage.FirstDragon.DesertTile, msg = "You enter the beautiful oasis. \ - By visiting this sacred site you're infused with the power of water bringing life to the desert." + By visiting this sacred site you're infused with the power of water bringing life to the desert.", }, [25003] = { storage = Storage.FirstDragon.StoneSculptureTile, msg = "You enter the circle of trees and flowers. \ - By visiting this sacred site you're infused with the power of nature and plants." + By visiting this sacred site you're infused with the power of nature and plants.", }, [25004] = { storage = Storage.FirstDragon.SuntowerTile, msg = "You entered the suntower of Ab'dendriel. \ - By visiting this sacred site you're infused with the power of the life-giving sun." - } + By visiting this sacred site you're infused with the power of the life-giving sun.", + }, } local zorvoraxSecrets = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/challenger.lua b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/challenger.lua index 7646339fe6a..928396b8f57 100644 --- a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/challenger.lua +++ b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/challenger.lua @@ -2,33 +2,33 @@ local destination = { [1067] = { newPos = Position(32903, 31630, 14), backPos = Position(32915, 31639, 14), - storage = Storage.ForgottenKnowledge.LadyTenebrisTimer + storage = Storage.ForgottenKnowledge.LadyTenebrisTimer, }, [1068] = { newPos = Position(32658, 32885, 14), backPos = Position(32678, 32888, 14), - storage = Storage.ForgottenKnowledge.ThornKnightTimer + storage = Storage.ForgottenKnowledge.ThornKnightTimer, }, [1069] = { newPos = Position(33391, 31184, 10), backPos = Position(33407, 31172, 10), - storage = Storage.ForgottenKnowledge.DragonkingTimer + storage = Storage.ForgottenKnowledge.DragonkingTimer, }, [1070] = { newPos = Position(32302, 31095, 14), backPos = Position(32318, 31091, 14), - storage = Storage.ForgottenKnowledge.HorrorTimer + storage = Storage.ForgottenKnowledge.HorrorTimer, }, [1071] = { newPos = Position(33026, 31663, 14), backPos = Position(32849, 32691, 15), - storage = Storage.ForgottenKnowledge.TimeGuardianTimer + storage = Storage.ForgottenKnowledge.TimeGuardianTimer, }, [1072] = { newPos = Position(32019, 32851, 14), backPos = Position(32035, 32859, 14), - storage = Storage.ForgottenKnowledge.LastLoreTimer - } + storage = Storage.ForgottenKnowledge.LastLoreTimer, + }, } local challenger = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/dragonking_vortex.lua b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/dragonking_vortex.lua index 9ad122c764c..41675141e57 100644 --- a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/dragonking_vortex.lua +++ b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/dragonking_vortex.lua @@ -3,7 +3,7 @@ local function functionBack() local spectators, spectator = Game.getSpectators(Position(33358, 31183, 11), false, false, 15, 15, 15, 15) for v = 1, #spectators do spectator = spectators[v] - if spectator:getName():lower() == 'soul of dragonking zyrtarch' then + if spectator:getName():lower() == "soul of dragonking zyrtarch" then soul = true end end @@ -19,7 +19,7 @@ local function functionBack() spec = specs[i] if spec:isPlayer() then spec:teleportTo(Position(33358, 31183, 10)) - elseif spec:isMonster() and spec:getName():lower() == 'soul of dragonking zyrtarch' then + elseif spec:isMonster() and spec:getName():lower() == "soul of dragonking zyrtarch" then spec:teleportTo(Position(33359, 31182, 12)) health = spec:getHealth() diference = dragonking:getHealth() - health @@ -39,13 +39,13 @@ end local dragonkingVortex = MoveEvent() function dragonkingVortex.onStepIn(creature, item, position, fromPosition) - if creature:isMonster() and creature:getName():lower() ~= 'dragonking zyrtarch' then + if creature:isMonster() and creature:getName():lower() ~= "dragonking zyrtarch" then return true end if creature:isPlayer() then creature:teleportTo(Position(33357, 31183, 11)) end - if creature:getName():lower() == 'dragonking zyrtarch' then + if creature:getName():lower() == "dragonking zyrtarch" then local soul = Tile(Position(33359, 31182, 12)):getTopCreature() creature:teleportTo(Position(33359, 31182, 12)) soul:teleportTo(Position(33358, 31183, 11)) diff --git a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/entrance_teleport.lua b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/entrance_teleport.lua index f7c6208e11d..5b327430c4b 100644 --- a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/entrance_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/entrance_teleport.lua @@ -2,72 +2,73 @@ local destination = { [25047] = { newPos = Position(32807, 31657, 8), storage = Storage.ForgottenKnowledge.AccessDeath, - effect = CONST_ME_MORTAREA + effect = CONST_ME_MORTAREA, }, [25048] = { newPos = Position(32325, 32089, 7), storage = Storage.ForgottenKnowledge.AccessDeath, - effect = CONST_ME_MORTAREA + effect = CONST_ME_MORTAREA, }, [25051] = { newPos = Position(32786, 32820, 13), storage = Storage.ForgottenKnowledge.AccessViolet, - effect = CONST_ME_PURPLEENERGY + effect = CONST_ME_PURPLEENERGY, }, [25052] = { newPos = Position(32328, 32089, 7), storage = Storage.ForgottenKnowledge.AccessViolet, - effect = CONST_ME_PURPLEENERGY + effect = CONST_ME_PURPLEENERGY, }, [25049] = { newPos = Position(32637, 32256, 7), storage = Storage.ForgottenKnowledge.AccessEarth, - effect = CONST_ME_SMALLPLANTS + effect = CONST_ME_SMALLPLANTS, }, [25050] = { newPos = Position(32331, 32089, 7), storage = Storage.ForgottenKnowledge.AccessEarth, - effect = CONST_ME_SMALLPLANTS + effect = CONST_ME_SMALLPLANTS, }, [25053] = { newPos = Position(33341, 31168, 7), storage = Storage.ForgottenKnowledge.AccessFire, - effect = CONST_ME_FIREAREA + effect = CONST_ME_FIREAREA, }, [25054] = { newPos = Position(32334, 32089, 7), storage = Storage.ForgottenKnowledge.AccessFire, - effect = CONST_ME_FIREAREA + effect = CONST_ME_FIREAREA, }, [25057] = { newPos = Position(32207, 31036, 10), storage = Storage.ForgottenKnowledge.AccessIce, - effect = CONST_ME_ICEATTACK + effect = CONST_ME_ICEATTACK, }, [25058] = { newPos = Position(32337, 32089, 7), storage = Storage.ForgottenKnowledge.AccessIce, - effect = CONST_ME_ICEATTACK + effect = CONST_ME_ICEATTACK, }, [25055] = { newPos = Position(32780, 32686, 14), storage = Storage.ForgottenKnowledge.AccessGolden, - effect = CONST_ME_YELLOWENERGY + effect = CONST_ME_YELLOWENERGY, }, [25056] = { newPos = Position(32340, 32089, 7), storage = Storage.ForgottenKnowledge.AccessGolden, - effect = CONST_ME_YELLOWENERGY + effect = CONST_ME_YELLOWENERGY, }, [10840] = { newPos = Position(32907, 32848, 13), storage = Storage.ForgottenKnowledge.AccessLast, - effect = CONST_ME_ENERGYHIT + effect = CONST_ME_ENERGYHIT, }, [10842] = { newPos = Position(32332, 32092, 7), storage = Storage.ForgottenKnowledge.AccessLast, - effect = CONST_ME_ENERGYHIT } + effect = CONST_ME_ENERGYHIT, + }, } local entranceTeleport = MoveEvent() @@ -84,12 +85,14 @@ function entranceTeleport.onStepIn(creature, item, position, fromPosition) end if item.itemid == 10840 then if player:getStorageValue(Storage.ForgottenKnowledge.AccessLast) < 1 then - if player:getStorageValue(Storage.ForgottenKnowledge.LadyTenebrisKilled) >= 1 - and player:getStorageValue(Storage.ForgottenKnowledge.LloydKilled) >= 1 - and player:getStorageValue(Storage.ForgottenKnowledge.ThornKnightKilled) >= 1 - and player:getStorageValue(Storage.ForgottenKnowledge.DragonkingKilled) >= 1 - and player:getStorageValue(Storage.ForgottenKnowledge.HorrorKilled) >= 1 - and player:getStorageValue(Storage.ForgottenKnowledge.TimeGuardianKilled) >= 1 then + if + player:getStorageValue(Storage.ForgottenKnowledge.LadyTenebrisKilled) >= 1 + and player:getStorageValue(Storage.ForgottenKnowledge.LloydKilled) >= 1 + and player:getStorageValue(Storage.ForgottenKnowledge.ThornKnightKilled) >= 1 + and player:getStorageValue(Storage.ForgottenKnowledge.DragonkingKilled) >= 1 + and player:getStorageValue(Storage.ForgottenKnowledge.HorrorKilled) >= 1 + and player:getStorageValue(Storage.ForgottenKnowledge.TimeGuardianKilled) >= 1 + then player:setStorageValue(Storage.ForgottenKnowledge.AccessLast, 1) end end @@ -102,14 +105,14 @@ function entranceTeleport.onStepIn(creature, item, position, fromPosition) else if item.itemid == 10840 then player:teleportTo(fromPosition) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You don\'t have the permission to use this portal.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You don't have the permission to use this portal.") player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true end local pos = position pos.y = pos.y + 2 player:teleportTo(pos) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You don\'t have the permission to use this portal.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You don't have the permission to use this portal.") player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) pos.y = pos.y - 2 pos:sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/ice_teleport.lua b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/ice_teleport.lua index e23888ca883..b855169c234 100644 --- a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/ice_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/ice_teleport.lua @@ -1,8 +1,8 @@ local destination = { [26667] = { position = Position(32273, 31053, 13), - storage = Storage.ForgottenKnowledge.AccessMachine - } + storage = Storage.ForgottenKnowledge.AccessMachine, + }, } local iceTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/lava_teleport.lua b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/lava_teleport.lua index 5256fe9f1a0..1e352d3d7ea 100644 --- a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/lava_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/lava_teleport.lua @@ -1,8 +1,8 @@ local destination = { [26668] = { position = Position(33411, 31082, 10), - storage = Storage.ForgottenKnowledge.AccessLavaTeleport - } + storage = Storage.ForgottenKnowledge.AccessLavaTeleport, + }, } local lavaTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/servant_teleport.lua b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/servant_teleport.lua index 4b1e0ae2986..d6511270619 100644 --- a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/servant_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/servant_teleport.lua @@ -13,8 +13,7 @@ function servantTeleport.onStepIn(creature, item, position, fromPosition) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have to wait to challenge this enemy again!") return true end - if player:getStorageValue(Storage.ForgottenKnowledge.GoldenServantCounter) >= 5 - and player:getStorageValue(Storage.ForgottenKnowledge.DiamondServantCounter) >= 5 then + if player:getStorageValue(Storage.ForgottenKnowledge.GoldenServantCounter) >= 5 and player:getStorageValue(Storage.ForgottenKnowledge.DiamondServantCounter) >= 5 then player:teleportTo(Position(32760, 32876, 14)) player:getPosition():sendMagicEffect(CONST_ME_ENERGYHIT) return true @@ -22,8 +21,7 @@ function servantTeleport.onStepIn(creature, item, position, fromPosition) player:teleportTo(Position(32815, 32872, 13)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) position:sendMagicEffect(CONST_ME_TELEPORT) - player:say('Seems that you don\'t absorb enough energy to use this portal.', - TALKTYPE_MONSTER_SAY, false, nil, position) + player:say("Seems that you don't absorb enough energy to use this portal.", TALKTYPE_MONSTER_SAY, false, nil, position) end return true end diff --git a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/teleport_tree.lua b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/teleport_tree.lua index 89697443a3c..ea3bf54a854 100644 --- a/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/teleport_tree.lua +++ b/data-otservbr-global/scripts/movements/quests/forgotten_knowledge/teleport_tree.lua @@ -6,8 +6,7 @@ function teleportTree.onStepIn(creature, item, position, fromPosition) return end - if player:getStorageValue(Storage.ForgottenKnowledge.PlantCounter) < 5 - or player:getStorageValue(Storage.ForgottenKnowledge.BirdCounter) < 3 then + if player:getStorageValue(Storage.ForgottenKnowledge.PlantCounter) < 5 or player:getStorageValue(Storage.ForgottenKnowledge.BirdCounter) < 3 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You don't help in anything to enter here") player:teleportTo(Position(32737, 32117, 10)) position:sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/scripts/movements/quests/formogar_mine_hoist/hoist.lua b/data-otservbr-global/scripts/movements/quests/formogar_mine_hoist/hoist.lua index 9f54989832a..1673696aaea 100644 --- a/data-otservbr-global/scripts/movements/quests/formogar_mine_hoist/hoist.lua +++ b/data-otservbr-global/scripts/movements/quests/formogar_mine_hoist/hoist.lua @@ -6,11 +6,10 @@ function hoist.onStepIn(creature, item, position, fromPosition) return true end - if player:getStorageValue(Storage.QuestChests.FormorgarMinesHoistSkeleton) ~= 1 - or player:getStorageValue(Storage.QuestChests.FormorgarMinesHoistChest) ~= 1 then + if player:getStorageValue(Storage.QuestChests.FormorgarMinesHoistSkeleton) ~= 1 or player:getStorageValue(Storage.QuestChests.FormorgarMinesHoistChest) ~= 1 then player:teleportTo(fromPosition) player:getPosition():sendMagicEffect(CONST_ME_POFF) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You must first find the hoist instruction before using it.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must first find the hoist instruction before using it.") return true end diff --git a/data-otservbr-global/scripts/movements/quests/heart_of_destruction/ice_crack.lua b/data-otservbr-global/scripts/movements/quests/heart_of_destruction/ice_crack.lua index 30142c91be3..afec167682f 100644 --- a/data-otservbr-global/scripts/movements/quests/heart_of_destruction/ice_crack.lua +++ b/data-otservbr-global/scripts/movements/quests/heart_of_destruction/ice_crack.lua @@ -16,7 +16,7 @@ local config = { { position = { x = 32162, y = 31296, z = 6 }, itemId = 6296 }, { position = { x = 32162, y = 31297, z = 6 }, itemId = 6297 }, { position = { x = 32161, y = 31294, z = 6 }, itemId = 6297 }, - { position = { x = 32161, y = 31293, z = 6 }, itemId = 6296 } + { position = { x = 32161, y = 31293, z = 6 }, itemId = 6296 }, } local function removeIceCrack(position, itemId) diff --git a/data-otservbr-global/scripts/movements/quests/heart_of_destruction/teleport.lua b/data-otservbr-global/scripts/movements/quests/heart_of_destruction/teleport.lua index 101cecc28c2..b61feae6974 100644 --- a/data-otservbr-global/scripts/movements/quests/heart_of_destruction/teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/heart_of_destruction/teleport.lua @@ -8,7 +8,7 @@ local setting = { [48066] = Position(32159, 31294, 7), -- to svargrond [48067] = Position(32113, 31386, 11), -- from svargrond [48068] = Position(33026, 31367, 8), -- to farmine - [48069] = Position(32117, 31355, 13) -- from farmine + [48069] = Position(32117, 31355, 13), -- from farmine } local teleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/heart_of_destruction/teleport_heart.lua b/data-otservbr-global/scripts/movements/quests/heart_of_destruction/teleport_heart.lua index 221782bc567..d204bf97049 100644 --- a/data-otservbr-global/scripts/movements/quests/heart_of_destruction/teleport_heart.lua +++ b/data-otservbr-global/scripts/movements/quests/heart_of_destruction/teleport_heart.lua @@ -19,19 +19,19 @@ local accessVortex = { [14323] = { position = Position(32246, 31252, 14), storage = 14320, - storageTime = 14321 + storageTime = 14321, }, -- Rupture enter [14342] = { position = Position(32305, 31249, 14), storage = 14322, - storageTime = 14323 + storageTime = 14323, }, -- Realityquake enter [14344] = { position = Position(32181, 31240, 14), storage = 14324, - storageTime = 14325 + storageTime = 14325, }, } @@ -42,7 +42,7 @@ local finalBosses = { storage1 = 14326, storage2 = 14327, storage3 = 14328, - storageTime = 14329 + storageTime = 14329, }, -- Outburst enter [14349] = { @@ -50,8 +50,8 @@ local finalBosses = { storage1 = 14326, storage2 = 14327, storage3 = 14328, - storageTime = 14331 - } + storageTime = 14331, + }, } local teleportHeart = MoveEvent() @@ -80,9 +80,7 @@ function teleportHeart.onStepIn(creature, item, position, fromPosition) player:sendTextMessage(19, "You don't have access to this portal.") end elseif uBosses then - if player:getStorageValue(uBosses.storage1) >= 1 - and player:getStorageValue(uBosses.storage2) >= 1 - and player:getStorageValue(uBosses.storage3) >= 1 then + if player:getStorageValue(uBosses.storage1) >= 1 and player:getStorageValue(uBosses.storage2) >= 1 and player:getStorageValue(uBosses.storage3) >= 1 then if player:getStorageValue(uBosses.storageTime) < os.time() then player:teleportTo(uBosses.position) else @@ -94,8 +92,7 @@ function teleportHeart.onStepIn(creature, item, position, fromPosition) player:sendTextMessage(19, "You don't have access to this portal.") end elseif item.actionid == 14351 then - if player:getStorageValue(14330) >= 1 - and player:getStorageValue(14332) >= 1 then + if player:getStorageValue(14330) >= 1 and player:getStorageValue(14332) >= 1 then if player:getStorageValue(14333) < os.time() then player:teleportTo(Position(32272, 31384, 14)) else diff --git a/data-otservbr-global/scripts/movements/quests/heart_of_destruction/vortex_crackler.lua b/data-otservbr-global/scripts/movements/quests/heart_of_destruction/vortex_crackler.lua index d9031a3f352..96574075398 100644 --- a/data-otservbr-global/scripts/movements/quests/heart_of_destruction/vortex_crackler.lua +++ b/data-otservbr-global/scripts/movements/quests/heart_of_destruction/vortex_crackler.lua @@ -40,7 +40,7 @@ function vortexCrackler.onStepIn(creature, item, position, fromPosition) for i = 1, #positions1 do playerTile = Tile(positions1[i]):getTopCreature() if playerTile:isPlayer() then - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end end if #storePlayers == #positions1 then @@ -51,7 +51,7 @@ function vortexCrackler.onStepIn(creature, item, position, fromPosition) for i = 1, #positions2 do playerTile = Tile(positions2[i]):getTopCreature() if playerTile:isPlayer() then - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end end if #storePlayers == #positions2 then @@ -62,7 +62,7 @@ function vortexCrackler.onStepIn(creature, item, position, fromPosition) for i = 1, #positions3 do playerTile = Tile(positions3[i]):getTopCreature() if playerTile:isPlayer() then - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end end if #storePlayers == #positions3 then @@ -73,7 +73,7 @@ function vortexCrackler.onStepIn(creature, item, position, fromPosition) for i = 1, #positions4 do playerTile = Tile(positions4[i]):getTopCreature() if playerTile:isPlayer() then - storePlayers[#storePlayers+1] = playerTile + storePlayers[#storePlayers + 1] = playerTile end end if #storePlayers == #positions4 then diff --git a/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/deep_terror.lua b/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/deep_terror.lua index 1a20930b8f0..28bb6f389dd 100644 --- a/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/deep_terror.lua +++ b/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/deep_terror.lua @@ -2,17 +2,14 @@ local function startWaves() Game.setStorageValue(GlobalStorage.HeroRathleton.DeepRunning, 1) if Game.getStorageValue(GlobalStorage.HeroRathleton.TentacleWave) < 9 then for i = 1, 7 do - Game.createMonster("glooth anemone", Position(math.random(33736, 33746), - math.random(31948, 31957), 14), true, true) + Game.createMonster("glooth anemone", Position(math.random(33736, 33746), math.random(31948, 31957), 14), true, true) end elseif Game.getStorageValue(GlobalStorage.HeroRathleton.TentacleWave) == 9 then for i = 1, 4 do - Game.createMonster("tentacle of the deep terror", Position(math.random(33736, 33746), - math.random(31948, 31957), 14), true, true) + Game.createMonster("tentacle of the deep terror", Position(math.random(33736, 33746), math.random(31948, 31957), 14), true, true) end end - Game.setStorageValue(GlobalStorage.HeroRathleton.TentacleWave, - Game.getStorageValue(GlobalStorage.HeroRathleton.TentacleWave) + 1) + Game.setStorageValue(GlobalStorage.HeroRathleton.TentacleWave, Game.getStorageValue(GlobalStorage.HeroRathleton.TentacleWave) + 1) if Game.getStorageValue(GlobalStorage.HeroRathleton.TentacleWave) > 9 then return true end diff --git a/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/fast_way.lua b/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/fast_way.lua index 1eacbbf6a76..1c8f2ad9553 100644 --- a/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/fast_way.lua +++ b/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/fast_way.lua @@ -1,7 +1,7 @@ local destination = { [24869] = { position = Position(33740, 31940, 15) }, [24870] = { position = Position(33534, 31955, 15) }, - [24871] = { position = Position(33611, 32055, 15) } + [24871] = { position = Position(33611, 32055, 15) }, } local fastWay = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/glooth_horror.lua b/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/glooth_horror.lua index 198b5f4326d..90a93023468 100644 --- a/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/glooth_horror.lua +++ b/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/glooth_horror.lua @@ -8,8 +8,7 @@ local function startWaves() elseif Game.getStorageValue(GlobalStorage.HeroRathleton.DevourerWave) == 9 then Game.createMonster("feeble glooth horror", Position(33555, 31956, 15), true, true) end - Game.setStorageValue(GlobalStorage.HeroRathleton.DevourerWave, - Game.getStorageValue(GlobalStorage.HeroRathleton.DevourerWave) + 1) + Game.setStorageValue(GlobalStorage.HeroRathleton.DevourerWave, Game.getStorageValue(GlobalStorage.HeroRathleton.DevourerWave) + 1) if Game.getStorageValue(GlobalStorage.HeroRathleton.DevourerWave) > 9 then return true end @@ -47,8 +46,7 @@ function gloothHorror.onStepIn(creature, item, position, fromPosition) return true end if Game.getStorageValue(GlobalStorage.HeroRathleton.HorrorRunning) == 1 then - player:say("Has someone fighting against Glooth Horror. \nTry again later.", - TALKTYPE_MONSTER_SAY, false, nil, position) + player:say("Has someone fighting against Glooth Horror. \nTry again later.", TALKTYPE_MONSTER_SAY, false, nil, position) player:teleportTo(Position(33571, 31947, 15)) position:sendMagicEffect(CONST_ME_TELEPORT) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/lava.lua b/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/lava.lua index 0cdd3ec196d..93e97e6dc53 100644 --- a/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/lava.lua +++ b/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/lava.lua @@ -5,7 +5,7 @@ local changes = { [4] = { centerPos = Position(33552, 32148, 15), nextPos = Position(33584, 32148, 15) }, [5] = { centerPos = Position(33584, 32148, 15), nextPos = Position(33616, 32148, 15) }, [6] = { centerPos = Position(33616, 32148, 15), nextPos = Position(33648, 32148, 15) }, - [7] = { centerPos = Position(33648, 32148, 15), nextPos = Position(33611, 32055, 15) } + [7] = { centerPos = Position(33648, 32148, 15), nextPos = Position(33611, 32055, 15) }, } local function checkCounter() @@ -55,8 +55,7 @@ local function checkCounter() addEvent(Game.createMonster, 15 * 1000, "raging fire", changes[storage].nextPos, true, true) end end - Game.setStorageValue(GlobalStorage.HeroRathleton.LavaChange, - Game.getStorageValue(GlobalStorage.HeroRathleton.LavaChange) + 1) + Game.setStorageValue(GlobalStorage.HeroRathleton.LavaChange, Game.getStorageValue(GlobalStorage.HeroRathleton.LavaChange) + 1) Game.setStorageValue(GlobalStorage.HeroRathleton.LavaCounter, 0) return true end diff --git a/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/professor_maxxen.lua b/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/professor_maxxen.lua index 10b9de6ff4a..67799bef2b0 100644 --- a/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/professor_maxxen.lua +++ b/data-otservbr-global/scripts/movements/quests/hero_of_rathleton/professor_maxxen.lua @@ -23,8 +23,7 @@ local function startWaves() end Game.createMonster("professor maxxen", Position(33711, 32046, 15), true, true) end - Game.setStorageValue(GlobalStorage.HeroRathleton.GloothWave, - Game.getStorageValue(GlobalStorage.HeroRathleton.GloothWave) + 1) + Game.setStorageValue(GlobalStorage.HeroRathleton.GloothWave, Game.getStorageValue(GlobalStorage.HeroRathleton.GloothWave) + 1) if Game.getStorageValue(GlobalStorage.HeroRathleton.GloothWave) > 8 then return true end @@ -62,8 +61,7 @@ function professorMaxxen.onStepIn(creature, item, position, fromPosition) return true end if Game.getStorageValue(GlobalStorage.HeroRathleton.MaxxenRunning) == 1 then - player:say("Has someone fighting against Professor Maxxen.\nTry again later.", - TALKTYPE_MONSTER_SAY, false, nil, position) + player:say("Has someone fighting against Professor Maxxen.\nTry again later.", TALKTYPE_MONSTER_SAY, false, nil, position) player:teleportTo(Position(33661, 32058, 15)) position:sendMagicEffect(CONST_ME_TELEPORT) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/scripts/movements/quests/in_service_of_yalahar/last_fight_teleport.lua b/data-otservbr-global/scripts/movements/quests/in_service_of_yalahar/last_fight_teleport.lua index a26129881ad..775cd7968a6 100644 --- a/data-otservbr-global/scripts/movements/quests/in_service_of_yalahar/last_fight_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/in_service_of_yalahar/last_fight_teleport.lua @@ -12,7 +12,7 @@ function lastFightTeleport.onStepIn(creature, item, position, fromPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:teleportTo(Position(32783, 31174, 10)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:say('The apparatus in the centre looks odd! You should inspect it.', TALKTYPE_MONSTER_SAY) + player:say("The apparatus in the centre looks odd! You should inspect it.", TALKTYPE_MONSTER_SAY) end else player:teleportTo(fromPosition) diff --git a/data-otservbr-global/scripts/movements/quests/in_service_of_yalahar/morik.lua b/data-otservbr-global/scripts/movements/quests/in_service_of_yalahar/morik.lua index 13677f1937a..bc810c3b126 100644 --- a/data-otservbr-global/scripts/movements/quests/in_service_of_yalahar/morik.lua +++ b/data-otservbr-global/scripts/movements/quests/in_service_of_yalahar/morik.lua @@ -10,8 +10,11 @@ function morik.onStepIn(creature, item, position, fromPosition) -- StorageValue for Questlog 'Mission 10: The Final Battle' player:setStorageValue(Storage.InServiceofYalahar.Mission10, 3) player:setStorageValue(Storage.InServiceofYalahar.Questline, 52) - player:say('It seems by defeating Azerus you have stopped this army from entering your world! \z - Better leave this ghastly place forever.', TALKTYPE_MONSTER_SAY) + player:say( + "It seems by defeating Azerus you have stopped this army from entering your world! \z + Better leave this ghastly place forever.", + TALKTYPE_MONSTER_SAY + ) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) end return true diff --git a/data-otservbr-global/scripts/movements/quests/in_service_of_yalahar/yalahar_machine_war_golems.lua b/data-otservbr-global/scripts/movements/quests/in_service_of_yalahar/yalahar_machine_war_golems.lua index 3112ef432d4..13223bf913b 100644 --- a/data-otservbr-global/scripts/movements/quests/in_service_of_yalahar/yalahar_machine_war_golems.lua +++ b/data-otservbr-global/scripts/movements/quests/in_service_of_yalahar/yalahar_machine_war_golems.lua @@ -1,18 +1,18 @@ local setting = { [23698] = { storage = GlobalStorage.InServiceOfYalahar.WarGolemsMachine2, - destination = Position(32869, 31312, 11) + destination = Position(32869, 31312, 11), }, [23699] = { storage = GlobalStorage.InServiceOfYalahar.WarGolemsMachine1, - destination = Position(32881, 31312, 11) + destination = Position(32881, 31312, 11), }, [23702] = { - destination = Position(32876, 31321, 10) + destination = Position(32876, 31321, 10), }, [23703] = { - destination = Position(32875, 31321, 10) - } + destination = Position(32875, 31321, 10), + }, } local yalaharMachineWarGolems = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/inquisition/entrance.lua b/data-otservbr-global/scripts/movements/quests/inquisition/entrance.lua index 090fd748f45..73b28dc0c57 100644 --- a/data-otservbr-global/scripts/movements/quests/inquisition/entrance.lua +++ b/data-otservbr-global/scripts/movements/quests/inquisition/entrance.lua @@ -5,7 +5,7 @@ local throneStorages = { Storage.PitsOfInferno.ThroneApocalypse, Storage.PitsOfInferno.ThroneBazir, Storage.PitsOfInferno.ThroneAshfalor, - Storage.PitsOfInferno.ThronePumin + Storage.PitsOfInferno.ThronePumin, } local function hasTouchedOneThrone(player) @@ -25,8 +25,7 @@ function entrance.onStepIn(creature, item, position, fromPosition) return true end - if hasTouchedOneThrone(player) and player:getLevel() >= 100 - and player:getStorageValue(Storage.TheInquisition.Questline) >= 20 then + if hasTouchedOneThrone(player) and player:getLevel() >= 100 and player:getStorageValue(Storage.TheInquisition.Questline) >= 20 then local destination = Position(33168, 31683, 15) player:teleportTo(destination) position:sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/scripts/movements/quests/inquisition/reward_room_text.lua b/data-otservbr-global/scripts/movements/quests/inquisition/reward_room_text.lua index b8214cbad33..ea494e5ee05 100644 --- a/data-otservbr-global/scripts/movements/quests/inquisition/reward_room_text.lua +++ b/data-otservbr-global/scripts/movements/quests/inquisition/reward_room_text.lua @@ -1,7 +1,8 @@ local textPos = { { x = 32318, y = 32251, z = 9 }, { x = 32319, y = 32251, z = 9 }, - { x = 32320, y = 32251, z = 9 } } + { x = 32320, y = 32251, z = 9 }, +} local rewardRoomText = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/inquisition/teleport_main.lua b/data-otservbr-global/scripts/movements/quests/inquisition/teleport_main.lua index 0ad0d023eb9..bfbff379ef7 100644 --- a/data-otservbr-global/scripts/movements/quests/inquisition/teleport_main.lua +++ b/data-otservbr-global/scripts/movements/quests/inquisition/teleport_main.lua @@ -3,175 +3,176 @@ local teleports = { [2150] = { text = "Entering Ushuriel's ward.", newPos = Position(33158, 31728, 11), - storage = 0, alwaysSetStorage = true + storage = 0, + alwaysSetStorage = true, }, -- from ushuriel ward [2151] = { text = "Entering the Crystal Caves.", bossStorage = 200, newPos = Position(33069, 31782, 13), - storage = 1 + storage = 1, }, -- from crystal caves [2152] = { text = "Escaping back to the Retreat.", - newPos = Position(33165, 31709, 14) + newPos = Position(33165, 31709, 14), }, -- to crystal caves [2153] = { text = "Entering the Crystal Caves.", newPos = Position(33069, 31782, 13), - storage = 1 + storage = 1, }, -- to sunken caves [2154] = { text = "Entering the Sunken Caves.", - newPos = Position(33169, 31755, 13) + newPos = Position(33169, 31755, 13), }, -- from sunken caves [2155] = { text = "Entering the Mirror Maze of Madness.", - newPos = Position(33065, 31772, 10) + newPos = Position(33065, 31772, 10), }, -- to zugurosh ward [2156] = { text = "Entering Zugurosh's ward.", - newPos = Position(33124, 31692, 11) + newPos = Position(33124, 31692, 11), }, -- from zugurosh ward [2157] = { text = "Entering the Blood Halls.", bossStorage = 201, newPos = Position(33372, 31613, 14), - storage = 2 + storage = 2, }, -- from blood halls [2158] = { text = "Escaping back to the Retreat.", - newPos = Position(33165, 31709, 14) + newPos = Position(33165, 31709, 14), }, -- to blood halls [2159] = { text = "Entering the Blood Halls.", newPos = Position(33372, 31613, 14), - storage = 2 + storage = 2, }, -- to foundry [2160] = { text = "Entering the Foundry.", - newPos = Position(33356, 31589, 11) + newPos = Position(33356, 31589, 11), }, -- to madareth ward [2161] = { text = "Entering Madareth's ward.", - newPos = Position(33197, 31767, 11) + newPos = Position(33197, 31767, 11), }, -- from madareth ward [2162] = { text = "Entering the Vats.", bossStorage = 202, newPos = Position(33153, 31782, 12), - storage = 3 + storage = 3, }, -- from vats [2163] = { text = "Escaping back to the Retreat.", - newPos = Position(33165, 31709, 14) + newPos = Position(33165, 31709, 14), }, -- to vats [2164] = { text = "Entering the Vats.", newPos = Position(33153, 31782, 12), - storage = 3 + storage = 3, }, -- to battlefield [2165] = { text = "Entering the Battlefield.", - newPos = Position(33250, 31632, 13) + newPos = Position(33250, 31632, 13), }, -- from battlefield [2166] = { text = "Entering the Vats.", - newPos = Position(33233, 31758, 12) + newPos = Position(33233, 31758, 12), }, -- to brothers ward [2167] = { text = "Entering the Demon Forge.", - newPos = Position(33232, 31733, 11) + newPos = Position(33232, 31733, 11), }, -- from demon forge [2168] = { text = "Entering the Arcanum.", bossStorage = 203, newPos = Position(33038, 31753, 15), - storage = 4 + storage = 4, }, -- from arcanum [2169] = { text = "Escaping back to the Retreat.", - newPos = Position(33165, 31709, 14) + newPos = Position(33165, 31709, 14), }, -- to arcanum [2170] = { text = "Entering the Arcanum.", newPos = Position(33038, 31753, 15), - storage = 4 + storage = 4, }, -- to soul wells [2171] = { text = "Entering the Soul Wells.", - newPos = Position(33093, 31575, 11) + newPos = Position(33093, 31575, 11), }, -- from soul wells [2172] = { text = "Entering the Arcanum.", - newPos = Position(33186, 31759, 15) + newPos = Position(33186, 31759, 15), }, -- to annihilon ward [2173] = { text = "Entering the Annihilon's ward.", - newPos = Position(33197, 31703, 11) + newPos = Position(33197, 31703, 11), }, -- from annihilon ward [2174] = { text = "Entering the Hive.", bossStorage = 204, newPos = Position(33199, 31686, 12), - storage = 5 + storage = 5, }, -- from hive [2175] = { text = "Escaping back to the Retreat.", - newPos = Position(33165, 31709, 14) + newPos = Position(33165, 31709, 14), }, -- to hive [2176] = { text = "Entering the Hive.", newPos = Position(33199, 31686, 12), - storage = 5 + storage = 5, }, -- to hellgorak ward [2177] = { text = "Entering the Hellgorak's ward.", - newPos = Position(33104, 31734, 11) + newPos = Position(33104, 31734, 11), }, -- from hellgorak ward [2178] = { text = "Entering the Shadow Nexus. Abandon all Hope.", bossStorage = 205, newPos = Position(33110, 31682, 12), - storage = 6 + storage = 6, }, -- from shadow nexus [2179] = { text = "Escaping back to the Retreat.", - newPos = Position(33165, 31709, 14) + newPos = Position(33165, 31709, 14), }, -- from foundry to blood halls [2180] = { text = "Entering the Blood Halls.", - newPos = Position(33357, 31589, 12) - } + newPos = Position(33357, 31589, 12), + }, } local teleportMain = MoveEvent() @@ -182,8 +183,7 @@ function teleportMain.onStepIn(creature, item, position, fromPosition) return true end - local teleport = teleports - [item.uid] + local teleport = teleports[item.uid] if teleport.alwaysSetStorage and player:getStorageValue(Storage.TheInquisition.EnterTeleport) < teleport.storage then player:setStorageValue(Storage.TheInquisition.EnterTeleport, teleport.storage) end diff --git a/data-otservbr-global/scripts/movements/quests/killing_in_the_name_of/boss.lua b/data-otservbr-global/scripts/movements/quests/killing_in_the_name_of/boss.lua index 677400e616a..f0a4b171847 100644 --- a/data-otservbr-global/scripts/movements/quests/killing_in_the_name_of/boss.lua +++ b/data-otservbr-global/scripts/movements/quests/killing_in_the_name_of/boss.lua @@ -23,7 +23,7 @@ end local bosses = { { - bossName = 'the snapper', + bossName = "the snapper", storage = 34100, teleportPosition = { x = 32608, y = 32714, z = 8 }, playerPosition = Position(32610, 32723, 8), @@ -31,10 +31,10 @@ local bosses = { centerPosition = Position(32613, 32727, 8), rangeX = 5, rangeY = 5, - flamePosition = Position(32612, 32733, 8) + flamePosition = Position(32612, 32733, 8), }, { - bossName = 'hide', + bossName = "hide", storage = 34101, teleportPosition = { x = 32822, y = 32693, z = 8 }, playerPosition = Position(32815, 32703, 8), @@ -42,10 +42,10 @@ local bosses = { centerPosition = Position(32816, 32707, 8), rangeX = 6, rangeY = 5, - flamePosition = Position(32810, 32704, 8) + flamePosition = Position(32810, 32704, 8), }, { - bossName = 'deathbine', + bossName = "deathbine", storage = 34102, teleportPosition = { x = 32722, y = 32762, z = 8 }, playerPosition = Position(32715, 32736, 8), @@ -53,10 +53,10 @@ local bosses = { centerPosition = Position(32716, 32724, 8), rangeX = 9, rangeY = 13, - flamePosition = Position(32726, 32727, 8) + flamePosition = Position(32726, 32727, 8), }, { - bossName = 'the bloodtusk', + bossName = "the bloodtusk", storage = 34103, teleportPosition = { x = 32104, y = 31116, z = 2 }, playerPosition = Position(32102, 31124, 2), @@ -64,10 +64,10 @@ local bosses = { centerPosition = Position(32101, 31129, 2), rangeX = 5, rangeY = 6, - flamePosition = Position(32093, 31130, 2) + flamePosition = Position(32093, 31130, 2), }, { - bossName = 'shardhead', + bossName = "shardhead", storage = 34104, teleportPosition = { x = 32141, y = 31144, z = 3 }, playerPosition = Position(32152, 31137, 3), @@ -75,10 +75,10 @@ local bosses = { centerPosition = Position(32155, 31136, 3), rangeX = 5, rangeY = 7, - flamePosition = Position(32149, 31137, 3) + flamePosition = Position(32149, 31137, 3), }, { - bossName = 'esmeralda', + bossName = "esmeralda", storage = 34105, teleportPosition = { x = 32758, y = 31245, z = 9 }, playerPosition = Position(32759, 31252, 9), @@ -86,10 +86,10 @@ local bosses = { centerPosition = Position(32759, 31254, 9), rangeX = 4, rangeY = 4, - flamePosition = Position(32758, 31248, 9) + flamePosition = Position(32758, 31248, 9), }, { - bossName = 'fleshcrawler', + bossName = "fleshcrawler", storage = 34106, teleportPosition = { x = 33044, y = 32794, z = 11 }, playerPosition = Position(33100, 32785, 11), @@ -97,10 +97,10 @@ local bosses = { centerPosition = Position(33112, 32789, 11), rangeX = 15, rangeY = 13, - flamePosition = Position(33106, 32775, 11) + flamePosition = Position(33106, 32775, 11), }, { - bossName = 'ribstride', + bossName = "ribstride", storage = 34107, teleportPosition = { x = 33109, y = 32803, z = 13 }, playerPosition = Position(33012, 32813, 13), @@ -108,10 +108,10 @@ local bosses = { centerPosition = Position(33012, 32805, 13), rangeX = 10, rangeY = 9, - flamePosition = Position(33018, 32814, 13) + flamePosition = Position(33018, 32814, 13), }, { - bossName = 'the bloodweb', + bossName = "the bloodweb", storage = 34108, teleportPosition = { x = 32122, y = 31188, z = 4 }, playerPosition = Position(32019, 31037, 8), @@ -119,10 +119,10 @@ local bosses = { centerPosition = Position(32023, 31033, 8), rangeX = 11, rangeY = 11, - flamePosition = Position(32010, 31031, 8) + flamePosition = Position(32010, 31031, 8), }, { - bossName = 'thul', + bossName = "thul", storage = 34109, teleportPosition = { x = 32085, y = 32782, z = 12 }, playerPosition = Position(32078, 32780, 13), @@ -130,10 +130,10 @@ local bosses = { centerPosition = Position(32083, 32781, 13), rangeX = 6, rangeY = 6, - flamePosition = Position(32086, 32776, 13) + flamePosition = Position(32086, 32776, 13), }, { - bossName = 'the old widow', + bossName = "the old widow", storage = 34110, teleportPosition = { x = 32814, y = 32280, z = 8 }, playerPosition = Position(32805, 32280, 8), @@ -141,10 +141,10 @@ local bosses = { centerPosition = Position(32801, 32276, 8), rangeX = 5, rangeY = 5, - flamePosition = Position(32808, 32283, 8) + flamePosition = Position(32808, 32283, 8), }, { - bossName = 'hemming', + bossName = "hemming", storage = 34111, teleportPosition = { x = 32992, y = 31443, z = 7 }, playerPosition = Position(32999, 31452, 8), @@ -152,10 +152,10 @@ local bosses = { centerPosition = Position(33006, 31445, 8), rangeX = 9, rangeY = 7, - flamePosition = Position(33005, 31437, 8) + flamePosition = Position(33005, 31437, 8), }, { - bossName = 'tormentor', + bossName = "tormentor", storage = 34112, teleportPosition = { x = 32072, y = 31283, z = 10 }, playerPosition = Position(32043, 31258, 11), @@ -163,10 +163,10 @@ local bosses = { centerPosition = Position(32051, 31264, 11), rangeX = 11, rangeY = 14, - flamePosition = Position(32051, 31249, 11) + flamePosition = Position(32051, 31249, 11), }, { - bossName = 'flameborn', + bossName = "flameborn", storage = 34113, teleportPosition = { x = 32816, y = 31026, z = 7 }, playerPosition = Position(32940, 31064, 8), @@ -174,10 +174,10 @@ local bosses = { centerPosition = Position(32944, 31060, 8), rangeX = 11, rangeY = 10, - flamePosition = Position(32818, 31026, 7) + flamePosition = Position(32818, 31026, 7), }, { - bossName = 'fazzrah', + bossName = "fazzrah", storage = 34114, teleportPosition = { x = 33310, y = 31183, z = 7 }, playerPosition = Position(32993, 31175, 7), @@ -185,10 +185,10 @@ local bosses = { centerPosition = Position(33003, 31177, 7), rangeX = 14, rangeY = 6, - flamePosition = Position(33007, 31171, 7) + flamePosition = Position(33007, 31171, 7), }, { - bossName = 'tromphonyte', + bossName = "tromphonyte", storage = 34115, teleportPosition = { x = 33136, y = 31186, z = 8 }, playerPosition = Position(33111, 31184, 8), @@ -196,10 +196,10 @@ local bosses = { centerPosition = Position(33113, 31188, 8), rangeX = 11, rangeY = 18, - flamePosition = Position(33109, 31168, 8) + flamePosition = Position(33109, 31168, 8), }, { - bossName = 'sulphur scuttler', + bossName = "sulphur scuttler", storage = 34116, teleportPosition = { x = 33286, y = 31112, z = 8 }, playerPosition = Position(33269, 31046, 9), @@ -207,10 +207,10 @@ local bosses = { centerPosition = Position(33088, 31012, 8), rangeX = 11, rangeY = 11, - flamePosition = Position(0, 0, 0) + flamePosition = Position(0, 0, 0), }, { - bossName = 'bruise payne', + bossName = "bruise payne", storage = 34117, teleportPosition = { x = 32679, y = 31114, z = 3 }, playerPosition = Position(33237, 31006, 2), @@ -218,10 +218,10 @@ local bosses = { centerPosition = Position(33251, 31016, 2), rangeX = 22, rangeY = 11, - flamePosition = Position(33260, 31003, 2) + flamePosition = Position(33260, 31003, 2), }, { - bossName = 'the many', + bossName = "the many", storage = 34118, teleportPosition = { x = 32920, y = 32883, z = 8 }, playerPosition = Position(32921, 32893, 8), @@ -229,10 +229,10 @@ local bosses = { centerPosition = Position(32921, 32898, 8), rangeX = 5, rangeY = 6, - flamePosition = Position(32921, 32890, 8) + flamePosition = Position(32921, 32890, 8), }, { - bossName = 'the noxious spawn', + bossName = "the noxious spawn", storage = 34119, teleportPosition = { x = 32842, y = 32660, z = 11 }, playerPosition = Position(32842, 32667, 11), @@ -240,10 +240,10 @@ local bosses = { centerPosition = Position(32843, 32670, 11), rangeX = 5, rangeY = 5, - flamePosition = Position(0, 0, 0) + flamePosition = Position(0, 0, 0), }, { - bossName = 'gorgo', + bossName = "gorgo", storage = 34120, teleportPosition = { x = 32799, y = 32501, z = 11 }, playerPosition = Position(32759, 32447, 11), @@ -251,10 +251,10 @@ local bosses = { centerPosition = Position(32759, 32440, 11), rangeX = 9, rangeY = 10, - flamePosition = Position(32768, 32440, 11) + flamePosition = Position(32768, 32440, 11), }, { - bossName = 'stonecracker', + bossName = "stonecracker", storage = 34121, teleportPosition = { x = 33251, y = 31719, z = 14 }, playerPosition = Position(33259, 31694, 15), @@ -262,10 +262,10 @@ local bosses = { centerPosition = Position(33259, 31670, 15), rangeX = 5, rangeY = 7, - flamePosition = Position(33259, 31689, 15) + flamePosition = Position(33259, 31689, 15), }, { - bossName = 'leviathan', + bossName = "leviathan", storage = 34122, teleportPosition = { x = 31926, y = 31071, z = 10 }, playerPosition = Position(31915, 31071, 10), @@ -273,10 +273,10 @@ local bosses = { centerPosition = Position(31909, 31072, 10), rangeX = 8, rangeY = 7, - flamePosition = Position(31918, 31071, 10) + flamePosition = Position(31918, 31071, 10), }, { - bossName = 'kerberos', + bossName = "kerberos", storage = 34123, teleportPosition = { x = 32044, y = 32547, z = 14 }, playerPosition = Position(32048, 32581, 15), @@ -284,10 +284,10 @@ local bosses = { centerPosition = Position(32041, 32569, 15), rangeX = 11, rangeY = 13, - flamePosition = Position(32030, 32555, 15) + flamePosition = Position(32030, 32555, 15), }, { - bossName = 'ethershreck', + bossName = "ethershreck", storage = 34124, teleportPosition = { x = 33115, y = 31004, z = 8 }, playerPosition = Position(33089, 31021, 8), @@ -295,10 +295,10 @@ local bosses = { centerPosition = Position(33088, 31012, 8), rangeX = 11, rangeY = 11, - flamePosition = Position(33076, 31007, 8) + flamePosition = Position(33076, 31007, 8), }, { - bossName = 'paiz the pauperizer', + bossName = "paiz the pauperizer", storage = 34125, teleportPosition = { x = 33066, y = 31104, z = 2 }, playerPosition = Position(33069, 31110, 1), @@ -306,10 +306,10 @@ local bosses = { centerPosition = Position(33076, 31110, 1), rangeX = 8, rangeY = 6, - flamePosition = Position(33076, 31110, 1) + flamePosition = Position(33076, 31110, 1), }, { - bossName = 'bretzecutioner', + bossName = "bretzecutioner", storage = 34126, teleportPosition = { x = 32003, y = 31189, z = 10 }, playerPosition = Position(31973, 31184, 10), @@ -317,10 +317,10 @@ local bosses = { centerPosition = Position(31973, 31177, 10), rangeX = 15, rangeY = 10, - flamePosition = Position(31973, 31166, 10) + flamePosition = Position(31973, 31166, 10), }, { - bossName = 'zanakeph', + bossName = "zanakeph", storage = 34127, teleportPosition = { x = 33095, y = 31075, z = 12 }, playerPosition = Position(33077, 31040, 12), @@ -328,10 +328,10 @@ local bosses = { centerPosition = Position(33077, 31050, 12), rangeX = 13, rangeY = 10, - flamePosition = Position(33070, 31039, 12) + flamePosition = Position(33070, 31039, 12), }, { - bossName = 'tiquandas revenge', + bossName = "tiquandas revenge", storage = Storage.KillingInTheNameOf.MissionTiquandasRevenge, teleportPosition = { x = 32877, y = 32583, z = 7 }, playerPosition = Position(32888, 32580, 4), @@ -339,10 +339,10 @@ local bosses = { centerPosition = Position(32748, 32293, 10), rangeX = 8, rangeY = 7, - flamePosition = Position(33076, 31029, 11) + flamePosition = Position(33076, 31029, 11), }, { - bossName = 'demodras', + bossName = "demodras", storage = Storage.KillingInTheNameOf.MissionDemodras, teleportPosition = { x = 32769, y = 32290, z = 10 }, playerPosition = Position(32748, 32287, 10), @@ -350,10 +350,10 @@ local bosses = { centerPosition = Position(32887, 32583, 4), rangeX = 6, rangeY = 5, - flamePosition = Position(33076, 31029, 12) + flamePosition = Position(33076, 31029, 12), }, { - bossName = 'necropharus', + bossName = "necropharus", storage = Storage.KillingInTheNameOf.LugriNecromancers, teleportPosition = { x = 33046, y = 32439, z = 11 }, playerPosition = Position(33028, 32426, 12), @@ -361,10 +361,10 @@ local bosses = { centerPosition = Position(33028, 32424, 12), rangeX = 6, rangeY = 5, - flamePosition = Position(33070, 31035, 12) + flamePosition = Position(33070, 31035, 12), }, { - bossName = 'the horned fox', + bossName = "the horned fox", storage = Storage.KillingInTheNameOf.BudrikMinos, teleportPosition = { x = 32450, y = 31988, z = 9 }, playerPosition = Position(32458, 31994, 9), @@ -372,7 +372,7 @@ local bosses = { centerPosition = Position(32450, 31400, 9), rangeX = 5, rangeY = 8, - flamePosition = Position(33070, 31029, 12) + flamePosition = Position(33070, 31029, 12), }, { bossName = { "Brutus Bloodbeard", "Deadeye Devious", "lethal lissy", "Ron The Ripper" }, @@ -383,7 +383,7 @@ local bosses = { centerPosition = Position(31982, 32897, 0), rangeX = 5, rangeY = 8, - flamePosition = Position(31987, 32896, 0) + flamePosition = Position(31987, 32896, 0), }, { bossName = "merikh the slaughterer", @@ -394,7 +394,7 @@ local bosses = { centerPosition = Position(32875, 31116, 8), rangeX = 6, rangeY = 6, - flamePosition = Position(32875, 31124, 8) + flamePosition = Position(32875, 31124, 8), }, { bossName = "fahim the wise", @@ -405,8 +405,8 @@ local bosses = { centerPosition = Position(32811, 31118, 2), rangeX = 5, rangeY = 5, - flamePosition = Position(32807, 31117, 2) - } + flamePosition = Position(32807, 31117, 2), + }, } local boss = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/kilmaresh/firetp.lua b/data-otservbr-global/scripts/movements/quests/kilmaresh/firetp.lua index 02e81d691ce..cb98135915a 100644 --- a/data-otservbr-global/scripts/movements/quests/kilmaresh/firetp.lua +++ b/data-otservbr-global/scripts/movements/quests/kilmaresh/firetp.lua @@ -35,7 +35,6 @@ local fourthTp = { fireIdOff = 2114, -- id do fire off } - local backPosition = { x = 33822, y = 31645, z = 9 } -- errou local finalPosition = { x = 33826, y = 31620, z = 9 } -- deu certo diff --git a/data-otservbr-global/scripts/movements/quests/kilmaresh/steptile.lua b/data-otservbr-global/scripts/movements/quests/kilmaresh/steptile.lua index 26002642f7e..a6c13f8efa0 100644 --- a/data-otservbr-global/scripts/movements/quests/kilmaresh/steptile.lua +++ b/data-otservbr-global/scripts/movements/quests/kilmaresh/steptile.lua @@ -2,7 +2,7 @@ local config = { [57535] = { tileId = 416, positionTo = { x = 33829, y = 31635, z = 9 } }, [57536] = { tileId = 417, positionTo = { x = 33831, y = 31635, z = 9 } }, [57537] = { tileId = 418, positionTo = { x = 33833, y = 31635, z = 9 } }, - [57538] = { tileId = 423, positionTo = { x = 33835, y = 31635, z = 9 } } + [57538] = { tileId = 423, positionTo = { x = 33835, y = 31635, z = 9 } }, } local destination = { x = 33826, y = 31611, z = 9 } diff --git a/data-otservbr-global/scripts/movements/quests/kilmaresh/tpvoc.lua b/data-otservbr-global/scripts/movements/quests/kilmaresh/tpvoc.lua index 33b588360cb..958841ef705 100644 --- a/data-otservbr-global/scripts/movements/quests/kilmaresh/tpvoc.lua +++ b/data-otservbr-global/scripts/movements/quests/kilmaresh/tpvoc.lua @@ -1,20 +1,20 @@ local setting = { [57531] = { vocationId = VOCATION.BASE_ID.SORCERER, - toPosition = { x = 33829, y = 31635, z = 9 } + toPosition = { x = 33829, y = 31635, z = 9 }, }, [57532] = { vocationId = VOCATION.BASE_ID.DRUID, - toPosition = { x = 33831, y = 31635, z = 9 } + toPosition = { x = 33831, y = 31635, z = 9 }, }, [57533] = { vocationId = VOCATION.BASE_ID.PALADIN, - toPosition = { x = 33833, y = 31635, z = 9 } + toPosition = { x = 33833, y = 31635, z = 9 }, }, [57534] = { vocationId = VOCATION.BASE_ID.KNIGHT, - toPosition = { x = 33835, y = 31635, z = 9 } - } + toPosition = { x = 33835, y = 31635, z = 9 }, + }, } local tpvoc = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/lions_rock/lions_rock.lua b/data-otservbr-global/scripts/movements/quests/lions_rock/lions_rock.lua index d388d44b091..8e91e90579f 100644 --- a/data-otservbr-global/scripts/movements/quests/lions_rock/lions_rock.lua +++ b/data-otservbr-global/scripts/movements/quests/lions_rock/lions_rock.lua @@ -3,26 +3,26 @@ local signs = { pos = { x = 33095, y = 32244, z = 9 }, storage = Storage.LionsRock.InnerSanctum.SnakeSign, message1 = "With the aid of the old scroll you translate the inscriptions on the floor: And the mighty lion defeated the jealous snake.", - message2 = "As a sign of victory he tooks its eye, yellow as envy and malevolence, and out of a foul creature created a precious treasure." + message2 = "As a sign of victory he tooks its eye, yellow as envy and malevolence, and out of a foul creature created a precious treasure.", }, { pos = { x = 33128, y = 32300, z = 9 }, storage = Storage.LionsRock.InnerSanctum.LizardSign, message1 = "With the aid of the old scroll you translate the inscriptions on the floor: And the mighty lion defeated the lazy lizard.", - message2 = "As a sign of victory he tooks its egg, blue as sloth and conceit, and out of a foul creature created a precious treasure." + message2 = "As a sign of victory he tooks its egg, blue as sloth and conceit, and out of a foul creature created a precious treasure.", }, { pos = { x = 33109, y = 32329, z = 9 }, storage = Storage.LionsRock.InnerSanctum.ScorpionSign, message1 = "With the aid of the old scroll you translate the inscriptions on the golden altar: And the mighty lion defeated the treacherous scorpion.", - message2 = "As a sign of victory he tooks its poison, violet as deceit and betrayal, and created a precious treasure." + message2 = "As a sign of victory he tooks its poison, violet as deceit and betrayal, and created a precious treasure.", }, { pos = { x = 33127, y = 32340, z = 9 }, storage = Storage.LionsRock.InnerSanctum.HyenaSign, message1 = "With the aid of the old scroll you translate the inscriptions on the golden statue: And the mighty lion defeated the greedy hyaena.", - message2 = "As a sign of victory he tooks its blood, red as voracity and lust, and created a precious treasure." - } + message2 = "As a sign of victory he tooks its blood, red as voracity and lust, and created a precious treasure.", + }, } -- Lions rock entrance @@ -59,7 +59,7 @@ local checkPos = { { x = 33120, y = 32247, z = 9 }, { x = 33118, y = 32248, z = 9 }, { x = 33119, y = 32248, z = 9 }, - { x = 33120, y = 32248, z = 9 } + { x = 33120, y = 32248, z = 9 }, } local lionsRockTranslationScroll = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/nightmare_isles/teleport.lua b/data-otservbr-global/scripts/movements/quests/nightmare_isles/teleport.lua index 9d1158450e3..80dba0d59b3 100644 --- a/data-otservbr-global/scripts/movements/quests/nightmare_isles/teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/nightmare_isles/teleport.lua @@ -1,13 +1,13 @@ local setting = { { storage = 210001, teleportPosition = Position(33032, 32400, 7) }, -- entrance teleport Darashia Northwest { storage = 210002, teleportPosition = Position(33215, 32273, 7) }, -- entrance teleport Darashia North - { storage = 210016, teleportPosition = Position(33255, 32678, 7) } -- entrance teleport Ankrahmun + { storage = 210016, teleportPosition = Position(33255, 32678, 7) }, -- entrance teleport Ankrahmun } local teleports = { [64001] = 210001, -- northwest Darashia [64002] = 210002, -- north Darashia - [64003] = 210016 -- north Ankrahmun + [64003] = 210016, -- north Ankrahmun } local teleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/nightmare_isles/teleport_ladder.lua b/data-otservbr-global/scripts/movements/quests/nightmare_isles/teleport_ladder.lua index 0fd79a4b9a8..297f4585636 100644 --- a/data-otservbr-global/scripts/movements/quests/nightmare_isles/teleport_ladder.lua +++ b/data-otservbr-global/scripts/movements/quests/nightmare_isles/teleport_ladder.lua @@ -14,7 +14,7 @@ local setting = { [64125] = Position(33478, 32621, 10), [64126] = Position(33484, 32629, 8), [64127] = Position(33452, 32617, 11), - [64128] = Position(33419, 32589, 10) + [64128] = Position(33419, 32589, 10), } local teleportLadder = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/bazir_tile.lua b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/bazir_tile.lua index 542dc88edfe..349fc5d2977 100644 --- a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/bazir_tile.lua +++ b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/bazir_tile.lua @@ -3,7 +3,7 @@ local setting = { [16773] = Position(32725, 32381, 15), [16774] = Position(32827, 32241, 12), [50082] = Position(32745, 32394, 14), - [50083] = Position(32745, 32394, 14) + [50083] = Position(32745, 32394, 14), } local bazirTile = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/check_throne.lua b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/check_throne.lua index 7ef0a14e831..9507d731742 100644 --- a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/check_throne.lua +++ b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/check_throne.lua @@ -5,7 +5,7 @@ local setting = { [2093] = { storage = Storage.PitsOfInferno.ThroneApocalypse, value = 1 }, [2094] = { storage = Storage.PitsOfInferno.ThroneBazir, value = 1 }, [2095] = { storage = Storage.PitsOfInferno.ThroneAshfalor, value = 1 }, - [2096] = { storage = Storage.PitsOfInferno.ThronePumin, value = 1 } + [2096] = { storage = Storage.PitsOfInferno.ThronePumin, value = 1 }, } local checkThrone = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/fire_tile.lua b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/fire_tile.lua index 7a95a97f4c7..dfa31b37d8d 100644 --- a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/fire_tile.lua +++ b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/fire_tile.lua @@ -22,7 +22,7 @@ local fires = { [2060] = { vocationId = VOCATION.BASE_ID.KNIGHT, damage = 1200 }, [2061] = { vocationId = VOCATION.BASE_ID.KNIGHT, damage = 2400 }, [2062] = { vocationId = VOCATION.BASE_ID.KNIGHT, damage = 3600 }, - [2063] = { vocationId = VOCATION.BASE_ID.KNIGHT, damage = 7200 } + [2063] = { vocationId = VOCATION.BASE_ID.KNIGHT, damage = 7200 }, } local fireTile = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/holy_tible_tile.lua b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/holy_tible_tile.lua index f806bf6fe4f..136c9d02e91 100644 --- a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/holy_tible_tile.lua +++ b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/holy_tible_tile.lua @@ -1,6 +1,6 @@ local destinations = { [2000] = Position(32791, 32331, 10), - [2001] = Position(32791, 32327, 10) + [2001] = Position(32791, 32327, 10), } local holyTibleTile = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/shortcuts.lua b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/shortcuts.lua index ff297fc01e8..8db4334a7f4 100644 --- a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/shortcuts.lua +++ b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/shortcuts.lua @@ -1,6 +1,6 @@ local setting = { [8816] = Storage.PitsOfInferno.ShortcutHubDoor, - [8817] = Storage.PitsOfInferno.ShortcutLeverDoor + [8817] = Storage.PitsOfInferno.ShortcutLeverDoor, } local shortcuts = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/stone.lua b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/stone.lua index b48ac7649a2..3f5a206263d 100644 --- a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/stone.lua +++ b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/stone.lua @@ -12,7 +12,7 @@ function stone.onStepIn(creature, item, position, fromPosition) if not stoneItem and leverItem then Game.createItem(1791, 1, stonePosition) leverItem:transform(2772) - player:say('You hear a rumbling from far away.', TALKTYPE_MONSTER_SAY, false, player) + player:say("You hear a rumbling from far away.", TALKTYPE_MONSTER_SAY, false, player) end return true end diff --git a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/throne.lua b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/throne.lua index 54667278255..c910622a5ab 100644 --- a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/throne.lua +++ b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/throne.lua @@ -3,44 +3,44 @@ local setting = { storage = Storage.PitsOfInferno.ThroneInfernatil, text = "You have touched Infernatil's throne and absorbed some of his spirit.", effect = CONST_ME_FIREAREA, - toPosition = Position(32909, 32211, 15) + toPosition = Position(32909, 32211, 15), }, [2081] = { storage = Storage.PitsOfInferno.ThroneTafariel, text = "You have touched Tafariel's throne and absorbed some of his spirit.", effect = CONST_ME_MORTAREA, - toPosition = Position(32761, 32243, 15) + toPosition = Position(32761, 32243, 15), }, [2082] = { storage = Storage.PitsOfInferno.ThroneVerminor, text = "You have touched Verminor's throne and absorbed some of his spirit.", effect = CONST_ME_POISONAREA, - toPosition = Position(32840, 32327, 15) + toPosition = Position(32840, 32327, 15), }, [2083] = { storage = Storage.PitsOfInferno.ThroneApocalypse, text = "You have touched Apocalypse's throne and absorbed some of his spirit.", effect = CONST_ME_EXPLOSIONAREA, - toPosition = Position(32875, 32267, 15) + toPosition = Position(32875, 32267, 15), }, [2084] = { storage = Storage.PitsOfInferno.ThroneBazir, text = "You have touched Bazir's throne and absorbed some of his spirit.", effect = CONST_ME_MAGIC_GREEN, - toPosition = Position(32745, 32385, 15) + toPosition = Position(32745, 32385, 15), }, [2085] = { storage = Storage.PitsOfInferno.ThroneAshfalor, text = "You have touched Ashfalor's throne and absorbed some of his spirit.", effect = CONST_ME_FIREAREA, - toPosition = Position(32839, 32310, 15) + toPosition = Position(32839, 32310, 15), }, [2086] = { storage = Storage.PitsOfInferno.ThronePumin, text = "You have touched Pumin's throne and absorbed some of his spirit.", effect = CONST_ME_MORTAREA, - toPosition = Position(32785, 32279, 15) - } + toPosition = Position(32785, 32279, 15), + }, } local throne = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/tile_teleport.lua b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/tile_teleport.lua index 0a1f9dcbfd9..2dec6d239f7 100644 --- a/data-otservbr-global/scripts/movements/quests/pits_of_inferno/tile_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/pits_of_inferno/tile_teleport.lua @@ -23,7 +23,7 @@ local destinations = { [28831] = Position(32855, 32321, 9), [28832] = Position(32855, 32320, 9), [28833] = Position(32855, 32318, 9), - [28834] = Position(32855, 32319, 9) + [28834] = Position(32855, 32319, 9), } local tileTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/svargrond_arena/arena_enter.lua b/data-otservbr-global/scripts/movements/quests/svargrond_arena/arena_enter.lua index 55eecbe235f..a5cc3d83e29 100644 --- a/data-otservbr-global/scripts/movements/quests/svargrond_arena/arena_enter.lua +++ b/data-otservbr-global/scripts/movements/quests/svargrond_arena/arena_enter.lua @@ -21,9 +21,7 @@ function arenaEnter.onStepIn(creature, item, position, fromPosition) local occupant = SvargrondArena.getPitOccupant(pitId, player) if occupant then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, occupant:getName() .. - " is currently in the next arena pit. Please wait until " .. (occupant:getSex() == PLAYERSEX_FEMALE - and "s" or "") .. "he is done fighting.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, occupant:getName() .. " is currently in the next arena pit. Please wait until " .. (occupant:getSex() == PLAYERSEX_FEMALE and "s" or "") .. "he is done fighting.") player:teleportTo(fromPosition, true) return true end diff --git a/data-otservbr-global/scripts/movements/quests/svargrond_arena/arena_pit.lua b/data-otservbr-global/scripts/movements/quests/svargrond_arena/arena_pit.lua index 49a0863dcad..29de2459e0b 100644 --- a/data-otservbr-global/scripts/movements/quests/svargrond_arena/arena_pit.lua +++ b/data-otservbr-global/scripts/movements/quests/svargrond_arena/arena_pit.lua @@ -51,9 +51,7 @@ function arenaPit.onStepIn(creature, item, position, fromPosition) local occupant = SvargrondArena.getPitOccupant(pitId, player) if occupant then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, occupant:getName() .. - " is currently in the next arena pit. Please wait until " .. (occupant:getSex() == PLAYERSEX_FEMALE - and "s" or "") .. "he is done fighting.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, occupant:getName() .. " is currently in the next arena pit. Please wait until " .. (occupant:getSex() == PLAYERSEX_FEMALE and "s" or "") .. "he is done fighting.") player:teleportTo(fromPosition, true) return true end diff --git a/data-otservbr-global/scripts/movements/quests/the_ancient_tombs/craft_helmet.lua b/data-otservbr-global/scripts/movements/quests/the_ancient_tombs/craft_helmet.lua index de0ff03dc16..a5553ae49dc 100644 --- a/data-otservbr-global/scripts/movements/quests/the_ancient_tombs/craft_helmet.lua +++ b/data-otservbr-global/scripts/movements/quests/the_ancient_tombs/craft_helmet.lua @@ -28,7 +28,7 @@ function craftHelmet.onAddItem(moveitem, tileitem, position) return true end - helmetItems[#helmetItems+1] = helmetItem + helmetItems[#helmetItems + 1] = helmetItem end for i = 1, #helmetItems do diff --git a/data-otservbr-global/scripts/movements/quests/the_ancient_tombs/step_morguthis_blue_flames.lua b/data-otservbr-global/scripts/movements/quests/the_ancient_tombs/step_morguthis_blue_flames.lua index dcfe252693f..411628f7e12 100644 --- a/data-otservbr-global/scripts/movements/quests/the_ancient_tombs/step_morguthis_blue_flames.lua +++ b/data-otservbr-global/scripts/movements/quests/the_ancient_tombs/step_morguthis_blue_flames.lua @@ -5,7 +5,7 @@ local setting = { [50142] = Storage.TheAncientTombs.MorguthisBlueFlameStorage4, [50143] = Storage.TheAncientTombs.MorguthisBlueFlameStorage5, [50144] = Storage.TheAncientTombs.MorguthisBlueFlameStorage6, - [50145] = Storage.TheAncientTombs.MorguthisBlueFlameStorage7 + [50145] = Storage.TheAncientTombs.MorguthisBlueFlameStorage7, } local stepMorguthisBlueFlames = MoveEvent() @@ -25,8 +25,7 @@ function stepMorguthisBlueFlames.onStepIn(creature, item, position, fromPosition player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) else local missingStorage = false - for i = Storage.TheAncientTombs.MorguthisBlueFlameStorage1, - Storage.TheAncientTombs.MorguthisBlueFlameStorage7 do + for i = Storage.TheAncientTombs.MorguthisBlueFlameStorage1, Storage.TheAncientTombs.MorguthisBlueFlameStorage7 do if player:getStorageValue(i) ~= 1 then missingStorage = true break diff --git a/data-otservbr-global/scripts/movements/quests/the_ancient_tombs/tomb_teleport.lua b/data-otservbr-global/scripts/movements/quests/the_ancient_tombs/tomb_teleport.lua index aa65129e983..0015cab9ec7 100644 --- a/data-otservbr-global/scripts/movements/quests/the_ancient_tombs/tomb_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/the_ancient_tombs/tomb_teleport.lua @@ -3,44 +3,44 @@ local config = { [3950] = { removeId = 3237, destination = Position(33182, 32714, 14), - exitDestination = Position(33231, 32705, 8) + exitDestination = Position(33231, 32705, 8), }, -- from Thalas Boss [3951] = { removeId = 3238, destination = Position(33174, 32934, 15), - exitDestination = Position(33282, 32744, 8) + exitDestination = Position(33282, 32744, 8), }, -- from Mahrdis Boss [3952] = { removeId = 3240, destination = Position(33126, 32591, 15), - exitDestination = Position(33250, 32832, 8) + exitDestination = Position(33250, 32832, 8), }, -- from Omruc Boss [3953] = { removeId = 3239, destination = Position(33145, 32665, 15), - exitDestination = Position(33025, 32868, 8) + exitDestination = Position(33025, 32868, 8), }, -- from Rahemos Boss [3954] = { removeId = 3235, destination = Position(33041, 32774, 14), - exitDestination = Position(33133, 32642, 8) + exitDestination = Position(33133, 32642, 8), }, -- from Dipthrah Boss [3955] = { removeId = 3241, destination = Position(33349, 32827, 14), - exitDestination = Position(33131, 32566, 8) + exitDestination = Position(33131, 32566, 8), }, -- from Vashresamun Boss [3956] = { removeId = 3236, destination = Position(33186, 33012, 14), - exitDestination = Position(33206, 32592, 8) - } + exitDestination = Position(33206, 32592, 8), + }, } local tombTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/the_ape_city/mission4_parchment_decyphering.lua b/data-otservbr-global/scripts/movements/quests/the_ape_city/mission4_parchment_decyphering.lua index efc39f11a83..bd52c6c442c 100644 --- a/data-otservbr-global/scripts/movements/quests/the_ape_city/mission4_parchment_decyphering.lua +++ b/data-otservbr-global/scripts/movements/quests/the_ape_city/mission4_parchment_decyphering.lua @@ -6,8 +6,7 @@ function mission4ParchmentDecyphering.onStepIn(creature, item, position, fromPos return true end - if player:getStorageValue(Storage.TheApeCity.Questline) == 7 - and player:getStorageValue(Storage.TheApeCity.ParchmentDecyphering) ~= 1 then + if player:getStorageValue(Storage.TheApeCity.Questline) == 7 and player:getStorageValue(Storage.TheApeCity.ParchmentDecyphering) ~= 1 then player:setStorageValue(Storage.TheApeCity.ParchmentDecyphering, 1) end diff --git a/data-otservbr-global/scripts/movements/quests/the_cursed_crystal/StepIn_CursedCrystal.lua b/data-otservbr-global/scripts/movements/quests/the_cursed_crystal/StepIn_CursedCrystal.lua index 803c7457d4f..87d7be27c71 100644 --- a/data-otservbr-global/scripts/movements/quests/the_cursed_crystal/StepIn_CursedCrystal.lua +++ b/data-otservbr-global/scripts/movements/quests/the_cursed_crystal/StepIn_CursedCrystal.lua @@ -5,7 +5,7 @@ local teleports = { [TCC_MEDUSAMSG_ONEMAP] = {}, -- medusa crystal message [TCC_MEDUSAMSG_TWOMAP] = {}, -- medusa crystal message [TCC_AFTERVORTEX_EXIT_ONE_MAP] = { position = TCC_AFTERVORTEX_EXIT_ONE }, -- Vortex exit 1 - [TCC_AFTERVORTEX_EXIT_TWO_MAP] = { position = TCC_AFTERVORTEX_EXIT_TWO } -- Vortex exit 2 + [TCC_AFTERVORTEX_EXIT_TWO_MAP] = { position = TCC_AFTERVORTEX_EXIT_TWO }, -- Vortex exit 2 } local StepInCursedCrystal = MoveEvent() @@ -18,7 +18,7 @@ function StepInCursedCrystal.onStepIn(creature, item, position, fromPosition) for index, value in pairs(teleports) do if item:getPosition() == index then if item:getPosition() == TCC_MEDUSACRYSTAL_ENTRY_MAP then - if (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) > 0) then + if player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Oneeyedjoe) > 0 then doSendMagicEffect(player:getPosition(), CONST_ME_TELEPORT) player:teleportTo(value.position) doSendMagicEffect(value.position, CONST_ME_TELEPORT) @@ -27,8 +27,8 @@ function StepInCursedCrystal.onStepIn(creature, item, position, fromPosition) end return elseif item:getPosition() == TCC_MEDUSAMSG_ONEMAP or item:getPosition() == TCC_MEDUSAMSG_TWOMAP then - if (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.MedusaOil) < os.time()) then - if (player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline) == 0) then + if player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.MedusaOil) < os.time() then + if player:getStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline) == 0 then player:setStorageValue(Storage.TibiaTales.TheCursedCrystal.Questline, 1) end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "This small room could once have been a shrine of some kind. You discover an old inscription between two ornate stone walls.") diff --git a/data-otservbr-global/scripts/movements/quests/the_dream_courts/teleport.lua b/data-otservbr-global/scripts/movements/quests/the_dream_courts/teleport.lua index 36b6dc19309..2dc6fb7bbe3 100644 --- a/data-otservbr-global/scripts/movements/quests/the_dream_courts/teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/the_dream_courts/teleport.lua @@ -2,13 +2,13 @@ local teleports = { { access = Storage.Quest.U12_00.TheDreamCourts.BuriedCathedralAccess, from = { x = 32720, y = 32270, z = 8 }, -- Haunted house cellar - to = { x = 33618, y = 32545, z = 13 } -- Buried Cathedral + to = { x = 33618, y = 32545, z = 13 }, -- Buried Cathedral }, { access = Storage.Quest.U12_00.TheDreamCourts.BuriedCathedralAccess, from = { x = 33618, y = 32546, z = 13 }, -- Buried Cathedral - to = { x = 32720, y = 32269, z = 8 } -- Haunted house cellar - } + to = { x = 32720, y = 32269, z = 8 }, -- Haunted house cellar + }, } local teleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/the_gravedigger_of_drefia/dormitory_teleport.lua b/data-otservbr-global/scripts/movements/quests/the_gravedigger_of_drefia/dormitory_teleport.lua index deec98bffbc..3173cb23af7 100644 --- a/data-otservbr-global/scripts/movements/quests/the_gravedigger_of_drefia/dormitory_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/the_gravedigger_of_drefia/dormitory_teleport.lua @@ -6,15 +6,12 @@ function dormitoryTeleport.onStepIn(creature, item, position, fromPosition) return true end - if item.actionid == 4534 - and player:getStorageValue(Storage.GravediggerOfDrefia.Mission55) == 1 - and player:getStorageValue(Storage.GravediggerOfDrefia.Mission56) < 1 then + if item.actionid == 4534 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission55) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission56) < 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission56, 1) player:setStorageValue(Storage.GravediggerOfDrefia.Mission57, 1) player:teleportTo(Position(33015, 32440, 10)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "You should hurry, try not to dwell here any longer than a few minutes.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You should hurry, try not to dwell here any longer than a few minutes.") Game.createMonster("necromancer servant", { x = 33008, y = 32437, z = 11 }) else player:teleportTo(Position(33018, 32437, 10)) diff --git a/data-otservbr-global/scripts/movements/quests/the_gravedigger_of_drefia/necromancer_servant.lua b/data-otservbr-global/scripts/movements/quests/the_gravedigger_of_drefia/necromancer_servant.lua index b9776c74200..194505b3a71 100644 --- a/data-otservbr-global/scripts/movements/quests/the_gravedigger_of_drefia/necromancer_servant.lua +++ b/data-otservbr-global/scripts/movements/quests/the_gravedigger_of_drefia/necromancer_servant.lua @@ -6,10 +6,9 @@ function necromancerServant.onStepIn(creature, item, position, fromPosition) return true end - if player:getStorageValue(Storage.GravediggerOfDrefia.Mission56) == 1 - and player:getStorageValue(Storage.GravediggerOfDrefia.Mission57) ~= 1 then + if player:getStorageValue(Storage.GravediggerOfDrefia.Mission56) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission57) ~= 1 then player:setStorageValue(Storage.GravediggerOfDrefia.Mission57, 1) - Game.createMonster('necromancer servant', Position(33011, 32437, 11)) + Game.createMonster("necromancer servant", Position(33011, 32437, 11)) end end diff --git a/data-otservbr-global/scripts/movements/quests/the_gravedigger_of_drefia/teleport.lua b/data-otservbr-global/scripts/movements/quests/the_gravedigger_of_drefia/teleport.lua index 875747f7ca3..824642c4287 100644 --- a/data-otservbr-global/scripts/movements/quests/the_gravedigger_of_drefia/teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/the_gravedigger_of_drefia/teleport.lua @@ -3,14 +3,14 @@ local setting = { firstStorage = Storage.GravediggerOfDrefia.Mission05, secondStorage = Storage.GravediggerOfDrefia.Mission06, firstDestination = Position(32987, 32401, 9), - secondDestination = Position(32988, 32397, 9) + secondDestination = Position(32988, 32397, 9), }, [4532] = { storage = Storage.GravediggerOfDrefia.Mission08, storageTwo = Storage.GravediggerOfDrefia.Mission09, firstDestination = Position(33022, 32334, 10), - secondDestination = Position(33022, 32338, 10) - } + secondDestination = Position(33022, 32338, 10), + }, } local teleport = MoveEvent() @@ -22,8 +22,7 @@ function teleport.onStepIn(creature, item, position, fromPosition) end local teleport = setting[item.actionid] - if teleport and player:getStorageValue(teleport.firstStorage) == 1 - and player:getStorageValue(teleport.secondStorage) < 1 then + if teleport and player:getStorageValue(teleport.firstStorage) == 1 and player:getStorageValue(teleport.secondStorage) < 1 then player:teleportTo(teleport.firstDestination) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) else diff --git a/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/bellow.lua b/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/bellow.lua index f868a373bd7..12d6b3e0c51 100644 --- a/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/bellow.lua +++ b/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/bellow.lua @@ -21,8 +21,8 @@ function bellow.onStepIn(creature, item, position, fromPosition) Position(32695, 31494, 10):sendMagicEffect(steameffect) Position(32696, 31494, 10):sendMagicEffect(steameffect) elseif crucibleItem.actionid == 50121 then - player:say('TSSSSHHHHH', TALKTYPE_MONSTER_SAY, false, 0, Position(32695, 31494, 11)) - player:say('CHOOOOOOOHHHHH', TALKTYPE_MONSTER_SAY, false, 0, Position(32698, 31492, 11)) + player:say("TSSSSHHHHH", TALKTYPE_MONSTER_SAY, false, 0, Position(32695, 31494, 11)) + player:say("CHOOOOOOOHHHHH", TALKTYPE_MONSTER_SAY, false, 0, Position(32698, 31492, 11)) end return true end diff --git a/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/elevator.lua b/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/elevator.lua index 1828f0fd1f1..9820a242d8d 100644 --- a/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/elevator.lua +++ b/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/elevator.lua @@ -1,6 +1,6 @@ local setting = { [50092] = Position(32612, 31499, 15), - [50093] = Position(32612, 31499, 14) + [50093] = Position(32612, 31499, 14), } local elevator = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/ore_wagon.lua b/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/ore_wagon.lua index 683bef87e66..eeda87e2de4 100644 --- a/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/ore_wagon.lua +++ b/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/ore_wagon.lua @@ -8,8 +8,7 @@ function oreWagon.onStepIn(creature, item, position, fromPosition) if player:getStorageValue(Storage.HiddenCityOfBeregar.OreWagon) ~= 1 then player:setStorageValue(Storage.HiddenCityOfBeregar.OreWagon, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "You have found the entrance to the hidden city of Beregar and may now use the ore wagon.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found the entrance to the hidden city of Beregar and may now use the ore wagon.") end return true end diff --git a/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/pythius_boss_teleport.lua b/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/pythius_boss_teleport.lua index fb2d54edeb2..38db1e856b2 100644 --- a/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/pythius_boss_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/pythius_boss_teleport.lua @@ -24,16 +24,12 @@ function pythiusBossTeleport.onStepIn(creature, item, position, fromPosition) item:remove() local steamPosition = Position(32551, 31379, 15) - iterateArea( - function(position) - local groundItem = Tile(position):getGround() - if groundItem and groundItem.itemid == 5815 then - groundItem:transform(21477) - end - end, - Position(32550, 31373, 15), - steamPosition - ) + iterateArea(function(position) + local groundItem = Tile(position):getGround() + if groundItem and groundItem.itemid == 5815 then + groundItem:transform(21477) + end + end, Position(32550, 31373, 15), steamPosition) Game.createItem(1791, 1, steamPosition) local steamItem = Game.createItem(8425, 1, steamPosition) diff --git a/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/pythius_teleport.lua b/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/pythius_teleport.lua index 76824ec2cc5..e6525ae25b7 100644 --- a/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/pythius_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/the_hidden_city_of_beregar/pythius_teleport.lua @@ -9,8 +9,7 @@ function pythiusTeleport.onStepIn(creature, item, position, fromPosition) if player:getStorageValue(Storage.HiddenCityOfBeregar.PythiusTheRotten) < os.time() then position.y = position.y + 4 player:teleportTo(position) - player:say("OFFER ME SOMETHING IF YOU WANT TO PASS!", - TALKTYPE_MONSTER_YELL, false, player, Position(32589, 31407, 15)) + player:say("OFFER ME SOMETHING IF YOU WANT TO PASS!", TALKTYPE_MONSTER_YELL, false, player, Position(32589, 31407, 15)) position:sendMagicEffect(CONST_ME_FIREAREA) return true end diff --git a/data-otservbr-global/scripts/movements/quests/the_hunt_for_the_sea_serpent/teleports.lua b/data-otservbr-global/scripts/movements/quests/the_hunt_for_the_sea_serpent/teleports.lua index 729d7742fe1..67172029ba4 100644 --- a/data-otservbr-global/scripts/movements/quests/the_hunt_for_the_sea_serpent/teleports.lua +++ b/data-otservbr-global/scripts/movements/quests/the_hunt_for_the_sea_serpent/teleports.lua @@ -3,7 +3,7 @@ local config = { { teleportPos = { x = 31943, y = 31046, z = 7 }, destination = Position(31943, 31045, 2) }, { teleportPos = { x = 31943, y = 31046, z = 2 }, destination = Position(31943, 31044, 7) }, { teleportPos = { x = 31938, y = 31041, z = 6 }, destination = Position(31938, 31041, 8), condition = TheHuntForTheSeaSerpent.QuestLine }, - { teleportPos = { x = 31939, y = 31050, z = 6 }, destination = Position(31912, 31187, 9), condition = TheHuntForTheSeaSerpent.QuestLine } + { teleportPos = { x = 31939, y = 31050, z = 6 }, destination = Position(31912, 31187, 9), condition = TheHuntForTheSeaSerpent.QuestLine }, } local teleports = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/the_ice_islands/nibelor_dog_led.lua b/data-otservbr-global/scripts/movements/quests/the_ice_islands/nibelor_dog_led.lua index a0398235e2b..7987c2b3eea 100644 --- a/data-otservbr-global/scripts/movements/quests/the_ice_islands/nibelor_dog_led.lua +++ b/data-otservbr-global/scripts/movements/quests/the_ice_islands/nibelor_dog_led.lua @@ -4,26 +4,26 @@ local setting = { sledPosition = Position(32367, 31058, 7), destination = Position(32407, 31067, 7), storage = Storage.TheIceIslands.Mission06, - value = 8 + value = 8, }, { sledPosition = Position(32409, 31066, 7), destination = Position(32365, 31059, 7), storage = Storage.TheIceIslands.Mission06, - value = 8 + value = 8, }, { sledPosition = Position(32303, 31081, 7), destination = Position(32329, 31045, 7), storage = Storage.TheIceIslands.Mission03, - value = 3 + value = 3, }, { sledPosition = Position(32327, 31045, 7), destination = Position(32301, 31080, 7), storage = Storage.TheIceIslands.Mission03, - value = 3 - } + value = 3, + }, } local nibelorDogLed = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/the_secret_library/boat.lua b/data-otservbr-global/scripts/movements/quests/the_secret_library/boat.lua index fdbe9101733..d076b5e22f2 100644 --- a/data-otservbr-global/scripts/movements/quests/the_secret_library/boat.lua +++ b/data-otservbr-global/scripts/movements/quests/the_secret_library/boat.lua @@ -8,7 +8,7 @@ function boat.onStepIn(creature, item, toPosition, fromPosition) if player:getStorageValue(Storage.TheSecretLibrary.HighDry) == 1 then player:setStorageValue(Storage.TheSecretLibrary.HighDry, 2) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "There are still some loose planks and hawsers. You can\'t use the raft like this, it will sink for sure.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "There are still some loose planks and hawsers. You can't use the raft like this, it will sink for sure.") end return true end diff --git a/data-otservbr-global/scripts/movements/quests/the_sharttered_isles/energy_barrier.lua b/data-otservbr-global/scripts/movements/quests/the_sharttered_isles/energy_barrier.lua index 2d5c9cf8967..8ef523b6075 100644 --- a/data-otservbr-global/scripts/movements/quests/the_sharttered_isles/energy_barrier.lua +++ b/data-otservbr-global/scripts/movements/quests/the_sharttered_isles/energy_barrier.lua @@ -1,7 +1,7 @@ local energyWall = { { x = 32091, y = 32575, z = 8 }, { x = 32091, y = 32576, z = 8 }, - { x = 32091, y = 32577, z = 8 } + { x = 32091, y = 32577, z = 8 }, } local energyBarrier = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/the_sharttered_isles/teleport.lua b/data-otservbr-global/scripts/movements/quests/the_sharttered_isles/teleport.lua index 3717ea76b29..aceacc88056 100644 --- a/data-otservbr-global/scripts/movements/quests/the_sharttered_isles/teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/the_sharttered_isles/teleport.lua @@ -2,7 +2,7 @@ local sacrifices = { [3723] = Tile(Position(31918, 32598, 10)), -- top left [3725] = Tile(Position(31918, 32599, 10)), -- bottom left [3732] = Tile(Position(31920, 32598, 10)), -- top right - [3728] = Tile(Position(31920, 32599, 10)) -- bottom right + [3728] = Tile(Position(31920, 32599, 10)), -- bottom right } local teleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/the_spike_tasks/spike_teleport.lua b/data-otservbr-global/scripts/movements/quests/the_spike_tasks/spike_teleport.lua index 47d548439db..99eb195eaa2 100644 --- a/data-otservbr-global/scripts/movements/quests/the_spike_tasks/spike_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/the_spike_tasks/spike_teleport.lua @@ -16,7 +16,7 @@ local config = { [4240] = { level = 80, destination = Position(32244, 32588, 14) }, [4241] = { destination = Position(32237, 32605, 14) }, [4242] = { level = 80, destination = Position(32224, 32606, 15) }, - [4243] = { destination = Position(32237, 32605, 15) } + [4243] = { destination = Position(32237, 32605, 15) }, } local spikeTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/unnatural_selection/mission2_all_around_the_world.lua b/data-otservbr-global/scripts/movements/quests/unnatural_selection/mission2_all_around_the_world.lua index 51d3c32b024..11a5cc6e653 100644 --- a/data-otservbr-global/scripts/movements/quests/unnatural_selection/mission2_all_around_the_world.lua +++ b/data-otservbr-global/scripts/movements/quests/unnatural_selection/mission2_all_around_the_world.lua @@ -1,19 +1,19 @@ local config = { [1] = { text = "You hold the skull up high. You can resist the urge to have it look through a telescope though.", - position = { Position(33263, 31834, 1) } + position = { Position(33263, 31834, 1) }, }, [2] = { text = "You hold up the skull and let it take a peek over the beautiful elven town through the dense leaves.", - position = { Position(32711, 31668, 1) } + position = { Position(32711, 31668, 1) }, }, [3] = { text = "Thanita gives you a really strange look as you hold up the skull, but oh well.", - position = { Position(32537, 31772, 1) } + position = { Position(32537, 31772, 1) }, }, [4] = { text = "That was a real easy one. And you are used to getting strange looks now, so whatever!", - position = { Position(33216, 32450, 1) } + position = { Position(33216, 32450, 1) }, }, [5] = { text = "Wow, it's hot up here. Luckily the skull can't get a sunburn any more, but you can, so you better descend again!", @@ -33,7 +33,8 @@ local config = { Position(33153, 32845, 2), Position(33150, 32845, 2), Position(33151, 32845, 2), - Position(33152, 32845, 2) } + Position(33152, 32845, 2), + }, }, [6] = { text = "Considering that higher places around here aren't that easy to reach, you think the view from here is tolerably good.", @@ -42,29 +43,29 @@ local config = { Position(32580, 32743, 4), Position(32628, 32745, 4), Position(32629, 32745, 4), - Position(32689, 32742, 4) - } + Position(32689, 32742, 4), + }, }, [7] = { text = "Yep, that's a pretty high spot. If Lazaran ever sees what the skull sees, he'd be pretty satisfied with that nice view.", - position = { Position(32346, 32808, 2) } + position = { Position(32346, 32808, 2) }, }, [8] = { text = "Well, there are higher spots around here, but none of them is as easily reachable as this one. It just has to suffice.", - position = { Position(32789, 31238, 3) } + position = { Position(32789, 31238, 3) }, }, [9] = { text = "Nice! White in white as far as the eye can see. Time to leave before your fingers turn into icicles.", - position = { Position(32236, 31096, 2) } + position = { Position(32236, 31096, 2) }, }, [10] = { text = "That's definitely one of the highest spots in whole Tibia. If that's not simply perfect you don't know what it is.", - position = { Position(32344, 32265, 0) } + position = { Position(32344, 32265, 0) }, }, [11] = { text = "What a beautiful view. Worthy of a Queen indeed! Time to head back to Lazaran and show him what you got.", - position = { Position(32316, 31752, 0) } - } + position = { Position(32316, 31752, 0) }, + }, } local mission2AllAroundTheWorld = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/unnatural_selection/mission3_dance_dance_evolution.lua b/data-otservbr-global/scripts/movements/quests/unnatural_selection/mission3_dance_dance_evolution.lua index 19ca60c2753..41208f873f6 100644 --- a/data-otservbr-global/scripts/movements/quests/unnatural_selection/mission3_dance_dance_evolution.lua +++ b/data-otservbr-global/scripts/movements/quests/unnatural_selection/mission3_dance_dance_evolution.lua @@ -14,7 +14,7 @@ local config = { [13] = Position(32991, 31497, 1), [14] = Position(32992, 31496, 1), [15] = Position(32991, 31497, 1), - [16] = Position(32991, 31496, 1) + [16] = Position(32991, 31496, 1), } -- Missing: CONST_ME_CARNIPHILA effects when dancing (pattern unknown) diff --git a/data-otservbr-global/scripts/movements/quests/waterfall/waterfall.lua b/data-otservbr-global/scripts/movements/quests/waterfall/waterfall.lua index 99abb6a4ee8..3d0b68f7eff 100644 --- a/data-otservbr-global/scripts/movements/quests/waterfall/waterfall.lua +++ b/data-otservbr-global/scripts/movements/quests/waterfall/waterfall.lua @@ -1,7 +1,7 @@ local setting = { swimmingPosition = Position(32968, 32626, 5), caveEntrancePosition = Position(32968, 32631, 8), - caveExitPosition = Position(32971, 32620, 8) + caveExitPosition = Position(32971, 32620, 8), } local waterfall = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/what_a_foolish/destroy_pies.lua b/data-otservbr-global/scripts/movements/quests/what_a_foolish/destroy_pies.lua index 9ba9cfebd8f..de5c10a185e 100644 --- a/data-otservbr-global/scripts/movements/quests/what_a_foolish/destroy_pies.lua +++ b/data-otservbr-global/scripts/movements/quests/what_a_foolish/destroy_pies.lua @@ -17,8 +17,7 @@ function destroyPies.onStepIn(creature, item, position, fromPosition) pieBox:transform(3135) player:getPosition():sendMagicEffect(CONST_ME_POFF) - player:say("Stand still! These pies are confiscated!", - TALKTYPE_MONSTER_SAY, false, player, Position(33189, 31788, 7)) + player:say("Stand still! These pies are confiscated!", TALKTYPE_MONSTER_SAY, false, player, Position(33189, 31788, 7)) player:say("Dirty pie smuggler!", TALKTYPE_MONSTER_SAY, false, player, Position(33193, 31788, 7)) return true end diff --git a/data-otservbr-global/scripts/movements/quests/white_pearl/white_pearl.lua b/data-otservbr-global/scripts/movements/quests/white_pearl/white_pearl.lua index 4dab73ab948..65f3719a606 100644 --- a/data-otservbr-global/scripts/movements/quests/white_pearl/white_pearl.lua +++ b/data-otservbr-global/scripts/movements/quests/white_pearl/white_pearl.lua @@ -2,12 +2,12 @@ local setting = { [5630] = { teleportPosition = Position(33145, 32863, 7), effect = CONST_ME_MAGIC_GREEN, - potPosition = Position(33151, 32864, 7) + potPosition = Position(33151, 32864, 7), }, [5631] = { teleportPosition = Position(33147, 32864, 7), - effect = CONST_ME_MAGIC_GREEN - } + effect = CONST_ME_MAGIC_GREEN, + }, } local whitePearl = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/boss_teleport.lua b/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/boss_teleport.lua index 36fb93be893..a4056d81e83 100644 --- a/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/boss_teleport.lua +++ b/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/boss_teleport.lua @@ -1,20 +1,20 @@ local teleports = { [3189] = { destination = Position(33041, 31086, 15), - storage = GlobalStorage.WrathOfTheEmperor.Bosses.Fury + storage = GlobalStorage.WrathOfTheEmperor.Bosses.Fury, }, [3190] = { destination = Position(33091, 31083, 15), - storage = GlobalStorage.WrathOfTheEmperor.Bosses.Wrath + storage = GlobalStorage.WrathOfTheEmperor.Bosses.Wrath, }, [3191] = { destination = Position(33094, 31118, 15), - storage = GlobalStorage.WrathOfTheEmperor.Bosses.Scorn + storage = GlobalStorage.WrathOfTheEmperor.Bosses.Scorn, }, [3192] = { destination = Position(33038, 31119, 15), - storage = GlobalStorage.WrathOfTheEmperor.Bosses.Spite - } + storage = GlobalStorage.WrathOfTheEmperor.Bosses.Spite, + }, } local bossTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/crate.lua b/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/crate.lua index 0fdd9e4b0b9..c078b0ccc1d 100644 --- a/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/crate.lua +++ b/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/crate.lua @@ -213,7 +213,7 @@ local positions = { { x = 33347, y = 31074, z = 8 }, { x = 33347, y = 31075, z = 8 }, -- check - { x = 33323, y = 31080, z = 7 } + { x = 33323, y = 31080, z = 7 }, } function catchPlayer(player) @@ -225,15 +225,14 @@ function catchPlayer(player) return true end -local trapDoors = -{ +local trapDoors = { { doorPos = Position(33385, 31139, 8) }, { doorPos = Position(33385, 31134, 8) }, { doorPos = Position(33385, 31126, 8) }, { doorPos = Position(33385, 31119, 8) }, { doorPos = Position(33385, 31118, 8) }, { doorPos = Position(33380, 31093, 8) }, - { doorPos = Position(33380, 31085, 8) } + { doorPos = Position(33380, 31085, 8) }, } local crate = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/keeper.lua b/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/keeper.lua index 756e928af09..6691328d312 100644 --- a/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/keeper.lua +++ b/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/keeper.lua @@ -13,7 +13,7 @@ function keeper.onStepIn(creature, item, position, fromPosition) return true end - if monster:getName():lower() ~= 'the keeper' then + if monster:getName():lower() ~= "the keeper" then return true end diff --git a/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/teleports_access.lua b/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/teleports_access.lua index ae2950c37f9..9b39cf1f5fc 100644 --- a/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/teleports_access.lua +++ b/data-otservbr-global/scripts/movements/quests/wrath_of_the_emperor/teleports_access.lua @@ -27,18 +27,17 @@ local positions = { { x = 33240, y = 31220, z = 10 }, { x = 33241, y = 31220, z = 10 }, { x = 33242, y = 31220, z = 10 }, - { x = 33028, y = 31084, z = 13 } + { x = 33028, y = 31084, z = 13 }, } -local config = -{ +local config = { { Access = Storage.WrathoftheEmperor.TeleportAccess.Rebel, teleportPos = Position(33136, 31248, 6), destinationA = Position(33211, 31065, 9), destinationB = Position(33138, 31248, 6) }, { Access = Storage.WrathoftheEmperor.TeleportAccess.Zlak, teleportPos = Position(33216, 31067, 9), destinationA = Position(33078, 31219, 8), destinationB = Position(33216, 31069, 9) }, { Access = Storage.WrathoftheEmperor.TeleportAccess.Zizzle, teleportPos = Position(33084, 31213, 8), destinationA = Position(33094, 31122, 12), destinationB = Position(33083, 31214, 8), itemPos = Position(33086, 31214, 8) }, { Access = Storage.WrathoftheEmperor.TeleportAccess.SleepingDragon, teleportPos = Position(33111, 31123, 12), destinationA = Position(33240, 31247, 10), destinationB = Position(33109, 31122, 12), destinationC = Position(33028, 31086, 13) }, { Access = Storage.WrathoftheEmperor.TeleportAccess.AwarnessEmperor, teleportPos = Position(33072, 31150, 15), destinationA = Position(33361, 31397, 9), destinationB = Position(33071, 31152, 15) }, { Access = Storage.WrathoftheEmperor.TeleportAccess.BossRoom, teleportPos = Position(33136, 31249, 6), destinationA = Position(33360, 31397, 9), destinationB = Position(33138, 31249, 6) }, - { Access = Storage.WrathoftheEmperor.TeleportAccess.InnerSanctum, teleportPos = Position(33028, 31084, 13), destinationA = Position(33109, 31122, 12), destinationB = Position(33028, 31086, 13) } + { Access = Storage.WrathoftheEmperor.TeleportAccess.InnerSanctum, teleportPos = Position(33028, 31084, 13), destinationA = Position(33109, 31122, 12), destinationB = Position(33028, 31086, 13) }, } local function tpX(i, player, position) diff --git a/data-otservbr-global/scripts/movements/rookgaard/level_bridge.lua b/data-otservbr-global/scripts/movements/rookgaard/level_bridge.lua index af5adbc49ac..6a051f39b64 100644 --- a/data-otservbr-global/scripts/movements/rookgaard/level_bridge.lua +++ b/data-otservbr-global/scripts/movements/rookgaard/level_bridge.lua @@ -14,7 +14,7 @@ function levelBridge.onStepIn(creature, item, position, fromPosition) player:teleportTo(failPosition) failPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You need to be at least Level 2 in order to pass.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You need to be at least Level 2 in order to pass.") return true end diff --git a/data-otservbr-global/scripts/movements/teleport/citizen.lua b/data-otservbr-global/scripts/movements/teleport/citizen.lua index c8a5a846449..fa12efa5d0a 100644 --- a/data-otservbr-global/scripts/movements/teleport/citizen.lua +++ b/data-otservbr-global/scripts/movements/teleport/citizen.lua @@ -37,7 +37,7 @@ function citizen.onStepIn(creature, item, position, fromPosition) end if town:getId() == TOWNS_LIST.SVARGROND and player:getStorageValue(Storage.BarbarianTest.Questline) < 8 then - player:sendTextMessage(MESSAGE_GAME_HIGHLIGHT, 'You first need to absolve the Barbarian Test Quest to become citizen!') + player:sendTextMessage(MESSAGE_GAME_HIGHLIGHT, "You first need to absolve the Barbarian Test Quest to become citizen!") player:teleportTo(town:getTemplePosition()) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true @@ -46,7 +46,7 @@ function citizen.onStepIn(creature, item, position, fromPosition) player:setTown(town) player:teleportTo(town:getTemplePosition()) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You are now a citizen of ' .. town:getName() .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are now a citizen of " .. town:getName() .. ".") return true end diff --git a/data-otservbr-global/scripts/movements/teleport/dark_cathedral_teleports.lua b/data-otservbr-global/scripts/movements/teleport/dark_cathedral_teleports.lua index 8112f373fc6..c267f90969c 100644 --- a/data-otservbr-global/scripts/movements/teleport/dark_cathedral_teleports.lua +++ b/data-otservbr-global/scripts/movements/teleport/dark_cathedral_teleports.lua @@ -4,7 +4,7 @@ local config = { { leverpos = Position(32619, 32523, 9) }, { leverpos = Position(32610, 32523, 9) }, { leverpos = Position(32583, 32482, 9) }, - { leverpos = Position(32584, 32465, 9) } + { leverpos = Position(32584, 32465, 9) }, } local function revertLever(position) diff --git a/data-otservbr-global/scripts/movements/teleport/deeper_banuta_shortcut_teleport.lua b/data-otservbr-global/scripts/movements/teleport/deeper_banuta_shortcut_teleport.lua index da2cbc09f38..aa0ffa0e5a6 100644 --- a/data-otservbr-global/scripts/movements/teleport/deeper_banuta_shortcut_teleport.lua +++ b/data-otservbr-global/scripts/movements/teleport/deeper_banuta_shortcut_teleport.lua @@ -1,7 +1,7 @@ local setting = { [50084] = Position(32857, 32667, 9), [50085] = Position(32892, 32632, 11), - [50086] = Position(32886, 32632, 11) + [50086] = Position(32886, 32632, 11), } local deeperBanutaShortcutTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/teleport/falcon_castle.lua b/data-otservbr-global/scripts/movements/teleport/falcon_castle.lua index e5750216669..a7473748602 100644 --- a/data-otservbr-global/scripts/movements/teleport/falcon_castle.lua +++ b/data-otservbr-global/scripts/movements/teleport/falcon_castle.lua @@ -10,10 +10,10 @@ local teleports = { { x = 33296, y = 31288, z = 9 }, { x = 33298, y = 31288, z = 9 }, { x = 33298, y = 31289, z = 9 }, - { x = 33297, y = 31289, z = 9 } + { x = 33297, y = 31289, z = 9 }, }, - destination = Position(33363, 31342, 9) - } + destination = Position(33363, 31342, 9), + }, } local falconCastle = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/teleport/gray_beach_vortex.lua b/data-otservbr-global/scripts/movements/teleport/gray_beach_vortex.lua index cce41013360..217b83595e7 100644 --- a/data-otservbr-global/scripts/movements/teleport/gray_beach_vortex.lua +++ b/data-otservbr-global/scripts/movements/teleport/gray_beach_vortex.lua @@ -1,6 +1,6 @@ local config = { [9238] = Position(33456, 31346, 8), - [9239] = Position(33199, 31978, 8) + [9239] = Position(33199, 31978, 8), } local grayBeachVortex = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/teleport/lower_roshamuul.lua b/data-otservbr-global/scripts/movements/teleport/lower_roshamuul.lua index dccaeeb20e7..7d4535efbf1 100644 --- a/data-otservbr-global/scripts/movements/teleport/lower_roshamuul.lua +++ b/data-otservbr-global/scripts/movements/teleport/lower_roshamuul.lua @@ -4,7 +4,7 @@ local roshamuulCaves = { Position(33573, 32545, 8), Position(33543, 32560, 8), Position(33579, 32565, 8), - Position(33527, 32597, 8) + Position(33527, 32597, 8), } local lowerRoshamuul = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/teleport/magician_quarter.lua b/data-otservbr-global/scripts/movements/teleport/magician_quarter.lua index d662b124e86..b676b681c3a 100644 --- a/data-otservbr-global/scripts/movements/teleport/magician_quarter.lua +++ b/data-otservbr-global/scripts/movements/teleport/magician_quarter.lua @@ -2,7 +2,7 @@ local config = { [31077] = { requireSoil = false, toPosition = Position(32908, 31081, 7), effect = CONST_ME_ENERGYHIT }, [31080] = { requireSoil = true, pushbackPosition = Position(32908, 31081, 7), toPosition = Position(32908, 31076, 7), effect = CONST_ME_ENERGYHIT }, [31081] = { requireSoil = true, pushbackPosition = Position(32906, 31080, 7), toPosition = Position(32908, 31085, 7), effect = CONST_ME_HITBYFIRE }, - [31084] = { requireSoil = false, toPosition = Position(32906, 31080, 7), effect = CONST_ME_HITBYFIRE } + [31084] = { requireSoil = false, toPosition = Position(32906, 31080, 7), effect = CONST_ME_HITBYFIRE }, } local magicianQuarter = MoveEvent() @@ -21,7 +21,7 @@ function magicianQuarter.onStepIn(creature, item, position, fromPosition) if targetWall.requireSoil then if not (player:removeItem(940, 1) or player:removeItem(941, 1) or player:removeItem(944, 1) or player:removeItem(945, 1)) then player:teleportTo(targetWall.pushbackPosition) - player:say('You may not enter without a sacrifice of elemental soil.', TALKTYPE_MONSTER_SAY) + player:say("You may not enter without a sacrifice of elemental soil.", TALKTYPE_MONSTER_SAY) targetWall.pushbackPosition:sendMagicEffect(targetWall.effect) return true end diff --git a/data-otservbr-global/scripts/movements/teleport/port_hope_deathling.lua b/data-otservbr-global/scripts/movements/teleport/port_hope_deathling.lua index d32448fc285..b5eeaaead11 100644 --- a/data-otservbr-global/scripts/movements/teleport/port_hope_deathling.lua +++ b/data-otservbr-global/scripts/movements/teleport/port_hope_deathling.lua @@ -1,6 +1,6 @@ local destination = { [64017] = Position(32881, 32474, 9), --Entrance - [64018] = Position(32870, 32510, 7) --Exit + [64018] = Position(32870, 32510, 7), --Exit } local portHopeDeathling = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/teleport/shrine_entrance.lua b/data-otservbr-global/scripts/movements/teleport/shrine_entrance.lua index 70012b603b8..4764e6acf27 100644 --- a/data-otservbr-global/scripts/movements/teleport/shrine_entrance.lua +++ b/data-otservbr-global/scripts/movements/teleport/shrine_entrance.lua @@ -12,7 +12,7 @@ local shrinesEntrance = { { x = 32624, y = 32744, z = 4 }, --Port Hope { x = 32212, y = 31130, z = 8 }, --Svargrond { x = 32784, y = 31243, z = 5 }, --Yalahar - { x = 33592, y = 31896, z = 4 } --Oramond + { x = 33592, y = 31896, z = 4 }, --Oramond }, earth = { { x = 32364, y = 31780, z = 9 }, --Carlin @@ -27,7 +27,7 @@ local shrinesEntrance = { { x = 32625, y = 32740, z = 4 }, --Port Hope { x = 32215, y = 31130, z = 8 }, --Svargrond { x = 32787, y = 31243, z = 5 }, --Yalahar - { x = 33596, y = 31901, z = 4 } --Oramond + { x = 33596, y = 31901, z = 4 }, --Oramond }, fire = { { x = 32356, y = 31783, z = 9 }, --Carlin @@ -42,7 +42,7 @@ local shrinesEntrance = { { x = 32632, y = 32740, z = 4 }, --Port Hope { x = 32208, y = 31133, z = 8 }, --Svargrond { x = 32790, y = 31243, z = 5 }, --Yalahar - { x = 33592, y = 31901, z = 4 } --Oramond + { x = 33592, y = 31901, z = 4 }, --Oramond }, energy = { { x = 32364, y = 31783, z = 9 }, --Carlin @@ -57,8 +57,8 @@ local shrinesEntrance = { { x = 32632, y = 32744, z = 4 }, --Port Hope { x = 32209, y = 31130, z = 8 }, --Svargrond { x = 32781, y = 31243, z = 5 }, --Yalahar - { x = 33596, y = 31896, z = 4 } --Oramond - } + { x = 33596, y = 31896, z = 4 }, --Oramond + }, } local function toShrine(player, entrance, destination) diff --git a/data-otservbr-global/scripts/movements/teleport/shrine_exit.lua b/data-otservbr-global/scripts/movements/teleport/shrine_exit.lua index 505ac2c06f6..c833691e663 100644 --- a/data-otservbr-global/scripts/movements/teleport/shrine_exit.lua +++ b/data-otservbr-global/scripts/movements/teleport/shrine_exit.lua @@ -11,7 +11,7 @@ local exitDestination = { { x = 32628, y = 32743, z = 4 }, --Port Hope { x = 32213, y = 31132, z = 8 }, --Svargrond { x = 32786, y = 31245, z = 5 }, --Yalahar - { x = 33594, y = 31899, z = 4 } --Oramond + { x = 33594, y = 31899, z = 4 }, --Oramond } local exitFlamesPos = { { x = 32191, y = 31419, z = 2 }, --ice @@ -26,7 +26,7 @@ local exitFlamesPos = { { x = 32907, y = 32342, z = 15 }, { x = 33063, y = 32711, z = 5 }, --energy { x = 33063, y = 32716, z = 5 }, - { x = 33059, y = 32717, z = 5 } + { x = 33059, y = 32717, z = 5 }, } local shrineExit = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/teleport/teleport_ab_dendriel.lua b/data-otservbr-global/scripts/movements/teleport/teleport_ab_dendriel.lua index 1c5a8e04e0d..1f16cc1f751 100644 --- a/data-otservbr-global/scripts/movements/teleport/teleport_ab_dendriel.lua +++ b/data-otservbr-global/scripts/movements/teleport/teleport_ab_dendriel.lua @@ -4,7 +4,7 @@ local setting = { [9702] = Position(32674, 31617, 6), [9703] = Position(32664, 31679, 6), [9704] = Position(32658, 31688, 8), - [9705] = Position(32655, 31688, 6) + [9705] = Position(32655, 31688, 6), } local teleportAbDendriel = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/teleport/tomb_coal_basin.lua b/data-otservbr-global/scripts/movements/teleport/tomb_coal_basin.lua index a01feda0013..fb3957efa8d 100644 --- a/data-otservbr-global/scripts/movements/teleport/tomb_coal_basin.lua +++ b/data-otservbr-global/scripts/movements/teleport/tomb_coal_basin.lua @@ -6,7 +6,7 @@ local config = { [9037] = { flamePosition = Position(33276, 32553, 14), toPosition = Position(33271, 32553, 14) }, [9038] = { flamePosition = Position(33234, 32692, 13), toPosition = Position(33234, 32687, 13) }, [9039] = { flamePosition = Position(33135, 32683, 12), toPosition = Position(33130, 32683, 12) }, - [9040] = { flamePosition = Position(33162, 32831, 10), toPosition = Position(33158, 32832, 10) } + [9040] = { flamePosition = Position(33162, 32831, 10), toPosition = Position(33158, 32832, 10) }, } local tombCoalBasin = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/teleport/turtles.lua b/data-otservbr-global/scripts/movements/teleport/turtles.lua index 003c5f2dc9c..fbc2ff2a6a7 100644 --- a/data-otservbr-global/scripts/movements/teleport/turtles.lua +++ b/data-otservbr-global/scripts/movements/teleport/turtles.lua @@ -6,7 +6,7 @@ local setting = { [3210] = Position(32490, 32979, 7), [3211] = Position(32440, 32971, 7), [3212] = Position(32527, 32951, 7), - [3213] = Position(32523, 32923, 7) + [3213] = Position(32523, 32923, 7), } local turtles = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/teleport/vengoth_teleport.lua b/data-otservbr-global/scripts/movements/teleport/vengoth_teleport.lua index 90906e580d0..4da2967f904 100644 --- a/data-otservbr-global/scripts/movements/teleport/vengoth_teleport.lua +++ b/data-otservbr-global/scripts/movements/teleport/vengoth_teleport.lua @@ -8,7 +8,7 @@ local setting = { [50226] = Position(32951, 31568, 1), [50227] = Position(32940, 31577, 0), [50228] = Position(32940, 31558, 1), - [50229] = Position(32951, 31552, 3) + [50229] = Position(32951, 31552, 3), } local vengothTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/movements/teleport/yalahar_demon.lua b/data-otservbr-global/scripts/movements/teleport/yalahar_demon.lua index 4da9152e985..46b8e57d374 100644 --- a/data-otservbr-global/scripts/movements/teleport/yalahar_demon.lua +++ b/data-otservbr-global/scripts/movements/teleport/yalahar_demon.lua @@ -3,14 +3,14 @@ local setting = { [4244] = { sacrificePosition = Position(32859, 31056, 9), pushPosition = Position(32856, 31054, 9), - destination = Position(32860, 31061, 9) + destination = Position(32860, 31061, 9), }, --east entrance [4245] = { sacrificePosition = Position(32894, 31044, 9), pushPosition = Position(32895, 31046, 9), - destination = Position(32888, 31044, 9) - } + destination = Position(32888, 31044, 9), + }, } local yalaharDemon = MoveEvent() diff --git a/data-otservbr-global/scripts/quests/alawars_vault/action-lever.lua b/data-otservbr-global/scripts/quests/alawars_vault/action-lever.lua index f911057ed24..4b53fad8b59 100644 --- a/data-otservbr-global/scripts/quests/alawars_vault/action-lever.lua +++ b/data-otservbr-global/scripts/quests/alawars_vault/action-lever.lua @@ -2,7 +2,7 @@ local wallsPositions = { { x = 32186, y = 31626, z = 8 }, { x = 32187, y = 31626, z = 8 }, { x = 32188, y = 31626, z = 8 }, - { x = 32189, y = 31626, z = 8 } + { x = 32189, y = 31626, z = 8 }, } local lever = Action() diff --git a/data-otservbr-global/scripts/quests/behemoth/action-lever.lua b/data-otservbr-global/scripts/quests/behemoth/action-lever.lua index 3a030c2229c..155240094d5 100644 --- a/data-otservbr-global/scripts/quests/behemoth/action-lever.lua +++ b/data-otservbr-global/scripts/quests/behemoth/action-lever.lua @@ -3,7 +3,7 @@ local wallsPositions = { { x = 33296, y = 31677, z = 15 }, { x = 33297, y = 31677, z = 15 }, { x = 33298, y = 31677, z = 15 }, - { x = 33299, y = 31677, z = 15 } + { x = 33299, y = 31677, z = 15 }, } local lever = Action() diff --git a/data-otservbr-global/scripts/quests/demon_helmet/movement-walls.lua b/data-otservbr-global/scripts/quests/demon_helmet/movement-walls.lua index c4c52289a71..afadb96e58f 100644 --- a/data-otservbr-global/scripts/quests/demon_helmet/movement-walls.lua +++ b/data-otservbr-global/scripts/quests/demon_helmet/movement-walls.lua @@ -1,12 +1,12 @@ local tilesPositions = { { x = 33190, y = 31629, z = 13 }, - { x = 33191, y = 31629, z = 13 } + { x = 33191, y = 31629, z = 13 }, } local wallsPositions = { { x = 33210, y = 31630, z = 13 }, { x = 33211, y = 31630, z = 13 }, - { x = 33212, y = 31630, z = 13 } + { x = 33212, y = 31630, z = 13 }, } local walls = MoveEvent() diff --git a/data-otservbr-global/scripts/quests/draconia/movement-exit_teleport.lua b/data-otservbr-global/scripts/quests/draconia/movement-exit_teleport.lua index d69beff3e11..7f9717e12de 100644 --- a/data-otservbr-global/scripts/quests/draconia/movement-exit_teleport.lua +++ b/data-otservbr-global/scripts/quests/draconia/movement-exit_teleport.lua @@ -2,7 +2,7 @@ local config = { { leverPosition = Position(32802, 31584, 1), leverId = 2772 }, { leverPosition = Position(32803, 31584, 1), leverId = 2773 }, { leverPosition = Position(32804, 31584, 1), leverId = 2772 }, - { leverPosition = Position(32805, 31584, 1), leverId = 2773 } + { leverPosition = Position(32805, 31584, 1), leverId = 2773 }, } local exitTeleport = MoveEvent() diff --git a/data-otservbr-global/scripts/quests/hidden_threats/movement-cave_spider_room.lua b/data-otservbr-global/scripts/quests/hidden_threats/movement-cave_spider_room.lua index eccced6fd08..6e3f722929b 100644 --- a/data-otservbr-global/scripts/quests/hidden_threats/movement-cave_spider_room.lua +++ b/data-otservbr-global/scripts/quests/hidden_threats/movement-cave_spider_room.lua @@ -1,10 +1,10 @@ local config = { - bossName = 'Cave Spider', -- boss name + bossName = "Cave Spider", -- boss name bossPos = Position(33034, 32107, 12), -- Boss Position tarantulasPos = { -- Tarantulas Spawn Position(33029, 32103, 12), Position(33029, 32107, 12), - Position(33029, 32111, 12) + Position(33029, 32111, 12), }, centerPos = Position(33031, 32107, 12), -- Boss Position newPos = Position(33023, 32106, 12), -- Where to teleport player when entering the room @@ -12,7 +12,7 @@ local config = { rangeX = 20, -- Range in X rangeY = 10, -- Range in Y time = 5, -- time in minutes to remove the player - access = Storage.Quest.U11_50.HiddenThreats.CorymRescueMission -- Quest level to access the room + access = Storage.Quest.U11_50.HiddenThreats.CorymRescueMission, -- Quest level to access the room } local caveSpiderRoom = MoveEvent() @@ -44,7 +44,9 @@ function caveSpiderRoom.onStepIn(creature, item, position, fromPosition) clearRoom(room.centerPos, room.rangeX, room.rangeY, fromPosition) local monster = Game.createMonster(room.bossName, room.bossPos, true, true) - for i = 1, 3 do Game.createMonster("Tarantula", room.tarantulasPos[i], true, true) end + for i = 1, 3 do + Game.createMonster("Tarantula", room.tarantulasPos[i], true, true) + end if not monster then return true end diff --git a/data-otservbr-global/scripts/quests/hidden_threats/movement-chests_check.lua b/data-otservbr-global/scripts/quests/hidden_threats/movement-chests_check.lua index 11b64dc4056..88b2a4f7efa 100644 --- a/data-otservbr-global/scripts/quests/hidden_threats/movement-chests_check.lua +++ b/data-otservbr-global/scripts/quests/hidden_threats/movement-chests_check.lua @@ -6,9 +6,7 @@ function corymChests.onStepOut(creature, item, position, fromPosition) if not player then return true end - if player:getStorageValue(HiddenThreats.Rewards.keyFragment01) == 1 - and player:getStorageValue(HiddenThreats.Rewards.keyFragment02) == 1 - and player:getStorageValue(HiddenThreats.QuestLine) == 2 then + if player:getStorageValue(HiddenThreats.Rewards.keyFragment01) == 1 and player:getStorageValue(HiddenThreats.Rewards.keyFragment02) == 1 and player:getStorageValue(HiddenThreats.QuestLine) == 2 then player:setStorageValue(HiddenThreats.QuestLine, 3) end return true diff --git a/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/3-urmahlullu-the-immaculate.lua b/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/3-urmahlullu-the-immaculate.lua index 2745cd17a17..f4606e0211a 100644 --- a/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/3-urmahlullu-the-immaculate.lua +++ b/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/3-urmahlullu-the-immaculate.lua @@ -9,10 +9,10 @@ local config = { Position(33919, 31626, 8), Position(33920, 31626, 8), Position(33921, 31626, 8), - Position(33922, 31626, 8) + Position(33922, 31626, 8), }, teleportPosition = Position(33918, 31657, 8), - bossPosition = Position(33918, 31641, 8) + bossPosition = Position(33918, 31641, 8), } local leverboss = Action() @@ -21,7 +21,7 @@ function leverboss.onUse(player, item, fromPosition, target, toPosition, isHotke if item.itemid == 8911 then -- Check if the player that pulled the lever is on the correct position if player:getPosition() ~= config.playerPositions[1] then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can\'t start the battle.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can't start the battle.") return true end @@ -34,8 +34,7 @@ function leverboss.onUse(player, item, fromPosition, target, toPosition, isHotke if participant and participant:isPlayer() then -- Check participant level if participant:getLevel() < config.requiredLevel then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "All the players need to be level " .. config.requiredLevel .. " or higher.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "All the players need to be level " .. config.requiredLevel .. " or higher.") return true end @@ -46,7 +45,7 @@ function leverboss.onUse(player, item, fromPosition, target, toPosition, isHotke return true end - team[#team+1] = participant + team[#team + 1] = participant end end diff --git a/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/6-mind-travel.lua b/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/6-mind-travel.lua index 5af451be981..cc0d24c7281 100644 --- a/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/6-mind-travel.lua +++ b/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/6-mind-travel.lua @@ -1,11 +1,11 @@ local brainPositions = { { x = 33913, y = 31653, z = 9 }, -- left - { x = 33921, y = 31650, z = 9 } -- right + { x = 33921, y = 31650, z = 9 }, -- right } local mirrorTeleportPositions = { { x = 33899, y = 31644, z = 9 }, -- left - { x = 33936, y = 31648, z = 9 } -- right + { x = 33936, y = 31648, z = 9 }, -- right } local templeCenter = { x = 33865, y = 31533, z = 7 } @@ -39,7 +39,6 @@ end potion:id(31350) potion:register() - -- Mirror neuron local leftMirror = MoveEvent() @@ -58,7 +57,6 @@ end leftMirror:uid(57505) leftMirror:register() - local rightMirror = MoveEvent() function rightMirror.onStepIn(creature) @@ -75,18 +73,17 @@ end rightMirror:uid(57506) rightMirror:register() - -- Memories local memoriesWords = { "The Ambassador tells another dignitary: Rathleton must never be surpassed! I will procure that the Empire falters!", "Through a dimensional gate you can see the Ambassador of Rathleton wearing a cloak with a black sphinx on it.", - "Through a dimensional gate you can see how the Ambassador of Rathleton is talking to Fafnar cultists in a quite familiar way. The proof is absolutely substantive. The Ambassador is a betrayer!" + "Through a dimensional gate you can see how the Ambassador of Rathleton is talking to Fafnar cultists in a quite familiar way. The proof is absolutely substantive. The Ambassador is a betrayer!", } local memoryShardsItemIdsBitmasks = { [31354] = 1, [31355] = 2, - [31356] = 4 + [31356] = 4, } local memoryShards = Action() @@ -96,9 +93,10 @@ function memoryShards.onUse(player, item, fromPosition, target, toPosition, isHo local memoriesShardsStorage = player:getStorageValue(Storage.Kilmaresh.Fifth.MemoriesShards) local hasUsedShard = testFlag(memoriesShardsStorage, memoryShardsItemIdsBitmasks[item:getId()]) - if memoryStorage >= 1 and -- following the quest - not hasUsedShard and -- making sure we don't use the same shard twice - target.uid == 57507 -- is it the shrine? + if + memoryStorage >= 1 -- following the quest + and not hasUsedShard -- making sure we don't use the same shard twice + and target.uid == 57507 -- is it the shrine? then player:say(memoriesWords[memoryStorage], TALKTYPE_MONSTER_SAY, false, player, toPosition) player:setStorageValue(Storage.Kilmaresh.Fifth.Memories, memoryStorage + 1) @@ -112,7 +110,6 @@ end memoryShards:id(31354, 31355, 31356) -- Green, blue and purple memory shards memoryShards:register() - -- Energy fields local energyField = MoveEvent() diff --git a/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/7-four-masks.lua b/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/7-four-masks.lua index f30214da442..b3dc0585bce 100644 --- a/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/7-four-masks.lua +++ b/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/7-four-masks.lua @@ -2,27 +2,27 @@ local masks = { [31369] = { storage = 1, successMessage = "You have found a gryphon mask.", -- TODO Gryphon Mask - emptyMessage = "The gryphon nest is empty." + emptyMessage = "The gryphon nest is empty.", }, [31370] = { -- Silver mask storage = 2, successMessage = "You have found a silver mask.", - emptyMessage = "This palm is empty." + emptyMessage = "This palm is empty.", }, [31371] = { -- For Ivory mask action see data\scripts\actions\other\gems.lua - storage = 4 + storage = 4, }, [31372] = { -- Mirror Mask storage = 8, successMessage = "You have found a mirror mask.", - emptyMessage = "The sarcophagus is empty." - } + emptyMessage = "The sarcophagus is empty.", + }, } local uidRewards = { [40033] = 31369, [40034] = 31370, - [40035] = 31372 + [40035] = 31372, } local masksAction = Action() @@ -31,9 +31,7 @@ function masksAction.onUse(player, item, fromPosition, target, toPosition, isHot local maskDiscovered = uidRewards[item.uid] local mask = masks[maskDiscovered] - if player:getStorageValue(Storage.Kilmaresh.Sixth.Favor) >= 1 and - not testFlag(player:getStorageValue(Storage.Kilmaresh.Sixth.FourMasks), mask.storage) - then + if player:getStorageValue(Storage.Kilmaresh.Sixth.Favor) >= 1 and not testFlag(player:getStorageValue(Storage.Kilmaresh.Sixth.FourMasks), mask.storage) then player:addItem(maskDiscovered, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, mask.successMessage) player:setStorageValue(Storage.Kilmaresh.Sixth.Favor, player:getStorageValue(Storage.Kilmaresh.Sixth.Favor) + 1) diff --git a/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/8-blessing-the-statues.lua b/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/8-blessing-the-statues.lua index 8253b264b54..1c5bc1964bc 100644 --- a/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/8-blessing-the-statues.lua +++ b/data-otservbr-global/scripts/quests/kilmaresh/1-fafnars-wrath/8-blessing-the-statues.lua @@ -1,23 +1,23 @@ local config = { [40036] = { itemId = 31162, - storage = 1 + storage = 1, }, [40037] = { itemId = 31162, - storage = 2 + storage = 2, }, [40038] = { itemId = 31161, - storage = 4 + storage = 4, }, [40039] = { itemId = 31162, - storage = 8 + storage = 8, }, [40040] = { itemId = 31161, - storage = 16 + storage = 16, }, } @@ -30,9 +30,7 @@ function statuesActions.onUse(player, item, fromPosition, target, toPosition, is return false end - if player:getStorageValue(Storage.Kilmaresh.Sixth.Favor) >= 5 and - not testFlag(player:getStorageValue(Storage.Kilmaresh.Sixth.BlessedStatues), key.storage) - then + if player:getStorageValue(Storage.Kilmaresh.Sixth.Favor) >= 5 and not testFlag(player:getStorageValue(Storage.Kilmaresh.Sixth.BlessedStatues), key.storage) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You bless the statue.") player:setStorageValue(Storage.Kilmaresh.Sixth.Favor, player:getStorageValue(Storage.Kilmaresh.Sixth.Favor) + 1) player:setStorageValue(Storage.Kilmaresh.Sixth.BlessedStatues, player:getStorageValue(Storage.Kilmaresh.Sixth.BlessedStatues) + key.storage) diff --git a/data-otservbr-global/scripts/quests/parchment_room/parchment.lua b/data-otservbr-global/scripts/quests/parchment_room/parchment.lua index d978868cb10..35c26718ad0 100644 --- a/data-otservbr-global/scripts/quests/parchment_room/parchment.lua +++ b/data-otservbr-global/scripts/quests/parchment_room/parchment.lua @@ -2,7 +2,7 @@ local demonPositions = { { x = 33060, y = 31623, z = 15 }, { x = 33066, y = 31623, z = 15 }, { x = 33060, y = 31627, z = 15 }, - { x = 33066, y = 31627, z = 15 } + { x = 33066, y = 31627, z = 15 }, } local function recreateParchment(position) @@ -25,7 +25,7 @@ function parchment.onRemoveItem(item, position) addEvent(recreateParchment, 2 * 60 * 60 * 1000, position) -- 2 hours for i = 1, #demonPositions do - Game.createMonster('Demon', demonPositions[i]) + Game.createMonster("Demon", demonPositions[i]) end return true end diff --git a/data-otservbr-global/scripts/quests/primal_ordeal_quest/magma_bubble_fight.lua b/data-otservbr-global/scripts/quests/primal_ordeal_quest/magma_bubble_fight.lua index f91f8df93e8..2c5d8957a28 100644 --- a/data-otservbr-global/scripts/quests/primal_ordeal_quest/magma_bubble_fight.lua +++ b/data-otservbr-global/scripts/quests/primal_ordeal_quest/magma_bubble_fight.lua @@ -3,9 +3,9 @@ local chargedFlameId = 39230 local heatedCrystalId = 39168 local cooledCrystalId = 39169 -local overheatedZone = Zone('fight.magma-bubble.overheated') +local overheatedZone = Zone("fight.magma-bubble.overheated") local bossZone = Zone("boss.magma-bubble") -local spawnZone = Zone('fight.magma-bubble.spawn') +local spawnZone = Zone("fight.magma-bubble.spawn") -- top left overheatedZone:addArea({ x = 33634, y = 32891, z = 15 }, { x = 33645, y = 32898, z = 15 }) @@ -19,7 +19,6 @@ overheatedZone:addArea({ x = 33664, y = 32896, z = 15 }, { x = 33671, y = 32899, overheatedZone:addArea({ x = 33635, y = 32911, z = 15 }, { x = 33643, y = 32929, z = 15 }) overheatedZone:addArea({ x = 33644, y = 32921, z = 15 }, { x = 33647, y = 32928, z = 15 }) - -- central area where monsters/boss spawns spawnZone:addArea({ x = 33647, y = 32900, z = 15 }, { x = 33659, y = 32913, z = 15 }) @@ -122,7 +121,9 @@ local overheatedDamage = GlobalEvent("self.magma-bubble.overheated.onThink") function overheatedDamage.onThink(interval, lastExecution) local players = overheatedZone:getPlayers() for _, player in ipairs(players) do - if player:getHealth() <= 0 then goto continue end + if player:getHealth() <= 0 then + goto continue + end local shields = tickShields(player) if shields > 0 then local effect = CONST_ME_BLACKSMOKE @@ -201,9 +202,15 @@ end local chargedFlameAction = Action() function chargedFlameAction.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if not player then return false end - if not target or not target:isItem() then return false end - if target:getId() ~= cooledCrystalId then return false end + if not player then + return false + end + if not target or not target:isItem() then + return false + end + if target:getId() ~= cooledCrystalId then + return false + end target:transform(heatedCrystalId) local positions = { Position(toPosition.x - 1, toPosition.y, toPosition.z), @@ -227,8 +234,12 @@ chargedFlameAction:register() local shieldField = MoveEvent() function shieldField.onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() - if not player then return false end - if not encounter:isInZone(player:getPosition()) then return false end + if not player then + return false + end + if not encounter:isInZone(player:getPosition()) then + return false + end item:remove() addShieldStack(player) end @@ -239,7 +250,9 @@ shieldField:register() local theEndOfDaysHealth = CreatureEvent("fight.magma-bubble.TheEndOfDaysHealth") function theEndOfDaysHealth.onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType) - if not creature then return primaryDamage, primaryType, secondaryDamage, secondaryType end + if not creature then + return primaryDamage, primaryType, secondaryDamage, secondaryType + end local newHealth = creature:getHealth() - primaryDamage - secondaryDamage if newHealth <= creature:getMaxHealth() * 0.5 then creature:setHealth(creature:getMaxHealth()) diff --git a/data-otservbr-global/scripts/quests/primal_ordeal_quest/magma_bubble_lever.lua b/data-otservbr-global/scripts/quests/primal_ordeal_quest/magma_bubble_lever.lua index 15555705b59..361ff9e03e6 100644 --- a/data-otservbr-global/scripts/quests/primal_ordeal_quest/magma_bubble_lever.lua +++ b/data-otservbr-global/scripts/quests/primal_ordeal_quest/magma_bubble_lever.lua @@ -8,11 +8,11 @@ local config = { { pos = Position(33669, 32927, 15), teleport = Position(33655, 32917, 15), effect = CONST_ME_TELEPORT }, { pos = Position(33669, 32928, 15), teleport = Position(33655, 32917, 15), effect = CONST_ME_TELEPORT }, { pos = Position(33669, 32929, 15), teleport = Position(33655, 32917, 15), effect = CONST_ME_TELEPORT }, - { pos = Position(33669, 32930, 15), teleport = Position(33655, 32917, 15), effect = CONST_ME_TELEPORT } + { pos = Position(33669, 32930, 15), teleport = Position(33655, 32917, 15), effect = CONST_ME_TELEPORT }, }, specPos = { from = Position(33630, 32887, 15), - to = Position(Position(33672, 32921, 15)) + to = Position(Position(33672, 32921, 15)), }, exit = Position(33659, 32897, 14), storage = Storage.Quest.U12_90.PrimalOrdeal.Bosses.MagmaBubbleTimer, diff --git a/data-otservbr-global/scripts/quests/primal_ordeal_quest/ore_wagons_gnoproma.lua b/data-otservbr-global/scripts/quests/primal_ordeal_quest/ore_wagons_gnoproma.lua index 22099224142..6a00a95f1b3 100644 --- a/data-otservbr-global/scripts/quests/primal_ordeal_quest/ore_wagons_gnoproma.lua +++ b/data-otservbr-global/scripts/quests/primal_ordeal_quest/ore_wagons_gnoproma.lua @@ -9,7 +9,6 @@ local carts = { { clickPos = { x = 33591, y = 32909, z = 15 }, destination = Position(33571, 32869, 15) }, { clickPos = { x = 33597, y = 32914, z = 15 }, destination = Position(33662, 32976, 15) }, { clickPos = { x = 33661, y = 32976, z = 15 }, destination = Position(33597, 32913, 15) }, - } local gnompronaCarts = Action() diff --git a/data-otservbr-global/scripts/quests/primal_ordeal_quest/the_primal_manace_lever.lua b/data-otservbr-global/scripts/quests/primal_ordeal_quest/the_primal_manace_lever.lua index 05610dc93d7..64c6785e364 100644 --- a/data-otservbr-global/scripts/quests/primal_ordeal_quest/the_primal_manace_lever.lua +++ b/data-otservbr-global/scripts/quests/primal_ordeal_quest/the_primal_manace_lever.lua @@ -1,7 +1,7 @@ local config = { boss = { name = "The Primal Menace", - position = Position(33558, 32759, 15) + position = Position(33558, 32759, 15), }, requiredLevel = 500, playerPositions = { @@ -9,14 +9,14 @@ local config = { { pos = Position(33549, 32752, 14), teleport = Position(33565, 32758, 15) }, { pos = Position(33550, 32752, 14), teleport = Position(33565, 32758, 15) }, { pos = Position(33551, 32752, 14), teleport = Position(33565, 32758, 15) }, - { pos = Position(33552, 32752, 14), teleport = Position(33565, 32758, 15) } + { pos = Position(33552, 32752, 14), teleport = Position(33565, 32758, 15) }, }, specPos = { from = Position(33547, 32749, 15), - to = Position(33570, 32769, 15) + to = Position(33570, 32769, 15), }, exit = Position(33520, 32871, 15), - storage = Storage.Quest.U12_90.PrimalOrdeal.Bosses.ThePrimalMenaceTimer + storage = Storage.Quest.U12_90.PrimalOrdeal.Bosses.ThePrimalMenaceTimer, } lever = BossLever(config) diff --git a/data-otservbr-global/scripts/quests/the_annihilator/lever.lua b/data-otservbr-global/scripts/quests/the_annihilator/lever.lua index a929808a222..f32e2389173 100644 --- a/data-otservbr-global/scripts/quests/the_annihilator/lever.lua +++ b/data-otservbr-global/scripts/quests/the_annihilator/lever.lua @@ -11,14 +11,14 @@ local setting = { { x = 33223, y = 31659, z = 13 }, { x = 33224, y = 31659, z = 13 }, { x = 33220, y = 31661, z = 13 }, - { x = 33222, y = 31661, z = 13 } + { x = 33222, y = 31661, z = 13 }, }, playersPositions = { { fromPos = { x = 33225, y = 31671, z = 13 }, toPos = { x = 33222, y = 31659, z = 13 } }, { fromPos = { x = 33224, y = 31671, z = 13 }, toPos = { x = 33221, y = 31659, z = 13 } }, { fromPos = { x = 33223, y = 31671, z = 13 }, toPos = { x = 33220, y = 31659, z = 13 } }, { fromPos = { x = 33222, y = 31671, z = 13 }, toPos = { x = 33219, y = 31659, z = 13 } }, - } + }, } local lever = Action() diff --git a/data-otservbr-global/scripts/quests/the_new_frontier/action-arena.lua b/data-otservbr-global/scripts/quests/the_new_frontier/action-arena.lua index a82c02ac1de..16f8de50c21 100644 --- a/data-otservbr-global/scripts/quests/the_new_frontier/action-arena.lua +++ b/data-otservbr-global/scripts/quests/the_new_frontier/action-arena.lua @@ -1,22 +1,22 @@ local config = { bosses = { - { 'Baron Brute', 'The Axeorcist' }, - { 'Menace', 'Fatality' }, - { 'Incineron', 'Coldheart' }, - { 'Dreadwing', 'Doomhowl' }, - { 'Haunter', 'The Dreadorian' }, - { 'Rocko', 'Tremorak' }, - { 'Tirecz' } + { "Baron Brute", "The Axeorcist" }, + { "Menace", "Fatality" }, + { "Incineron", "Coldheart" }, + { "Dreadwing", "Doomhowl" }, + { "Haunter", "The Dreadorian" }, + { "Rocko", "Tremorak" }, + { "Tirecz" }, }, playerPos = { Position(33080, 31014, 2), - Position(33081, 31014, 2) + Position(33081, 31014, 2), }, teleportPositions = { Position(33059, 31032, 3), - Position(33057, 31034, 3) + Position(33057, 31034, 3), }, positions = { @@ -26,8 +26,8 @@ local config = { -- first 2 bosses Position(33065, 31033, 3), - Position(33066, 31037, 3) - } + Position(33066, 31037, 3), + }, } local TheNewFrontier = Storage.Quest.U8_54.TheNewFrontier @@ -59,12 +59,12 @@ function theNewFrontierArena.onUse(player, item, fromPosition, target, toPositio end if creature:getStorageValue(TheNewFrontier.Questline) >= 26 then - return player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You already finished this battle.') + return player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You already finished this battle.") end end if Game.getStorageValue(TheNewFrontier.Mission09[1]) == 1 then - return player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The arena is already in use.') + return player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The arena is already in use.") end Game.setStorageValue(TheNewFrontier.Mission09[1], 1) diff --git a/data-otservbr-global/scripts/quests/the_new_frontier/action-beaver.lua b/data-otservbr-global/scripts/quests/the_new_frontier/action-beaver.lua index d16cd5ba174..bf29b8854a3 100644 --- a/data-otservbr-global/scripts/quests/the_new_frontier/action-beaver.lua +++ b/data-otservbr-global/scripts/quests/the_new_frontier/action-beaver.lua @@ -3,7 +3,7 @@ local config = { Position(32515, 31927, 7), -- Tree 01 Position(32474, 31947, 7), -- Tree 02 Position(32458, 31997, 7), -- Tree 03 - } + }, } local TheNewFrontier = Storage.Quest.U8_54.TheNewFrontier diff --git a/data-otservbr-global/scripts/quests/the_new_frontier/action-elevator.lua b/data-otservbr-global/scripts/quests/the_new_frontier/action-elevator.lua index 7ea7917c400..52ddd2667c8 100644 --- a/data-otservbr-global/scripts/quests/the_new_frontier/action-elevator.lua +++ b/data-otservbr-global/scripts/quests/the_new_frontier/action-elevator.lua @@ -9,7 +9,7 @@ local config = { Position(33055, 31527, 12), -- Elevator Stage 2 to the mines Position(33055, 31527, 10), -- Elevator Stage 3 to the mines Position(33065, 31489, 15), -- Elevator to return from the mines - } + }, } local TheNewFrontier = Storage.Quest.U8_54.TheNewFrontier diff --git a/data-otservbr-global/scripts/quests/the_new_frontier/action-hidden_note.lua b/data-otservbr-global/scripts/quests/the_new_frontier/action-hidden_note.lua index 583434f39dd..de35c07aa63 100644 --- a/data-otservbr-global/scripts/quests/the_new_frontier/action-hidden_note.lua +++ b/data-otservbr-global/scripts/quests/the_new_frontier/action-hidden_note.lua @@ -6,7 +6,7 @@ function hiddenNote.onUse(player, item, fromPosition, target, toPosition, isHotk if player:getStorageValue(TheNewFrontier.Mission07.HiddenNote) < 1 then local note = player:addItem(8747, 1) note:setAttribute(ITEM_ATTRIBUTE_TEXT, "Go to the secret door to the north") - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found a piece of paper.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a piece of paper.") player:setStorageValue(TheNewFrontier.Mission07.HiddenNote, 1) return true end diff --git a/data-otservbr-global/scripts/quests/the_new_frontier/action-vine.lua b/data-otservbr-global/scripts/quests/the_new_frontier/action-vine.lua index f252f481550..962ed1cc6a9 100644 --- a/data-otservbr-global/scripts/quests/the_new_frontier/action-vine.lua +++ b/data-otservbr-global/scripts/quests/the_new_frontier/action-vine.lua @@ -1,6 +1,6 @@ local config = { [4] = { { x = 33021, y = 31536, z = 4 }, Position(33022, 31536, 6) }, - [6] = { { x = 33021, y = 31536, z = 6 }, Position(33021, 31536, 4) } + [6] = { { x = 33021, y = 31536, z = 6 }, Position(33021, 31536, 4) }, } local theNewFrontierVine = Action() diff --git a/data-otservbr-global/scripts/quests/the_new_frontier/creaturescripts-shard_of_corruption_kill.lua b/data-otservbr-global/scripts/quests/the_new_frontier/creaturescripts-shard_of_corruption_kill.lua index 8bb1b8b00b3..4d97191766a 100644 --- a/data-otservbr-global/scripts/quests/the_new_frontier/creaturescripts-shard_of_corruption_kill.lua +++ b/data-otservbr-global/scripts/quests/the_new_frontier/creaturescripts-shard_of_corruption_kill.lua @@ -8,7 +8,7 @@ function shardOfCorruptionKill.onKill(creature, target) return true end - if targetMonster:getName():lower() ~= 'shard of corruption' then + if targetMonster:getName():lower() ~= "shard of corruption" then return true end diff --git a/data-otservbr-global/scripts/quests/the_new_frontier/creaturescripts-tirecz_kill.lua b/data-otservbr-global/scripts/quests/the_new_frontier/creaturescripts-tirecz_kill.lua index e0eb821a78e..3bd59a34450 100644 --- a/data-otservbr-global/scripts/quests/the_new_frontier/creaturescripts-tirecz_kill.lua +++ b/data-otservbr-global/scripts/quests/the_new_frontier/creaturescripts-tirecz_kill.lua @@ -14,7 +14,6 @@ local function clearArena() end end - local tireczKill = CreatureEvent("TireczKill") function tireczKill.onKill(creature, target) @@ -23,7 +22,7 @@ function tireczKill.onKill(creature, target) return true end - if targetMonster:getName():lower() ~= 'tirecz' then + if targetMonster:getName():lower() ~= "tirecz" then return true end @@ -32,8 +31,8 @@ function tireczKill.onKill(creature, target) spectator = spectators[i] spectator:teleportTo(exitPosition[1]) exitPosition[1]:sendMagicEffect(CONST_ME_TELEPORT) - spectator:say('You have won! As new champion take the ancient armor as reward before you leave.', TALKTYPE_MONSTER_SAY) - spectator:addAchievement('Champion of Chazorai') + spectator:say("You have won! As new champion take the ancient armor as reward before you leave.", TALKTYPE_MONSTER_SAY) + spectator:addAchievement("Champion of Chazorai") if spectator:getStorageValue(TheNewFrontier.Questline) == 25 then spectator:setStorageValue(TheNewFrontier.Mission09[1], 2) -- Questlog: 'Mission 09: Mortal Combat' spectator:setStorageValue(TheNewFrontier.Questline, 26) diff --git a/data-otservbr-global/scripts/quests/the_new_frontier/movement-prision_trap.lua b/data-otservbr-global/scripts/quests/the_new_frontier/movement-prision_trap.lua index c76993f0a05..ee7ec32a0d4 100644 --- a/data-otservbr-global/scripts/quests/the_new_frontier/movement-prision_trap.lua +++ b/data-otservbr-global/scripts/quests/the_new_frontier/movement-prision_trap.lua @@ -9,9 +9,7 @@ function lizardsTrap.onStepIn(creature, item, position, fromPosition) return false end - if player:getStorageValue(TheNewFrontier.Questline) == 21 - and player:getStorageValue(TheNewFrontier.Mission07[1]) == 1 - and player:getStorageValue(TheNewFrontier.Mission08) < 1 then + if player:getStorageValue(TheNewFrontier.Questline) == 21 and player:getStorageValue(TheNewFrontier.Mission07[1]) == 1 and player:getStorageValue(TheNewFrontier.Mission08) < 1 then player:setStorageValue(TheNewFrontier.Mission07[1], 2) -- Questlog, "Mission 07: Messengers Of Peace" player:setStorageValue(TheNewFrontier.Mission08, 1) -- Questlog, "Mission 08: An Offer You Can't Refuse" player:setStorageValue(TheNewFrontier.Questline, 22) diff --git a/data-otservbr-global/scripts/quests/the_new_frontier/snake_head_teleport.lua b/data-otservbr-global/scripts/quests/the_new_frontier/snake_head_teleport.lua index f3c52136aad..453ebbd8761 100644 --- a/data-otservbr-global/scripts/quests/the_new_frontier/snake_head_teleport.lua +++ b/data-otservbr-global/scripts/quests/the_new_frontier/snake_head_teleport.lua @@ -1,6 +1,6 @@ local tpPos = { { x = 33004, y = 31540, z = 0 }, - { x = 33005, y = 31540, z = 0 } + { x = 33005, y = 31540, z = 0 }, } local destination = Position(33197, 31347, 6) @@ -8,7 +8,6 @@ local TheNewFrontier = Storage.Quest.U8_54.TheNewFrontier local teleport = MoveEvent() - function teleport.onStepIn(player, item, position, fromPosition) if not player then return true diff --git a/data-otservbr-global/scripts/quests/the_order_of_lion/action-drume.lua b/data-otservbr-global/scripts/quests/the_order_of_lion/action-drume.lua index 7fa987927ea..26c3da84263 100644 --- a/data-otservbr-global/scripts/quests/the_order_of_lion/action-drume.lua +++ b/data-otservbr-global/scripts/quests/the_order_of_lion/action-drume.lua @@ -7,7 +7,7 @@ local config = { usurperPosition = { Position(32450, 32520, 7), Position(32444, 32516, 7), - Position(32448, 32512, 7) + Position(32448, 32512, 7), }, firstPlayerPosition = Position(32457, 32508, 6), centerPosition = Position(32439, 32523, 7), -- Center Room @@ -29,10 +29,8 @@ local function RoomIsOccupied(centerPosition, rangeX, rangeY) return false end - local function clearRoomDrume(centerPosition, rangeX, rangeY, resetGlobalStorage) - local spectators, - spectator = Game.getSpectators(centerPosition, false, false, rangeX, rangeX, rangeY, rangeY) + local spectators, spectator = Game.getSpectators(centerPosition, false, false, rangeX, rangeX, rangeY, rangeY) for i = 1, #spectators do spectator = spectators[i] if spectator:isMonster() then @@ -51,7 +49,9 @@ end local drumeAction = Action() function drumeAction.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if player:getPosition() ~= config.firstPlayerPosition then return false end + if player:getPosition() ~= config.firstPlayerPosition then + return false + end if RoomIsOccupied(config.centerPosition, config.rangeX, config.rangeY) then player:sendCancelMessage("There's someone already in the skirmish.") player:getPosition():sendMagicEffect(CONST_ME_POFF) @@ -69,7 +69,9 @@ function drumeAction.onUse(player, item, fromPosition, target, toPosition, isHot end end end - if #players == 0 then return false end + if #players == 0 then + return false + end for _, pi in pairs(players) do if pi:getStorageValue(Storage.TheOrderOfTheLion.Drume.Timer) > os.time() then player:sendCancelMessage("Someone of your team has already fought in the skirmish in the last 20h.") diff --git a/data-otservbr-global/scripts/quests/the_paradox_tower/action-fifth_floor_lever.lua b/data-otservbr-global/scripts/quests/the_paradox_tower/action-fifth_floor_lever.lua index ac253c65f9c..4d869efd10d 100644 --- a/data-otservbr-global/scripts/quests/the_paradox_tower/action-fifth_floor_lever.lua +++ b/data-otservbr-global/scripts/quests/the_paradox_tower/action-fifth_floor_lever.lua @@ -1,6 +1,6 @@ local positions = { { x = 32478, y = 31903, z = 3 }, - { x = 32479, y = 31903, z = 3 } + { x = 32479, y = 31903, z = 3 }, } local fifthFloorLever = Action() diff --git a/data-otservbr-global/scripts/quests/the_paradox_tower/action-four_floor_lever.lua b/data-otservbr-global/scripts/quests/the_paradox_tower/action-four_floor_lever.lua index 26b0712c7d4..adb85fb6c3a 100644 --- a/data-otservbr-global/scripts/quests/the_paradox_tower/action-four_floor_lever.lua +++ b/data-otservbr-global/scripts/quests/the_paradox_tower/action-four_floor_lever.lua @@ -4,7 +4,7 @@ local positions = { { x = 32478, y = 31900, z = 4 }, { x = 32479, y = 31900, z = 4 }, { x = 32480, y = 31900, z = 4 }, - { x = 32481, y = 31900, z = 4 } + { x = 32481, y = 31900, z = 4 }, } local fourFloorLever = Action() @@ -20,12 +20,7 @@ function fourFloorLever.onUse(creature, item, position, fromPosition) if item.itemid == 2772 then -- Check if have all items - if Position(positions[1]):hasItem(3593) - and Position(positions[2]):hasItem(3587) - and Position(positions[3]):hasItem(3590) - and Position(positions[4]):hasItem(3585) - and Position(positions[5]):hasItem(3592) - and Position(positions[6]):hasItem(3589) then + if Position(positions[1]):hasItem(3593) and Position(positions[2]):hasItem(3587) and Position(positions[3]):hasItem(3590) and Position(positions[4]):hasItem(3585) and Position(positions[5]):hasItem(3592) and Position(positions[6]):hasItem(3589) then -- If have all items, then remove it Position(positions[1]):removeItem(3593) Position(positions[2]):removeItem(3587) diff --git a/data-otservbr-global/scripts/quests/the_paradox_tower/action-second_floor_lever.lua b/data-otservbr-global/scripts/quests/the_paradox_tower/action-second_floor_lever.lua index b1cd4018973..cf4754b4a13 100644 --- a/data-otservbr-global/scripts/quests/the_paradox_tower/action-second_floor_lever.lua +++ b/data-otservbr-global/scripts/quests/the_paradox_tower/action-second_floor_lever.lua @@ -4,7 +4,7 @@ local positions = { { x = 32478, y = 31900, z = 6 }, { x = 32479, y = 31900, z = 6 }, { x = 32480, y = 31900, z = 6 }, - { x = 32481, y = 31900, z = 6 } + { x = 32481, y = 31900, z = 6 }, } local secondFloorLever = Action() @@ -22,12 +22,7 @@ function secondFloorLever.onUse(creature, item, position, fromPosition) -- The stair is only created if all the jungles of the "position" variable (line 1) are growing again if item.itemid == 2772 then -- Checks if all levers glass are in the correct positions - if Position(positions[1]):hasItem(2773) - and Position(positions[2]):hasItem(2773) - and Position(positions[3]):hasItem(2772) - and Position(positions[4]):hasItem(2772) - and Position(positions[5]):hasItem(2773) - and Position(positions[6]):hasItem(2772) then + if Position(positions[1]):hasItem(2773) and Position(positions[2]):hasItem(2773) and Position(positions[3]):hasItem(2772) and Position(positions[4]):hasItem(2772) and Position(positions[5]):hasItem(2773) and Position(positions[6]):hasItem(2772) then -- If all the jungles are growing again, then he turns the stone on the stairs Position(stairPosition):createItem(stairId) item:transform(2773) diff --git a/data-otservbr-global/scripts/quests/the_paradox_tower/action-third_floor_lever.lua b/data-otservbr-global/scripts/quests/the_paradox_tower/action-third_floor_lever.lua index 4a341383881..ffe508122ee 100644 --- a/data-otservbr-global/scripts/quests/the_paradox_tower/action-third_floor_lever.lua +++ b/data-otservbr-global/scripts/quests/the_paradox_tower/action-third_floor_lever.lua @@ -10,16 +10,14 @@ function thirdFloorLever.onUse(creature, item, position, fromPosition) -- The stair is only created if all the jungles of the "position" variable (line 1) are growing again if item.itemid == 9125 then -- Checks if all levers glass are in the correct positions - addEvent( - function() - Game.createMonster("ghoul", { x = 32479, y = 31900, z = 5 }) - end, 2000) + addEvent(function() + Game.createMonster("ghoul", { x = 32479, y = 31900, z = 5 }) + end, 2000) item:transform(9126) - addEvent( - function() - Position.hasCreatureInArea({ x = 32476, y = 31900, z = 5 }, { x = 32481, y = 31901, z = 5 }, true, false) - item:transform(9125) - end, 100000) + addEvent(function() + Position.hasCreatureInArea({ x = 32476, y = 31900, z = 5 }, { x = 32481, y = 31901, z = 5 }, true, false) + item:transform(9125) + end, 100000) elseif item.itemid == 9126 then player:sendCancelMessage(RETURNVALUE_CANNOTUSETHISOBJECT) end diff --git a/data-otservbr-global/scripts/quests/the_paradox_tower/movement-first_floor_stair.lua b/data-otservbr-global/scripts/quests/the_paradox_tower/movement-first_floor_stair.lua index ce3b7faffa2..8ce5efa9a71 100644 --- a/data-otservbr-global/scripts/quests/the_paradox_tower/movement-first_floor_stair.lua +++ b/data-otservbr-global/scripts/quests/the_paradox_tower/movement-first_floor_stair.lua @@ -24,12 +24,7 @@ function firstFloorStair.onStepIn(creature, item, position, fromPosition) -- The stair is only created if all the jungles of the "position" variable (line 1) are growing again if item.uid == 25013 then -- Checks if all jungle glass are in the positions - if Position(positions[1]):hasItem(jungleGrassId) - and Position(positions[2]):hasItem(jungleGrassId) - and Position(positions[3]):hasItem(jungleGrassId) - and Position(positions[4]):hasItem(jungleGrassId) - and Position(positions[5]):hasItem(jungleGrassId) - and Position(positions[6]):hasItem(jungleGrassId) then + if Position(positions[1]):hasItem(jungleGrassId) and Position(positions[2]):hasItem(jungleGrassId) and Position(positions[3]):hasItem(jungleGrassId) and Position(positions[4]):hasItem(jungleGrassId) and Position(positions[5]):hasItem(jungleGrassId) and Position(positions[6]):hasItem(jungleGrassId) then -- If all the jungles are growing again, then he turns the stone on the stairs Position(stairPosition):transformItem(stoneId, stairId, CONST_ME_POFF) end diff --git a/data-otservbr-global/scripts/quests/the_paradox_tower/movement-last_floor_reward.lua b/data-otservbr-global/scripts/quests/the_paradox_tower/movement-last_floor_reward.lua index d8f06ffc67c..f3499251b63 100644 --- a/data-otservbr-global/scripts/quests/the_paradox_tower/movement-last_floor_reward.lua +++ b/data-otservbr-global/scripts/quests/the_paradox_tower/movement-last_floor_reward.lua @@ -1,20 +1,20 @@ local setting = { [50308] = { position = { x = 32477, y = 31900, z = 1 }, - storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Egg + storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Egg, }, [50309] = { position = { x = 32478, y = 31900, z = 1 }, - storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Gold + storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Gold, }, [50310] = { position = { x = 32479, y = 31900, z = 1 }, - storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Talon + storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Talon, }, [50311] = { position = { x = 32480, y = 31900, z = 1 }, - storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Wand - } + storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Wand, + }, } local lastFloorReward = MoveEvent() diff --git a/data-otservbr-global/scripts/quests/the_paradox_tower/movement-poison.lua b/data-otservbr-global/scripts/quests/the_paradox_tower/movement-poison.lua index 90ef369559d..565762fa480 100644 --- a/data-otservbr-global/scripts/quests/the_paradox_tower/movement-poison.lua +++ b/data-otservbr-global/scripts/quests/the_paradox_tower/movement-poison.lua @@ -4,7 +4,7 @@ local positions = { { x = 32498, y = 31890, z = 7 }, { x = 32499, y = 31890, z = 7 }, { x = 32502, y = 31890, z = 7 }, - { x = 32494, y = 31888, z = 7 } + { x = 32494, y = 31888, z = 7 }, } local poison = MoveEvent() diff --git a/data-otservbr-global/scripts/quests/the_paradox_tower/movement-sacrifice_skulls.lua b/data-otservbr-global/scripts/quests/the_paradox_tower/movement-sacrifice_skulls.lua index 3cdbab9744d..c351bde5c46 100644 --- a/data-otservbr-global/scripts/quests/the_paradox_tower/movement-sacrifice_skulls.lua +++ b/data-otservbr-global/scripts/quests/the_paradox_tower/movement-sacrifice_skulls.lua @@ -2,7 +2,7 @@ local positions = { { x = 32563, y = 31957, z = 1 }, { x = 32565, y = 31957, z = 1 }, { x = 32567, y = 31957, z = 1 }, - { x = 32569, y = 31957, z = 1 } + { x = 32569, y = 31957, z = 1 }, } local sacrificeSkulls = MoveEvent() diff --git a/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-1-first_seal_flame.lua b/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-1-first_seal_flame.lua index 14d13a13d92..4f6f6fb85b1 100644 --- a/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-1-first_seal_flame.lua +++ b/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-1-first_seal_flame.lua @@ -11,9 +11,9 @@ function firstSealFlame.onStepIn(creature, item, position, fromPosition) player:setStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.FirstSealDoor, 1) player:teleportTo({ x = 32266, y = 31849, z = 15 }) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - Game.createMonster('ghost', Position(32276, 31902, 13), false, true) - Game.createMonster('ghost', Position(32274, 31902, 13), false, true) - Game.createMonster('demon skeleton', Position(32276, 31904, 13), false, true) + Game.createMonster("ghost", Position(32276, 31902, 13), false, true) + Game.createMonster("ghost", Position(32274, 31902, 13), false, true) + Game.createMonster("demon skeleton", Position(32276, 31904, 13), false, true) else player:teleportTo(fromPosition, true) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-2-second_seal_pearl.lua b/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-2-second_seal_pearl.lua index 841b659cd77..a9d5b3071ae 100644 --- a/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-2-second_seal_pearl.lua +++ b/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-2-second_seal_pearl.lua @@ -21,7 +21,7 @@ function secondSealPearl.onStepIn(creature, item, position, fromPosition) return true end - pearlItems[#pearlItems+1] = pearlItem + pearlItems[#pearlItems + 1] = pearlItem end for i = 1, #pearlItems do diff --git a/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-3-third_seal_flame.lua b/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-3-third_seal_flame.lua index 12275390984..b24bed22e14 100644 --- a/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-3-third_seal_flame.lua +++ b/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-3-third_seal_flame.lua @@ -6,7 +6,7 @@ function thirdSealFlame.onStepIn(creature, item, position, fromPosition) return true end - if player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.ThirdSeal) >= 1 or Game.getStorageValue('switchNum') ~= 6 then + if player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.ThirdSeal) >= 1 or Game.getStorageValue("switchNum") ~= 6 then player:teleportTo(fromPosition) fromPosition:sendMagicEffect(CONST_ME_TELEPORT) return true @@ -24,7 +24,7 @@ function thirdSealFlame.onStepIn(creature, item, position, fromPosition) player:setStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.ThirdSeal, 1) player:setStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.ThirdSealDoor, 1) - Game.setStorageValue('switchNum', 1) + Game.setStorageValue("switchNum", 1) player:teleportTo({ x = 32271, y = 31857, z = 15 }) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true diff --git a/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-3-third_seal_warlock_tile.lua b/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-3-third_seal_warlock_tile.lua index 44c6afd1996..57d7e27288c 100644 --- a/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-3-third_seal_warlock_tile.lua +++ b/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-3-third_seal_warlock_tile.lua @@ -9,8 +9,8 @@ function thirdSealWarlockTile.onStepIn(creature, item, position, fromPosition) if player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.ThirdSealWarlocks) < 1 then player:setStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.ThirdSealWarlocks, 1) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) - Game.createMonster('Warlock', { x = 32215, y = 31835, z = 15 }, false, true) - Game.createMonster('Warlock', { x = 32215, y = 31840, z = 15 }, false, true) + Game.createMonster("Warlock", { x = 32215, y = 31835, z = 15 }, false, true) + Game.createMonster("Warlock", { x = 32215, y = 31840, z = 15 }, false, true) end return true end diff --git a/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-5-fifth_seal_flame.lua b/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-5-fifth_seal_flame.lua index 022a9e003ff..425e93953e7 100644 --- a/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-5-fifth_seal_flame.lua +++ b/data-otservbr-global/scripts/quests/the_queen_of_the_banshees/movement-5-fifth_seal_flame.lua @@ -6,8 +6,7 @@ function fifthSealFlame.onStepIn(creature, item, position, fromPosition) return true end - if player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.FifthSeal) ~= 1 - and player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.FifthSealTile) == 9 then + if player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.FifthSeal) ~= 1 and player:getStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.FifthSealTile) == 9 then player:setStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.FifthSealTile, 1) player:setStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.FifthSeal, 1) player:setStorageValue(Storage.Quest.U7_2.TheQueenOfTheBanshees.FifthSealDoor, 1) diff --git a/data-otservbr-global/scripts/quests/the_rookie_guard/mission02_defence.lua b/data-otservbr-global/scripts/quests/the_rookie_guard/mission02_defence.lua index 9bca8057ff0..3e26e05e295 100644 --- a/data-otservbr-global/scripts/quests/the_rookie_guard/mission02_defence.lua +++ b/data-otservbr-global/scripts/quests/the_rookie_guard/mission02_defence.lua @@ -4,33 +4,33 @@ local CATAPULT_ID = { BAR = 1, ACADEMY_1 = 2, ACADEMY_2 = 4, - SHOP = 8 + SHOP = 8, } local missionTiles = { [50313] = { states = { 1 }, message = "This is the house Vascalir mentioned. You should find a stone pile in the cellar. Use it to get a stone!", - arrowPosition = { x = 32082, y = 32189, z = 7 } + arrowPosition = { x = 32082, y = 32189, z = 7 }, }, [50314] = { states = { 2, 3 }, message = "This is Norma's bar. If you go to the roof, you should find one of the catapults that need to be filled with stones.", arrowPosition = { x = 32097, y = 32184, z = 7 }, - catapults = { CATAPULT_ID.BAR } + catapults = { CATAPULT_ID.BAR }, }, [50315] = { states = { 2, 3 }, message = "These stairs lead up to the roof of the academy. Up there you should find TWO of the catapults.", arrowPosition = { x = 32098, y = 32190, z = 7 }, - catapults = { CATAPULT_ID.ACADEMY_1, CATAPULT_ID.ACADEMY_2 } + catapults = { CATAPULT_ID.ACADEMY_1, CATAPULT_ID.ACADEMY_2 }, }, [50316] = { states = { 2, 3 }, message = "This is Obi's shop. Up on his roof you should find one of the catapults Vascalir mentioned.", arrowPosition = { x = 32104, y = 32205, z = 7 }, - catapults = { CATAPULT_ID.SHOP } - } + catapults = { CATAPULT_ID.SHOP }, + }, } -- Mission tutorial tiles @@ -112,7 +112,7 @@ local catapults = { [40006] = CATAPULT_ID.BAR, [40007] = CATAPULT_ID.ACADEMY_1, [40008] = CATAPULT_ID.ACADEMY_2, - [40009] = CATAPULT_ID.SHOP + [40009] = CATAPULT_ID.SHOP, } -- Heavy stone (load stone on catapult) diff --git a/data-otservbr-global/scripts/quests/the_rookie_guard/mission04_home_brewed.lua b/data-otservbr-global/scripts/quests/the_rookie_guard/mission04_home_brewed.lua index b95771a4d57..62646d27d03 100644 --- a/data-otservbr-global/scripts/quests/the_rookie_guard/mission04_home_brewed.lua +++ b/data-otservbr-global/scripts/quests/the_rookie_guard/mission04_home_brewed.lua @@ -4,22 +4,22 @@ local missionTiles = { [50317] = { states = 1, message = "This is not the way to Lily. Follow the road leading to the south-west to find her shop.", - arrowPosition = { x = 32090, y = 32201, z = 7 } + arrowPosition = { x = 32090, y = 32201, z = 7 }, }, [50318] = { states = 2, message = "This is not the way to Hyacinth. Follow the path to the north exit of the village.", - arrowPosition = { x = 32090, y = 32190, z = 7 } + arrowPosition = { x = 32090, y = 32190, z = 7 }, }, [50320] = { states = 2, message = "This is not the way to Hyacinth. Follow the path to the east to find Hyacinth's little house.", - arrowPosition = { x = 32092, y = 32164, z = 7 } + arrowPosition = { x = 32092, y = 32164, z = 7 }, }, [50322] = { states = 2, - message = "This is not the way to Hyacinth. Stay on the path a little more to the north to find Hyacinth's little house." - } + message = "This is not the way to Hyacinth. Stay on the path a little more to the north to find Hyacinth's little house.", + }, } -- Mission tutorial tiles diff --git a/data-otservbr-global/scripts/quests/the_rookie_guard/mission05_web_terror.lua b/data-otservbr-global/scripts/quests/the_rookie_guard/mission05_web_terror.lua index 30670f736b0..94ebd98f9e5 100644 --- a/data-otservbr-global/scripts/quests/the_rookie_guard/mission05_web_terror.lua +++ b/data-otservbr-global/scripts/quests/the_rookie_guard/mission05_web_terror.lua @@ -4,24 +4,24 @@ local missionTiles = { [50324] = { states = { 1 }, message = "This is not the way to the tarantula's lair. Head up the little ramp to the southwest.", - arrowPosition = { x = 32090, y = 32147, z = 7 } + arrowPosition = { x = 32090, y = 32147, z = 7 }, }, [50326] = { states = { 1 }, message = "Follow the small path to the north to reach the spider lair.", - arrowPosition = { x = 32067, y = 32132, z = 7 } + arrowPosition = { x = 32067, y = 32132, z = 7 }, }, [50327] = { states = { 1 }, message = "Walk to the west from here to reach the hole leading to the tarantula lair.", - arrowPosition = { x = 32051, y = 32110, z = 7 } + arrowPosition = { x = 32051, y = 32110, z = 7 }, }, [50328] = { states = { 1, 2, 4 }, message = "Remember that you have to aquire a web sample for Vascalir. You should not leave this cave without it.", arrowPosition = { x = 32003, y = 32109, z = 11 }, - walkBack = true - } + walkBack = true, + }, } -- Mission tutorial tiles diff --git a/data-otservbr-global/scripts/quests/the_rookie_guard/mission06_run_like_wolf.lua b/data-otservbr-global/scripts/quests/the_rookie_guard/mission06_run_like_wolf.lua index 7bdc475605f..16fc3171ce2 100644 --- a/data-otservbr-global/scripts/quests/the_rookie_guard/mission06_run_like_wolf.lua +++ b/data-otservbr-global/scripts/quests/the_rookie_guard/mission06_run_like_wolf.lua @@ -4,25 +4,25 @@ local missionTiles = { [50329] = { state = 2, message = "Follow the north-eastern path into the forest. Beware of wolves!", - arrowPosition = { x = 32109, y = 32166, z = 7 } + arrowPosition = { x = 32109, y = 32166, z = 7 }, }, [50330] = { state = 2, - message = "This is not the way into the wolf forest. Stay on the southern path leading to the north-east!" + message = "This is not the way into the wolf forest. Stay on the southern path leading to the north-east!", }, [50331] = { state = 2, - message = "This is not the way into the wolf forest. Stay on the southern path leading to the north-east!" + message = "This is not the way into the wolf forest. Stay on the southern path leading to the north-east!", }, [50332] = { state = 2, message = "This hole leads into the wolves' den. Only enter if you have full health and food - this might be dangerous.", - arrowPosition = { x = 32138, y = 32132, z = 7 } + arrowPosition = { x = 32138, y = 32132, z = 7 }, }, [50333] = { state = 3, - message = "It seems plans changed. It's up to you now to find a dead war wolf and use the skinning knife on it to get some leather." - } + message = "It seems plans changed. It's up to you now to find a dead war wolf and use the skinning knife on it to get some leather.", + }, } -- Mission tutorial tiles @@ -83,18 +83,18 @@ local specialMissionTiles = { state = 2, message = "Well.. that seems to be the poacher. Dead. Check his body - maybe he still has something that you can use.", arrowPosition = { x = 32135, y = 32133, z = 8 }, - newState = 3 + newState = 3, }, [25026] = { state = 3, message = "There is a dead war wolf! Use the knife, and then use it on its body to get some leather - but quickly!", - arrowPosition = { x = 32108, y = 32132, z = 11 } + arrowPosition = { x = 32108, y = 32132, z = 11 }, }, [25027] = { state = 5, message = "You reached the exit in time! Phew.. back to Tom.", - newState = 6 - } + newState = 6, + }, } -- War wolf den special tiles diff --git a/data-otservbr-global/scripts/quests/the_rookie_guard/mission07_attack.lua b/data-otservbr-global/scripts/quests/the_rookie_guard/mission07_attack.lua index 13e05fc41b0..893691e7392 100644 --- a/data-otservbr-global/scripts/quests/the_rookie_guard/mission07_attack.lua +++ b/data-otservbr-global/scripts/quests/the_rookie_guard/mission07_attack.lua @@ -3,19 +3,19 @@ local missionTiles = { [50337] = { message = "Go down the stairs to reach the vault. It smells like fire down there. Make sure you are healthy!", - arrowPosition = { x = 32089, y = 32154, z = 9 } + arrowPosition = { x = 32089, y = 32154, z = 9 }, }, [50338] = { - message = "The vault is on fire! There is almost no air in here. You don't have much time to find the book. Hurry!" + message = "The vault is on fire! There is almost no air in here. You don't have much time to find the book. Hurry!", }, [50340] = { message = "This must be the chest with the book - but it's covered in flames!", - arrowPosition = { x = 32083, y = 32141, z = 10 } + arrowPosition = { x = 32083, y = 32141, z = 10 }, }, [50341] = { message = "Right-click on the grey rune on the table and then left-click on the fire! You can't take the rune, but it works.", - arrowPosition = { x = 32082, y = 32143, z = 10 } - } + arrowPosition = { x = 32082, y = 32143, z = 10 }, + }, } -- Mission tutorial tiles diff --git a/data-otservbr-global/scripts/quests/the_rookie_guard/mission09_rock_troll.lua b/data-otservbr-global/scripts/quests/the_rookie_guard/mission09_rock_troll.lua index 5bb61e9c1e6..7431dab83d7 100644 --- a/data-otservbr-global/scripts/quests/the_rookie_guard/mission09_rock_troll.lua +++ b/data-otservbr-global/scripts/quests/the_rookie_guard/mission09_rock_troll.lua @@ -4,24 +4,24 @@ local missionTiles = { [50342] = { state = 1, message = "This is not the way to the troll caves. Go back down the stairs and walk north to find them.", - arrowPosition = { x = 32089, y = 32147, z = 6 } + arrowPosition = { x = 32089, y = 32147, z = 6 }, }, [50343] = { state = 1, message = "This is not the way to the troll caves. Go back down the stairs and walk north to find them.", - arrowPosition = { x = 32094, y = 32137, z = 7 } + arrowPosition = { x = 32094, y = 32137, z = 7 }, }, [50344] = { state = 1, newState = 2, message = "You've reached the newly dug troll tunnel. Take what you find in this chest and use it to bring down all support beams!", - arrowPosition = { x = 32059, y = 32132, z = 10 } + arrowPosition = { x = 32059, y = 32132, z = 10 }, }, [50345] = { state = 7, newState = 8, - message = "You hear a crumbling below you. The tunnel collapsed. Vascalir will be pleased to hear about that." - } + message = "You hear a crumbling below you. The tunnel collapsed. Vascalir will be pleased to hear about that.", + }, } -- Mission tutorial tiles @@ -87,18 +87,18 @@ tunnelHole:register() local CHEST_ID = { LEATHER_LEGS = 1, - PICK = 2 + PICK = 2, } local chests = { [40048] = { id = CHEST_ID.LEATHER_LEGS, - itemId = 3559 + itemId = 3559, }, [40049] = { id = CHEST_ID.PICK, - itemId = 3456 - } + itemId = 3456, + }, } local trunkChest = Action() @@ -135,7 +135,7 @@ local PILLAR_ID = { BOTTOM_LEFT = 2, TOP_LEFT = 4, TOP_CENTER = 8, - TOP_RIGHT = 16 + TOP_RIGHT = 16, } local tunnelPillars = { @@ -143,7 +143,7 @@ local tunnelPillars = { [40051] = PILLAR_ID.BOTTOM_LEFT, [40052] = PILLAR_ID.TOP_LEFT, [40053] = PILLAR_ID.TOP_CENTER, - [40054] = PILLAR_ID.TOP_RIGHT + [40054] = PILLAR_ID.TOP_RIGHT, } -- /data/scripts/lib/register_actions.lua (onUsePick) diff --git a/data-otservbr-global/scripts/quests/the_rookie_guard/mission10_tomb_raiding.lua b/data-otservbr-global/scripts/quests/the_rookie_guard/mission10_tomb_raiding.lua index 9c8db8768e1..a9f54ec1ec0 100644 --- a/data-otservbr-global/scripts/quests/the_rookie_guard/mission10_tomb_raiding.lua +++ b/data-otservbr-global/scripts/quests/the_rookie_guard/mission10_tomb_raiding.lua @@ -5,35 +5,35 @@ local missionTiles = { { sarcophagus = -1, message = "This is not the way to the crypt. Go south-west to reach the graveyard.", - arrowPosition = { x = 32124, y = 32177, z = 7 } - } + arrowPosition = { x = 32124, y = 32177, z = 7 }, + }, }, [50347] = { { sarcophagus = -1, message = "This is the crypt Vascalir was talking about. Explore it and search the coffins - one of them must hold a nice fleshy bone.", - arrowPosition = { x = 32131, y = 32201, z = 7 } - } + arrowPosition = { x = 32131, y = 32201, z = 7 }, + }, }, [50348] = { { sarcophagus = -1, message = "This door seems to lead deeper into the crypt. Go downstairs and look for a special coffin. Beware of the walking dead!", - arrowPosition = { x = 32147, y = 32185, z = 9 } - } + arrowPosition = { x = 32147, y = 32185, z = 9 }, + }, }, [50349] = { { sarcophagus = -1, message = "This sarcophagus seems special. Sarcophagi are said to conserve meat longer than normal coffins - maybe you get lucky.", - arrowPosition = { x = 32145, y = 32204, z = 10 } + arrowPosition = { x = 32145, y = 32204, z = 10 }, }, { sarcophagus = 1, message = "Now that you have a fleshy bone, it's time to find out what Vascalir wanted with it.", - arrowPosition = { x = 32136, y = 32202, z = 10 } - } - } + arrowPosition = { x = 32136, y = 32202, z = 10 }, + }, + }, } -- Mission tutorial tiles @@ -105,7 +105,7 @@ sarcophagus:register() local CHEST_ID = { BOX = 1, - COFFIN = 2 + COFFIN = 2, } local chests = { @@ -113,16 +113,16 @@ local chests = { id = CHEST_ID.BOX, item = { id = 3725, - amount = 5 - } + amount = 5, + }, }, [40078] = { id = CHEST_ID.COFFIN, item = { id = 7876, - amount = 1 - } - } + amount = 1, + }, + }, } local unholyCryptChests = Action() diff --git a/data-otservbr-global/scripts/quests/the_rookie_guard/mission11_sweet_poison.lua b/data-otservbr-global/scripts/quests/the_rookie_guard/mission11_sweet_poison.lua index 57d8f9ad445..a51d600bcb2 100644 --- a/data-otservbr-global/scripts/quests/the_rookie_guard/mission11_sweet_poison.lua +++ b/data-otservbr-global/scripts/quests/the_rookie_guard/mission11_sweet_poison.lua @@ -4,13 +4,13 @@ local missionTiles = { [50350] = { state = 1, message = "Cross the bridge to the west and go south to reach the wasps' nest.", - arrowPosition = { x = 32090, y = 32147, z = 7 } + arrowPosition = { x = 32090, y = 32147, z = 7 }, }, [50353] = { state = 1, newState = 2, - message = "You've found the wasp tower. Kill a wasp and use the flask you got from Vascalir on its corpse to retrieve some of its poison." - } + message = "You've found the wasp tower. Kill a wasp and use the flask you got from Vascalir on its corpse to retrieve some of its poison.", + }, } -- Mission tutorial tiles diff --git a/data-otservbr-global/scripts/quests/the_rookie_guard/mission12_into_fortress.lua b/data-otservbr-global/scripts/quests/the_rookie_guard/mission12_into_fortress.lua index e89e2001339..9c4a8f55a27 100644 --- a/data-otservbr-global/scripts/quests/the_rookie_guard/mission12_into_fortress.lua +++ b/data-otservbr-global/scripts/quests/the_rookie_guard/mission12_into_fortress.lua @@ -6,26 +6,26 @@ local missionTiles = { states = { 1 }, extra = { storage = Storage.TheRookieGuard.AcademyChest, - state = -1 + state = -1, }, message = "This chest should contain everything you need to infiltrate the fortress.", - arrowPosition = { x = 32109, y = 32187, z = 8 } + arrowPosition = { x = 32109, y = 32187, z = 8 }, }, { states = { 1 }, extra = { storage = Storage.TheRookieGuard.AcademyChest, - state = 1 + state = 1, }, message = "Those items should be what you need to infiltrate the fortress. Go back near the wasps' nest and walk south from there.", - newState = 2 - } + newState = 2, + }, }, [50355] = { { states = { 2 }, - message = "This orc has turned his back to you and is obviously taking a break. Use the rolling pin on him to knock him out!" - } + message = "This orc has turned his back to you and is obviously taking a break. Use the rolling pin on him to knock him out!", + }, }, [50356] = { { @@ -34,7 +34,7 @@ local missionTiles = { return player:getOutfit().lookType ~= 5 end, message = "This guard will definitely not let you pass. Sneak around the fortress to find a way to disguise yourself.", - walkTo = { x = 1, y = 0, z = 0 } + walkTo = { x = 1, y = 0, z = 0 }, }, { states = { 4 }, @@ -43,14 +43,14 @@ local missionTiles = { end, message = "You sneaked into the orc fortress. Careful now, don't go outside again.", newState = 5, - walkTo = { x = -1, y = 0, z = 0 } - } + walkTo = { x = -1, y = 0, z = 0 }, + }, }, [50357] = { { states = { 5 }, - message = "You cannot hope to sneak past this guard. Maybe some distraction would help? You could try using the fleshy bone on him..." - } + message = "You cannot hope to sneak past this guard. Maybe some distraction would help? You could try using the fleshy bone on him...", + }, }, [50358] = { { @@ -59,41 +59,41 @@ local missionTiles = { return Tile(Position(31977, 32150, 7)):getItemById(12792) ~= nil end, message = "You cannot hope to sneak past this guard. Maybe some distraction would help? You could try using the fleshy bone on him...", - teleportTo = { x = 31977, y = 32155, z = 7 } - } + teleportTo = { x = 31977, y = 32155, z = 7 }, + }, }, [50359] = { { states = { 6 }, newState = 7, - message = "You've managed to reach the interior of the orc fortress. Be prepared for a fight - and look for the soup cauldron." - } + message = "You've managed to reach the interior of the orc fortress. Be prepared for a fight - and look for the soup cauldron.", + }, }, [50360] = { { states = { 7 }, - message = "You're apperently in the kitchen. If you find a big cauldron, use the flask of wasp poison on it." - } + message = "You're apperently in the kitchen. If you find a big cauldron, use the flask of wasp poison on it.", + }, }, [50361] = { { states = { 7 }, message = "You haven't used the poison on Kraknaknork's soup yet. Don't try to fight him before that - or he will definitely kill you.", - walkTo = { x = 0, y = -1, z = 0 } - } + walkTo = { x = 0, y = -1, z = 0 }, + }, }, [50362] = { { states = { 8 }, - message = "Got your tarantula trap ready? You might need to use it soon..." - } + message = "Got your tarantula trap ready? You might need to use it soon...", + }, }, [50363] = { { states = { 11 }, - message = "Beware... you're approaching Kraknaknork's room. Once you enter, you have only 5 minutes to kill him before he throws you out." - } - } + message = "Beware... you're approaching Kraknaknork's room. Once you enter, you have only 5 minutes to kill him before he throws you out.", + }, + }, } -- Mission tutorial tiles @@ -155,8 +155,8 @@ local reward = { 12788, 12789, 12784, - 12674 - } + 12674, + }, } local treasureChest = Action() @@ -248,7 +248,7 @@ unconsciousOrc:register() local monstersList = { { name = "Running Elite Orc Guard", amount = 1 }, - { name = "Wild Dog", amount = 8 } + { name = "Wild Dog", amount = 8 }, } local monsters = {} @@ -288,7 +288,7 @@ function fleshyBone.onUse(player, item, frompos, itemEx, topos) spawnPosition.y = spawnPosition.y + 2 end for j = 1, monstersList[i].amount do - monsters[#monsters+1] = Game.createMonster(monstersList[i].name, spawnPosition) + monsters[#monsters + 1] = Game.createMonster(monstersList[i].name, spawnPosition) end end position:sendMagicEffect(CONST_ME_TELEPORT) @@ -387,28 +387,28 @@ local energyBarriers = { [40058] = { position = { x = 31974, y = 32174, z = 10 }, teleportTo = { x = 31977, y = 32174, z = 10 }, - message = "Kraknaknork maintains strong energy barriers. There is only one way to disable them." + message = "Kraknaknork maintains strong energy barriers. There is only one way to disable them.", }, [40059] = { position = { x = 31962, y = 32174, z = 10 }, - teleportTo = { x = 31964, y = 32174, z = 10 } + teleportTo = { x = 31964, y = 32174, z = 10 }, }, [40060] = { position = { x = 31960, y = 32184, z = 10 }, - teleportTo = { x = 31958, y = 32184, z = 10 } + teleportTo = { x = 31958, y = 32184, z = 10 }, }, [40061] = { position = { x = 31953, y = 32187, z = 10 }, - teleportTo = { x = 31955, y = 32187, z = 10 } + teleportTo = { x = 31955, y = 32187, z = 10 }, }, [40062] = { position = { x = 31972, y = 32183, z = 10 }, - teleportTo = { x = 31970, y = 32183, z = 10 } + teleportTo = { x = 31970, y = 32183, z = 10 }, }, [40063] = { position = { x = 31952, y = 32174, z = 10 }, - teleportTo = { x = 31954, y = 32174, z = 10 } - } + teleportTo = { x = 31954, y = 32174, z = 10 }, + }, } local missionEnergyBarriers = MoveEvent() @@ -439,24 +439,24 @@ missionEnergyBarriers:register() local levers = { [40064] = { barrier = 40058, - message = "The energy barrier to the south temporarily disappeared." + message = "The energy barrier to the south temporarily disappeared.", }, [40065] = { - barrier = 40059 + barrier = 40059, }, [40066] = { - barrier = 40060 + barrier = 40060, }, [40067] = { - barrier = 40061 + barrier = 40061, }, [40068] = { - barrier = 40062 + barrier = 40062, }, [40069] = { barrier = 40063, - newState = 11 - } + newState = 11, + }, } local function energyBarrierRestore(barrierUID) @@ -503,7 +503,7 @@ missionLevers:register() local boss = { uid = nil, fight = nil, - roomCenter = { x = 31937, y = 32170, z = 10 } + roomCenter = { x = 31937, y = 32170, z = 10 }, } local function finishBossFight(playerUid, bossUid) @@ -646,7 +646,7 @@ enterTreasureRoomTeleport:register() local CHEST_ID = { LEFT = 1, - RIGHT = 2 + RIGHT = 2, } local chests = { @@ -654,16 +654,16 @@ local chests = { id = CHEST_ID.LEFT, item = { id = 3030, - amount = 1 - } + amount = 1, + }, }, [40074] = { id = CHEST_ID.RIGHT, item = { id = 3035, - amount = 2 - } - } + amount = 2, + }, + }, } local bossChests = Action() @@ -732,7 +732,7 @@ exitTreasureRoomTeleport:register() local CHEST_ID = { FORTRESS_TREASURE_CHEST = 1, FORTRESS_TRUNK = 2, - LAIR_TREASURE_CHEST = 4 + LAIR_TREASURE_CHEST = 4, } local chests = { @@ -740,23 +740,23 @@ local chests = { id = CHEST_ID.FORTRESS_TREASURE_CHEST, item = { id = 3606, - amount = 30 - } + amount = 30, + }, }, [40080] = { id = CHEST_ID.FORTRESS_TRUNK, item = { id = 7876, - amount = 2 - } + amount = 2, + }, }, [40081] = { id = CHEST_ID.LAIR_TREASURE_CHEST, item = { id = 7876, - amount = 1 - } - } + amount = 1, + }, + }, } local orcFortressChests = Action() diff --git a/data-otservbr-global/scripts/quests/the_rookie_guard/missions.lua b/data-otservbr-global/scripts/quests/the_rookie_guard/missions.lua index acf5be27b2e..0899d99529d 100644 --- a/data-otservbr-global/scripts/quests/the_rookie_guard/missions.lua +++ b/data-otservbr-global/scripts/quests/the_rookie_guard/missions.lua @@ -19,13 +19,13 @@ local missionTiles = { { mission = Storage.TheRookieGuard.Mission02, states = { 1, 2, 3, 4 }, - message = "This road is the main access of the village. You might want to finish your business here first." + message = "This road is the main access of the village. You might want to finish your business here first.", }, { mission = Storage.TheRookieGuard.Mission03, states = { 1 }, - message = "This road is the main access of the village. You might want to finish your business here first." - } + message = "This road is the main access of the village. You might want to finish your business here first.", + }, }, -- North bridge exit [50319] = { @@ -33,76 +33,76 @@ local missionTiles = { mission = Storage.TheRookieGuard.Mission04, states = { 2 }, message = "Follow the path to the east to find Hyacinth's little house.", - arrowPosition = { x = 32096, y = 32169, z = 7 } + arrowPosition = { x = 32096, y = 32169, z = 7 }, }, { mission = Storage.TheRookieGuard.Mission06, states = { 2 }, message = "Follow the path east, and when it splits, head north-east to find the wolf forest.", - arrowPosition = { x = 32094, y = 32169, z = 7 } + arrowPosition = { x = 32094, y = 32169, z = 7 }, }, { mission = Storage.TheRookieGuard.Mission09, states = { 1 }, message = "Follow the path to the north past the hill to reach the troll caves.", - arrowPosition = { x = 32091, y = 32166, z = 7 } + arrowPosition = { x = 32091, y = 32166, z = 7 }, }, { mission = Storage.TheRookieGuard.Mission10, states = { 1 }, extra = { storage = Storage.TheRookieGuard.Sarcophagus, - state = -1 + state = -1, }, message = "Follow the way to the east and go south to reach the graveyard.", - arrowPosition = { x = 32095, y = 32169, z = 7 } + arrowPosition = { x = 32095, y = 32169, z = 7 }, }, { mission = Storage.TheRookieGuard.Mission11, states = { 1 }, message = "To reach the wasps' nests follow the path to the north and cross the bridge to the west as if you wanted to reach the spiders.", - arrowPosition = { x = 32090, y = 32165, z = 7 } + arrowPosition = { x = 32090, y = 32165, z = 7 }, }, { mission = Storage.TheRookieGuard.Mission12, states = { 2 }, extra = { storage = Storage.TheRookieGuard.AcademyChest, - state = 1 + state = 1, }, message = "Follow the path to the north, cross the bridge to the south and walk west to reach the orc fortress.", - arrowPosition = { x = 32091, y = 32166, z = 7 } - } + arrowPosition = { x = 32091, y = 32166, z = 7 }, + }, }, [50321] = { { mission = Storage.TheRookieGuard.Mission04, states = { 2 }, - message = "This is not the way to Hyacinth. Stay on the path a little more to the south to find Hyacinth's little house." + message = "This is not the way to Hyacinth. Stay on the path a little more to the south to find Hyacinth's little house.", }, { mission = Storage.TheRookieGuard.Mission10, states = { 1 }, extra = { storage = Storage.TheRookieGuard.Sarcophagus, - state = -1 + state = -1, }, - message = "This is not the way to the crypt. Go south to reach the graveyard." - } + message = "This is not the way to the crypt. Go south to reach the graveyard.", + }, }, -- Outer east [50323] = { { mission = Storage.TheRookieGuard.Mission05, states = { 1 }, - message = "This is not the way to the tarantula's lair. Head northwest and go up the little ramp." + message = "This is not the way to the tarantula's lair. Head northwest and go up the little ramp.", }, { mission = Storage.TheRookieGuard.Mission09, states = { 1 }, message = "This is not the way to the troll caves. Follow the path to the north past the hill to reach them.", - arrowPosition = { x = 32091, y = 32166, z = 7 } - } + arrowPosition = { x = 32091, y = 32166, z = 7 }, + }, }, -- North-west drawbridge [50325] = { @@ -110,14 +110,14 @@ local missionTiles = { mission = Storage.TheRookieGuard.Mission05, states = { 1 }, message = "Walk to the north and down the stairs to reach the tarantula's lair.", - arrowPosition = { x = 32069, y = 32145, z = 6 } + arrowPosition = { x = 32069, y = 32145, z = 6 }, }, { mission = Storage.TheRookieGuard.Mission11, states = { 1 }, message = "Take the southern stairs down the bridge to go to the wasps' lair.", - arrowPosition = { x = 32068, y = 32149, z = 6 } - } + arrowPosition = { x = 32068, y = 32149, z = 6 }, + }, }, -- Academy entrance [50335] = { @@ -126,27 +126,27 @@ local missionTiles = { states = { 1 }, extra = { storage = Storage.TheRookieGuard.LibraryChest, - state = -1 + state = -1, }, message = "The library vault is below the academy. Go north and head down several stairs until you find a quest door.", - arrowPosition = { x = 32097, y = 32197, z = 7 } + arrowPosition = { x = 32097, y = 32197, z = 7 }, }, { mission = Storage.TheRookieGuard.Mission08, states = { 1 }, message = "The bank is below the academy. Go north and head down the stairs and to the right.", - arrowPosition = { x = 32097, y = 32197, z = 7 } + arrowPosition = { x = 32097, y = 32197, z = 7 }, }, { mission = Storage.TheRookieGuard.Mission12, states = { 1 }, extra = { storage = Storage.TheRookieGuard.AcademyChest, - state = -1 + state = -1, }, message = "You don't have the bag with the items yet. Open the door in the basement of the academy to the left of Paulie to get them!", - arrowPosition = { x = 32097, y = 32197, z = 7 } - } + arrowPosition = { x = 32097, y = 32197, z = 7 }, + }, }, -- Academy downstairs [50336] = { @@ -155,17 +155,17 @@ local missionTiles = { states = { 1 }, extra = { storage = Storage.TheRookieGuard.LibraryChest, - state = -1 + state = -1, }, message = "Head through the northern door and follow the hallways to find the library vault.", - arrowPosition = { x = 32095, y = 32188, z = 8 } + arrowPosition = { x = 32095, y = 32188, z = 8 }, }, { mission = Storage.TheRookieGuard.Mission08, states = { 1 }, message = "Go to the right to find the bank and talk to Paulie.", - arrowPosition = { x = 32100, y = 32191, z = 8 } - } + arrowPosition = { x = 32100, y = 32191, z = 8 }, + }, }, -- North-west drawbridge south downstairs [50351] = { @@ -173,18 +173,18 @@ local missionTiles = { mission = Storage.TheRookieGuard.Mission11, states = { 1 }, message = "Follow the path to the west to find the wasps' lair.", - arrowPosition = { x = 32063, y = 32159, z = 7 } + arrowPosition = { x = 32063, y = 32159, z = 7 }, }, { mission = Storage.TheRookieGuard.Mission12, states = { 2 }, extra = { storage = Storage.TheRookieGuard.AcademyChest, - state = 1 + state = 1, }, message = "Follow the path to the west to reach the orc fortress.", - arrowPosition = { x = 32063, y = 32159, z = 7 } - } + arrowPosition = { x = 32063, y = 32159, z = 7 }, + }, }, -- Orc land entrance [50352] = { @@ -192,18 +192,18 @@ local missionTiles = { mission = Storage.TheRookieGuard.Mission11, states = { 1 }, message = "This is not the way to the wasps' lair. Choose the northern path to reach it.", - arrowPosition = { x = 32003, y = 32148, z = 7 } + arrowPosition = { x = 32003, y = 32148, z = 7 }, }, { mission = Storage.TheRookieGuard.Mission12, states = { 2 }, extra = { storage = Storage.TheRookieGuard.AcademyChest, - state = 1 + state = 1, }, - message = "You're entering orcland." - } - } + message = "You're entering orcland.", + }, + }, } -- Missions tutorial tiles diff --git a/data-otservbr-global/scripts/quests/threatened_dreams/action-fairies_release.lua b/data-otservbr-global/scripts/quests/threatened_dreams/action-fairies_release.lua index 3df9ed85adb..9aa469b14a2 100644 --- a/data-otservbr-global/scripts/quests/threatened_dreams/action-fairies_release.lua +++ b/data-otservbr-global/scripts/quests/threatened_dreams/action-fairies_release.lua @@ -3,28 +3,28 @@ local config = { [40016] = { pos = Position(33576, 32185, 8), storage = ThreatenedDreams.Mission02.Fairy01, - message = "My tainted siblings locked me up in the dark far too long. Now I'm finally free! Thank you, mortal being!" + message = "My tainted siblings locked me up in the dark far too long. Now I'm finally free! Thank you, mortal being!", }, [40017] = { pos = Position(33621, 32214, 8), storage = ThreatenedDreams.Mission02.Fairy02, - message = "My tainted siblings locked me up in the dark far too long. Now I'm finally free! Thank you, mortal being!" + message = "My tainted siblings locked me up in the dark far too long. Now I'm finally free! Thank you, mortal being!", }, [40018] = { pos = Position(33559, 32203, 9), storage = ThreatenedDreams.Mission02.Fairy03, - message = "My tainted siblings locked me up in the dark far too long. Now I'm finally free! Thank you, mortal being!" + message = "My tainted siblings locked me up in the dark far too long. Now I'm finally free! Thank you, mortal being!", }, [40019] = { pos = Position(33505, 32286, 8), storage = ThreatenedDreams.Mission02.Fairy04, - message = "My tainted siblings locked me up in the dark far too long. Now I'm finally free! Thank you, mortal being!" + message = "My tainted siblings locked me up in the dark far too long. Now I'm finally free! Thank you, mortal being!", }, [40020] = { pos = Position(33440, 32217, 8), storage = ThreatenedDreams.Mission02.Fairy05, - message = "My tainted siblings locked me up in the dark far too long. Now I'm finally free! Thank you, mortal being!" - } + message = "My tainted siblings locked me up in the dark far too long. Now I'm finally free! Thank you, mortal being!", + }, } local function revertFairy(toPosition, item) @@ -42,8 +42,7 @@ function fairiesRelease.onUse(player, item, fromPosition, target, toPosition, is end local fairiesCounter = player:getStorageValue(ThreatenedDreams.Mission02.FairiesCounter) - if player:getStorageValue(ThreatenedDreams.Mission02[1]) == 3 - and fairiesCounter < 5 then + if player:getStorageValue(ThreatenedDreams.Mission02[1]) == 3 and fairiesCounter < 5 then if player:getStorageValue(fairy.storage) < 1 then item:transform(25797) addEvent(revertFairy, 30 * 1000, toPosition, 25797) diff --git a/data-otservbr-global/scripts/quests/threatened_dreams/action-moon_mirror.lua b/data-otservbr-global/scripts/quests/threatened_dreams/action-moon_mirror.lua index 9761d394d66..3dddc6e6d7c 100644 --- a/data-otservbr-global/scripts/quests/threatened_dreams/action-moon_mirror.lua +++ b/data-otservbr-global/scripts/quests/threatened_dreams/action-moon_mirror.lua @@ -5,7 +5,7 @@ local config = { toPos = Position(33527, 32215, 7), usablePeriod = "night", failMessage = "The moon is not shining. Wait for the night.", - successMessage = "The mirror is shining with the moonlight now." + successMessage = "The mirror is shining with the moonlight now.", }, [25730] = { targetPos = { @@ -13,13 +13,13 @@ local config = { Position(33511, 32320, 6), Position(33518, 32193, 7), Position(33549, 32219, 7), - Position(33597, 32182, 7) + Position(33597, 32182, 7), }, usablePeriod = "night", failMessage = "The moon has to be shining. Wait for the night. Wait for the night.", successMessage = { "As soon as you're touching the moon sculpture with the mirror the sculpture is infused with moonlight. The barrier strengthens.", - "As soon as you're touching the moon sculpture with the mirror the sculpture is infused with moonlight. This was the last sculpture." + "As soon as you're touching the moon sculpture with the mirror the sculpture is infused with moonlight. This was the last sculpture.", }, storageCounter = ThreatenedDreams.Mission02.ChargedMoonMirror, storagePos = { @@ -28,8 +28,8 @@ local config = { ThreatenedDreams.Mission02.MoonMirrorPos03, ThreatenedDreams.Mission02.MoonMirrorPos04, ThreatenedDreams.Mission02.MoonMirrorPos05, - } - } + }, + }, } local moonMirror = Action() @@ -48,8 +48,7 @@ function moonMirror.onUse(player, item, fromPosition, target, toPosition, isHotk return true end - if player:getStorageValue(ThreatenedDreams.Mission02[1]) ~= 6 - and player:getStorageValue(ThreatenedDreams.Mission02[1]) ~= 8 then + if player:getStorageValue(ThreatenedDreams.Mission02[1]) ~= 6 and player:getStorageValue(ThreatenedDreams.Mission02[1]) ~= 8 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, tool.failMessage) return true end @@ -61,14 +60,12 @@ function moonMirror.onUse(player, item, fromPosition, target, toPosition, isHotk item:transform(25975) end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, tool.successMessage) - iterateArea( - function(position) - local tile = Tile(position) - if tile then - position:sendMagicEffect(CONST_ME_THUNDER) - end - end, - tool.fromPos, tool.toPos) + iterateArea(function(position) + local tile = Tile(position) + if tile then + position:sendMagicEffect(CONST_ME_THUNDER) + end + end, tool.fromPos, tool.toPos) return true elseif item.itemid == 25730 then if tool.usablePeriod ~= currentPeriod then diff --git a/data-otservbr-global/scripts/quests/threatened_dreams/action-poacher_book.lua b/data-otservbr-global/scripts/quests/threatened_dreams/action-poacher_book.lua index d463215e0ec..fbbae97bb62 100644 --- a/data-otservbr-global/scripts/quests/threatened_dreams/action-poacher_book.lua +++ b/data-otservbr-global/scripts/quests/threatened_dreams/action-poacher_book.lua @@ -2,11 +2,11 @@ local ThreatenedDreams = Storage.Quest.U11_40.ThreatenedDreams local poacherBook = Action() function poacherBook.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if (player:getStorageValue(ThreatenedDreams.Mission01[1]) == 2) then - if (target.itemid == 12648 or target.itemid == 12649) then + if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 2 then + if target.itemid == 12648 or target.itemid == 12649 then target:decay() item:remove(1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You are placing the book on the table, hopefully the poachers will discover it soon.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are placing the book on the table, hopefully the poachers will discover it soon.") toPosition:sendMagicEffect(CONST_ME_BLOCKHIT) player:setStorageValue(ThreatenedDreams.Mission01[1], 3) return true diff --git a/data-otservbr-global/scripts/quests/threatened_dreams/action-poacher_notes.lua b/data-otservbr-global/scripts/quests/threatened_dreams/action-poacher_notes.lua index 612f49c5aa5..8cc4dbbdbb7 100644 --- a/data-otservbr-global/scripts/quests/threatened_dreams/action-poacher_notes.lua +++ b/data-otservbr-global/scripts/quests/threatened_dreams/action-poacher_notes.lua @@ -2,10 +2,9 @@ local ThreatenedDreams = Storage.Quest.U11_40.ThreatenedDreams local poacherNotes = Action() function poacherNotes.onUse(player, item, fromPosition, target, toPosition, isHotkey) - if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 7 - and player:getStorageValue(ThreatenedDreams.Mission01.PoacherNotes) < 1 then + if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 7 and player:getStorageValue(ThreatenedDreams.Mission01.PoacherNotes) < 1 then player:addItem(25242, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found notes of a poacher.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found notes of a poacher.") player:setStorageValue(ThreatenedDreams.Mission01.PoacherNotes, 1) else player:sendCancelMessage("It is empty.") diff --git a/data-otservbr-global/scripts/quests/threatened_dreams/action-starlight_vial.lua b/data-otservbr-global/scripts/quests/threatened_dreams/action-starlight_vial.lua index 713bffdb2db..6c5d9aaa6cb 100644 --- a/data-otservbr-global/scripts/quests/threatened_dreams/action-starlight_vial.lua +++ b/data-otservbr-global/scripts/quests/threatened_dreams/action-starlight_vial.lua @@ -5,7 +5,7 @@ local config = { toPos = Position(33532, 32303, 4), usablePeriod = "night", failMessage = "You are rubbing the opaque glass of the vial but nothing happens.", - successMessage = "The vial is glittering with starlight now." + successMessage = "The vial is glittering with starlight now.", }, [25732] = { targetPos = { @@ -13,13 +13,13 @@ local config = { Position(33458, 32299, 7), Position(33562, 32256, 7), Position(33541, 32244, 7), - Position(33529, 32187, 7) + Position(33529, 32187, 7), }, usablePeriod = "night", failMessage = "The stars has to be glittering in order to strengthen the barrier. Wait for the night. ", successMessage = { "As soon as you're pouring out the vial over the dreambird tree the plant is infused with starlight. The barrier strengthens.", - "As soon as you're pouring out the vial over the dreambird tree the plant is infused with starlight. This was the last tree." + "As soon as you're pouring out the vial over the dreambird tree the plant is infused with starlight. This was the last tree.", }, storageCounter = ThreatenedDreams.Mission02.ChargedStarlightVial, storagePos = { @@ -28,8 +28,8 @@ local config = { ThreatenedDreams.Mission02.StarlightPos03, ThreatenedDreams.Mission02.StarlightPos04, ThreatenedDreams.Mission02.StarlightPos05, - } - } + }, + }, } local starlightVial = Action() @@ -48,8 +48,7 @@ function starlightVial.onUse(player, item, fromPosition, target, toPosition, isH return true end - if player:getStorageValue(ThreatenedDreams.Mission02[1]) ~= 6 - and player:getStorageValue(ThreatenedDreams.Mission02[1]) ~= 8 then + if player:getStorageValue(ThreatenedDreams.Mission02[1]) ~= 6 and player:getStorageValue(ThreatenedDreams.Mission02[1]) ~= 8 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, tool.failMessage) return true end @@ -61,14 +60,12 @@ function starlightVial.onUse(player, item, fromPosition, target, toPosition, isH item:transform(25976) end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, tool.successMessage) - iterateArea( - function(position) - local tile = Tile(position) - if tile then - position:sendMagicEffect(CONST_ME_HITAREA) - end - end, - tool.fromPos, tool.toPos) + iterateArea(function(position) + local tile = Tile(position) + if tile then + position:sendMagicEffect(CONST_ME_HITAREA) + end + end, tool.fromPos, tool.toPos) return true elseif item.itemid == 25732 then if tool.usablePeriod ~= currentPeriod then diff --git a/data-otservbr-global/scripts/quests/threatened_dreams/action-sun_catcher.lua b/data-otservbr-global/scripts/quests/threatened_dreams/action-sun_catcher.lua index 3657c1f8103..bb1fe08993f 100644 --- a/data-otservbr-global/scripts/quests/threatened_dreams/action-sun_catcher.lua +++ b/data-otservbr-global/scripts/quests/threatened_dreams/action-sun_catcher.lua @@ -4,8 +4,8 @@ local config = { fromPos = Position(33508, 32163, 7), toPos = Position(33522, 32173, 7), usablePeriod = "day", - failMessage = "You are rubbing the gem in the sun catcher\'s centre but nothing happens.", - successMessage = "The sun catcher is shining with sunlight now." + failMessage = "You are rubbing the gem in the sun catcher's centre but nothing happens.", + successMessage = "The sun catcher is shining with sunlight now.", }, [25734] = { targetPos = { @@ -13,13 +13,13 @@ local config = { Position(33484, 32192, 7), Position(33546, 32155, 7), Position(33547, 32206, 7), - Position(33568, 32243, 7) + Position(33568, 32243, 7), }, usablePeriod = "day", failMessage = "The sun has to be shining in order to strengthen the barrier. Wait for the day.", successMessage = { "As soon as you're placing the sun catcher on the stone the pattern the mosaic is infused with sunlight. The barrier strengthens.", - "As soon as you're placing the sun catcher on the stone the pattern the mosaic is infused with sunlight. This was the last mosaic." + "As soon as you're placing the sun catcher on the stone the pattern the mosaic is infused with sunlight. This was the last mosaic.", }, storageCounter = ThreatenedDreams.Mission02.ChargedSunCatcher, storagePos = { @@ -28,8 +28,8 @@ local config = { ThreatenedDreams.Mission02.SunCatcherPos03, ThreatenedDreams.Mission02.SunCatcherPos04, ThreatenedDreams.Mission02.SunCatcherPos05, - } - } + }, + }, } local sunCatcher = Action() @@ -48,8 +48,7 @@ function sunCatcher.onUse(player, item, fromPosition, target, toPosition, isHotk return true end - if player:getStorageValue(ThreatenedDreams.Mission02[1]) ~= 6 - and player:getStorageValue(ThreatenedDreams.Mission02[1]) ~= 8 then + if player:getStorageValue(ThreatenedDreams.Mission02[1]) ~= 6 and player:getStorageValue(ThreatenedDreams.Mission02[1]) ~= 8 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, tool.failMessage) return true end @@ -61,14 +60,12 @@ function sunCatcher.onUse(player, item, fromPosition, target, toPosition, isHotk item:transform(25977) end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, tool.successMessage) - iterateArea( - function(position) - local tile = Tile(position) - if tile then - position:sendMagicEffect(CONST_ME_MAGIC_POWDER) - end - end, - tool.fromPos, tool.toPos) + iterateArea(function(position) + local tile = Tile(position) + if tile then + position:sendMagicEffect(CONST_ME_MAGIC_POWDER) + end + end, tool.fromPos, tool.toPos) return true elseif item.itemid == 25734 then if tool.usablePeriod ~= currentPeriod then diff --git a/data-otservbr-global/scripts/quests/threatened_dreams/action-whelp_fur.lua b/data-otservbr-global/scripts/quests/threatened_dreams/action-whelp_fur.lua index dfea9264855..2653215dcdc 100644 --- a/data-otservbr-global/scripts/quests/threatened_dreams/action-whelp_fur.lua +++ b/data-otservbr-global/scripts/quests/threatened_dreams/action-whelp_fur.lua @@ -10,7 +10,7 @@ function wolfFur.onUse(player, item, fromPosition, target, toPosition, isHotkey) target:decay() item:remove(1) toPosition:sendMagicEffect(CONST_ME_BLOCKHIT) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You place the whelp fur in the stone\'s mouth and thus lay it to rest.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You place the whelp fur in the stone's mouth and thus lay it to rest.") player:setStorageValue(ThreatenedDreams.Mission01[1], 9) end return true diff --git a/data-otservbr-global/scripts/quests/threatened_dreams/creaturescript-nightmare_monsters_kills.lua b/data-otservbr-global/scripts/quests/threatened_dreams/creaturescript-nightmare_monsters_kills.lua index a60ba3c5481..42aa18e5471 100644 --- a/data-otservbr-global/scripts/quests/threatened_dreams/creaturescript-nightmare_monsters_kills.lua +++ b/data-otservbr-global/scripts/quests/threatened_dreams/creaturescript-nightmare_monsters_kills.lua @@ -1,7 +1,7 @@ local nightmareMonsters = { "enfeebled silencer", "weakened frazzlemaw", - "kroazur" + "kroazur", } local ThreatenedDreams = Storage.Quest.U11_40.ThreatenedDreams diff --git a/data-otservbr-global/scripts/quests/threatened_dreams/event-raven_herb_bush.lua b/data-otservbr-global/scripts/quests/threatened_dreams/event-raven_herb_bush.lua index c8db61ba5b0..7f35b07170e 100644 --- a/data-otservbr-global/scripts/quests/threatened_dreams/event-raven_herb_bush.lua +++ b/data-otservbr-global/scripts/quests/threatened_dreams/event-raven_herb_bush.lua @@ -3,7 +3,7 @@ local periods = { [LIGHT_STATE_NIGHT] = "Night", [LIGHT_STATE_DAY] = "Day", [LIGHT_STATE_SUNRISE] = "Sunrise", - [LIGHT_STATE_SUNSET] = "Sunset" + [LIGHT_STATE_SUNSET] = "Sunset", } local config = { -- createByType day / night @@ -14,8 +14,8 @@ local config = { pos = Position(33497, 32196, 7), herbId = 5953, herbWeight = 1, - storage = ThreatenedDreams.Mission03.RavenHerbTimer - } + storage = ThreatenedDreams.Mission03.RavenHerbTimer, + }, } local createRavenHerb = GlobalEvent("createRavenHerb") @@ -24,8 +24,7 @@ function createRavenHerb.onPeriodChange(period, light) local time = getWorldTime() if configManager.getBoolean(configKeys.ALL_CONSOLE_LOG) then - logger.info("Starting {} Current light is {} and it's {} Tibian Time", - periods[period], light, getFormattedWorldTime(time)) + logger.info("Starting {} Current light is {} and it's {} Tibian Time", periods[period], light, getFormattedWorldTime(time)) end for index, item in pairs(config) do if item.createItem == period then -- Adding @@ -47,7 +46,6 @@ end createRavenHerb:register() - local ravenHerb = Action() function ravenHerb.onUse(player, item, fromPosition, target, toPosition, isHotkey) local herbConfig = config[1] @@ -59,8 +57,7 @@ function ravenHerb.onUse(player, item, fromPosition, target, toPosition, isHotke return true end if (player:getFreeCapacity() / 100) < herbConfig.herbWeight then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - message .. ". Weighing " .. herbConfig.herbWeight .. " oz, it is too heavy for you to carry.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, message .. ". Weighing " .. herbConfig.herbWeight .. " oz, it is too heavy for you to carry.") return true end diff --git a/data-otservbr-global/scripts/quests/threatened_dreams/movement-kroazur_room.lua b/data-otservbr-global/scripts/quests/threatened_dreams/movement-kroazur_room.lua index 93046851771..3d7253fbffd 100644 --- a/data-otservbr-global/scripts/quests/threatened_dreams/movement-kroazur_room.lua +++ b/data-otservbr-global/scripts/quests/threatened_dreams/movement-kroazur_room.lua @@ -1,7 +1,7 @@ local ThreatenedDreams = Storage.Quest.U11_40.ThreatenedDreams local config = { [25029] = { - bossName = 'Kroazur', -- boss name + bossName = "Kroazur", -- boss name bossPos = Position(33591, 32305, 10), -- Boss Position centerPos = Position(33591, 32305, 10), -- Boss Position newPos = Position(33591, 32315, 10), -- Where to teleport player when entering the room @@ -10,8 +10,8 @@ local config = { rangeY = 20, -- Range in Y time = 10, -- time in minutes to remove the player timer = ThreatenedDreams.Mission02.KroazurTimer, -- Timer to allow joing the room next time - access = ThreatenedDreams.Mission02.KroazurAccess -- Quest level to access the room - } + access = ThreatenedDreams.Mission02.KroazurAccess, -- Quest level to access the room + }, } local kroazurRoom = MoveEvent() @@ -38,7 +38,7 @@ function kroazurRoom.onStepIn(creature, item, position, fromPosition) position:sendMagicEffect(CONST_ME_TELEPORT) player:teleportTo(fromPosition, true) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:say('You don\'t have access to this room!', TALKTYPE_MONSTER_SAY) + player:say("You don't have access to this room!", TALKTYPE_MONSTER_SAY) return true end @@ -46,7 +46,7 @@ function kroazurRoom.onStepIn(creature, item, position, fromPosition) position:sendMagicEffect(CONST_ME_TELEPORT) player:teleportTo(fromPosition, true) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:say('You have to wait to challenge this enemy again!', TALKTYPE_MONSTER_SAY) + player:say("You have to wait to challenge this enemy again!", TALKTYPE_MONSTER_SAY) return true end @@ -54,7 +54,7 @@ function kroazurRoom.onStepIn(creature, item, position, fromPosition) position:sendMagicEffect(CONST_ME_TELEPORT) player:teleportTo(fromPosition, true) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:say('Someone is fighting against the boss! You need wait awhile.', TALKTYPE_MONSTER_SAY) + player:say("Someone is fighting against the boss! You need wait awhile.", TALKTYPE_MONSTER_SAY) return true end @@ -67,7 +67,7 @@ function kroazurRoom.onStepIn(creature, item, position, fromPosition) position:sendMagicEffect(CONST_ME_TELEPORT) player:teleportTo(room.newPos) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - player:say('You have ten minutes to kill and loot this boss, else you will lose that chance and will be kicked out.', TALKTYPE_MONSTER_SAY) + player:say("You have ten minutes to kill and loot this boss, else you will lose that chance and will be kicked out.", TALKTYPE_MONSTER_SAY) addEvent(clearBossRoom, 60 * room.time * 1000, player.uid, room.centerPos, room.rangeX, room.rangeY, room.exitPos) player:setStorageValue(room.timer, os.time() + 2 * 3600) return true diff --git a/data-otservbr-global/scripts/quests/threatened_dreams/movement-poacher_notes.lua b/data-otservbr-global/scripts/quests/threatened_dreams/movement-poacher_notes.lua index aad918a2d4e..e1c2196c2cc 100644 --- a/data-otservbr-global/scripts/quests/threatened_dreams/movement-poacher_notes.lua +++ b/data-otservbr-global/scripts/quests/threatened_dreams/movement-poacher_notes.lua @@ -7,7 +7,7 @@ function foundPoacherBody.onStepIn(creature, item, position, fromPosition) return false end if player:getStorageValue(ThreatenedDreams.Mission01[1]) == 6 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You discover a sleeping wolf and a gnawed skeleton in this tent. Could it be the one you are searching for?') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You discover a sleeping wolf and a gnawed skeleton in this tent. Could it be the one you are searching for?") player:setStorageValue(ThreatenedDreams.Mission01[1], 7) end return true diff --git a/data-otservbr-global/scripts/quests/threatened_dreams/movement-swan_feathers.lua b/data-otservbr-global/scripts/quests/threatened_dreams/movement-swan_feathers.lua index 778790baef4..13e8b5c1f2a 100644 --- a/data-otservbr-global/scripts/quests/threatened_dreams/movement-swan_feathers.lua +++ b/data-otservbr-global/scripts/quests/threatened_dreams/movement-swan_feathers.lua @@ -3,19 +3,24 @@ local ThreatenedDreams = Storage.Quest.U11_40.ThreatenedDreams local config = { [25024] = { message = "You found some more feathers on the grass near the wheat. Now you should have enough for an entire cloak.", -- Edron - storage = ThreatenedDreams.Mission01.Feathers1 }, + storage = ThreatenedDreams.Mission01.Feathers1, + }, [25025] = { message = "You found some beautiful swan feathers in the dustbin.", -- Darasha in City - storage = ThreatenedDreams.Mission01.Feathers2 }, + storage = ThreatenedDreams.Mission01.Feathers2, + }, [25026] = { message = "You found some beautiful swan feathers entangled in the cactus stings.", -- Darashia Nort of City - storage = ThreatenedDreams.Mission01.Feathers3 }, + storage = ThreatenedDreams.Mission01.Feathers3, + }, [25027] = { message = "You found some beautiful swan feathers beneath the dragon skull.", -- Darashia Nort + Far of City - storage = ThreatenedDreams.Mission01.Feathers4 }, + storage = ThreatenedDreams.Mission01.Feathers4, + }, [25028] = { message = "You found some more feaathers under the dead tree. Now you should have enough for an entire cloak.", -- Darashia Nort + Far of City - storage = ThreatenedDreams.Mission01.Feathers5 } + storage = ThreatenedDreams.Mission01.Feathers5, + }, } local swanFeathers = MoveEvent() diff --git a/data-otservbr-global/scripts/reward_chest/boss_death.lua b/data-otservbr-global/scripts/reward_chest/boss_death.lua index c2e56886715..6dfd48bdb14 100644 --- a/data-otservbr-global/scripts/reward_chest/boss_death.lua +++ b/data-otservbr-global/scripts/reward_chest/boss_death.lua @@ -1,7 +1,9 @@ local bossDeath = CreatureEvent("BossDeath") function bossDeath.onDeath(creature, corpse, killer, mostDamageKiller, lastHitUnjustified, mostDamageUnjustified) - if not corpse then return true end + if not corpse then + return true + end -- Deny summons and players if not creature or creature:isPlayer() or creature:getMaster() then return true @@ -54,7 +56,9 @@ function bossDeath.onDeath(creature, corpse, killer, mostDamageKiller, lastHitUn participants = participants + 1 end end - table.sort(scores, function(a, b) return a.score > b.score end) + table.sort(scores, function(a, b) + return a.score > b.score + end) local expectedScore = 1 / participants @@ -63,7 +67,7 @@ function bossDeath.onDeath(creature, corpse, killer, mostDamageKiller, lastHitUn if con.score ~= 0 then local reward, stamina, player if con.player then - player = con.player; + player = con.player else player = Game.getOfflinePlayer(con.guid) end diff --git a/data-otservbr-global/scripts/spells/attack/annihilation.lua b/data-otservbr-global/scripts/spells/attack/annihilation.lua index 0d3f4642690..5b9f7bc7f5b 100644 --- a/data-otservbr-global/scripts/spells/attack/annihilation.lua +++ b/data-otservbr-global/scripts/spells/attack/annihilation.lua @@ -8,7 +8,7 @@ combat:setParameter(COMBAT_PARAM_USECHARGES, 1) function onGetFormulaValues(player, skill, attack, factor) local skillTotal = skill * attack local levelTotal = player:getLevel() / 5 - return -(((skillTotal * 0.17) + 13) + (levelTotal)) * 1.28, -(((skillTotal * 0.20) + 34) + (levelTotal)) * 1.28 -- TODO : Use New Real Formula instead of an % + return -(((skillTotal * 0.17) + 13) + levelTotal) * 1.28, -(((skillTotal * 0.20) + 34) + levelTotal) * 1.28 -- TODO : Use New Real Formula instead of an % end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") diff --git a/data-otservbr-global/scripts/spells/attack/brutal_strike.lua b/data-otservbr-global/scripts/spells/attack/brutal_strike.lua index c297ffd36d9..e2e8033617a 100644 --- a/data-otservbr-global/scripts/spells/attack/brutal_strike.lua +++ b/data-otservbr-global/scripts/spells/attack/brutal_strike.lua @@ -8,7 +8,7 @@ combat:setParameter(COMBAT_PARAM_USECHARGES, 1) function onGetFormulaValues(player, skill, attack, factor) local skillTotal = skill * attack local levelTotal = player:getLevel() / 5 - return -(((skillTotal * 0.02) + 4) + (levelTotal)) * 1.28, -(((skillTotal * 0.04) + 9) + (levelTotal)) * 1.28 -- TODO : Use New Real Formula instead of an % + return -(((skillTotal * 0.02) + 4) + levelTotal) * 1.28, -(((skillTotal * 0.04) + 9) + levelTotal) * 1.28 -- TODO : Use New Real Formula instead of an % end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") diff --git a/data-otservbr-global/scripts/spells/attack/executioners_throw.lua b/data-otservbr-global/scripts/spells/attack/executioners_throw.lua index 4a1b082f46c..c63baac5f22 100644 --- a/data-otservbr-global/scripts/spells/attack/executioners_throw.lua +++ b/data-otservbr-global/scripts/spells/attack/executioners_throw.lua @@ -6,7 +6,7 @@ combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1) function onGetFormulaValues(player, skill, attack, factor) local skillTotal = skill * attack local levelTotal = player:getLevel() / 5 - return -(((skillTotal * 0.17) + 17) + (levelTotal)) * 1.28, -(((skillTotal * 0.20) + 40) + (levelTotal)) * 1.28 + return -(((skillTotal * 0.17) + 17) + levelTotal) * 1.28, -(((skillTotal * 0.20) + 40) + levelTotal) * 1.28 end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") diff --git a/data-otservbr-global/scripts/spells/attack/front_sweep.lua b/data-otservbr-global/scripts/spells/attack/front_sweep.lua index b2c1b9997f1..425cfa6e619 100644 --- a/data-otservbr-global/scripts/spells/attack/front_sweep.lua +++ b/data-otservbr-global/scripts/spells/attack/front_sweep.lua @@ -8,7 +8,7 @@ combat:setArea(createCombatArea(AREA_WAVE6, AREADIAGONAL_WAVE6)) function onGetFormulaValues(player, skill, attack, factor) local skillTotal = skill * attack local levelTotal = player:getLevel() / 5 - return -(((skillTotal * 0.04) + 31) + (levelTotal)) * 1.1, -(((skillTotal * 0.08) + 45) + (levelTotal)) * 1.1 -- TODO : Use New Real Formula instead of an % + return -(((skillTotal * 0.04) + 31) + levelTotal) * 1.1, -(((skillTotal * 0.08) + 45) + levelTotal) * 1.1 -- TODO : Use New Real Formula instead of an % end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") diff --git a/data-otservbr-global/scripts/spells/attack/great_death_beam.lua b/data-otservbr-global/scripts/spells/attack/great_death_beam.lua index d4484366229..7416dd726ed 100644 --- a/data-otservbr-global/scripts/spells/attack/great_death_beam.lua +++ b/data-otservbr-global/scripts/spells/attack/great_death_beam.lua @@ -43,7 +43,7 @@ function spell.onCastSpell(creature, var) if executed then local condition = Condition(CONDITION_SPELLCOOLDOWN, CONDITIONID_DEFAULT, 260) - local executedCooldown = cooldown[grade]; + local executedCooldown = cooldown[grade] if executedCooldown ~= nil then condition:setTicks((executedCooldown * 1000)) end diff --git a/data-otservbr-global/scripts/spells/attack/strong_ethereal_spear.lua b/data-otservbr-global/scripts/spells/attack/strong_ethereal_spear.lua index e2ef406ea28..bd2bf61e55f 100644 --- a/data-otservbr-global/scripts/spells/attack/strong_ethereal_spear.lua +++ b/data-otservbr-global/scripts/spells/attack/strong_ethereal_spear.lua @@ -6,7 +6,7 @@ combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1) function onGetFormulaValues(player, skill, attack, factor) local levelTotal = player:getLevel() / 5 - return -(((2 * skill + attack / 2500) * 2.30) + (levelTotal) + 7), -(((2 * skill + attack / 1875) * 3.30) + (levelTotal) + 13) + return -(((2 * skill + attack / 2500) * 2.30) + levelTotal + 7), -(((2 * skill + attack / 1875) * 3.30) + levelTotal + 13) end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") diff --git a/data-otservbr-global/scripts/spells/healing/cure_poison.lua b/data-otservbr-global/scripts/spells/healing/cure_poison.lua index 1b1870e1e6c..f8232ea9b76 100644 --- a/data-otservbr-global/scripts/spells/healing/cure_poison.lua +++ b/data-otservbr-global/scripts/spells/healing/cure_poison.lua @@ -12,8 +12,7 @@ end spell:name("Cure Poison") spell:words("exana pox") spell:group("healing") -spell:vocation("druid;true", "elder druid;true", "knight;true", "elite knight;true", "paladin;true", - "royal paladin;true", "sorcerer;true", "master sorcerer;true") +spell:vocation("druid;true", "elder druid;true", "knight;true", "elite knight;true", "paladin;true", "royal paladin;true", "sorcerer;true", "master sorcerer;true") spell:castSound(SOUND_EFFECT_TYPE_SPELL_CURE_POISON) spell:id(29) spell:cooldown(6000) diff --git a/data-otservbr-global/scripts/spells/healing/heal_monsters.lua b/data-otservbr-global/scripts/spells/healing/heal_monsters.lua index 3e15d298af8..476eb3a9e2b 100644 --- a/data-otservbr-global/scripts/spells/healing/heal_monsters.lua +++ b/data-otservbr-global/scripts/spells/healing/heal_monsters.lua @@ -2,8 +2,12 @@ function onTargetCreature(creature, target) local min = 100 local max = 300 - if target:isPlayer() then return true end - if target:getMaster() then return true end + if target:isPlayer() then + return true + end + if target:getMaster() then + return true + end doTargetCombatHealth(0, target, COMBAT_HEALING, min, max, CONST_ME_NONE) return true diff --git a/data-otservbr-global/scripts/spells/healing/heal_monsters_9x9.lua b/data-otservbr-global/scripts/spells/healing/heal_monsters_9x9.lua index ec5bbb26134..e8db55def9a 100644 --- a/data-otservbr-global/scripts/spells/healing/heal_monsters_9x9.lua +++ b/data-otservbr-global/scripts/spells/healing/heal_monsters_9x9.lua @@ -2,8 +2,12 @@ function onTargetCreature(creature, target) local min = 0 local max = 1000 - if target:isPlayer() then return true end - if target:getMaster() then return true end + if target:isPlayer() then + return true + end + if target:getMaster() then + return true + end doTargetCombatHealth(0, target, COMBAT_HEALING, min, max, CONST_ME_NONE) return true diff --git a/data-otservbr-global/scripts/spells/healing/intense_healing.lua b/data-otservbr-global/scripts/spells/healing/intense_healing.lua index 75b6591a974..8813c2daf52 100644 --- a/data-otservbr-global/scripts/spells/healing/intense_healing.lua +++ b/data-otservbr-global/scripts/spells/healing/intense_healing.lua @@ -21,8 +21,7 @@ end spell:name("Intense Healing") spell:words("exura gran") spell:group("healing") -spell:vocation("druid;true", "elder druid;true", "paladin;true", "royal paladin;true", "sorcerer;true", - "master sorcerer;true") +spell:vocation("druid;true", "elder druid;true", "paladin;true", "royal paladin;true", "sorcerer;true", "master sorcerer;true") spell:castSound(SOUND_EFFECT_TYPE_SPELL_INTENSE_HEALING) spell:id(2) spell:cooldown(1000) diff --git a/data-otservbr-global/scripts/spells/healing/magic_patch.lua b/data-otservbr-global/scripts/spells/healing/magic_patch.lua index 556990e8a19..478d12cf088 100644 --- a/data-otservbr-global/scripts/spells/healing/magic_patch.lua +++ b/data-otservbr-global/scripts/spells/healing/magic_patch.lua @@ -21,8 +21,7 @@ end spell:name("Magic Patch") spell:words("exura infir") spell:group("healing") -spell:vocation("druid;true", "elder druid;true", "paladin;true", "royal paladin;true", "sorcerer;true", - "master sorcerer;true") +spell:vocation("druid;true", "elder druid;true", "paladin;true", "royal paladin;true", "sorcerer;true", "master sorcerer;true") spell:castSound(SOUND_EFFECT_TYPE_SPELL_MAGIC_PATCH) spell:id(174) spell:cooldown(1 * 1000) diff --git a/data-otservbr-global/scripts/spells/monster/abyssador_poison_wave.lua b/data-otservbr-global/scripts/spells/monster/abyssador_poison_wave.lua index eab3ef6a630..ddccd38554c 100644 --- a/data-otservbr-global/scripts/spells/monster/abyssador_poison_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/abyssador_poison_wave.lua @@ -7,13 +7,12 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/arachnophobica_wavedice.lua b/data-otservbr-global/scripts/spells/monster/arachnophobica_wavedice.lua index 3af3ff6a638..24cfaf91474 100644 --- a/data-otservbr-global/scripts/spells/monster/arachnophobica_wavedice.lua +++ b/data-otservbr-global/scripts/spells/monster/arachnophobica_wavedice.lua @@ -5,7 +5,7 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_CRAPS) local area = createCombatArea({ { 1, 1, 1 }, { 0, 1, 0 }, - { 0, 3, 0 } + { 0, 3, 0 }, }) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/arachnophobica_waveenergy.lua b/data-otservbr-global/scripts/spells/monster/arachnophobica_waveenergy.lua index 18f74afd640..9de58619923 100644 --- a/data-otservbr-global/scripts/spells/monster/arachnophobica_waveenergy.lua +++ b/data-otservbr-global/scripts/spells/monster/arachnophobica_waveenergy.lua @@ -7,7 +7,7 @@ local area = createCombatArea({ { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 1, 0, 0 }, - { 0, 0, 3, 0, 0 } + { 0, 0, 3, 0, 0 }, }) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/ashfalor_summon.lua b/data-otservbr-global/scripts/spells/monster/ashfalor_summon.lua index 04bae5b3648..98f0ea4a707 100644 --- a/data-otservbr-global/scripts/spells/monster/ashfalor_summon.lua +++ b/data-otservbr-global/scripts/spells/monster/ashfalor_summon.lua @@ -17,7 +17,7 @@ local summons = { [16] = { name = "Souleater" }, [17] = { name = "Tarnished Spirit" }, [18] = { name = "White Shade" }, - [19] = { name = "Vicious Manbat" } + [19] = { name = "Vicious Manbat" }, } local combat = Combat() diff --git a/data-otservbr-global/scripts/spells/monster/askarak_wave.lua b/data-otservbr-global/scripts/spells/monster/askarak_wave.lua index c72a577b964..4db5a0c3224 100644 --- a/data-otservbr-global/scripts/spells/monster/askarak_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/askarak_wave.lua @@ -6,7 +6,7 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/betrayed_wraith_skill_reducer.lua b/data-otservbr-global/scripts/spells/monster/betrayed_wraith_skill_reducer.lua index 22169362bf7..1ecd4462458 100644 --- a/data-otservbr-global/scripts/spells/monster/betrayed_wraith_skill_reducer.lua +++ b/data-otservbr-global/scripts/spells/monster/betrayed_wraith_skill_reducer.lua @@ -16,7 +16,7 @@ for i = 1, 20 do { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 }, }) combat[i]:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/brimstone_bug_wave.lua b/data-otservbr-global/scripts/spells/monster/brimstone_bug_wave.lua index 28d0d67a824..cfd639c4822 100644 --- a/data-otservbr-global/scripts/spells/monster/brimstone_bug_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/brimstone_bug_wave.lua @@ -8,7 +8,7 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/bullwark_paralyze.lua b/data-otservbr-global/scripts/spells/monster/bullwark_paralyze.lua index ab76e33200f..3740d3d012f 100644 --- a/data-otservbr-global/scripts/spells/monster/bullwark_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/bullwark_paralyze.lua @@ -9,14 +9,13 @@ combat:addCondition(condition) arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/burning_gladiator_firering.lua b/data-otservbr-global/scripts/spells/monster/burning_gladiator_firering.lua index 85c52d5ff80..9c48af19b3b 100644 --- a/data-otservbr-global/scripts/spells/monster/burning_gladiator_firering.lua +++ b/data-otservbr-global/scripts/spells/monster/burning_gladiator_firering.lua @@ -6,7 +6,7 @@ arr = { { 1, 0, 0, 0, 1 }, { 1, 0, 2, 0, 1 }, { 1, 0, 0, 0, 1 }, - { 0, 1, 1, 1, 0 } + { 0, 1, 1, 1, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/burning_gladiator_firex.lua b/data-otservbr-global/scripts/spells/monster/burning_gladiator_firex.lua index 7b8e7209eab..108536c8be0 100644 --- a/data-otservbr-global/scripts/spells/monster/burning_gladiator_firex.lua +++ b/data-otservbr-global/scripts/spells/monster/burning_gladiator_firex.lua @@ -4,7 +4,7 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) arr = { { 1, 0, 1 }, { 0, 2, 0 }, - { 1, 0, 1 } + { 1, 0, 1 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/canopic_jar_heal.lua b/data-otservbr-global/scripts/spells/monster/canopic_jar_heal.lua index 99fc122bc5d..109383cd3a6 100644 --- a/data-otservbr-global/scripts/spells/monster/canopic_jar_heal.lua +++ b/data-otservbr-global/scripts/spells/monster/canopic_jar_heal.lua @@ -27,8 +27,7 @@ function onTargetCreature(creature, target) local max = 5000 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then return true end if hp > 75 then diff --git a/data-otservbr-global/scripts/spells/monster/corym_vanguard_wave.lua b/data-otservbr-global/scripts/spells/monster/corym_vanguard_wave.lua index f340f20e456..f80331642cf 100644 --- a/data-otservbr-global/scripts/spells/monster/corym_vanguard_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/corym_vanguard_wave.lua @@ -7,13 +7,12 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/crystal_spider_paralyze_1.lua b/data-otservbr-global/scripts/spells/monster/crystal_spider_paralyze_1.lua index 6debe3c45a5..24cb5c7527a 100644 --- a/data-otservbr-global/scripts/spells/monster/crystal_spider_paralyze_1.lua +++ b/data-otservbr-global/scripts/spells/monster/crystal_spider_paralyze_1.lua @@ -26,7 +26,6 @@ local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/crystal_wolf_wave.lua b/data-otservbr-global/scripts/spells/monster/crystal_wolf_wave.lua index f05750b4939..b0b0dd74d02 100644 --- a/data-otservbr-global/scripts/spells/monster/crystal_wolf_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/crystal_wolf_wave.lua @@ -5,13 +5,12 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_STONES) arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/cults_of_tibia_armor_buff.lua b/data-otservbr-global/scripts/spells/monster/cults_of_tibia_armor_buff.lua index 2592aa5836b..119fa317d2c 100644 --- a/data-otservbr-global/scripts/spells/monster/cults_of_tibia_armor_buff.lua +++ b/data-otservbr-global/scripts/spells/monster/cults_of_tibia_armor_buff.lua @@ -19,7 +19,7 @@ for i = 130, 150 do { 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/dark_torturer_skill_reducer.lua b/data-otservbr-global/scripts/spells/monster/dark_torturer_skill_reducer.lua index 1fed4480d90..47a07d711fd 100644 --- a/data-otservbr-global/scripts/spells/monster/dark_torturer_skill_reducer.lua +++ b/data-otservbr-global/scripts/spells/monster/dark_torturer_skill_reducer.lua @@ -23,7 +23,7 @@ for i = 1, 40 do { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 }, }) combat[i]:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/deathbringer_drown.lua b/data-otservbr-global/scripts/spells/monster/deathbringer_drown.lua index 0de766d9102..e37a7a396ad 100644 --- a/data-otservbr-global/scripts/spells/monster/deathbringer_drown.lua +++ b/data-otservbr-global/scripts/spells/monster/deathbringer_drown.lua @@ -10,7 +10,7 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local condition = Condition(CONDITION_DROWN) diff --git a/data-otservbr-global/scripts/spells/monster/deathstrike_manadrain.lua b/data-otservbr-global/scripts/spells/monster/deathstrike_manadrain.lua index 14a1e21dceb..364f85327de 100644 --- a/data-otservbr-global/scripts/spells/monster/deathstrike_manadrain.lua +++ b/data-otservbr-global/scripts/spells/monster/deathstrike_manadrain.lua @@ -8,13 +8,12 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/defiler_paralyze_1.lua b/data-otservbr-global/scripts/spells/monster/defiler_paralyze_1.lua index dc7b8e5b27e..29fb1780bf2 100644 --- a/data-otservbr-global/scripts/spells/monster/defiler_paralyze_1.lua +++ b/data-otservbr-global/scripts/spells/monster/defiler_paralyze_1.lua @@ -26,7 +26,6 @@ local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/defiler_paralyze_2.lua b/data-otservbr-global/scripts/spells/monster/defiler_paralyze_2.lua index 65d1348b05f..96d206ebcd6 100644 --- a/data-otservbr-global/scripts/spells/monster/defiler_paralyze_2.lua +++ b/data-otservbr-global/scripts/spells/monster/defiler_paralyze_2.lua @@ -6,12 +6,10 @@ condition:setParameter(CONDITION_PARAM_TICKS, 20000) condition:setFormula(-0.85, 0, -0.90, 0) combat:addCondition(condition) - local area = createCombatArea(AREA_SQUARE1X1) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/defiler_paralyze_3.lua b/data-otservbr-global/scripts/spells/monster/defiler_paralyze_3.lua index d8dbe61ed80..9eb2c2a86fc 100644 --- a/data-otservbr-global/scripts/spells/monster/defiler_paralyze_3.lua +++ b/data-otservbr-global/scripts/spells/monster/defiler_paralyze_3.lua @@ -15,14 +15,13 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/devourer_paralyze.lua b/data-otservbr-global/scripts/spells/monster/devourer_paralyze.lua index f8519bbffc9..bbaa20e5613 100644 --- a/data-otservbr-global/scripts/spells/monster/devourer_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/devourer_paralyze.lua @@ -6,12 +6,10 @@ condition:setParameter(CONDITION_PARAM_TICKS, 20000) condition:setFormula(-0.55, 0, -0.75, 0) combat:addCondition(condition) - local area = createCombatArea(AREA_SQUARE1X1) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/devourer_wave.lua b/data-otservbr-global/scripts/spells/monster/devourer_wave.lua index 81932db49fe..79d747e54de 100644 --- a/data-otservbr-global/scripts/spells/monster/devourer_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/devourer_wave.lua @@ -8,7 +8,7 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/dragonling_wave.lua b/data-otservbr-global/scripts/spells/monster/dragonling_wave.lua index 68bf1dda52d..00ce5b4377f 100644 --- a/data-otservbr-global/scripts/spells/monster/dragonling_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/dragonling_wave.lua @@ -8,13 +8,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/dread_maiden_rcircle.lua b/data-otservbr-global/scripts/spells/monster/dread_maiden_rcircle.lua index a42ab558d87..660f336f8e9 100644 --- a/data-otservbr-global/scripts/spells/monster/dread_maiden_rcircle.lua +++ b/data-otservbr-global/scripts/spells/monster/dread_maiden_rcircle.lua @@ -9,7 +9,7 @@ local combatArea = { { 1, 0, 0, 0, 0, 0, 1 }, { 1, 0, 0, 0, 0, 0, 1 }, { 0, 1, 0, 0, 0, 1, 0 }, - { 0, 0, 1, 1, 1, 0, 0 } + { 0, 0, 1, 1, 1, 0, 0 }, } combat:setArea(createCombatArea(combatArea)) diff --git a/data-otservbr-global/scripts/spells/monster/dreadbeast_summon.lua b/data-otservbr-global/scripts/spells/monster/dreadbeast_summon.lua index d55fd6d32a9..a13158b7932 100644 --- a/data-otservbr-global/scripts/spells/monster/dreadbeast_summon.lua +++ b/data-otservbr-global/scripts/spells/monster/dreadbeast_summon.lua @@ -18,7 +18,7 @@ function spell.onCastSpell(creature, var) end end end - if (check < 10) then + if check < 10 then local summon = Game.createMonster("Dreadbeast", creature:getPosition(), true, false) if summon then end diff --git a/data-otservbr-global/scripts/spells/monster/dreadwing_curse.lua b/data-otservbr-global/scripts/spells/monster/dreadwing_curse.lua index bb9f9416359..1bff50f8c2b 100644 --- a/data-otservbr-global/scripts/spells/monster/dreadwing_curse.lua +++ b/data-otservbr-global/scripts/spells/monster/dreadwing_curse.lua @@ -23,7 +23,7 @@ for i = 1, 1 do { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, }) combat[i]:setArea(area) combat[i]:addCondition(condition) diff --git a/data-otservbr-global/scripts/spells/monster/elder_wyrm_electrify.lua b/data-otservbr-global/scripts/spells/monster/elder_wyrm_electrify.lua index 28652a71bde..fcfa84f6b6f 100644 --- a/data-otservbr-global/scripts/spells/monster/elder_wyrm_electrify.lua +++ b/data-otservbr-global/scripts/spells/monster/elder_wyrm_electrify.lua @@ -15,7 +15,7 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/elder_wyrm_wave.lua b/data-otservbr-global/scripts/spells/monster/elder_wyrm_wave.lua index 6abcba65021..f39f69ef2c0 100644 --- a/data-otservbr-global/scripts/spells/monster/elder_wyrm_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/elder_wyrm_wave.lua @@ -8,13 +8,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/emberBeastArea.lua b/data-otservbr-global/scripts/spells/monster/emberBeastArea.lua index 7411598d39a..daf7edb7ea9 100644 --- a/data-otservbr-global/scripts/spells/monster/emberBeastArea.lua +++ b/data-otservbr-global/scripts/spells/monster/emberBeastArea.lua @@ -5,7 +5,7 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT) combat:setArea(createCombatArea({ { 1, 1, 1 }, { 1, 3, 1 }, - { 1, 1, 1 } + { 1, 1, 1 }, })) local monsters = { diff --git a/data-otservbr-global/scripts/spells/monster/emerald_tortoise_large_ring.lua b/data-otservbr-global/scripts/spells/monster/emerald_tortoise_large_ring.lua index 9641fb3403a..edf2cd43647 100644 --- a/data-otservbr-global/scripts/spells/monster/emerald_tortoise_large_ring.lua +++ b/data-otservbr-global/scripts/spells/monster/emerald_tortoise_large_ring.lua @@ -10,10 +10,9 @@ arr = { { 1, 1, 1, 0, 0, 0, 1, 1, 1 }, { 0, 1, 1, 1, 1, 1, 1, 1, 0 }, { 0, 0, 1, 1, 1, 1, 1, 0, 0 }, - { 0, 0, 0, 1, 1, 1, 0, 0, 0 } + { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, } - local area = createCombatArea(arr) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/emerald_tortoise_small_explosion.lua b/data-otservbr-global/scripts/spells/monster/emerald_tortoise_small_explosion.lua index 1b4f389ba6c..c9ce2ce85b6 100644 --- a/data-otservbr-global/scripts/spells/monster/emerald_tortoise_small_explosion.lua +++ b/data-otservbr-global/scripts/spells/monster/emerald_tortoise_small_explosion.lua @@ -4,10 +4,9 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_BLUE_ENERGY_SPARK) arr_small = { { 1, 1, 1 }, { 1, 3, 1 }, - { 1, 1, 1 } + { 1, 1, 1 }, } - local area = createCombatArea(arr_small) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/emerald_tortoise_small_ring.lua b/data-otservbr-global/scripts/spells/monster/emerald_tortoise_small_ring.lua index 1fd27c6ddfd..4200649eed4 100644 --- a/data-otservbr-global/scripts/spells/monster/emerald_tortoise_small_ring.lua +++ b/data-otservbr-global/scripts/spells/monster/emerald_tortoise_small_ring.lua @@ -10,10 +10,9 @@ arr = { { 0, 0, 1, 1, 0, 1, 1, 0, 0 }, { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, } - local area = createCombatArea(arr) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/eruption_of_destruction_explosion.lua b/data-otservbr-global/scripts/spells/monster/eruption_of_destruction_explosion.lua index 7fd5a628810..0f8a01f2102 100644 --- a/data-otservbr-global/scripts/spells/monster/eruption_of_destruction_explosion.lua +++ b/data-otservbr-global/scripts/spells/monster/eruption_of_destruction_explosion.lua @@ -2,7 +2,7 @@ local vocation = { VOCATION.BASE_ID.SORCERER, VOCATION.BASE_ID.DRUID, VOCATION.BASE_ID.PALADIN, - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, } local area = { @@ -73,7 +73,7 @@ local function delayedCastSpell(cid, var) if creature:getHealth() >= 1 then local master = creature:getMaster() master:addHealth(math.random(20000, 30000), true, true) - Game.createMonster('demon', creature:getPosition(), true, true) + Game.createMonster("demon", creature:getPosition(), true, true) return combat:execute(creature, positionToVariant(creature:getPosition())) end return diff --git a/data-otservbr-global/scripts/spells/monster/explosion_wave.lua b/data-otservbr-global/scripts/spells/monster/explosion_wave.lua index 928834bdb71..d6f8a2e46b2 100644 --- a/data-otservbr-global/scripts/spells/monster/explosion_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/explosion_wave.lua @@ -5,7 +5,7 @@ arr = { { 1, 1, 1 }, { 1, 1, 1 }, { 0, 1, 0 }, - { 0, 3, 0 } + { 0, 3, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/fear.lua b/data-otservbr-global/scripts/spells/monster/fear.lua index d58378d867f..370a490b2be 100644 --- a/data-otservbr-global/scripts/spells/monster/fear.lua +++ b/data-otservbr-global/scripts/spells/monster/fear.lua @@ -8,7 +8,9 @@ combat:addCondition(condition) local spell = Spell("instant") function spell.onCastSpell(creature, var) - if not creature then return end + if not creature then + return + end return combat:execute(creature, var) end diff --git a/data-otservbr-global/scripts/spells/monster/feroxa_summon.lua b/data-otservbr-global/scripts/spells/monster/feroxa_summon.lua index 6669e6c4871..6ab013d5513 100644 --- a/data-otservbr-global/scripts/spells/monster/feroxa_summon.lua +++ b/data-otservbr-global/scripts/spells/monster/feroxa_summon.lua @@ -1,5 +1,5 @@ local summons = { - [1] = { name = "Werewolf" } + [1] = { name = "Werewolf" }, } local combat = Combat() diff --git a/data-otservbr-global/scripts/spells/monster/feverish_citizen_drunk.lua b/data-otservbr-global/scripts/spells/monster/feverish_citizen_drunk.lua index a45115e2d11..d63797feb4c 100644 --- a/data-otservbr-global/scripts/spells/monster/feverish_citizen_drunk.lua +++ b/data-otservbr-global/scripts/spells/monster/feverish_citizen_drunk.lua @@ -8,7 +8,7 @@ combat:addCondition(condition) arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/foam_splash.lua b/data-otservbr-global/scripts/spells/monster/foam_splash.lua index 7b59b4a94b0..a417f1c7784 100644 --- a/data-otservbr-global/scripts/spells/monster/foam_splash.lua +++ b/data-otservbr-global/scripts/spells/monster/foam_splash.lua @@ -4,7 +4,8 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_WATERSPLASH) combat:setArea(createCombatArea({ { 0, 1, 0 }, { 1, 3, 1 }, - { 0, 1, 0 } })) + { 0, 1, 0 }, +})) local combat2 = Combat() combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) @@ -14,7 +15,8 @@ combat2:setArea(createCombatArea({ { 1, 1, 0, 1, 1 }, { 1, 0, 2, 0, 1 }, { 1, 1, 0, 1, 1 }, - { 0, 1, 1, 1, 0 } })) + { 0, 1, 1, 1, 0 }, +})) local combat3 = Combat() combat3:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) @@ -28,8 +30,8 @@ combat3:setArea(createCombatArea({ { 1, 1, 0, 0, 0, 0, 0, 1, 1 }, { 0, 1, 1, 0, 0, 0, 1, 1, 0 }, { 0, 0, 1, 1, 1, 1, 1, 0, 0 }, - { 0, 0, 0, 1, 1, 1, 0, 0, 0 } })) - + { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, +})) local spell = Spell("instant") diff --git a/data-otservbr-global/scripts/spells/monster/freed_soul_spell.lua b/data-otservbr-global/scripts/spells/monster/freed_soul_spell.lua index 31ad08b8e30..26d02037a76 100644 --- a/data-otservbr-global/scripts/spells/monster/freed_soul_spell.lua +++ b/data-otservbr-global/scripts/spells/monster/freed_soul_spell.lua @@ -9,7 +9,7 @@ combat:setArea(createCombatArea({ { 1, 1, 1, 3, 1, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 1, 1, 0 }, - { 0, 0, 1, 1, 1, 0, 0 } + { 0, 0, 1, 1, 1, 0, 0 }, })) function spellCallback(param) diff --git a/data-otservbr-global/scripts/spells/monster/frost_dragon_paralyze_2.lua b/data-otservbr-global/scripts/spells/monster/frost_dragon_paralyze_2.lua index 97c014123ee..51120b16fec 100644 --- a/data-otservbr-global/scripts/spells/monster/frost_dragon_paralyze_2.lua +++ b/data-otservbr-global/scripts/spells/monster/frost_dragon_paralyze_2.lua @@ -11,7 +11,6 @@ local area = createCombatArea(AREA_CIRCLE2X2) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/frost_dragon_paralyze_3.lua b/data-otservbr-global/scripts/spells/monster/frost_dragon_paralyze_3.lua index 2c0d26900af..f7f2044c112 100644 --- a/data-otservbr-global/scripts/spells/monster/frost_dragon_paralyze_3.lua +++ b/data-otservbr-global/scripts/spells/monster/frost_dragon_paralyze_3.lua @@ -14,12 +14,11 @@ local area = createCombatArea({ { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 }, }) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/frozen_minion_beam.lua b/data-otservbr-global/scripts/spells/monster/frozen_minion_beam.lua index 075743b7666..a6f527aaae0 100644 --- a/data-otservbr-global/scripts/spells/monster/frozen_minion_beam.lua +++ b/data-otservbr-global/scripts/spells/monster/frozen_minion_beam.lua @@ -8,8 +8,7 @@ function onTargetCreature(creature, target) local max = 700 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then doTargetCombatHealth(0, target, COMBAT_ICEDAMAGE, min, max, CONST_ME_NONE) return true end diff --git a/data-otservbr-global/scripts/spells/monster/frozen_minion_heal.lua b/data-otservbr-global/scripts/spells/monster/frozen_minion_heal.lua index 1226ce674fa..58a5948038e 100644 --- a/data-otservbr-global/scripts/spells/monster/frozen_minion_heal.lua +++ b/data-otservbr-global/scripts/spells/monster/frozen_minion_heal.lua @@ -8,8 +8,7 @@ function onTargetCreature(creature, target) local max = 200 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then return true end diff --git a/data-otservbr-global/scripts/spells/monster/frozen_minion_wave.lua b/data-otservbr-global/scripts/spells/monster/frozen_minion_wave.lua index 2ed4723ec8c..62ebab74ec7 100644 --- a/data-otservbr-global/scripts/spells/monster/frozen_minion_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/frozen_minion_wave.lua @@ -7,7 +7,7 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) @@ -18,8 +18,7 @@ function onTargetCreature(creature, target) local max = 700 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then doTargetCombatHealth(0, target, COMBAT_ICEDAMAGE, min, max, CONST_ME_NONE) return true end diff --git a/data-otservbr-global/scripts/spells/monster/furyosa_deathball.lua b/data-otservbr-global/scripts/spells/monster/furyosa_deathball.lua index 79a2c73788c..8f4bd3cf171 100644 --- a/data-otservbr-global/scripts/spells/monster/furyosa_deathball.lua +++ b/data-otservbr-global/scripts/spells/monster/furyosa_deathball.lua @@ -18,7 +18,6 @@ arr = { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, } - local area = createCombatArea(arr) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/furyosa_manadrain.lua b/data-otservbr-global/scripts/spells/monster/furyosa_manadrain.lua index 129fc01e15c..9f4942234a4 100644 --- a/data-otservbr-global/scripts/spells/monster/furyosa_manadrain.lua +++ b/data-otservbr-global/scripts/spells/monster/furyosa_manadrain.lua @@ -10,13 +10,12 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/furyosa_soulfire.lua b/data-otservbr-global/scripts/spells/monster/furyosa_soulfire.lua index c0ef1e50bf4..e1f78460adc 100644 --- a/data-otservbr-global/scripts/spells/monster/furyosa_soulfire.lua +++ b/data-otservbr-global/scripts/spells/monster/furyosa_soulfire.lua @@ -15,7 +15,7 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/gaz'haragoth_death.lua b/data-otservbr-global/scripts/spells/monster/gaz'haragoth_death.lua index 069ef37a33c..e4e979c8205 100644 --- a/data-otservbr-global/scripts/spells/monster/gaz'haragoth_death.lua +++ b/data-otservbr-global/scripts/spells/monster/gaz'haragoth_death.lua @@ -2,7 +2,7 @@ local vocation = { VOCATION.BASE_ID.SORCERER, VOCATION.BASE_ID.DRUID, VOCATION.BASE_ID.PALADIN, - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, } local area = { diff --git a/data-otservbr-global/scripts/spells/monster/gaz'haragoth_iceball.lua b/data-otservbr-global/scripts/spells/monster/gaz'haragoth_iceball.lua index a46aac42fc5..b4b4ff08996 100644 --- a/data-otservbr-global/scripts/spells/monster/gaz'haragoth_iceball.lua +++ b/data-otservbr-global/scripts/spells/monster/gaz'haragoth_iceball.lua @@ -18,7 +18,6 @@ arr = { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, } - local area = createCombatArea(arr) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/gaz'haragoth_summon.lua b/data-otservbr-global/scripts/spells/monster/gaz'haragoth_summon.lua index 3e5a4186bc1..dff51b81c4c 100644 --- a/data-otservbr-global/scripts/spells/monster/gaz'haragoth_summon.lua +++ b/data-otservbr-global/scripts/spells/monster/gaz'haragoth_summon.lua @@ -14,10 +14,10 @@ function spell.onCastSpell(creature, var) end end - if (check >= GazVariables.MaxSummons) then + if check >= GazVariables.MaxSummons then return false else - if (check < GazVariables.MinionsNow) then + if check < GazVariables.MinionsNow then local monster for i = 1, (GazVariables.MinionsNow - check) do monster = Game.createMonster("Minion of Gaz'haragoth", creature:getPosition(), true, false) @@ -28,7 +28,7 @@ function spell.onCastSpell(creature, var) end creature:getPosition():sendMagicEffect(CONST_ME_SOUND_RED) else - if (math.random(0, 100) < 25) then + if math.random(0, 100) < 25 then local monster = Game.createMonster("Minion of Gaz'haragoth", creature:getPosition(), true, false) creature:say("Minions! Follow my call!", TALKTYPE_ORANGE_1) if monster then diff --git a/data-otservbr-global/scripts/spells/monster/gaz_functions.lua b/data-otservbr-global/scripts/spells/monster/gaz_functions.lua index eba51b4977b..ae135c9159c 100644 --- a/data-otservbr-global/scripts/spells/monster/gaz_functions.lua +++ b/data-otservbr-global/scripts/spells/monster/gaz_functions.lua @@ -1,4 +1,4 @@ GazVariables = { MinionsNow = 2, - MaxSummons = 7 + MaxSummons = 7, } diff --git a/data-otservbr-global/scripts/spells/monster/generator.lua b/data-otservbr-global/scripts/spells/monster/generator.lua index 80df299cdf7..ee36912022a 100644 --- a/data-otservbr-global/scripts/spells/monster/generator.lua +++ b/data-otservbr-global/scripts/spells/monster/generator.lua @@ -2,15 +2,15 @@ local generator = { [1] = { pos = Position(33708, 32042, 15) }, [2] = { pos = Position(33714, 32042, 15) }, [3] = { pos = Position(33708, 32051, 15) }, - [4] = { pos = Position(33714, 32051, 15) } + [4] = { pos = Position(33714, 32051, 15) }, } local spell = Spell("instant") function spell.onCastSpell(creature, var) local rand = math.random(1, 4) local generators = generator[rand] - local monster = Game.createMonster('glooth-generator', generators.pos, true, true) - monster:say('THE GLOOTH GENERATOR CHARGES UP FOR A LETHAL EXPLOSION!', TALKTYPE_MONSTER_YELL) + local monster = Game.createMonster("glooth-generator", generators.pos, true, true) + monster:say("THE GLOOTH GENERATOR CHARGES UP FOR A LETHAL EXPLOSION!", TALKTYPE_MONSTER_YELL) return end diff --git a/data-otservbr-global/scripts/spells/monster/ghastly_dragon_wave.lua b/data-otservbr-global/scripts/spells/monster/ghastly_dragon_wave.lua index c67559fed90..e7b8e0394c0 100644 --- a/data-otservbr-global/scripts/spells/monster/ghastly_dragon_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/ghastly_dragon_wave.lua @@ -7,13 +7,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/ghoulish_hyaena_wave.lua b/data-otservbr-global/scripts/spells/monster/ghoulish_hyaena_wave.lua index efa1f45ca2b..97b9a6af3d7 100644 --- a/data-otservbr-global/scripts/spells/monster/ghoulish_hyaena_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/ghoulish_hyaena_wave.lua @@ -10,7 +10,7 @@ condition:addDamage(21, 4000, -1) arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/girtablilu_poison_wave.lua b/data-otservbr-global/scripts/spells/monster/girtablilu_poison_wave.lua index 0c37107cf15..17a569444ec 100644 --- a/data-otservbr-global/scripts/spells/monster/girtablilu_poison_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/girtablilu_poison_wave.lua @@ -5,7 +5,7 @@ arr = { { 1, 1, 1 }, { 1, 1, 1 }, { 0, 1, 0 }, - { 0, 3, 0 } + { 0, 3, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/glooth_battery_heal.lua b/data-otservbr-global/scripts/spells/monster/glooth_battery_heal.lua index d55de5b3ba5..eaf152987ca 100644 --- a/data-otservbr-global/scripts/spells/monster/glooth_battery_heal.lua +++ b/data-otservbr-global/scripts/spells/monster/glooth_battery_heal.lua @@ -10,8 +10,7 @@ function onTargetCreature(creature, target) local max = 500 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then return true end diff --git a/data-otservbr-global/scripts/spells/monster/glooth_fairy_paralyze.lua b/data-otservbr-global/scripts/spells/monster/glooth_fairy_paralyze.lua index 87426ebdbec..6b1461518a6 100644 --- a/data-otservbr-global/scripts/spells/monster/glooth_fairy_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/glooth_fairy_paralyze.lua @@ -26,7 +26,6 @@ local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/glooth_fairy_skill_reducer.lua b/data-otservbr-global/scripts/spells/monster/glooth_fairy_skill_reducer.lua index e3ed87a5c6f..878e469a1d7 100644 --- a/data-otservbr-global/scripts/spells/monster/glooth_fairy_skill_reducer.lua +++ b/data-otservbr-global/scripts/spells/monster/glooth_fairy_skill_reducer.lua @@ -16,7 +16,7 @@ for i = 40, 60 do { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/gnomevil_drunk.lua b/data-otservbr-global/scripts/spells/monster/gnomevil_drunk.lua index f7da87cd799..8eb5fb84933 100644 --- a/data-otservbr-global/scripts/spells/monster/gnomevil_drunk.lua +++ b/data-otservbr-global/scripts/spells/monster/gnomevil_drunk.lua @@ -10,7 +10,7 @@ arr = { { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/gnomevil_electrify.lua b/data-otservbr-global/scripts/spells/monster/gnomevil_electrify.lua index 28f2f8f626e..e8dd8c65677 100644 --- a/data-otservbr-global/scripts/spells/monster/gnomevil_electrify.lua +++ b/data-otservbr-global/scripts/spells/monster/gnomevil_electrify.lua @@ -15,7 +15,7 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/gnomevil_soulfire.lua b/data-otservbr-global/scripts/spells/monster/gnomevil_soulfire.lua index 04e432213ee..9911c0c8dce 100644 --- a/data-otservbr-global/scripts/spells/monster/gnomevil_soulfire.lua +++ b/data-otservbr-global/scripts/spells/monster/gnomevil_soulfire.lua @@ -11,7 +11,7 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/gorerilla_large_ring.lua b/data-otservbr-global/scripts/spells/monster/gorerilla_large_ring.lua index 533a2d9e1bd..a97d314ef7b 100644 --- a/data-otservbr-global/scripts/spells/monster/gorerilla_large_ring.lua +++ b/data-otservbr-global/scripts/spells/monster/gorerilla_large_ring.lua @@ -10,10 +10,9 @@ arr = { { 0, 1, 1, 0, 0, 0, 1, 1, 0 }, { 0, 0, 1, 1, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, } - local area = createCombatArea(arr) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/gorerilla_small_ring.lua b/data-otservbr-global/scripts/spells/monster/gorerilla_small_ring.lua index 818799a4f1f..e3527e21d02 100644 --- a/data-otservbr-global/scripts/spells/monster/gorerilla_small_ring.lua +++ b/data-otservbr-global/scripts/spells/monster/gorerilla_small_ring.lua @@ -10,10 +10,9 @@ arr = { { 0, 0, 1, 1, 0, 1, 1, 0, 0 }, { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, } - local area = createCombatArea(arr) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/haunted_treeling_paralyze.lua b/data-otservbr-global/scripts/spells/monster/haunted_treeling_paralyze.lua index 30c3bd24fae..e5504036f8a 100644 --- a/data-otservbr-global/scripts/spells/monster/haunted_treeling_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/haunted_treeling_paralyze.lua @@ -12,14 +12,13 @@ arr = { { 1 }, { 1 }, { 1 }, - { 3 } + { 3 }, } local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/headpecker_explosion.lua b/data-otservbr-global/scripts/spells/monster/headpecker_explosion.lua index efd0aadb4fe..30dfcdfc071 100644 --- a/data-otservbr-global/scripts/spells/monster/headpecker_explosion.lua +++ b/data-otservbr-global/scripts/spells/monster/headpecker_explosion.lua @@ -3,9 +3,9 @@ combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE) combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITBYPOISON) arr = { - { 1, 1, 1, }, - { 1, 3, 1, }, - { 1, 1, 1, }, + { 1, 1, 1 }, + { 1, 3, 1 }, + { 1, 1, 1 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/hideous_fungus_paralyze.lua b/data-otservbr-global/scripts/spells/monster/hideous_fungus_paralyze.lua index a8728ea7d1a..21dc7861bd0 100644 --- a/data-otservbr-global/scripts/spells/monster/hideous_fungus_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/hideous_fungus_paralyze.lua @@ -2,18 +2,15 @@ local combat = Combat() combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_STUN) combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH) - local condition = Condition(CONDITION_PARALYZE) condition:setParameter(CONDITION_PARAM_TICKS, 20000) condition:setFormula(-0.40, 0, -0.80, 0) combat:addCondition(condition) - local area = createCombatArea(AREA_CIRCLE2X2) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/hideous_fungus_poison.lua b/data-otservbr-global/scripts/spells/monster/hideous_fungus_poison.lua index 6abffffb408..f050fae4d8c 100644 --- a/data-otservbr-global/scripts/spells/monster/hideous_fungus_poison.lua +++ b/data-otservbr-global/scripts/spells/monster/hideous_fungus_poison.lua @@ -13,7 +13,6 @@ for i = 25, 30 do condition:addDamage(10, 4000, -i + 3) condition:addDamage(10, 4000, -i + 4) - local area = createCombatArea(AREA_SQUARE1X1) combat[i]:setArea(area) combat[i]:addCondition(condition) diff --git a/data-otservbr-global/scripts/spells/monster/horadron_heal.lua b/data-otservbr-global/scripts/spells/monster/horadron_heal.lua index 373822cfa9c..ce12894820d 100644 --- a/data-otservbr-global/scripts/spells/monster/horadron_heal.lua +++ b/data-otservbr-global/scripts/spells/monster/horadron_heal.lua @@ -26,8 +26,7 @@ function onTargetCreature(creature, target) local max = 700 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then return true end diff --git a/data-otservbr-global/scripts/spells/monster/hot_dog_wave.lua b/data-otservbr-global/scripts/spells/monster/hot_dog_wave.lua index 0fe806a1ffa..58b6df79dc7 100644 --- a/data-otservbr-global/scripts/spells/monster/hot_dog_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/hot_dog_wave.lua @@ -7,13 +7,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/humongous_fungus_paralyze.lua b/data-otservbr-global/scripts/spells/monster/humongous_fungus_paralyze.lua index 14407c5eb84..00f5a1a81d2 100644 --- a/data-otservbr-global/scripts/spells/monster/humongous_fungus_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/humongous_fungus_paralyze.lua @@ -11,14 +11,13 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/humongous_fungus_poison.lua b/data-otservbr-global/scripts/spells/monster/humongous_fungus_poison.lua index 9f663cd090b..2d5b9a88fd9 100644 --- a/data-otservbr-global/scripts/spells/monster/humongous_fungus_poison.lua +++ b/data-otservbr-global/scripts/spells/monster/humongous_fungus_poison.lua @@ -20,7 +20,7 @@ for i = 25, 30 do { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/ice_crystal_bomb.lua b/data-otservbr-global/scripts/spells/monster/ice_crystal_bomb.lua index 4012eefff03..db862bda373 100644 --- a/data-otservbr-global/scripts/spells/monster/ice_crystal_bomb.lua +++ b/data-otservbr-global/scripts/spells/monster/ice_crystal_bomb.lua @@ -9,7 +9,7 @@ combat:setArea(createCombatArea(AREA_CIRCLE2X2)) function onGetFormulaValues(player, skill, attack, factor) local skillTotal = skill * attack local levelTotal = player:getLevel() / 5 - return -(((skillTotal * 0.02) + 4) + (levelTotal)), -(((skillTotal * 0.03) + 6) + (levelTotal)) + return -(((skillTotal * 0.02) + 4) + levelTotal), -(((skillTotal * 0.03) + 6) + levelTotal) end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") diff --git a/data-otservbr-global/scripts/spells/monster/ice_golem_paralyze.lua b/data-otservbr-global/scripts/spells/monster/ice_golem_paralyze.lua index 618c1a499b7..bfe7cea0fa6 100644 --- a/data-otservbr-global/scripts/spells/monster/ice_golem_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/ice_golem_paralyze.lua @@ -14,14 +14,13 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/icicle_heal.lua b/data-otservbr-global/scripts/spells/monster/icicle_heal.lua index 1bff9a005bb..65231af0a4b 100644 --- a/data-otservbr-global/scripts/spells/monster/icicle_heal.lua +++ b/data-otservbr-global/scripts/spells/monster/icicle_heal.lua @@ -8,8 +8,7 @@ function onTargetCreature(creature, target) local max = 600 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then return true end diff --git a/data-otservbr-global/scripts/spells/monster/katex_blood_deathT.lua b/data-otservbr-global/scripts/spells/monster/katex_blood_deathT.lua index 661e22a08b2..17ee4eb68eb 100644 --- a/data-otservbr-global/scripts/spells/monster/katex_blood_deathT.lua +++ b/data-otservbr-global/scripts/spells/monster/katex_blood_deathT.lua @@ -5,7 +5,7 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) local combatArea = { { 1, 1, 1 }, { 0, 1, 0 }, - { 0, 3, 0 } + { 0, 3, 0 }, } combat:setArea(createCombatArea(combatArea)) diff --git a/data-otservbr-global/scripts/spells/monster/kraknaknork_explosion_wave.lua b/data-otservbr-global/scripts/spells/monster/kraknaknork_explosion_wave.lua index 1b069ec190c..dfe65f01c85 100644 --- a/data-otservbr-global/scripts/spells/monster/kraknaknork_explosion_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/kraknaknork_explosion_wave.lua @@ -5,13 +5,12 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA) arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/kraknaknork_ice_wave.lua b/data-otservbr-global/scripts/spells/monster/kraknaknork_ice_wave.lua index 9f76bdb686d..6878bb28a36 100644 --- a/data-otservbr-global/scripts/spells/monster/kraknaknork_ice_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/kraknaknork_ice_wave.lua @@ -5,13 +5,12 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA) arr = { { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/kraknaknork_poison_wave.lua b/data-otservbr-global/scripts/spells/monster/kraknaknork_poison_wave.lua index 0a55dbb2dc6..54a2ca15a5f 100644 --- a/data-otservbr-global/scripts/spells/monster/kraknaknork_poison_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/kraknaknork_poison_wave.lua @@ -6,13 +6,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/lavafungus_ring.lua b/data-otservbr-global/scripts/spells/monster/lavafungus_ring.lua index 242c18f7562..7a1608ff9ff 100644 --- a/data-otservbr-global/scripts/spells/monster/lavafungus_ring.lua +++ b/data-otservbr-global/scripts/spells/monster/lavafungus_ring.lua @@ -6,10 +6,9 @@ arr = { { 1, 0, 0, 0, 1 }, { 1, 0, 2, 0, 1 }, { 1, 0, 0, 0, 1 }, - { 0, 1, 1, 1, 0 } + { 0, 1, 1, 1, 0 }, } - local area = createCombatArea(arr) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/lavafungus_x_wave.lua b/data-otservbr-global/scripts/spells/monster/lavafungus_x_wave.lua index 0e97a4f26e9..5b7e9fd1c46 100644 --- a/data-otservbr-global/scripts/spells/monster/lavafungus_x_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/lavafungus_x_wave.lua @@ -7,7 +7,6 @@ arr = { { 1, 0, 1 }, } - local area = createCombatArea(arr) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/leaf_golem_paralyze.lua b/data-otservbr-global/scripts/spells/monster/leaf_golem_paralyze.lua index 833488a3e06..5eb9f0a2581 100644 --- a/data-otservbr-global/scripts/spells/monster/leaf_golem_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/leaf_golem_paralyze.lua @@ -6,12 +6,10 @@ condition:setParameter(CONDITION_PARAM_TICKS, 20000) condition:setFormula(-0.25, 0, -0.45, 0) combat:addCondition(condition) - local area = createCombatArea(AREA_SQUARE1X1) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/lisa_skill_reducer.lua b/data-otservbr-global/scripts/spells/monster/lisa_skill_reducer.lua index 2a6d9965dee..11048926622 100644 --- a/data-otservbr-global/scripts/spells/monster/lisa_skill_reducer.lua +++ b/data-otservbr-global/scripts/spells/monster/lisa_skill_reducer.lua @@ -27,13 +27,12 @@ for i = 60, 75 do { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 1, 1, 1, 1, 0 }, { 0, 0, 1, 1, 1, 1, 1, 0, 0 }, - { 0, 0, 0, 1, 1, 1, 0, 0, 0 } + { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, } local area = createCombatArea(arr) combat[i]:setArea(area) - function onTargetTile(creature, pos) local creatureTable = {} local n, i = Tile({ x = pos.x, y = pos.y, z = pos.z }).creatures, 1 diff --git a/data-otservbr-global/scripts/spells/monster/lisa_wave.lua b/data-otservbr-global/scripts/spells/monster/lisa_wave.lua index 6322280e8b5..d47032f2ccf 100644 --- a/data-otservbr-global/scripts/spells/monster/lisa_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/lisa_wave.lua @@ -6,13 +6,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/lizard_wave.lua b/data-otservbr-global/scripts/spells/monster/lizard_wave.lua index 597ab005d79..118a6b69ba3 100644 --- a/data-otservbr-global/scripts/spells/monster/lizard_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/lizard_wave.lua @@ -7,13 +7,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/lizard_wave_2.lua b/data-otservbr-global/scripts/spells/monster/lizard_wave_2.lua index 5ddd657fdc9..76da718a4fe 100644 --- a/data-otservbr-global/scripts/spells/monster/lizard_wave_2.lua +++ b/data-otservbr-global/scripts/spells/monster/lizard_wave_2.lua @@ -8,13 +8,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/lloyd_wave.lua b/data-otservbr-global/scripts/spells/monster/lloyd_wave.lua index 779c2f602fa..cf9651ac4f3 100644 --- a/data-otservbr-global/scripts/spells/monster/lloyd_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/lloyd_wave.lua @@ -9,10 +9,9 @@ arr = { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, } - local area = createCombatArea(arr) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/lloyd_wave2.lua b/data-otservbr-global/scripts/spells/monster/lloyd_wave2.lua index cd71fd881e3..d11886c3368 100644 --- a/data-otservbr-global/scripts/spells/monster/lloyd_wave2.lua +++ b/data-otservbr-global/scripts/spells/monster/lloyd_wave2.lua @@ -9,10 +9,9 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, } - local area = createCombatArea(arr) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/lloyd_wave3.lua b/data-otservbr-global/scripts/spells/monster/lloyd_wave3.lua index 997396bed79..a92c8c35c83 100644 --- a/data-otservbr-global/scripts/spells/monster/lloyd_wave3.lua +++ b/data-otservbr-global/scripts/spells/monster/lloyd_wave3.lua @@ -9,10 +9,9 @@ arr = { { 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, } - local area = createCombatArea(arr) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/lord_azaram_wave.lua b/data-otservbr-global/scripts/spells/monster/lord_azaram_wave.lua index 4dd274a8d5e..c300ad8c4b4 100644 --- a/data-otservbr-global/scripts/spells/monster/lord_azaram_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/lord_azaram_wave.lua @@ -11,7 +11,7 @@ local areaSmall = { { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 1, 0, 0 }, - { 0, 0, 3, 0, 0 } + { 0, 0, 3, 0, 0 }, } local areaLarge = { @@ -21,7 +21,7 @@ local areaLarge = { { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0 }, - { 0, 0, 0, 3, 0, 0, 0 } + { 0, 0, 0, 3, 0, 0, 0 }, } combatSmall:setArea(createCombatArea(areaSmall)) diff --git a/data-otservbr-global/scripts/spells/monster/lord_of_the_elements_paralyze.lua b/data-otservbr-global/scripts/spells/monster/lord_of_the_elements_paralyze.lua index 58f7ed2f358..6095e52a1c9 100644 --- a/data-otservbr-global/scripts/spells/monster/lord_of_the_elements_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/lord_of_the_elements_paralyze.lua @@ -26,7 +26,6 @@ local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/madareth_skill_reducer.lua b/data-otservbr-global/scripts/spells/monster/madareth_skill_reducer.lua index 04ab2892031..52fe3558e8e 100644 --- a/data-otservbr-global/scripts/spells/monster/madareth_skill_reducer.lua +++ b/data-otservbr-global/scripts/spells/monster/madareth_skill_reducer.lua @@ -18,7 +18,7 @@ for i = 20, 40 do { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/magma_crawler_wave.lua b/data-otservbr-global/scripts/spells/monster/magma_crawler_wave.lua index a53e591b811..bdc62daaee8 100644 --- a/data-otservbr-global/scripts/spells/monster/magma_crawler_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/magma_crawler_wave.lua @@ -5,13 +5,12 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/mahrdis_soulfire.lua b/data-otservbr-global/scripts/spells/monster/mahrdis_soulfire.lua index 6dcd2487338..113a0508d47 100644 --- a/data-otservbr-global/scripts/spells/monster/mahrdis_soulfire.lua +++ b/data-otservbr-global/scripts/spells/monster/mahrdis_soulfire.lua @@ -14,7 +14,7 @@ local area = createCombatArea({ { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 }, }) combat:setArea(area) combat:addCondition(condition) diff --git a/data-otservbr-global/scripts/spells/monster/mawhawk_ue.lua b/data-otservbr-global/scripts/spells/monster/mawhawk_ue.lua index 0de68302c5c..f819e25ed40 100644 --- a/data-otservbr-global/scripts/spells/monster/mawhawk_ue.lua +++ b/data-otservbr-global/scripts/spells/monster/mawhawk_ue.lua @@ -2,7 +2,7 @@ local vocation = { VOCATION.BASE_ID.SORCERER, VOCATION.BASE_ID.DRUID, VOCATION.BASE_ID.PALADIN, - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, } local condition = Condition(CONDITION_REGENERATION, CONDITIONID_DEFAULT) diff --git a/data-otservbr-global/scripts/spells/monster/mazoran_fire.lua b/data-otservbr-global/scripts/spells/monster/mazoran_fire.lua index c5cf1e5bfac..72e035354a8 100644 --- a/data-otservbr-global/scripts/spells/monster/mazoran_fire.lua +++ b/data-otservbr-global/scripts/spells/monster/mazoran_fire.lua @@ -888,7 +888,7 @@ local itemsRoom = { { itemid = 1855, position = Position(33583, 32682, 14) }, { itemid = 1855, position = Position(33590, 32691, 14) }, { itemid = 1855, position = Position(33575, 32689, 14) }, - { itemid = 1854, position = Position(33581, 32689, 14) } + { itemid = 1854, position = Position(33581, 32689, 14) }, } local function revertLava() @@ -910,7 +910,9 @@ local function revertLava() end local function lavaGrounds(cid) local creature = Creature(cid) - if not creature then return true end + if not creature then + return true + end local summoncount = creature:getSummons() if #summoncount < 4 then for i = 1, 4 do @@ -952,7 +954,7 @@ end local spell = Spell("instant") function spell.onCastSpell(creature, var) - creature:say('THE GROUND BEGINS TO HEAT UP RAPIDLY!', TALKTYPE_MONSTER_YELL) + creature:say("THE GROUND BEGINS TO HEAT UP RAPIDLY!", TALKTYPE_MONSTER_YELL) addEvent(lavaGrounds, 3 * 1000, creature:getId()) return end diff --git a/data-otservbr-global/scripts/spells/monster/medusa_paralyze.lua b/data-otservbr-global/scripts/spells/monster/medusa_paralyze.lua index 140001e6f2c..6489e108103 100644 --- a/data-otservbr-global/scripts/spells/monster/medusa_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/medusa_paralyze.lua @@ -27,7 +27,6 @@ local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/megasylvan_yselda_ebeam.lua b/data-otservbr-global/scripts/spells/monster/megasylvan_yselda_ebeam.lua index c2a532ccc61..dbf11415fb3 100644 --- a/data-otservbr-global/scripts/spells/monster/megasylvan_yselda_ebeam.lua +++ b/data-otservbr-global/scripts/spells/monster/megasylvan_yselda_ebeam.lua @@ -9,7 +9,7 @@ local combatArea = { { 0 }, { 1 }, { 0 }, - { 3 } + { 3 }, } combat:setArea(createCombatArea(combatArea)) diff --git a/data-otservbr-global/scripts/spells/monster/mercurial_menace_ring.lua b/data-otservbr-global/scripts/spells/monster/mercurial_menace_ring.lua index fe72b458045..a96beeb8486 100644 --- a/data-otservbr-global/scripts/spells/monster/mercurial_menace_ring.lua +++ b/data-otservbr-global/scripts/spells/monster/mercurial_menace_ring.lua @@ -13,7 +13,6 @@ local arr = { combat:setArea(createCombatArea(arr)) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/minotaur_amazon_paralyze.lua b/data-otservbr-global/scripts/spells/monster/minotaur_amazon_paralyze.lua index 0ff184f5a86..59184ca4896 100644 --- a/data-otservbr-global/scripts/spells/monster/minotaur_amazon_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/minotaur_amazon_paralyze.lua @@ -10,14 +10,13 @@ arr = { { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/mutated_bat_curse.lua b/data-otservbr-global/scripts/spells/monster/mutated_bat_curse.lua index c2fa770607c..0f58e066896 100644 --- a/data-otservbr-global/scripts/spells/monster/mutated_bat_curse.lua +++ b/data-otservbr-global/scripts/spells/monster/mutated_bat_curse.lua @@ -27,7 +27,7 @@ for i = 2, 4 do { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, }) combat[i]:setArea(area) combat[i]:addCondition(condition) diff --git a/data-otservbr-global/scripts/spells/monster/nighthunter_wave.lua b/data-otservbr-global/scripts/spells/monster/nighthunter_wave.lua index 178adcdb756..457dff08ee2 100644 --- a/data-otservbr-global/scripts/spells/monster/nighthunter_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/nighthunter_wave.lua @@ -7,7 +7,7 @@ AREA_WAVE = { { 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 0 }, - { 0, 0, 3, 0, 0 } + { 0, 0, 3, 0, 0 }, } combat:setArea(createCombatArea(AREA_WAVE)) diff --git a/data-otservbr-global/scripts/spells/monster/noxious_ripptor_wave.lua b/data-otservbr-global/scripts/spells/monster/noxious_ripptor_wave.lua index 20f31fe79db..218ccf98d62 100644 --- a/data-otservbr-global/scripts/spells/monster/noxious_ripptor_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/noxious_ripptor_wave.lua @@ -7,7 +7,7 @@ AREA_WAVE = { { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 1, 0, 0 }, - { 0, 0, 3, 0, 0 } + { 0, 0, 3, 0, 0 }, } combat:setArea(createCombatArea(AREA_WAVE)) diff --git a/data-otservbr-global/scripts/spells/monster/omrafir_wave.lua b/data-otservbr-global/scripts/spells/monster/omrafir_wave.lua index de3109cb615..b3054b8a073 100644 --- a/data-otservbr-global/scripts/spells/monster/omrafir_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/omrafir_wave.lua @@ -6,13 +6,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/orewalker_skill_reducer_1.lua b/data-otservbr-global/scripts/spells/monster/orewalker_skill_reducer_1.lua index 493f4c7ae30..2cbaaaa53bf 100644 --- a/data-otservbr-global/scripts/spells/monster/orewalker_skill_reducer_1.lua +++ b/data-otservbr-global/scripts/spells/monster/orewalker_skill_reducer_1.lua @@ -13,7 +13,7 @@ for i = 25, 45 do { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, }) combat[i]:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/orewalker_wave.lua b/data-otservbr-global/scripts/spells/monster/orewalker_wave.lua index 4ca52d5070a..8ff5053a035 100644 --- a/data-otservbr-global/scripts/spells/monster/orewalker_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/orewalker_wave.lua @@ -6,13 +6,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/outburst_explode.lua b/data-otservbr-global/scripts/spells/monster/outburst_explode.lua index 939ccaa44f2..7bb458af527 100644 --- a/data-otservbr-global/scripts/spells/monster/outburst_explode.lua +++ b/data-otservbr-global/scripts/spells/monster/outburst_explode.lua @@ -59,7 +59,9 @@ end function removeOutburst(cid) local creature = Creature(cid) - if not creature then return false end + if not creature then + return false + end creature:remove() end diff --git a/data-otservbr-global/scripts/spells/monster/phantasm_drown.lua b/data-otservbr-global/scripts/spells/monster/phantasm_drown.lua index e94743c68bc..6a4d120bb40 100644 --- a/data-otservbr-global/scripts/spells/monster/phantasm_drown.lua +++ b/data-otservbr-global/scripts/spells/monster/phantasm_drown.lua @@ -14,7 +14,7 @@ local area = createCombatArea({ { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 }, }) combat:setArea(area) combat:addCondition(condition) diff --git a/data-otservbr-global/scripts/spells/monster/plagirath_bog.lua b/data-otservbr-global/scripts/spells/monster/plagirath_bog.lua index 38657fde11e..9a43c902ccb 100644 --- a/data-otservbr-global/scripts/spells/monster/plagirath_bog.lua +++ b/data-otservbr-global/scripts/spells/monster/plagirath_bog.lua @@ -3,7 +3,6 @@ combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE) combat2:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_POISON) combat2:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON) - arr = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, diff --git a/data-otservbr-global/scripts/spells/monster/plagirath_heal.lua b/data-otservbr-global/scripts/spells/monster/plagirath_heal.lua index 2d685a6bda9..2bee6b9a8b4 100644 --- a/data-otservbr-global/scripts/spells/monster/plagirath_heal.lua +++ b/data-otservbr-global/scripts/spells/monster/plagirath_heal.lua @@ -26,8 +26,7 @@ function onTargetCreature(creature, target) local max = 700 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then return true end diff --git a/data-otservbr-global/scripts/spells/monster/plaguesmith_paralyze.lua b/data-otservbr-global/scripts/spells/monster/plaguesmith_paralyze.lua index d79d5d70810..0d7b1f2c549 100644 --- a/data-otservbr-global/scripts/spells/monster/plaguesmith_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/plaguesmith_paralyze.lua @@ -10,7 +10,6 @@ local area = createCombatArea(AREA_CIRCLE2X2) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/plaguesmith_wave.lua b/data-otservbr-global/scripts/spells/monster/plaguesmith_wave.lua index eb3a86bdf90..9feb45ae571 100644 --- a/data-otservbr-global/scripts/spells/monster/plaguesmith_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/plaguesmith_wave.lua @@ -7,13 +7,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/priestess_firering.lua b/data-otservbr-global/scripts/spells/monster/priestess_firering.lua index f1faaeb7d94..28d9bbd32ba 100644 --- a/data-otservbr-global/scripts/spells/monster/priestess_firering.lua +++ b/data-otservbr-global/scripts/spells/monster/priestess_firering.lua @@ -5,7 +5,7 @@ combat:setParameter(COMBAT_PARAM_SHOOT_EFFECT, CONST_ANI_FIRE) arr = { { 1, 0, 1 }, { 0, 2, 0 }, - { 1, 0, 1 } + { 1, 0, 1 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/prince_drazzak_druid.lua b/data-otservbr-global/scripts/spells/monster/prince_drazzak_druid.lua index 77e75618f4d..a4a4b453efe 100644 --- a/data-otservbr-global/scripts/spells/monster/prince_drazzak_druid.lua +++ b/data-otservbr-global/scripts/spells/monster/prince_drazzak_druid.lua @@ -71,7 +71,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, var) local value = Game.getStorageValue(storage) - if (os.time() - value >= 4) then + if os.time() - value >= 4 then creature:say("All DRUIDS must DIE!", TALKTYPE_ORANGE_1) addEvent(delayedCastSpell, 4000, creature:getId(), var) Game.setStorageValue(storage, os.time()) diff --git a/data-otservbr-global/scripts/spells/monster/prince_drazzak_knight.lua b/data-otservbr-global/scripts/spells/monster/prince_drazzak_knight.lua index a4e7b64d87b..c405536845f 100644 --- a/data-otservbr-global/scripts/spells/monster/prince_drazzak_knight.lua +++ b/data-otservbr-global/scripts/spells/monster/prince_drazzak_knight.lua @@ -55,7 +55,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, var) local value = Game.getStorageValue(storage) - if (os.time() - value >= 4) then + if os.time() - value >= 4 then creature:say("All KNIGHTS must DIE!", TALKTYPE_ORANGE_1) addEvent(delayedCastSpell, 4000, creature:getId(), var) Game.setStorageValue(storage, os.time()) diff --git a/data-otservbr-global/scripts/spells/monster/prince_drazzak_paladin.lua b/data-otservbr-global/scripts/spells/monster/prince_drazzak_paladin.lua index 48c7b4b1db7..145b3fa7072 100644 --- a/data-otservbr-global/scripts/spells/monster/prince_drazzak_paladin.lua +++ b/data-otservbr-global/scripts/spells/monster/prince_drazzak_paladin.lua @@ -71,7 +71,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, var) local value = Game.getStorageValue(storage) - if (os.time() - value >= 4) then + if os.time() - value >= 4 then creature:say("All PALADINS must DIE!", TALKTYPE_ORANGE_1) addEvent(delayedCastSpell, 4000, creature:getId(), var) Game.setStorageValue(storage, os.time()) diff --git a/data-otservbr-global/scripts/spells/monster/prince_drazzak_sorcerer.lua b/data-otservbr-global/scripts/spells/monster/prince_drazzak_sorcerer.lua index bbfbc804ba6..1f0fd9e9d35 100644 --- a/data-otservbr-global/scripts/spells/monster/prince_drazzak_sorcerer.lua +++ b/data-otservbr-global/scripts/spells/monster/prince_drazzak_sorcerer.lua @@ -71,7 +71,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, var) local value = Game.getStorageValue(storage) - if (os.time() - value >= 4) then + if os.time() - value >= 4 then creature:say("All SORCERERS must DIE!", TALKTYPE_ORANGE_1) addEvent(delayedCastSpell, 4000, creature:getId(), var) Game.setStorageValue(storage, os.time()) diff --git a/data-otservbr-global/scripts/spells/monster/prince_drazzak_summon.lua b/data-otservbr-global/scripts/spells/monster/prince_drazzak_summon.lua index 5cf0c7b5135..f7ca84b6dda 100644 --- a/data-otservbr-global/scripts/spells/monster/prince_drazzak_summon.lua +++ b/data-otservbr-global/scripts/spells/monster/prince_drazzak_summon.lua @@ -11,7 +11,7 @@ function spell.onCastSpell(creature, var) end end end - if (check < 1) then + if check < 1 then creature:say("CRUSH THEM ALL!", TALKTYPE_ORANGE_2) Game.createMonster("Demon", Position(33528, 32330, 12)) Game.createMonster("Demon", Position(33523, 32338, 12)) diff --git a/data-otservbr-global/scripts/spells/monster/prince_drazzak_wave.lua b/data-otservbr-global/scripts/spells/monster/prince_drazzak_wave.lua index 86c9dce769c..a3f05693f15 100644 --- a/data-otservbr-global/scripts/spells/monster/prince_drazzak_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/prince_drazzak_wave.lua @@ -6,13 +6,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/ragiaz_transform.lua b/data-otservbr-global/scripts/spells/monster/ragiaz_transform.lua index bf18e394323..25caeb8626d 100644 --- a/data-otservbr-global/scripts/spells/monster/ragiaz_transform.lua +++ b/data-otservbr-global/scripts/spells/monster/ragiaz_transform.lua @@ -6,7 +6,7 @@ function spell.onCastSpell(creature, var) return end pos:sendMagicEffect(172) - creature:say('Ragiaz encase himself in bones to regenerate.', TALKTYPE_MONSTER_SAY) + creature:say("Ragiaz encase himself in bones to regenerate.", TALKTYPE_MONSTER_SAY) creature:teleportTo(Position(33487, 32333, 14)) creature:addHealth(1000) local capsule = Tile(Position(33485, 32333, 14)):getTopCreature() diff --git a/data-otservbr-global/scripts/spells/monster/raging_mage_skill_reducer_2.lua b/data-otservbr-global/scripts/spells/monster/raging_mage_skill_reducer_2.lua index 79d14225aaf..af5d9aca9d2 100644 --- a/data-otservbr-global/scripts/spells/monster/raging_mage_skill_reducer_2.lua +++ b/data-otservbr-global/scripts/spells/monster/raging_mage_skill_reducer_2.lua @@ -30,7 +30,6 @@ for i = 35, 55 do combat[i]:addCondition(condition) end - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/ravennousLavaLurkerTarget.lua b/data-otservbr-global/scripts/spells/monster/ravennousLavaLurkerTarget.lua index 3e8547a2d29..1981ba04797 100644 --- a/data-otservbr-global/scripts/spells/monster/ravennousLavaLurkerTarget.lua +++ b/data-otservbr-global/scripts/spells/monster/ravennousLavaLurkerTarget.lua @@ -16,7 +16,7 @@ combat:setArea(createCombatArea({ local monsters = { "lost gnome", - "gnome pack crawler" + "gnome pack crawler", } function onTargetTile(cid, pos) diff --git a/data-otservbr-global/scripts/spells/monster/ravennousLavaLurkerWave.lua b/data-otservbr-global/scripts/spells/monster/ravennousLavaLurkerWave.lua index dc6636f8f8f..231f71c3400 100644 --- a/data-otservbr-global/scripts/spells/monster/ravennousLavaLurkerWave.lua +++ b/data-otservbr-global/scripts/spells/monster/ravennousLavaLurkerWave.lua @@ -12,7 +12,7 @@ combat:setArea(createCombatArea({ local monsters = { "lost gnome", - "gnome pack crawler" + "gnome pack crawler", } function onTargetTile(cid, pos) diff --git a/data-otservbr-global/scripts/spells/monster/remorseless_wave.lua b/data-otservbr-global/scripts/spells/monster/remorseless_wave.lua index 89cb9060b7b..a7c17d7e96b 100644 --- a/data-otservbr-global/scripts/spells/monster/remorseless_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/remorseless_wave.lua @@ -13,7 +13,7 @@ combat:setArea(createCombatArea({ { 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, })) function spellCallback(param) diff --git a/data-otservbr-global/scripts/spells/monster/rot_elemental_paralyze.lua b/data-otservbr-global/scripts/spells/monster/rot_elemental_paralyze.lua index a5d29588c1b..d748c102b8e 100644 --- a/data-otservbr-global/scripts/spells/monster/rot_elemental_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/rot_elemental_paralyze.lua @@ -6,12 +6,10 @@ condition:setParameter(CONDITION_PARAM_TICKS, 20000) condition:setFormula(-0.45, 0, -0.65, 0) combat:addCondition(condition) - local area = createCombatArea(AREA_CIRCLE2X2) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/rustheap_golem_wave.lua b/data-otservbr-global/scripts/spells/monster/rustheap_golem_wave.lua index 96a8a6c25c7..267592b1daa 100644 --- a/data-otservbr-global/scripts/spells/monster/rustheap_golem_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/rustheap_golem_wave.lua @@ -6,13 +6,12 @@ arr = { { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/sabretooth_wave.lua b/data-otservbr-global/scripts/spells/monster/sabretooth_wave.lua index bf32ceafd1d..4c4d4527c3b 100644 --- a/data-otservbr-global/scripts/spells/monster/sabretooth_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/sabretooth_wave.lua @@ -6,7 +6,7 @@ local area = { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, { 0, 0, 0, 0, 1, 1, 3, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, } combat:setArea(createCombatArea(area)) diff --git a/data-otservbr-global/scripts/spells/monster/sapling_explode.lua b/data-otservbr-global/scripts/spells/monster/sapling_explode.lua index 45a8f7535a2..4e6575b24c8 100644 --- a/data-otservbr-global/scripts/spells/monster/sapling_explode.lua +++ b/data-otservbr-global/scripts/spells/monster/sapling_explode.lua @@ -3,10 +3,11 @@ combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) combat:setArea(createCombatArea(AREA_CIRCLE3X3)) - function removeSapling(cid) local creature = Creature(cid) - if not creature then return false end + if not creature then + return false + end creature:remove() end diff --git a/data-otservbr-global/scripts/spells/monster/seacrest_serpent_wave.lua b/data-otservbr-global/scripts/spells/monster/seacrest_serpent_wave.lua index 04fb09e1655..a87ddc784d2 100644 --- a/data-otservbr-global/scripts/spells/monster/seacrest_serpent_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/seacrest_serpent_wave.lua @@ -8,7 +8,7 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/serpent_spawn_paralyze.lua b/data-otservbr-global/scripts/spells/monster/serpent_spawn_paralyze.lua index c129c9d5e6d..8caacd72d42 100644 --- a/data-otservbr-global/scripts/spells/monster/serpent_spawn_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/serpent_spawn_paralyze.lua @@ -11,7 +11,6 @@ local area = createCombatArea(AREA_CIRCLE2X2) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/shaburak_wave.lua b/data-otservbr-global/scripts/spells/monster/shaburak_wave.lua index 75bf34a18dd..403f8b85540 100644 --- a/data-otservbr-global/scripts/spells/monster/shaburak_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/shaburak_wave.lua @@ -6,13 +6,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/shadow_hound_curse.lua b/data-otservbr-global/scripts/spells/monster/shadow_hound_curse.lua index 60068abe9a3..730908c7d48 100644 --- a/data-otservbr-global/scripts/spells/monster/shadow_hound_curse.lua +++ b/data-otservbr-global/scripts/spells/monster/shadow_hound_curse.lua @@ -20,7 +20,7 @@ for i = 1, 1 do { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, }) combat[i]:setArea(area) combat[i]:addCondition(condition) diff --git a/data-otservbr-global/scripts/spells/monster/shock_head_paralyze.lua b/data-otservbr-global/scripts/spells/monster/shock_head_paralyze.lua index 9f55de3d295..c4f5c79b562 100644 --- a/data-otservbr-global/scripts/spells/monster/shock_head_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/shock_head_paralyze.lua @@ -14,12 +14,11 @@ local area = createCombatArea({ { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, }) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/shock_head_skill_reducer_2.lua b/data-otservbr-global/scripts/spells/monster/shock_head_skill_reducer_2.lua index 03f22007416..032cd8b13df 100644 --- a/data-otservbr-global/scripts/spells/monster/shock_head_skill_reducer_2.lua +++ b/data-otservbr-global/scripts/spells/monster/shock_head_skill_reducer_2.lua @@ -17,7 +17,7 @@ for i = 20, 50 do { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 1, 1, 1, 1, 0 }, { 0, 0, 1, 1, 1, 1, 1, 0, 0 }, - { 0, 0, 0, 1, 1, 1, 0, 0, 0 } + { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/single_cloud_chain.lua b/data-otservbr-global/scripts/spells/monster/single_cloud_chain.lua index ce3e51a7d9b..a214a4c564a 100644 --- a/data-otservbr-global/scripts/spells/monster/single_cloud_chain.lua +++ b/data-otservbr-global/scripts/spells/monster/single_cloud_chain.lua @@ -6,10 +6,14 @@ local spell = Spell("instant") function spell.onCastSpell(creature, var) local target = Creature(var.number) - if not target then return false end + if not target then + return false + end local creaturePos = creature:getPosition() local path = creaturePos:getPathTo(target:getPosition(), 0, 0, true, true, 8) - if not path or #path == 0 then return false end + if not path or #path == 0 then + return false + end for i = 1, #path do creaturePos:getNextPosition(path[i], 1) creaturePos:sendMagicEffect(CONST_ME_STORM) diff --git a/data-otservbr-global/scripts/spells/monster/single_death_chain.lua b/data-otservbr-global/scripts/spells/monster/single_death_chain.lua index c5183b118a4..3eaebe99f2d 100644 --- a/data-otservbr-global/scripts/spells/monster/single_death_chain.lua +++ b/data-otservbr-global/scripts/spells/monster/single_death_chain.lua @@ -6,10 +6,14 @@ local spell = Spell("instant") function spell.onCastSpell(creature, var) local target = Creature(var.number) - if not target then return false end + if not target then + return false + end local creaturePos = creature:getPosition() local path = creaturePos:getPathTo(target:getPosition(), 0, 0, true, true, 8) - if not path or #path == 0 then return false end + if not path or #path == 0 then + return false + end for i = 1, #path do creaturePos:getNextPosition(path[i], 1) creaturePos:sendMagicEffect(CONST_ME_WHITE_ENERGY_SPARK) diff --git a/data-otservbr-global/scripts/spells/monster/single_ice_chain.lua b/data-otservbr-global/scripts/spells/monster/single_ice_chain.lua index a5001e6c2ae..0ca9316a192 100644 --- a/data-otservbr-global/scripts/spells/monster/single_ice_chain.lua +++ b/data-otservbr-global/scripts/spells/monster/single_ice_chain.lua @@ -6,10 +6,14 @@ local spell = Spell("instant") function spell.onCastSpell(creature, var) local target = Creature(var.number) - if not target then return false end + if not target then + return false + end local creaturePos = creature:getPosition() local path = creaturePos:getPathTo(target:getPosition(), 0, 0, true, true, 8) - if not path or #path == 0 then return false end + if not path or #path == 0 then + return false + end for i = 1, #path do creaturePos:getNextPosition(path[i], 1) creaturePos:sendMagicEffect(CONST_ME_BLUE_ENERGY_SPARK) diff --git a/data-otservbr-global/scripts/spells/monster/slime_puddle_paralyze.lua b/data-otservbr-global/scripts/spells/monster/slime_puddle_paralyze.lua index fd214eee3af..48f2f3684ea 100644 --- a/data-otservbr-global/scripts/spells/monster/slime_puddle_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/slime_puddle_paralyze.lua @@ -6,12 +6,10 @@ condition:setParameter(CONDITION_PARAM_TICKS, 20000) condition:setFormula(-0.85, 0, -0.90, 0) combat:addCondition(condition) - local area = createCombatArea(AREA_SQUARE1X1) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/soulcatcher_summon.lua b/data-otservbr-global/scripts/spells/monster/soulcatcher_summon.lua index f2a75b7082e..a59ff17ae13 100644 --- a/data-otservbr-global/scripts/spells/monster/soulcatcher_summon.lua +++ b/data-otservbr-global/scripts/spells/monster/soulcatcher_summon.lua @@ -4,7 +4,7 @@ function spell.onCastSpell(creature, var) if creature:getCondition(CONDITION_POISON) or creature:getCondition(CONDITION_BLEEDING) then local pos = creature:getPosition() pos.y = pos.y - 1 - Game.createMonster('corrupted soul', pos, true, true) + Game.createMonster("corrupted soul", pos, true, true) creature:getPosition():sendMagicEffect(CONST_ME_TELEPORT) else return diff --git a/data-otservbr-global/scripts/spells/monster/souleater_wave.lua b/data-otservbr-global/scripts/spells/monster/souleater_wave.lua index 719c72cda9f..06b647d6a7f 100644 --- a/data-otservbr-global/scripts/spells/monster/souleater_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/souleater_wave.lua @@ -6,13 +6,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/soulwars_fear.lua b/data-otservbr-global/scripts/spells/monster/soulwars_fear.lua index f9a5afcc522..40802be58ba 100644 --- a/data-otservbr-global/scripts/spells/monster/soulwars_fear.lua +++ b/data-otservbr-global/scripts/spells/monster/soulwars_fear.lua @@ -9,7 +9,9 @@ local spell = Spell("instant") local function executeCombat(cid, var) local creature = Creature(cid) - if not creature then return end + if not creature then + return + end return combat:execute(creature, var) end diff --git a/data-otservbr-global/scripts/spells/monster/source_of_corruption_wave.lua b/data-otservbr-global/scripts/spells/monster/source_of_corruption_wave.lua index b179bf7b7f3..42eef5ca76d 100644 --- a/data-otservbr-global/scripts/spells/monster/source_of_corruption_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/source_of_corruption_wave.lua @@ -5,7 +5,7 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_PURPLEENERGY) combat:setArea(createCombatArea({ { 0, 0, 0, 0, 0 }, { 0, 1, 3, 1, 0 }, - { 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0 }, })) function spellCallback(param) diff --git a/data-otservbr-global/scripts/spells/monster/spawn_of_the_welter_heal.lua b/data-otservbr-global/scripts/spells/monster/spawn_of_the_welter_heal.lua index 841d1f7dc43..179e407071c 100644 --- a/data-otservbr-global/scripts/spells/monster/spawn_of_the_welter_heal.lua +++ b/data-otservbr-global/scripts/spells/monster/spawn_of_the_welter_heal.lua @@ -26,8 +26,7 @@ function onTargetCreature(creature, target) local max = 700 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then return true end diff --git a/data-otservbr-global/scripts/spells/monster/spawn_of_the_welter_heal2.lua b/data-otservbr-global/scripts/spells/monster/spawn_of_the_welter_heal2.lua index 02eb7d69f71..a899ebb821c 100644 --- a/data-otservbr-global/scripts/spells/monster/spawn_of_the_welter_heal2.lua +++ b/data-otservbr-global/scripts/spells/monster/spawn_of_the_welter_heal2.lua @@ -10,8 +10,7 @@ function onTargetCreature(creature, target) local max = 300 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then return true end diff --git a/data-otservbr-global/scripts/spells/monster/srezz_lleechT.lua b/data-otservbr-global/scripts/spells/monster/srezz_lleechT.lua index a569f674ff4..b3241a6cf53 100644 --- a/data-otservbr-global/scripts/spells/monster/srezz_lleechT.lua +++ b/data-otservbr-global/scripts/spells/monster/srezz_lleechT.lua @@ -5,7 +5,7 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD) local combatArea = { { 1, 1, 1 }, { 0, 1, 0 }, - { 0, 3, 0 } + { 0, 3, 0 }, } combat:setArea(createCombatArea(combatArea)) diff --git a/data-otservbr-global/scripts/spells/monster/stone_devourer_paralyze.lua b/data-otservbr-global/scripts/spells/monster/stone_devourer_paralyze.lua index 5491e2afeb2..777880fb471 100644 --- a/data-otservbr-global/scripts/spells/monster/stone_devourer_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/stone_devourer_paralyze.lua @@ -1,7 +1,6 @@ local combat = Combat() combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER) - local condition = Condition(CONDITION_PARALYZE) condition:setParameter(CONDITION_PARAM_TICKS, 20000) condition:setFormula(-0.50, 0, -0.60, 0) @@ -16,14 +15,13 @@ arr = { { 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 1, 1, 1, 1, 0 }, { 0, 0, 1, 1, 1, 1, 1, 0, 0 }, - { 0, 0, 0, 1, 1, 1, 0, 0, 0 } + { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/sulphur_spouter_wave.lua b/data-otservbr-global/scripts/spells/monster/sulphur_spouter_wave.lua index dca15f191cc..895f5970933 100644 --- a/data-otservbr-global/scripts/spells/monster/sulphur_spouter_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/sulphur_spouter_wave.lua @@ -7,7 +7,7 @@ AREA_WAVE = { { 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 0 }, - { 0, 0, 3, 0, 0 } + { 0, 0, 3, 0, 0 }, } combat:setArea(createCombatArea(AREA_WAVE)) diff --git a/data-otservbr-global/scripts/spells/monster/swampling_paralyze.lua b/data-otservbr-global/scripts/spells/monster/swampling_paralyze.lua index d0252807686..ac2f8ecfedf 100644 --- a/data-otservbr-global/scripts/spells/monster/swampling_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/swampling_paralyze.lua @@ -8,7 +8,7 @@ condition:setFormula(-0.1, 0, -0.1, 0) arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/tarbaz_tp.lua b/data-otservbr-global/scripts/spells/monster/tarbaz_tp.lua index eaca3955d86..146ee2d7544 100644 --- a/data-otservbr-global/scripts/spells/monster/tarbaz_tp.lua +++ b/data-otservbr-global/scripts/spells/monster/tarbaz_tp.lua @@ -13,9 +13,6 @@ local function teleport(fromPosition, toPosition) end end - - - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/tenebris_summon.lua b/data-otservbr-global/scripts/spells/monster/tenebris_summon.lua index f2f485c5654..cb921639372 100644 --- a/data-otservbr-global/scripts/spells/monster/tenebris_summon.lua +++ b/data-otservbr-global/scripts/spells/monster/tenebris_summon.lua @@ -9,7 +9,7 @@ function spell.onCastSpell(creature, var) if not mid then return end - mid:say('The shadow fiend revives!', TALKTYPE_MONSTER_SAY) + mid:say("The shadow fiend revives!", TALKTYPE_MONSTER_SAY) return combat:execute(creature, var) end diff --git a/data-otservbr-global/scripts/spells/monster/tenebris_ultimate.lua b/data-otservbr-global/scripts/spells/monster/tenebris_ultimate.lua index 51697e1edf2..f80f3990761 100644 --- a/data-otservbr-global/scripts/spells/monster/tenebris_ultimate.lua +++ b/data-otservbr-global/scripts/spells/monster/tenebris_ultimate.lua @@ -2,7 +2,7 @@ local vocation = { VOCATION.BASE_ID.SORCERER, VOCATION.BASE_ID.DRUID, VOCATION.BASE_ID.PALADIN, - VOCATION.BASE_ID.KNIGHT + VOCATION.BASE_ID.KNIGHT, } area = { @@ -20,7 +20,7 @@ area = { { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, } local createArea = createCombatArea(area) @@ -81,7 +81,7 @@ function spell.onCastSpell(creature, var) if not spec:getPosition():compare(roomCenterPosition) then spec:teleportTo(roomCenterPosition) end - elseif spec:getName():lower() == 'lady tenebris' then + elseif spec:getName():lower() == "lady tenebris" then if not spec:getPosition():compare(roomCenterPosition) then spec:teleportTo(roomCenterPosition) end diff --git a/data-otservbr-global/scripts/spells/monster/tentuglys_head_energyT.lua b/data-otservbr-global/scripts/spells/monster/tentuglys_head_energyT.lua index 9ac993132cf..4a78aa225d0 100644 --- a/data-otservbr-global/scripts/spells/monster/tentuglys_head_energyT.lua +++ b/data-otservbr-global/scripts/spells/monster/tentuglys_head_energyT.lua @@ -7,7 +7,7 @@ local combatArea = { { 0, 1, 0 }, { 0, 1, 0 }, { 0, 1, 0 }, - { 0, 3, 0 } + { 0, 3, 0 }, } combat:setArea(createCombatArea(combatArea)) diff --git a/data-otservbr-global/scripts/spells/monster/terofar_heal.lua b/data-otservbr-global/scripts/spells/monster/terofar_heal.lua index fb78378600e..d4d96fa46e1 100644 --- a/data-otservbr-global/scripts/spells/monster/terofar_heal.lua +++ b/data-otservbr-global/scripts/spells/monster/terofar_heal.lua @@ -26,8 +26,7 @@ function onTargetCreature(creature, target) local max = 500 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then return true end diff --git a/data-otservbr-global/scripts/spells/monster/terofar_skill_reducer_1.lua b/data-otservbr-global/scripts/spells/monster/terofar_skill_reducer_1.lua index 061d8361e5c..d309a434759 100644 --- a/data-otservbr-global/scripts/spells/monster/terofar_skill_reducer_1.lua +++ b/data-otservbr-global/scripts/spells/monster/terofar_skill_reducer_1.lua @@ -18,7 +18,7 @@ for i = 1, 10 do { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, }) combat[i]:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/terofar_skill_reducer_2.lua b/data-otservbr-global/scripts/spells/monster/terofar_skill_reducer_2.lua index a4e664580d3..dac495df661 100644 --- a/data-otservbr-global/scripts/spells/monster/terofar_skill_reducer_2.lua +++ b/data-otservbr-global/scripts/spells/monster/terofar_skill_reducer_2.lua @@ -16,7 +16,7 @@ for i = 1, 10 do { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, }) combat[i]:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/the_pale_count_wave.lua b/data-otservbr-global/scripts/spells/monster/the_pale_count_wave.lua index db8858abbca..7869de5774a 100644 --- a/data-otservbr-global/scripts/spells/monster/the_pale_count_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/the_pale_count_wave.lua @@ -8,13 +8,12 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/the_voice_of_ruin_paralyze.lua b/data-otservbr-global/scripts/spells/monster/the_voice_of_ruin_paralyze.lua index adc1ecba40d..c2c52c52be6 100644 --- a/data-otservbr-global/scripts/spells/monster/the_voice_of_ruin_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/the_voice_of_ruin_paralyze.lua @@ -10,7 +10,6 @@ local area = createCombatArea(AREA_CIRCLE2X2) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/the_welter_heal2.lua b/data-otservbr-global/scripts/spells/monster/the_welter_heal2.lua index 6e75b40f228..a4e3430b533 100644 --- a/data-otservbr-global/scripts/spells/monster/the_welter_heal2.lua +++ b/data-otservbr-global/scripts/spells/monster/the_welter_heal2.lua @@ -26,8 +26,7 @@ function onTargetCreature(creature, target) local max = 300 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then return true end diff --git a/data-otservbr-global/scripts/spells/monster/the_welter_summon2.lua b/data-otservbr-global/scripts/spells/monster/the_welter_summon2.lua index 61d4ce47b33..cdeee40e437 100644 --- a/data-otservbr-global/scripts/spells/monster/the_welter_summon2.lua +++ b/data-otservbr-global/scripts/spells/monster/the_welter_summon2.lua @@ -11,7 +11,7 @@ function spell.onCastSpell(creature, var) end end end - if (check < 10) then + if check < 10 then creature:getPosition():sendMagicEffect(CONST_ME_GREEN_RINGS) Game.createMonster("Egg", creature:getPosition(), false, true) else diff --git a/data-otservbr-global/scripts/spells/monster/thorn_summon.lua b/data-otservbr-global/scripts/spells/monster/thorn_summon.lua index d30e688dbaf..56ff1720bb1 100644 --- a/data-otservbr-global/scripts/spells/monster/thorn_summon.lua +++ b/data-otservbr-global/scripts/spells/monster/thorn_summon.lua @@ -6,7 +6,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, var) local creaturePos = creature:getPosition() - local mid = Game.createMonster('thorn minion', Position(creaturePos.x + math.random(-3, 3), creaturePos.y + math.random(-3, 3), creaturePos.z), true, false) + local mid = Game.createMonster("thorn minion", Position(creaturePos.x + math.random(-3, 3), creaturePos.y + math.random(-3, 3), creaturePos.z), true, false) if not mid then return end diff --git a/data-otservbr-global/scripts/spells/monster/time_guardian.lua b/data-otservbr-global/scripts/spells/monster/time_guardian.lua index 23a712e325a..266b811cf51 100644 --- a/data-otservbr-global/scripts/spells/monster/time_guardian.lua +++ b/data-otservbr-global/scripts/spells/monster/time_guardian.lua @@ -1,6 +1,6 @@ local monsters = { [1] = { pos = Position(32980, 31664, 13) }, - [2] = { pos = Position(32975, 31664, 13) } + [2] = { pos = Position(32975, 31664, 13) }, } local function functionBack(position, oldpos) @@ -9,7 +9,7 @@ local function functionBack(position, oldpos) local spectators, spectator = Game.getSpectators(Position(32977, 31662, 14), false, false, 15, 15, 15, 15) for v = 1, #spectators do spectator = spectators[v] - if spectator:getName():lower() == 'the freezing time guardian' or spectator:getName():lower() == 'the blazing time guardian' then + if spectator:getName():lower() == "the freezing time guardian" or spectator:getName():lower() == "the blazing time guardian" then oldpos = spectator:getPosition() bool = true end @@ -21,7 +21,7 @@ local function functionBack(position, oldpos) local specs, spec = Game.getSpectators(Position(32977, 31662, 14), false, false, 15, 15, 15, 15) for i = 1, #specs do spec = specs[i] - if spec:isMonster() and spec:getName():lower() == 'the freezing time guardian' or spec:getName():lower() == 'the blazing time guardian' then + if spec:isMonster() and spec:getName():lower() == "the freezing time guardian" or spec:getName():lower() == "the blazing time guardian" then spec:teleportTo(position) health = spec:getHealth() diference = guardian:getHealth() - health diff --git a/data-otservbr-global/scripts/spells/monster/time_guardian_lost_time.lua b/data-otservbr-global/scripts/spells/monster/time_guardian_lost_time.lua index 5dd4dfc125f..7076b09d1a7 100644 --- a/data-otservbr-global/scripts/spells/monster/time_guardian_lost_time.lua +++ b/data-otservbr-global/scripts/spells/monster/time_guardian_lost_time.lua @@ -5,10 +5,10 @@ function spell.onCastSpell(creature, var) if pos.z ~= 15 then return true end - if creature:getName():lower() == 'the freezing time guardian' then - Game.createMonster('lost time', { x = creature:getPosition().x + math.random(-2, 2), y = creature:getPosition().y + math.random(-2, 2), z = creature:getPosition().z }) - elseif creature:getName():lower() == 'the blazing time guardian' then - Game.createMonster('time waster', { x = creature:getPosition().x + math.random(-2, 2), y = creature:getPosition().y + math.random(-2, 2), z = creature:getPosition().z }) + if creature:getName():lower() == "the freezing time guardian" then + Game.createMonster("lost time", { x = creature:getPosition().x + math.random(-2, 2), y = creature:getPosition().y + math.random(-2, 2), z = creature:getPosition().z }) + elseif creature:getName():lower() == "the blazing time guardian" then + Game.createMonster("time waster", { x = creature:getPosition().x + math.random(-2, 2), y = creature:getPosition().y + math.random(-2, 2), z = creature:getPosition().z }) end return true end diff --git a/data-otservbr-global/scripts/spells/monster/time_guardiann.lua b/data-otservbr-global/scripts/spells/monster/time_guardiann.lua index 420e64956f5..f98ee4195c9 100644 --- a/data-otservbr-global/scripts/spells/monster/time_guardiann.lua +++ b/data-otservbr-global/scripts/spells/monster/time_guardiann.lua @@ -1,6 +1,6 @@ local monsters = { [1] = { pos = Position(32810, 32664, 14) }, - [2] = { pos = Position(32815, 32664, 14) } + [2] = { pos = Position(32815, 32664, 14) }, } local function functionBack(position, oldpos) @@ -9,7 +9,7 @@ local function functionBack(position, oldpos) local spectators, spectator = Game.getSpectators(Position(32813, 32664, 14), false, false, 15, 15, 15, 15) for v = 1, #spectators do spectator = spectators[v] - if spectator:getName():lower() == 'the blazing time guardian' or spectator:getName():lower() == 'the freezing time guardian' then + if spectator:getName():lower() == "the blazing time guardian" or spectator:getName():lower() == "the freezing time guardian" then oldpos = spectator:getPosition() bool = true end @@ -21,7 +21,7 @@ local function functionBack(position, oldpos) local specs, spec = Game.getSpectators(Position(32813, 32664, 14), false, false, 15, 15, 15, 15) for i = 1, #specs do spec = specs[i] - if spec:isMonster() and spec:getName():lower() == 'the blazing time guardian' or spec:getName():lower() == 'the freezing time guardian' then + if spec:isMonster() and spec:getName():lower() == "the blazing time guardian" or spec:getName():lower() == "the freezing time guardian" then spec:teleportTo(position) health = spec:getHealth() diference = guardian:getHealth() - health diff --git a/data-otservbr-global/scripts/spells/monster/timira_fire_explosion.lua b/data-otservbr-global/scripts/spells/monster/timira_fire_explosion.lua index b30002d9db5..da18f18dfc7 100644 --- a/data-otservbr-global/scripts/spells/monster/timira_fire_explosion.lua +++ b/data-otservbr-global/scripts/spells/monster/timira_fire_explosion.lua @@ -19,7 +19,7 @@ local arrLarge = { { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, } local arrSmall = { @@ -35,7 +35,7 @@ local arrSmall = { { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, } combatLarge:setArea(createCombatArea(arrLarge)) diff --git a/data-otservbr-global/scripts/spells/monster/timira_fire_ring.lua b/data-otservbr-global/scripts/spells/monster/timira_fire_ring.lua index 7eb46a08176..6fb9c291de6 100644 --- a/data-otservbr-global/scripts/spells/monster/timira_fire_ring.lua +++ b/data-otservbr-global/scripts/spells/monster/timira_fire_ring.lua @@ -11,7 +11,7 @@ local arrLarge = { { 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0 }, { 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, - { 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 } + { 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, } local arrMedium = { @@ -27,7 +27,7 @@ local arrMedium = { { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, } local arrSmall = { @@ -43,7 +43,7 @@ local arrSmall = { { 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, } local combatSmallRing = Combat() diff --git a/data-otservbr-global/scripts/spells/monster/twins_skill_reducer.lua b/data-otservbr-global/scripts/spells/monster/twins_skill_reducer.lua index 2a568c8ec23..84891372499 100644 --- a/data-otservbr-global/scripts/spells/monster/twins_skill_reducer.lua +++ b/data-otservbr-global/scripts/spells/monster/twins_skill_reducer.lua @@ -18,7 +18,7 @@ for i = 10, 25 do { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, }) combat[i]:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/tyrn_electrify.lua b/data-otservbr-global/scripts/spells/monster/tyrn_electrify.lua index 3bceb27148b..54fdd9ccf29 100644 --- a/data-otservbr-global/scripts/spells/monster/tyrn_electrify.lua +++ b/data-otservbr-global/scripts/spells/monster/tyrn_electrify.lua @@ -13,7 +13,7 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/unchained_fire_beam.lua b/data-otservbr-global/scripts/spells/monster/unchained_fire_beam.lua index 068075f9eb7..b040786e864 100644 --- a/data-otservbr-global/scripts/spells/monster/unchained_fire_beam.lua +++ b/data-otservbr-global/scripts/spells/monster/unchained_fire_beam.lua @@ -10,7 +10,7 @@ local beam = { { 0, 1, 0 }, { 0, 1, 0 }, { 0, 1, 0 }, - { 0, 3, 0 } + { 0, 3, 0 }, } combat:setArea(createCombatArea(beam)) @@ -19,7 +19,9 @@ local spell = Spell("instant") function onTargetTile(creature, pos) local tile = Tile(pos) - if not tile then return end + if not tile then + return + end if tile:getTopCreature() and tile:getTopCreature():isMonster() then if tile:getTopCreature():getName():lower() == "magma bubble" then tile:getTopCreature():addHealth(math.random(2000, 5000)) diff --git a/data-otservbr-global/scripts/spells/monster/unchained_fire_explosion.lua b/data-otservbr-global/scripts/spells/monster/unchained_fire_explosion.lua index 4944c2713bd..284643fd04e 100644 --- a/data-otservbr-global/scripts/spells/monster/unchained_fire_explosion.lua +++ b/data-otservbr-global/scripts/spells/monster/unchained_fire_explosion.lua @@ -15,7 +15,7 @@ local arr = { { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/undead_dragon_curse.lua b/data-otservbr-global/scripts/spells/monster/undead_dragon_curse.lua index 0edce900f45..2ccdee978a0 100644 --- a/data-otservbr-global/scripts/spells/monster/undead_dragon_curse.lua +++ b/data-otservbr-global/scripts/spells/monster/undead_dragon_curse.lua @@ -23,7 +23,7 @@ for i = 1, 2 do { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, }) combat[i]:setArea(area) combat[i]:addCondition(condition) diff --git a/data-otservbr-global/scripts/spells/monster/undead_jester_paralyze.lua b/data-otservbr-global/scripts/spells/monster/undead_jester_paralyze.lua index 17611c0afa1..daed660ea9f 100644 --- a/data-otservbr-global/scripts/spells/monster/undead_jester_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/undead_jester_paralyze.lua @@ -15,14 +15,13 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/undertaker_square_explosion.lua b/data-otservbr-global/scripts/spells/monster/undertaker_square_explosion.lua index 27b13515f60..50687bc2afe 100644 --- a/data-otservbr-global/scripts/spells/monster/undertaker_square_explosion.lua +++ b/data-otservbr-global/scripts/spells/monster/undertaker_square_explosion.lua @@ -3,9 +3,9 @@ combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE) combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITBYPOISON) arr = { - { 1, 1, 1, }, - { 1, 3, 1, }, - { 1, 1, 1, }, + { 1, 1, 1 }, + { 1, 3, 1 }, + { 1, 1, 1 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/urmahlullu_ring.lua b/data-otservbr-global/scripts/spells/monster/urmahlullu_ring.lua index 32ff577ca32..c3a5f978db5 100644 --- a/data-otservbr-global/scripts/spells/monster/urmahlullu_ring.lua +++ b/data-otservbr-global/scripts/spells/monster/urmahlullu_ring.lua @@ -6,10 +6,9 @@ arr = { { 1, 0, 0, 0, 1 }, { 1, 0, 2, 0, 1 }, { 1, 0, 0, 0, 1 }, - { 0, 1, 1, 1, 0 } + { 0, 1, 1, 1, 0 }, } - local area = createCombatArea(arr) combat:setArea(area) diff --git a/data-otservbr-global/scripts/spells/monster/walker_skill_reducer.lua b/data-otservbr-global/scripts/spells/monster/walker_skill_reducer.lua index 1664bb332a1..50295b5d972 100644 --- a/data-otservbr-global/scripts/spells/monster/walker_skill_reducer.lua +++ b/data-otservbr-global/scripts/spells/monster/walker_skill_reducer.lua @@ -20,7 +20,6 @@ for i = 45, 60 do local area = createCombatArea(AREA_CIRCLE3X3) combat[i]:setArea(area) - function onTargetTile(creature, pos) local creatureTable = {} local n, i = Tile({ x = pos.x, y = pos.y, z = pos.z }).creatures, 1 diff --git a/data-otservbr-global/scripts/spells/monster/war_golem_skill_reducer.lua b/data-otservbr-global/scripts/spells/monster/war_golem_skill_reducer.lua index ba3c3c7928f..5d8e825a5c6 100644 --- a/data-otservbr-global/scripts/spells/monster/war_golem_skill_reducer.lua +++ b/data-otservbr-global/scripts/spells/monster/war_golem_skill_reducer.lua @@ -16,7 +16,7 @@ for i = 40, 60 do { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/warden_ring.lua b/data-otservbr-global/scripts/spells/monster/warden_ring.lua index 3305eba365c..d91975323e4 100644 --- a/data-otservbr-global/scripts/spells/monster/warden_ring.lua +++ b/data-otservbr-global/scripts/spells/monster/warden_ring.lua @@ -6,7 +6,7 @@ arr = { { 1, 0, 0, 0, 1 }, { 1, 0, 2, 0, 1 }, { 1, 0, 0, 0, 1 }, - { 0, 1, 1, 1, 0 } + { 0, 1, 1, 1, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/warden_x.lua b/data-otservbr-global/scripts/spells/monster/warden_x.lua index 9b551b750e8..317e472aa17 100644 --- a/data-otservbr-global/scripts/spells/monster/warden_x.lua +++ b/data-otservbr-global/scripts/spells/monster/warden_x.lua @@ -4,7 +4,7 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER) arr = { { 1, 0, 1 }, { 0, 2, 0 }, - { 1, 0, 1 } + { 1, 0, 1 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/wave_t.lua b/data-otservbr-global/scripts/spells/monster/wave_t.lua index 70da13b8969..52691ddbce6 100644 --- a/data-otservbr-global/scripts/spells/monster/wave_t.lua +++ b/data-otservbr-global/scripts/spells/monster/wave_t.lua @@ -4,7 +4,7 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS) arr = { { 1, 1, 1 }, { 0, 1, 0 }, - { 0, 3, 0 } + { 0, 3, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/weeper_paralyze.lua b/data-otservbr-global/scripts/spells/monster/weeper_paralyze.lua index bb13493dceb..aa8b981b3fa 100644 --- a/data-otservbr-global/scripts/spells/monster/weeper_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/weeper_paralyze.lua @@ -11,14 +11,13 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/werelion_wave.lua b/data-otservbr-global/scripts/spells/monster/werelion_wave.lua index 6a762fe9a5a..30353c4a7c1 100644 --- a/data-otservbr-global/scripts/spells/monster/werelion_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/werelion_wave.lua @@ -5,13 +5,12 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) arr = { { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/werewolf_skill_reducer.lua b/data-otservbr-global/scripts/spells/monster/werewolf_skill_reducer.lua index 686ebba8072..37b3fdfe11e 100644 --- a/data-otservbr-global/scripts/spells/monster/werewolf_skill_reducer.lua +++ b/data-otservbr-global/scripts/spells/monster/werewolf_skill_reducer.lua @@ -11,7 +11,7 @@ for i = 65, 85 do arr = { { 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, - { 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0 } + { 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/white_pale_paralyze.lua b/data-otservbr-global/scripts/spells/monster/white_pale_paralyze.lua index e489765258d..d87667277c8 100644 --- a/data-otservbr-global/scripts/spells/monster/white_pale_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/white_pale_paralyze.lua @@ -11,14 +11,13 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/white_shade_paralyze.lua b/data-otservbr-global/scripts/spells/monster/white_shade_paralyze.lua index af3c6c4c451..e2738190401 100644 --- a/data-otservbr-global/scripts/spells/monster/white_shade_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/white_shade_paralyze.lua @@ -10,7 +10,6 @@ local area = createCombatArea(AREA_CIRCLE2X2) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/wiggler_paralyze.lua b/data-otservbr-global/scripts/spells/monster/wiggler_paralyze.lua index a585bc486ee..bd815f42074 100644 --- a/data-otservbr-global/scripts/spells/monster/wiggler_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/wiggler_paralyze.lua @@ -9,14 +9,13 @@ combat:addCondition(condition) arr = { { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/wilting_leaf_golem_paralyze.lua b/data-otservbr-global/scripts/spells/monster/wilting_leaf_golem_paralyze.lua index 2f25de85f89..9c90d8e4bbf 100644 --- a/data-otservbr-global/scripts/spells/monster/wilting_leaf_golem_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/wilting_leaf_golem_paralyze.lua @@ -6,12 +6,10 @@ condition:setParameter(CONDITION_PARAM_TICKS, 20000) condition:setFormula(-0.25, 0, -0.45, 0) combat:addCondition(condition) - local area = createCombatArea(AREA_SQUARE1X1) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/woodling_paralyze.lua b/data-otservbr-global/scripts/spells/monster/woodling_paralyze.lua index f5376c1fe9c..c7d0b0844e2 100644 --- a/data-otservbr-global/scripts/spells/monster/woodling_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/woodling_paralyze.lua @@ -9,7 +9,7 @@ arr = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/worm_priestess_paralyze.lua b/data-otservbr-global/scripts/spells/monster/worm_priestess_paralyze.lua index e618540f7d5..1a1e6297fa2 100644 --- a/data-otservbr-global/scripts/spells/monster/worm_priestess_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/worm_priestess_paralyze.lua @@ -9,14 +9,13 @@ combat:addCondition(condition) arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/wyrm_wave.lua b/data-otservbr-global/scripts/spells/monster/wyrm_wave.lua index 6485ede23b5..b07e3584543 100644 --- a/data-otservbr-global/scripts/spells/monster/wyrm_wave.lua +++ b/data-otservbr-global/scripts/spells/monster/wyrm_wave.lua @@ -8,13 +8,12 @@ arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) combat:setArea(area) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/monster/wyvern_drunk.lua b/data-otservbr-global/scripts/spells/monster/wyvern_drunk.lua index dd394839010..117d3089983 100644 --- a/data-otservbr-global/scripts/spells/monster/wyvern_drunk.lua +++ b/data-otservbr-global/scripts/spells/monster/wyvern_drunk.lua @@ -8,7 +8,7 @@ combat:addCondition(condition) arr = { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 }, } local area = createCombatArea(arr) diff --git a/data-otservbr-global/scripts/spells/monster/zamulosh_invisible.lua b/data-otservbr-global/scripts/spells/monster/zamulosh_invisible.lua index 54252e916cf..da40d0c8362 100644 --- a/data-otservbr-global/scripts/spells/monster/zamulosh_invisible.lua +++ b/data-otservbr-global/scripts/spells/monster/zamulosh_invisible.lua @@ -6,7 +6,7 @@ local function invisible(fromPosition, toPosition) for z = fromPosition.z, toPosition.z do local creature = Tile(Position(x, y, z)):getTopCreature() if creature then - if creature:isMonster() and creature:getName():lower() == 'zamulosh' then + if creature:isMonster() and creature:getName():lower() == "zamulosh" then creature:getPosition():sendMagicEffect(CONST_ME_TELEPORT) creature:addCondition(condition) end diff --git a/data-otservbr-global/scripts/spells/monster/zavarash_heal.lua b/data-otservbr-global/scripts/spells/monster/zavarash_heal.lua index fcade2391a3..7a52535bac0 100644 --- a/data-otservbr-global/scripts/spells/monster/zavarash_heal.lua +++ b/data-otservbr-global/scripts/spells/monster/zavarash_heal.lua @@ -26,8 +26,7 @@ function onTargetCreature(creature, target) local max = 575 local master = target:getMaster() - if target:isPlayer() and not master - or master and master:isPlayer() then + if target:isPlayer() and not master or master and master:isPlayer() then return true end diff --git a/data-otservbr-global/scripts/spells/monster/zulazza_the_corruptor_paralyze.lua b/data-otservbr-global/scripts/spells/monster/zulazza_the_corruptor_paralyze.lua index fd077b5982e..15647f476d1 100644 --- a/data-otservbr-global/scripts/spells/monster/zulazza_the_corruptor_paralyze.lua +++ b/data-otservbr-global/scripts/spells/monster/zulazza_the_corruptor_paralyze.lua @@ -11,7 +11,6 @@ local area = createCombatArea(AREA_CIRCLE2X2) combat:setArea(area) combat:addCondition(condition) - local spell = Spell("instant") function spell.onCastSpell(creature, var) diff --git a/data-otservbr-global/scripts/spells/party/enchant_party.lua b/data-otservbr-global/scripts/spells/party/enchant_party.lua index ed1987c4c32..1eae69d9ef0 100644 --- a/data-otservbr-global/scripts/spells/party/enchant_party.lua +++ b/data-otservbr-global/scripts/spells/party/enchant_party.lua @@ -24,8 +24,8 @@ function spell.onCastSpell(creature, var, isHotkey) end local membersList = party:getMembers() - membersList[#membersList+1] = party:getLeader() - if membersList == nil or type(membersList) ~= 'table' or #membersList <= 1 then + membersList[#membersList + 1] = party:getLeader() + if membersList == nil or type(membersList) ~= "table" or #membersList <= 1 then creature:sendCancelMessage("No party members in range.") position:sendMagicEffect(CONST_ME_POFF) return false @@ -34,7 +34,7 @@ function spell.onCastSpell(creature, var, isHotkey) local affectedList = {} for _, targetPlayer in ipairs(membersList) do if targetPlayer:getPosition():getDistance(position) <= 36 then - affectedList[#affectedList+1] = targetPlayer + affectedList[#affectedList + 1] = targetPlayer end end diff --git a/data-otservbr-global/scripts/spells/party/heal_party.lua b/data-otservbr-global/scripts/spells/party/heal_party.lua index 80f18045196..31c042b0245 100644 --- a/data-otservbr-global/scripts/spells/party/heal_party.lua +++ b/data-otservbr-global/scripts/spells/party/heal_party.lua @@ -25,8 +25,8 @@ function spell.onCastSpell(creature, var) end local membersList = party:getMembers() - membersList[#membersList+1] = party:getLeader() - if membersList == nil or type(membersList) ~= 'table' or #membersList <= 1 then + membersList[#membersList + 1] = party:getLeader() + if membersList == nil or type(membersList) ~= "table" or #membersList <= 1 then creature:sendCancelMessage("No party members in range.") position:sendMagicEffect(CONST_ME_POFF) return false @@ -35,7 +35,7 @@ function spell.onCastSpell(creature, var) local affectedList = {} for _, targetPlayer in ipairs(membersList) do if targetPlayer:getPosition():getDistance(position) <= 36 then - affectedList[#affectedList+1] = targetPlayer + affectedList[#affectedList + 1] = targetPlayer end end diff --git a/data-otservbr-global/scripts/spells/party/protect_party.lua b/data-otservbr-global/scripts/spells/party/protect_party.lua index ba9c15d8da9..aa30ed766f1 100644 --- a/data-otservbr-global/scripts/spells/party/protect_party.lua +++ b/data-otservbr-global/scripts/spells/party/protect_party.lua @@ -24,8 +24,8 @@ function spell.onCastSpell(creature, var) end local membersList = party:getMembers() - membersList[#membersList+1] = party:getLeader() - if membersList == nil or type(membersList) ~= 'table' or #membersList <= 1 then + membersList[#membersList + 1] = party:getLeader() + if membersList == nil or type(membersList) ~= "table" or #membersList <= 1 then creature:sendCancelMessage("No party members in range.") position:sendMagicEffect(CONST_ME_POFF) return false @@ -34,7 +34,7 @@ function spell.onCastSpell(creature, var) local affectedList = {} for _, targetPlayer in ipairs(membersList) do if targetPlayer:getPosition():getDistance(position) <= 36 then - affectedList[#affectedList+1] = targetPlayer + affectedList[#affectedList + 1] = targetPlayer end end diff --git a/data-otservbr-global/scripts/spells/party/train_party.lua b/data-otservbr-global/scripts/spells/party/train_party.lua index 2b75e62a498..b9e5e0e91fa 100644 --- a/data-otservbr-global/scripts/spells/party/train_party.lua +++ b/data-otservbr-global/scripts/spells/party/train_party.lua @@ -25,8 +25,8 @@ function spell.onCastSpell(creature, var) end local membersList = party:getMembers() - membersList[#membersList+1] = party:getLeader() - if membersList == nil or type(membersList) ~= 'table' or #membersList <= 1 then + membersList[#membersList + 1] = party:getLeader() + if membersList == nil or type(membersList) ~= "table" or #membersList <= 1 then creature:sendCancelMessage("No party members in range.") position:sendMagicEffect(CONST_ME_POFF) return false @@ -35,7 +35,7 @@ function spell.onCastSpell(creature, var) local affectedList = {} for _, targetPlayer in ipairs(membersList) do if targetPlayer:getPosition():getDistance(position) <= 36 then - affectedList[#affectedList+1] = targetPlayer + affectedList[#affectedList + 1] = targetPlayer end end diff --git a/data-otservbr-global/scripts/spells/support/charge.lua b/data-otservbr-global/scripts/spells/support/charge.lua index 0ea31c57556..a78780574ad 100644 --- a/data-otservbr-global/scripts/spells/support/charge.lua +++ b/data-otservbr-global/scripts/spells/support/charge.lua @@ -11,7 +11,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, variant) local summons = creature:getSummons() - if summons and type(summons) == 'table' and #summons > 0 then + if summons and type(summons) == "table" and #summons > 0 then for i = 1, #summons do local summon = summons[i] local summon_t = summon:getType() diff --git a/data-otservbr-global/scripts/spells/support/expose_weakness.lua b/data-otservbr-global/scripts/spells/support/expose_weakness.lua index b6edf3d8439..ee5659f4f29 100644 --- a/data-otservbr-global/scripts/spells/support/expose_weakness.lua +++ b/data-otservbr-global/scripts/spells/support/expose_weakness.lua @@ -13,7 +13,7 @@ function onTargetCreature(creature, target) condition:setParameter(CONDITION_PARAM_BUFF_DAMAGERECEIVED, 105) local grade = 0 - if (creature and creature:getPlayer()) then + if creature and creature:getPlayer() then grade = creature:upgradeSpellsWOD("Drain_Body_Spells") end condition:setParameter(CONDITION_PARAM_DRAIN_BODY, grade) diff --git a/data-otservbr-global/scripts/spells/support/find_fiend.lua b/data-otservbr-global/scripts/spells/support/find_fiend.lua index e52d228b38e..dd2a91f0584 100644 --- a/data-otservbr-global/scripts/spells/support/find_fiend.lua +++ b/data-otservbr-global/scripts/spells/support/find_fiend.lua @@ -15,22 +15,22 @@ local directions = { [DIRECTION_NORTHEAST] = "north-east", [DIRECTION_NORTHWEST] = "north-west", [DIRECTION_SOUTHEAST] = "south-east", - [DIRECTION_SOUTHWEST] = "south-west" + [DIRECTION_SOUTHWEST] = "south-west", } local messages = { [DISTANCE_BESIDE] = { [LEVEL_LOWER] = "is below you", [LEVEL_SAME] = "is standing next to you", - [LEVEL_HIGHER] = "is above you" + [LEVEL_HIGHER] = "is above you", }, [DISTANCE_CLOSE] = { [LEVEL_LOWER] = "is on a lower level to the", [LEVEL_SAME] = "is to the", - [LEVEL_HIGHER] = "is on a higher level to the" + [LEVEL_HIGHER] = "is on a higher level to the", }, [DISTANCE_FAR] = "is far to the", - [DISTANCE_VERYFAR] = "is very far to the" + [DISTANCE_VERYFAR] = "is very far to the", } local spell = Spell("instant") @@ -54,7 +54,7 @@ function spell.onCastSpell(creature, variant) local positionDifference = { x = creaturePosition.x - targetPosition.x, y = creaturePosition.y - targetPosition.y, - z = creaturePosition.z - targetPosition.z + z = creaturePosition.z - targetPosition.z, } local maxPositionDifference, direction = math.max(math.abs(positionDifference.x), math.abs(positionDifference.y)) @@ -63,45 +63,41 @@ function spell.onCastSpell(creature, variant) if math.abs(positionTangent) < 0.4142 then direction = positionDifference.x > 0 and DIRECTION_WEST or DIRECTION_EAST elseif math.abs(positionTangent) < 2.4142 then - direction = positionTangent > 0 and - (positionDifference.y > 0 and DIRECTION_NORTHWEST or DIRECTION_SOUTHEAST) or - positionDifference.x > 0 and DIRECTION_SOUTHWEST or DIRECTION_NORTHEAST + direction = positionTangent > 0 and (positionDifference.y > 0 and DIRECTION_NORTHWEST or DIRECTION_SOUTHEAST) or positionDifference.x > 0 and DIRECTION_SOUTHWEST or DIRECTION_NORTHEAST else direction = positionDifference.y > 0 and DIRECTION_NORTH or DIRECTION_SOUTH end end local level = positionDifference.z > 0 and LEVEL_HIGHER or positionDifference.z < 0 and LEVEL_LOWER or LEVEL_SAME - local distance = maxPositionDifference < 5 and DISTANCE_BESIDE or maxPositionDifference < 101 and DISTANCE_CLOSE or - maxPositionDifference < 275 and DISTANCE_FAR or DISTANCE_VERYFAR + local distance = maxPositionDifference < 5 and DISTANCE_BESIDE or maxPositionDifference < 101 and DISTANCE_CLOSE or maxPositionDifference < 275 and DISTANCE_FAR or DISTANCE_VERYFAR local message = messages[distance][level] or messages[distance] if distance ~= DISTANCE_BESIDE then message = message .. " " .. directions[direction] end local monsterType = target:getType() - local stringLevel = 'Unknown' + local stringLevel = "Unknown" if monsterType and creature:isMonsterBestiaryUnlocked(monsterType:raceId()) then local bestiaryKillsAmount = monsterType:BestiarytoKill() if bestiaryKillsAmount >= 5 and bestiaryKillsAmount <= 25 then - stringLevel = 'Harmless' + stringLevel = "Harmless" elseif bestiaryKillsAmount <= 250 then - stringLevel = 'Trivial' + stringLevel = "Trivial" elseif bestiaryKillsAmount <= 500 then - stringLevel = 'Easy' + stringLevel = "Easy" elseif bestiaryKillsAmount <= 1000 then - stringLevel = 'Medium' + stringLevel = "Medium" elseif bestiaryKillsAmount <= 2500 then - stringLevel = 'Hard' + stringLevel = "Hard" elseif bestiaryKillsAmount <= 5000 then - stringLevel = 'Challenging' + stringLevel = "Challenging" end end - message = string.format("The monster " .. message .. ". Be prepared to find a creature of difficulty level \"" .. - stringLevel .. "\".") + message = string.format("The monster " .. message .. '. Be prepared to find a creature of difficulty level "' .. stringLevel .. '".') local timeLeft = math.floor((target:getTimeToChangeFiendish() - os.time()) / 60) - if (timeLeft < 15) then + if timeLeft < 15 then message = string.format(message .. " " .. ForgeMonster:getTimeLeftToChangeMonster(target)) end @@ -113,8 +109,7 @@ end spell:name("Find Fiend") spell:words("exiva moe res") spell:group("support") -spell:vocation("druid;true", "elder druid;true", "knight;true", "elite knight;true", "paladin;true", - "royal paladin;true", "sorcerer;true", "master sorcerer;true") +spell:vocation("druid;true", "elder druid;true", "knight;true", "elite knight;true", "paladin;true", "royal paladin;true", "sorcerer;true", "master sorcerer;true") spell:id(20) spell:cooldown(2 * 1000) spell:groupCooldown(2 * 1000) diff --git a/data-otservbr-global/scripts/spells/support/find_person.lua b/data-otservbr-global/scripts/spells/support/find_person.lua index d432243e6ad..9e32ec3b69b 100644 --- a/data-otservbr-global/scripts/spells/support/find_person.lua +++ b/data-otservbr-global/scripts/spells/support/find_person.lua @@ -15,22 +15,22 @@ local directions = { [DIRECTION_NORTHEAST] = "north-east", [DIRECTION_NORTHWEST] = "north-west", [DIRECTION_SOUTHEAST] = "south-east", - [DIRECTION_SOUTHWEST] = "south-west" + [DIRECTION_SOUTHWEST] = "south-west", } local messages = { [DISTANCE_BESIDE] = { [LEVEL_LOWER] = "is below you", [LEVEL_SAME] = "is standing next to you", - [LEVEL_HIGHER] = "is above you" + [LEVEL_HIGHER] = "is above you", }, [DISTANCE_CLOSE] = { [LEVEL_LOWER] = "is on a lower level to the", [LEVEL_SAME] = "is to the", - [LEVEL_HIGHER] = "is on a higher level to the" + [LEVEL_HIGHER] = "is on a higher level to the", }, [DISTANCE_FAR] = "is far to the", - [DISTANCE_VERYFAR] = "is very far to the" + [DISTANCE_VERYFAR] = "is very far to the", } local spell = Spell("instant") @@ -48,7 +48,7 @@ function spell.onCastSpell(creature, variant) local positionDifference = { x = creaturePosition.x - targetPosition.x, y = creaturePosition.y - targetPosition.y, - z = creaturePosition.z - targetPosition.z + z = creaturePosition.z - targetPosition.z, } local maxPositionDifference, direction = math.max(math.abs(positionDifference.x), math.abs(positionDifference.y)) diff --git a/data-otservbr-global/scripts/spells/support/food.lua b/data-otservbr-global/scripts/spells/support/food.lua index 1a39a90bfd4..46bd982cdd1 100644 --- a/data-otservbr-global/scripts/spells/support/food.lua +++ b/data-otservbr-global/scripts/spells/support/food.lua @@ -5,7 +5,7 @@ local foods = { 3585, -- apple 3600, -- bread 3601, -- roll - 3607 -- cheese + 3607, -- cheese } local spell = Spell("instant") diff --git a/data-otservbr-global/scripts/spells/support/haste.lua b/data-otservbr-global/scripts/spells/support/haste.lua index f0f9f6dec7c..ee783e9fcca 100644 --- a/data-otservbr-global/scripts/spells/support/haste.lua +++ b/data-otservbr-global/scripts/spells/support/haste.lua @@ -11,7 +11,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, variant) local summons = creature:getSummons() - if summons and type(summons) == 'table' and #summons > 0 then + if summons and type(summons) == "table" and #summons > 0 then for i = 1, #summons do local summon = summons[i] local summon_t = summon:getType() diff --git a/data-otservbr-global/scripts/spells/support/strong_haste.lua b/data-otservbr-global/scripts/spells/support/strong_haste.lua index 722ba7e9540..6cef310e91a 100644 --- a/data-otservbr-global/scripts/spells/support/strong_haste.lua +++ b/data-otservbr-global/scripts/spells/support/strong_haste.lua @@ -11,7 +11,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, var) local summons = creature:getSummons() - if summons and type(summons) == 'table' and #summons > 0 then + if summons and type(summons) == "table" and #summons > 0 then for i = 1, #summons do local summon = summons[i] local summon_t = summon:getType() diff --git a/data-otservbr-global/scripts/spells/support/swift_foot.lua b/data-otservbr-global/scripts/spells/support/swift_foot.lua index 8b4bab4da07..14e3e5b85f4 100644 --- a/data-otservbr-global/scripts/spells/support/swift_foot.lua +++ b/data-otservbr-global/scripts/spells/support/swift_foot.lua @@ -13,7 +13,7 @@ local spell = Spell("instant") function spell.onCastSpell(creature, var) local summons = creature:getSummons() - if summons and type(summons) == 'table' and #summons > 0 then + if summons and type(summons) == "table" and #summons > 0 then for i = 1, #summons do local summon = summons[i] local summon_t = summon:getType() diff --git a/data-otservbr-global/scripts/weapons/scripts/burst_arrow.lua b/data-otservbr-global/scripts/weapons/scripts/burst_arrow.lua index 1096fecfc6b..23e4d4f82e4 100644 --- a/data-otservbr-global/scripts/weapons/scripts/burst_arrow.lua +++ b/data-otservbr-global/scripts/weapons/scripts/burst_arrow.lua @@ -1,7 +1,7 @@ local area = createCombatArea({ { 1, 1, 1 }, { 1, 3, 1 }, - { 1, 1, 1 } + { 1, 1, 1 }, }) local combat = Combat() diff --git a/data-otservbr-global/scripts/weapons/unscripted_weapons.lua b/data-otservbr-global/scripts/weapons/unscripted_weapons.lua index 14e48cd7bd4..667e242afaf 100644 --- a/data-otservbr-global/scripts/weapons/unscripted_weapons.lua +++ b/data-otservbr-global/scripts/weapons/unscripted_weapons.lua @@ -10,8 +10,8 @@ local weapons = { unproperly = true, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- sanguine rod @@ -24,8 +24,8 @@ local weapons = { unproperly = true, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- grand sanguine coil @@ -38,8 +38,8 @@ local weapons = { unproperly = true, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- sanguine coil @@ -52,8 +52,8 @@ local weapons = { unproperly = true, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- grand sanguine crossbow @@ -63,8 +63,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- sanguine crossbow @@ -74,8 +74,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- grand sanguine bow @@ -85,8 +85,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- sanguine bow @@ -96,8 +96,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- grand sanguine battleaxe @@ -107,8 +107,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine battleaxe @@ -118,8 +118,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine bludgeon @@ -129,8 +129,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine bludgeon @@ -140,8 +140,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine razor @@ -151,8 +151,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine razor @@ -162,8 +162,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine hatchet @@ -173,8 +173,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine hatchet @@ -184,8 +184,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine cudgel @@ -195,8 +195,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine cudgel @@ -206,8 +206,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- grand sanguine blade @@ -217,8 +217,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sanguine blade @@ -228,13 +228,13 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- broken macuahuitl itemid = 40530, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- naga rod @@ -247,8 +247,8 @@ local weapons = { unproperly = true, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- naga wand @@ -261,8 +261,8 @@ local weapons = { unproperly = true, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- naga crossbow @@ -272,8 +272,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- naga club @@ -283,8 +283,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- naga axe @@ -294,8 +294,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- naga sword @@ -305,8 +305,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch rod @@ -319,8 +319,8 @@ local weapons = { unproperly = true, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- eldritch rod @@ -333,8 +333,8 @@ local weapons = { unproperly = true, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gilded eldritch wand @@ -347,8 +347,8 @@ local weapons = { unproperly = true, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- eldritch wand @@ -361,8 +361,8 @@ local weapons = { unproperly = true, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- gilded eldritch bow @@ -372,8 +372,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- eldritch bow @@ -383,8 +383,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- gilded eldritch greataxe @@ -394,8 +394,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch greataxe @@ -405,8 +405,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch warmace @@ -416,8 +416,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch warmace @@ -427,8 +427,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- gilded eldritch claymore @@ -438,8 +438,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- eldritch claymore @@ -449,8 +449,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spectral bolt (no decay) @@ -458,7 +458,7 @@ local weapons = { type = WEAPON_AMMO, level = 150, unproperly = true, - action = "removecount" + action = "removecount", }, { -- jungle wand @@ -470,8 +470,8 @@ local weapons = { damage = { 80, 100 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- jungle rod @@ -483,8 +483,8 @@ local weapons = { damage = { 80, 100 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- jungle bow @@ -494,8 +494,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- throwing axe @@ -505,8 +505,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- jungle flail @@ -516,8 +516,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion longsword @@ -527,8 +527,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion hammer @@ -538,8 +538,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion axe @@ -549,8 +549,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- lion wand @@ -562,8 +562,8 @@ local weapons = { damage = { 89, 109 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- lion rod @@ -575,8 +575,8 @@ local weapons = { damage = { 85, 105 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- lion longbow @@ -586,8 +586,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- soulhexer rod @@ -599,8 +599,8 @@ local weapons = { damage = { 98, 118 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- soultainter wand @@ -612,8 +612,8 @@ local weapons = { damage = { 100, 120 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- soulpiercer crossbow @@ -623,8 +623,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- soulbleeder bow @@ -634,8 +634,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- soulmaimer club @@ -645,8 +645,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulcrusher club @@ -656,8 +656,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- souleater axe @@ -667,8 +667,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulbiter axe @@ -678,8 +678,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulshredder sword @@ -689,8 +689,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- soulcutter sword @@ -700,8 +700,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- phantasmal axe @@ -711,13 +711,13 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- meat hammer itemid = 32093, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- tagralt blade @@ -727,8 +727,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- bow of cataclysm @@ -738,8 +738,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- mortal mace @@ -749,8 +749,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cobra rod @@ -762,8 +762,8 @@ local weapons = { damage = { 70, 110 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- cobra wand @@ -775,8 +775,8 @@ local weapons = { damage = { 94, 100 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- cobra sword @@ -786,8 +786,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cobra axe @@ -797,8 +797,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cobra club @@ -808,8 +808,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cobra crossbow @@ -819,13 +819,13 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ice hatchet itemid = 30283, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- energized limb @@ -839,8 +839,8 @@ local weapons = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- winterblade @@ -850,8 +850,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- summerblade @@ -861,8 +861,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- resizer @@ -872,8 +872,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- living vine bow @@ -883,66 +883,66 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- golden axe itemid = 29286, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- wand of destruction test itemid = 28479, - type = WEAPON_WAND + type = WEAPON_WAND, }, { -- umbral master bow test itemid = 28478, - type = WEAPON_DISTANCE + type = WEAPON_DISTANCE, }, { -- sorcerer test weapon itemid = 28466, - type = WEAPON_WAND + type = WEAPON_WAND, }, { -- bow of destruction test itemid = 28465, - type = WEAPON_DISTANCE + type = WEAPON_DISTANCE, }, { -- test weapon for knights itemid = 28464, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- sulphurous demonbone itemid = 28832, type = WEAPON_CLUB, level = 80, - unproperly = true + unproperly = true, }, { -- unliving demonbone itemid = 28831, type = WEAPON_CLUB, level = 80, - unproperly = true + unproperly = true, }, { -- energized demonbone itemid = 28830, type = WEAPON_CLUB, level = 80, - unproperly = true + unproperly = true, }, { -- rotten demonbone itemid = 28829, type = WEAPON_CLUB, level = 80, - unproperly = true + unproperly = true, }, { -- deepling fork @@ -956,8 +956,8 @@ local weapons = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- deepling ceremonial dagger @@ -971,8 +971,8 @@ local weapons = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- falcon mace @@ -982,8 +982,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- falcon battleaxe @@ -993,8 +993,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- falcon longsword @@ -1004,8 +1004,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- falcon bow @@ -1015,8 +1015,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- falcon wand @@ -1028,8 +1028,8 @@ local weapons = { damage = { 86, 102 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- falcon rod @@ -1041,8 +1041,8 @@ local weapons = { damage = { 87, 101 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- gnome sword @@ -1052,18 +1052,18 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mallet handle itemid = 27525, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- strange mallet itemid = 27523, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- rod of destruction @@ -1075,8 +1075,8 @@ local weapons = { damage = { 80, 110 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- wand of destruction @@ -1088,8 +1088,8 @@ local weapons = { damage = { 80, 110 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- crossbow of destruction @@ -1099,8 +1099,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- bow of destruction @@ -1110,8 +1110,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hammer of destruction @@ -1121,8 +1121,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mace of destruction @@ -1132,8 +1132,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- chopper of destruction @@ -1143,8 +1143,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- axe of destruction @@ -1154,8 +1154,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- slayer of destruction @@ -1165,8 +1165,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- blade of destruction @@ -1176,578 +1176,578 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ornate carving hammer itemid = 26061, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- valuable carving hammer itemid = 26060, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- plain carving hammer itemid = 26059, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- ornate carving mace itemid = 26058, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- valuable carving mace itemid = 26057, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- plain carving mace itemid = 26056, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- ornate carving chopper itemid = 26055, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- valuable carving chopper itemid = 26054, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- plain carving chopper itemid = 26053, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- ornate carving axe itemid = 26052, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- valuable carving axe itemid = 26051, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- plain carving axe itemid = 26050, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- ornate carving slayer itemid = 26049, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- valuable carving slayer itemid = 26048, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- plain carving slayer itemid = 26047, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- ornate carving blade itemid = 26046, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- valuable carving blade itemid = 26045, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- plain carving blade itemid = 26044, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- ornate remedy hammer itemid = 26031, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- valuable remedy hammer itemid = 26030, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- plain remedy hammer itemid = 26029, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- ornate remedy mace itemid = 26028, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- valuable remedy mace itemid = 26027, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- plain remedy mace itemid = 26026, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- ornate remedy chopper itemid = 26025, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- valuable remedy chopper itemid = 26024, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- plain remedy chopper itemid = 26023, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- ornate remedy axe itemid = 26022, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- valuable remedy axe itemid = 26021, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- plain remedy axe itemid = 26020, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- ornate remedy slayer itemid = 26019, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- valuable remedy slayer itemid = 26018, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- plain remedy slayer itemid = 26017, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- ornate remedy blade itemid = 26016, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- valuable remedy blade itemid = 26015, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- plain remedy blade itemid = 26014, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- ornate mayhem hammer itemid = 26000, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- valuable mayhem hammer itemid = 25999, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- plain mayhem hammer itemid = 25998, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- ornate mayhem mace itemid = 25997, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- valuable mayhem mace itemid = 25996, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- plain mayhem mace itemid = 25995, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- ornate mayhem chopper itemid = 25994, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- valuable mayhem chopper itemid = 25993, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- plain mayhem chopper itemid = 25992, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- ornate mayhem axe itemid = 25991, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- valuable mayhem axe itemid = 25990, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- plain mayhem axe itemid = 25989, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- ornate mayhem slayer itemid = 25988, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- valuable mayhem slayer itemid = 25987, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- plain mayhem slayer itemid = 25986, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- ornate mayhem blade itemid = 25985, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- valuable mayhem blade itemid = 25984, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- plain mayhem blade itemid = 25983, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- energy war hammer replica itemid = 25974, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- energy orcish maul replica itemid = 25973, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- energy basher replica itemid = 25972, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- energy crystal mace replica itemid = 25971, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- energy clerical mace replica itemid = 25970, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- energy war axe replica itemid = 25969, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- energy headchopper replica itemid = 25968, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- energy heroic axe replica itemid = 25967, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- energy knight axe replica itemid = 25966, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- energy barbarian axe replica itemid = 25965, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- energy dragon slayer replica itemid = 25964, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- energy blacksteel replica itemid = 25963, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- energy mystic blade replica itemid = 25962, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- energy relic sword replica itemid = 25961, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- energy spike sword replica itemid = 25960, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- earth war hammer replica itemid = 25959, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- earth orcish maul replica itemid = 25958, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- earth basher replica itemid = 25957, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- earth crystal mace replica itemid = 25956, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- earth clerical mace replica itemid = 25955, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- earth war axe replica itemid = 25954, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- earth headchopper replica itemid = 25953, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- earth heroic axe replica itemid = 25952, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- earth knight axe replica itemid = 25951, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- earth barbarian axe replica itemid = 25950, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- earth dragon slayer replica itemid = 25949, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- earth blacksteel replica itemid = 25948, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- earth mystic blade replica itemid = 25947, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- earth relic sword replica itemid = 25946, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- earth spike sword replica itemid = 25945, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- icy war hammer replica itemid = 25944, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- icy orcish maul replica itemid = 25943, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- icy basher replica itemid = 25942, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- icy crystal mace replica itemid = 25941, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- icy clerical mace replica itemid = 25940, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- icy war axe replica itemid = 25939, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- icy headchopper replica itemid = 25938, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- icy heroic axe replica itemid = 25937, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- icy knight axe replica itemid = 25936, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- icy barbarian axe replica itemid = 25935, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- icy dragon slayer replica itemid = 25934, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- icy blacksteel replica itemid = 25933, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- icy mystic blade replica itemid = 25932, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- icy relic sword replica itemid = 25931, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- icy spike sword replica itemid = 25930, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- fiery war hammer replica itemid = 25929, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- fiery orcish maul replica itemid = 25928, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- fiery basher replica itemid = 25927, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- fiery crystal mace replica itemid = 25926, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- fiery clerical mace replica itemid = 25925, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- fiery war axe replica itemid = 25924, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- fiery headchopper replica itemid = 25923, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- fiery heroic axe replica itemid = 25922, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- fiery knight axe replica itemid = 25921, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- fiery barbarian axe replica itemid = 25920, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- fiery dragon slayer replica itemid = 25919, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- fiery blacksteel replica itemid = 25918, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- fiery mystic blade replica itemid = 25917, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- fiery relic sword replica itemid = 25916, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- fiery spike sword replica itemid = 25915, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- wand of darkness @@ -1759,8 +1759,8 @@ local weapons = { damage = { 80, 100 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- royal star @@ -1768,7 +1768,7 @@ local weapons = { type = WEAPON_MISSILE, level = 120, unproperly = true, - breakchance = 30 + breakchance = 30, }, { -- spectral bolt @@ -1776,7 +1776,7 @@ local weapons = { type = WEAPON_AMMO, level = 150, unproperly = true, - action = "removecount" + action = "removecount", }, { -- leaf star @@ -1784,7 +1784,7 @@ local weapons = { type = WEAPON_MISSILE, level = 60, unproperly = true, - breakchance = 40 + breakchance = 40, }, { -- dream blossom staff @@ -1798,8 +1798,8 @@ local weapons = { { "Sorcerer", true }, { "Druid", true, true }, { "Master Sorcerer" }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- rod of carving @@ -1811,8 +1811,8 @@ local weapons = { damage = { 70, 105 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- wand of carving @@ -1824,8 +1824,8 @@ local weapons = { damage = { 70, 105 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- crossbow of carving @@ -1835,8 +1835,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- bow of carving @@ -1846,8 +1846,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hammer of carving @@ -1857,8 +1857,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mace of carving @@ -1868,8 +1868,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- chopper of carving @@ -1879,8 +1879,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- axe of carving @@ -1890,8 +1890,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- slayer of carving @@ -1901,8 +1901,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- blade of carving @@ -1912,8 +1912,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- rod of remedy @@ -1925,8 +1925,8 @@ local weapons = { damage = { 70, 105 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- wand of remedy @@ -1938,8 +1938,8 @@ local weapons = { damage = { 70, 105 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- crossbow of remedy @@ -1949,8 +1949,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- bow of remedy @@ -1960,8 +1960,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hammer of remedy @@ -1971,8 +1971,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mace of remedy @@ -1982,8 +1982,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- chopper of remedy @@ -1993,8 +1993,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- axe of remedy @@ -2004,8 +2004,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- slayer of remedy @@ -2015,8 +2015,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- blade of remedy @@ -2026,8 +2026,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- rod of mayhem @@ -2039,8 +2039,8 @@ local weapons = { damage = { 70, 105 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- wand of mayhem @@ -2052,8 +2052,8 @@ local weapons = { damage = { 70, 105 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- crossbow of mayhem @@ -2063,8 +2063,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- bow of mayhem @@ -2074,8 +2074,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hammer of mayhem @@ -2085,8 +2085,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mace of mayhem @@ -2096,8 +2096,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- chopper of mayhem @@ -2107,8 +2107,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- axe of mayhem @@ -2118,8 +2118,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- slayer of mayhem @@ -2129,8 +2129,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- blade of mayhem @@ -2140,8 +2140,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- rift crossbow @@ -2151,8 +2151,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- rift bow @@ -2162,8 +2162,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ferumbras' staff (enchanted) @@ -2175,8 +2175,8 @@ local weapons = { damage = { 80, 110 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- ferumbras' staff (failed) @@ -2188,43 +2188,43 @@ local weapons = { damage = { 65, 95 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- Ferumbras' staff itemid = 22764, type = WEAPON_CLUB, level = 100, - unproperly = true + unproperly = true, }, { -- maimer itemid = 22762, type = WEAPON_CLUB, level = 150, - unproperly = true + unproperly = true, }, { -- Impaler of the igniter itemid = 22760, type = WEAPON_SWORD, level = 150, - unproperly = true + unproperly = true, }, { -- plague bite itemid = 22759, type = WEAPON_AXE, level = 150, - unproperly = true + unproperly = true, }, { -- rift lance itemid = 22727, type = WEAPON_AXE, level = 70, - unproperly = true + unproperly = true, }, { -- ogre sceptra @@ -2236,28 +2236,28 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- ogre choppa itemid = 22172, type = WEAPON_AXE, level = 25, - unproperly = true + unproperly = true, }, { -- ogre klubba itemid = 22171, type = WEAPON_AXE, level = 50, - unproperly = true + unproperly = true, }, { -- simple arrow itemid = 21470, type = WEAPON_AMMO, - action = "removecount" + action = "removecount", }, { -- the chiller @@ -2269,8 +2269,8 @@ local weapons = { damage = { 4, 8 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- the scorcher @@ -2282,15 +2282,15 @@ local weapons = { damage = { 4, 8 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- one hit wonder itemid = 21219, type = WEAPON_CLUB, level = 70, - unproperly = true + unproperly = true, }, { -- glooth axe @@ -2301,8 +2301,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- glooth blade @@ -2313,8 +2313,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- glooth club @@ -2325,50 +2325,50 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- cowtana itemid = 21177, type = WEAPON_SWORD, level = 25, - unproperly = true + unproperly = true, }, { -- execowtioner axe itemid = 21176, type = WEAPON_AXE, level = 55, - unproperly = true + unproperly = true, }, { -- mino lance itemid = 21174, type = WEAPON_AXE, level = 45, - unproperly = true + unproperly = true, }, { -- moohtant cudgel itemid = 21173, type = WEAPON_CLUB, level = 60, - unproperly = true + unproperly = true, }, { -- glooth whip itemid = 21172, type = WEAPON_CLUB, level = 25, - unproperly = true + unproperly = true, }, { -- metal bat itemid = 21171, type = WEAPON_CLUB, level = 55, - unproperly = true + unproperly = true, }, { -- glooth spear @@ -2376,7 +2376,7 @@ local weapons = { type = WEAPON_MISSILE, level = 60, unproperly = true, - breakchance = 2 + breakchance = 2, }, { -- umbral master crossbow @@ -2386,8 +2386,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- umbral crossbow @@ -2397,8 +2397,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crude umbral crossbow @@ -2408,8 +2408,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- umbral master bow @@ -2419,8 +2419,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- umbral bow @@ -2430,8 +2430,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crude umbral bow @@ -2441,8 +2441,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- umbral master hammer @@ -2452,8 +2452,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral hammer @@ -2463,8 +2463,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral hammer @@ -2474,8 +2474,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral master mace @@ -2485,8 +2485,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral mace @@ -2496,8 +2496,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral mace @@ -2507,8 +2507,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral master chopper @@ -2518,8 +2518,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral chopper @@ -2529,8 +2529,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral chopper @@ -2540,8 +2540,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral master axe @@ -2551,8 +2551,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral axe @@ -2562,8 +2562,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral axe @@ -2573,8 +2573,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral master slayer @@ -2584,8 +2584,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral slayer @@ -2595,8 +2595,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral slayer @@ -2606,8 +2606,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral masterblade @@ -2617,8 +2617,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- umbral blade @@ -2628,8 +2628,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crude umbral blade @@ -2639,14 +2639,14 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icicle bow itemid = 19362, type = WEAPON_DISTANCE, - unproperly = true + unproperly = true, }, { -- triple bolt crossbow @@ -2656,15 +2656,15 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- spiky club itemid = 17859, type = WEAPON_CLUB, level = 20, - unproperly = true + unproperly = true, }, { -- pair of iron fists @@ -2674,27 +2674,27 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- swampling club itemid = 17824, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- life preserver itemid = 17813, type = WEAPON_CLUB, level = 15, - unproperly = true + unproperly = true, }, { -- ratana itemid = 17812, type = WEAPON_SWORD, level = 15, - unproperly = true + unproperly = true, }, { -- sorc and druid staff @@ -2705,8 +2705,8 @@ local weapons = { mana = 2, damage = { 8, 18 }, vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- mean paladin spear @@ -2714,8 +2714,8 @@ local weapons = { type = WEAPON_MISSILE, breakchance = 3, vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- mean knight sword @@ -2723,15 +2723,15 @@ local weapons = { type = WEAPON_SWORD, unproperly = true, vocation = { - { "None", true } - } + { "None", true }, + }, }, { -- shiny blade itemid = 16175, type = WEAPON_SWORD, level = 120, - unproperly = true + unproperly = true, }, { -- mycological bow @@ -2741,8 +2741,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- crystal crossbow @@ -2752,29 +2752,29 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- mycological mace itemid = 16162, type = WEAPON_CLUB, level = 120, - unproperly = true + unproperly = true, }, { -- crystalline axe itemid = 16161, type = WEAPON_AXE, level = 120, - unproperly = true + unproperly = true, }, { -- crystalline sword itemid = 16160, type = WEAPON_SWORD, level = 62, - unproperly = true + unproperly = true, }, { -- envenomed arrow @@ -2782,7 +2782,7 @@ local weapons = { type = WEAPON_AMMO, level = 70, unproperly = true, - action = "removecount" + action = "removecount", }, { -- drill bolt @@ -2790,7 +2790,7 @@ local weapons = { type = WEAPON_AMMO, level = 70, unproperly = true, - action = "removecount" + action = "removecount", }, { -- prismatic bolt @@ -2798,7 +2798,7 @@ local weapons = { type = WEAPON_AMMO, level = 90, unproperly = true, - action = "removecount" + action = "removecount", }, { -- glacial rod @@ -2810,8 +2810,8 @@ local weapons = { damage = { 75, 95 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- muck rod @@ -2823,8 +2823,8 @@ local weapons = { damage = { 75, 95 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- wand of everblazing @@ -2836,8 +2836,8 @@ local weapons = { damage = { 75, 95 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of defiance @@ -2849,8 +2849,8 @@ local weapons = { damage = { 75, 95 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- crystalline arrow @@ -2858,13 +2858,13 @@ local weapons = { type = WEAPON_AMMO, level = 90, unproperly = true, - action = "removecount" + action = "removecount", }, { -- crystal bolt itemid = 15792, type = WEAPON_AMMO, - action = "removecount" + action = "removecount", }, { -- thorn spitter @@ -2874,8 +2874,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- vortex bolt @@ -2883,7 +2883,7 @@ local weapons = { type = WEAPON_AMMO, level = 40, unproperly = true, - action = "removecount" + action = "removecount", }, { -- tarsal arrow @@ -2891,14 +2891,14 @@ local weapons = { type = WEAPON_AMMO, level = 30, unproperly = true, - action = "removecount" + action = "removecount", }, { -- deepling squelcher itemid = 14250, type = WEAPON_CLUB, level = 48, - unproperly = true + unproperly = true, }, { -- ornate crossbow @@ -2908,8 +2908,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hive bow @@ -2919,50 +2919,50 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- hive scythe itemid = 14089, type = WEAPON_AXE, level = 70, - unproperly = true + unproperly = true, }, { -- guardian axe itemid = 14043, type = WEAPON_AXE, level = 50, - unproperly = true + unproperly = true, }, { -- warrior's axe itemid = 14040, type = WEAPON_AXE, level = 40, - unproperly = true + unproperly = true, }, { -- ornate mace itemid = 14001, type = WEAPON_CLUB, level = 90, - unproperly = true + unproperly = true, }, { -- deepling axe itemid = 13991, type = WEAPON_AXE, level = 80, - unproperly = true + unproperly = true, }, { -- deepling staff itemid = 13987, type = WEAPON_CLUB, level = 38, - unproperly = true + unproperly = true, }, { -- shimmer wand @@ -2974,8 +2974,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- shimmer bow @@ -2985,8 +2985,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- shimmer rod @@ -2998,27 +2998,27 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- shimmer sword itemid = 12731, type = WEAPON_SWORD, level = 40, - unproperly = true + unproperly = true, }, { -- heavy trident itemid = 12683, type = WEAPON_AXE, level = 25, - unproperly = true + unproperly = true, }, { -- wooden sword itemid = 12673, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- wand of dimensions @@ -3030,22 +3030,22 @@ local weapons = { damage = { 44, 62 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- blade of corruption itemid = 11693, type = WEAPON_SWORD, level = 82, - unproperly = true + unproperly = true, }, { -- snake god's sceptre itemid = 11692, type = WEAPON_CLUB, level = 82, - unproperly = true + unproperly = true, }, { -- twiceslicer @@ -3055,15 +3055,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- Zaoan halberd itemid = 10406, type = WEAPON_AXE, level = 25, - unproperly = true + unproperly = true, }, { -- twin hooks @@ -3073,8 +3073,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- drachaku @@ -3084,15 +3084,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- Zaoan sword itemid = 10390, type = WEAPON_SWORD, level = 55, - unproperly = true + unproperly = true, }, { -- sai @@ -3102,60 +3102,60 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- drakinata itemid = 10388, type = WEAPON_AXE, level = 60, - unproperly = true + unproperly = true, }, { -- incredible mumpiz slayer itemid = 9396, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- poet's fencing quill itemid = 9387, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- farmer's avenger itemid = 9386, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- club of the fury itemid = 9385, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- scythe of the reaper itemid = 9384, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- musician's bow itemid = 9378, - type = WEAPON_DISTANCE + type = WEAPON_DISTANCE, }, { -- stale bread of ancientness itemid = 9376, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- pointed rabbitslayer itemid = 9375, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- glutton's mace itemid = 9373, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- the calamity @@ -3165,22 +3165,22 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- the epiphany itemid = 8103, type = WEAPON_SWORD, level = 120, - unproperly = true + unproperly = true, }, { -- emerald sword itemid = 8102, type = WEAPON_SWORD, level = 100, - unproperly = true + unproperly = true, }, { -- the stomper @@ -3190,22 +3190,22 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- obsidian truncheon itemid = 8100, type = WEAPON_CLUB, level = 100, - unproperly = true + unproperly = true, }, { -- dark trinity mace itemid = 8099, type = WEAPON_CLUB, level = 120, - unproperly = true + unproperly = true, }, { -- demonwing axe @@ -3215,22 +3215,22 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- solar axe itemid = 8097, type = WEAPON_AXE, level = 130, - unproperly = true + unproperly = true, }, { -- hellforged axe itemid = 8096, type = WEAPON_AXE, level = 110, - unproperly = true + unproperly = true, }, { -- wand of voodoo @@ -3242,8 +3242,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of draconia @@ -3255,8 +3255,8 @@ local weapons = { damage = { 23, 37 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of starmstorm @@ -3268,8 +3268,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- springsprout rod @@ -3281,8 +3281,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- northwind rod @@ -3294,8 +3294,8 @@ local weapons = { damage = { 23, 37 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- underworld rod @@ -3307,8 +3307,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- elethriel's elemental bow @@ -3318,8 +3318,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- silkweaver bow @@ -3329,8 +3329,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- yol's bow @@ -3340,8 +3340,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- composite hornbow @@ -3351,8 +3351,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- warsinger bow @@ -3362,8 +3362,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- ironworker @@ -3373,8 +3373,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- devileye @@ -3384,8 +3384,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- royal crossbow @@ -3395,8 +3395,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- chain bolter @@ -3406,8 +3406,8 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- modified crossbow @@ -3417,23 +3417,23 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- jagged sword itemid = 7774, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- steel axe itemid = 7773, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- crimson sword itemid = 860, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- energy war hammer @@ -3444,8 +3444,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- energy orcish maul @@ -3453,7 +3453,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy cranial basher @@ -3461,7 +3461,7 @@ local weapons = { type = WEAPON_CLUB, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy crystal mace @@ -3469,7 +3469,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy clerical mace @@ -3477,7 +3477,7 @@ local weapons = { type = WEAPON_CLUB, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy war axe @@ -3488,8 +3488,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- energy headchopper @@ -3500,8 +3500,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- energy heroic axe @@ -3509,7 +3509,7 @@ local weapons = { type = WEAPON_AXE, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy knight axe @@ -3517,7 +3517,7 @@ local weapons = { type = WEAPON_AXE, level = 25, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy barbarian axe @@ -3525,7 +3525,7 @@ local weapons = { type = WEAPON_AXE, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy dragon slayer @@ -3536,8 +3536,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- energy blacksteel sword @@ -3548,8 +3548,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- energy mystic blade @@ -3557,7 +3557,7 @@ local weapons = { type = WEAPON_SWORD, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy relic sword @@ -3565,13 +3565,13 @@ local weapons = { type = WEAPON_SWORD, level = 50, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- energy spike sword itemid = 794, type = WEAPON_SWORD, - action = "removecharge" + action = "removecharge", }, { -- earth war hammer @@ -3582,8 +3582,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earth orcish maul @@ -3591,7 +3591,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth cranial basher @@ -3599,7 +3599,7 @@ local weapons = { type = WEAPON_CLUB, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth crystal mace @@ -3607,7 +3607,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth clerical mace @@ -3615,7 +3615,7 @@ local weapons = { type = WEAPON_CLUB, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth war axe @@ -3626,8 +3626,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earth headchopper @@ -3638,8 +3638,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earth heroic axe @@ -3647,7 +3647,7 @@ local weapons = { type = WEAPON_AXE, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth knight axe @@ -3655,7 +3655,7 @@ local weapons = { type = WEAPON_AXE, level = 25, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth barbarian axe @@ -3663,7 +3663,7 @@ local weapons = { type = WEAPON_AXE, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth dragon slayer @@ -3674,8 +3674,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earth blacksteel sword @@ -3686,8 +3686,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- earth mystic blade @@ -3695,7 +3695,7 @@ local weapons = { type = WEAPON_SWORD, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth relic sword @@ -3703,13 +3703,13 @@ local weapons = { type = WEAPON_SWORD, level = 50, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- earth spike sword itemid = 779, type = WEAPON_SWORD, - action = "removecharge" + action = "removecharge", }, { -- earth arrow @@ -3717,7 +3717,7 @@ local weapons = { type = WEAPON_AMMO, level = 20, unproperly = true, - action = "removecount" + action = "removecount", }, { -- flaming arrow @@ -3725,7 +3725,7 @@ local weapons = { type = WEAPON_AMMO, level = 20, unproperly = true, - action = "removecount" + action = "removecount", }, { -- shiver arrow @@ -3733,7 +3733,7 @@ local weapons = { type = WEAPON_AMMO, level = 20, unproperly = true, - action = "removecount" + action = "removecount", }, { -- flash arrow @@ -3741,7 +3741,7 @@ local weapons = { type = WEAPON_AMMO, level = 20, unproperly = true, - action = "removecount" + action = "removecount", }, { -- icy war hammer @@ -3752,8 +3752,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icy orcish maul @@ -3761,7 +3761,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy cranial basher @@ -3769,7 +3769,7 @@ local weapons = { type = WEAPON_CLUB, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy crystal mace @@ -3777,7 +3777,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy clerical mace @@ -3785,7 +3785,7 @@ local weapons = { type = WEAPON_CLUB, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy war axe @@ -3796,8 +3796,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icy headchopper @@ -3808,8 +3808,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icy heroic axe @@ -3817,7 +3817,7 @@ local weapons = { type = WEAPON_AXE, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy knight axe @@ -3825,7 +3825,7 @@ local weapons = { type = WEAPON_AXE, level = 25, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy barbarian axe @@ -3833,7 +3833,7 @@ local weapons = { type = WEAPON_AXE, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy dragon slayer @@ -3844,8 +3844,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icy blacksteel sword @@ -3856,8 +3856,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- icy mystic blade @@ -3865,7 +3865,7 @@ local weapons = { type = WEAPON_SWORD, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy relic sword @@ -3873,13 +3873,13 @@ local weapons = { type = WEAPON_SWORD, level = 50, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- icy spike sword itemid = 679, type = WEAPON_SWORD, - action = "removecharge" + action = "removecharge", }, { -- fiery war hammer @@ -3890,8 +3890,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fiery orcish maul @@ -3899,7 +3899,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery cranial basher @@ -3907,7 +3907,7 @@ local weapons = { type = WEAPON_CLUB, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery crystal mace @@ -3915,7 +3915,7 @@ local weapons = { type = WEAPON_CLUB, level = 35, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery clerical mace @@ -3923,7 +3923,7 @@ local weapons = { type = WEAPON_CLUB, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery war axe @@ -3934,8 +3934,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fiery headchopper @@ -3946,8 +3946,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fiery heroic axe @@ -3955,7 +3955,7 @@ local weapons = { type = WEAPON_AXE, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery knight axe @@ -3963,7 +3963,7 @@ local weapons = { type = WEAPON_AXE, level = 25, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery barbarian axe @@ -3971,7 +3971,7 @@ local weapons = { type = WEAPON_AXE, level = 20, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery dragon slayer @@ -3982,8 +3982,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fiery blacksteel sword @@ -3994,8 +3994,8 @@ local weapons = { action = "removecharge", vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fiery mystic blade @@ -4003,7 +4003,7 @@ local weapons = { type = WEAPON_SWORD, level = 60, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery relic sword @@ -4011,27 +4011,27 @@ local weapons = { type = WEAPON_SWORD, level = 50, unproperly = true, - action = "removecharge" + action = "removecharge", }, { -- fiery spike sword itemid = 660, type = WEAPON_SWORD, - action = "removecharge" + action = "removecharge", }, { -- noble axe itemid = 7456, type = WEAPON_AXE, level = 35, - unproperly = true + unproperly = true, }, { -- mythril axe itemid = 7455, type = WEAPON_AXE, level = 80, - unproperly = true + unproperly = true, }, { -- glorious axe @@ -4041,8 +4041,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- executioner @@ -4052,8 +4052,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spiked squelcher @@ -4063,15 +4063,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- shadow sceptre itemid = 7451, type = WEAPON_CLUB, level = 35, - unproperly = true + unproperly = true, }, { -- hammer of prophecy @@ -4081,8 +4081,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crystal sword @@ -4092,20 +4092,20 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- elvish bow itemid = 7438, - type = WEAPON_DISTANCE + type = WEAPON_DISTANCE, }, { -- sapphire hammer itemid = 7437, type = WEAPON_CLUB, level = 30, - unproperly = true + unproperly = true, }, { -- angelic axe @@ -4115,57 +4115,57 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- impaler itemid = 7435, type = WEAPON_AXE, level = 85, - unproperly = true + unproperly = true, }, { -- royal axe itemid = 7434, type = WEAPON_AXE, level = 75, - unproperly = true + unproperly = true, }, { -- ravenwing itemid = 7433, type = WEAPON_AXE, level = 65, - unproperly = true + unproperly = true, }, { -- furry club itemid = 7432, type = WEAPON_CLUB, level = 20, - unproperly = true + unproperly = true, }, { -- demonbone itemid = 7431, type = WEAPON_CLUB, level = 80, - unproperly = true + unproperly = true, }, { -- dragonbone staff itemid = 7430, type = WEAPON_CLUB, level = 30, - unproperly = true + unproperly = true, }, { -- blessed sceptre itemid = 7429, type = WEAPON_CLUB, level = 75, - unproperly = true + unproperly = true, }, { -- bonebreaker @@ -4175,36 +4175,36 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- chaos mace itemid = 7427, type = WEAPON_CLUB, level = 45, - unproperly = true + unproperly = true, }, { -- amber staff itemid = 7426, type = WEAPON_CLUB, level = 40, - unproperly = true + unproperly = true, }, { -- taurus mace itemid = 7425, type = WEAPON_CLUB, level = 20, - unproperly = true + unproperly = true, }, { -- lunar staff itemid = 7424, type = WEAPON_CLUB, level = 30, - unproperly = true + unproperly = true, }, { -- skullcrusher @@ -4214,64 +4214,64 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- jade hammer itemid = 7422, type = WEAPON_CLUB, level = 70, - unproperly = true + unproperly = true, }, { -- onyx flail itemid = 7421, type = WEAPON_CLUB, level = 65, - unproperly = true + unproperly = true, }, { -- reaper's axe itemid = 7420, type = WEAPON_AXE, level = 70, - unproperly = true + unproperly = true, }, { -- dreaded cleaver itemid = 7419, type = WEAPON_AXE, level = 40, - unproperly = true + unproperly = true, }, { -- nightmare blade itemid = 7418, type = WEAPON_SWORD, level = 70, - unproperly = true + unproperly = true, }, { -- runed sword itemid = 7417, type = WEAPON_SWORD, level = 65, - unproperly = true + unproperly = true, }, { -- bloody edge itemid = 7416, type = WEAPON_SWORD, level = 55, - unproperly = true + unproperly = true, }, { -- cranial basher itemid = 7415, type = WEAPON_CLUB, level = 60, - unproperly = true + unproperly = true, }, { -- abyss hammer @@ -4281,8 +4281,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- titan axe @@ -4292,43 +4292,43 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- butcher's axe itemid = 7412, type = WEAPON_AXE, level = 45, - unproperly = true + unproperly = true, }, { -- ornamented axe itemid = 7411, type = WEAPON_AXE, level = 50, - unproperly = true + unproperly = true, }, { -- queen's sceptre itemid = 7410, type = WEAPON_CLUB, level = 55, - unproperly = true + unproperly = true, }, { -- northern star itemid = 7409, type = WEAPON_CLUB, level = 50, - unproperly = true + unproperly = true, }, { -- wyvern fang itemid = 7408, type = WEAPON_SWORD, level = 25, - unproperly = true + unproperly = true, }, { -- haunted blade @@ -4338,8 +4338,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- blacksteel sword @@ -4349,8 +4349,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- havoc blade @@ -4360,15 +4360,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- assassin dagger itemid = 7404, type = WEAPON_SWORD, level = 40, - unproperly = true + unproperly = true, }, { -- berserker @@ -4378,8 +4378,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- dragon slayer @@ -4389,15 +4389,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- orcish maul itemid = 7392, type = WEAPON_CLUB, level = 35, - unproperly = true + unproperly = true, }, { -- thaian sword @@ -4407,36 +4407,36 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- the justice seeker itemid = 7390, type = WEAPON_SWORD, level = 75, - unproperly = true + unproperly = true, }, { -- heroic axe itemid = 7389, type = WEAPON_AXE, level = 60, - unproperly = true + unproperly = true, }, { -- vile axe itemid = 7388, type = WEAPON_AXE, level = 55, - unproperly = true + unproperly = true, }, { -- diamond sceptre itemid = 7387, type = WEAPON_CLUB, level = 25, - unproperly = true + unproperly = true, }, { -- mercenary sword @@ -4446,29 +4446,29 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- crimson sword itemid = 7385, type = WEAPON_SWORD, level = 20, - unproperly = true + unproperly = true, }, { -- mystic blade itemid = 7384, type = WEAPON_SWORD, level = 60, - unproperly = true + unproperly = true, }, { -- relic sword itemid = 7383, type = WEAPON_SWORD, level = 50, - unproperly = true + unproperly = true, }, { -- demonrage sword @@ -4478,15 +4478,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- mammoth whopper itemid = 7381, type = WEAPON_CLUB, level = 20, - unproperly = true + unproperly = true, }, { -- headchopper @@ -4496,15 +4496,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- brutetamer's staff itemid = 7379, type = WEAPON_CLUB, level = 25, - unproperly = true + unproperly = true, }, { -- royal spear @@ -4512,7 +4512,7 @@ local weapons = { type = WEAPON_MISSILE, level = 25, unproperly = true, - breakchance = 3 + breakchance = 3, }, { -- assassin star @@ -4520,7 +4520,7 @@ local weapons = { type = WEAPON_MISSILE, level = 80, unproperly = true, - breakchance = 33 + breakchance = 33, }, { -- enchanted spear @@ -4528,7 +4528,7 @@ local weapons = { type = WEAPON_MISSILE, level = 42, unproperly = true, - breakchance = 1 + breakchance = 1, }, { -- onyx arrow @@ -4536,7 +4536,7 @@ local weapons = { type = WEAPON_AMMO, level = 40, unproperly = true, - action = "removecount" + action = "removecount", }, { -- sniper arrow @@ -4544,7 +4544,7 @@ local weapons = { type = WEAPON_AMMO, level = 20, unproperly = true, - action = "removecount" + action = "removecount", }, { -- piercing bolt @@ -4552,7 +4552,7 @@ local weapons = { type = WEAPON_AMMO, level = 30, unproperly = true, - action = "removecount" + action = "removecount", }, { -- ruthless axe @@ -4562,8 +4562,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- infernal bolt @@ -4571,7 +4571,7 @@ local weapons = { type = WEAPON_AMMO, level = 110, unproperly = true, - action = "removecount" + action = "removecount", }, { -- the avenger @@ -4581,13 +4581,13 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- Ron the Ripper's sabre itemid = 6101, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- arbalest @@ -4597,13 +4597,13 @@ local weapons = { unproperly = true, vocation = { { "Paladin", true }, - { "Royal Paladin" } - } + { "Royal Paladin" }, + }, }, { -- banana staff itemid = 3348, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- hunting spear @@ -4611,36 +4611,36 @@ local weapons = { type = WEAPON_MISSILE, level = 20, unproperly = true, - breakchance = 6 + breakchance = 6, }, { -- ripper lance itemid = 3346, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- templar scytheblade itemid = 3345, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- beastslayer axe itemid = 3344, type = WEAPON_AXE, level = 30, - unproperly = true + unproperly = true, }, { -- lich staff itemid = 3343, type = WEAPON_CLUB, level = 40, - unproperly = true + unproperly = true, }, { -- scythe itemid = 3453, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- power bolt @@ -4648,29 +4648,29 @@ local weapons = { type = WEAPON_AMMO, level = 55, unproperly = true, - action = "removecount" + action = "removecount", }, { -- arrow itemid = 3447, type = WEAPON_AMMO, - action = "removecount" + action = "removecount", }, { -- bolt itemid = 3446, type = WEAPON_AMMO, - action = "removecount" + action = "removecount", }, { -- bow itemid = 3350, - type = WEAPON_DISTANCE + type = WEAPON_DISTANCE, }, { -- crossbow itemid = 3349, - type = WEAPON_DISTANCE + type = WEAPON_DISTANCE, }, { -- war axe @@ -4680,44 +4680,44 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- arcane staff itemid = 3341, type = WEAPON_CLUB, level = 75, - unproperly = true + unproperly = true, }, { -- heavy mace itemid = 3340, type = WEAPON_CLUB, level = 70, - unproperly = true + unproperly = true, }, { -- djinn blade itemid = 3339, type = WEAPON_SWORD, level = 35, - unproperly = true + unproperly = true, }, { -- bone sword itemid = 3338, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- bone club itemid = 3337, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- studded club itemid = 3336, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- twin axe @@ -4727,22 +4727,22 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- pharaoh sword itemid = 3334, type = WEAPON_SWORD, level = 45, - unproperly = true + unproperly = true, }, { -- crystal mace itemid = 3333, type = WEAPON_CLUB, level = 35, - unproperly = true + unproperly = true, }, { -- hammer of wrath @@ -4752,25 +4752,25 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- ravager's axe itemid = 3331, type = WEAPON_AXE, level = 70, - unproperly = true + unproperly = true, }, { -- heavy machete itemid = 3330, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- daramian axe itemid = 3329, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- daramian waraxe @@ -4780,156 +4780,156 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- daramian mace itemid = 3327, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- epee itemid = 3326, type = WEAPON_SWORD, level = 30, - unproperly = true + unproperly = true, }, { -- light mace itemid = 3325, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- skull staff itemid = 3324, type = WEAPON_CLUB, level = 30, - unproperly = true + unproperly = true, }, { -- dwarven axe itemid = 3323, type = WEAPON_AXE, level = 20, - unproperly = true + unproperly = true, }, { -- dragon hammer itemid = 3322, type = WEAPON_CLUB, level = 25, - unproperly = true + unproperly = true, }, { -- enchanted staff itemid = 3321, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- fire axe itemid = 3320, type = WEAPON_AXE, level = 35, - unproperly = true + unproperly = true, }, { -- stonecutter axe itemid = 3319, type = WEAPON_AXE, level = 90, - unproperly = true + unproperly = true, }, { -- knight axe itemid = 3318, type = WEAPON_AXE, level = 25, - unproperly = true + unproperly = true, }, { -- barbarian axe itemid = 3317, type = WEAPON_AXE, level = 20, - unproperly = true + unproperly = true, }, { -- orcish axe itemid = 3316, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- guardian halberd itemid = 3315, type = WEAPON_AXE, level = 55, - unproperly = true + unproperly = true, }, { -- naginata itemid = 3314, type = WEAPON_AXE, level = 25, - unproperly = true + unproperly = true, }, { -- obsidian lance itemid = 3313, type = WEAPON_AXE, level = 20, - unproperly = true + unproperly = true, }, { -- silver mace itemid = 3312, type = WEAPON_CLUB, level = 45, - unproperly = true + unproperly = true, }, { -- clerical mace itemid = 3311, type = WEAPON_CLUB, level = 20, - unproperly = true + unproperly = true, }, { -- iron hammer itemid = 3310, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- thunder hammer itemid = 3309, type = WEAPON_CLUB, level = 85, - unproperly = true + unproperly = true, }, { -- machete itemid = 3308, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- scimitar itemid = 3307, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- golden sickle itemid = 3306, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- battle hammer itemid = 3305, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- crowbar itemid = 3304, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- great axe @@ -4939,15 +4939,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- dragon lance itemid = 3302, type = WEAPON_AXE, level = 60, - unproperly = true + unproperly = true, }, { -- broadsword @@ -4955,29 +4955,29 @@ local weapons = { type = WEAPON_SWORD, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- katana itemid = 3300, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- poison dagger itemid = 3299, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- throwing knife itemid = 3298, type = WEAPON_MISSILE, - breakchance = 7 + breakchance = 7, }, { -- serpent sword itemid = 3297, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- warlord sword @@ -4987,84 +4987,84 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- bright sword itemid = 3295, type = WEAPON_SWORD, level = 30, - unproperly = true + unproperly = true, }, { -- short sword itemid = 3294, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- sickle itemid = 3293, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- combat knife itemid = 3292, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- knife itemid = 3291, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- silver dagger itemid = 3290, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- staff itemid = 3289, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- magic sword itemid = 3288, type = WEAPON_SWORD, level = 80, - unproperly = true + unproperly = true, }, { -- throwing star itemid = 3287, type = WEAPON_MISSILE, - breakchance = 10 + breakchance = 10, }, { -- mace itemid = 3286, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- longsword itemid = 3285, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- ice rapier itemid = 3284, type = WEAPON_SWORD, - action = "removecharge" + action = "removecharge", }, { -- carlin sword itemid = 3283, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- morning star itemid = 3282, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- giant sword @@ -5074,15 +5074,15 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- fire sword itemid = 3280, type = WEAPON_SWORD, level = 30, - unproperly = true + unproperly = true, }, { -- war hammer @@ -5092,8 +5092,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- magic longsword @@ -5103,19 +5103,19 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- spear itemid = 3277, type = WEAPON_MISSILE, - breakchance = 3 + breakchance = 3, }, { -- hatchet itemid = 3276, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- double axe @@ -5125,50 +5125,50 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- axe itemid = 3274, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- sabre itemid = 3273, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- rapier itemid = 3272, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- spike sword itemid = 3271, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- club itemid = 3270, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- halberd itemid = 3269, type = WEAPON_AXE, level = 25, - unproperly = true + unproperly = true, }, { -- hand axe itemid = 3268, - type = WEAPON_AXE + type = WEAPON_AXE, }, { -- dagger itemid = 3267, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- battle axe @@ -5177,8 +5177,8 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- two handed sword @@ -5188,18 +5188,18 @@ local weapons = { unproperly = true, vocation = { { "Knight", true }, - { "Elite Knight" } - } + { "Elite Knight" }, + }, }, { -- sword itemid = 3264, - type = WEAPON_SWORD + type = WEAPON_SWORD, }, { -- giant smithhammer itemid = 3208, - type = WEAPON_CLUB + type = WEAPON_CLUB, }, { -- wand of dragonbreath @@ -5211,8 +5211,8 @@ local weapons = { damage = { 13, 25 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of vortex @@ -5224,8 +5224,8 @@ local weapons = { damage = { 8, 18 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of cosmic energy @@ -5237,8 +5237,8 @@ local weapons = { damage = { 37, 53 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of decay @@ -5250,8 +5250,8 @@ local weapons = { damage = { 23, 37 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- wand of inferno @@ -5263,8 +5263,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Sorcerer", true }, - { "Master Sorcerer" } - } + { "Master Sorcerer" }, + }, }, { -- moonlight rod @@ -5276,8 +5276,8 @@ local weapons = { damage = { 13, 25 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- necrotic rod @@ -5289,8 +5289,8 @@ local weapons = { damage = { 23, 37 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- hailstorm rod @@ -5302,8 +5302,8 @@ local weapons = { damage = { 56, 74 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- snakebit rod @@ -5315,8 +5315,8 @@ local weapons = { damage = { 8, 18 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- terra rod @@ -5328,49 +5328,49 @@ local weapons = { damage = { 37, 53 }, vocation = { { "Druid", true }, - { "Elder Druid" } - } + { "Elder Druid" }, + }, }, { -- snowball itemid = 2992, type = WEAPON_MISSILE, - action = "removecount" + action = "removecount", }, { -- small stone itemid = 1781, type = WEAPON_MISSILE, - breakchance = 3 - } + breakchance = 3, + }, } for _, w in ipairs(weapons) do local weapon = Weapon(w.type) weapon:id(w.itemid or w.itemId) - if (w.action) then + if w.action then weapon:action(w.action) end - if (w.breakchance or w.breakChance) then + if w.breakchance or w.breakChance then weapon:breakChance(w.breakchance or w.breakChance) end - if (w.level) then + if w.level then weapon:level(w.level) end - if (w.mana) then + if w.mana then weapon:mana(w.mana) end - if (w.unproperly) then + if w.unproperly then weapon:wieldUnproperly(w.unproperly) end - if (w.damage) then + if w.damage then weapon:damage(w.damage[1], w.damage[2]) end - if (w.wandtype or w.wandType) then + if w.wandtype or w.wandType then weapon:element(w.wandtype or w.wandType) end - if (w.vocation) then + if w.vocation then for _, v in ipairs(w.vocation) do weapon:vocation(v[1], v[2] or false, v[3] or false) end diff --git a/data-otservbr-global/startup/others/load.lua b/data-otservbr-global/startup/others/load.lua index 3c42a1884d2..c9051291a63 100644 --- a/data-otservbr-global/startup/others/load.lua +++ b/data-otservbr-global/startup/others/load.lua @@ -1 +1 @@ -dofile(DATA_DIRECTORY .. '/startup/others/functions.lua') +dofile(DATA_DIRECTORY .. "/startup/others/functions.lua") diff --git a/data-otservbr-global/startup/startup.lua b/data-otservbr-global/startup/startup.lua index 8adec4bf3a6..5f54dc9b9fb 100644 --- a/data-otservbr-global/startup/startup.lua +++ b/data-otservbr-global/startup/startup.lua @@ -1,2 +1,2 @@ -dofile(DATA_DIRECTORY .. '/startup/tables/load.lua') -dofile(DATA_DIRECTORY .. '/startup/others/load.lua') +dofile(DATA_DIRECTORY .. "/startup/tables/load.lua") +dofile(DATA_DIRECTORY .. "/startup/others/load.lua") diff --git a/data-otservbr-global/startup/tables/chest.lua b/data-otservbr-global/startup/tables/chest.lua index 5604b78a379..2ca7c272215 100644 --- a/data-otservbr-global/startup/tables/chest.lua +++ b/data-otservbr-global/startup/tables/chest.lua @@ -48,16 +48,16 @@ ChestAction = { itemPos = { { x = 33057, y = 31029, z = 7 }, { x = 33055, y = 31029, z = 7 }, - { x = 33053, y = 31029, z = 7 } - } + { x = 33053, y = 31029, z = 7 }, + }, }, -- The New Frontier Quest [5001] = { -- Reward Outfit itemId = 5862, itemPos = { - { x = 33053, y = 31020, z = 7 } - } - } + { x = 33053, y = 31020, z = 7 }, + }, + }, } ChestUnique = { @@ -69,7 +69,7 @@ ChestUnique = { itemId = 387, itemPos = { x = 32219, y = 32401, z = 10 }, reward = { { 2972, 1 } }, - storage = Storage.Quest.Key.ID3980 + storage = Storage.Quest.Key.ID3980, }, -- Panpipe quest key 3791 [5001] = { @@ -77,7 +77,7 @@ ChestUnique = { itemId = 1777, itemPos = { x = 32652, y = 32107, z = 7 }, reward = { { 2969, 1 } }, - storage = Storage.Quest.Key.ID4055 + storage = Storage.Quest.Key.ID4055, }, -- Dawnport quest key 0010 chest [5002] = { @@ -85,7 +85,7 @@ ChestUnique = { itemId = 2434, itemPos = { x = 32068, y = 31895, z = 3 }, reward = { { 21392, 1 } }, - storage = Storage.Quest.Key.ID0010 + storage = Storage.Quest.Key.ID0010, }, -- Emperor's cookies quest [5003] = { -- key 3800 @@ -93,7 +93,7 @@ ChestUnique = { itemId = 2472, itemPos = { x = 32605, y = 31908, z = 3 }, reward = { { 2970, 1 } }, - storage = Storage.Quest.Key.ID3800 + storage = Storage.Quest.Key.ID3800, }, -- Emperor's cookies quest [5004] = { -- bag with cookies and key 3801 @@ -104,7 +104,7 @@ ChestUnique = { reward = { { 2970, 1 }, { 3598, 20 }, { 3598, 7 } }, weight = 44, storage = Storage.Quest.U6_1.EmperorsCookies.Rewards.Cookies, - keyAction = Storage.Quest.Key.ID3801 + keyAction = Storage.Quest.Key.ID3801, }, -- Emperor's cookies quest [5005] = { -- key 3802 @@ -112,7 +112,7 @@ ChestUnique = { itemId = 2472, itemPos = { x = 32599, y = 31923, z = 6 }, reward = { { 2970, 1 } }, - storage = Storage.Quest.Key.ID3802 + storage = Storage.Quest.Key.ID3802, }, -- Black knight quest key 5010 [5006] = { @@ -120,14 +120,14 @@ ChestUnique = { itemId = 3634, itemPos = { x = 32800, y = 31959, z = 7 }, reward = { { 2969, 1 } }, - storage = Storage.Quest.Key.ID5010 + storage = Storage.Quest.Key.ID5010, }, [5007] = { isKey = true, itemId = 3634, itemPos = { x = 32813, y = 31964, z = 7 }, reward = { { 2969, 1 } }, - storage = Storage.Quest.Key.ID5010 + storage = Storage.Quest.Key.ID5010, }, [5008] = { isKey = true, @@ -137,28 +137,28 @@ ChestUnique = { reward = { { 2970, 1 }, { 3031, 23 }, { 3147, 1 }, { 3298, 4 }, { 3384, 1 } }, weight = 80, storage = Storage.Quest.Key.ID4502, - keyAction = Storage.Quest.Key.ID4502 + keyAction = Storage.Quest.Key.ID4502, }, [5009] = { isKey = true, itemId = 2434, itemPos = { x = 32411, y = 32155, z = 15 }, reward = { { 2969, 1 } }, - storage = Storage.Quest.Key.ID3620 + storage = Storage.Quest.Key.ID3620, }, [5010] = { isKey = true, itemId = 2434, itemPos = { x = 32411, y = 32155, z = 15 }, reward = { { 2969, 1 } }, - storage = Storage.Quest.Key.ID3620 + storage = Storage.Quest.Key.ID3620, }, [5011] = { isKey = true, itemId = 3634, itemPos = { x = 32497, y = 31887, z = 7 }, reward = { { 2970, 1 } }, - storage = Storage.Quest.Key.ID3899 + storage = Storage.Quest.Key.ID3899, }, [5012] = { isKey = true, @@ -167,7 +167,7 @@ ChestUnique = { reward = { { 2969, 1 } }, storage = Storage.Quest.Key.ID0909, timerStorage = Storage.TheSecretLibrary.FalconBastionChestsTimer.Key0909, - time = 24 -- hour + time = 24, -- hour }, -- To add a reward inside a bag, you need to add the variable "container = bagId" before "reward" -- Just duplicate the table and configure correctly, the scripts already register the entire table automatically @@ -177,31 +177,31 @@ ChestUnique = { itemId = 23740, itemPos = { x = 32349, y = 32194, z = 9 }, reward = { { 23986, 1 } }, - storage = Storage.HallsOfHope.Reward1 + storage = Storage.HallsOfHope.Reward1, }, [6002] = { itemId = 23740, itemPos = { x = 32382, y = 32368, z = 9 }, reward = { { 23986, 1 } }, - storage = Storage.HallsOfHope.Reward2 + storage = Storage.HallsOfHope.Reward2, }, [6003] = { itemId = 23740, itemPos = { x = 32287, y = 32119, z = 7 }, reward = { { 23986, 1 } }, - storage = Storage.HallsOfHope.Reward3 + storage = Storage.HallsOfHope.Reward3, }, [6004] = { itemId = 23741, itemPos = { x = 32389, y = 32001, z = 6 }, reward = { { 23986, 1 } }, - storage = Storage.HallsOfHope.Reward4 + storage = Storage.HallsOfHope.Reward4, }, [6005] = { itemId = 23740, itemPos = { x = 32449, y = 32109, z = 8 }, reward = { { 23986, 1 } }, - storage = Storage.HallsOfHope.Reward5 + storage = Storage.HallsOfHope.Reward5, }, -- Dawnport -- Legion helmet quest (dawnport) @@ -209,7 +209,7 @@ ChestUnique = { itemId = 4240, itemPos = { x = 32143, y = 31910, z = 8 }, reward = { { 3374, 1 } }, - storage = Storage.Quest.U10_55.SanctuaryOfTheLizardGod.LegionHelmet + storage = Storage.Quest.U10_55.SanctuaryOfTheLizardGod.LegionHelmet, }, -- Dawnport quest -- Torn log book @@ -217,7 +217,7 @@ ChestUnique = { itemId = 2472, itemPos = { x = 32059, y = 31800, z = 10 }, reward = { { 21378, 1 } }, - storage = Storage.Quest.U10_55.Dawnport.TornLogBook + storage = Storage.Quest.U10_55.Dawnport.TornLogBook, }, -- Deeper fibula quest -- Tower shield @@ -225,35 +225,35 @@ ChestUnique = { itemId = 4024, itemPos = { x = 32239, y = 32471, z = 10 }, reward = { { 3428, 1 } }, - storage = Storage.Quest.PreU6_0.DeeperFibula.Rewards.TowerShield + storage = Storage.Quest.PreU6_0.DeeperFibula.Rewards.TowerShield, }, -- Warrior helmet [6009] = { itemId = 4024, itemPos = { x = 32239, y = 32478, z = 10 }, reward = { { 3369, 1 } }, - storage = Storage.Quest.PreU6_0.DeeperFibula.Rewards.WarriorHelmet + storage = Storage.Quest.PreU6_0.DeeperFibula.Rewards.WarriorHelmet, }, -- Dwarven ring [6010] = { itemId = 4240, itemPos = { x = 32233, y = 32491, z = 10 }, reward = { { 3097, 1 } }, - storage = Storage.Quest.PreU6_0.DeeperFibula.Rewards.DwarvenRing + storage = Storage.Quest.PreU6_0.DeeperFibula.Rewards.DwarvenRing, }, -- Elven aulet [6011] = { itemId = 4025, itemPos = { x = 32245, y = 32492, z = 10 }, reward = { { 3082, 1 } }, - storage = Storage.Quest.PreU6_0.DeeperFibula.Rewards.ElvenAmulet + storage = Storage.Quest.PreU6_0.DeeperFibula.Rewards.ElvenAmulet, }, -- Knight axe [6012] = { itemId = 4240, itemPos = { x = 32256, y = 32500, z = 10 }, reward = { { 3318, 1 } }, - storage = Storage.Quest.PreU6_0.DeeperFibula.Rewards.KnightAxe + storage = Storage.Quest.PreU6_0.DeeperFibula.Rewards.KnightAxe, }, -- Short sword quest -- Book @@ -261,7 +261,7 @@ ChestUnique = { itemId = 2472, itemPos = { x = 32171, y = 32197, z = 7 }, reward = { { 2821, 1 } }, - storage = Storage.Quest.PreU6_0.ShortSword.Rewards.Book + storage = Storage.Quest.PreU6_0.ShortSword.Rewards.Book, }, -- Thais lighthouse quest -- Battle hammer @@ -269,14 +269,14 @@ ChestUnique = { itemId = 2472, itemPos = { x = 32225, y = 32265, z = 10 }, reward = { { 3305, 1 } }, - storage = Storage.Quest.PreU6_0.ThaisLighthouse.Rewards.BattleHammer + storage = Storage.Quest.PreU6_0.ThaisLighthouse.Rewards.BattleHammer, }, -- Dark shield [6015] = { itemId = 2472, itemPos = { x = 32226, y = 32265, z = 10 }, reward = { { 3421, 1 } }, - storage = Storage.Quest.PreU6_0.ThaisLighthouse.DarkShield + storage = Storage.Quest.PreU6_0.ThaisLighthouse.DarkShield, }, -- Studded shield quest (rookgaard) -- Banana free account area @@ -284,21 +284,21 @@ ChestUnique = { itemId = 3639, itemPos = { x = 32172, y = 32169, z = 7 }, reward = { { 3587, 1 } }, - storage = Storage.Quest.U6_0.StuddedShield.Rewards.BananaFree + storage = Storage.Quest.U6_0.StuddedShield.Rewards.BananaFree, }, -- Banana premium account area [6017] = { itemId = 3639, itemPos = { x = 31983, y = 32193, z = 5 }, reward = { { 3587, 1 } }, - storage = Storage.Quest.U6_0.StuddedShield.Rewards.BananaPremium + storage = Storage.Quest.U6_0.StuddedShield.Rewards.BananaPremium, }, -- Explorer brooch quest (kazordoon) [6019] = { itemId = 4240, itemPos = { x = 32636, y = 31873, z = 10 }, reward = { { 4871, 1 } }, - storage = Storage.Quest.U6_1.ExplorerBrooch.Brooch + storage = Storage.Quest.U6_1.ExplorerBrooch.Brooch, }, -- Orc fortress quest -- Knight axe @@ -306,21 +306,21 @@ ChestUnique = { itemId = 2469, itemPos = { x = 32980, y = 31727, z = 9 }, reward = { { 3318, 1 } }, - storage = Storage.Quest.U6_1.OrcFortress.Rewards.KnightAxe + storage = Storage.Quest.U6_1.OrcFortress.Rewards.KnightAxe, }, -- Knight armor [6021] = { itemId = 2469, itemPos = { x = 32981, y = 31727, z = 9 }, reward = { { 3370, 1 } }, - storage = Storage.Quest.U6_1.OrcFortress.Rewards.KnightArmor + storage = Storage.Quest.U6_1.OrcFortress.Rewards.KnightArmor, }, -- Fire sword [6022] = { itemId = 2469, itemPos = { x = 32985, y = 31727, z = 9 }, reward = { { 3280, 1 } }, - storage = Storage.Quest.U6_1.OrcFortress.Rewards.FireSword + storage = Storage.Quest.U6_1.OrcFortress.Rewards.FireSword, }, -- Draconia quest [6023] = { @@ -329,7 +329,7 @@ ChestUnique = { container = 2853, reward = { { 3284, 1 }, { 3297, 1 } }, weight = 64, - storage = Storage.Quest.U6_2.Draconia.Rewards.BagWithWeapons + storage = Storage.Quest.U6_2.Draconia.Rewards.BagWithWeapons, }, [6024] = { itemId = 2472, @@ -337,14 +337,14 @@ ChestUnique = { container = 2853, reward = { { 3081, 5 }, { 3051, 1 } }, weight = 15.80, - storage = Storage.Quest.U6_2.Draconia.Rewards.BagWithAmulets + storage = Storage.Quest.U6_2.Draconia.Rewards.BagWithAmulets, }, -- Adorned UH rune quest [6025] = { itemId = 2469, itemPos = { x = 33136, y = 31601, z = 15 }, reward = { { 11603, 1 } }, - storage = Storage.Quest.U6_4.AdornedUHRune.Rewards.SilverRuneEmblem + storage = Storage.Quest.U6_4.AdornedUHRune.Rewards.SilverRuneEmblem, }, -- Barbarian axe quest -- Barbarian axe @@ -352,21 +352,21 @@ ChestUnique = { itemId = 2469, itemPos = { x = 33184, y = 31945, z = 11 }, reward = { { 3317, 1 } }, - storage = Storage.Quest.U6_4.BarbarianAxe.Rewards.BarbarianAxe + storage = Storage.Quest.U6_4.BarbarianAxe.Rewards.BarbarianAxe, }, -- Scimitar [6027] = { itemId = 2469, itemPos = { x = 33185, y = 31945, z = 11 }, reward = { { 3307, 1 } }, - storage = Storage.Quest.U6_4.BarbarianAxe.Rewards.Scimitar + storage = Storage.Quest.U6_4.BarbarianAxe.Rewards.Scimitar, }, -- Dark armor quest [6028] = { itemId = 4311, itemPos = { x = 33178, y = 31870, z = 12 }, reward = { { 3383, 1 } }, - storage = Storage.Quest.U6_4.DarkArmor.Rewards.Armor + storage = Storage.Quest.U6_4.DarkArmor.Rewards.Armor, }, -- Demon helmet quest -- Steel boots @@ -374,21 +374,21 @@ ChestUnique = { itemId = 2472, itemPos = { x = 33313, y = 31574, z = 15 }, reward = { { 3554, 1 } }, - storage = Storage.Quest.U6_4.DemonHelmet.Rewards.SteelBoots + storage = Storage.Quest.U6_4.DemonHelmet.Rewards.SteelBoots, }, -- Demon helmet [6030] = { itemId = 2472, itemPos = { x = 33313, y = 31575, z = 15 }, reward = { { 3387, 1 } }, - storage = Storage.Quest.U6_4.DemonHelmet.Rewards.DemonHelmet + storage = Storage.Quest.U6_4.DemonHelmet.Rewards.DemonHelmet, }, -- Demon shield [6031] = { itemId = 2472, itemPos = { x = 33313, y = 31576, z = 15 }, reward = { { 3420, 1 } }, - storage = Storage.Quest.U6_4.DemonHelmet.Rewards.DemonShield + storage = Storage.Quest.U6_4.DemonHelmet.Rewards.DemonShield, }, -- Double hero quest -- Red gem @@ -396,14 +396,14 @@ ChestUnique = { itemId = 2469, itemPos = { x = 33109, y = 31679, z = 13 }, reward = { { 3039, 1 } }, - storage = Storage.Quest.U6_4.DoubleHero.Rewards.RedGem + storage = Storage.Quest.U6_4.DoubleHero.Rewards.RedGem, }, -- Club ring [6033] = { itemId = 2469, itemPos = { x = 33110, y = 31679, z = 13 }, reward = { { 3093, 1 } }, - storage = Storage.Quest.U6_4.DoubleHero.Rewards.ClubRing + storage = Storage.Quest.U6_4.DoubleHero.Rewards.ClubRing, }, -- Edron goblin quest -- Silver amulet @@ -411,14 +411,14 @@ ChestUnique = { itemId = 2469, itemPos = { x = 33095, y = 31800, z = 10 }, reward = { { 3054, 200 } }, - storage = Storage.Quest.U6_4.EdronGoblin.Rewards.SilverAmulet + storage = Storage.Quest.U6_4.EdronGoblin.Rewards.SilverAmulet, }, -- Steel shield [6035] = { itemId = 2469, itemPos = { x = 33095, y = 31801, z = 10 }, reward = { { 3409, 1 } }, - storage = Storage.Quest.U6_4.EdronGoblin.Rewards.SteelShield + storage = Storage.Quest.U6_4.EdronGoblin.Rewards.SteelShield, }, -- Fire axe quest -- Fire axe @@ -426,7 +426,7 @@ ChestUnique = { itemId = 4024, itemPos = { x = 33084, y = 31650, z = 12 }, reward = { { 3320, 1 } }, - storage = Storage.Quest.U6_4.FireAxe.Rewards.FireAxe + storage = Storage.Quest.U6_4.FireAxe.Rewards.FireAxe, }, -- Ring quest -- Time ring @@ -434,14 +434,14 @@ ChestUnique = { itemId = 2469, itemPos = { x = 33131, y = 31624, z = 15 }, reward = { { 3053, 1 } }, - storage = Storage.Quest.U7_1.Ring.Rewards.TimeRing + storage = Storage.Quest.U7_1.Ring.Rewards.TimeRing, }, -- Sword ring [6038] = { itemId = 2469, itemPos = { x = 33134, y = 31624, z = 15 }, reward = { { 3091, 1 } }, - storage = Storage.Quest.U7_1.Ring.Rewards.SwordRing + storage = Storage.Quest.U7_1.Ring.Rewards.SwordRing, }, -- Troll cave quest -- Garlic necklace @@ -449,14 +449,14 @@ ChestUnique = { itemId = 2473, itemPos = { x = 33143, y = 31719, z = 10 }, reward = { { 3083, 150 } }, - storage = Storage.Quest.U6_4.TrollCave.Rewards.GarlicNecklace + storage = Storage.Quest.U6_4.TrollCave.Rewards.GarlicNecklace, }, -- Brass legs [6040] = { itemId = 2473, itemPos = { x = 33143, y = 31721, z = 10 }, reward = { { 3372, 1 } }, - storage = Storage.Quest.U6_4.TrollCave.Rewards.BrassLegs + storage = Storage.Quest.U6_4.TrollCave.Rewards.BrassLegs, }, -- Vampire shield quest -- Dragon lance @@ -464,14 +464,14 @@ ChestUnique = { itemId = 2469, itemPos = { x = 33189, y = 31688, z = 14 }, reward = { { 3302, 1 } }, - storage = Storage.Quest.U6_4.VampireShield.Rewards.DragonLance + storage = Storage.Quest.U6_4.VampireShield.Rewards.DragonLance, }, -- Vampire shield [6042] = { itemId = 2469, itemPos = { x = 33195, y = 31688, z = 14 }, reward = { { 3434, 1 } }, - storage = Storage.Quest.U6_4.VampireShield.Rewards.VampireShield + storage = Storage.Quest.U6_4.VampireShield.Rewards.VampireShield, }, -- Weeding ring quest -- Dragon necklace @@ -479,14 +479,14 @@ ChestUnique = { itemId = 2469, itemPos = { x = 33158, y = 31621, z = 15 }, reward = { { 3085, 200 } }, - storage = Storage.Quest.U6_4.WeddingRing.Rewards.DragonNecklace + storage = Storage.Quest.U6_4.WeddingRing.Rewards.DragonNecklace, }, -- Weeding ring [6044] = { itemId = 2469, itemPos = { x = 33158, y = 31622, z = 15 }, reward = { { 3004, 1 } }, - storage = Storage.Quest.U6_4.WeddingRing.Rewards.WeedingRing + storage = Storage.Quest.U6_4.WeddingRing.Rewards.WeedingRing, }, -- Alawars vault quest -- White pearl @@ -494,14 +494,14 @@ ChestUnique = { itemId = 2472, itemPos = { x = 32105, y = 31567, z = 9 }, reward = { { 3026, 3 } }, - storage = Storage.Quest.U6_5.AlawarsVault.Rewards.WhitePearl + storage = Storage.Quest.U6_5.AlawarsVault.Rewards.WhitePearl, }, -- Broadsword [6046] = { itemId = 2472, itemPos = { x = 32109, y = 31567, z = 9 }, reward = { { 3301, 1 } }, - storage = Storage.Quest.U6_5.AlawarsVault.Rewards.Broadsword + storage = Storage.Quest.U6_5.AlawarsVault.Rewards.Broadsword, }, -- Black knight quest -- Crown armor @@ -509,14 +509,14 @@ ChestUnique = { itemId = 3634, itemPos = { x = 32868, y = 31955, z = 11 }, reward = { { 3381, 1 } }, - storage = Storage.Quest.U7_1.BlackKnight.Rewards.CrownArmor + storage = Storage.Quest.U7_1.BlackKnight.Rewards.CrownArmor, }, -- Crown shield [6048] = { itemId = 3634, itemPos = { x = 32880, y = 31955, z = 11 }, reward = { { 3419, 1 } }, - storage = Storage.Quest.U7_1.BlackKnight.Rewards.CrownShield + storage = Storage.Quest.U7_1.BlackKnight.Rewards.CrownShield, }, -- TIme ring quest -- Crystal ball @@ -524,21 +524,21 @@ ChestUnique = { itemId = 2472, itemPos = { x = 33038, y = 32171, z = 9 }, reward = { { 3076, 1 } }, - storage = Storage.Quest.U7_1.TimeRing.Rewards.CrystallBall + storage = Storage.Quest.U7_1.TimeRing.Rewards.CrystallBall, }, -- Time ring [6050] = { itemId = 2472, itemPos = { x = 33039, y = 32171, z = 9 }, reward = { { 3053, 1 } }, - storage = Storage.Quest.U7_1.TimeRing.Rewards.TimeRing + storage = Storage.Quest.U7_1.TimeRing.Rewards.TimeRing, }, -- Elven amulet [6051] = { itemId = 2472, itemPos = { x = 33040, y = 32171, z = 9 }, reward = { { 3082, 1 } }, - storage = Storage.Quest.U7_1.TimeRing.Rewards.ElvenAmulet + storage = Storage.Quest.U7_1.TimeRing.Rewards.ElvenAmulet, }, -- Behemoth quest -- Guardian halberd @@ -546,28 +546,28 @@ ChestUnique = { itemId = 2472, itemPos = { x = 33295, y = 31658, z = 13 }, reward = { { 3315, 1 } }, - storage = Storage.Quest.U7_2.Behemoth.GuardianHalberd + storage = Storage.Quest.U7_2.Behemoth.GuardianHalberd, }, -- Demon shield [6053] = { itemId = 2472, itemPos = { x = 33297, y = 31658, z = 13 }, reward = { { 3420, 1 } }, - storage = Storage.Quest.U7_2.Behemoth.DemonShield + storage = Storage.Quest.U7_2.Behemoth.DemonShield, }, -- Golden armor [6054] = { itemId = 2472, itemPos = { x = 33298, y = 31658, z = 13 }, reward = { { 3360, 1 } }, - storage = Storage.Quest.U7_2.Behemoth.GoldenArmor + storage = Storage.Quest.U7_2.Behemoth.GoldenArmor, }, -- Family brooch quest [6055] = { itemId = 2476, itemPos = { x = 32248, y = 31866, z = 8 }, reward = { { 3205, 1 } }, - storage = Storage.Quest.U7_24.FamilyBrooch.Brooch + storage = Storage.Quest.U7_24.FamilyBrooch.Brooch, }, -- The queen of the banshees quest -- Stone skin amulet @@ -575,42 +575,42 @@ ChestUnique = { itemId = 2472, itemPos = { x = 32212, y = 31896, z = 15 }, reward = { { 3081, 1 } }, - storage = Storage.Quest.U7_2.TheQueenOfTheBanshees.Reward.StoneSkinAmulet + storage = Storage.Quest.U7_2.TheQueenOfTheBanshees.Reward.StoneSkinAmulet, }, -- Stone skin amulet [6057] = { itemId = 2472, itemPos = { x = 32226, y = 31896, z = 15 }, reward = { { 3049, 1 } }, - storage = Storage.Quest.U7_2.TheQueenOfTheBanshees.Reward.StealthRing + storage = Storage.Quest.U7_2.TheQueenOfTheBanshees.Reward.StealthRing, }, -- Tower shield [6058] = { itemId = 2472, itemPos = { x = 32212, y = 31910, z = 15 }, reward = { { 3428, 1 } }, - storage = Storage.Quest.U7_2.TheQueenOfTheBanshees.Reward.TowerShield + storage = Storage.Quest.U7_2.TheQueenOfTheBanshees.Reward.TowerShield, }, -- Giant sword [6059] = { itemId = 2472, itemPos = { x = 32226, y = 31910, z = 15 }, reward = { { 3281, 1 } }, - storage = Storage.Quest.U7_2.TheQueenOfTheBanshees.Reward.GiantSword + storage = Storage.Quest.U7_2.TheQueenOfTheBanshees.Reward.GiantSword, }, -- Boots of haste [6060] = { itemId = 2472, itemPos = { x = 32218, y = 31912, z = 15 }, reward = { { 3079, 1 } }, - storage = Storage.Quest.U7_2.TheQueenOfTheBanshees.Reward.BootsOfHaste + storage = Storage.Quest.U7_2.TheQueenOfTheBanshees.Reward.BootsOfHaste, }, -- 100 platinum coins [6061] = { itemId = 2472, itemPos = { x = 32220, y = 31912, z = 15 }, reward = { { 3035, 100 } }, - storage = Storage.Quest.U7_2.TheQueenOfTheBanshees.Reward.PlatinumCoin + storage = Storage.Quest.U7_2.TheQueenOfTheBanshees.Reward.PlatinumCoin, }, -- Ornamented shield quest [6062] = { @@ -620,7 +620,7 @@ ChestUnique = { keyAction = Storage.Quest.Key.ID3702, reward = { { 2971, 1 }, { 3509, 1 }, { 3351, 1 }, { 3424, 1 }, { 2821, 1 }, { 3271, 1 }, { 3085, 1 }, { 3048, 1 } }, weight = 194, - storage = Storage.Quest.PreU6_0.OrnamentedShield.Rewards.OrnamentedShield + storage = Storage.Quest.PreU6_0.OrnamentedShield.Rewards.OrnamentedShield, }, [6063] = { itemId = 2480, @@ -628,7 +628,7 @@ ChestUnique = { container = 2859, reward = { { 2949, 1 }, { 3059, 1 }, { 3083, 1 }, { 3035, 5 }, { 3053, 1 } }, weight = 44, - storage = Storage.Quest.PreU6_0.OrnamentedShield.Rewards.TimeRing + storage = Storage.Quest.PreU6_0.OrnamentedShield.Rewards.TimeRing, }, --[6064] EMPTY [6065] = { @@ -637,7 +637,7 @@ ChestUnique = { container = 2853, reward = { { 3033, 2 }, { 3050, 1 }, { 2953, 1 } }, weight = 44, - storage = Storage.Quest.U6_1.Panpipe.Rewards.Panpipe + storage = Storage.Quest.U6_1.Panpipe.Rewards.Panpipe, }, [6066] = { itemId = 2469, @@ -645,7 +645,7 @@ ChestUnique = { container = 2853, reward = { { 3031, 98 }, { 3031, 77 }, { 3026, 3 } }, weight = 27, - storage = Storage.Quest.U6_4.BerserkerTreasure.Rewards.WhitePearls + storage = Storage.Quest.U6_4.BerserkerTreasure.Rewards.WhitePearls, }, -- Fire axe quest -- Bag @@ -655,7 +655,7 @@ ChestUnique = { container = 2853, reward = { { 3098, 1 }, { 3085, 200 }, { 3028, 7 } }, weight = 27, - storage = Storage.Quest.U6_4.FireAxe.Rewards.Bag + storage = Storage.Quest.U6_4.FireAxe.Rewards.Bag, }, -- Poison daggers quest -- Backpack reward @@ -665,7 +665,7 @@ ChestUnique = { container = 2854, reward = { { 3448, 30 }, { 3299, 1 }, { 3299, 1 } }, weight = 60, - storage = Storage.Quest.U6_4.PoisonDaggers.Rewards.BackpackReward + storage = Storage.Quest.U6_4.PoisonDaggers.Rewards.BackpackReward, }, -- Shaman treasure quest -- Bag with 3 blank runes @@ -675,7 +675,7 @@ ChestUnique = { container = 2853, reward = { { 3147, 3 } }, weight = 15, - storage = Storage.Quest.U6_4.ShamanTreasure.Rewards.BlankRunes + storage = Storage.Quest.U6_4.ShamanTreasure.Rewards.BlankRunes, }, -- Strong potions quest -- Green bag with 5 strong mana potions @@ -685,7 +685,7 @@ ChestUnique = { container = 2857, reward = { { 237, 5 } }, weight = 23, - storage = Storage.Quest.U8_1.StrongPotions.Reward + storage = Storage.Quest.U8_1.StrongPotions.Reward, }, -- Vampire shield quest -- Bag @@ -695,7 +695,7 @@ ChestUnique = { container = 2853, reward = { { 3058, 1 }, { 3027, 1 }, { 3078, 1 } }, weight = 16, - storage = Storage.Quest.U6_4.VampireShield.Rewards.StrangeSymbol + storage = Storage.Quest.U6_4.VampireShield.Rewards.StrangeSymbol, }, -- [6072] empty @@ -707,7 +707,7 @@ ChestUnique = { container = 2854, reward = { { 268, 1 }, { 266, 1 }, { 3449, 30 }, { 3448, 60 } }, weight = 80, - storage = Storage.Quest.U7_1.DragonTower.Rewards.Backpack1 + storage = Storage.Quest.U7_1.DragonTower.Rewards.Backpack1, }, -- Backpack 2 [6074] = { @@ -716,7 +716,7 @@ ChestUnique = { container = 2854, reward = { { 3350, 1 }, { 3029, 2 } }, weight = 50, - storage = Storage.Quest.U7_1.DragonTower.Rewards.Backpack2 + storage = Storage.Quest.U7_1.DragonTower.Rewards.Backpack2, }, -- Behemoth quest -- Bag @@ -726,7 +726,7 @@ ChestUnique = { container = 2853, reward = { { 3028, 3 }, { 3029, 4 }, { 3007, 1 }, { 3052, 1 }, { 3055, 1 } }, weight = 50, - storage = Storage.Quest.U7_2.Behemoth.Bag + storage = Storage.Quest.U7_2.Behemoth.Bag, }, -- Parchment room quest -- Bag @@ -737,7 +737,7 @@ ChestUnique = { keyAction = Storage.Quest.Key.ID6010, reward = { { 2972, 1 }, { 3114, 1 }, { 3034, 2 }, { 3049, 1 }, { 3115, 1 } }, weight = 42, - storage = Storage.Quest.U7_2.ParchmentRoom.Bag + storage = Storage.Quest.U7_2.ParchmentRoom.Bag, }, -- Giant smithhammer quest -- Talon @@ -745,21 +745,21 @@ ChestUnique = { itemId = 2472, itemPos = { x = 32774, y = 32253, z = 8 }, reward = { { 3034, 1 } }, - storage = Storage.Quest.U7_24.GiantSmithhammer.Talon + storage = Storage.Quest.U7_24.GiantSmithhammer.Talon, }, -- Giant smithhammer [6078] = { itemId = 2472, itemPos = { x = 32776, y = 32253, z = 8 }, reward = { { 12510, 1 } }, - storage = Storage.Quest.U7_24.GiantSmithhammer.Hammer + storage = Storage.Quest.U7_24.GiantSmithhammer.Hammer, }, -- 100 gold coin [6079] = { itemId = 2472, itemPos = { x = 32778, y = 32253, z = 8 }, reward = { { 3031, 100 } }, - storage = Storage.Quest.U7_24.GiantSmithhammer.GoldCoin + storage = Storage.Quest.U7_24.GiantSmithhammer.GoldCoin, }, -- Mad Mage room quest -- Star amulet @@ -767,21 +767,21 @@ ChestUnique = { itemId = 2472, itemPos = { x = 32578, y = 32195, z = 14 }, reward = { { 3014, 1 } }, - storage = Storage.Quest.U7_24.MadMageRoom.StarAmulet + storage = Storage.Quest.U7_24.MadMageRoom.StarAmulet, }, -- Hat of the mad [6081] = { itemId = 2472, itemPos = { x = 32575, y = 32195, z = 14 }, reward = { { 3210, 1 } }, - storage = Storage.Quest.U7_24.MadMageRoom.Hat + storage = Storage.Quest.U7_24.MadMageRoom.Hat, }, -- Stone skin amulet [6082] = { itemId = 2472, itemPos = { x = 32572, y = 32195, z = 14 }, reward = { { 3081, 5 } }, - storage = Storage.Quest.U7_24.MadMageRoom.StoneSkinAmulet + storage = Storage.Quest.U7_24.MadMageRoom.StoneSkinAmulet, }, -- Skull of ratha quest -- Bag (white pearl, skull) @@ -791,7 +791,7 @@ ChestUnique = { container = 2853, weight = 42, reward = { { 3026, 1 }, { 3207, 1 } }, - storage = Storage.Quest.U7_24.SkullOfRatha.Bag1 + storage = Storage.Quest.U7_24.SkullOfRatha.Bag1, }, -- Bag (wolf tooth chain/dwarven ring) [6084] = { @@ -800,7 +800,7 @@ ChestUnique = { container = 2853, weight = 42, reward = { { 3012, 1 }, { 3097, 1 } }, - storage = Storage.Quest.U7_24.SkullOfRatha.Bag2 + storage = Storage.Quest.U7_24.SkullOfRatha.Bag2, }, -- The annihilator quest -- Demon armor @@ -808,21 +808,21 @@ ChestUnique = { itemId = 2472, itemPos = { x = 33227, y = 31656, z = 13 }, reward = { { 3388, 1 } }, - storage = Storage.Quest.U7_24.TheAnnihilator.Reward + storage = Storage.Quest.U7_24.TheAnnihilator.Reward, }, -- Magic sword [6086] = { itemId = 2472, itemPos = { x = 33229, y = 31656, z = 13 }, reward = { { 3288, 1 } }, - storage = Storage.Quest.U7_24.TheAnnihilator.Reward + storage = Storage.Quest.U7_24.TheAnnihilator.Reward, }, -- Stonecutter axe [6087] = { itemId = 2472, itemPos = { x = 33231, y = 31656, z = 13 }, reward = { { 3319, 1 } }, - storage = Storage.Quest.U7_24.TheAnnihilator.Reward + storage = Storage.Quest.U7_24.TheAnnihilator.Reward, }, -- Present (annihilation bear) [6088] = { @@ -831,7 +831,7 @@ ChestUnique = { container = 2856, weight = 50, reward = { { 3213, 1 } }, - storage = Storage.Quest.U7_24.TheAnnihilator.Reward + storage = Storage.Quest.U7_24.TheAnnihilator.Reward, }, -- The paradox tower quest -- Phoenix egg @@ -839,35 +839,35 @@ ChestUnique = { itemId = 2472, itemPos = { x = 32477, y = 31900, z = 1 }, reward = { { 3215, 1 } }, - storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Egg + storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Egg, }, -- 10.000 gold coins [6090] = { itemId = 2472, itemPos = { x = 32478, y = 31900, z = 1 }, reward = { { 3035, 100 } }, - storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Gold + storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Gold, }, -- Talon [6091] = { itemId = 2472, itemPos = { x = 32479, y = 31900, z = 1 }, reward = { { 3034, 32 } }, - storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Talon + storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Talon, }, -- Wand of energy cosmic [6092] = { itemId = 2472, itemPos = { x = 32480, y = 31900, z = 1 }, reward = { { 3073, 1 } }, - storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Wand + storage = Storage.Quest.U7_24.TheParadoxTower.Reward.Wand, }, [6093] = { itemId = 2474, reward = { { 2969, 1 } }, keyAction = Storage.Quest.Key.ID3002, storage = keyAction, - itemPos = { { x = 32802, y = 31576, z = 7 } } + itemPos = { { x = 32802, y = 31576, z = 7 } }, }, -- Hidden Threats Quest [6094] = { @@ -875,21 +875,21 @@ ChestUnique = { itemPos = { x = 33078, y = 31980, z = 13 }, reward = { { 27270, 1 } }, weight = 5.09, - storage = Storage.Quest.U11_50.HiddenThreats.Rewards.metalFile + storage = Storage.Quest.U11_50.HiddenThreats.Rewards.metalFile, }, [6095] = { itemId = 2469, itemPos = { x = 33080, y = 32014, z = 13 }, reward = { { 27262, 1 } }, weight = 2.50, - storage = Storage.Quest.U11_50.HiddenThreats.Rewards.keyFragment01 + storage = Storage.Quest.U11_50.HiddenThreats.Rewards.keyFragment01, }, [6096] = { itemId = 2469, itemPos = { x = 33031, y = 32050, z = 13 }, reward = { { 27261, 1 } }, weight = 2.50, - storage = Storage.Quest.U11_50.HiddenThreats.Rewards.keyFragment02 + storage = Storage.Quest.U11_50.HiddenThreats.Rewards.keyFragment02, }, -- The New Frontier Quest [6097] = { @@ -898,21 +898,21 @@ ChestUnique = { container = 2854, weight = 14.90, reward = { { 7439, 1 }, { 7440, 1 }, { 7443, 1 } }, - storage = Storage.Quest.U8_54.TheNewFrontier.Reward.Potions + storage = Storage.Quest.U8_54.TheNewFrontier.Reward.Potions, }, [6098] = { itemId = 2472, itemPos = { x = 33055, y = 31029, z = 7 }, reward = { { 9058, 2 } }, weight = 36.00, - storage = Storage.Quest.U8_54.TheNewFrontier.Reward.GoldIngot + storage = Storage.Quest.U8_54.TheNewFrontier.Reward.GoldIngot, }, [6099] = { itemId = 2472, itemPos = { x = 33053, y = 31029, z = 7 }, reward = { { 2995, 1 } }, weight = 7.50, - storage = Storage.Quest.U8_54.TheNewFrontier.Reward.PigBank + storage = Storage.Quest.U8_54.TheNewFrontier.Reward.PigBank, }, -- Threatened Dreams Quest [6100] = { @@ -920,35 +920,35 @@ ChestUnique = { itemPos = { x = 32787, y = 31975, z = 11 }, reward = { { 25235, 1 } }, weight = 13.00, - storage = Storage.Quest.U11_40.ThreatenedDreams.Mission01.PoacherChest + storage = Storage.Quest.U11_40.ThreatenedDreams.Mission01.PoacherChest, }, [6101] = { -- Dark Moon Mirror itemId = 25762, itemPos = { x = 33594, y = 32214, z = 9 }, reward = { { 25729, 1 } }, weight = 2.00, - storage = Storage.Quest.U11_40.ThreatenedDreams.Mission02.DarkMoonMirror + storage = Storage.Quest.U11_40.ThreatenedDreams.Mission02.DarkMoonMirror, }, [6102] = { -- Ape city itemId = 2469, itemPos = { x = 32782, y = 32910, z = 8 }, reward = { { 4827, 1 } }, weight = 0.20, - storage = Storage.QuestChests.WhisperMoss + storage = Storage.QuestChests.WhisperMoss, }, [6103] = { -- Ape city itemId = 2473, itemPos = { x = 32935, y = 32886, z = 7 }, reward = { { 4831, 1 } }, weight = 2.00, - storage = Storage.QuestChests.OldParchment + storage = Storage.QuestChests.OldParchment, }, [6104] = { itemId = 2472, itemPos = { x = 33154, y = 31297, z = 3 }, reward = { { 10217, 1 } }, weight = 15.00, - storage = Storage.Quest.U8_54.TomesOfKnowledge.TopTower + storage = Storage.Quest.U8_54.TomesOfKnowledge.TopTower, }, [6105] = { itemId = 23741, @@ -956,7 +956,7 @@ ChestUnique = { randomReward = { { 9081, 1 }, { 28821, 1 }, { 28823, 1 }, { 9058, 1 }, { 6299, 1 }, { 3052, 1 }, { 3035, 10 } }, reward = { { nil, nil } }, timerStorage = Storage.Quest.U11_80.TheSecretLibrary.FalconBastionChestsTimer.Coast, - time = 24 -- hour + time = 24, -- hour }, [6106] = { itemId = 23740, @@ -964,7 +964,7 @@ ChestUnique = { randomReward = { { 9081, 1 }, { 28821, 1 }, { 28823, 1 }, { 9058, 1 }, { 6299, 1 }, { 3052, 1 }, { 3035, 10 } }, reward = { { nil, nil } }, timerStorage = Storage.Quest.U11_80.TheSecretLibrary.FalconBastionChestsTimer.Island, - time = 24 -- hour + time = 24, -- hour }, [6107] = { itemId = 23741, @@ -972,7 +972,7 @@ ChestUnique = { randomReward = { { 9081, 1 }, { 28821, 1 }, { 28823, 1 }, { 9058, 1 }, { 6299, 1 }, { 3052, 1 }, { 3035, 10 } }, reward = { { nil, nil } }, timerStorage = Storage.Quest.U11_80.TheSecretLibrary.FalconBastionChestsTimer.ThroneHall, - time = 24 -- hour + time = 24, -- hour }, [6108] = { itemId = 23741, @@ -980,7 +980,7 @@ ChestUnique = { randomReward = { { 9081, 1 }, { 28821, 1 }, { 28823, 1 }, { 9058, 1 }, { 6299, 1 }, { 3052, 1 }, { 3035, 10 } }, reward = { { nil, nil } }, timerStorage = Storage.Quest.U11_80.TheSecretLibrary.FalconBastionChestsTimer.Shortcut, - time = 24 -- hour + time = 24, -- hour }, [6109] = { itemId = 23740, @@ -988,7 +988,7 @@ ChestUnique = { randomReward = { { 9081, 1 }, { 28821, 1 }, { 28823, 1 }, { 9058, 1 }, { 6299, 1 }, { 3052, 1 }, { 3035, 10 } }, reward = { { nil, nil } }, timerStorage = Storage.Quest.U11_80.TheSecretLibrary.FalconBastionChestsTimer.LowerBastion, - time = 24 -- hour + time = 24, -- hour }, [6110] = { itemId = 23740, @@ -996,194 +996,194 @@ ChestUnique = { randomReward = { { 9081, 1 }, { 28821, 1 }, { 28823, 1 }, { 9058, 1 }, { 6299, 1 }, { 3052, 1 }, { 3035, 10 } }, reward = { { nil, nil } }, timerStorage = Storage.Quest.U11_80.TheSecretLibrary.FalconBastionChestsTimer.UndergroundBastion, - time = 24 -- hour + time = 24, -- hour }, -- Reward of others scrips files (varied rewards) -- The First dragon Quest -- Treasure chests (data\scripts\actions\quests\first_dragon\treasure_chests.lua) [14001] = { itemId = 24877, - itemPos = { x = 32809, y = 32546, z = 6 } + itemPos = { x = 32809, y = 32546, z = 6 }, }, [14002] = { itemId = 24877, - itemPos = { x = 32765, y = 31019, z = 9 } + itemPos = { x = 32765, y = 31019, z = 9 }, }, [14003] = { itemId = 24877, - itemPos = { x = 32046, y = 32894, z = 10 } + itemPos = { x = 32046, y = 32894, z = 10 }, }, [14004] = { itemId = 24875, - itemPos = { x = 32808, y = 31580, z = 3 } + itemPos = { x = 32808, y = 31580, z = 3 }, }, [14005] = { itemId = 24875, - itemPos = { x = 33260, y = 32228, z = 10 } + itemPos = { x = 33260, y = 32228, z = 10 }, }, [14006] = { itemId = 24875, - itemPos = { x = 33016, y = 32614, z = 6 } + itemPos = { x = 33016, y = 32614, z = 6 }, }, [14007] = { itemId = 24875, - itemPos = { x = 33054, y = 32393, z = 10 } + itemPos = { x = 33054, y = 32393, z = 10 }, }, [14008] = { itemId = 24875, - itemPos = { x = 32208, y = 31849, z = 10 } + itemPos = { x = 32208, y = 31849, z = 10 }, }, [14009] = { itemId = 24875, - itemPos = { x = 32024, y = 32602, z = 10 } + itemPos = { x = 32024, y = 32602, z = 10 }, }, [14010] = { itemId = 24875, - itemPos = { x = 33224, y = 31647, z = 7 } + itemPos = { x = 33224, y = 31647, z = 7 }, }, [14011] = { itemId = 24875, - itemPos = { x = 32701, y = 31458, z = 5 } + itemPos = { x = 32701, y = 31458, z = 5 }, }, [14012] = { itemId = 24875, - itemPos = { x = 32647, y = 32091, z = 8 } + itemPos = { x = 32647, y = 32091, z = 8 }, }, [14013] = { itemId = 24877, - itemPos = { x = 32577, y = 31896, z = 7 } + itemPos = { x = 32577, y = 31896, z = 7 }, }, [14014] = { itemId = 24875, - itemPos = { x = 33676, y = 31753, z = 6 } + itemPos = { x = 33676, y = 31753, z = 6 }, }, [14015] = { itemId = 24877, - itemPos = { x = 32242, y = 31390, z = 5 } + itemPos = { x = 32242, y = 31390, z = 5 }, }, [14016] = { itemId = 24875, - itemPos = { x = 33613, y = 31811, z = 9 } + itemPos = { x = 33613, y = 31811, z = 9 }, }, [14017] = { itemId = 24875, - itemPos = { x = 32873, y = 32900, z = 9 } + itemPos = { x = 32873, y = 32900, z = 9 }, }, [14018] = { itemId = 24875, - itemPos = { x = 32171, y = 32974, z = 7 } + itemPos = { x = 32171, y = 32974, z = 7 }, }, [14019] = { itemId = 24877, - itemPos = { x = 32960, y = 31461, z = 3 } + itemPos = { x = 32960, y = 31461, z = 3 }, }, [14020] = { itemId = 24875, - itemPos = { x = 33340, y = 31411, z = 7 } + itemPos = { x = 33340, y = 31411, z = 7 }, }, -- Final reward (data\scripts\actions\quests\first_dragon\rewards.lua) [14021] = { itemId = 2478, - itemPos = { x = 33616, y = 31015, z = 13 } + itemPos = { x = 33616, y = 31015, z = 13 }, }, [14022] = { itemId = 24863, - itemPos = { x = 33617, y = 31015, z = 13 } + itemPos = { x = 33617, y = 31015, z = 13 }, }, [14023] = { itemId = 2478, - itemPos = { x = 33618, y = 31015, z = 13 } + itemPos = { x = 33618, y = 31015, z = 13 }, }, -- The shattered isles [14024] = { itemId = 5677, - itemPos = { x = 31938, y = 32837, z = 7 } + itemPos = { x = 31938, y = 32837, z = 7 }, }, -- Dawnport vocation rewards -- Path: data\scripts\actions\quests\dawnport\vocation_reward.lua -- Sorcerer [14025] = { itemId = 2472, - itemPos = { x = 32054, y = 31882, z = 6 } + itemPos = { x = 32054, y = 31882, z = 6 }, }, -- Druid [14026] = { itemId = 2472, - itemPos = { x = 32073, y = 31882, z = 6 } + itemPos = { x = 32073, y = 31882, z = 6 }, }, -- Paladin [14027] = { itemId = 2472, - itemPos = { x = 32059, y = 31882, z = 6 } + itemPos = { x = 32059, y = 31882, z = 6 }, }, -- Knight [14028] = { itemId = 2472, - itemPos = { x = 32068, y = 31882, z = 6 } + itemPos = { x = 32068, y = 31882, z = 6 }, }, -- Explorer Society Missions -- Path: data\scripts\actions\quests\explorer_society\findings.lua -- Uzgod Family Brooch (Dwacatra) [14029] = { itemId = 2473, - itemPos = { x = 32598, y = 31934, z = 15 } + itemPos = { x = 32598, y = 31934, z = 15 }, }, -- The Bonelord Secret Chest (Dark Pyramid) [14030] = { itemId = 2469, - itemPos = { x = 33308, y = 32279, z = 12 } + itemPos = { x = 33308, y = 32279, z = 12 }, }, -- The Orc Powder (Orc Fortress) [14031] = { itemId = 2473, - itemPos = { x = 32967, y = 31719, z = 2 } + itemPos = { x = 32967, y = 31719, z = 2 }, }, -- The Elven Poetry (Hell Gate) [14032] = { itemId = 2472, - itemPos = { x = 32704, y = 31605, z = 14 } + itemPos = { x = 32704, y = 31605, z = 14 }, }, -- The Memory Stone (Edron) [14033] = { itemId = 2469, - itemPos = { x = 33152, y = 31640, z = 11 } + itemPos = { x = 33152, y = 31640, z = 11 }, }, -- The Spectral Dress (Isle of the Kings) [14034] = { itemId = 2469, - itemPos = { x = 32259, y = 31949, z = 14 } + itemPos = { x = 32259, y = 31949, z = 14 }, }, -- The Undersea Kingdom (Calassa) [14035] = { itemId = 2473, - itemPos = { x = 31937, y = 32771, z = 13 } + itemPos = { x = 31937, y = 32771, z = 13 }, }, -- Others uniques -- Threatened Dreams Quest [14036] = { itemId = 12764, - itemPos = { x = 32787, y = 31975, z = 11 } + itemPos = { x = 32787, y = 31975, z = 11 }, }, -- In Service of Yalahar Quest [14037] = { itemId = 2469, - itemPos = { x = 32796, y = 31226, z = 7 } + itemPos = { x = 32796, y = 31226, z = 7 }, }, [14038] = { itemId = 2469, - itemPos = { x = 32795, y = 31185, z = 7 } + itemPos = { x = 32795, y = 31185, z = 7 }, }, [14039] = { itemId = 2469, - itemPos = { x = 32701, y = 31082, z = 8 } + itemPos = { x = 32701, y = 31082, z = 8 }, }, -- Royal Rescue Quest [14040] = { itemId = 2435, - itemPos = { x = 32621, y = 31404, z = 10 } + itemPos = { x = 32621, y = 31404, z = 10 }, }, [14041] = { itemId = 11810, - itemPos = { x = 33195, y = 31765, z = 1 } - } + itemPos = { x = 33195, y = 31765, z = 1 }, + }, } diff --git a/data-otservbr-global/startup/tables/corpse.lua b/data-otservbr-global/startup/tables/corpse.lua index a4282c86e3e..70594adcaa4 100644 --- a/data-otservbr-global/startup/tables/corpse.lua +++ b/data-otservbr-global/startup/tables/corpse.lua @@ -6,14 +6,14 @@ Look README.md for look the reserved action/unique CorpseAction = { [20001] = { itemId = false, - itemPos = { { x = xxxxx, y = xxxxx, z = xx } } + itemPos = { { x = xxxxx, y = xxxxx, z = xx } }, }, -- Others actions -- Threatened dreams quest [20002] = { itemId = 4285, - itemPos = { { x = 32949, y = 31810, z = 7 } } + itemPos = { { x = 32949, y = 31810, z = 7 } }, }, } @@ -22,20 +22,20 @@ CorpseUnique = { -- Path: data\scripts\actions\quests\dark_trails\corpse.lua [20001] = { itemId = 21123, - itemPos = { x = 33574, y = 31952, z = 6 } + itemPos = { x = 33574, y = 31952, z = 6 }, }, -- Lions rock corpse -- Path: data\scripts\actions\quests\lions_rock\lions_rock.lua [20002] = { itemId = 6082, - itemPos = { x = 33146, y = 32341, z = 8 } + itemPos = { x = 33146, y = 32341, z = 8 }, }, [20003] = { itemId = 4285, - itemPos = { x = 32211, y = 31273, z = 10 } + itemPos = { x = 32211, y = 31273, z = 10 }, }, [20004] = { itemId = 4285, - itemPos = { x = 32305, y = 32254, z = 9 } - } + itemPos = { x = 32305, y = 32254, z = 9 }, + }, } diff --git a/data-otservbr-global/startup/tables/create_item.lua b/data-otservbr-global/startup/tables/create_item.lua index 41159aba985..a091701672b 100644 --- a/data-otservbr-global/startup/tables/create_item.lua +++ b/data-otservbr-global/startup/tables/create_item.lua @@ -1,5 +1,5 @@ CreateItemOnMap = { [11402] = { - itemPos = { { x = 33239, y = 31224, z = 10 } } - } + itemPos = { { x = 33239, y = 31224, z = 10 } }, + }, } diff --git a/data-otservbr-global/startup/tables/door_key.lua b/data-otservbr-global/startup/tables/door_key.lua index 3c3fd31dbcb..f8c38941e42 100644 --- a/data-otservbr-global/startup/tables/door_key.lua +++ b/data-otservbr-global/startup/tables/door_key.lua @@ -8,50 +8,50 @@ KeyDoorAction = { -- Door of the key 4182 (draconia quest) [Storage.Quest.Key.ID3001] = { itemId = false, - itemPos = { { x = 32814, y = 31597, z = 7 } } + itemPos = { { x = 32814, y = 31597, z = 7 } }, }, -- Door of the key 4183 (draconia quest) [Storage.Quest.Key.ID3002] = { itemId = false, - itemPos = { { x = 32796, y = 31597, z = 7 } } + itemPos = { { x = 32796, y = 31597, z = 7 } }, }, -- Door of the key 4184 (draconia quest) [Storage.Quest.Key.ID3003] = { itemId = false, - itemPos = { { x = 32811, y = 31597, z = 7 } } + itemPos = { { x = 32811, y = 31597, z = 7 } }, }, -- Door of the key 4185 (draconia quest) [Storage.Quest.Key.ID3004] = { itemId = false, - itemPos = { { x = 32809, y = 31593, z = 6 } } + itemPos = { { x = 32809, y = 31593, z = 6 } }, }, -- Door of the key 4186 (draconia quest) [Storage.Quest.Key.ID3005] = { itemId = false, - itemPos = { { x = 32794, y = 31582, z = 6 } } + itemPos = { { x = 32794, y = 31582, z = 6 } }, }, -- Door of the key 4187 (draconia quest) [Storage.Quest.Key.ID3006] = { itemId = false, - itemPos = { { x = 32814, y = 31595, z = 6 } } + itemPos = { { x = 32814, y = 31595, z = 6 } }, }, -- Door of the key 4188 (draconia quest) [Storage.Quest.Key.ID3007] = { itemId = false, - itemPos = { { x = 32797, y = 31592, z = 4 } } + itemPos = { { x = 32797, y = 31592, z = 4 } }, }, -- Door of the key 4189 (draconia quest) [Storage.Quest.Key.ID3008] = { itemId = false, - itemPos = { { x = 32804, y = 31585, z = 1 } } + itemPos = { { x = 32804, y = 31585, z = 1 } }, }, -- Door of the key 4193 (draconia quest) [Storage.Quest.Key.ID3012] = { itemId = false, itemPos = { { x = 32675, y = 31649, z = 10 }, - { x = 32676, y = 31671, z = 10 } - } + { x = 32676, y = 31671, z = 10 }, + }, }, -- Door of the key 1864 (mad mage room quest) [Storage.Quest.Key.ID3620] = { @@ -60,23 +60,23 @@ KeyDoorAction = { { x = 32393, y = 32136, z = 14 }, { x = 32395, y = 32117, z = 15 }, { x = 32397, y = 32114, z = 15 }, - { x = 32400, y = 32117, z = 15 } - } + { x = 32400, y = 32117, z = 15 }, + }, }, -- Door of the key 1910 (mad mage room quest) [Storage.Quest.Key.ID3666] = { itemId = 1631, - itemPos = { { x = 32578, y = 32197, z = 15 } } + itemPos = { { x = 32578, y = 32197, z = 15 } }, }, -- Door of the key 2297 (emperor's cookies quest) [Storage.Quest.Key.ID3800] = { itemId = false, - itemPos = { { x = 32645, y = 31906, z = 3 } } + itemPos = { { x = 32645, y = 31906, z = 3 } }, }, -- Door of the key 2298 (emperor's cookies quest) [Storage.Quest.Key.ID3801] = { itemId = false, - itemPos = { { x = 32600, y = 31926, z = 6 } } + itemPos = { { x = 32600, y = 31926, z = 6 } }, }, -- Door of the key 2299 (emperor's cookies quest) [Storage.Quest.Key.ID3802] = { @@ -88,56 +88,57 @@ KeyDoorAction = { { x = 32457, y = 31966, z = 10 }, { x = 32602, y = 31975, z = 14 }, { x = 32603, y = 31975, z = 14 }, - { x = 32624, y = 31929, z = 3 } - } + { x = 32624, y = 31929, z = 3 }, + }, }, -- Door of the key 2770 (the paradox tower quest) [Storage.Quest.Key.ID3899] = { itemId = false, - itemPos = { { x = 32479, y = 31903, z = 4 } } + itemPos = { { x = 32479, y = 31903, z = 4 } }, }, -- Door of the key 2872 (gained with simmon the beggar) [Storage.Quest.Key.ID3940] = { itemId = false, - itemPos = { { x = 32190, y = 32432, z = 8 } } + itemPos = { { x = 32190, y = 32432, z = 8 } }, }, -- Door of the key 3496 [Storage.Quest.Key.ID3980] = { itemId = false, - itemPos = { { x = 32277, y = 32420, z = 10 } } + itemPos = { { x = 32277, y = 32420, z = 10 } }, }, -- Door of the key 3791 (panpipe quest) [Storage.Quest.Key.ID4055] = { itemId = false, - itemPos = { { x = 32643, y = 32128, z = 8 } } + itemPos = { { x = 32643, y = 32128, z = 8 } }, }, -- Door of the key 4491 (alawar's vault quest) [Storage.Quest.Key.ID4502] = { itemId = false, - itemPos = { { x = 32107, y = 31568, z = 9 } } + itemPos = { { x = 32107, y = 31568, z = 9 } }, }, -- Door of the key 5009 (black knight quest) [Storage.Quest.Key.ID5010] = { itemId = false, - itemPos = { { x = 32824, y = 31969, z = 8 } } + itemPos = { { x = 32824, y = 31969, z = 8 } }, }, -- Door of the key 6010 (demon helmet quest) [Storage.Quest.Key.ID6010] = { itemId = false, - itemPos = { { x = 33211, y = 31634, z = 13 } } + itemPos = { { x = 33211, y = 31634, z = 13 } }, }, [Storage.Quest.Key.ID0808] = { itemId = false, - itemPos = { { x = 33363, y = 31360, z = 3 } } + itemPos = { { x = 33363, y = 31360, z = 3 } }, }, [Storage.Quest.Key.ID0909] = { itemId = false, itemPos = { { x = 33368, y = 31331, z = 7 }, - { x = 33360, y = 31350, z = 7 } } + { x = 33360, y = 31350, z = 7 }, + }, }, [Storage.Quest.Key.ID3600] = { itemId = false, - itemPos = { { x = 32506, y = 32175, z = 14 } } - } + itemPos = { { x = 32506, y = 32175, z = 14 } }, + }, } diff --git a/data-otservbr-global/startup/tables/door_level.lua b/data-otservbr-global/startup/tables/door_level.lua index 68450fc2f94..e9253809f40 100644 --- a/data-otservbr-global/startup/tables/door_level.lua +++ b/data-otservbr-global/startup/tables/door_level.lua @@ -10,8 +10,8 @@ LevelDoorAction = { [1025] = { itemId = false, itemPos = { - { x = 32804, y = 31583, z = 2 } - } + { x = 32804, y = 31583, z = 2 }, + }, }, -- Doors for level 30 [1030] = { @@ -19,15 +19,15 @@ LevelDoorAction = { itemPos = { { x = 33302, y = 31691, z = 11 }, { x = 33302, y = 31692, z = 11 }, - { x = 32567, y = 31969, z = 3 } - } + { x = 32567, y = 31969, z = 3 }, + }, }, -- Doors for level 40 [1040] = { itemId = false, itemPos = { - { x = 32981, y = 31760, z = 9 } - } + { x = 32981, y = 31760, z = 9 }, + }, }, -- Doors for level 50 [1050] = { @@ -35,38 +35,38 @@ LevelDoorAction = { itemPos = { { x = 32212, y = 32435, z = 10 }, { x = 32874, y = 31974, z = 12 }, - { x = 32875, y = 31974, z = 12 } - } + { x = 32875, y = 31974, z = 12 }, + }, }, -- Doors for level 60 [1060] = { itemId = false, itemPos = { { x = 33085, y = 31650, z = 10 }, - { x = 32223, y = 31869, z = 14 } - } + { x = 32223, y = 31869, z = 14 }, + }, }, -- Doors for level 70 [1070] = { itemId = false, itemPos = { { x = 33190, y = 31684, z = 14 }, - { x = 33195, y = 31684, z = 14 } - } + { x = 33195, y = 31684, z = 14 }, + }, }, -- Doors for level 80 [1080] = { itemId = false, itemPos = { - { x = 33297, y = 31670, z = 14 } - } + { x = 33297, y = 31670, z = 14 }, + }, }, -- Doors for level 100 [1100] = { itemId = false, itemPos = { { x = 33211, y = 31638, z = 13 }, - { x = 33214, y = 31671, z = 13 } - } - } + { x = 33214, y = 31671, z = 13 }, + }, + }, } diff --git a/data-otservbr-global/startup/tables/door_quest.lua b/data-otservbr-global/startup/tables/door_quest.lua index 63bdeb03ca4..366a6d052bb 100644 --- a/data-otservbr-global/startup/tables/door_quest.lua +++ b/data-otservbr-global/startup/tables/door_quest.lua @@ -9,46 +9,46 @@ QuestDoorAction = { itemId = 5113, itemPos = { { x = 32246, y = 31861, z = 14 }, - { x = 32246, y = 31862, z = 14 } - } + { x = 32246, y = 31862, z = 14 }, + }, }, [Storage.Quest.U7_2.TheQueenOfTheBanshees.FirstSealDoor] = { itemId = 5104, - itemPos = { { x = 32223, y = 31872, z = 14 } } + itemPos = { { x = 32223, y = 31872, z = 14 } }, }, [Storage.Quest.U7_2.TheQueenOfTheBanshees.SecondSealDoor] = { itemId = 5104, - itemPos = { { x = 32223, y = 31875, z = 14 } } + itemPos = { { x = 32223, y = 31875, z = 14 } }, }, [Storage.Quest.U7_2.TheQueenOfTheBanshees.ThirdSealDoor] = { itemId = 5104, - itemPos = { { x = 32223, y = 31878, z = 14 } } + itemPos = { { x = 32223, y = 31878, z = 14 } }, }, [Storage.Quest.U7_2.TheQueenOfTheBanshees.FourthSealDoor] = { itemId = 5104, - itemPos = { { x = 32223, y = 31881, z = 14 } } + itemPos = { { x = 32223, y = 31881, z = 14 } }, }, [Storage.Quest.U7_2.TheQueenOfTheBanshees.FifthSealDoor] = { itemId = 5104, - itemPos = { { x = 32223, y = 31884, z = 14 } } + itemPos = { { x = 32223, y = 31884, z = 14 } }, }, [Storage.Quest.U7_2.TheQueenOfTheBanshees.SixthSealDoor] = { itemId = 5104, - itemPos = { { x = 32223, y = 31887, z = 14 } } + itemPos = { { x = 32223, y = 31887, z = 14 } }, }, [Storage.Quest.U7_2.TheQueenOfTheBanshees.LastSealDoor] = { itemId = 5104, - itemPos = { { x = 32223, y = 31890, z = 14 } } + itemPos = { { x = 32223, y = 31890, z = 14 } }, }, -- Sams old backpack door [Storage.SamsOldBackpackDoor] = { itemId = false, - itemPos = { { x = 32455, y = 31967, z = 14 } } + itemPos = { { x = 32455, y = 31967, z = 14 } }, }, -- To Outfox a Fox Quest, mining helmet door [Storage.ToOutfoxAFoxQuest] = { itemId = false, - itemPos = { { x = 32467, y = 31969, z = 5 } } + itemPos = { { x = 32467, y = 31969, z = 5 } }, }, -- Edron [Storage.Kilmaresh.Sixth.Favor] = { @@ -59,270 +59,270 @@ QuestDoorAction = { { x = 33884, y = 31510, z = 9 }, { x = 33884, y = 31536, z = 9 }, { x = 33911, y = 31496, z = 9 }, - { x = 33912, y = 31466, z = 9 } - } + { x = 33912, y = 31466, z = 9 }, + }, }, -- Rathleton quest door [Storage.HeroRathleton.AccessDoor] = { itemId = false, itemPos = { { x = 33567, y = 31951, z = 14 }, - { x = 33569, y = 31951, z = 14 } - } + { x = 33569, y = 31951, z = 14 }, + }, }, -- Secret library quest door [Storage.TheSecretLibrary.Mota] = { itemId = false, itemPos = { { x = 33208, y = 32071, z = 8 }, - { x = 33246, y = 32122, z = 8 } - } + { x = 33246, y = 32122, z = 8 }, + }, }, [Storage.TheSecretLibrary.MotaDoor] = { itemId = false, - itemPos = { { x = 33208, y = 32074, z = 8 } } + itemPos = { { x = 33208, y = 32074, z = 8 } }, }, [Storage.TheSecretLibrary.BasinDoor] = { itemId = false, - itemPos = { { x = 33341, y = 32117, z = 10 } } + itemPos = { { x = 33341, y = 32117, z = 10 } }, }, [Storage.TheSecretLibrary.SkullDoor] = { itemId = false, - itemPos = { { x = 33344, y = 32120, z = 10 } } + itemPos = { { x = 33344, y = 32120, z = 10 } }, }, -- Koshei the deathless quest door [Storage.KosheiTheDeathless.RewardDoor] = { itemId = false, - itemPos = { { x = 33269, y = 32446, z = 12 } } + itemPos = { { x = 33269, y = 32446, z = 12 } }, }, -- Beggar outfit quest door [Storage.OutfitQuest.BeggarFirstAddonDoor] = { itemId = false, - itemPos = { { x = 33165, y = 31600, z = 15 } } + itemPos = { { x = 33165, y = 31600, z = 15 } }, }, -- The explorer society quest doors -- Mission in Dwacatra [Storage.ExplorerSociety.DwacatraDoor] = { itemId = false, - itemPos = { { x = 32598, y = 31933, z = 15 } } + itemPos = { { x = 32598, y = 31933, z = 15 } }, }, -- Mission in Chor [Storage.ExplorerSociety.ChorurnDoor] = { itemId = false, - itemPos = { { x = 32957, y = 32835, z = 8 } } + itemPos = { { x = 32957, y = 32835, z = 8 } }, }, -- Mission in Dark Pyramid [Storage.ExplorerSociety.BonelordsDoor] = { itemId = false, - itemPos = { { x = 33308, y = 32280, z = 12 } } + itemPos = { { x = 33308, y = 32280, z = 12 } }, }, -- Mission in Orc Fortress [Storage.ExplorerSociety.OrcDoor] = { itemId = false, - itemPos = { { x = 32967, y = 31720, z = 2 } } + itemPos = { { x = 32967, y = 31720, z = 2 } }, }, -- Mission in Hell Gate [Storage.ExplorerSociety.ElvenDoor] = { itemId = false, - itemPos = { { x = 32703, y = 31605, z = 14 } } + itemPos = { { x = 32703, y = 31605, z = 14 } }, }, -- Mission in Endron [Storage.ExplorerSociety.MemoryStoneDoor] = { itemId = false, - itemPos = { { x = 33151, y = 31640, z = 11 } } + itemPos = { { x = 33151, y = 31640, z = 11 } }, }, -- Mission in Isle of Kings [Storage.ExplorerSociety.BansheeDoor] = { itemId = false, - itemPos = { { x = 32259, y = 31948, z = 14 } } + itemPos = { { x = 32259, y = 31948, z = 14 } }, }, -- Astral Bridge from Port Hope to Northport [Storage.ExplorerSociety.SpectralStoneDoor] = { itemId = false, itemPos = { { x = 32665, y = 32734, z = 6 }, - { x = 32500, y = 31622, z = 6 } - } + { x = 32500, y = 31622, z = 6 }, + }, }, -- Astral Bridge from Svargrond to Liberty Bay [Storage.ExplorerSociety.IceMusicDoor] = { itemId = false, itemPos = { { x = 32318, y = 31137, z = 6 }, - { x = 32360, y = 32808, z = 6 } - } + { x = 32360, y = 32808, z = 6 }, + }, }, -- Mission in Calassa [Storage.ExplorerSociety.CalassaDoor] = { itemId = false, - itemPos = { { x = 31939, y = 32771, z = 13 } } + itemPos = { { x = 31939, y = 32771, z = 13 } }, }, -- The war djin quest -- Marid faction [Storage.DjinnWar.Faction.MaridDoor] = { itemId = false, - itemPos = { { x = 33106, y = 32532, z = 6 } } + itemPos = { { x = 33106, y = 32532, z = 6 } }, }, [Storage.DjinnWar.Faction.EfreetDoor] = { itemId = false, - itemPos = { { x = 33047, y = 32626, z = 6 } } + itemPos = { { x = 33047, y = 32626, z = 6 } }, }, [Storage.DjinnWar.MaridFaction.DoorToLamp] = { itemId = false, - itemPos = { { x = 33038, y = 32632, z = 1 } } + itemPos = { { x = 33038, y = 32632, z = 1 } }, }, [Storage.DjinnWar.MaridFaction.DoorToEfreetTerritory] = { itemId = false, itemPos = { { x = 33034, y = 32620, z = 6 }, { x = 32869, y = 31105, z = 7 }, - { x = 32869, y = 31106, z = 7 } - } + { x = 32869, y = 31106, z = 7 }, + }, }, -- Efreet faction [Storage.DjinnWar.EfreetFaction.DoorToLamp] = { itemId = false, - itemPos = { { x = 33097, y = 32531, z = 1 } } + itemPos = { { x = 33097, y = 32531, z = 1 } }, }, [Storage.DjinnWar.EfreetFaction.DoorToMaridTerritory] = { itemId = false, itemPos = { { x = 33100, y = 32518, z = 7 }, { x = 32821, y = 31112, z = 7 }, - { x = 32822, y = 31112, z = 7 } - } + { x = 32822, y = 31112, z = 7 }, + }, }, -- Bigfoot burden quest [Storage.BigfootBurden.DoorGoldenFruits] = { itemId = false, - itemPos = { { x = 32822, y = 31745, z = 10 } } + itemPos = { { x = 32822, y = 31745, z = 10 } }, }, -- Dawnport door key 0010 (npcs dormitory) [103] = { itemId = false, - itemPos = { { x = 32067, y = 31896, z = 3 } } + itemPos = { { x = 32067, y = 31896, z = 3 } }, }, -- Cults of tibia door [Storage.CultsOfTibia.Minotaurs.EntranceAccessDoor] = { itemId = false, - itemPos = { { x = 31950, y = 32501, z = 8 } } + itemPos = { { x = 31950, y = 32501, z = 8 } }, }, [Storage.CultsOfTibia.Minotaurs.AccessDoor] = { itemId = false, - itemPos = { { x = 31957, y = 32468, z = 9 } } + itemPos = { { x = 31957, y = 32468, z = 9 } }, }, [Storage.CultsOfTibia.MotA.AccessDoorInvestigation] = { itemId = false, - itemPos = { { x = 33273, y = 32172, z = 8 } } + itemPos = { { x = 33273, y = 32172, z = 8 } }, }, [Storage.CultsOfTibia.MotA.AccessDoorGareth] = { itemId = false, - itemPos = { { x = 33220, y = 32147, z = 9 } } + itemPos = { { x = 33220, y = 32147, z = 9 } }, }, [Storage.CultsOfTibia.MotA.AccessDoorDenominator] = { itemId = false, - itemPos = { { x = 33220, y = 32149, z = 9 } } + itemPos = { { x = 33220, y = 32149, z = 9 } }, }, [Storage.CultsOfTibia.Barkless.TrialAccessDoor] = { itemId = false, - itemPos = { { x = 32688, y = 31543, z = 9 } } + itemPos = { { x = 32688, y = 31543, z = 9 } }, }, [Storage.CultsOfTibia.Barkless.TarAccessDoor] = { itemId = false, itemPos = { { x = 32747, y = 31462, z = 8 }, - { x = 32678, y = 31506, z = 8 } - } + { x = 32678, y = 31506, z = 8 }, + }, }, [Storage.CultsOfTibia.Barkless.AccessDoor] = { itemId = false, itemPos = { { x = 32742, y = 31408, z = 8 }, - { x = 32686, y = 31430, z = 8 } - } + { x = 32686, y = 31430, z = 8 }, + }, }, [Storage.CultsOfTibia.Barkless.BossAccessDoor] = { itemId = false, - itemPos = { { x = 32672, y = 31543, z = 9 } } + itemPos = { { x = 32672, y = 31543, z = 9 } }, }, [Storage.CultsOfTibia.Life.AccessDoor] = { itemId = false, - itemPos = { { x = 33295, y = 32271, z = 12 } } + itemPos = { { x = 33295, y = 32271, z = 12 } }, }, [Storage.CultsOfTibia.Misguided.AccessDoor] = { itemId = false, - itemPos = { { x = 32508, y = 32370, z = 9 } } + itemPos = { { x = 32508, y = 32370, z = 9 } }, }, [Storage.CultsOfTibia.FinalBoss.AccessDoor] = { itemId = false, - itemPos = { { x = 33452, y = 32241, z = 7 } } + itemPos = { { x = 33452, y = 32241, z = 7 } }, }, -- Ferumbras ascension door [Storage.FerumbrasAscension.FirstDoor] = { itemId = false, - itemPos = { { x = 33479, y = 32782, z = 11 } } + itemPos = { { x = 33479, y = 32782, z = 11 } }, }, [Storage.FerumbrasAscension.MonsterDoor] = { itemId = false, - itemPos = { { x = 33482, y = 32786, z = 11 } } + itemPos = { { x = 33482, y = 32786, z = 11 } }, }, [Storage.FerumbrasAscension.TarbazDoor] = { itemId = false, - itemPos = { { x = 33470, y = 32786, z = 11 } } + itemPos = { { x = 33470, y = 32786, z = 11 } }, }, -- Wrath of the emperor door [Storage.WrathoftheEmperor.Mission02] = { itemId = false, - itemPos = { { x = 33242, y = 31051, z = 10 } } + itemPos = { { x = 33242, y = 31051, z = 10 } }, }, [Storage.WrathoftheEmperor.Mission08] = { itemId = false, - itemPos = { { x = 33080, y = 31164, z = 8 } } + itemPos = { { x = 33080, y = 31164, z = 8 } }, }, [Storage.WrathoftheEmperor.Mission12] = { itemId = false, - itemPos = { { x = 33076, y = 31176, z = 8 } } + itemPos = { { x = 33076, y = 31176, z = 8 } }, }, -- Unnatural selection door [Storage.UnnaturalSelection.Mission01] = { itemId = false, - itemPos = { { x = 33046, y = 31302, z = 7 } } + itemPos = { { x = 33046, y = 31302, z = 7 } }, }, -- Dark trails/oramond door [Storage.Oramond.DoorBeggarKing] = { itemId = false, - itemPos = { { x = 33573, y = 31982, z = 7 } } + itemPos = { { x = 33573, y = 31982, z = 7 } }, }, [Storage.Oramond.DoorAbandonedSewer] = { itemId = false, - itemPos = { { x = 33549, y = 31974, z = 10 } } + itemPos = { { x = 33549, y = 31974, z = 10 } }, }, [Storage.DarkTrails.DoorQuandon] = { itemId = false, - itemPos = { { x = 33573, y = 31953, z = 7 } } + itemPos = { { x = 33573, y = 31953, z = 7 } }, }, [Storage.DarkTrails.DoorHideout] = { itemId = false, - itemPos = { { x = 33666, y = 31924, z = 7 } } + itemPos = { { x = 33666, y = 31924, z = 7 } }, }, -- Outfit quest door [Storage.OutfitQuest.HunterHatAddon] = { itemId = false, - itemPos = { { x = 32369, y = 32796, z = 10 } } + itemPos = { { x = 32369, y = 32796, z = 10 } }, }, -- Ancient tombs door [Storage.TheAncientTombs.VashresamunsDoor] = { itemId = false, - itemPos = { { x = 33184, y = 32665, z = 15 } } + itemPos = { { x = 33184, y = 32665, z = 15 } }, }, -- The ape city door [Storage.TheApeCity.ChorDoor] = { itemId = false, - itemPos = { { x = 32934, y = 32886, z = 7 } } + itemPos = { { x = 32934, y = 32886, z = 7 } }, }, [Storage.TheApeCity.FibulaDoor] = { itemId = false, - itemPos = { { x = 32182, y = 32468, z = 10 } } + itemPos = { { x = 32182, y = 32468, z = 10 } }, }, [Storage.TheApeCity.CasksDoor] = { itemId = false, @@ -333,12 +333,12 @@ QuestDoorAction = { { x = 32861, y = 32501, z = 9 }, { x = 32861, y = 32503, z = 9 }, { x = 32861, y = 32505, z = 9 }, - { x = 32861, y = 32507, z = 9 } - } + { x = 32861, y = 32507, z = 9 }, + }, }, [Storage.TheApeCity.DworcDoor] = { itemId = false, - itemPos = { { x = 32781, y = 32910, z = 8 } } + itemPos = { { x = 32781, y = 32910, z = 8 } }, }, -- The New Frontier Doors [Storage.Quest.U8_54.TheNewFrontier.Mission01] = { @@ -352,8 +352,8 @@ QuestDoorAction = { { x = 33062, y = 31529, z = 12 }, { x = 33060, y = 31529, z = 14 }, { x = 33061, y = 31529, z = 14 }, - { x = 33062, y = 31529, z = 14 } - } + { x = 33062, y = 31529, z = 14 }, + }, }, [Storage.Quest.U8_54.TheNewFrontier.Mission04] = { itemId = false, @@ -366,74 +366,74 @@ QuestDoorAction = { { x = 33057, y = 31529, z = 12 }, { x = 33055, y = 31529, z = 14 }, { x = 33056, y = 31529, z = 14 }, - { x = 33057, y = 31529, z = 14 } - } + { x = 33057, y = 31529, z = 14 }, + }, }, [Storage.Quest.U8_54.TheNewFrontier.Mission07[1]] = { itemId = false, itemPos = { { x = 33170, y = 31260, z = 10 }, - { x = 33171, y = 31260, z = 10 } - } + { x = 33171, y = 31260, z = 10 }, + }, }, [Storage.Quest.U8_54.TheNewFrontier.Mission09.ArenaDoor] = { itemId = false, itemPos = { - { x = 33080, y = 31019, z = 2 } - } + { x = 33080, y = 31019, z = 2 }, + }, }, [Storage.Quest.U8_54.TheNewFrontier.Mission09.RewardDoor] = { itemId = false, itemPos = { - { x = 33061, y = 31025, z = 7 } - } + { x = 33061, y = 31025, z = 7 }, + }, }, [Storage.Quest.U8_54.TheNewFrontier.Mission10.MagicCarpetDoor] = { itemId = false, itemPos = { - { x = 32990, y = 31547, z = 4 } - } + { x = 32990, y = 31547, z = 4 }, + }, }, -- The inquisition door [Storage.TheInquisition.Mission01] = { itemId = false, - itemPos = { { x = 32316, y = 32264, z = 8 } } + itemPos = { { x = 32316, y = 32264, z = 8 } }, }, [Storage.TheInquisition.RewardDoor] = { itemId = false, - itemPos = { { x = 32320, y = 32258, z = 9 } } + itemPos = { { x = 32320, y = 32258, z = 9 } }, }, -- In service of yalahar door [Storage.InServiceofYalahar.Mission03] = { itemId = false, itemPos = { { x = 32801, y = 31220, z = 7 }, - { x = 32803, y = 31220, z = 7 } - } + { x = 32803, y = 31220, z = 7 }, + }, }, [Storage.InServiceofYalahar.AlchemistFormula] = { itemId = false, - itemPos = { { x = 32693, y = 31085, z = 7 } } + itemPos = { { x = 32693, y = 31085, z = 7 } }, }, [Storage.InServiceofYalahar.TamerinStatus] = { itemId = false, - itemPos = { { x = 32660, y = 31222, z = 8 } } + itemPos = { { x = 32660, y = 31222, z = 8 } }, }, [Storage.InServiceofYalahar.MorikSummon] = { itemId = false, - itemPos = { { x = 32690, y = 31241, z = 6 } } + itemPos = { { x = 32690, y = 31241, z = 6 } }, }, [Storage.InServiceofYalahar.MatrixReward] = { itemId = false, - itemPos = { { x = 32879, y = 31260, z = 8 } } + itemPos = { { x = 32879, y = 31260, z = 8 } }, }, [Storage.InServiceofYalahar.NotesPalimuth] = { itemId = false, - itemPos = { { x = 32797, y = 31226, z = 7 } } + itemPos = { { x = 32797, y = 31226, z = 7 } }, }, [Storage.InServiceofYalahar.DoorToAzerus] = { itemId = false, - itemPos = { { x = 32796, y = 31185, z = 7 } } + itemPos = { { x = 32796, y = 31185, z = 7 } }, }, [Storage.InServiceofYalahar.DoorToBog] = { itemId = false, @@ -441,57 +441,57 @@ QuestDoorAction = { { x = 32673, y = 31121, z = 7 }, { x = 32700, y = 31123, z = 7 }, { x = 32705, y = 31186, z = 8 }, - { x = 32709, y = 31186, z = 8 } - } + { x = 32709, y = 31186, z = 8 }, + }, }, [Storage.InServiceofYalahar.DoorToLastFight] = { itemId = false, - itemPos = { { x = 32783, y = 31193, z = 8 } } + itemPos = { { x = 32783, y = 31193, z = 8 } }, }, [Storage.InServiceofYalahar.DoorToMatrix] = { itemId = false, itemPos = { { x = 32867, y = 31265, z = 10 }, - { x = 32940, y = 31248, z = 9 } - } + { x = 32940, y = 31248, z = 9 }, + }, }, [Storage.InServiceofYalahar.DoorToQuara] = { itemId = false, itemPos = { { x = 32906, y = 31209, z = 14 }, { x = 32965, y = 31205, z = 14 }, - { x = 32975, y = 31148, z = 14 } - } + { x = 32975, y = 31148, z = 14 }, + }, }, [Storage.InServiceofYalahar.DoorToReward] = { itemId = false, itemPos = { { x = 32780, y = 31205, z = 7 }, - { x = 32780, y = 31208, z = 7 } - } + { x = 32780, y = 31208, z = 7 }, + }, }, -- Children of the revolution door [Storage.ChildrenoftheRevolution.Mission03] = { itemId = false, - itemPos = { { x = 33330, y = 31411, z = 8 } } + itemPos = { { x = 33330, y = 31411, z = 8 } }, }, -- Unnatural selection door [Storage.UnnaturalSelection.Mission05] = { itemId = false, - itemPos = { { x = 32982, y = 31439, z = 3 } } + itemPos = { { x = 32982, y = 31439, z = 3 } }, }, -- Postman door [Storage.Postman.Mission05] = { itemId = false, - itemPos = { { x = 32567, y = 32023, z = 6 } } + itemPos = { { x = 32567, y = 32023, z = 6 } }, }, [Storage.Postman.Mission08] = { itemId = false, - itemPos = { { x = 32515, y = 32248, z = 8 } } + itemPos = { { x = 32515, y = 32248, z = 8 } }, }, [Storage.Postman.Mission09] = { itemId = false, - itemPos = { { x = 32569, y = 32023, z = 6 } } + itemPos = { { x = 32569, y = 32023, z = 6 } }, }, [Storage.Postman.Door] = { itemId = false, @@ -518,96 +518,96 @@ QuestDoorAction = { { x = 33201, y = 31064, z = 9 }, { x = 33271, y = 31657, z = 8 }, { x = 33284, y = 31791, z = 13 }, - { x = 33307, y = 32291, z = 7 } - } + { x = 33307, y = 32291, z = 7 }, + }, }, -- The thieves guild door [Storage.ThievesGuild.Mission04] = { itemId = false, - itemPos = { { x = 32359, y = 32787, z = 6 } } + itemPos = { { x = 32359, y = 32787, z = 6 } }, }, [Storage.ThievesGuild.Mission05] = { itemId = false, - itemPos = { { x = 32550, y = 32652, z = 10 } } + itemPos = { { x = 32550, y = 32652, z = 10 } }, }, [Storage.ThievesGuild.Door] = { itemId = false, - itemPos = { { x = 32314, y = 32210, z = 8 } } + itemPos = { { x = 32314, y = 32210, z = 8 } }, }, [Storage.ThievesGuild.TheatreScript] = { itemId = false, - itemPos = { { x = 32367, y = 31782, z = 8 } } + itemPos = { { x = 32367, y = 31782, z = 8 } }, }, -- Secret service door [Storage.SecretService.CGBMission01] = { itemId = false, - itemPos = { { x = 33270, y = 31839, z = 3 } } + itemPos = { { x = 33270, y = 31839, z = 3 } }, }, [Storage.SecretService.TBIMission02] = { itemId = false, - itemPos = { { x = 32872, y = 31957, z = 11 } } + itemPos = { { x = 32872, y = 31957, z = 11 } }, }, [Storage.SecretService.AVINMission02] = { itemId = false, - itemPos = { { x = 32310, y = 32178, z = 5 } } + itemPos = { { x = 32310, y = 32178, z = 5 } }, }, [Storage.SecretService.CGBMission02] = { itemId = false, - itemPos = { { x = 32876, y = 31957, z = 11 } } + itemPos = { { x = 32876, y = 31957, z = 11 } }, }, [Storage.SecretService.TBIMission03] = { itemId = false, - itemPos = { { x = 32639, y = 32735, z = 7 } } + itemPos = { { x = 32639, y = 32735, z = 7 } }, }, [Storage.SecretService.TBIMission04] = { itemId = false, - itemPos = { { x = 32772, y = 31582, z = 11 } } + itemPos = { { x = 32772, y = 31582, z = 11 } }, }, [Storage.SecretService.CGBMission04] = { itemId = false, - itemPos = { { x = 32906, y = 32013, z = 6 } } + itemPos = { { x = 32906, y = 32013, z = 6 } }, }, [Storage.SecretService.AVINMission05] = { itemId = false, - itemPos = { { x = 32156, y = 31951, z = 13 } } + itemPos = { { x = 32156, y = 31951, z = 13 } }, }, [Storage.SecretService.CGBMission05] = { itemId = false, - itemPos = { { x = 32599, y = 32380, z = 10 } } + itemPos = { { x = 32599, y = 32380, z = 10 } }, }, [Storage.SecretService.Mission07] = { itemId = false, - itemPos = { { x = 32537, y = 31897, z = 13 } } + itemPos = { { x = 32537, y = 31897, z = 13 } }, }, -- Hidden city of beregar door [Storage.HiddenCityOfBeregar.DoorNorthMine] = { itemId = false, - itemPos = { { x = 32606, y = 31489, z = 14 } } + itemPos = { { x = 32606, y = 31489, z = 14 } }, }, [Storage.HiddenCityOfBeregar.DoorWestMine] = { itemId = false, - itemPos = { { x = 32584, y = 31499, z = 14 } } + itemPos = { { x = 32584, y = 31499, z = 14 } }, }, [Storage.HiddenCityOfBeregar.DoorSouthMine] = { itemId = false, - itemPos = { { x = 32608, y = 31516, z = 14 } } + itemPos = { { x = 32608, y = 31516, z = 14 } }, }, [Storage.TibiaTales.AnInterestInBotanyChestDoor] = { itemId = false, - itemPos = { { x = 33007, y = 31536, z = 10 } } + itemPos = { { x = 33007, y = 31536, z = 10 } }, }, [Storage.TibiaTales.AritosTaskDoor] = { itemId = false, - itemPos = { { x = 33247, y = 32534, z = 8 } } + itemPos = { { x = 33247, y = 32534, z = 8 } }, }, -- THe shattered isles door [Storage.TheShatteredIsles.TortoiseEggNargorDoor] = { itemId = false, - itemPos = { { x = 31934, y = 32838, z = 7 } } + itemPos = { { x = 31934, y = 32838, z = 7 } }, }, [Storage.TheShatteredIsles.YavernDoor] = { itemId = false, - itemPos = { { x = 31978, y = 32856, z = 3 } } + itemPos = { { x = 31978, y = 32856, z = 3 } }, }, -- Hot cuisine door [Storage.HotCuisineQuest.CookbookDoor] = { @@ -615,12 +615,12 @@ QuestDoorAction = { itemPos = { { x = 33065, y = 32529, z = 5 }, { x = 33065, y = 32531, z = 5 }, - } + }, }, -- The annihilator door [Storage.Quest.U7_24.TheAnnihilator.Reward] = { itemId = 5113, - itemPos = { { x = 33216, y = 31671, z = 13 } } + itemPos = { { x = 33216, y = 31671, z = 13 } }, }, -- Svargrond arena door [Storage.SvargrondArena.PitDoor] = { @@ -628,32 +628,32 @@ QuestDoorAction = { itemPos = { { x = 32233, y = 31098, z = 7 }, { x = 32233, y = 31099, z = 7 }, - { x = 32233, y = 31100, z = 7 } - } + { x = 32233, y = 31100, z = 7 }, + }, }, [Storage.SvargrondArena.GreenhornDoor] = { itemId = false, - itemPos = { { x = 32227, y = 31066, z = 7 } } + itemPos = { { x = 32227, y = 31066, z = 7 } }, }, [Storage.SvargrondArena.ScrapperDoor] = { itemId = false, - itemPos = { { x = 32227, y = 31059, z = 7 } } + itemPos = { { x = 32227, y = 31059, z = 7 } }, }, [Storage.SvargrondArena.WarlordDoor] = { itemId = false, - itemPos = { { x = 32227, y = 31052, z = 7 } } + itemPos = { { x = 32227, y = 31052, z = 7 } }, }, -- The pits of inferno door [Storage.PitsOfInferno.ShortcutHubDoor] = { itemId = false, - itemPos = { { x = 32786, y = 32328, z = 6 } } + itemPos = { { x = 32786, y = 32328, z = 6 } }, }, [Storage.PitsOfInferno.ShortcutLeverDoor] = { itemId = false, itemPos = { { x = 32825, y = 32331, z = 11 }, - { x = 32825, y = 32332, z = 11 } - } + { x = 32825, y = 32332, z = 11 }, + }, }, -- Fathers burden door [Storage.FathersBurden.QuestLog] = { @@ -665,30 +665,30 @@ QuestDoorAction = { { x = 32815, y = 32505, z = 8 }, { x = 33216, y = 31422, z = 10 }, { x = 33231, y = 31756, z = 5 }, - { x = 33235, y = 32808, z = 12 } - } + { x = 33235, y = 32808, z = 12 }, + }, }, -- What a foolish door [Storage.WhatAFoolish.TriangleTowerDoor] = { itemId = false, - itemPos = { { x = 32563, y = 32116, z = 4 } } + itemPos = { { x = 32563, y = 32116, z = 4 } }, }, [Storage.WhatAFoolish.QueenEloiseCatDoor] = { itemId = false, - itemPos = { { x = 32316, y = 31757, z = 9 } } + itemPos = { { x = 32316, y = 31757, z = 9 } }, }, -- White raven monastery door [Storage.WhiteRavenMonastery.Door] = { itemId = false, itemPos = { { x = 32171, y = 31936, z = 7 }, - { x = 32169, y = 31933, z = 7 } - } + { x = 32169, y = 31933, z = 7 }, + }, }, -- The dream courts door (Andrew Lyze npc) [Storage.Quest.U12_00.TheDreamCourts.AndrewDoor] = { itemId = 20450, - itemPos = { { x = 32761, y = 32630, z = 7 } } + itemPos = { { x = 32761, y = 32630, z = 7 } }, }, -- Kilmaresh doors -- [Storage.Kilmaresh.First.Title] = { @@ -704,78 +704,78 @@ QuestDoorAction = { -- The library vault door [Storage.TheRookieGuard.LibraryDoor] = { itemId = false, - itemPos = { { x = 32090, y = 32156, z = 9 } } + itemPos = { { x = 32090, y = 32156, z = 9 } }, }, -- The Rookie Guard Quest - Mission 10: Tomb Raiding -- The unholy crypt door [Storage.TheRookieGuard.UnholyCryptDoor] = { itemId = false, - itemPos = { { x = 32147, y = 32186, z = 9 } } + itemPos = { { x = 32147, y = 32186, z = 9 } }, }, -- The Rookie Guard Quest - Mission 12: Into The Fortress -- Lower academy floor door [Storage.TheRookieGuard.AcademyDoor] = { itemId = false, - itemPos = { { x = 32109, y = 32189, z = 8 } } + itemPos = { { x = 32109, y = 32189, z = 8 } }, }, -- Hidden Threats Quest [Storage.Quest.U11_50.HiddenThreats.RatterDoor] = { itemId = 1644, - itemPos = { { x = 33046, y = 32066, z = 12 } } + itemPos = { { x = 33046, y = 32066, z = 12 } }, }, [Storage.Quest.U11_50.HiddenThreats.ServantDoor] = { itemId = 1642, - itemPos = { { x = 33036, y = 32008, z = 12 } } + itemPos = { { x = 33036, y = 32008, z = 12 } }, }, [Storage.Quest.U11_50.HiddenThreats.CorymWorksDoor01] = { itemId = 1642, - itemPos = { { x = 33025, y = 32008, z = 12 } } + itemPos = { { x = 33025, y = 32008, z = 12 } }, }, [Storage.Quest.U11_50.HiddenThreats.CorymWorksDoor02] = { itemId = 1642, - itemPos = { { x = 33045, y = 32007, z = 12 } } + itemPos = { { x = 33045, y = 32007, z = 12 } }, }, [Storage.Quest.U11_50.HiddenThreats.CorymWorksDoor03] = { itemId = 1644, - itemPos = { { x = 33001, y = 32047, z = 12 } } + itemPos = { { x = 33001, y = 32047, z = 12 } }, }, [Storage.SecretService.CGBMission06] = { itemId = 6260, - itemPos = { { x = 32180, y = 31933, z = 11 } } + itemPos = { { x = 32180, y = 31933, z = 11 } }, }, [Storage.OutfitQuest.Knight.RamsaysHelmetDoor] = { itemId = 5122, - itemPos = { { x = 32860, y = 32517, z = 11 } } + itemPos = { { x = 32860, y = 32517, z = 11 } }, }, [Storage.Quest.U8_54.TheNewFrontier.ZaoPalaceDoors] = { itemId = 9874, itemPos = { { x = 33161, y = 31265, z = 10 }, - { x = 33161, y = 31266, z = 10 } - } + { x = 33161, y = 31266, z = 10 }, + }, }, [Storage.Quest.U8_54.AnUneasyAlliance.QuestDoor] = { itemId = false, - itemPos = { { x = 33047, y = 31295, z = 7 } } + itemPos = { { x = 33047, y = 31295, z = 7 } }, }, [Storage.WrathoftheEmperor.Mission06] = { itemId = false, itemPos = { { x = 33080, y = 31215, z = 7 }, { x = 33086, y = 31199, z = 7 }, - { x = 33090, y = 31190, z = 7 } - } + { x = 33090, y = 31190, z = 7 }, + }, }, [Storage.WrathoftheEmperor.Mission07] = { itemId = false, itemPos = { { x = 33073, y = 31170, z = 7 }, - { x = 33074, y = 31170, z = 7 } - } + { x = 33074, y = 31170, z = 7 }, + }, }, [Storage.WrathoftheEmperor.Mission09] = { itemId = false, - itemPos = { { x = 33083, y = 31216, z = 8 } } + itemPos = { { x = 33083, y = 31216, z = 8 } }, }, [Storage.Quest.U12_20.GraveDanger.QuestLine] = { itemId = false, @@ -791,51 +791,51 @@ QuestDoorAction = { { x = 33288, y = 32479, z = 9 }, { x = 32355, y = 32163, z = 11 }, { x = 32773, y = 31823, z = 8 }, - { x = 32012, y = 31565, z = 7 } - } + { x = 32012, y = 31565, z = 7 }, + }, }, [Storage.TheSecretLibrary.MiniBosses.PreceptorLazare] = { itemId = 6260, - itemPos = { { x = 33376, y = 31335, z = 3 } } + itemPos = { { x = 33376, y = 31335, z = 3 } }, }, [Storage.TheSecretLibrary.LowerBastionAccess] = { itemId = 6260, itemPos = { { x = 33371, y = 31349, z = 4 }, - { x = 33375, y = 31346, z = 5 } - } + { x = 33375, y = 31346, z = 5 }, + }, }, [Storage.TheSecretLibrary.UndergroundBastionAccess] = { itemId = false, itemPos = { { x = 33366, y = 31343, z = 7 }, { x = 33363, y = 31346, z = 7 }, - { x = 32191, y = 31823, z = 8 } - } + { x = 32191, y = 31823, z = 8 }, + }, }, [Storage.Quest.U12_20.GraveDanger.Bosses.KingZelosDoor] = { itemId = false, - itemPos = { { x = 32173, y = 31922, z = 8 } } + itemPos = { { x = 32173, y = 31922, z = 8 } }, }, [Storage.Quest.U11_80.TheSecretLibrary.ScourgeOfOblivionDoor] = { itemId = false, - itemPos = { { x = 32480, y = 32591, z = 15 } } + itemPos = { { x = 32480, y = 32591, z = 15 } }, }, [Storage.Quest.U12_70.AdventuresOfGalthen.AccessDoor] = { itemId = false, - itemPos = { { x = 32466, y = 32494, z = 8 } } + itemPos = { { x = 32466, y = 32494, z = 8 } }, }, [Storage.Quest.U10_80.Grimvale.AncientFeudDoors] = { itemId = false, itemPos = { { x = 33124, y = 32261, z = 10 }, { x = 33123, y = 32230, z = 12 }, - { x = 33159, y = 32322, z = 12 } - } + { x = 33159, y = 32322, z = 12 }, + }, }, [Storage.Kilmaresh.AccessDoor] = { itemId = false, - itemPos = { { x = 33886, y = 31476, z = 7 } } + itemPos = { { x = 33886, y = 31476, z = 7 } }, }, [Storage.Kilmaresh.CatacombDoors] = { itemId = false, @@ -845,12 +845,12 @@ QuestDoorAction = { { x = 33855, y = 31496, z = 9 }, { x = 33911, y = 31496, z = 9 }, { x = 33884, y = 31510, z = 9 }, - { x = 33884, y = 31536, z = 9 } - } + { x = 33884, y = 31536, z = 9 }, + }, }, [Storage.Quest.U12_60.APiratesTail.TentuglyDoor] = { itemId = false, - itemPos = { { x = 33793, y = 31388, z = 6 } } + itemPos = { { x = 33793, y = 31388, z = 6 } }, }, [Storage.Quest.U12_00.TheDreamCourts.HauntedHouseAccess] = { itemId = false, @@ -860,34 +860,34 @@ QuestDoorAction = { { x = 32700, y = 32275, z = 8 }, { x = 33088, y = 32388, z = 8 }, { x = 32671, y = 32652, z = 7 }, - { x = 32606, y = 32629, z = 9 } - } + { x = 32606, y = 32629, z = 9 }, + }, }, [Storage.Quest.U12_00.TheDreamCourts.BuriedCathedralAccess] = { itemId = false, itemPos = { { x = 32719, y = 32264, z = 8 }, - { x = 32728, y = 32280, z = 8 } - } + { x = 32728, y = 32280, z = 8 }, + }, }, [Storage.Quest.U12_00.TheDreamCourts.DreamScarAccess] = { itemId = false, itemPos = { - { x = 31983, y = 32000, z = 14 } - } + { x = 31983, y = 32000, z = 14 }, + }, }, [Storage.Quest.U12_40.TheOrderOfTheLion.AccessEastSide] = { itemId = false, itemPos = { { x = 32429, y = 32461, z = 7 }, - { x = 32430, y = 32461, z = 8 } - } + { x = 32430, y = 32461, z = 8 }, + }, }, [Storage.Quest.U12_40.TheOrderOfTheLion.AccessSouthernSide] = { itemId = false, itemPos = { - { x = 32422, y = 32499, z = 8 } - } + { x = 32422, y = 32499, z = 8 }, + }, }, [Storage.Quest.U13_10.CradleOfMonsters.Access.LowerIngol] = { itemId = false, @@ -900,19 +900,19 @@ QuestDoorAction = { { x = 33796, y = 32561, z = 11 }, { x = 33796, y = 32573, z = 11 }, { x = 33796, y = 32573, z = 12 }, - } + }, }, [Storage.Quest.U13_10.CradleOfMonsters.Access.Monster] = { itemId = false, itemPos = { { x = 33791, y = 32576, z = 12 }, - } + }, }, [Storage.Quest.U13_10.CradleOfMonsters.Access.MutatedAbomination] = { itemId = false, itemPos = { { x = 33782, y = 32576, z = 12 }, - } + }, }, } @@ -922,26 +922,26 @@ QuestDoorUnique = { -- Sorcerer [22001] = { itemId = 11239, - itemPos = { x = 32055, y = 31885, z = 6 } + itemPos = { x = 32055, y = 31885, z = 6 }, }, -- Druid [22002] = { itemId = 7040, - itemPos = { x = 32073, y = 31885, z = 6 } + itemPos = { x = 32073, y = 31885, z = 6 }, }, -- Paladin [22003] = { itemId = 6898, - itemPos = { x = 32059, y = 31885, z = 6 } + itemPos = { x = 32059, y = 31885, z = 6 }, }, -- Knight [22004] = { itemId = 8363, - itemPos = { x = 32069, y = 31885, z = 6 } + itemPos = { x = 32069, y = 31885, z = 6 }, }, -- Secret Service [22005] = { itemId = 17709, - itemPos = { x = 32908, y = 32112, z = 7 } - } + itemPos = { x = 32908, y = 32112, z = 7 }, + }, } diff --git a/data-otservbr-global/startup/tables/item.lua b/data-otservbr-global/startup/tables/item.lua index 4c1123a7828..fecd3fc6a0b 100644 --- a/data-otservbr-global/startup/tables/item.lua +++ b/data-otservbr-global/startup/tables/item.lua @@ -5,18 +5,18 @@ ItemAction = { -- data\scripts\quests\parchment_room\movement-parchment.lua [104] = { itemId = 2819, - itemPos = { { x = 33063, y = 31624, z = 15 } } + itemPos = { { x = 33063, y = 31624, z = 15 } }, }, [40001] = { -- The cursed crystal skeletons itemId = 27490, itemPos = { { x = 31974, y = 32907, z = 8 }, - { x = 32031, y = 32914, z = 8 } - } + { x = 32031, y = 32914, z = 8 }, + }, }, [40002] = { -- The cursed crystal red crystal itemId = 21572, - itemPos = { { x = 32022, y = 32918, z = 10 } } + itemPos = { { x = 32022, y = 32918, z = 10 } }, }, -- Grave danger quest -- data\scripts\actions\quests\grave_danger\cobra_bastion\scarlett.lua @@ -40,8 +40,8 @@ ItemAction = { { x = 33398, y = 32654, z = 6 }, { x = 33402, y = 32654, z = 6 }, { x = 33398, y = 32640, z = 6 }, - { x = 33395, y = 32667, z = 6 } - } + { x = 33395, y = 32667, z = 6 }, + }, }, -- Kilmaresh -- First mission @@ -52,8 +52,8 @@ ItemAction = { { x = 33915, y = 31635, z = 9 }, { x = 33920, y = 31638, z = 9 }, { x = 33909, y = 31642, z = 9 }, - { x = 33916, y = 31642, z = 9 } - } + { x = 33916, y = 31642, z = 9 }, + }, }, -- The Rookie Guard Quest - Mission 02: Defence! -- Path: data\scripts\actions\quests\the_rookie_guard\mission02_defense.lua @@ -63,8 +63,8 @@ ItemAction = { itemPos = { { x = 32080, y = 32183, z = 8 }, { x = 32080, y = 32184, z = 8 }, - { x = 32081, y = 32184, z = 8 } - } + { x = 32081, y = 32184, z = 8 }, + }, }, -- Bar catapult [40006] = { @@ -73,8 +73,8 @@ ItemAction = { { x = 32098, y = 32176, z = 5 }, { x = 32099, y = 32176, z = 5 }, { x = 32098, y = 32177, z = 5 }, - { x = 32099, y = 32177, z = 5 } - } + { x = 32099, y = 32177, z = 5 }, + }, }, -- Academy catapult 1 [40007] = { @@ -82,16 +82,16 @@ ItemAction = { itemPos = { { x = 32105, y = 32189, z = 5 }, { x = 32105, y = 32190, z = 5 }, - { x = 32106, y = 32190, z = 5 } - } + { x = 32106, y = 32190, z = 5 }, + }, }, -- Academy catapult 2 [40008] = { itemId = false, itemPos = { { x = 32105, y = 32194, z = 5 }, - { x = 32105, y = 32195, z = 5 } - } + { x = 32105, y = 32195, z = 5 }, + }, }, -- Shop catapult [40009] = { @@ -100,8 +100,8 @@ ItemAction = { { x = 32109, y = 32200, z = 5 }, { x = 32110, y = 32200, z = 5 }, { x = 32109, y = 32201, z = 5 }, - { x = 32110, y = 32201, z = 5 } - } + { x = 32110, y = 32201, z = 5 }, + }, }, -- Spider webs [40010] = { @@ -122,8 +122,8 @@ ItemAction = { { x = 32002, y = 32092, z = 12 }, { x = 32004, y = 32093, z = 12 }, { x = 32007, y = 32094, z = 12 }, - { x = 32015, y = 32096, z = 12 } - } + { x = 32015, y = 32096, z = 12 }, + }, }, -- The Rookie Guard Quest - Mission 07: Attack! -- Path: data\scripts\actions\quests\the_rookie_guard\mission07_attack.lua @@ -135,7 +135,7 @@ ItemAction = { { x = 32082, y = 32142, z = 10 }, { x = 32083, y = 32142, z = 10 }, { x = 32084, y = 32142, z = 10 }, - } + }, }, -- Orc fortress large cauldron [40012] = { @@ -144,52 +144,52 @@ ItemAction = { { x = 31987, y = 32154, z = 8 }, { x = 31988, y = 32154, z = 8 }, { x = 31987, y = 32155, z = 8 }, - { x = 31988, y = 32155, z = 8 } - } + { x = 31988, y = 32155, z = 8 }, + }, }, -- Threatened Dreams Quest [40016] = { -- Fairy 01 itemId = false, itemPos = { - { x = 33576, y = 32185, z = 8 } - } + { x = 33576, y = 32185, z = 8 }, + }, }, [40017] = { -- Fairy 02 itemId = false, itemPos = { - { x = 33621, y = 32214, z = 8 } - } + { x = 33621, y = 32214, z = 8 }, + }, }, [40018] = { -- Fairy 03 itemId = false, itemPos = { - { x = 33559, y = 32203, z = 9 } - } + { x = 33559, y = 32203, z = 9 }, + }, }, [40019] = { -- Fairy 04 itemId = false, itemPos = { - { x = 33505, y = 32286, z = 8 } - } + { x = 33505, y = 32286, z = 8 }, + }, }, [40020] = { -- Fairy 05 itemId = false, itemPos = { - { x = 33440, y = 32217, z = 8 } - } + { x = 33440, y = 32217, z = 8 }, + }, }, -- The Royal Rescue [40021] = { -- bridge itemId = false, itemPos = { - { x = 32571, y = 31508, z = 9 } - } + { x = 32571, y = 31508, z = 9 }, + }, }, [40022] = { -- ladder itemId = false, itemPos = { - { x = 32680, y = 31509, z = 12 } - } + { x = 32680, y = 31509, z = 12 }, + }, }, [40023] = { -- wagons itemId = false, @@ -213,8 +213,8 @@ ItemAction = { { x = 32700, y = 31449, z = 15 }, -- npc tehlim { x = 32662, y = 31496, z = 13 }, -- mushroom quest { x = 32703, y = 31506, z = 12 }, -- small tunnel with golems - { x = 32720, y = 31488, z = 15 } -- troll tribe's hideout - } + { x = 32720, y = 31488, z = 15 }, -- troll tribe's hideout + }, }, [40024] = { -- levers itemId = false, @@ -233,45 +233,45 @@ ItemAction = { { x = 32691, y = 31495, z = 11 }, -- stastion 1 { x = 32693, y = 31495, z = 11 }, -- stastion 2 { x = 32695, y = 31495, z = 11 }, -- stastion 3 - { x = 32697, y = 31495, z = 11 } -- stastion 4 - } + { x = 32697, y = 31495, z = 11 }, -- stastion 4 + }, }, [40025] = { -- bellow itemId = false, itemPos = { - { x = 32699, y = 31495, z = 11 } - } + { x = 32699, y = 31495, z = 11 }, + }, }, [40026] = { -- crucible itemId = false, itemPos = { - { x = 32699, y = 31494, z = 11 } - } + { x = 32699, y = 31494, z = 11 }, + }, }, [40027] = { -- archway itemId = false, itemPos = { - { x = 32617, y = 31513, z = 9 } - } + { x = 32617, y = 31513, z = 9 }, + }, }, [40028] = { -- rubble itemId = false, itemPos = { - { x = 32619, y = 31514, z = 9 } - } + { x = 32619, y = 31514, z = 9 }, + }, }, [40029] = { -- tunnel itemId = 7122, itemPos = { - { x = 32619, y = 31514, z = 9 } - } + { x = 32619, y = 31514, z = 9 }, + }, }, -- An Uneasy Alliance [40030] = { -- crystal ball itemId = false, itemPos = { - { x = 33155, y = 31297, z = 3 } - } + { x = 33155, y = 31297, z = 3 }, + }, }, } @@ -280,94 +280,94 @@ ItemUnique = { -- data\scripts\actions\quests\the_shattered_isles\nargor_maps.lua [40001] = { itemId = 6118, - itemPos = { x = 31978, y = 32828, z = 2 } + itemPos = { x = 31978, y = 32828, z = 2 }, }, [40002] = { itemId = 6118, - itemPos = { x = 31982, y = 32844, z = 2 } + itemPos = { x = 31982, y = 32844, z = 2 }, }, [40003] = { itemId = 6118, - itemPos = { x = 31992, y = 32847, z = 2 } + itemPos = { x = 31992, y = 32847, z = 2 }, }, -- Insectoid cell rewards -- data\scripts\actions\quests\others\gooey_mass.lua [40011] = { -- For use of the map itemId = 12937, - itemPos = { x = 33480, y = 31196, z = 7 } + itemPos = { x = 33480, y = 31196, z = 7 }, }, [40012] = { itemId = 12937, - itemPos = { x = 33486, y = 31192, z = 1 } + itemPos = { x = 33486, y = 31192, z = 1 }, }, [40013] = { itemId = 12937, - itemPos = { x = 33511, y = 31169, z = 6 } + itemPos = { x = 33511, y = 31169, z = 6 }, }, [40014] = { itemId = 12937, - itemPos = { x = 33544, y = 31208, z = 5 } + itemPos = { x = 33544, y = 31208, z = 5 }, }, [40015] = { itemId = 12937, - itemPos = { x = 33553, y = 31240, z = 8 } + itemPos = { x = 33553, y = 31240, z = 8 }, }, [40016] = { itemId = 12937, - itemPos = { x = 33554, y = 31196, z = 8 } + itemPos = { x = 33554, y = 31196, z = 8 }, }, [40017] = { itemId = 12937, - itemPos = { x = 33586, y = 31213, z = 8 } + itemPos = { x = 33586, y = 31213, z = 8 }, }, [40018] = { itemId = 12937, - itemPos = { x = 33588, y = 31212, z = 4 } + itemPos = { x = 33588, y = 31212, z = 4 }, }, [40019] = { itemId = 12937, - itemPos = { x = 33605, y = 31223, z = 1 } + itemPos = { x = 33605, y = 31223, z = 1 }, }, [40020] = { itemId = 12938, - itemPos = { x = 33476, y = 31199, z = 2 } + itemPos = { x = 33476, y = 31199, z = 2 }, }, [40021] = { itemId = 12938, - itemPos = { x = 33480, y = 31196, z = 4 } + itemPos = { x = 33480, y = 31196, z = 4 }, }, [40022] = { itemId = 12938, - itemPos = { x = 33562, y = 31218, z = 2 } + itemPos = { x = 33562, y = 31218, z = 2 }, }, [40023] = { itemId = 12938, - itemPos = { x = 33564, y = 31217, z = 6 } + itemPos = { x = 33564, y = 31217, z = 6 }, }, [40024] = { itemId = 12938, - itemPos = { x = 33587, y = 31251, z = 7 } + itemPos = { x = 33587, y = 31251, z = 7 }, }, [40025] = { itemId = 12938, - itemPos = { x = 33610, y = 31221, z = 5 } + itemPos = { x = 33610, y = 31221, z = 5 }, }, [40026] = { itemId = 12938, - itemPos = { x = 33478, y = 31197, z = 3 } + itemPos = { x = 33478, y = 31197, z = 3 }, }, -- The rare herb -- data\scripts\actions\quests\dawnport\the_rare_herb.lua [40027] = { itemId = 21377, - itemPos = { x = 32028, y = 31882, z = 7 } + itemPos = { x = 32028, y = 31882, z = 7 }, }, -- Grave danger (cobra bastion) -- data\scripts\actions\quests\grave_danger\cobra_bastion [40028] = { itemId = 31484, - itemPos = { x = 33395, y = 32660, z = 6 } + itemPos = { x = 33395, y = 32660, z = 6 }, }, -- Kilmaresh @@ -375,272 +375,272 @@ ItemUnique = { -- data\scripts\quests\kilmaresh\1-fafnars-wrath\2-ambassadors-treason.lua [40029] = { itemId = 31364, - itemPos = { x = 33955, y = 31502, z = 4 } + itemPos = { x = 33955, y = 31502, z = 4 }, }, [40030] = { itemId = 31365, - itemPos = { x = 33955, y = 31501, z = 3 } + itemPos = { x = 33955, y = 31501, z = 3 }, }, [40031] = { itemId = 644, - itemPos = { x = 33956, y = 31504, z = 3 } + itemPos = { x = 33956, y = 31504, z = 3 }, }, -- Four Masks [40032] = { -- Ivory mask itemId = 31269, - itemPos = { x = 33879, y = 31490, z = 6 } + itemPos = { x = 33879, y = 31490, z = 6 }, }, [40033] = { -- Gryphon mask itemId = 31630, - itemPos = { x = 33841, y = 31682, z = 3 } + itemPos = { x = 33841, y = 31682, z = 3 }, }, [40034] = { -- Silver mask itemId = 31722, - itemPos = { x = 33780, y = 31664, z = 7 } + itemPos = { x = 33780, y = 31664, z = 7 }, }, [40035] = { -- Mirror mask itemId = 1992, - itemPos = { x = 33793, y = 31553, z = 8 } + itemPos = { x = 33793, y = 31553, z = 8 }, }, -- Blessing the statues [40036] = { itemId = 31162, - itemPos = { x = 33854, y = 31521, z = 9 } + itemPos = { x = 33854, y = 31521, z = 9 }, }, [40037] = { itemId = 31162, - itemPos = { x = 33879, y = 31545, z = 9 } + itemPos = { x = 33879, y = 31545, z = 9 }, }, [40038] = { itemId = 31161, - itemPos = { x = 33891, y = 31504, z = 9 } + itemPos = { x = 33891, y = 31504, z = 9 }, }, [40039] = { itemId = 31162, - itemPos = { x = 33853, y = 31464, z = 9 } + itemPos = { x = 33853, y = 31464, z = 9 }, }, [40040] = { itemId = 31161, - itemPos = { x = 33874, y = 31433, z = 9 } + itemPos = { x = 33874, y = 31433, z = 9 }, }, -- Explorer Society Quest -- Path: data\scripts\actions\quests\explorer_society\findings.lua -- Lizard Urn (Chor) [40041] = { itemId = 2904, - itemPos = { x = 32957, y = 32834, z = 8 } + itemPos = { x = 32957, y = 32834, z = 8 }, }, -- Frozen Dragon (Okolnir) -- Path: data\scripts\actions\quests\explorer_society\dragon.lua [40042] = { itemId = 7295, - itemPos = { x = 32321, y = 31455, z = 9 } + itemPos = { x = 32321, y = 31455, z = 9 }, }, -- Icicles for Ice Music (Camp / Hrodmir) -- Path: data\scripts\actions\quests\explorer_society\resonance.lua [40043] = { itemId = 6966, - itemPos = { x = 32078, y = 31217, z = 7 } + itemPos = { x = 32078, y = 31217, z = 7 }, }, -- The Rookie Guard Quest - Mission 06: Run Like a Wolf -- Path: data\scripts\actions\quests\the_rookie_guard\mission06_run_like_wolf.lua -- Poacher corpse [40044] = { itemId = 3204, - itemPos = { x = 32135, y = 32133, z = 8 } + itemPos = { x = 32135, y = 32133, z = 8 }, }, -- War wolf corpse [40045] = { itemId = 12739, - itemPos = { x = 32109, y = 32132, z = 11 } + itemPos = { x = 32109, y = 32132, z = 11 }, }, -- The Rookie Guard Quest - Mission 07: Attack! -- Path: data\scripts\actions\quests\the_rookie_guard\mission07_attack.lua -- Destroy field rune [40046] = { itemId = 12745, - itemPos = { x = 32082, y = 32143, z = 10 } + itemPos = { x = 32082, y = 32143, z = 10 }, }, -- Library vault treasure chest [40047] = { itemId = 4073, - itemPos = { x = 32083, y = 32141, z = 10 } + itemPos = { x = 32083, y = 32141, z = 10 }, }, -- The Rookie Guard Quest - Mission 09: Rock 'n Troll -- Path: data\scripts\actions\quests\the_rookie_guard\mission09_rock_troll.lua -- Troll caves dug tunnel chest 1 [40048] = { itemId = 12764, - itemPos = { x = 32058, y = 32132, z = 10 } + itemPos = { x = 32058, y = 32132, z = 10 }, }, -- Troll caves dug tunnel chest 2 [40049] = { itemId = 12764, - itemPos = { x = 32059, y = 32132, z = 10 } + itemPos = { x = 32059, y = 32132, z = 10 }, }, -- Troll caves dug tunnel pillar 1 [40050] = { itemId = 1600, - itemPos = { x = 32067, y = 32143, z = 10 } + itemPos = { x = 32067, y = 32143, z = 10 }, }, -- Troll caves dug tunnel pillar 2 [40051] = { itemId = 1600, - itemPos = { x = 32060, y = 32140, z = 10 } + itemPos = { x = 32060, y = 32140, z = 10 }, }, -- Troll caves dug tunnel pillar 3 [40052] = { itemId = 1600, - itemPos = { x = 32065, y = 32134, z = 10 } + itemPos = { x = 32065, y = 32134, z = 10 }, }, -- Troll caves dug tunnel pillar 4 [40053] = { itemId = 1600, - itemPos = { x = 32070, y = 32132, z = 10 } + itemPos = { x = 32070, y = 32132, z = 10 }, }, -- Troll caves dug tunnel pillar 5 [40054] = { itemId = 1600, - itemPos = { x = 32076, y = 32129, z = 10 } + itemPos = { x = 32076, y = 32129, z = 10 }, }, -- The Rookie Guard Quest - Mission 10: Tomb Raiding -- Path: data\scripts\actions\quests\the_rookie_guard\mission10_tomb_raiding.lua -- Unholy crypt sarcophagus [40055] = { itemId = 1992, - itemPos = { x = 32145, y = 32204, z = 10 } + itemPos = { x = 32145, y = 32204, z = 10 }, }, -- The Rookie Guard Quest - Mission 12: Into The Fortress -- Path: data\scripts\actions\quests\the_rookie_guard\mission12_into_fortress.lua -- Academy treasure chest [40056] = { itemId = 4073, - itemPos = { x = 32109, y = 32187, z = 8 } + itemPos = { x = 32109, y = 32187, z = 8 }, }, -- Kraknaknork lair teleport [40057] = { itemId = 1959, - itemPos = { x = 31977, y = 32166, z = 9 } + itemPos = { x = 31977, y = 32166, z = 9 }, }, -- Kraknaknork lair energy barrier 1 [40058] = { itemId = 12796, - itemPos = { x = 31974, y = 32174, z = 10 } + itemPos = { x = 31974, y = 32174, z = 10 }, }, -- Kraknaknork lair energy barrier 2 [40059] = { itemId = 12796, - itemPos = { x = 31962, y = 32174, z = 10 } + itemPos = { x = 31962, y = 32174, z = 10 }, }, -- Kraknaknork lair energy barrier 3 [40060] = { itemId = 12796, - itemPos = { x = 31960, y = 32184, z = 10 } + itemPos = { x = 31960, y = 32184, z = 10 }, }, -- Kraknaknork lair energy barrier 4 [40061] = { itemId = 12796, - itemPos = { x = 31953, y = 32187, z = 10 } + itemPos = { x = 31953, y = 32187, z = 10 }, }, -- Kraknaknork lair energy barrier 5 [40062] = { itemId = 12796, - itemPos = { x = 31972, y = 32183, z = 10 } + itemPos = { x = 31972, y = 32183, z = 10 }, }, -- Kraknaknork lair energy barrier 6 [40063] = { itemId = 12796, - itemPos = { x = 31952, y = 32174, z = 10 } + itemPos = { x = 31952, y = 32174, z = 10 }, }, -- Kraknaknork lair lever 1 [40064] = { itemId = 9110, - itemPos = { x = 31975, y = 32170, z = 10 } + itemPos = { x = 31975, y = 32170, z = 10 }, }, -- Kraknaknork lair lever 2 [40065] = { itemId = 9110, - itemPos = { x = 31961, y = 32168, z = 10 } + itemPos = { x = 31961, y = 32168, z = 10 }, }, -- Kraknaknork lair lever 3 [40066] = { itemId = 9110, - itemPos = { x = 31957, y = 32190, z = 10 } + itemPos = { x = 31957, y = 32190, z = 10 }, }, -- Kraknaknork lair lever 4 [40067] = { itemId = 9110, - itemPos = { x = 31968, y = 32179, z = 10 } + itemPos = { x = 31968, y = 32179, z = 10 }, }, -- Kraknaknork lair lever 5 [40068] = { itemId = 9110, - itemPos = { x = 31949, y = 32187, z = 10 } + itemPos = { x = 31949, y = 32187, z = 10 }, }, -- Kraknaknork lair lever 6 [40069] = { itemId = 9110, - itemPos = { x = 31976, y = 32180, z = 10 } + itemPos = { x = 31976, y = 32180, z = 10 }, }, -- Kraknaknork room enter teleport [40070] = { itemId = 1959, - itemPos = { x = 31948, y = 32174, z = 10 } + itemPos = { x = 31948, y = 32174, z = 10 }, }, -- Kraknaknork room exit teleport [40071] = { itemId = 1959, - itemPos = { x = 31945, y = 32174, z = 10 } + itemPos = { x = 31945, y = 32174, z = 10 }, }, -- Kraknaknork treasure room enter teleport [40072] = { itemId = 1959, - itemPos = { x = 31929, y = 32171, z = 10 } + itemPos = { x = 31929, y = 32171, z = 10 }, }, -- Kraknaknork treasure room left treasure chest [40073] = { itemId = 4073, - itemPos = { x = 31930, y = 32169, z = 11 } + itemPos = { x = 31930, y = 32169, z = 11 }, }, -- Kraknaknork treasure room right treasure chest [40074] = { itemId = 4073, - itemPos = { x = 31935, y = 32169, z = 11 } + itemPos = { x = 31935, y = 32169, z = 11 }, }, -- Kraknaknork treasure room exit teleport [40075] = { itemId = 1959, - itemPos = { x = 31932, y = 32167, z = 11 } + itemPos = { x = 31932, y = 32167, z = 11 }, }, -- War wolf den chest [40076] = { itemId = 2472, - itemPos = { x = 32126, y = 32137, z = 9 } + itemPos = { x = 32126, y = 32137, z = 9 }, }, -- Unholy crypt box [40077] = { itemId = 2469, - itemPos = { x = 32144, y = 32177, z = 10 } + itemPos = { x = 32144, y = 32177, z = 10 }, }, -- Unholy crypt coffin [40078] = { itemId = 2476, - itemPos = { x = 32153, y = 32184, z = 10 } + itemPos = { x = 32153, y = 32184, z = 10 }, }, -- Orc fortress treasure chest [40079] = { itemId = 4077, - itemPos = { x = 31991, y = 32157, z = 8 } + itemPos = { x = 31991, y = 32157, z = 8 }, }, -- Orc fortress trunk [40080] = { itemId = 12763, - itemPos = { x = 31975, y = 32170, z = 8 } + itemPos = { x = 31975, y = 32170, z = 8 }, }, -- Kraknaknork lair treasure chest [40081] = { itemId = 4077, - itemPos = { x = 31978, y = 32184, z = 10 } - } + itemPos = { x = 31978, y = 32184, z = 10 }, + }, } diff --git a/data-otservbr-global/startup/tables/item_daily_reward.lua b/data-otservbr-global/startup/tables/item_daily_reward.lua index 1190f7d5c41..9decb4dc898 100644 --- a/data-otservbr-global/startup/tables/item_daily_reward.lua +++ b/data-otservbr-global/startup/tables/item_daily_reward.lua @@ -1,2 +1 @@ -DailyRewardAction = { -} +DailyRewardAction = {} diff --git a/data-otservbr-global/startup/tables/item_unmoveable.lua b/data-otservbr-global/startup/tables/item_unmoveable.lua index 418cce66028..ed7128ad6ad 100644 --- a/data-otservbr-global/startup/tables/item_unmoveable.lua +++ b/data-otservbr-global/startup/tables/item_unmoveable.lua @@ -5,7 +5,7 @@ ItemUnmoveableAction = { [100] = { itemId = false, itemPos = { - { x = xxxxx, y = yyyyy, z = z } - } - } + { x = xxxxx, y = yyyyy, z = z }, + }, + }, } diff --git a/data-otservbr-global/startup/tables/lever.lua b/data-otservbr-global/startup/tables/lever.lua index df0f212d554..ad4a6edc940 100644 --- a/data-otservbr-global/startup/tables/lever.lua +++ b/data-otservbr-global/startup/tables/lever.lua @@ -7,8 +7,8 @@ LeverAction = { itemId = false, itemPos = { { x = 32107, y = 31901, z = 7 }, - { x = 32104, y = 31906, z = 7 } - } + { x = 32104, y = 31906, z = 7 }, + }, }, -- The New Frontier Quest [30002] = { -- Farmine Elevator Levers @@ -22,14 +22,14 @@ LeverAction = { { x = 32992, y = 31539, z = 1 }, { x = 33056, y = 31527, z = 12 }, { x = 33056, y = 31527, z = 10 }, - { x = 33064, y = 31489, z = 15 } - } + { x = 33064, y = 31489, z = 15 }, + }, }, [30003] = { -- Mortal Kombat Arena itemId = false, itemPos = { - { x = 33079, y = 31014, z = 2 } - } + { x = 33079, y = 31014, z = 2 }, + }, }, [30004] = { -- Dark catedral itemId = false, @@ -39,8 +39,8 @@ LeverAction = { { x = 32619, y = 32523, z = 9 }, { x = 32610, y = 32523, z = 9 }, { x = 32583, y = 32482, z = 9 }, - { x = 32584, y = 32465, z = 9 } - } + { x = 32584, y = 32465, z = 9 }, + }, }, [30005] = { -- the hidden city of beregar itemId = false, @@ -48,8 +48,8 @@ LeverAction = { { x = 32568, y = 31421, z = 9 }, { x = 32570, y = 31421, z = 9 }, { x = 32599, y = 31421, z = 9 }, - { x = 32601, y = 31421, z = 9 } - } + { x = 32601, y = 31421, z = 9 }, + }, }, } @@ -58,141 +58,141 @@ LeverUnique = { -- Path: data\scripts\actions\quests\dark_trails\lever_the_ravager.lua [30001] = { itemId = 2772, - itemPos = { x = 33416, y = 32102, z = 10 } + itemPos = { x = 33416, y = 32102, z = 10 }, }, -- Death priest shargon lever [30002] = { itemId = 2773, - itemPos = { x = 33582, y = 31844, z = 10 } + itemPos = { x = 33582, y = 31844, z = 10 }, }, -- The first dragon quest lever -- Path: data\scripts\actions\quests\first_dragon\lever.lua [30003] = { itemId = 8911, - itemPos = { x = 33583, y = 30992, z = 14 } + itemPos = { x = 33583, y = 30992, z = 14 }, }, -- Thais lighthouse quest -- Path: data\scripts\quests\thais_lighthouse\action-lever.lua [30004] = { itemId = 2772, - itemPos = { x = 32227, y = 32278, z = 8 } + itemPos = { x = 32227, y = 32278, z = 8 }, }, [30005] = { itemId = 2772, - itemPos = { x = 32225, y = 32285, z = 10 } + itemPos = { x = 32225, y = 32285, z = 10 }, }, -- Draconia quest -- Path: data\scripts\quests\draconia\action-lever.lua [30006] = { itemId = 2772, - itemPos = { x = 32792, y = 31595, z = 7 } + itemPos = { x = 32792, y = 31595, z = 7 }, }, -- Demon helmet quest -- Path: data\scripts\quests\demon_helmet\action-lever.lua [30007] = { itemId = 2772, - itemPos = { x = 33330, y = 31574, z = 15 } + itemPos = { x = 33330, y = 31574, z = 15 }, }, -- Alawar's vault quest -- Path: data\scripts\quests\alawars_ault\action-lever.lua [30008] = { itemId = 2772, - itemPos = { x = 32180, y = 31633, z = 8 } + itemPos = { x = 32180, y = 31633, z = 8 }, }, -- Behemoth quest -- Path: data\scripts\quests\behemoth\action-lever.lua [30009] = { itemId = 2772, - itemPos = { x = 33290, y = 31715, z = 12 } + itemPos = { x = 33290, y = 31715, z = 12 }, }, -- The queen of the banshees quest -- Path: data\scripts\quests\the_queen_of_the_banshees\action(1)-first_seal_lever.lua [30010] = { itemId = 2772, - itemPos = { x = 32315, y = 31910, z = 12 } + itemPos = { x = 32315, y = 31910, z = 12 }, }, [30011] = { itemId = 2772, - itemPos = { x = 32212, y = 31888, z = 12 } + itemPos = { x = 32212, y = 31888, z = 12 }, }, [30012] = { itemId = 27260, - itemPos = { x = 32266, y = 31861, z = 11 } + itemPos = { x = 32266, y = 31861, z = 11 }, }, -- Path: data\scripts\quests\the_queen_of_the_banshees\action(3)-third_seal_lever.lua [30013] = { itemId = 2773, - itemPos = { x = 32220, y = 31843, z = 15 } + itemPos = { x = 32220, y = 31843, z = 15 }, }, [30014] = { itemId = 2773, - itemPos = { x = 32220, y = 31845, z = 15 } + itemPos = { x = 32220, y = 31845, z = 15 }, }, [30015] = { itemId = 2773, - itemPos = { x = 32220, y = 31844, z = 15 } + itemPos = { x = 32220, y = 31844, z = 15 }, }, [30016] = { itemId = 2773, - itemPos = { x = 32220, y = 31842, z = 15 } + itemPos = { x = 32220, y = 31842, z = 15 }, }, [30017] = { itemId = 2773, - itemPos = { x = 32220, y = 31846, z = 15 } + itemPos = { x = 32220, y = 31846, z = 15 }, }, -- Path: data\scripts\quests\the_queen_of_the_banshees\action(6)-sixth_seal_lever.lua [30018] = { itemId = 2772, - itemPos = { x = 32310, y = 31975, z = 13 } + itemPos = { x = 32310, y = 31975, z = 13 }, }, [30019] = { itemId = 2772, - itemPos = { x = 32310, y = 31976, z = 13 } + itemPos = { x = 32310, y = 31976, z = 13 }, }, [30020] = { itemId = 2772, - itemPos = { x = 32312, y = 31975, z = 13 } + itemPos = { x = 32312, y = 31975, z = 13 }, }, [30021] = { itemId = 2772, - itemPos = { x = 32312, y = 31976, z = 13 } + itemPos = { x = 32312, y = 31976, z = 13 }, }, [30022] = { itemId = 2772, - itemPos = { x = 32314, y = 31975, z = 13 } + itemPos = { x = 32314, y = 31975, z = 13 }, }, [30023] = { itemId = 2772, - itemPos = { x = 32314, y = 31976, z = 13 } + itemPos = { x = 32314, y = 31976, z = 13 }, }, -- Path: data\scripts\quests\giant_smithhammer\lever.lua [30024] = { itemId = 2772, - itemPos = { x = 32778, y = 32232, z = 8 } + itemPos = { x = 32778, y = 32232, z = 8 }, }, -- Path: data\scripts\quests\the_annihilator\lever.lua [30025] = { itemId = 2772, - itemPos = { x = 33226, y = 31671, z = 13 } + itemPos = { x = 33226, y = 31671, z = 13 }, }, -- Path: data\scripts\quests\the_paradox_tower\action-3-third_floor_lever.lua [30026] = { itemId = 9125, - itemPos = { x = 32481, y = 31904, z = 5 } + itemPos = { x = 32481, y = 31904, z = 5 }, }, -- Path: data\scripts\quests\the_paradox_tower\action-4-four_floor_lever.lua [30027] = { itemId = 2772, - itemPos = { x = 32479, y = 31905, z = 4 } + itemPos = { x = 32479, y = 31905, z = 4 }, }, -- Path: data\scripts\quests\the_paradox_tower\action-5-fifth_floor_lever.lua [30028] = { itemId = 2772, - itemPos = { x = 32478, y = 31904, z = 3 } + itemPos = { x = 32478, y = 31904, z = 3 }, }, [Storage.ThaisExhibition.FriendshipAmulet] = { itemId = 2772, - itemPos = { x = 32399, y = 32209, z = 9 } + itemPos = { x = 32399, y = 32209, z = 9 }, }, [Storage.ThaisExhibition.HandPuppets] = { itemId = 2772, @@ -297,5 +297,5 @@ LeverUnique = { [Storage.ThaisExhibition.TibiorasBox] = { itemId = 2772, itemPos = { x = 32440, y = 32191, z = 10 }, - } + }, } diff --git a/data-otservbr-global/startup/tables/load.lua b/data-otservbr-global/startup/tables/load.lua index c185d323fa8..fe3b5bbde5e 100644 --- a/data-otservbr-global/startup/tables/load.lua +++ b/data-otservbr-global/startup/tables/load.lua @@ -1,16 +1,16 @@ -dofile(DATA_DIRECTORY .. '/startup/tables/chest.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/corpse.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/create_item.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/door_key.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/door_level.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/door_quest.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/item.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/item_daily_reward.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/item_unmoveable.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/lever.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/teleport.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/teleport_item.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/tile.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/tile_pick.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/writeable.lua') -dofile(DATA_DIRECTORY .. '/startup/tables/storage_keys_update.lua') +dofile(DATA_DIRECTORY .. "/startup/tables/chest.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/corpse.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/create_item.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/door_key.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/door_level.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/door_quest.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/item.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/item_daily_reward.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/item_unmoveable.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/lever.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/teleport.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/teleport_item.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/tile.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/tile_pick.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/writeable.lua") +dofile(DATA_DIRECTORY .. "/startup/tables/storage_keys_update.lua") diff --git a/data-otservbr-global/startup/tables/storage_keys_update.lua b/data-otservbr-global/startup/tables/storage_keys_update.lua index dfdba9ffd71..8b4eab2d4de 100644 --- a/data-otservbr-global/startup/tables/storage_keys_update.lua +++ b/data-otservbr-global/startup/tables/storage_keys_update.lua @@ -84,7 +84,6 @@ QuestKeysUpdate = { { old = 10058, new = 40127 }, -- CrystallBall { old = 10059, new = 40128 }, -- TimeRing { old = 10060, new = 40129 }, -- ElvenAmulet - }, [2] = { -- TheNewFrontier @@ -273,5 +272,6 @@ QuestKeysUpdate = { {old = 10004, new = 80004}, -- Example {old = 10005, new = 80005}, -- Example }, -]] -- +]] + -- } diff --git a/data-otservbr-global/startup/tables/teleport.lua b/data-otservbr-global/startup/tables/teleport.lua index 20bd731fc8a..9efceb287f9 100644 --- a/data-otservbr-global/startup/tables/teleport.lua +++ b/data-otservbr-global/startup/tables/teleport.lua @@ -6,8 +6,8 @@ TeleportAction = { itemId = 1949, itemPos = { { x = 32209, y = 32292, z = 6 }, - { x = 32210, y = 32292, z = 6 } - } + { x = 32210, y = 32292, z = 6 }, + }, }, [35001] = { -- The Cursed Crystal teleports itemId = 19387, @@ -15,17 +15,17 @@ TeleportAction = { { x = 31973, y = 32905, z = 10 }, { x = 31973, y = 32905, z = 11 }, { x = 32009, y = 32928, z = 10 }, - { x = 32009, y = 32928, z = 9 } - } + { x = 32009, y = 32928, z = 9 }, + }, }, -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(2)-second_seal_pearl.lua [35002] = { itemId = 1949, itemPos = { { x = 32176, y = 31869, z = 15 }, - { x = 32177, y = 31869, z = 15 } - } - } + { x = 32177, y = 31869, z = 15 }, + }, + }, } TeleportUnique = { @@ -34,117 +34,117 @@ TeleportUnique = { -- Tazhadur entrance [35001] = { itemId = 8649, - itemPos = { x = 33234, y = 32276, z = 12 } + itemPos = { x = 33234, y = 32276, z = 12 }, }, -- Kalyassa entrance [35002] = { itemId = 8646, - itemPos = { x = 33160, y = 31320, z = 5 } + itemPos = { x = 33160, y = 31320, z = 5 }, }, -- Zorvorax entrance [35003] = { itemId = 8648, - itemPos = { x = 33003, y = 31593, z = 11 } + itemPos = { x = 33003, y = 31593, z = 11 }, }, -- Gelidrazah entrance [35004] = { itemId = 8647, - itemPos = { x = 32276, y = 31367, z = 4 } + itemPos = { x = 32276, y = 31367, z = 4 }, }, -- Tazhadur exit -- Path: data\scripts\movements\quests\first_dragon\exit_teleport.lua [35005] = { itemId = 8649, - itemPos = { x = 32013, y = 32467, z = 8 } + itemPos = { x = 32013, y = 32467, z = 8 }, }, -- Kalyassa exit [35006] = { itemId = 8646, - itemPos = { x = 32076, y = 32457, z = 8 } + itemPos = { x = 32076, y = 32457, z = 8 }, }, -- Zorvorax exit [35007] = { itemId = 8648, - itemPos = { x = 32006, y = 32395, z = 8 } + itemPos = { x = 32006, y = 32395, z = 8 }, }, -- Gelidrazah exit [35008] = { itemId = 8647, - itemPos = { x = 32077, y = 32404, z = 8 } + itemPos = { x = 32077, y = 32404, z = 8 }, }, -- Lions rock quest -- Path: data\scripts\movements\quests\lions_rock\lions_rock.lua [35009] = { itemId = 1959, - itemPos = { x = 33128, y = 32308, z = 8 } + itemPos = { x = 33128, y = 32308, z = 8 }, }, -- Dawnport quest -- Sacred snake teleport -- Path: data\scripts\movements\quests\dawnport\legion_helmet.lua [35010] = { itemId = 1949, - itemPos = { x = 32112, y = 31936, z = 8 } + itemPos = { x = 32112, y = 31936, z = 8 }, }, -- Draconia quest -- Exit teleport -- Path: data\scripts\movements\quests\draconia\movement-exit_teleport.lua [35011] = { itemId = 1949, - itemPos = { x = 32805, y = 31587, z = 1 } + itemPos = { x = 32805, y = 31587, z = 1 }, }, -- Path: data\scripts\movements\quests\draconia\movement-escape.lua [35012] = { itemId = 1949, - itemPos = { x = 32815, y = 31599, z = 9 } + itemPos = { x = 32815, y = 31599, z = 9 }, }, -- The queen of the banshees quest -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(1)-first_seal_flame.lua [35013] = { itemId = 1959, - itemPos = { x = 32278, y = 31903, z = 13 } + itemPos = { x = 32278, y = 31903, z = 13 }, }, -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(2)-second_seal_flame.lua [35014] = { itemId = 1959, - itemPos = { x = 32171, y = 31853, z = 15 } + itemPos = { x = 32171, y = 31853, z = 15 }, }, -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(3)-third_seal_flame.lua [35015] = { itemId = 1959, - itemPos = { x = 32215, y = 31849, z = 15 } + itemPos = { x = 32215, y = 31849, z = 15 }, }, -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(4)-fourth_seal_flame.lua [35016] = { itemId = 1959, - itemPos = { x = 32250, y = 31892, z = 14 } + itemPos = { x = 32250, y = 31892, z = 14 }, }, -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(5)-fifth_seal_flame.lua [35017] = { itemId = 1959, - itemPos = { x = 32192, y = 31938, z = 14 } + itemPos = { x = 32192, y = 31938, z = 14 }, }, -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(6)-sixth_seal_flame.lua [35018] = { itemId = 1959, - itemPos = { x = 32311, y = 31978, z = 13 } + itemPos = { x = 32311, y = 31978, z = 13 }, }, -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(7)-last_seal_flame.lua [35019] = { itemId = 1949, - itemPos = { x = 32219, y = 31913, z = 15 } + itemPos = { x = 32219, y = 31913, z = 15 }, }, -- Path: data\scripts\movements\quests\nightmare_isles\teleport.lua [35020] = { itemId = 10840, - itemPos = { x = 33498, y = 32613, z = 8 } + itemPos = { x = 33498, y = 32613, z = 8 }, }, [35021] = { itemId = 1949, - itemPos = { x = 32615, y = 32484, z = 9 } + itemPos = { x = 32615, y = 32484, z = 9 }, }, [35022] = { itemId = 1949, - itemPos = { x = 32615, y = 32484, z = 10 } + itemPos = { x = 32615, y = 32484, z = 10 }, }, -- Simple teleports (They are registered automatically, without just configuring the table correctly) -- Path: data\scripts\movements\others\teleport.lua @@ -156,58 +156,58 @@ TeleportUnique = { itemId = 1949, itemPos = { x = 32208, y = 32433, z = 10 }, destination = { x = 32281, y = 32389, z = 10 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- Exit [38002] = { itemId = 1949, itemPos = { x = 32234, y = 32502, z = 10 }, destination = { x = 32167, y = 32438, z = 9 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- Draconia quest teleports [38003] = { itemId = 1949, itemPos = { x = 32675, y = 31646, z = 10 }, destination = { x = 32725, y = 31589, z = 12 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [38004] = { itemId = 1949, itemPos = { x = 32669, y = 31653, z = 10 }, destination = { x = 32679, y = 31673, z = 10 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [38005] = { itemId = 1949, itemPos = { x = 32794, y = 31576, z = 5 }, destination = { x = 32812, y = 31577, z = 5 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [38006] = { itemId = 1949, itemPos = { x = 32812, y = 31576, z = 5 }, destination = { x = 32794, y = 31577, z = 5 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- Demom helmet quest teleports [38007] = { itemId = 1949, itemPos = { x = 33278, y = 31592, z = 11 }, destination = { x = 33281, y = 31592, z = 12 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [38008] = { itemId = 1949, itemPos = { x = 33286, y = 31589, z = 12 }, destination = { x = 33277, y = 31592, z = 11 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [38009] = { itemId = 1949, itemPos = { x = 33324, y = 31592, z = 14 }, destination = { x = 33324, y = 31575, z = 15 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- Alawar's vault quest -- Entrance @@ -215,85 +215,85 @@ TeleportUnique = { itemId = 1949, itemPos = { x = 32187, y = 31622, z = 8 }, destination = { x = 32107, y = 31567, z = 9 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- Exit [38011] = { itemId = 1949, itemPos = { x = 32107, y = 31566, z = 9 }, destination = { x = 32189, y = 31625, z = 4 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- Black knight quest entrance [38012] = { itemId = 1949, itemPos = { x = 32874, y = 31941, z = 12 }, destination = { x = 32874, y = 31948, z = 11 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- Black knight quest exit [38013] = { itemId = 1949, itemPos = { x = 32874, y = 31955, z = 11 }, destination = { x = 32874, y = 31942, z = 12 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- The queen of the banshees teleports [38014] = { itemId = 1949, itemPos = { x = 32262, y = 31889, z = 10 }, destination = { x = 32259, y = 31892, z = 10 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [38015] = { itemId = 1949, itemPos = { x = 32266, y = 31857, z = 12 }, destination = { x = 32266, y = 31864, z = 12 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [38016] = { itemId = 1949, itemPos = { x = 32266, y = 31863, z = 12 }, destination = { x = 32266, y = 31858, z = 12 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- The annihilator quest room exit [38017] = { itemId = 1949, itemPos = { x = 33236, y = 31655, z = 13 }, destination = { x = 33213, y = 31671, z = 13 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- The paradox tower quest [38018] = { itemId = 1949, itemPos = { x = 32476, y = 31904, z = 5 }, destination = { x = 32476, y = 31904, z = 6 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [38019] = { itemId = 1949, itemPos = { x = 32481, y = 31904, z = 4 }, destination = { x = 32481, y = 31905, z = 5 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [38020] = { itemId = 1949, itemPos = { x = 32476, y = 31904, z = 3 }, destination = { x = 32476, y = 31904, z = 4 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [38021] = { itemId = 1949, itemPos = { x = 32479, y = 31904, z = 2 }, destination = { x = 32479, y = 31904, z = 3 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [38022] = { itemId = 1949, itemPos = { x = 32481, y = 31905, z = 1 }, destination = { x = 32480, y = 31905, z = 2 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- Others teleports @@ -302,50 +302,50 @@ TeleportUnique = { itemId = 7804, itemPos = { x = 32600, y = 33009, z = 8 }, destination = { x = 32600, y = 33009, z = 9 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [39002] = { itemId = 7106, itemPos = { x = 32628, y = 33001, z = 9 }, destination = { x = 32624, y = 33001, z = 9 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [39003] = { itemId = 7804, itemPos = { x = 32649, y = 32985, z = 8 }, destination = { x = 32653, y = 32987, z = 9 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [39004] = { itemId = 7106, itemPos = { x = 32654, y = 32985, z = 9 }, destination = { x = 32651, y = 32983, z = 8 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [39005] = { itemId = 7804, itemPos = { x = 32610, y = 32977, z = 8 }, destination = { x = 32612, y = 32980, z = 9 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [39006] = { itemId = 7106, itemPos = { x = 32610, y = 32979, z = 9 }, destination = { x = 32608, y = 32978, z = 8 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- Faceless Bane room exit teleport [39007] = { itemId = 775, itemPos = { x = 33617, y = 32569, z = 13 }, destination = { x = 33618, y = 32523, z = 15 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- Faceless Bane lever room exit teleport [39008] = { itemId = 775, itemPos = { x = 33640, y = 32559, z = 13 }, destination = { x = 33618, y = 32523, z = 15 }, - effect = CONST_ME_TELEPORT - } + effect = CONST_ME_TELEPORT, + }, } diff --git a/data-otservbr-global/startup/tables/teleport_item.lua b/data-otservbr-global/startup/tables/teleport_item.lua index 777bac1f974..9ba767e8bec 100644 --- a/data-otservbr-global/startup/tables/teleport_item.lua +++ b/data-otservbr-global/startup/tables/teleport_item.lua @@ -10,7 +10,7 @@ TeleportItemAction = { { x = 32194, y = 31418, z = 2 }, { x = 32194, y = 31419, z = 2 }, { x = 32195, y = 31418, z = 2 }, - { x = 32195, y = 31419, z = 2 } + { x = 32195, y = 31419, z = 2 }, }, }, [15002] = { @@ -19,8 +19,8 @@ TeleportItemAction = { { x = 32910, y = 32338, z = 15 }, { x = 32910, y = 32339, z = 15 }, { x = 32911, y = 32338, z = 15 }, - { x = 32911, y = 32339, z = 15 } - } + { x = 32911, y = 32339, z = 15 }, + }, }, [15003] = { itemId = false, @@ -28,8 +28,8 @@ TeleportItemAction = { { x = 32973, y = 32225, z = 7 }, { x = 32973, y = 32226, z = 7 }, { x = 32974, y = 32225, z = 7 }, - { x = 32974, y = 32226, z = 7 } - } + { x = 32974, y = 32226, z = 7 }, + }, }, [15004] = { itemId = false, @@ -37,8 +37,8 @@ TeleportItemAction = { { x = 33060, y = 32713, z = 5 }, { x = 33060, y = 32714, z = 5 }, { x = 33061, y = 32713, z = 5 }, - { x = 33061, y = 32714, z = 5 } - } + { x = 33061, y = 32714, z = 5 }, + }, }, -- Deeper fibula draw well -- Path: data\scripts\quests\deeper_fibula\action-draw_well.lua @@ -46,8 +46,8 @@ TeleportItemAction = { itemId = false, itemPos = { { x = 32171, y = 32439, z = 7 }, - { x = 32172, y = 32439, z = 7 } - } + { x = 32172, y = 32439, z = 7 }, + }, }, } @@ -56,25 +56,25 @@ TeleportItemUnique = { itemId = 31673, itemPos = { x = 33315, y = 32647, z = 6 }, destination = { x = 33384, y = 32627, z = 7 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [15002] = { itemId = 1759, itemPos = { x = 33383, y = 32626, z = 7 }, destination = { x = 33314, y = 32647, z = 6 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, [15003] = { itemId = 5679, itemPos = { x = 33918, y = 31471, z = 7 }, destination = { x = 33916, y = 31466, z = 8 }, - effect = CONST_ME_TELEPORT + effect = CONST_ME_TELEPORT, }, -- Faceless Bane entrance [15004] = { itemId = 29954, itemPos = { x = 33619, y = 32518, z = 15 }, destination = { x = 33640, y = 32561, z = 13 }, - effect = CONST_ME_TELEPORT - } + effect = CONST_ME_TELEPORT, + }, } diff --git a/data-otservbr-global/startup/tables/tile.lua b/data-otservbr-global/startup/tables/tile.lua index 3a747e815de..6e5cb605c24 100644 --- a/data-otservbr-global/startup/tables/tile.lua +++ b/data-otservbr-global/startup/tables/tile.lua @@ -13,8 +13,8 @@ TileAction = { { x = 32064, y = 31900, z = 5 }, { x = 32065, y = 31900, z = 5 }, { x = 32056, y = 31890, z = 5 }, - { x = 32056, y = 31891, z = 5 } - } + { x = 32056, y = 31891, z = 5 }, + }, }, -- Dark trails quest tile -- data\scripts\movements\quests\dark_trails\necrometer_tile_access.lua @@ -22,8 +22,8 @@ TileAction = { itemId = false, itemPos = { { x = 33418, y = 32108, z = 10 }, - { x = 33419, y = 32108, z = 10 } - } + { x = 33419, y = 32108, z = 10 }, + }, }, -- First dragon quest tile -- data\scripts\movements\quests\first_dragon\zorvorax_secrets.lua @@ -31,23 +31,23 @@ TileAction = { itemId = false, itemPos = { { x = 33135, y = 32652, z = 7 }, - { x = 33128, y = 32654, z = 7 } - } + { x = 33128, y = 32654, z = 7 }, + }, }, [25003] = { itemId = false, itemPos = { { x = 32348, y = 31691, z = 7 }, - { x = 32343, y = 31694, z = 7 } - } + { x = 32343, y = 31694, z = 7 }, + }, }, [25004] = { itemId = false, itemPos = { { x = 32696, y = 31720, z = 7 }, { x = 32697, y = 31720, z = 7 }, - { x = 32698, y = 31720, z = 7 } - } + { x = 32698, y = 31720, z = 7 }, + }, }, --Dawnport --Sorcerer vocation tile @@ -58,8 +58,8 @@ TileAction = { { x = 32055, y = 31889, z = 5 }, { x = 32055, y = 31890, z = 5 }, { x = 32055, y = 31891, z = 5 }, - { x = 32055, y = 31892, z = 5 } - } + { x = 32055, y = 31892, z = 5 }, + }, }, --Druid vocation tile [25006] = { @@ -68,8 +68,8 @@ TileAction = { { x = 32063, y = 31901, z = 5 }, { x = 32064, y = 31901, z = 5 }, { x = 32065, y = 31901, z = 5 }, - { x = 32066, y = 31901, z = 5 } - } + { x = 32066, y = 31901, z = 5 }, + }, }, --Paladin vocation tile [25007] = { @@ -79,7 +79,7 @@ TileAction = { { x = 32075, y = 31890, z = 5 }, { x = 32075, y = 31891, z = 5 }, { x = 32075, y = 31892, z = 5 }, - } + }, }, --Knight vocation tile [25008] = { @@ -88,8 +88,8 @@ TileAction = { { x = 32063, y = 31880, z = 5 }, { x = 32064, y = 31880, z = 5 }, { x = 32065, y = 31880, z = 5 }, - { x = 32066, y = 31880, z = 5 } - } + { x = 32066, y = 31880, z = 5 }, + }, }, -- Tiles data\scripts\movements\others\dawnport_tiles.lua --Stairs decided vocation back @@ -99,8 +99,8 @@ TileAction = { { x = 32063, y = 31889, z = 6 }, { x = 32064, y = 31889, z = 6 }, { x = 32065, y = 31889, z = 6 }, - { x = 32066, y = 31889, z = 6 } - } + { x = 32066, y = 31889, z = 6 }, + }, }, --Sorcerer door tile [25010] = { @@ -108,8 +108,8 @@ TileAction = { itemPos = { { x = 32053, y = 31884, z = 6 }, { x = 32054, y = 31884, z = 6 }, - { x = 32055, y = 31884, z = 6 } - } + { x = 32055, y = 31884, z = 6 }, + }, }, --Druid door tile [25011] = { @@ -117,8 +117,8 @@ TileAction = { itemPos = { { x = 32072, y = 31884, z = 6 }, { x = 32073, y = 31884, z = 6 }, - { x = 32074, y = 31884, z = 6 } - } + { x = 32074, y = 31884, z = 6 }, + }, }, --Paladin door tile [25012] = { @@ -126,8 +126,8 @@ TileAction = { itemPos = { { x = 32058, y = 31884, z = 6 }, { x = 32059, y = 31884, z = 6 }, - { x = 32060, y = 31884, z = 6 } - } + { x = 32060, y = 31884, z = 6 }, + }, }, --Knight door tile [25013] = { @@ -135,36 +135,36 @@ TileAction = { itemPos = { { x = 32067, y = 31884, z = 6 }, { x = 32068, y = 31884, z = 6 }, - { x = 32069, y = 31884, z = 6 } - } + { x = 32069, y = 31884, z = 6 }, + }, }, --Sorcerer chest tile [25014] = { itemId = 409, - itemPos = { { x = 32054, y = 31880, z = 6 } } + itemPos = { { x = 32054, y = 31880, z = 6 } }, }, --Druid chest tile [25015] = { itemId = 409, - itemPos = { { x = 32073, y = 31880, z = 6 } } + itemPos = { { x = 32073, y = 31880, z = 6 } }, }, --Paladin chest tile [25016] = { itemId = 409, - itemPos = { { x = 32059, y = 31880, z = 6 } } + itemPos = { { x = 32059, y = 31880, z = 6 } }, }, --Knight chest tile [25017] = { itemId = 409, - itemPos = { { x = 32068, y = 31880, z = 6 } } + itemPos = { { x = 32068, y = 31880, z = 6 } }, }, -- The cursed crystal medusa message [25018] = { itemId = 104, itemPos = { { x = 32017, y = 32917, z = 10 }, - { x = 32017, y = 32918, z = 10 } - } + { x = 32017, y = 32918, z = 10 }, + }, }, -- The queen of the banshees quest -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(1)-first_seal_teleport_back.lua @@ -173,8 +173,8 @@ TileAction = { itemPos = { { x = 32265, y = 31898, z = 12 }, { x = 32266, y = 31898, z = 12 }, - { x = 32267, y = 31898, z = 12 } - } + { x = 32267, y = 31898, z = 12 }, + }, }, -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(5)-fifth_seal_path.lua [25020] = { @@ -188,8 +188,8 @@ TileAction = { { x = 32189, y = 31940, z = 14 }, { x = 32190, y = 31940, z = 14 }, { x = 32191, y = 31939, z = 14 }, - { x = 32191, y = 31938, z = 14 } - } + { x = 32191, y = 31938, z = 14 }, + }, }, -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(5)-fifth_seal_path.lua [25021] = { @@ -211,21 +211,21 @@ TileAction = { { x = 32187, y = 31940, z = 14 }, { x = 32188, y = 31940, z = 14 }, { x = 32189, y = 31940, z = 14 }, - { x = 32191, y = 31940, z = 14 } - } + { x = 32191, y = 31940, z = 14 }, + }, }, -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(4)-fourth_seal_sacrifice.lua [25022] = { itemId = 430, - itemPos = { { x = 32243, y = 31892, z = 14 } } + itemPos = { { x = 32243, y = 31892, z = 14 } }, }, -- Path: data\scripts\movements\quests\the_queen_of_the_banshees\movement(3)-third_seal_warlock_tile.lua [25023] = { itemId = 431, itemPos = { { x = 32215, y = 31838, z = 15 }, - { x = 32216, y = 31838, z = 15 } - } + { x = 32216, y = 31838, z = 15 }, + }, }, -- Threatened Dreams Quest [25024] = { @@ -234,8 +234,8 @@ TileAction = { { x = 33200, y = 31892, z = 7 }, { x = 33201, y = 31892, z = 7 }, { x = 33201, y = 31893, z = 7 }, - { x = 33201, y = 31894, z = 7 } - } + { x = 33201, y = 31894, z = 7 }, + }, }, [25025] = { itemId = false, @@ -243,8 +243,8 @@ TileAction = { { x = 33265, y = 32422, z = 7 }, { x = 33265, y = 32423, z = 7 }, { x = 33266, y = 32423, z = 7 }, - { x = 33267, y = 32423, z = 7 } - } + { x = 33267, y = 32423, z = 7 }, + }, }, [25026] = { itemId = false, @@ -255,8 +255,8 @@ TileAction = { { x = 33264, y = 32377, z = 7 }, { x = 33262, y = 32379, z = 7 }, { x = 33263, y = 32379, z = 7 }, - { x = 33264, y = 32379, z = 7 } - } + { x = 33264, y = 32379, z = 7 }, + }, }, [25027] = { itemId = false, @@ -264,23 +264,23 @@ TileAction = { { x = 33257, y = 32315, z = 7 }, { x = 33257, y = 32314, z = 7 }, { x = 33259, y = 32314, z = 7 }, - { x = 33259, y = 32315, z = 7 } - } + { x = 33259, y = 32315, z = 7 }, + }, }, [25028] = { itemId = false, itemPos = { { x = 33249, y = 32267, z = 6 }, { x = 33249, y = 32268, z = 6 }, - { x = 33250, y = 32268, z = 6 } - } + { x = 33250, y = 32268, z = 6 }, + }, }, [25029] = { itemId = 10840, itemPos = { { x = 33619, y = 32304, z = 9 }, - { x = 33591, y = 32321, z = 10 } - } + { x = 33591, y = 32321, z = 10 }, + }, }, -- Others actions -- Kilmaresh @@ -289,8 +289,8 @@ TileAction = { itemId = false, itemPos = { { x = 33956, y = 31503, z = 2 }, - { x = 33957, y = 31503, z = 2 } - } + { x = 33957, y = 31503, z = 2 }, + }, }, -- The paradox tower quest -- data\scripts\movements\quests\the_paradox_tower\movement-last_floor_reward.lua @@ -300,8 +300,8 @@ TileAction = { itemPos = { { x = 32476, y = 31903, z = 1 }, { x = 32477, y = 31903, z = 1 }, - { x = 32478, y = 31903, z = 1 } - } + { x = 32478, y = 31903, z = 1 }, + }, }, -- 10000 gold coins [50309] = { @@ -309,8 +309,8 @@ TileAction = { itemPos = { { x = 32479, y = 31903, z = 1 }, { x = 32481, y = 31902, z = 1 }, - { x = 32476, y = 31902, z = 1 } - } + { x = 32476, y = 31902, z = 1 }, + }, }, -- Talons [50310] = { @@ -318,8 +318,8 @@ TileAction = { itemPos = { { x = 32478, y = 31902, z = 1 }, { x = 32479, y = 31902, z = 1 }, - { x = 32480, y = 31902, z = 1 } - } + { x = 32480, y = 31902, z = 1 }, + }, }, -- Wand of cosmic energy [50311] = { @@ -327,8 +327,8 @@ TileAction = { itemPos = { { x = 32477, y = 31902, z = 1 }, { x = 32480, y = 31903, z = 1 }, - { x = 32481, y = 31903, z = 1 } - } + { x = 32481, y = 31903, z = 1 }, + }, }, -- The Rookie Guard Quest - Mission 02: Defence! -- Path: data\scripts\actions\quests\the_rookie_guard\mission02_defense.lua @@ -344,7 +344,7 @@ TileAction = { { x = 32092, y = 32181, z = 7 }, { x = 32093, y = 32181, z = 7 }, { x = 32094, y = 32181, z = 7 }, - } + }, }, -- Barn entrance [50313] = { @@ -353,8 +353,8 @@ TileAction = { { x = 32081, y = 32190, z = 7 }, { x = 32082, y = 32190, z = 7 }, { x = 32083, y = 32190, z = 7 }, - { x = 32084, y = 32189, z = 7 } - } + { x = 32084, y = 32189, z = 7 }, + }, }, -- Bar entrance [50314] = { @@ -363,8 +363,8 @@ TileAction = { { x = 32095, y = 32182, z = 7 }, { x = 32095, y = 32183, z = 7 }, { x = 32095, y = 32184, z = 7 }, - { x = 32095, y = 32185, z = 7 } - } + { x = 32095, y = 32185, z = 7 }, + }, }, -- Academy center [50315] = { @@ -372,8 +372,8 @@ TileAction = { itemPos = { { x = 32096, y = 32194, z = 7 }, { x = 32097, y = 32194, z = 7 }, - { x = 32098, y = 32194, z = 7 } - } + { x = 32098, y = 32194, z = 7 }, + }, }, -- Obi shop entrance [50316] = { @@ -381,8 +381,8 @@ TileAction = { itemPos = { { x = 32101, y = 32204, z = 7 }, { x = 32101, y = 32205, z = 7 }, - { x = 32101, y = 32206, z = 7 } - } + { x = 32101, y = 32206, z = 7 }, + }, }, -- Center north road [50317] = { @@ -392,8 +392,8 @@ TileAction = { { x = 32090, y = 32197, z = 7 }, { x = 32091, y = 32197, z = 7 }, { x = 32092, y = 32197, z = 7 }, - { x = 32093, y = 32197, z = 7 } - } + { x = 32093, y = 32197, z = 7 }, + }, }, -- Center north-west road [50318] = { @@ -405,13 +405,13 @@ TileAction = { { x = 32086, y = 32192, z = 7 }, { x = 32086, y = 32193, z = 7 }, { x = 32086, y = 32194, z = 7 }, - { x = 32086, y = 32195, z = 7 } - } + { x = 32086, y = 32195, z = 7 }, + }, }, -- North bridge exit [50319] = { itemId = 870, - itemPos = { { x = 32091, y = 32169, z = 7 } } + itemPos = { { x = 32091, y = 32169, z = 7 } }, }, -- Outer north-west path [50320] = { @@ -420,8 +420,8 @@ TileAction = { { x = 32084, y = 32161, z = 7 }, { x = 32085, y = 32161, z = 7 }, { x = 32086, y = 32161, z = 7 }, - { x = 32087, y = 32161, z = 7 } - } + { x = 32087, y = 32161, z = 7 }, + }, }, -- Outer north-east path [50321] = { @@ -446,8 +446,8 @@ TileAction = { { x = 32120, y = 32161, z = 7 }, { x = 32122, y = 32161, z = 7 }, { x = 32124, y = 32161, z = 7 }, - { x = 32125, y = 32161, z = 7 } - } + { x = 32125, y = 32161, z = 7 }, + }, }, -- Outer south path [50322] = { @@ -483,8 +483,8 @@ TileAction = { { x = 32134, y = 32181, z = 7 }, { x = 32135, y = 32181, z = 7 }, { x = 32136, y = 32181, z = 7 }, - { x = 32137, y = 32181, z = 7 } - } + { x = 32137, y = 32181, z = 7 }, + }, }, -- Outer east path limit [50323] = { @@ -502,8 +502,8 @@ TileAction = { { x = 32096, y = 32171, z = 7 }, { x = 32096, y = 32172, z = 7 }, { x = 32096, y = 32173, z = 7 }, - { x = 32096, y = 32174, z = 7 } - } + { x = 32096, y = 32174, z = 7 }, + }, }, -- Outer north troll cave limit [50324] = { @@ -517,16 +517,16 @@ TileAction = { { x = 32095, y = 32143, z = 7 }, { x = 32096, y = 32143, z = 7 }, { x = 32096, y = 32144, z = 7 }, - { x = 32096, y = 32145, z = 7 } - } + { x = 32096, y = 32145, z = 7 }, + }, }, -- North-west drawbridge limit [50325] = { itemId = false, itemPos = { { x = 32070, y = 32147, z = 6 }, - { x = 32070, y = 32148, z = 6 } - } + { x = 32070, y = 32148, z = 6 }, + }, }, -- North-west drawbridge, north exit limit [50326] = { @@ -536,8 +536,8 @@ TileAction = { { x = 32067, y = 32136, z = 7 }, { x = 32068, y = 32136, z = 7 }, { x = 32066, y = 32137, z = 7 }, - { x = 32068, y = 32137, z = 7 } - } + { x = 32068, y = 32137, z = 7 }, + }, }, -- Spider lair entrance [50327] = { @@ -558,8 +558,8 @@ TileAction = { { x = 32066, y = 32110, z = 7 }, { x = 32067, y = 32110, z = 7 }, { x = 32068, y = 32110, z = 7 }, - { x = 32069, y = 32110, z = 7 } - } + { x = 32069, y = 32110, z = 7 }, + }, }, -- Spider lair 3nd floor [50328] = { @@ -567,8 +567,8 @@ TileAction = { itemPos = { { x = 32001, y = 32108, z = 11 }, { x = 32002, y = 32108, z = 11 }, - { x = 32003, y = 32108, z = 11 } - } + { x = 32003, y = 32108, z = 11 }, + }, }, -- Wolf forest path [50329] = { @@ -577,8 +577,8 @@ TileAction = { { x = 32107, y = 32167, z = 7 }, { x = 32107, y = 32168, z = 7 }, { x = 32107, y = 32169, z = 7 }, - { x = 32107, y = 32170, z = 7 } - } + { x = 32107, y = 32170, z = 7 }, + }, }, -- Wolf forest north limit [50330] = { @@ -598,8 +598,8 @@ TileAction = { { x = 32116, y = 32149, z = 7 }, { x = 32117, y = 32149, z = 7 }, { x = 32118, y = 32149, z = 7 }, - { x = 32119, y = 32149, z = 7 } - } + { x = 32119, y = 32149, z = 7 }, + }, }, -- Wolf forest north-east limit [50331] = { @@ -619,8 +619,8 @@ TileAction = { { x = 32120, y = 32144, z = 7 }, { x = 32120, y = 32145, z = 7 }, { x = 32120, y = 32146, z = 7 }, - { x = 32120, y = 32147, z = 7 } - } + { x = 32120, y = 32147, z = 7 }, + }, }, -- War wolf den entrance [50332] = { @@ -634,8 +634,8 @@ TileAction = { { x = 32141, y = 32136, z = 7 }, { x = 32142, y = 32136, z = 7 }, { x = 32143, y = 32136, z = 7 }, - { x = 32144, y = 32136, z = 7 } - } + { x = 32144, y = 32136, z = 7 }, + }, }, -- War wolf den first floor [50333] = { @@ -648,8 +648,8 @@ TileAction = { { x = 32135, y = 32137, z = 8 }, { x = 32133, y = 32138, z = 8 }, { x = 32134, y = 32138, z = 8 }, - { x = 32135, y = 32138, z = 8 } - } + { x = 32135, y = 32138, z = 8 }, + }, }, -- War wolf den boost floor [50334] = { @@ -661,8 +661,8 @@ TileAction = { { x = 32116, y = 32131, z = 11 }, { x = 32116, y = 32132, z = 11 }, { x = 32116, y = 32133, z = 11 }, - { x = 32116, y = 32134, z = 11 } - } + { x = 32116, y = 32134, z = 11 }, + }, }, -- Academy entrance [50335] = { @@ -670,13 +670,13 @@ TileAction = { itemPos = { { x = 32096, y = 32200, z = 7 }, { x = 32097, y = 32200, z = 7 }, - { x = 32098, y = 32200, z = 7 } - } + { x = 32098, y = 32200, z = 7 }, + }, }, -- Academy low floor downstairs [50336] = { itemId = 417, - itemPos = { { x = 32096, y = 32191, z = 8 } } + itemPos = { { x = 32096, y = 32191, z = 8 } }, }, -- Academy library vault entrance [50337] = { @@ -684,13 +684,13 @@ TileAction = { itemPos = { { x = 32089, y = 32157, z = 9 }, { x = 32090, y = 32157, z = 9 }, - { x = 32091, y = 32157, z = 9 } - } + { x = 32091, y = 32157, z = 9 }, + }, }, -- Library vault downstairs [50338] = { itemId = 417, - itemPos = { { x = 32089, y = 32154, z = 10 } } + itemPos = { { x = 32089, y = 32154, z = 10 } }, }, -- Library vault room floor [50339] = { @@ -833,8 +833,8 @@ TileAction = { { x = 32087, y = 32154, z = 10 }, { x = 32088, y = 32154, z = 10 }, { x = 32090, y = 32154, z = 10 }, - { x = 32091, y = 32154, z = 10 } - } + { x = 32091, y = 32154, z = 10 }, + }, }, -- Academy library vault center [50340] = { @@ -842,18 +842,18 @@ TileAction = { itemPos = { { x = 32085, y = 32145, z = 10 }, { x = 32090, y = 32145, z = 10 }, - { x = 32091, y = 32145, z = 10 } - } + { x = 32091, y = 32145, z = 10 }, + }, }, -- Academy library vault near rune [50341] = { itemId = 423, - itemPos = { { x = 32083, y = 32143, z = 10 } } + itemPos = { { x = 32083, y = 32143, z = 10 } }, }, -- North-west drawbridge upstairs [50342] = { itemId = 4515, - itemPos = { { x = 32088, y = 32147, z = 6 } } + itemPos = { { x = 32088, y = 32147, z = 6 } }, }, -- Troll caves entrance [50343] = { @@ -864,18 +864,18 @@ TileAction = { { x = 32096, y = 32140, z = 7 }, { x = 32097, y = 32140, z = 7 }, { x = 32098, y = 32140, z = 7 }, - { x = 32099, y = 32140, z = 7 } - } + { x = 32099, y = 32140, z = 7 }, + }, }, -- Troll caves dug tunnel downstair [50344] = { itemId = 352, - itemPos = { { x = 32059, y = 32135, z = 10 } } + itemPos = { { x = 32059, y = 32135, z = 10 } }, }, -- Troll caves dug tunnel upstair [50345] = { itemId = 353, - itemPos = { { x = 32059, y = 32136, z = 9 } } + itemPos = { { x = 32059, y = 32136, z = 9 } }, }, -- Outer east limit [50346] = { @@ -900,8 +900,8 @@ TileAction = { { x = 32128, y = 32196, z = 7 }, { x = 32128, y = 32197, z = 7 }, { x = 32128, y = 32198, z = 7 }, - { x = 32129, y = 32198, z = 7 } - } + { x = 32129, y = 32198, z = 7 }, + }, }, -- Unholy crypt entrance [50347] = { @@ -910,24 +910,24 @@ TileAction = { { x = 32129, y = 32201, z = 7 }, { x = 32129, y = 32202, z = 7 }, { x = 32131, y = 32204, z = 7 }, - { x = 32132, y = 32204, z = 7 } - } + { x = 32132, y = 32204, z = 7 }, + }, }, -- Unholy crypt door entrance [50348] = { itemId = 499, itemPos = { { x = 32146, y = 32187, z = 9 }, - { x = 32147, y = 32187, z = 9 } - } + { x = 32147, y = 32187, z = 9 }, + }, }, -- Unholy crypt near sarcophagus [50349] = { itemId = false, itemPos = { { x = 32140, y = 32202, z = 10 }, - { x = 32140, y = 32203, z = 10 } - } + { x = 32140, y = 32203, z = 10 }, + }, }, -- Near north-west drawbridge [50350] = { @@ -936,13 +936,13 @@ TileAction = { { x = 32091, y = 32147, z = 7 }, { x = 32092, y = 32147, z = 7 }, { x = 32093, y = 32147, z = 7 }, - { x = 32094, y = 32147, z = 7 } - } + { x = 32094, y = 32147, z = 7 }, + }, }, -- North-west drawbridge south downstairs [50351] = { itemId = 4515, - itemPos = { { x = 32065, y = 32156, z = 7 } } + itemPos = { { x = 32065, y = 32156, z = 7 } }, }, -- Orc land entrance [50352] = { @@ -951,16 +951,16 @@ TileAction = { { x = 32002, y = 32152, z = 7 }, { x = 32003, y = 32152, z = 7 }, { x = 32004, y = 32152, z = 7 }, - { x = 32005, y = 32152, z = 7 } - } + { x = 32005, y = 32152, z = 7 }, + }, }, -- Wasp lair entrance [50353] = { itemId = 355, itemPos = { { x = 31999, y = 32142, z = 7 }, - { x = 32000, y = 32142, z = 7 } - } + { x = 32000, y = 32142, z = 7 }, + }, }, -- Academy downfloor trasure door entrance [50354] = { @@ -968,24 +968,24 @@ TileAction = { itemPos = { { x = 32108, y = 32190, z = 8 }, { x = 32109, y = 32190, z = 8 }, - { x = 32110, y = 32190, z = 8 } - } + { x = 32110, y = 32190, z = 8 }, + }, }, -- Orc fortress peeing area [50355] = { itemId = 194, itemPos = { { x = 31968, y = 32148, z = 7 }, - { x = 31969, y = 32148, z = 7 } - } + { x = 31969, y = 32148, z = 7 }, + }, }, -- Orc fortress entrance [50356] = { itemId = 194, itemPos = { { x = 31986, y = 32158, z = 7 }, - { x = 31986, y = 32159, z = 7 } - } + { x = 31986, y = 32159, z = 7 }, + }, }, -- Orc fortress near elite orc guard [50357] = { @@ -1004,21 +1004,21 @@ TileAction = { { x = 31979, y = 32152, z = 7 }, { x = 31980, y = 32152, z = 7 }, { x = 31981, y = 32152, z = 7 }, - { x = 31982, y = 32152, z = 7 } - } + { x = 31982, y = 32152, z = 7 }, + }, }, -- Orc fortress in front elite orc guard [50358] = { itemId = 194, itemPos = { { x = 31977, y = 32151, z = 7 }, - { x = 31977, y = 32152, z = 7 } - } + { x = 31977, y = 32152, z = 7 }, + }, }, -- Orc fortress interior [50359] = { itemId = 353, - itemPos = { { x = 31977, y = 32149, z = 8 } } + itemPos = { { x = 31977, y = 32149, z = 8 } }, }, -- Orc fortress interior kitchen [50360] = { @@ -1034,32 +1034,32 @@ TileAction = { { x = 31985, y = 32160, z = 8 }, { x = 31986, y = 32160, z = 8 }, { x = 31987, y = 32160, z = 8 }, - { x = 31988, y = 32160, z = 8 } - } + { x = 31988, y = 32160, z = 8 }, + }, }, -- Orc fortress interior south path [50361] = { itemId = false, itemPos = { { x = 31978, y = 32173, z = 8 }, - { x = 31979, y = 32173, z = 8 } - } + { x = 31979, y = 32173, z = 8 }, + }, }, -- Orc fortress interior near south downstair [50362] = { itemId = 351, itemPos = { { x = 31978, y = 32178, z = 8 }, - { x = 31979, y = 32178, z = 8 } - } + { x = 31979, y = 32178, z = 8 }, + }, }, -- Kraknaknork lair near room teleport [50363] = { itemId = false, itemPos = { { x = 31951, y = 32173, z = 10 }, - { x = 31951, y = 32174, z = 10 } - } + { x = 31951, y = 32174, z = 10 }, + }, }, -- Troll Sabotage Quest [50365] = { @@ -1070,61 +1070,61 @@ TileAction = { { x = 33241, y = 31772, z = 8 }, { x = 33231, y = 31765, z = 2 }, { x = 33231, y = 31762, z = 2 }, - { x = 33231, y = 31760, z = 2 } - } - } + { x = 33231, y = 31760, z = 2 }, + }, + }, } TileUnique = { -- Lions rock quest (gems tile) scripts/actions/other/gems [25006] = { itemId = 21441, - itemPos = { x = 33069, y = 32298, z = 9 } + itemPos = { x = 33069, y = 32298, z = 9 }, }, [25007] = { itemId = 21442, - itemPos = { x = 33069, y = 32302, z = 9 } + itemPos = { x = 33069, y = 32302, z = 9 }, }, [25008] = { itemId = 21440, - itemPos = { x = 33077, y = 32302, z = 9 } + itemPos = { x = 33077, y = 32302, z = 9 }, }, [25009] = { itemId = 21437, - itemPos = { x = 33077, y = 32298, z = 9 } + itemPos = { x = 33077, y = 32298, z = 9 }, }, [25010] = { itemId = 431, - itemPos = { x = 32225, y = 32268, z = 9 } + itemPos = { x = 32225, y = 32268, z = 9 }, }, -- The paradox tower quest [25011] = { itemId = 354, - itemPos = { x = 32497, y = 31889, z = 7 } + itemPos = { x = 32497, y = 31889, z = 7 }, }, [25012] = { itemId = 10145, - itemPos = { x = 32566, y = 31957, z = 1 } + itemPos = { x = 32566, y = 31957, z = 1 }, }, [25013] = { itemId = 431, - itemPos = { x = 32481, y = 31905, z = 7 } + itemPos = { x = 32481, y = 31905, z = 7 }, }, [25014] = { itemId = 353, - itemPos = { x = 32478, y = 31908, z = 7 } + itemPos = { x = 32478, y = 31908, z = 7 }, }, [25015] = { itemId = 353, - itemPos = { x = 32479, y = 31908, z = 7 } + itemPos = { x = 32479, y = 31908, z = 7 }, }, [25016] = { itemId = 2772, - itemPos = { x = 32479, y = 31905, z = 6 } + itemPos = { x = 32479, y = 31905, z = 6 }, }, [25017] = { itemId = 431, - itemPos = { x = 32476, y = 31900, z = 5 } + itemPos = { x = 32476, y = 31900, z = 5 }, }, -- Explorer Society Astral Portals -- Path: data\scripts\actions\quests\explorer_society\stone.lua @@ -1133,63 +1133,63 @@ TileUnique = { -- Port Hope [25018] = { itemId = 599, - itemPos = { x = 32665, y = 32736, z = 6 } + itemPos = { x = 32665, y = 32736, z = 6 }, }, -- Northport [25019] = { itemId = 599, - itemPos = { x = 32497, y = 31622, z = 6 } + itemPos = { x = 32497, y = 31622, z = 6 }, }, -- Liberty Bay [25020] = { itemId = 599, - itemPos = { x = 32358, y = 32807, z = 6 } + itemPos = { x = 32358, y = 32807, z = 6 }, }, -- Svarground [25021] = { itemId = 599, - itemPos = { x = 32321, y = 31137, z = 6 } + itemPos = { x = 32321, y = 31137, z = 6 }, }, -- The Rookie Guard Quest - Mission 05: Web of Terror -- Path: data\scripts\actions\quests\the_rookie_guard\mission05_web_terror.lua -- Spider lair entrance hole [25022] = { itemId = 12728, - itemPos = { x = 32051, y = 32110, z = 7 } + itemPos = { x = 32051, y = 32110, z = 7 }, }, -- Spider queen chamber hole [25023] = { itemId = 12728, - itemPos = { x = 32018, y = 32098, z = 11 } + itemPos = { x = 32018, y = 32098, z = 11 }, }, -- The Rookie Guard Quest - Mission 06: Run Like a Wolf -- Path: data\scripts\actions\quests\the_rookie_guard\mission06_run_like_wolf.lua -- War wolf den entrance hole [25024] = { itemId = 12728, - itemPos = { x = 32138, y = 32132, z = 7 } + itemPos = { x = 32138, y = 32132, z = 7 }, }, -- War wolf den fall tile [25025] = { itemId = 353, - itemPos = { x = 32138, y = 32132, z = 8 } + itemPos = { x = 32138, y = 32132, z = 8 }, }, -- War wolf den last floor fall tile [25026] = { itemId = 354, - itemPos = { x = 32106, y = 32130, z = 11 } + itemPos = { x = 32106, y = 32130, z = 11 }, }, -- War wolf den last floor ramp tile [25027] = { itemId = 7542, - itemPos = { x = 32147, y = 32125, z = 11 } + itemPos = { x = 32147, y = 32125, z = 11 }, }, -- The Rookie Guard Quest - Mission 09: Rock 'n Troll -- Path: data\scripts\actions\quests\the_rookie_guard\mission09_rock_troll.lua -- Troll caves dug tunnel hole [25028] = { itemId = 12728, - itemPos = { x = 32059, y = 32135, z = 9 } + itemPos = { x = 32059, y = 32135, z = 9 }, }, -- Remove/create item on stepIn -- Reserved uniques range from 29001/30000 @@ -1199,19 +1199,19 @@ TileUnique = { itemId = 353, itemPos = { x = 32770, y = 32282, z = 10 }, targetPos = { x = 32771, y = 32297, z = 10 }, - targetItem = 389 + targetItem = 389, }, -- Draconia quest [29002] = { itemId = 431, itemPos = { x = 32810, y = 31595, z = 5 }, targetPos = { x = 32796, y = 31594, z = 5 }, - targetItem = 1270 + targetItem = 1270, }, [29003] = { itemId = 431, itemPos = { x = 32794, y = 31595, z = 5 }, targetPos = { x = 32796, y = 31576, z = 5 }, - targetItem = 1270 - } + targetItem = 1270, + }, } diff --git a/data-otservbr-global/startup/tables/tile_pick.lua b/data-otservbr-global/startup/tables/tile_pick.lua index 3b3eb006a5b..f5eceea7e9a 100644 --- a/data-otservbr-global/startup/tables/tile_pick.lua +++ b/data-otservbr-global/startup/tables/tile_pick.lua @@ -13,7 +13,7 @@ TilePickAction = { { x = 32266, y = 31916, z = 12 }, { x = 32204, y = 31887, z = 14 }, { x = 32165, y = 31890, z = 14 }, - { x = 32162, y = 31921, z = 13 } - } - } + { x = 32162, y = 31921, z = 13 }, + }, + }, } diff --git a/data-otservbr-global/startup/tables/writeable.lua b/data-otservbr-global/startup/tables/writeable.lua index 44a4113c43d..5c555f51c82 100644 --- a/data-otservbr-global/startup/tables/writeable.lua +++ b/data-otservbr-global/startup/tables/writeable.lua @@ -22,7 +22,7 @@ The goblin - sneaky and devious, goblins steal everything that is not nailed dow The minotaur - a dreaded beast and fearsome fighter, the minotaur is a formidable foe for a young adventurer. Particular caution should be exercised when going to their lair underground, as they have some skilled archers and even some mages that may kill you very, very quickly. Other beasts - It is certain that other beasts live in the dungeons of our isle. But they are not numerous enough to be recognised yet. If you encounter any unknown beast it is certainly dangerous and a potential lethal enemy. Don't underestimate them. - ]] + ]], }, [2] = { containerId = 2435, @@ -42,7 +42,7 @@ The skeletons - Skeletons are living undead, rumoured to be the bodies of dead a The bat - Often encountered in caves and ruins, along with other creatures, sometimes undead. Being little stronger than a rat, bats are rather a nuisance than a threat to an experienced adventurer. Their attacks on humans mainly happen out of self-defence. Bats often form a large swarm which is slightly more dangerous to face than a single specimen. Bats can be found almost everywhere as long as there is some close-by dark place where they can breed and sleep. The rat - Whether humans brought this pest with them on the isle or whether rats are indigenous to every dark place in Tibia is anyone's guess. However, rats on Dawnport normally prefer to live underground and are mostly harmless, tending to destroy food supplies in cellars. They can become dangerous in greater numbers, though, to any badly equipped adventurer they corner. - ]] + ]], }, [3] = { containerId = 2435, @@ -58,7 +58,7 @@ The salamander - A common creature of the swamp and warm earth of the marshes, t The wasp - fast and deadly to the inexperienced, wasps will follow their enemy for quite a while, and their speed makes them dangerous, even more so in high numbers. Their sting hurts and can poison you, so make sure to finish a wasp off quickly when you encounter it. They can be found in warm areas such as woodlands, jungles or deserts; and if there is a heat source, in underground stone caves. The poison spider - Though only slightly tougher than an ordinary spider, this one can poison you. Try to avoid being bitten by one, as they usually live far from our base and you might not make it to our local healer in time. - ]] + ]], }, [4] = { containerId = 2436, @@ -74,7 +74,7 @@ The dawnfly - A close relative of the emerald damselfly found in the swamps of V The woodling - The woodlings could be the missing link between the swamplings and the haunted treelings. Half plant and half animal and at least partially intelligent, treelings love to ambush their prey and make use of the surroundings to drive it into a corner. Looking deceptively tree-like, a woodling will make a grab at any human that passes; supposedly to spice up its diet of rotting leaves and plants with something more juicy. Woodlings can slow down their enemies and are quite tough, which is why any inexperienced adventurer would do well to know the way back to the outpost in a hurry if venturing down to the woody plains. The Meadow strider - A giant bird that stalks the marshes and meadows, the meadow strider usually feeds on small insects and amphibians. Being very territorial but short-sighted, it will attack any supposed rival of its own size, which includes humans, and peck at them. Though they are nearly as tough as woodlings, there's good eating on a meadow strider, and they often contain swallowed gold coins and other useful stuff. - ]] + ]], }, [5] = { containerId = 2436, @@ -94,7 +94,7 @@ The deer - Deers are a fine supply for food and are non-agressive animals and tr The hare - Like deers, hares will flee upon sight and are an excellent source of food for any passing adventurer. They are a common sight in the meadows and forests of Tibia, though larger predators are never very far. The squirrel - Swift and impish, squirrels will run from any human they see. Hunters avoid preying on squirrels, as there is a legend that says that the giant immortal Squirrels who ate nuts from Crunor's blessed tree take bloody revenge on each and every killer of their descendants. Squirrels are found in woody areas all over Tibia. -]] +]], }, --The isle of the kings (need position) [6] = { @@ -105,7 +105,7 @@ The squirrel - Swift and impish, squirrels will run from any human they see. Hun Kazordoon, the hidden city In the blocklike Mountain, known as the big old one, the hidden city of kazordoon is nestled. Its the last refuge of the ancient race of dwarves. Hidden and heavily fortified it was the last stand of dwarvenhood in the wars of creation and the last hope of that race to adapt to and survive the new ages. The famous giant statue, known as colossus guards its entry, alhough the narrow valley makes it difficult to see that fortress-statue and admire its beauty. Kazordoon is known for its safety and masterful smithery throughout the lands. Since some generations the dwarven city (whose ruler claims a title that might be translated as 'emperor') is allied with the thaian kingdom. -]] +]], }, [7] = { containerId = 2437, @@ -115,7 +115,7 @@ Since some generations the dwarven city (whose ruler claims a title that might b Kazordoon, the hidden city In the blocklike Mountain, known as the big old one, the hidden city of kazordoon is nestled. Its the last refuge of the ancient race of dwarves. Hidden and heavily fortified it was the last stand of dwarvenhood in the wars of creation and the last hope of that race to adapt to and survive the new ages. The famous giant statue, known as colossus guards its entry, alhough the narrow valley makes it difficult to see that fortress-statue and admire its beauty. Kazordoon is known for its safety and masterful smithery throughout the lands. Since some generations the dwarven city (whose ruler claims a title that might be translated as 'emperor') is allied with the thaian kingdom. - ]] + ]], }, [8] = { containerId = 2437, @@ -134,7 +134,7 @@ Uman Zathroth regarded Fardos's undertakings thoughtfully. Uman was sagacious an Unfortunately, their combined efforts were hardly more successful. Just like before, everything Fardos and Uman created was swallowed by the void as soon as it came into existence, and the two gods sadly saw their creation run through their fingers like water through a sieve. On the other hand, Zathroth, who had been watching their efforts with suspicion, rejoiced. He ridiculed their efforts. However, his glee changed into surprise and anger when he found that something strange happened, something which perhaps Uman and Fardos did not expect themselves. To this day, nobody knows precisely what it was that caused it. Perhaps the power that had been spent lured another entity out of the void, or it might be that it simply awoke another divine entity from its slumber. Some even claim that in some mysterious way the power that had been spent by Uman and Fardos actually created a new entity. Whatever the truth may be, a new goddess stepped out of the void like a new-born mermaid from her shell. The amazed elder gods watched her divine beauty in awed admiration, for everything in her was perfect harmony. They agreed to call her Tibiasula. Zathroth, however, stood by and fumed with silent hate. But cunning as he was, he hid his resentment well and feigned to share the joy of the other elder gods. - ]] + ]], }, [9] = { containerId = 2437, @@ -149,7 +149,7 @@ As he grew up, Brog was pained by the fire burning inside him, until one day whe Zathroth watched Brog's experiments with great interest. So far he had not held his son in high esteem, but here was something for which he himself admittedly had little talent for. Since he did not understand the laws of life himself he knew that Brog's gift could prove to be a great asset. He called his son to him and told him to go on with his experiments, urging him to create something more terrifying and destructive than cyclopes. Even though these giants were ferocious and strong, they were not quite as destructive as he wanted them to be. In fact, due to their love of mining and smithing the cyclopes were a creative rather than a destructive race. Worse, they were not propagating fast enough to make them a real threat to creation. For this reason Brog went on to create trolls and goblins, races that were weaker than the cyclopes, but propagated much faster. However, his undisputed masterpiece were the orcs, a race of fearsome, single-minded warriors who lived only to expand and conquer. Soon they had spread all over Tibia, and they were the scourge of all that was alive. - ]] + ]], }, [10] = { containerId = 2435, @@ -160,7 +160,7 @@ The Minotaurs by Iregarn Pt. 1 The minotaurs claimed that they were once the marshals and favoured people of Blog, the raging one. In the wars over creation they were one of the most successful races. But as the war grew more and more fierce it were the wild and raging minotaurs that had to pay the worst blood toll. The berserker rage inherent to their race made them a formidable opponent but also very vulnerable. Though victorious in most battles, in the end the berserking warriors had to surrender to their wounds or were left crippled and executed and fed to Blogs lesser followers. Even worse, the raging minotaurs knew neither friend nor enemy. Brother slew brother, fathers slaughtered their sons in their rage. Then, one day a minotaur, named Tha'kull conquered his rage. He withdrew from battle and became a hermit. In his travels he met Akkor, the blind one. This minotaur was by fate not subjected to the rage inherent to the minotauren race and had aquired a tranquility and wisdom, unknown to his kind so far. Tha'Kull thaught the blind one how to improve his body and fortitude and Akkor in return teached the warrior how to improve his soul. He looked upon the world and for the first time in aeons a minotaurean warrior saw the world without hatred. He saw the beauty in things, simple and complex. He saw the harmony in creation and the place the living had in it. He also saw the place that was meant to be taken by the sentient beings among the living. And he went back to his people to teach. Never a warrior of the minotaurs had neglected his rage and even though he was cautious the angry berserker warlords would not allow the words he spoke to be heard by their people. -]] +]], }, [11] = { containerId = 2435, @@ -171,7 +171,7 @@ The Minotaurs by Iregarn Pt. 1 The minotaurs claimed that they were once the marshals and favoured people of Blog, the raging one. In the wars over creation they were one of the most successful races. But as the war grew more and more fierce it were the wild and raging minotaurs that had to pay the worst blood toll. The berserker rage inherent to their race made them a formidable opponent but also very vulnerable. Though victorious in most battles, in the end the berserking warriors had to surrender to their wounds or were left crippled and executed and fed to Blogs lesser followers. Even worse, the raging minotaurs knew neither friend nor enemy. Brother slew brother, fathers slaughtered their sons in their rage. Then, one day a minotaur, named Tha'kull conquered his rage. He withdrew from battle and became a hermit. In his travels he met Akkor, the blind one. This minotaur was by fate not subjected to the rage inherent to the minotauren race and had aquired a tranquility and wisdom, unknown to his kind so far. Tha'Kull thaught the blind one how to improve his body and fortitude and Akkor in return teached the warrior how to improve his soul. He looked upon the world and for the first time in aeons a minotaurean warrior saw the world without hatred. He saw the beauty in things, simple and complex. He saw the harmony in creation and the place the living had in it. He also saw the place that was meant to be taken by the sentient beings among the living. And he went back to his people to teach. Never a warrior of the minotaurs had neglected his rage and even though he was cautious the angry berserker warlords would not allow the words he spoke to be heard by their people. -]] +]], }, [12] = { containerId = 2437, @@ -179,7 +179,7 @@ He looked upon the world and for the first time in aeons a minotaurean warrior s --position = (Rookgaard Academy), text = [[ Orcs ARE intelligent. Though some dwarves mumble about a shared hivemind of the greenskins, there is no evidence for that. Orcs have speech and are capable to learn other humanoids language quite well ... if they want, what almost never is the case. They lack a written language though. Some of the more educated orcs use human letters to write down orcish texts. Its rumored that the orcs we encounter now and then are just barbarians of their own kind and that there is a more 'civilized' orcish culture somewhere. There are some clues that the orcs indeed had a written language, but the modern orcs is unable to read it as we are. -]] +]], }, [13] = { containerId = 2437, @@ -187,7 +187,7 @@ Orcs ARE intelligent. Though some dwarves mumble about a shared hivemind of the position = { x = 32062, y = 31889, z = 4 }, text = [[ Orcs ARE intelligent. Though some dwarves mumble about a shared hivemind of the greenskins, there is no evidence for that. Orcs have speech and are capable to learn other humanoids language quite well ... if they want, what almost never is the case. They lack a written language though. Some of the more educated orcs use human letters to write down orcish texts. Its rumored that the orcs we encounter now and then are just barbarians of their own kind and that there is a more 'civilized' orcish culture somewhere. There are some clues that the orcs indeed had a written language, but the modern orcs is unable to read it as we are. - ]] + ]], }, [14] = { containerId = 2435, @@ -196,7 +196,7 @@ Orcs ARE intelligent. Though some dwarves mumble about a shared hivemind of the text = [[ There are two kinds of spells: rune spells and spontaneous spells. Rune spells are cast on blank rune stones, which requires mana. Rune stones can easily be carried around and store the specific spell. It can be used at any time, and only some spells require further investment of mana. Spontaneous spells are cast in the heartbeat they are needed, and take effect instantly. Most of these are healing spells, but there are also aggressive spells, invisibility or shape change spells, and more. -]] +]], }, [15] = { containerId = 2435, @@ -210,7 +210,7 @@ There are two kinds of spells: rune spells, and instant spells. Rune spells are These can easily be carried around and store the specific spell. It can be used at any time, and only some require further investment of mana. Instant spells are cast in the heartbeat they are needed and take effect instantly. Some of these spells Instant Spells heal while others are agressive and some even have more astonishing effects, such as invisibility. - ]] + ]], }, [16] = { containerId = 2435, @@ -221,7 +221,7 @@ Magic by Puffels There are two kinds of spells: rune-spells, and spontaneous spells. Rune-spells are cast on blank runestones and some mana is used up in this proces. This stones can easily be carried around and store the specific spell. It can be used at any time, and only some require further investment of mana. Spontaneous spells are cased in the heartbeat they are needed and take effect instantly. Most of these spells are spells of healing but some of them are agressive and some even have more astonishing effectes, as invisibility, illusionary shapechange etc. -]] +]], }, [17] = { containerId = 2436, @@ -231,7 +231,7 @@ Spontaneous spells are cased in the heartbeat they are needed and take effect in Combat Tactics Most monsters are far more dangerous when you're attacked by more of them. Keep in mind that no more than two enemy attacks can be blocked at a time. Use this to your advantage and attack single monsters with help of other heroes. Don't get surrounded by monsters - that might be your death even if the monsters are not that powerful. -]] +]], }, [18] = { containerId = 2435, @@ -239,7 +239,7 @@ Most monsters are far more dangerous when you're attacked by more of them. Keep --position = (Rookgaard Libraries), text = [[ As we traveled through the dungeon tunnels we came to a big cave. In the light of our torches we saw several eyes glowing in the darknes, then the trolls attacked, silent as usual. We imediately dropped our torches and raised our shields to block the first attack, then we counterattacked. Soon the floor was wet with blood, ours and theirs. They were verry skilled in blocking our blows and I am sure with inferior weapons we would have hacked on this beasts for an eternity. -]] +]], }, [19] = { containerId = 2436, @@ -247,7 +247,7 @@ As we traveled through the dungeon tunnels we came to a big cave. In the light o position = { x = 32069, y = 31889, z = 4 }, text = [[ As we traveled through the dungeon tunnels we came to a big cave. In the light of our torches we saw several eyes glowing in the darknes, then the trolls attacked, silent as usual. We imediately dropped our torches and raised our shields to block the first attack, then we counterattacked. Soon the floor was wet with blood, ours and theirs. They were verry skilled in blocking our blows and I am sure with inferior weapons we would have hacked on this beasts for an eternity. - ]] + ]], }, [20] = { containerId = 2436, @@ -261,7 +261,7 @@ Tactics for close-ranged combat - Be careful while chasing an enemy: you might run into his allies or other monsters. - Target the closest enemy, or you'll become confused and might not be able to defend yourself against other attacks. - Different enemies require different tactics. While some are best to be fought in an agressive combat mode to finish them off quickly, you might want to defend yourself more against others. Choosing between your combat modes also depends on your equipment - play your strengths! -]] +]], }, [21] = { containerId = 2436, @@ -278,7 +278,7 @@ The underground city of Mintwallin The black city of skulls in Hellsgate The great lava falls in Hellsgate The pyramid city of Ankrahmun - ]] + ]], }, [22] = { containerId = 2436, @@ -295,7 +295,7 @@ The underground city of Mintwallin The black city of skulls in Hellsgate The great lava falls in Hellsgate The pyramid city of Ankrahmun - ]] + ]], }, [23] = { containerId = 2436, @@ -312,7 +312,7 @@ The underground city of Mintwallin The black city of skulls in Hellsgate The great lava falls in Hellsgate The pyramid city of Ankrahmun - ]] + ]], }, [24] = { itemId = 2831, @@ -323,7 +323,7 @@ Genesis VII, ii. Tibia's Renewal The humans have availed themselves well of this opportunity. Under the wise guidance of the Thaian kings, who were direct descendants of Banor, the race is living through a golden age. The arts and the sciences prosper, and many a thriving city has been founded. To be sure, the humans' expansion has met with fierce resistance, and in fact the dauntless heroes who still enter this world from the mysterious Portals of Souls are busy enough to fight the constant threat posed by all kinds of hostile creatures. But so far the peace has lasted, and under its protection the human race has finally asserted itself as the dominant species in Tibia. However, there are disquieting signs that this glorious era might slowly come to its end. For the old enemies have never been vanquished, and now it seems that they are growing increasingly restless. The fierce orcs are stirring once more, attacking human settlements and sometimes even major cities in vicious, well-coordinated attacks. The undead have again started to walk the land, striking fear into the hearts of the living. There are even disconcerting reports that the fearsome dragons who have lain dormant for centuries are again leaving their hidden lairs to prey. Worst of all, the humans, that curious race, have started bickering amongst themselves, and more than once tensions have led to armed conflicts. In the course of time, some humans even renounced the Thaian kings' rule and founded own cities and empires. It may be that this is yet another one of Zathroth's wicked ploys. It is well known that his most diabolic minions, the gruesome demons, are lurking in the shadows, biding their time. Who knows - perhaps Tibia is on the brink of another cataclysmic war, and a new twilight will fall on the world. Fate alone knows what the future has in store for Tibia. Let us all hope and pray that the humans' unity will not break just when it is needed most. - ]] + ]], }, [25] = { itemId = 2831, @@ -336,7 +336,7 @@ Uman looked with sadness at the damage his evil half had done to the creation Fa However, Uman's and Fardos's joint efforts did not remain entirely without consequence, for during the unsuccessful attempt to separate the double god a small part broke away from it. This tiny shard grew and expanded until it took shape and eventually became a sentient creature of its own. This was the hour Kirok the Mad was born. Owing to his peculiar ancestry this strange god has a twisted or, as some say, a schizophrenic nature. He inherited Uman's creative mind and his inquisitive nature, so that he eventually became the patron god of all those who follow the path of science and research. However, the one trait Kirok is really famous for is his twisted sense of humour. He adores bad taste and ingenious pranks, and this peculiar characteristic makes him the favourite of bards, jesters and of all other kinds of suspicious people. While Fardos and Uman were working hard on their spell, Zathroth's minions went on to lay waste to the elder gods' precious creation, and the devastation continued without pause. It seemed as though the whole world was doomed to perish. However, some of the lesser gods who were tired of just standing by while their beloved Tibia was ravaged. They decided to put up resistance against the reckless hordes. Bastesh the Mistress of the Sea created huge, mysterious creatures that were both elegant and fierce, and she populated her beloved ocean with them to make sure Zathroth's minions would never defile its pure waters. However, there was little she could do to help her cousins who lived on the dry land. Of all her creatures the only ones to survive on land were the dextrous and venomous snakes. Crunor and Nornur, too, created creatures to fight against Brog's and Zathroth's hordes: Crunor the Lord of the Trees created fierce wolves, while Nornur equipped his beloved spiders with deadly poison to make them more powerful. - ]] + ]], }, [26] = { containerId = 2435, @@ -344,19 +344,19 @@ While Fardos and Uman were working hard on their spell, Zathroth's minions went position = { x = 32061, y = 31894, z = 4 }, text = [[ This is written proof that Captain Plunderpurse gave away all the cursed gold to the little kiddies, bless his generous heart. No torture, extortion, cut off limbs, manipulation or embezzlement at all was involved in my testimony, I swear! And I am very thankful not to make the acquaintance of the Captain's pet sharks, lovely beasts though they are. Signed, Triomon Tangleweed, certifying notary. - ]] + ]], }, [27] = { containerId = 2435, itemId = 2826, - position = (Nagor), + position = Nagor, text = [[ Treasures of the Southern Isles Quite a few pirates hoarded up treasures in the past. It is known that pirates tend to hide their treasures on deserted islands for some unknown reason. They just bury them on some remote place and then forget about them. This similarity to the behaviour of squirrels was never scientifically verified. However, since pirates love to dress lightly they also love the south. Therefore, it is only natural that they hide their treasures there. Some of the southern isles are so popular among pirates that there is hardly any free space left to bury new treasure. If anyone ever is looking for treasures, then those isles are the best place to start with. - ]] + ]], }, [28] = { containerId = 2435, @@ -368,7 +368,7 @@ Treasures of the Southern Isles Quite a few pirates hoarded up treasures in the past. It is known that pirates tend to hide their treasures on deserted islands for some unknown reason. They just bury them on some remote place and then forget about them. This similarity to the behaviour of squirrels was never scientifically verified. However, since pirates love to dress lightly they also love the south. Therefore, it is only natural that they hide their treasures there. Some of the southern isles are so popular among pirates that there is hardly any free space left to bury new treasure. If anyone ever is looking for treasures, then those isles are the best place to start with. - ]] + ]], }, [29] = { containerId = 2435, @@ -380,7 +380,7 @@ Treasures of the Southern Isles Quite a few pirates hoarded up treasures in the past. It is known that pirates tend to hide their treasures on deserted islands for some unknown reason. They just bury them on some remote place and then forget about them. This similarity to the behaviour of squirrels was never scientifically verified. However, since pirates love to dress lightly they also love the south. Therefore, it is only natural that they hide their treasures there. Some of the southern isles are so popular among pirates that there is hardly any free space left to bury new treasure. If anyone ever is looking for treasures, then those isles are the best place to start with. - ]] + ]], }, [30] = { containerId = 2435, @@ -390,7 +390,7 @@ If anyone ever is looking for treasures, then those isles are the best place to The Great Sea Serpents The Sea Serpent is as huge as a house and can swallow a small ship in one bite. Its scales are almost impenetrable and its teeth, which are as big as a cyclops, are coated with a corrosive poison that will dissolve human flesh on touch. In their undersea lairs they hoard treasures that would make a dragons hoard look miserable. -]] +]], }, [31] = { containerId = 2435, @@ -400,7 +400,7 @@ The Sea Serpent is as huge as a house and can swallow a small ship in one bite. The Great Sea Serpents The Sea Serpent is as huge as a house and can swallow a small ship in one bite. Its scales are almost impenetrable and its teeth, which are as big as a cyclops, are coated with a corrosive poison that will dissolve human flesh on touch. In their undersea lairs they hoard treasures that would make a dragons hoard look miserable. - ]] + ]], }, [32] = { containerId = 2435, @@ -410,7 +410,7 @@ The Sea Serpent is as huge as a house and can swallow a small ship in one bite. The Great Sea Serpents The Sea Serpent is as huge as a house and can swallow a small ship in one bite. Its scales are almost impenetrable and its teeth, which are as big as a cyclops, are coated with a corrosive poison that will dissolve human flesh on touch. In their undersea lairs they hoard treasures that would make a dragons hoard look miserable. - ]] + ]], }, [33] = { containerId = 2435, @@ -420,17 +420,17 @@ The Sea Serpent is as huge as a house and can swallow a small ship in one bite. The Great Sea Serpents The Sea Serpent is as huge as a house and can swallow a small ship in one bite. Its scales are almost impenetrable and its teeth, which are as big as a cyclops, are coated with a corrosive poison that will dissolve human flesh on touch. In their undersea lairs they hoard treasures that would make a dragons hoard look miserable. - ]] + ]], }, [34] = { containerId = 2435, itemId = 2829, - position = (kharos), + position = kharos, text = [[ The Great Sea Serpents The Sea Serpent is as huge as a house and can swallow a small ship in one bite. Its scales are almost impenetrable and its teeth, which are as big as a cyclops, are coated with a corrosive poison that will dissolve human flesh on touch. In their undersea lairs they hoard treasures that would make a dragons hoard look miserable. - ]] + ]], }, [35] = { containerId = 2435, @@ -444,7 +444,7 @@ However, for all their efforts, the gods could not create creatures that were a For centuries they had propagated and expanded in silence, largely unnoticed by all other creatures. But now that Garsharak, the very first and strongest of their race, sent them into the world they knew neither restraint nor mercy. The orcish armies were routed by the relentless flames of magical dragon fire, and soon that proud though barbaric race, who until then had not known the meaning of the word defeat, was driven into the shelter of subterranean settlements. Their allies, the mighty cyclopes, fared no better. Although they won a number of notable victories using their powerful weapons and armour, they, too, had to yield to the superior power of the dreaded dragons. They joined their former allies, the orcs, and their weak cousins, the trolls, in their subterranean exile. Their proud cities that had been built in the course of centuries were burnt down to the ground, and their renowned forges were lost forever. Thus the dragons had taken over the rule of the land, but the war was by no means over. Their bitter enemies, cyclopes and orcs, resented what they felt was an imprisonment in the bowels of the earth, and they continued the fight from their subterranean hideouts. And in fact the dragons, who had already been weakened in the course of the previous battles, suffered serious losses. But now war also erupted among the former allies, as cyclopes and orcs competed for food and space in their subterranean abodes. And even though no side was strong enough to overcome the others the war went on with undiminished force, and all of the races suffered greatly in the epic struggle. The land was scattered with bodies, and while it seemed that life itself would be wiped from the face of Tibia the losses of all races that were involved daily grew in number. It was as if the living would drown in the bodies of the slain. -]] +]], }, [36] = { containerId = 2459, @@ -458,7 +458,7 @@ The elder gods watched as the cataclysmic battle went on. They felt no pity for Soon enough innumerable undead roamed the world. After all, Tibia was still covered by countless bodies of slain orcs, cyclopes and other creatures - the legacy of the many years of ceaseless war. These cadavers provided Urgith with the ideal recruitment pool, and he eagerly transformed all carcasses he could lay his hands into his gruesome servants. The gods watched in horror as a new scourge ravaged their beloved creation. They hurried to finally put their own initial plan into practice, and Uman united with earth in order to sire Toth the Warden of the Souls. It was to be his mission to safely guide the souls of the dead to the otherworld, where they would safely rest in the peace of an eternal dreamless slumber, while the worms, his faithful servants, swarmed out to devour their bodies that scattered the face of Tibia. But the damage had been done, and even though Toth and his servants did the best they could Urgith's ghastly creations continued to roam the land. All the other creatures, who were already greatly weakened by their endless wars, could put up little resistance to the new enemy who increased in strength with every loss they suffered. It looked as if Tibia was forever doomed to be a world that was inhabited by the living dead. The elder gods looked at what had happened to their world, and their hearts filled with sorrow and resentment. They knew that if they did not act now Tibia would be destined to become a grave, and so they started looking for a solution. Eventually they agreed to try to create a sentient race of their own, a race that would be strong enough to take up the fight against the hordes that ravaged their beloved world. And so they created a race and sent it into Tibia. But alas! Urgith's minions were too strong. Their race was defeated within a generation, and it was wiped from the face of Tibia. So Uman and Fardos created race after race, and race after race was overwhelmed by the vicious abominations that Urgith had released into the world. Most of these races disappeared from the face of Tibia forever, leaving little but melancholy legends and mysterious ruins. Today, this sad era which is commonly known as the Corpse War is largely shrouded in mystery, and the unfortunate races that were destroyed in it are now referred to as the ancients. - ]] + ]], }, [37] = { containerId = 2459, @@ -476,12 +476,12 @@ The inhabitants of the town Liberty Bay live on the numerous plantations. The to The Forbidden Islands to the north-west are dangerous not only because of the volcanoes that are found there but also due to frequent quara activity. Since there is no real reason to visit these islands, no regular shipping route was ever established. The Laguna Islands are quite often visited by passing ships to refresh their supply of water and food. Still the isles are too desolate to establish a settlement there. It is rumored that a small tribe of savages calls one of the isles its home. -]] +]], }, [38] = { containerId = 2459, itemId = 2825, - position = (Nagor), + position = Nagor, text = [[ The Shattered Isles @@ -494,7 +494,7 @@ The inhabitants of the town Liberty Bay live on the numerous plantations. The to The Forbidden Islands to the north-west are dangerous not only because of the volcanoes that are found there but also due to frequent quara activity. Since there is no real reason to visit these islands, no regular shipping route was ever established. The Laguna Islands are quite often visited by passing ships to refresh their supply of water and food. Still the isles are too desolate to establish a settlement there. It is rumored that a small tribe of savages calls one of the isles its home. - ]] + ]], }, [39] = { containerId = 2459, @@ -512,7 +512,7 @@ The inhabitants of the town Liberty Bay live on the numerous plantations. The to The Forbidden Islands to the north-west are dangerous not only because of the volcanoes that are found there but also due to frequent quara activity. Since there is no real reason to visit these islands, no regular shipping route was ever established. The Laguna Islands are quite often visited by passing ships to refresh their supply of water and food. Still the isles are too desolate to establish a settlement there. It is rumored that a small tribe of savages calls one of the isles its home. - ]] + ]], }, [40] = { containerId = 2459, @@ -530,7 +530,7 @@ The inhabitants of the town Liberty Bay live on the numerous plantations. The to The Forbidden Islands to the north-west are dangerous not only because of the volcanoes that are found there but also due to frequent quara activity. Since there is no real reason to visit these islands, no regular shipping route was ever established. The Laguna Islands are quite often visited by passing ships to refresh their supply of water and food. Still the isles are too desolate to establish a settlement there. It is rumored that a small tribe of savages calls one of the isles its home. - ]] + ]], }, [41] = { containerId = 2459, @@ -548,7 +548,7 @@ The inhabitants of the town Liberty Bay live on the numerous plantations. The to The Forbidden Islands to the north-west are dangerous not only because of the volcanoes that are found there but also due to frequent quara activity. Since there is no real reason to visit these islands, no regular shipping route was ever established. The Laguna Islands are quite often visited by passing ships to refresh their supply of water and food. Still the isles are too desolate to establish a settlement there. It is rumored that a small tribe of savages calls one of the isles its home. - ]] + ]], }, [42] = { containerId = 2459, @@ -566,7 +566,7 @@ The inhabitants of the town Liberty Bay live on the numerous plantations. The to The Forbidden Islands to the north-west are dangerous not only because of the volcanoes that are found there but also due to frequent quara activity. Since there is no real reason to visit these islands, no regular shipping route was ever established. The Laguna Islands are quite often visited by passing ships to refresh their supply of water and food. Still the isles are too desolate to establish a settlement there. It is rumored that a small tribe of savages calls one of the isles its home. -]] +]], }, [43] = { containerId = 2460, @@ -576,7 +576,7 @@ The Laguna Islands are quite often visited by passing ships to refresh their sup My travels. As the orcs approached I've hidden myself in the bushes near the lake. I did hardly dare to breath as they met only some inches from my nose. I thought my wild beating heart might betray me to this murderous beasts. I overheared the greenskined brutes. 'charach' (or so) one said and the other responded the same way, then they began to chat in their strange language, certainly talking about some gruesome plot against mankind. Talking they wandered away and after they vanished from my view I quickly got up and headed to Thais as fast as I could. -]] +]], }, [44] = { containerId = 2460, @@ -586,7 +586,7 @@ As the orcs approached I've hidden myself in the bushes near the lake. I did har My travels. As the orcs approached I've hidden myself in the bushes near the lake. I did hardly dare to breath as they met only some inches from my nose. I thought my wild beating heart might betray me to this murderous beasts. I overheared the greenskined brutes. 'charach' (or so) one said and the other responded the same way, then they began to chat in their strange language, certainly talking about some gruesome plot against mankind. Talking they wandered away and after they vanished from my view I quickly got up and headed to Thais as fast as I could. - ]] + ]], }, [45] = { containerId = 2460, @@ -596,7 +596,7 @@ As the orcs approached I've hidden myself in the bushes near the lake. I did har Tibiantis: Fact and Fiction In the light of progress made my modern science the tales of Tibiantis can be cheerfully disregarded as blatant myths. The author of this questionable history merely drew upon several myths and mixed them together to create a tale plausible to those given to believe such romantic nonsense. The recently discovered, or more accurately, recently rediscovered, city of Yalahar is very obviously a major inspiration for the story of Tibiantis. Aspects of the story can be found in actual fact in Yalahar - the city itself is huge, and also extended its borders beyond the land into the sea, and judging from what can be found there, was most definitely at some point in its past a city that was home to great wonders, whose inhabitants were in possession of great knowledge. However, one of the great mysteries of Yalahar is whether in actual fact those that live there are even human or another race, until recently unknown amongst the Tibian civilisations. The aspect of the story of Tibiantis referring to the downfall of a civilisation could be influenced by many different myths. One such source could be based upon the discoveries made far to the North of Tibia which suggest the possibility of a civilisation that was wiped out by an as yet unknown catastrophe of cataclysmic proportions. Equally, to the extreme south of Tibia can be found the Shattered Isles. These Isles were so named with good reason - geological studies conducted by the Explorers' Society reveal that these isles did not so much sink but were blasted by a phenomenal explosion of some kind. Relics found upon the Isles also hint that they were once populated by a great and most likely advanced civilisation. It is the sad fate of these isles to be the home of the infamous Quara. It is these twisted creatures who probably provide the origin of the myth's fish people. In summary, I believe I have gathered enough proof here to dispell any reason for believing the tale of Tibiantis, and have proven it to be nothing but a conglomeration of ancient stories and legends which an overly ambitious and half informed so-called historian has put together into a new myth of his own making, in order to gain cheap fame by hoodwinking a gullible and uninformed public. -]] +]], }, [46] = { containerId = 2460, @@ -606,7 +606,7 @@ In the light of progress made my modern science the tales of Tibiantis can be ch Tibiantis: Fact and Fiction In the light of progress made my modern science the tales of Tibiantis can be cheerfully disregarded as blatant myths. The author of this questionable history merely drew upon several myths and mixed them together to create a tale plausible to those given to believe such romantic nonsense. The recently discovered, or more accurately, recently rediscovered, city of Yalahar is very obviously a major inspiration for the story of Tibiantis. Aspects of the story can be found in actual fact in Yalahar - the city itself is huge, and also extended its borders beyond the land into the sea, and judging from what can be found there, was most definitely at some point in its past a city that was home to great wonders, whose inhabitants were in possession of great knowledge. However, one of the great mysteries of Yalahar is whether in actual fact those that live there are even human or another race, until recently unknown amongst the Tibian civilisations. The aspect of the story of Tibiantis referring to the downfall of a civilisation could be influenced by many different myths. One such source could be based upon the discoveries made far to the North of Tibia which suggest the possibility of a civilisation that was wiped out by an as yet unknown catastrophe of cataclysmic proportions. Equally, to the extreme south of Tibia can be found the Shattered Isles. These Isles were so named with good reason - geological studies conducted by the Explorers' Society reveal that these isles did not so much sink but were blasted by a phenomenal explosion of some kind. Relics found upon the Isles also hint that they were once populated by a great and most likely advanced civilisation. It is the sad fate of these isles to be the home of the infamous Quara. It is these twisted creatures who probably provide the origin of the myth's fish people. In summary, I believe I have gathered enough proof here to dispell any reason for believing the tale of Tibiantis, and have proven it to be nothing but a conglomeration of ancient stories and legends which an overly ambitious and half informed so-called historian has put together into a new myth of his own making, in order to gain cheap fame by hoodwinking a gullible and uninformed public. - ]] + ]], }, [47] = { containerId = 2460, @@ -616,7 +616,7 @@ In the light of progress made my modern science the tales of Tibiantis can be ch Tibiantis: Fact and Fiction In the light of progress made my modern science the tales of Tibiantis can be cheerfully disregarded as blatant myths. The author of this questionable history merely drew upon several myths and mixed them together to create a tale plausible to those given to believe such romantic nonsense. The recently discovered, or more accurately, recently rediscovered, city of Yalahar is very obviously a major inspiration for the story of Tibiantis. Aspects of the story can be found in actual fact in Yalahar - the city itself is huge, and also extended its borders beyond the land into the sea, and judging from what can be found there, was most definitely at some point in its past a city that was home to great wonders, whose inhabitants were in possession of great knowledge. However, one of the great mysteries of Yalahar is whether in actual fact those that live there are even human or another race, until recently unknown amongst the Tibian civilisations. The aspect of the story of Tibiantis referring to the downfall of a civilisation could be influenced by many different myths. One such source could be based upon the discoveries made far to the North of Tibia which suggest the possibility of a civilisation that was wiped out by an as yet unknown catastrophe of cataclysmic proportions. Equally, to the extreme south of Tibia can be found the Shattered Isles. These Isles were so named with good reason - geological studies conducted by the Explorers' Society reveal that these isles did not so much sink but were blasted by a phenomenal explosion of some kind. Relics found upon the Isles also hint that they were once populated by a great and most likely advanced civilisation. It is the sad fate of these isles to be the home of the infamous Quara. It is these twisted creatures who probably provide the origin of the myth's fish people. In summary, I believe I have gathered enough proof here to dispell any reason for believing the tale of Tibiantis, and have proven it to be nothing but a conglomeration of ancient stories and legends which an overly ambitious and half informed so-called historian has put together into a new myth of his own making, in order to gain cheap fame by hoodwinking a gullible and uninformed public. - ]] + ]], }, [48] = { containerId = 2460, @@ -625,7 +625,7 @@ In the light of progress made my modern science the tales of Tibiantis can be ch text = [[ You can not even imagine how old I am. In your wildest dreams you won't see the things I have seen. I am the last of my race and even though I am several centuries old I am not immortal and will eventually die. I fear that day. Not for me - I am weary and I don't care much about if I'm alive or dead. But I fear for all these memories that will die with me. For all those who no one will remember anymore. Words can't truly preserve their essence so I will leave no books or stone tablets. If I die, everything I have witnessed will die with me as if it has never existed. I was there when Rorak slew Tingil at the stairs of the seven temples. I was there as Riik led his peaceloving people to the far north to find refuge from the war. I was there to witness the betrayal of Asric for the whims of a female that was long dead by then. I fought with the last Frdai a futile battle on the plains of Weskurt against the unseen legion. I witnessed Ss'rar making his move on ascension to become the serpent god. I watched the first elves struggling to form a nation with the help of the lightbearers. It was me who assisted the great calculator to assemble the bonelords language. And you come here to this mountain and ask me how to win the heart of some shepherdess? This world has become a ridiculous mockery. -]] +]], }, [49] = { containerId = 2460, @@ -634,7 +634,7 @@ Words can't truly preserve their essence so I will leave no books or stone table text = [[ You can not even imagine how old I am. In your wildest dreams you won't see the things I have seen. I am the last of my race and even though I am several centuries old I am not immortal and will eventually die. I fear that day. Not for me - I am weary and I don't care much about if I'm alive or dead. But I fear for all these memories that will die with me. For all those who no one will remember anymore. Words can't truly preserve their essence so I will leave no books or stone tablets. If I die, everything I have witnessed will die with me as if it has never existed. I was there when Rorak slew Tingil at the stairs of the seven temples. I was there as Riik led his peaceloving people to the far north to find refuge from the war. I was there to witness the betrayal of Asric for the whims of a female that was long dead by then. I fought with the last Frdai a futile battle on the plains of Weskurt against the unseen legion. I witnessed Ss'rar making his move on ascension to become the serpent god. I watched the first elves struggling to form a nation with the help of the lightbearers. It was me who assisted the great calculator to assemble the bonelords language. And you come here to this mountain and ask me how to win the heart of some shepherdess? This world has become a ridiculous mockery. - ]] + ]], }, [50] = { containerId = 2460, @@ -643,7 +643,7 @@ Words can't truly preserve their essence so I will leave no books or stone table text = [[ The Lighthouse in the Middle of Nowhere Sailors claim to have travelled as far as the end of the world where the water pours down into nothingness. Although it is easily recognizable during daylight it poses a special threat at night. To make matters worse, a spooky lighthouse sometimes appears out of nowhere to lure ships over the edge of the world. Whether it is really a lighthouse or some other source of light differs from story to story and remains to be determined. -]] +]], }, [51] = { containerId = 2460, @@ -652,12 +652,12 @@ Sailors claim to have travelled as far as the end of the world where the water p text = [[ The Lighthouse in the Middle of Nowhere Sailors claim to have travelled as far as the end of the world where the water pours down into nothingness. Although it is easily recognizable during daylight it poses a special threat at night. To make matters worse, a spooky lighthouse sometimes appears out of nowhere to lure ships over the edge of the world. Whether it is really a lighthouse or some other source of light differs from story to story and remains to be determined. - ]] + ]], }, [52] = { itemId = 11441, position = { x = 32075, y = 31898, z = 4 }, - text = "Personal log book of Mr Morris. (The following lines are written in a code that you cannot make out. It seems Mr Morris is a very distrustful person.)" + text = "Personal log book of Mr Morris. (The following lines are written in a code that you cannot make out. It seems Mr Morris is a very distrustful person.)", }, [53] = { itemId = 2824, @@ -666,7 +666,7 @@ Sailors claim to have travelled as far as the end of the world where the water p The ......... Some of he ancients formed .......amlands. They build mighty fortresses to ........................, conscious or not. It was then, when the mysteri............... and his anger shook the foundation of .....................................awakened screaming in fear and pain. And after the ................................................................................ were gone! All of them with all ..........................................................ost their best men in theese days and never recovered from the ........................................... for the other ancients and so the time of the first dreammasters ended. From this time on ............. manipulate little of the matter of the dreamlands to ................................................. others in their .................... and prophecy, but not to .......... -]] +]], }, [54] = { containerId = 2460, @@ -676,14 +676,14 @@ From this time on ............. manipulate little of the matter of the dreamland The ......... Some of he ancients formed .......amlands. They build mighty fortresses to ........................, conscious or not. It was then, when the mysteri............... and his anger shook the foundation of .....................................awakened screaming in fear and pain. And after the ................................................................................ were gone! All of them with all ..........................................................ost their best men in theese days and never recovered from the ........................................... for the other ancients and so the time of the first dreammasters ended. From this time on ............. manipulate little of the matter of the dreamlands to ................................................. others in their .................... and prophecy, but not to .......... - ]] + ]], }, [55] = { itemId = 639, position = { x = 32070, y = 31900, z = 4 }, text = [[ (It is covered with a strange language that you cannot make out.) - ]] + ]], }, [56] = { itemId = 2832, @@ -694,13 +694,13 @@ From this time on ............. manipulate little of the matter of the dreamland The elder gods looked at what had happened to their world, and their hearts filled with sorrow and resentment. They knew that if they did not act now Tibia would be destined to become a grave, and so they started looking for a solution. Eventually they agreed to try to create a sentient race of their own, a race that would be strong enough to take up the fight against the hordes that ravaged their beloved world. And so they created a race and sent it into Tibia. But alas! Urgith's minions were too strong. Their race was defeated within a generation, and it was wiped from the face of Tibia. So Uman and Fardos created race after race, and race after race was overwhelmed by the vicious abominations that Urgith had released into the world. Most of these races disappeared from the face of Tibia forever, leaving little but melancholy legends and mysterious ruins. Today, this sad era which is commonly known as the Corpse War is largely shrouded in mystery, and the unfortunate races that were destroyed in it are now referred to as the Ancients. ... - ]] + ]], }, [57] = { containerId = 2460, itemId = 2829, position = { x = 32052, y = 31896, z = 6 }, - text = "Cooking Recipes for the Wildlife (excepting Squirrels!), by Richard" + text = "Cooking Recipes for the Wildlife (excepting Squirrels!), by Richard", }, [58] = { containerId = 2460, @@ -712,7 +712,7 @@ V. iii, The Age of Chaos However, not all of the ancients were eradicated in the fierce struggle. At least two of the races created by the elder gods in the course of this epic struggle somehow managed to escape destruction and to survive until today. One of them was the elves, delicate creatures who could handle bows and musical instruments with equal skill. The other was the dwarfs, a stout race of gifted miners and smiths. Both of these races fought bravely, but both of them had to yield to the vicious power of their enemies, and it was only by fleeing into safe places of refuge that they managed to survive. The elves after many hardships sought shelter in the unfathomable depths of the forests, while the dwarfs barricaded themselves in their impenetrable fortresses deep in Tibia's mountains. There, these races waited for better times, bitterly deploring the cruel fate that had sent them into this dreadful world. But at least they had survived. All the other ancient races were seemingly sentenced to oblivion, although it is occasionally claimed that there are other survivors. For all their strength, these races had one important flaw in common: They lacked flexibility. And this proved to be fatal in the war against the relentless enemy they were facing. Those who were not annihilated succumbed to Zathroth's temptations. More than one of the ancients fell for Zathroth's cunning promises of power and knowledge, and legend has it that the wrathful elder gods brutally punished many of them for their treachery. There is even a persistent theory that some of these ancients later on were formed by the devious Zathroth into the very first demons. Be that as it may, all the ancients failed to live up to their creators' expectations: One by one they were overwhelmed by the enemy, and still the hordes walked the world. But the elder gods had learnt from their mistakes. Their next creation was to be well suited for the task. And they called them the humans. - ]] + ]], }, [59] = { containerId = 2460, @@ -727,7 +727,7 @@ The Gods gave their gifts freely, but bestowed them not on all creatures alike. But only the more intelligent beings - and of those, only a select few - possess the art of making powerful concoctions that enhance their faculties. The humble woodman or wanderer will never be able to fulfil the complex rites, or even grasp the concept, of the trimagical umbralistic principle of the equinox formula that is crucial to the craft of magical potions. But still, they can drink, and appreciate, the brews we make to keep a warrior's body alive in a fight, the mage's mana when drained, the paladin's spirit when they need to gather holy force. ... (you lose interest and close the book) - ]] + ]], }, [60] = { -- Hiding the Amulet (Dawnport quest) @@ -749,7 +749,7 @@ To any adventurer friend: ... shovel... beach... Signed Dormovo the Impetuous - ]] + ]], }, [61] = { itemId = 2819, @@ -759,62 +759,62 @@ What I thought to be digging men are in fact strange green creatures with many a They did not attack me yet, although I am sure they can sense me. Who knows, maybe they have no interest in me, and I can use their tunnels to get out of here? I will not attack them, unless I have to defend myself. I stopped counting the days, because I lost all feeling for time down here. -Oh, how I long to see humans again!]] +Oh, how I long to see humans again!]], }, [62] = { itemId = 2819, position = { x = 33063, y = 31624, z = 15 }, - text = "Buried forever that he never shall return. Don't remove this seal or bad things may happen." - } + text = "Buried forever that he never shall return. Don't remove this seal or bad things may happen.", + }, } SignTable = { [1] = { itemId = 2012, itemPos = { x = 32073, y = 31936, z = 7 }, - text = "No come near! Goblin home! Humans leave!" + text = "No come near! Goblin home! Humans leave!", }, [2] = { itemId = 8007, itemPos = { x = 32053, y = 31886, z = 6 }, text = "Sorcerers of Tibia, use the power of the elements to hunt down your foes and strike \z - fear in the heart of your enemies!" + fear in the heart of your enemies!", }, [3] = { itemId = 2104, itemPos = { x = 32061, y = 31886, z = 6 }, - text = "Paladins of Tibia, arm yourselves and deal merciless death to all that is evil!" + text = "Paladins of Tibia, arm yourselves and deal merciless death to all that is evil!", }, [4] = { itemId = 8008, itemPos = { x = 32067, y = 31886, z = 6 }, - text = "Knights of Tibia, gird yourselves to combat evil and to protect the innocent!" + text = "Knights of Tibia, gird yourselves to combat evil and to protect the innocent!", }, [5] = { itemId = 7592, itemPos = { x = 32075, y = 31886, z = 6 }, - text = "Druids of Tibia, take up your rod to hunt down evil and heal the wounds of the world!" + text = "Druids of Tibia, take up your rod to hunt down evil and heal the wounds of the world!", }, [6] = { itemId = 2597, itemPos = { x = 32056, y = 31890, z = 6 }, - text = "Alchemical fluid generator machine. Caution - random effects!" + text = "Alchemical fluid generator machine. Caution - random effects!", }, [7] = { itemId = 2031, itemPos = { x = 32064, y = 31891, z = 6 }, - text = "Rise, Heroes!" + text = "Rise, Heroes!", }, [8] = { itemId = 2602, itemPos = { x = 32057, y = 31893, z = 6 }, text = "Careful with the dustbin! Every item you throw into it will be PERMANENTLY deleted. \z - So consider carefully if you really, really want to delete an item before you lay it on the dustbin." + So consider carefully if you really, really want to delete an item before you lay it on the dustbin.", }, [9] = { itemId = 2024, itemPos = { x = 32062, y = 31894, z = 3 }, - text = "Southern Trade Room" + text = "Southern Trade Room", }, [10] = { itemId = 1982, @@ -822,7 +822,7 @@ SignTable = { text = [[ No treasures here you fools! Leave the grave of my master alone or feel my wrath! - ]] + ]], }, [11] = { itemId = 134, @@ -833,31 +833,31 @@ One day you will see from your place in heaven that I was right. I AM NOT MAD! And it was not my fault! It's your own fault that you are dead now. Not mine! - ]] + ]], }, [12] = { itemId = 2012, itemPos = { x = 32477, y = 31904, z = 4 }, - text = "Room of Sacrifice" + text = "Room of Sacrifice", }, [13] = { itemId = 2027, itemPos = { x = 32476, y = 31900, z = 3 }, - text = "Cedric, the white knight" + text = "Cedric, the white knight", }, [14] = { itemId = 2027, itemPos = { x = 32481, y = 31900, z = 3 }, - text = "Tristan, the black knight" + text = "Tristan, the black knight", }, [15] = { itemId = 2012, itemPos = { x = 33044, y = 32067, z = 12 }, - text = "DO NOT ENTER!" + text = "DO NOT ENTER!", }, [16] = { itemId = 12783, itemPos = { x = 32205, y = 32883, z = 7 }, - text = "DANGER. Quara sighted below. Experienced adventurers only! Do not swim into a water channel unless you are prepared to meet your death!" - } + text = "DANGER. Quara sighted below. Experienced adventurers only! Do not swim into a water channel unless you are prepared to meet your death!", + }, } diff --git a/data/events/scripts/creature.lua b/data/events/scripts/creature.lua index 184f6d50a96..99d9f189d01 100644 --- a/data/events/scripts/creature.lua +++ b/data/events/scripts/creature.lua @@ -43,7 +43,9 @@ function Creature:onTargetCombat(target) local protectionStorage = target:getStorageValue(Global.Storage.CombatProtectionStorage) if target:getIp() == 0 then -- If player is disconnected, monster shall ignore to attack the player - if target:isPzLocked() then return true end + if target:isPzLocked() then + return true + end if protectionStorage <= 0 then addEvent(removeCombatProtection, 30 * 1000, target.uid) target:setStorageValue(Global.Storage.CombatProtectionStorage, 1) @@ -61,8 +63,7 @@ function Creature:onTargetCombat(target) end end - if ((target:isMonster() and self:isPlayer() and target:getMaster() == self) - or (self:isMonster() and target:isPlayer() and self:getMaster() == target)) then + if (target:isMonster() and self:isPlayer() and target:getMaster() == self) or (self:isMonster() and target:isPlayer() and self:getMaster() == target) then return RETURNVALUE_YOUMAYNOTATTACKTHISCREATURE end @@ -107,13 +108,12 @@ function Creature:onChangeOutfit(outfit) return true end -function Creature:onDrainHealth(attacker, typePrimary, damagePrimary, - typeSecondary, damageSecondary, colorPrimary, colorSecondary) - if (not self) then +function Creature:onDrainHealth(attacker, typePrimary, damagePrimary, typeSecondary, damageSecondary, colorPrimary, colorSecondary) + if not self then return typePrimary, damagePrimary, typeSecondary, damageSecondary, colorPrimary, colorSecondary end - if (not attacker) then + if not attacker then return typePrimary, damagePrimary, typeSecondary, damageSecondary, colorPrimary, colorSecondary end diff --git a/data/events/scripts/monster.lua b/data/events/scripts/monster.lua index dc6d3fdfe94..ea991672854 100644 --- a/data/events/scripts/monster.lua +++ b/data/events/scripts/monster.lua @@ -12,8 +12,7 @@ end local function checkItemType(itemId) local itemType = ItemType(itemId):getType() -- Based on enum ItemTypes_t - if (itemType > 0 and itemType < 4) or itemType == 7 or itemType == 8 or - itemType == 11 or itemType == 13 or (itemType > 15 and itemType < 22) then + if (itemType > 0 and itemType < 4) or itemType == 7 or itemType == 8 or itemType == 11 or itemType == 13 or (itemType > 15 and itemType < 22) then return true end return false diff --git a/data/events/scripts/player.lua b/data/events/scripts/player.lua index de74ca3d82a..a93ffe80ea3 100644 --- a/data/events/scripts/player.lua +++ b/data/events/scripts/player.lua @@ -211,10 +211,10 @@ function Player:onLookInBattleList(creature, distance) local description = "You see " .. creature:getDescription(distance) if creature:isMonster() then local master = creature:getMaster() - local summons = { 'sorcerer familiar', 'knight familiar', 'druid familiar', 'paladin familiar' } + local summons = { "sorcerer familiar", "knight familiar", "druid familiar", "paladin familiar" } if master and table.contains(summons, creature:getName():lower()) then - description = description .. ' (Master: ' .. master:getName() .. '). \z - It will disappear in ' .. getTimeInWords(master:getStorageValue(Global.Storage.FamiliarSummon) - os.time()) + description = description .. " (Master: " .. master:getName() .. "). \z + It will disappear in " .. getTimeInWords(master:getStorageValue(Global.Storage.FamiliarSummon) - os.time()) end end if self:getGroup():getAccess() then @@ -225,11 +225,7 @@ function Player:onLookInBattleList(creature, distance) description = string.format(str, description, creature:getHealth(), creature:getMaxHealth()) .. "." local position = creature:getPosition() - description = string.format( - "%s\nPosition: %d, %d, %d", - description, position.x, position.y, position.z - - ) + description = string.format("%s\nPosition: %d, %d, %d", description, position.x, position.y, position.z) if creature:isPlayer() then description = string.format("%s\nIP: %s", description, Game.convertIpToString(creature:getIp())) @@ -252,8 +248,7 @@ function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, end -- No move parcel very heavy - if CONTAINER_WEIGHT_CHECK and ItemType(item:getId()):isContainer() - and item:getWeight() > CONTAINER_WEIGHT_MAX then + if CONTAINER_WEIGHT_CHECK and ItemType(item:getId()):isContainer() and item:getWeight() > CONTAINER_WEIGHT_MAX then self:sendCancelMessage("Your cannot move this item too heavy.") return false end @@ -270,8 +265,7 @@ function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, -- SSA exhaust local exhaust = {} - if toPosition.x == CONTAINER_POSITION and toPosition.y == CONST_SLOT_NECKLACE - and item:getId() == ITEM_STONE_SKIN_AMULET then + if toPosition.x == CONTAINER_POSITION and toPosition.y == CONST_SLOT_NECKLACE and item:getId() == ITEM_STONE_SKIN_AMULET then local pid = self:getId() if exhaust[pid] then self:sendCancelMessage(RETURNVALUE_YOUAREEXHAUSTED) @@ -385,21 +379,21 @@ function Player:onItemMoved(item, count, fromPosition, toPosition, fromCylinder, if self:getPosition():isInRange(frompos, topos) and item:getId() == 23729 then local tileBoss = Tile(toPosition) if tileBoss and tileBoss:getTopCreature() and tileBoss:getTopCreature():isMonster() then - if tileBoss:getTopCreature():getName():lower() == 'the remorseless corruptor' then + if tileBoss:getTopCreature():getName():lower() == "the remorseless corruptor" then tileBoss:getTopCreature():addHealth(-17000) tileBoss:getTopCreature():remove() - local monster = Game.createMonster('The Corruptor of Souls', toPosition) + local monster = Game.createMonster("The Corruptor of Souls", toPosition) if not monster then return false end removeItem = true - monster:registerEvent('CheckTile') - if Game.getStorageValue('healthSoul') > 0 then - monster:addHealth(-(monster:getHealth() - Game.getStorageValue('healthSoul'))) + monster:registerEvent("CheckTile") + if Game.getStorageValue("healthSoul") > 0 then + monster:addHealth(-(monster:getHealth() - Game.getStorageValue("healthSoul"))) end - Game.setStorageValue('CheckTile', os.time() + 30) - elseif tileBoss:getTopCreature():getName():lower() == 'the corruptor of souls' then - Game.setStorageValue('CheckTile', os.time() + 30) + Game.setStorageValue("CheckTile", os.time() + 30) + elseif tileBoss:getTopCreature():getName():lower() == "the corruptor of souls" then + Game.setStorageValue("CheckTile", os.time() + 30) removeItem = true end end @@ -440,8 +434,7 @@ function Player:onReportRuleViolation(targetName, reportType, reportReason, comm local file = io.open(string.format("%s/reports/players/%s-%s-%d.txt", CORE_DIRECTORY, name, targetName, reportType), "a") if not file then - self:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "There was an error when processing your report, please contact a gamemaster.") + self:sendTextMessage(MESSAGE_EVENT_ADVANCE, "There was an error when processing your report, please contact a gamemaster.") return end @@ -457,8 +450,15 @@ function Player:onReportRuleViolation(targetName, reportType, reportReason, comm end io.write("------------------------------\n") io.close(file) - self:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("Thank you for reporting %s. Your report \z - will be processed by %s team as soon as possible.", targetName, configManager.getString(configKeys.SERVER_NAME))) + self:sendTextMessage( + MESSAGE_EVENT_ADVANCE, + string.format( + "Thank you for reporting %s. Your report \z + will be processed by %s team as soon as possible.", + targetName, + configManager.getString(configKeys.SERVER_NAME) + ) + ) return end @@ -467,8 +467,7 @@ function Player:onReportBug(message, position, category) local file = io.open(string.format("%s/reports/bugs/%s/report.txt", CORE_DIRECTORY, name), "a") if not file then - self:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "There was an error when processing your report, please contact a gamemaster.") + self:sendTextMessage(MESSAGE_EVENT_ADVANCE, "There was an error when processing your report, please contact a gamemaster.") return true end @@ -483,8 +482,7 @@ function Player:onReportBug(message, position, category) io.write("Comment: " .. message .. "\n") io.close(file) - self:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "Your report has been sent to " .. configManager.getString(configKeys.SERVER_NAME) .. ".") + self:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your report has been sent to " .. configManager.getString(configKeys.SERVER_NAME) .. ".") return true end @@ -557,7 +555,7 @@ function Player:onGainExperience(target, exp, rawExp) if configManager.getBoolean(configKeys.VIP_SYSTEM_ENABLED) then local vipBonusExp = configManager.getNumber(configKeys.VIP_BONUS_EXP) - if (vipBonusExp > 0 and self:isVip()) then + if vipBonusExp > 0 and self:isVip() then vipBonusExp = (vipBonusExp > 100 and 100) or vipBonusExp exp = exp * (1 + (vipBonusExp / 100)) end @@ -591,7 +589,7 @@ function Player:onGainSkillTries(skill, tries) SKILL_DEFAULT = self:getSkillLevel(skill) RATE_DEFAULT = configManager.getNumber(configKeys.RATE_SKILL) - if (skill == SKILL_MAGLEVEL) then + if skill == SKILL_MAGLEVEL then -- Magic Level if configManager.getBoolean(configKeys.RATE_USE_STAGES) then STAGES_DEFAULT = magicLevelStages @@ -610,7 +608,7 @@ function Player:onGainSkillTries(skill, tries) if configManager.getBoolean(configKeys.VIP_SYSTEM_ENABLED) then local vipBoost = configManager.getNumber(configKeys.VIP_BONUS_SKILL) - if (vipBoost > 0 and self:isVip()) then + if vipBoost > 0 and self:isVip() then vipBoost = (vipBoost > 100 and 100) or vipBoost skillOrMagicRate = skillOrMagicRate + (skillOrMagicRate * (vipBoost / 100)) end @@ -648,17 +646,18 @@ function Player:onChangeZone(zone) delay = configManager.getNumber(configKeys.STAMINA_GREEN_DELAY) end - local message = string.format("In protection zone. Every %i minutes, gain %i stamina.", - delay, configManager.getNumber(configKeys.STAMINA_PZ_GAIN) - ) + local message = string.format("In protection zone. Every %i minutes, gain %i stamina.", delay, configManager.getNumber(configKeys.STAMINA_PZ_GAIN)) self:sendTextMessage(MESSAGE_STATUS, message) staminaBonus.eventsPz[self:getId()] = addEvent(addStamina, delay * 60 * 1000, nil, self:getId(), delay * 60 * 1000) end end else if event then - self:sendTextMessage(MESSAGE_STATUS, "You are no longer refilling stamina, \z - since you left a regeneration zone.") + self:sendTextMessage( + MESSAGE_STATUS, + "You are no longer refilling stamina, \z + since you left a regeneration zone." + ) stopEvent(event) staminaBonus.eventsPz[self:getId()] = nil end @@ -669,5 +668,4 @@ function Player:onChangeZone(zone) return false end -function Player:onInventoryUpdate(item, slot, equip) -end +function Player:onInventoryUpdate(item, slot, equip) end diff --git a/data/global.lua b/data/global.lua index a7004710a5a..88d1d8103c0 100644 --- a/data/global.lua +++ b/data/global.lua @@ -40,7 +40,7 @@ DIRECTIONS_TABLE = { DIRECTION_SOUTHWEST, DIRECTION_SOUTHEAST, DIRECTION_NORTHWEST, - DIRECTION_NORTHEAST + DIRECTION_NORTHEAST, } STORAGEVALUE_PROMOTION = 30018 @@ -60,7 +60,7 @@ weatherConfig = { fallEffect = CONST_ANI_SMALLICE, thunderEffect = configManager.getBoolean(configKeys.WEATHER_THUNDER), minDMG = 1, - maxDMG = 5 + maxDMG = 5, } -- Event Schedule @@ -151,18 +151,18 @@ end -- Increase Stamina when Attacking Trainer staminaBonus = { - target = 'Training Machine', + target = "Training Machine", period = configManager.getNumber(configKeys.STAMINA_TRAINER_DELAY) * 60 * 1000, -- time on miliseconds trainers bonus = configManager.getNumber(configKeys.STAMINA_TRAINER_GAIN), -- gain stamina trainers eventsTrainer = {}, -- stamina in trainers - eventsPz = {} -- stamina in Pz + eventsPz = {}, -- stamina in Pz } FAMILIARSNAME = { "sorcerer familiar", "knight familiar", "druid familiar", - "paladin familiar" + "paladin familiar", } function addStamina(playerId, ...) @@ -178,9 +178,7 @@ function addStamina(playerId, ...) staminaBonus.eventsTrainer[playerId] = nil else player:setStamina(player:getStamina() + staminaBonus.bonus) - player:sendTextMessage(MESSAGE_STATUS, - string.format("%i of stamina has been refilled.", - configManager.getNumber(configKeys.STAMINA_TRAINER_GAIN))) + player:sendTextMessage(MESSAGE_STATUS, string.format("%i of stamina has been refilled.", configManager.getNumber(configKeys.STAMINA_TRAINER_GAIN))) staminaBonus.eventsTrainer[playerId] = addEvent(addStamina, staminaBonus.period, playerId) end end @@ -192,7 +190,9 @@ function addStamina(playerId, ...) local localPlayerId, delay = ... if localPlayerId and delay then - if not staminaBonus.eventsPz[localPlayerId] then return false end + if not staminaBonus.eventsPz[localPlayerId] then + return false + end stopEvent(staminaBonus.eventsPz[localPlayerId]) local player = Player(localPlayerId) @@ -206,18 +206,17 @@ function addStamina(playerId, ...) if actualStamina > 2400 and actualStamina < 2520 then delay = configManager.getNumber(configKeys.STAMINA_GREEN_DELAY) * 60 * 1000 -- Stamina Green 12 min. elseif actualStamina == 2520 then - player:sendTextMessage(MESSAGE_STATUS, "You are no longer refilling stamina, \z - because your stamina is already full.") + player:sendTextMessage( + MESSAGE_STATUS, + "You are no longer refilling stamina, \z + because your stamina is already full." + ) staminaBonus.eventsPz[localPlayerId] = nil return false end player:setStamina(player:getStamina() + configManager.getNumber(configKeys.STAMINA_PZ_GAIN)) - player:sendTextMessage(MESSAGE_STATUS, - string.format("%i of stamina has been refilled.", - configManager.getNumber(configKeys.STAMINA_PZ_GAIN) - ) - ) + player:sendTextMessage(MESSAGE_STATUS, string.format("%i of stamina has been refilled.", configManager.getNumber(configKeys.STAMINA_PZ_GAIN))) staminaBonus.eventsPz[localPlayerId] = addEvent(addStamina, delay, nil, localPlayerId, delay) return true end diff --git a/data/libs/achievements_lib.lua b/data/libs/achievements_lib.lua index 0e8657dbc83..2ec9b5ad318 100644 --- a/data/libs/achievements_lib.lua +++ b/data/libs/achievements_lib.lua @@ -34,8 +34,7 @@ ACHIEVEMENTS_ACTION_BASE = 20000 --this storage will be used to save the process --(Ex: this storage + the id of achievement 'Allowance Collector' to save... -- ...how many piggy banks has been broken -achievements = -{ +achievements = { --8.6 [1] = { name = "Allow Cookies?", grade = 1, points = 2, description = "With a perfectly harmless smile you fooled all of those wisecrackers into eating your exploding cookies. Consider a boy or girl scout outfit next time to make the trick even better." }, [2] = { name = "Allowance Collector", grade = 1, points = 2, secret = true, description = "You certainly have your ways when it comes to acquiring money. Many of them are pink and paved with broken fragments of porcelain." }, @@ -57,7 +56,7 @@ achievements = [18] = { name = "Culinary Master", grade = 2, points = 4, description = "Simple hams and bread merely make you laugh. You're the master of the extra-ordinaire, melter of cheese, fryer of bat wings and shaker of shakes. Delicious!" }, [19] = { name = "Deep Sea Diver", grade = 2, points = 4, secret = true, description = "Under the sea - might not be your natural living space, but you're feeling quite comfortable on the ocean floor. Quara don't scare you anymore and sometimes you sleep with your helmet of the deep still equipped." }, [20] = { name = "Dread Lord", grade = 3, points = 8, secret = true, description = "You don't care for rules that others set up and shape the world to your liking. Having left behind meaningless conventions and morals, you prize only the power you wield. You're a master of your fate and battle to cleanse the world." }, - [21] = { name = "Efreet Ally", grade = 1, points = 3, description = "Even though the welcomed you only reluctantly and viewed you as \"only a human\" for quite some time, you managed to impress Malor and gained his respect and trade options with the green djinns." }, + [21] = { name = "Efreet Ally", grade = 1, points = 3, description = 'Even though the welcomed you only reluctantly and viewed you as "only a human" for quite some time, you managed to impress Malor and gained his respect and trade options with the green djinns.' }, [22] = { name = "Elite Hunter", grade = 2, points = 5, description = "You jump at every opportunity for a hunting challenge that's offered to you and carry out those tasks with deadly precision. You're a hunter at heart and a valuable member of the Paw & Fur Society." }, [23] = { name = "Explorer", grade = 2, points = 4, description = "You've been to places most people don't even know the names of. Collecting botanic, zoologic and ectoplasmic samples is your daily business and you're always prepared to discover new horizons." }, [24] = { name = "Exquisite Taste", grade = 1, points = 2, secret = true, description = "You love fish - but preferably those caught in the cold north. Even though they're hard to come by you never get tired of picking holes in ice sheets and hanging your fishing rod in." }, @@ -297,7 +296,7 @@ achievements = [247] = { name = "Exterminator", grade = 2, points = 4, description = "Efficient and lethal, you have gained significant experience in fighting the elite forces of the hive. Almost single-handed, you have slain the best of the Hive Born and live to tell the tale." }, [248] = { name = "Fire from the Earth", grade = 1, points = 2, description = "You've survived the Hellgorge eruption and found a way through the flames and lava. You've even managed to kill a few fireborn on the way." }, [249] = { name = "Gatherer", grade = 1, points = 2, description = "By killing creatures of the hive and gaining weapons for further missions, you started a quite effective way of war. You gathered a lot of dissolved chitin to resupply the war effort." }, - [250] = { name = "Gem Cutter", grade = 1, points = 1, secret = true, description = "You cut your first gem - and it bears your own name! Now that would be a nice gift! This does not make it a \"true\" Heart of the Sea, however..." }, + [250] = { name = "Gem Cutter", grade = 1, points = 1, secret = true, description = 'You cut your first gem - and it bears your own name! Now that would be a nice gift! This does not make it a "true" Heart of the Sea, however...' }, [251] = { name = "Goldhunter", grade = 1, points = 2, secret = true, description = " If it wasn't for you, several banks in Tibia would've gotten bankrupt by now. Keep on chasing bank robbers and no one will have to worry about the Tibian economy!" }, [252] = { name = "Guard Killer", grade = 1, points = 2, description = "You have proven that you can beat the best of the hive. You have caused first promising breaches in the defence of the hive" }, [253] = { name = "Guardian Downfall", grade = 2, points = 4, description = "You ended the life of over three hundred Deepling Guards. Not quite the guardian of the Deeplings, are you?" }, @@ -557,7 +556,7 @@ achievements = --12.20.9066 [465] = { name = "Do a Barrel Roll!", grade = 1, points = 3, description = "Riding a traditional beer barrel from the Orcsoberfest is a once-in-a-lifetime experience. Beer sold separately." }, - [466] = { name = "Orcsoberfest Welcome", grade = 1, points = 3, secret = true, description = "The Orcsoberfest is not only known for its traditional food, beer and customs but also fun events and excitement! You took part in all of that and can now truly say: \"I survived!\"" }, + [466] = { name = "Orcsoberfest Welcome", grade = 1, points = 3, secret = true, description = 'The Orcsoberfest is not only known for its traditional food, beer and customs but also fun events and excitement! You took part in all of that and can now truly say: "I survived!"' }, [467] = { name = "Traditionalist", grade = 2, points = 0, description = "You proudly wear the traditional Orcsoberfest garb, same as it ever was and as it always will be." }, --12.30 @@ -614,7 +613,7 @@ function getSecretAchievements() local t = {} for k, v in pairs(achievements) do if v.secret then - t[#t+1] = k + t[#t + 1] = k end end return t @@ -624,7 +623,7 @@ function getPublicAchievements() local t = {} for k, v in pairs(achivements) do if not v.secret then - t[#t+1] = k + t[#t + 1] = k end end return t @@ -666,7 +665,7 @@ function Player.getAchievements(self) local t = {} for k = 1, #achievements do if self:hasAchievement(k) then - t[#t+1] = k + t[#t + 1] = k end end return t @@ -686,7 +685,7 @@ function Player.addAchievement(self, ach, denyMsg) if not self:hasAchievement(achievement.id) then self:setStorageValue(ACHIEVEMENTS_BASE + achievement.id, 1) if not denyMsg then - self:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Congratulations! You earned the achievement \"" .. achievement.name .. "\".") + self:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Congratulations! You earned the achievement "' .. achievement.name .. '".') end end return true @@ -729,7 +728,7 @@ function Player.getSecretAchievements(self) local t = {} for k, v in pairs(achievements) do if self:hasAchievement(k) and v.secret then - t[#t+1] = k + t[#t + 1] = k end end return t @@ -739,7 +738,7 @@ function Player.getPublicAchievements(self) local t = {} for k, v in pairs(achievements) do if self:hasAchievement(k) and not v.secret then - t[#t+1] = k + t[#t + 1] = k end end return t diff --git a/data/libs/concoctions_lib.lua b/data/libs/concoctions_lib.lua index dcbd1337572..0d8a6e6574a 100644 --- a/data/libs/concoctions_lib.lua +++ b/data/libs/concoctions_lib.lua @@ -93,7 +93,9 @@ function Concoction:lastActivatedAt(player, value) end function Concoction:timeLeft(player, value) - if self.timeLeftStorage == nil then return 0 end + if self.timeLeftStorage == nil then + return 0 + end if value == nil then return player:getStorageValue(self.timeLeftStorage) @@ -111,15 +113,21 @@ end local function tick(concoctionId, playerId, timeDeduction) local player = Player(playerId) - if not player then return end + if not player then + return + end local concoction = Concoction.find(concoctionId) - if not concoction then return end + if not concoction then + return + end concoction:tick(player, timeDeduction) end function Concoction:tick(player, timeDeduction) local timeLeft = self:timeLeft(player) - if timeLeft <= 0 then return end + if timeLeft <= 0 then + return + end timeLeft = timeLeft - timeDeduction self:timeLeft(player, timeLeft > 0 and timeLeft or 0) self:update(player) @@ -134,7 +142,9 @@ function Concoction:tick(player, timeDeduction) end function Concoction:init(player, sendMessage) - if self:timeLeft(player) <= 0 then return true end + if self:timeLeft(player) <= 0 then + return true + end self:update(player) self:addCondition(player) @@ -144,20 +154,25 @@ function Concoction:init(player, sendMessage) if sendMessage then addEvent(function(playerId, name, duration) local eventPlayer = Player(playerId) - if not eventPlayer then return end - eventPlayer:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "Your concoction " .. name .. " is still active for another " .. duration .. ".") + if not eventPlayer then + return + end + eventPlayer:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your concoction " .. name .. " is still active for another " .. duration .. ".") end, 500, player:getId(), self.name, getTimeInWords(self:timeLeft(player))) end end function Concoction:addCondition(player) - if not self.condition then return end + if not self.condition then + return + end player:addCondition(self.condition) end function Concoction:removeCondition(player) - if not self.condition then return end + if not self.condition then + return + end player:removeCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, self.id) end @@ -165,22 +180,18 @@ function Concoction:activate(player, item) local cooldown = self:cooldown() if self:lastActivatedAt(player) + cooldown > os.time() then local cooldownLeft = self:lastActivatedAt(player) + cooldown - os.time() - player:sendTextMessage(MESSAGE_FAILURE, - "You must wait " .. getTimeInWords(cooldownLeft) .. " before using " .. item:getName() .. " again.") + player:sendTextMessage(MESSAGE_FAILURE, "You must wait " .. getTimeInWords(cooldownLeft) .. " before using " .. item:getName() .. " again.") return true end self:timeLeft(player, self:totalDuration()) self:lastActivatedAt(player, os.time()) self:update(player) - local consumptionString = self:tickType() == ConcoctionTickType.Online and " while you are online" or - " as you gain experience" + local consumptionString = self:tickType() == ConcoctionTickType.Online and " while you are online" or " as you gain experience" if self.config.callback then self.config.callback(player, self.config) else self:addCondition(player) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "You have activated " .. - item:getName() .. ". It will last for " .. getTimeInWords(self:totalDuration()) .. consumptionString .. ".") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have activated " .. item:getName() .. ". It will last for " .. getTimeInWords(self:totalDuration()) .. consumptionString .. ".") if self:tickType() == ConcoctionTickType.Online then addEvent(tick, updateInterval * 1000, self.id, player:getId(), updateInterval) end diff --git a/data/libs/core/global_storage.lua b/data/libs/core/global_storage.lua index 677d5c067df..8576adc54a7 100644 --- a/data/libs/core/global_storage.lua +++ b/data/libs/core/global_storage.lua @@ -29,8 +29,8 @@ Global = { FamiliarSummon = 30026, StoreExaust = 30051, FamiliarSummonEvent10 = 30054, - FamiliarSummonEvent60 = 30055 - } + FamiliarSummonEvent60 = 30055, + }, } -- Values extraction function @@ -54,8 +54,7 @@ table.sort(extraction) -- Sort the table if #extraction > 1 then for i = 1, #extraction - 1 do if extraction[i] == extraction[i + 1] then - logger.warn("Duplicate global storage value found: {}", - extraction[i]) + logger.warn("Duplicate global storage value found: {}", extraction[i]) end end end diff --git a/data/libs/daily_reward/daily_reward.lua b/data/libs/daily_reward/daily_reward.lua index 8b4daad1b2f..e3ca90caf27 100644 --- a/data/libs/daily_reward/daily_reward.lua +++ b/data/libs/daily_reward/daily_reward.lua @@ -10,7 +10,7 @@ DAILY_REWARD_LAST = 7 -- Global tables DailyRewardBonus = { Stamina = {}, - Soul = {} + Soul = {}, } function RegenStamina(id, delay) @@ -63,22 +63,22 @@ end function string.diff(self) local format = { - { 'day', self / 60 / 60 / 24 }, - { 'hour', self / 60 / 60 % 24 }, - { 'minute', self / 60 % 60 }, - { 'second', self % 60 } + { "day", self / 60 / 60 / 24 }, + { "hour", self / 60 / 60 % 24 }, + { "minute", self / 60 % 60 }, + { "second", self % 60 }, } local out = {} for k, t in ipairs(format) do local v = math.floor(t[2]) - if (v > 0) then - table.insert(out, (k < #format and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or '')) + if v > 0 then + table.insert(out, (k < #format and (#out > 0 and ", " or "") or " and ") .. v .. " " .. t[1] .. (v ~= 1 and "s" or "")) end end local ret = table.concat(out) - if ret:len() < 16 and ret:find('second') then - local a, b = ret:find(' and ') + if ret:len() < 16 and ret:find("second") then + local a, b = ret:find(" and ") ret = ret:sub(b + 1) end return ret diff --git a/data/libs/daily_reward/player.lua b/data/libs/daily_reward/player.lua index 5db817a3ec3..671f4d118ff 100644 --- a/data/libs/daily_reward/player.lua +++ b/data/libs/daily_reward/player.lua @@ -116,6 +116,5 @@ function Player.loadDailyRewardBonuses(self) DailyRewardBonus.Soul[self:getId()] = addEvent(RegenSoul, delay, self:getId(), delay) end end - logger.debug("Player: {}, streak level: {}, active bonuses: {}", - self:getName(), streakLevel, self:getActiveDailyRewardBonusesName()) + logger.debug("Player: {}, streak level: {}, active bonuses: {}", self:getName(), streakLevel, self:getActiveDailyRewardBonusesName()) end diff --git a/data/libs/debugging/dump.lua b/data/libs/debugging/dump.lua index f56b7a72f37..b181da67bfc 100644 --- a/data/libs/debugging/dump.lua +++ b/data/libs/debugging/dump.lua @@ -1,27 +1,27 @@ -- recursive dump function function dumpLevel(input, level) - local indent = '' + local indent = "" for i = 1, level do - indent = indent .. ' ' + indent = indent .. " " end - if type(input) == 'table' then - local str = '{ \n' + if type(input) == "table" then + local str = "{ \n" local lines = {} for k, v in pairs(input) do - if type(k) ~= 'number' then + if type(k) ~= "number" then k = '"' .. k .. '"' end - if type(v) == 'string' then + if type(v) == "string" then v = '"' .. v .. '"' end - table.insert(lines, indent .. ' [' .. k .. '] = ' .. dumpLevel(v, level + 1)) + table.insert(lines, indent .. " [" .. k .. "] = " .. dumpLevel(v, level + 1)) end - return str .. table.concat(lines, ',\n') .. '\n' .. indent .. '}' + return str .. table.concat(lines, ",\n") .. "\n" .. indent .. "}" end return tostring(input) @@ -41,17 +41,17 @@ end -- Call the dump function with a title and print it beautifully to the console function tdump(title, input) - local title_fill = '' + local title_fill = "" for i = 1, title:len() do - title_fill = title_fill .. '=' + title_fill = title_fill .. "=" end - local header_str = '\n====' .. title_fill .. '====\n' - header_str = header_str .. '=== ' .. title .. ' ===\n' - header_str = header_str .. '====' .. title_fill .. '====\n' + local header_str = "\n====" .. title_fill .. "====\n" + header_str = header_str .. "=== " .. title .. " ===\n" + header_str = header_str .. "====" .. title_fill .. "====\n" local dump_str = dump(input) - local footer_str = '\n====' .. title_fill .. '====\n' + local footer_str = "\n====" .. title_fill .. "====\n" logger.debug(header_str .. dump_str .. footer_str) diff --git a/data/libs/encounters_lib.lua b/data/libs/encounters_lib.lua index 2f7b278dedb..9085ea88010 100644 --- a/data/libs/encounters_lib.lua +++ b/data/libs/encounters_lib.lua @@ -17,7 +17,7 @@ setmetatable(EncounterStage, { tick = config.tick, finish = config.finish, }, { __index = EncounterStage }) - end + end, }) ---@class Encounter @@ -54,7 +54,7 @@ setmetatable(Encounter, { encounter:resetConfig(config) end return encounter - end + end, }) ---Resets the encounter configuration @@ -162,7 +162,9 @@ function Encounter:spawnMonsters(config) end self:addEvent(function(name, position, event, spawn, timeLimit) local monster = Game.createMonster(name, position) - if not monster then return false end + if not monster then + return false + end if spawn then spawn(monster) end @@ -172,7 +174,9 @@ function Encounter:spawnMonsters(config) if timeLimit then self:addEvent(function(monsterId) local monster = Monster(monsterId) - if not monster then return end + if not monster then + return + end monster:remove() end, config.timeLimit, monster:getID()) end @@ -213,7 +217,9 @@ end ---Resets the encounter to its initial state ---@return boolean True if the encounter is reset successfully, false otherwise function Encounter:reset() - if self.currentStage == unstarted then return true end + if self.currentStage == unstarted then + return true + end return self:enterStage(unstarted) end @@ -233,7 +239,9 @@ end ---Enters the next stage in the encounter ---@return boolean True if the next stage is entered successfully, false otherwise function Encounter:nextStage() - if self.currentStage == #self.stages then return self:reset() end + if self.currentStage == #self.stages then + return self:reset() + end return self:enterStage(self.currentStage + 1) end @@ -241,7 +249,9 @@ end ---@return boolean True if the encounter is started successfully, false otherwise function Encounter:start() Encounter.registerTickEvent() - if self.currentStage ~= unstarted then return false end + if self.currentStage ~= unstarted then + return false + end return self:enterStage(1) end @@ -271,19 +281,31 @@ function Encounter:startOnEnter() local zoneEvents = ZoneEvent(self.zone) function zoneEvents.afterEnter(zone, creature) - if not self.registered then return true end + if not self.registered then + return true + end local player = creature:getPlayer() - if not player then return true end - if player:hasGroupFlag(IgnoredByMonsters) then return end + if not player then + return true + end + if player:hasGroupFlag(IgnoredByMonsters) then + return + end self:start() end function zoneEvents.afterLeave(zone, creature) local player = creature:getPlayer() - if not player then return end - if player:hasGroupFlag(IgnoredByMonsters) then return end + if not player then + return + end + if player:hasGroupFlag(IgnoredByMonsters) then + return + end -- last player left; reset encounter - if self:countPlayers() == 1 then return end + if self:countPlayers() == 1 then + return + end self:reset() end @@ -300,7 +322,9 @@ function Encounter:register() end function Encounter.registerTickEvent() - if Encounter.tick then return end + if Encounter.tick then + return + end Encounter.tick = GlobalEvent("encounter.ticks.onThink") function Encounter.tick.onThink(interval, lastExecution) for _, encounter in pairs(Encounter.registry) do diff --git a/data/libs/exercise_training.lua b/data/libs/exercise_training.lua index a0960028d4d..e5c5a05b8e3 100644 --- a/data/libs/exercise_training.lua +++ b/data/libs/exercise_training.lua @@ -26,7 +26,7 @@ ExerciseWeaponsTable = { [28545] = { skill = SKILL_MAGLEVEL, effect = CONST_ANI_FIRE, allowFarUse = true }, [28557] = { skill = SKILL_MAGLEVEL, effect = CONST_ANI_FIRE, allowFarUse = true }, [35284] = { skill = SKILL_MAGLEVEL, effect = CONST_ANI_FIRE, allowFarUse = true }, - [35290] = { skill = SKILL_MAGLEVEL, effect = CONST_ANI_FIRE, allowFarUse = true } + [35290] = { skill = SKILL_MAGLEVEL, effect = CONST_ANI_FIRE, allowFarUse = true }, } local dummies = Game.getDummies() @@ -89,7 +89,9 @@ function ExerciseEvent(playerId, tilePosition, weaponId, dummyId) end local isMagic = ExerciseWeaponsTable[weaponId].skill == SKILL_MAGLEVEL - if not dummies[dummyId] then return false end + if not dummies[dummyId] then + return false + end local rate = dummies[dummyId] / 100 if isMagic then diff --git a/data/libs/familiar.lua b/data/libs/familiar.lua index 47f514ad73a..94880e05117 100644 --- a/data/libs/familiar.lua +++ b/data/libs/familiar.lua @@ -2,12 +2,12 @@ FAMILIAR_ID = { [VOCATION.BASE_ID.SORCERER] = { id = 994, name = "Sorcerer familiar" }, [VOCATION.BASE_ID.DRUID] = { id = 993, name = "Druid familiar" }, [VOCATION.BASE_ID.PALADIN] = { id = 992, name = "Paladin familiar" }, - [VOCATION.BASE_ID.KNIGHT] = { id = 991, name = "Knight familiar" } + [VOCATION.BASE_ID.KNIGHT] = { id = 991, name = "Knight familiar" }, } FAMILIAR_TIMER = { [1] = { storage = Global.Storage.FamiliarSummonEvent10, countdown = 10, message = "10 seconds" }, - [2] = { storage = Global.Storage.FamiliarSummonEvent60, countdown = 60, message = "one minute" } + [2] = { storage = Global.Storage.FamiliarSummonEvent60, countdown = 60, message = "one minute" }, } function SendMessageFunction(playerId, message) diff --git a/data/libs/forge_lib.lua b/data/libs/forge_lib.lua index e4f3c00b70a..e232c60fe2d 100644 --- a/data/libs/forge_lib.lua +++ b/data/libs/forge_lib.lua @@ -2,16 +2,16 @@ if not ForgeMonster then ForgeMonster = { timeLeftToChangeMonsters = {}, names = { - [FORGE_NORMAL_MONSTER] = 'normal', - [FORGE_INFLUENCED_MONSTER] = 'influenced', - [FORGE_FIENDISH_MONSTER] = 'fiendish' + [FORGE_NORMAL_MONSTER] = "normal", + [FORGE_INFLUENCED_MONSTER] = "influenced", + [FORGE_FIENDISH_MONSTER] = "fiendish", }, chanceToAppear = { fiendish = 80, - influenced = 20 + influenced = 20, }, maxFiendish = 3, - eventName = 'ForgeMonster' + eventName = "ForgeMonster", } end @@ -90,14 +90,9 @@ function ForgeMonster:onDeath(creature, corpse, killer, mostDamageKiller, unjust end local actualTotalDusts = playerKiller:getForgeDusts() - playerKiller:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "You received " .. amount .. " dust" .. - " for the Exaltation Forge. You now have " .. actualTotalDusts .. " out of a maximum of " .. - limitDusts .. " dusts.") + playerKiller:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You received " .. amount .. " dust" .. " for the Exaltation Forge. You now have " .. actualTotalDusts .. " out of a maximum of " .. limitDusts .. " dusts.") else - playerKiller:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "You did not receive " .. amount .. " dust" .. - " for the Exaltation Forge because you have already reached the maximum of " .. limitDusts .. " dust.") + playerKiller:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You did not receive " .. amount .. " dust" .. " for the Exaltation Forge because you have already reached the maximum of " .. limitDusts .. " dust.") end end end @@ -129,14 +124,9 @@ function ForgeMonster:onDeath(creature, corpse, killer, mostDamageKiller, unjust end local actualTotalDusts = playerKiller:getForgeDusts() - playerKiller:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "You received " .. amount .. " dust" .. - " for the Exaltation Forge. You now have " .. actualTotalDusts .. " out of a maximum of " .. - limitDusts .. " dusts.") + playerKiller:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You received " .. amount .. " dust" .. " for the Exaltation Forge. You now have " .. actualTotalDusts .. " out of a maximum of " .. limitDusts .. " dusts.") else - playerKiller:sendTextMessage(MESSAGE_EVENT_ADVANCE, - "You did not receive " .. amount .. " dust" .. - " for the Exaltation Forge because you have already reached the maximum of " .. limitDusts .. " dust.") + playerKiller:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You did not receive " .. amount .. " dust" .. " for the Exaltation Forge because you have already reached the maximum of " .. limitDusts .. " dust.") end end end @@ -192,12 +182,12 @@ function ForgeMonster:pickClosestFiendish(creature) local playerPosition = player:getPosition() for _, cid in pairs(Game.getFiendishMonsters()) do - if (Monster(cid)) then - creatures[#creatures+1] = { cid = cid, distance = Monster(cid):getPosition():getDistance(playerPosition) } + if Monster(cid) then + creatures[#creatures + 1] = { cid = cid, distance = Monster(cid):getPosition():getDistance(playerPosition) } end end - if (#creatures == 0) then + if #creatures == 0 then return false end diff --git a/data/libs/functions/bit.lua b/data/libs/functions/bit.lua index 856ec860e50..f14b05f5f3d 100644 --- a/data/libs/functions/bit.lua +++ b/data/libs/functions/bit.lua @@ -13,7 +13,7 @@ end -- checa se a flag tem o valor function hasBitSet(flag, flags) - return bit.band(flags, flag) ~= 0; + return bit.band(flags, flag) ~= 0 end -- setando uma nova flag diff --git a/data/libs/functions/bosslever.lua b/data/libs/functions/bosslever.lua index c77cece44d8..b0c634c22be 100644 --- a/data/libs/functions/bosslever.lua +++ b/data/libs/functions/bosslever.lua @@ -72,7 +72,7 @@ setmetatable(BossLever, { _uid = nil, _aid = nil, }, { __index = BossLever }) - end + end, }) ---@param self BossLever @@ -196,12 +196,24 @@ end ---@return boolean function BossLever:register() local missingParams = {} - if not self.name then table.insert(missingParams, "boss.name") end - if not self.storage then table.insert(missingParams, "storage") end - if not self.playerPositions then table.insert(missingParams, "playerPositions") end - if not self.area then table.insert(missingParams, "specPos") end - if not self.exit then table.insert(missingParams, "exit") end - if not self._position and not self._uid and not self._aid then table.insert(missingParams, "position or uid or aid") end + if not self.name then + table.insert(missingParams, "boss.name") + end + if not self.storage then + table.insert(missingParams, "storage") + end + if not self.playerPositions then + table.insert(missingParams, "playerPositions") + end + if not self.area then + table.insert(missingParams, "specPos") + end + if not self.exit then + table.insert(missingParams, "exit") + end + if not self._position and not self._uid and not self._aid then + table.insert(missingParams, "position or uid or aid") + end if #missingParams > 0 then local name = self.name or "unknown" logger.error("BossLever:register() - boss with name {} missing parameters: {}", name, table.concat(missingParams, ", ")) @@ -215,7 +227,9 @@ function BossLever:register() zone:setRemoveDestination(self.exit) local action = Action() - action.onUse = function(player) self:onUse(player) end + action.onUse = function(player) + self:onUse(player) + end if self._position then action:position(self._position) end diff --git a/data/libs/functions/combat.lua b/data/libs/functions/combat.lua index 6b0860a9520..236ab744738 100644 --- a/data/libs/functions/combat.lua +++ b/data/libs/functions/combat.lua @@ -1,7 +1,7 @@ function Combat:getPositions(creature, variant) local positions = {} function onTargetTile(creature, position) - positions[#positions+1] = position + positions[#positions + 1] = position end self:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile") @@ -12,7 +12,7 @@ end function Combat:getTargets(creature, variant) local targets = {} function onTargetCreature(creature, target) - targets[#targets+1] = target + targets[#targets + 1] = target end self:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") diff --git a/data/libs/functions/creature.lua b/data/libs/functions/creature.lua index ff44e87d55a..04dcb9e8473 100644 --- a/data/libs/functions/creature.lua +++ b/data/libs/functions/creature.lua @@ -19,8 +19,7 @@ function Creature.getClosestFreePosition(self, position, maxRadius, mustBeReacha end local tile = Tile(checkPosition) - if tile and tile:getCreatureCount() == 0 and not tile:hasProperty(CONST_PROP_IMMOVABLEBLOCKSOLID) and - (not mustBeReachable or self:getPathTo(checkPosition)) then + if tile and tile:getCreatureCount() == 0 and not tile:hasProperty(CONST_PROP_IMMOVABLEBLOCKSOLID) and (not mustBeReachable or self:getPathTo(checkPosition)) then return checkPosition end end @@ -90,7 +89,7 @@ function Creature:setItemOutfit(item, time) local condition = Condition(CONDITION_OUTFIT) condition:setOutfit({ - lookTypeEx = itemType:getId() + lookTypeEx = itemType:getId(), }) condition:setTicks(time) self:addCondition(condition) diff --git a/data/libs/functions/functions.lua b/data/libs/functions/functions.lua index d7b437245dc..4d172c16529 100644 --- a/data/libs/functions/functions.lua +++ b/data/libs/functions/functions.lua @@ -1,24 +1,26 @@ function PrettyString(tbl, indent) - if not indent then indent = 0 end + if not indent then + indent = 0 + end local toprint = string.rep(" ", indent) .. "{\n" indent = indent + 2 for k, v in pairs(tbl) do toprint = toprint .. string.rep(" ", indent) - if (type(k) == "number") then + if type(k) == "number" then toprint = toprint .. "[" .. k .. "] = " - elseif (type(k) == "string") then + elseif type(k) == "string" then toprint = toprint .. k .. "= " end - if (type(v) == "number") then + if type(v) == "number" then toprint = toprint .. v .. ",\n" - elseif (type(v) == "string") then - toprint = toprint .. "\"" .. v .. "\",\n" - elseif (type(v) == "table") then + elseif type(v) == "string" then + toprint = toprint .. '"' .. v .. '",\n' + elseif type(v) == "table" then toprint = toprint .. PrettyString(v, indent + 2) .. ",\n" - elseif (type(v) == "userdata") then - toprint = toprint .. "\"" .. tostring(v) .. "\",\n" + elseif type(v) == "userdata" then + toprint = toprint .. '"' .. tostring(v) .. '",\n' else - toprint = toprint .. "\"" .. tostring(v) .. "\",\n" + toprint = toprint .. '"' .. tostring(v) .. '",\n' end end toprint = toprint .. string.rep(" ", indent - 2) .. "}" @@ -27,7 +29,7 @@ end function getTibiaTimerDayOrNight() local light = getWorldLight() - if (light == 40) then + if light == 40 then return "night" else return "day" @@ -40,14 +42,16 @@ function getFormattedWorldTime() local minutes = worldTime % 60 if minutes < 10 then - minutes = '0' .. minutes + minutes = "0" .. minutes end - return hours .. ':' .. minutes + return hours .. ":" .. minutes end function getTitle(uid) local player = Player(uid) - if not player then return false end + if not player then + return false + end for i = #titles, 1, -1 do if player:getStorageValue(titles[i].storageID) == 1 then @@ -61,24 +65,24 @@ end function getTimeInWords(secsParam) local secs = tonumber(secsParam) local hours, minutes, seconds = getHours(secs), getMinutes(secs), getSeconds(secs) - local timeStr = '' + local timeStr = "" if hours > 0 then - timeStr = hours .. (hours > 1 and ' hours' or ' hour') + timeStr = hours .. (hours > 1 and " hours" or " hour") end if minutes > 0 then - if timeStr ~= '' then - timeStr = timeStr .. ', ' + if timeStr ~= "" then + timeStr = timeStr .. ", " end - timeStr = timeStr .. minutes .. (minutes > 1 and ' minutes' or ' minute') + timeStr = timeStr .. minutes .. (minutes > 1 and " minutes" or " minute") end if seconds > 0 then - if timeStr ~= '' then - timeStr = timeStr .. ' and ' + if timeStr ~= "" then + timeStr = timeStr .. " and " end - timeStr = timeStr .. seconds .. (seconds > 1 and ' seconds' or ' second') + timeStr = timeStr .. seconds .. (seconds > 1 and " seconds" or " second") end return timeStr @@ -95,8 +99,7 @@ debug.sethook(function(event, line) linecount = linecount + 1 if systemTime() - start >= 1 then if linecount >= 30000 then - logger.warn("[debug.sethook] - Possible infinite loop in file [{}] near line [{}]", - debug.getinfo(2).source, line) + logger.warn("[debug.sethook] - Possible infinite loop in file [{}] near line [{}]", debug.getinfo(2).source, line) debug.sethook() end linecount = 0 @@ -120,7 +123,7 @@ function getJackLastMissionState(player) end function getRateFromTable(t, level, default) - if (t ~= nil) then + if t ~= nil then for _, rate in ipairs(t) do if level >= rate.minlevel and (not rate.maxlevel or level <= rate.maxlevel) then return rate.multiplier @@ -146,8 +149,7 @@ function getAccountNumberByPlayerName(name) end function getMoneyCount(string) - local b, - e = string:find("%d+") + local b, e = string:find("%d+") local money = b and e and tonumber(string:sub(b, e)) or -1 if isValidMoney(money) then return money @@ -171,8 +173,7 @@ function getMoneyWeight(money) gold = gold - crystal * 10000 local platinum = math.floor(gold / 100) gold = gold - platinum * 100 - return (ItemType(3043):getWeight() * crystal) + (ItemType(3035):getWeight() * platinum) + - (ItemType(3031):getWeight() * gold) + return (ItemType(3043):getWeight() * crystal) + (ItemType(3035):getWeight() * platinum) + (ItemType(3031):getWeight() * gold) end function getRealDate() @@ -241,8 +242,7 @@ function setPlayerMarriageStatus(id, val) end function clearBossRoom(playerId, bossId, centerPosition, rangeX, rangeY, exitPosition) - local spectators, - spectator = Game.getSpectators(centerPosition, false, false, rangeX, rangeX, rangeY, rangeY) + local spectators, spectator = Game.getSpectators(centerPosition, false, false, rangeX, rangeX, rangeY, rangeY) for i = 1, #spectators do spectator = spectators[i] if spectator:isPlayer() and spectator.uid == playerId then @@ -257,8 +257,7 @@ function clearBossRoom(playerId, bossId, centerPosition, rangeX, rangeY, exitPos end function clearRoom(centerPosition, rangeX, rangeY, resetGlobalStorage) - local spectators, - spectator = Game.getSpectators(centerPosition, false, false, rangeX, rangeX, rangeY, rangeY) + local spectators, spectator = Game.getSpectators(centerPosition, false, false, rangeX, rangeX, rangeY, rangeY) for i = 1, #spectators do spectator = spectators[i] if spectator:isMonster() then @@ -329,7 +328,7 @@ function resetFerumbrasAscendantHabitats() if spec:isPlayer() then spec:teleportTo(Position(33630, 32648, 12)) spec:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - spec:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You were teleported because the habitats are returning to their original form.') + spec:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You were teleported because the habitats are returning to their original form.") elseif spec:isMonster() then spec:remove() end @@ -379,12 +378,12 @@ function resetFerumbrasAscendantHabitats() end end - Game.loadMap(DATA_DIRECTORY .. '/world/quest/ferumbras_ascendant/habitats.otbm') + Game.loadMap(DATA_DIRECTORY .. "/world/quest/ferumbras_ascendant/habitats.otbm") return true end function checkWallArito(item, toPosition) - if (not item:isItem()) then + if not item:isItem() then return false end local wallTile = Tile(Position(33206, 32536, 6)) @@ -393,50 +392,42 @@ function checkWallArito(item, toPosition) end local checkEqual = { [2886] = { Position(33207, 32537, 6), { 5858, -1 }, Position(33205, 32537, 6) }, - [3307] = { Position(33205, 32537, 6), { 2016, 1 }, Position(33207, 32537, 6), 5858 } + [3307] = { Position(33205, 32537, 6), { 2016, 1 }, Position(33207, 32537, 6), 5858 }, } local it = checkEqual[item:getId()] - if (it and it[1] == toPosition and Tile(it[3]):getItemCountById(it[2][1], it[2][2]) > 0) then + if it and it[1] == toPosition and Tile(it[3]):getItemCountById(it[2][1], it[2][2]) > 0 then wallTile:getItemById(1085):transform(7181) - if (it[4]) then + if it[4] then item:transform(it[4]) end - addEvent( - function() - if (Tile(Position(33206, 32536, 6)):getItemCountById(7476) > 0) then - Tile(Position(33206, 32536, 6)):getItemById(7476):transform(1085) - end - if (Tile(Position(33205, 32537, 6)):getItemCountById(5858) > 0) then - Tile(Position(33205, 32537, 6)):getItemById(5858):remove() - end - end, - 5 * 60 * 1000 - ) + addEvent(function() + if Tile(Position(33206, 32536, 6)):getItemCountById(7476) > 0 then + Tile(Position(33206, 32536, 6)):getItemById(7476):transform(1085) + end + if Tile(Position(33205, 32537, 6)):getItemCountById(5858) > 0 then + Tile(Position(33205, 32537, 6)):getItemById(5858):remove() + end + end, 5 * 60 * 1000) else - if (it and it[4] and it[1] == toPosition) then + if it and it[4] and it[1] == toPosition then item:transform(it[4]) end end end -function placeSpawnRandom(fromPositon, toPosition, monsterName, ammount, hasCall, storage, value, removestorage, - sharedHP, event, message) +function placeSpawnRandom(fromPositon, toPosition, monsterName, ammount, hasCall, storage, value, removestorage, sharedHP, event, message) for _x = fromPositon.x, toPosition.x do for _y = fromPositon.y, toPosition.y do for _z = fromPositon.z, toPosition.z do local tile = Tile(Position(_x, _y, _z)) if not removestorage then - if tile and tile:getTopCreature() and tile:getTopCreature():isMonster() and - tile:getTopCreature():getName() == monsterName - then + if tile and tile:getTopCreature() and tile:getTopCreature():isMonster() and tile:getTopCreature():getName() == monsterName then tile:getTopCreature():remove() end else - if tile and tile:getTopCreature() and tile:getTopCreature():isMonster() and - tile:getTopCreature():getStorageValue(storage) == value - then + if tile and tile:getTopCreature() and tile:getTopCreature():isMonster() and tile:getTopCreature():getStorageValue(storage) == value then tile:getTopCreature():remove() end end @@ -452,7 +443,7 @@ function placeSpawnRandom(fromPositon, toPosition, monsterName, ammount, hasCall local position = { x = math.random(fromPositon.x, toPosition.x), y = math.random(fromPositon.y, toPosition.y), - z = math.random(fromPositon.z, toPosition.z) + z = math.random(fromPositon.z, toPosition.z), } -- tile = Tile(position) -- passing = tile and #tile:getItems() <= 0 @@ -462,7 +453,7 @@ function placeSpawnRandom(fromPositon, toPosition, monsterName, ammount, hasCall summoned = summoned + 1 -- Set first spawn monster:getPosition():sendMagicEffect(CONST_ME_TELEPORT) - if (hasCall) then + if hasCall then monster:setStorage(storage, value) if sharedHP then monster:beginSharedLife(tm) @@ -482,7 +473,7 @@ function placeSpawnRandom(fromPositon, toPosition, monsterName, ammount, hasCall end end end - until (summoned == ammount) + until summoned == ammount end end @@ -496,13 +487,12 @@ function getMonstersInArea(fromPos, toPos, monsterName, ignoreMonsterId) for _, pid in pairs(tile:getCreatures()) do local mt = Monster(pid) if not ignoreMonsterId then - if (mt and mt:isMonster() and mt:getName():lower() == monsterName:lower() and not mt:getMaster()) then - monsters[#monsters+1] = mt + if mt and mt:isMonster() and mt:getName():lower() == monsterName:lower() and not mt:getMaster() then + monsters[#monsters + 1] = mt end else - if (mt and mt:isMonster() and mt:getName():lower() == monsterName:lower() - and not mt:getMaster() and ignoreMonsterId ~= mt:getId()) then - monsters[#monsters+1] = mt + if mt and mt:isMonster() and mt:getName():lower() == monsterName:lower() and not mt:getMaster() and ignoreMonsterId ~= mt:getId() then + monsters[#monsters + 1] = mt end end end @@ -577,8 +567,7 @@ function cleanAreaQuest(frompos, topos, itemtable, blockmonsters) return true end -function kickerPlayerRoomAfferMin(playername, fromPosition, toPosition, teleportPos, message, monsterName, minutes, - firstCall, itemtable, blockmonsters) +function kickerPlayerRoomAfferMin(playername, fromPosition, toPosition, teleportPos, message, monsterName, minutes, firstCall, itemtable, blockmonsters) local players = false if type(playername) == table then players = true @@ -647,18 +636,16 @@ function kickerPlayerRoomAfferMin(playername, fromPosition, toPosition, teleport end end local min = 60 -- Use the 60 for 1 minute - if (firstCall) then - addEvent(kickerPlayerRoomAfferMin, 1000, playername, fromPosition, toPosition, teleportPos, message, - monsterName, minutes, false, itemtable, blockmonsters) + if firstCall then + addEvent(kickerPlayerRoomAfferMin, 1000, playername, fromPosition, toPosition, teleportPos, message, monsterName, minutes, false, itemtable, blockmonsters) else local subt = minutes - 1 - if (monsterName ~= "") then + if monsterName ~= "" then if minutes > 3 and table.maxn(monster) == 0 then subt = 2 end end - addEvent(kickerPlayerRoomAfferMin, min * 1000, playername, fromPosition, toPosition, teleportPos, message, - monsterName, subt, false, itemtable, blockmonsters) + addEvent(kickerPlayerRoomAfferMin, min * 1000, playername, fromPosition, toPosition, teleportPos, message, monsterName, subt, false, itemtable, blockmonsters) end end @@ -669,8 +656,7 @@ function checkWeightAndBackpackRoom(player, itemWeight, message) return false end if (player:getFreeCapacity() / 100) < itemWeight then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, - message .. ". Weighing " .. itemWeight .. " oz, it is too heavy for you to carry.") + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, message .. ". Weighing " .. itemWeight .. " oz, it is too heavy for you to carry.") return false end return true @@ -693,7 +679,9 @@ if not bosssPlayers then bosssPlayers = { addPlayers = function(self, cid) local player = Player(cid) - if not player then return false end + if not player then + return false + end if not self.players then self.players = {} end @@ -701,28 +689,33 @@ if not bosssPlayers then end, removePlayer = function(self, cid) local player = Player(cid) - if not player then return false end - if not self.players then return false end + if not player then + return false + end + if not self.players then + return false + end self.players[player:getId()] = nil end, getPlayersCount = function(self) - if not self.players then return 0 end + if not self.players then + return 0 + end local c = 0 - for _ in pairs(self.players) do c = c + 1 end + for _ in pairs(self.players) do + c = c + 1 + end return c - end + end, } end function isInRange(pos, fromPos, toPos) - return pos.x >= fromPos.x and pos.y >= fromPos.y - and pos.z >= fromPos.z and pos.x <= toPos.x - and pos.y <= toPos.y and pos.z <= toPos.z + return pos.x >= fromPos.x and pos.y >= fromPos.y and pos.z >= fromPos.z and pos.x <= toPos.x and pos.y <= toPos.y and pos.z <= toPos.z end function isInRangeIgnoreZ(pos, fromPos, toPos) - return pos.x >= fromPos.x and pos.y >= fromPos.y - and pos.z >= fromPos.z and pos.x <= toPos.x + return pos.x >= fromPos.x and pos.y >= fromPos.y and pos.z >= fromPos.z and pos.x <= toPos.x end function isNumber(str) @@ -891,7 +884,7 @@ function kickPlayersAfterTime(players, fromPos, toPos, exit) local player = Player(pid) if player and player:getPosition():isInRange(fromPos, toPos) then player:teleportTo(exit) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You were kicked by exceding time inside the boss room.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You were kicked by exceding time inside the boss room.") end end end @@ -904,7 +897,7 @@ function Player:doCheckBossRoom(bossName, fromPos, toPos) local sqm = Tile(Position(x, y, z)) if sqm then if sqm:getTopCreature() and sqm:getTopCreature():isPlayer() then - self:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You must wait. Someone is challenging ' .. bossName .. ' now.') + self:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must wait. Someone is challenging " .. bossName .. " now.") return false end end @@ -987,11 +980,11 @@ end function getTime(seconds) local hours, minutes = getHours(seconds), getMinutes(seconds) - if (minutes > 59) then + if minutes > 59 then minutes = minutes - hours * 60 end - if (minutes < 10) then + if minutes < 10 then minutes = "0" .. minutes end @@ -1023,7 +1016,7 @@ function HasValidTalkActionParams(player, param, usage) end function FormatNumber(number) - local _, _, minus, int, fraction = tostring(number):find('([-]?)(%d+)([.]?%d*)') + local _, _, minus, int, fraction = tostring(number):find("([-]?)(%d+)([.]?%d*)") int = int:reverse():gsub("(%d%d%d)", "%1,") return minus .. int:reverse():gsub("^,", "") .. fraction end diff --git a/data/libs/functions/game.lua b/data/libs/functions/game.lua index 1d16c9470bb..cb77c296067 100644 --- a/data/libs/functions/game.lua +++ b/data/libs/functions/game.lua @@ -1,6 +1,8 @@ function getGlobalStorage(key) local keyNumber = tonumber(key) - if not keyNumber then key = "'" .. key .. "'" end + if not keyNumber then + key = "'" .. key .. "'" + end local resultId = db.storeQuery("SELECT `value` FROM `global_storage` WHERE `key` = " .. key) if resultId ~= false then local isNumber = tonumber(Result.getString(resultId, "value")) @@ -19,9 +21,13 @@ end function setGlobalStorage(key, value) local keyNumber = tonumber(key) - if not keyNumber then key = "'" .. key .. "'" end + if not keyNumber then + key = "'" .. key .. "'" + end local valueNumber = tonumber(value) - if not valueNumber then value = "'" .. value .. "'" end + if not valueNumber then + value = "'" .. value .. "'" + end db.query("INSERT INTO `global_storage` (`key`, `value`) VALUES (" .. key .. ", " .. value .. ") ON DUPLICATE KEY UPDATE `value` = " .. value) end @@ -38,12 +44,7 @@ end function Game.convertIpToString(ip) local band = bit.band local rshift = bit.rshift - return string.format("%d.%d.%d.%d", - band(ip, 0xFF), - band(rshift(ip, 8), 0xFF), - band(rshift(ip, 16), 0xFF), - rshift(ip, 24) - ) + return string.format("%d.%d.%d.%d", band(ip, 0xFF), band(rshift(ip, 8), 0xFF), band(rshift(ip, 16), 0xFF), rshift(ip, 24)) end function Game.getHouseByPlayerGUID(playerGUID) @@ -63,21 +64,23 @@ function Game.getPlayersByAccountNumber(accountNumber) for i = 1, #players do player = players[i] if player:getAccountId() == accountNumber then - result[#result+1] = player + result[#result + 1] = player end end return result end function Game.getPlayersByIPAddress(ip, mask) - if not mask then mask = 0xFFFFFFFF end + if not mask then + mask = 0xFFFFFFFF + end local masked = bit.band(ip, mask) local result = {} local players, player = Game.getPlayers() for i = 1, #players do player = players[i] if bit.band(player:getIp(), mask) == masked then - result[#result+1] = player + result[#result + 1] = player end end return result diff --git a/data/libs/functions/item.lua b/data/libs/functions/item.lua index aecae3a1067..faf39b807ea 100644 --- a/data/libs/functions/item.lua +++ b/data/libs/functions/item.lua @@ -31,7 +31,7 @@ function Item.isTile(self) end function Item.setDescription(self, description) - if description ~= '' then + if description ~= "" then self:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, description) else self:removeAttribute(ITEM_ATTRIBUTE_DESCRIPTION) @@ -39,7 +39,7 @@ function Item.setDescription(self, description) end function Item.setText(self, text) - if text ~= '' then + if text ~= "" then self:setAttribute(ITEM_ATTRIBUTE_TEXT, text) else self:removeAttribute(ITEM_ATTRIBUTE_TEXT) @@ -47,7 +47,7 @@ function Item.setText(self, text) end function Item.setName(self, name) - if name ~= '' then + if name ~= "" then self:setAttribute(ITEM_ATTRIBUTE_NAME, name) else self:removeAttribute(ITEM_ATTRIBUTE_NAME) @@ -55,7 +55,7 @@ function Item.setName(self, name) end function Item.setUniqueId(self, uniqueId) - if type(uniqueId) ~= 'number' or uniqueId < 0 or uniqueId > 65535 then + if type(uniqueId) ~= "number" or uniqueId < 0 or uniqueId > 65535 then return false end diff --git a/data/libs/functions/itemtype.lua b/data/libs/functions/itemtype.lua index c94ba7f1b4a..d67bafa5801 100644 --- a/data/libs/functions/itemtype.lua +++ b/data/libs/functions/itemtype.lua @@ -8,7 +8,7 @@ local slotBits = { [CONST_SLOT_LEGS] = SLOTP_LEGS, [CONST_SLOT_FEET] = SLOTP_FEET, [CONST_SLOT_RING] = SLOTP_RING, - [CONST_SLOT_AMMO] = SLOTP_AMMO + [CONST_SLOT_AMMO] = SLOTP_AMMO, } function ItemType.usesSlot(self, slot) diff --git a/data/libs/functions/lever.lua b/data/libs/functions/lever.lua index a0e00c6f2c0..56cf9d41a49 100644 --- a/data/libs/functions/lever.lua +++ b/data/libs/functions/lever.lua @@ -5,11 +5,15 @@ setmetatable(Lever, { local lever_data = { positions = {}, info_positions = nil, - condition = function() return true end, - teleport_player_func = function() return true end, + condition = function() + return true + end, + teleport_player_func = function() + return true + end, } return setmetatable(lever_data, { __index = Lever }) - end + end, }) ---@return table diff --git a/data/libs/functions/monster.lua b/data/libs/functions/monster.lua index 6c674fc9571..0eb2333c403 100644 --- a/data/libs/functions/monster.lua +++ b/data/libs/functions/monster.lua @@ -10,7 +10,7 @@ function Monster.getStorageValue(self, key) for id, pid in pairs(monsterStorage) do if id == self:getId() then for key1, value in pairs(pid) do - if (key1 == key) then + if key1 == key then ret = value break end @@ -67,10 +67,10 @@ function Monster.inSharedLife(self) return false end for id, pid in pairs(hpCompartilhada) do - if (storage == id) then + if storage == id then for _id, mid in pairs(pid.monsters) do local mtemp = Monster(mid) - if (mtemp and mtemp:getId() == self:getId()) then + if mtemp and mtemp:getId() == self:getId() then return true end end @@ -83,12 +83,12 @@ function updateMonstersSharedLife(hpid, amount, orign, _type, kill) if not hpCompartilhada[hpid] then return false end - if (_type == "healing") then + if _type == "healing" then hpCompartilhada[hpid].hp = hpCompartilhada[hpid].hp + amount else hpCompartilhada[hpid].hp = hpCompartilhada[hpid].hp - amount end - if (hpCompartilhada[hpid].hp < 0) then + if hpCompartilhada[hpid].hp < 0 then hpCompartilhada[hpid].hp = 0 end for _, monster in pairs(hpCompartilhada[hpid].monsters) do diff --git a/data/libs/functions/monstertype.lua b/data/libs/functions/monstertype.lua index d73094e6076..b51744cf8fd 100644 --- a/data/libs/functions/monstertype.lua +++ b/data/libs/functions/monstertype.lua @@ -13,8 +13,12 @@ function MonsterType:generateLootRoll(config, resultTable) local result = resultTable or {} for _, item in ipairs(monsterLoot) do local iType = ItemType(item.itemId) - if config.filter and not config.filter(iType, item.unique) then goto continue end - if uniqueItems[item.itemId] then goto continue end + if config.filter and not config.filter(iType, item.unique) then + goto continue + end + if uniqueItems[item.itemId] then + goto continue + end if not result[item.itemId] then result[item.itemId] = { count = 0, gut = false } end @@ -25,7 +29,9 @@ function MonsterType:generateLootRoll(config, resultTable) end local randValue = getLootRandom(factor) - if randValue >= chance then goto continue end + if randValue >= chance then + goto continue + end local count = 0 if iType:isStackable() then diff --git a/data/libs/functions/player.lua b/data/libs/functions/player.lua index 61807a2a7dd..ad35e6851f6 100644 --- a/data/libs/functions/player.lua +++ b/data/libs/functions/player.lua @@ -107,12 +107,19 @@ function Player.getCookiesDelivered(self) return true end - local storage, amount = { - Storage.WhatAFoolish.CookieDelivery.SimonTheBeggar, Storage.WhatAFoolish.CookieDelivery.Markwin, Storage.WhatAFoolish.CookieDelivery.Ariella, - Storage.WhatAFoolish.CookieDelivery.Hairycles, Storage.WhatAFoolish.CookieDelivery.Djinn, Storage.WhatAFoolish.CookieDelivery.AvarTar, - Storage.WhatAFoolish.CookieDelivery.OrcKing, Storage.WhatAFoolish.CookieDelivery.Lorbas, Storage.WhatAFoolish.CookieDelivery.Wyda, - Storage.WhatAFoolish.CookieDelivery.Hjaern - }, 0 + local storage, amount = + { + Storage.WhatAFoolish.CookieDelivery.SimonTheBeggar, + Storage.WhatAFoolish.CookieDelivery.Markwin, + Storage.WhatAFoolish.CookieDelivery.Ariella, + Storage.WhatAFoolish.CookieDelivery.Hairycles, + Storage.WhatAFoolish.CookieDelivery.Djinn, + Storage.WhatAFoolish.CookieDelivery.AvarTar, + Storage.WhatAFoolish.CookieDelivery.OrcKing, + Storage.WhatAFoolish.CookieDelivery.Lorbas, + Storage.WhatAFoolish.CookieDelivery.Wyda, + Storage.WhatAFoolish.CookieDelivery.Hjaern, + }, 0 for i = 1, #storage do if self:getStorageValue(storage[i]) == 1 then amount = amount + 1 @@ -136,31 +143,31 @@ function Player.checkGnomeRank(self) if questProgress <= 25 then self:setStorageValue(Storage.BigfootBurden.QuestLine, 26) self:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - self:addAchievement('Gnome Little Helper') + self:addAchievement("Gnome Little Helper") end elseif points >= 120 and points < 480 then if questProgress <= 26 then self:setStorageValue(Storage.BigfootBurden.QuestLine, 27) self:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - self:addAchievement('Gnome Little Helper') - self:addAchievement('Gnome Friend') + self:addAchievement("Gnome Little Helper") + self:addAchievement("Gnome Friend") end elseif points >= 480 and points < 1440 then if questProgress <= 27 then self:setStorageValue(Storage.BigfootBurden.QuestLine, 28) self:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - self:addAchievement('Gnome Little Helper') - self:addAchievement('Gnome Friend') - self:addAchievement('Gnomelike') + self:addAchievement("Gnome Little Helper") + self:addAchievement("Gnome Friend") + self:addAchievement("Gnomelike") end elseif points >= 1440 then if questProgress <= 29 then self:setStorageValue(Storage.BigfootBurden.QuestLine, 30) self:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - self:addAchievement('Gnome Little Helper') - self:addAchievement('Gnome Friend') - self:addAchievement('Gnomelike') - self:addAchievement('Honorary Gnome') + self:addAchievement("Gnome Little Helper") + self:addAchievement("Gnome Friend") + self:addAchievement("Gnomelike") + self:addAchievement("Honorary Gnome") end end return true @@ -201,7 +208,7 @@ end -- player:removeMoneyBank(money) function Player:removeMoneyBank(amount) - if type(amount) == 'string' then + if type(amount) == "string" then amount = tonumber(amount) end @@ -244,11 +251,7 @@ end function Player.hasRookgaardShield(self) -- Wooden Shield, Studded Shield, Brass Shield, Plate Shield, Copper Shield - return self:getItemCount(3412) > 0 - or self:getItemCount(3426) > 0 - or self:getItemCount(3411) > 0 - or self:getItemCount(3410) > 0 - or self:getItemCount(3430) > 0 + return self:getItemCount(3412) > 0 or self:getItemCount(3426) > 0 or self:getItemCount(3411) > 0 or self:getItemCount(3410) > 0 or self:getItemCount(3430) > 0 end function Player:vocationAbbrev() @@ -282,8 +285,7 @@ function Player.isPaladin(self) end function Player.isMage(self) - return table.contains({ VOCATION.ID.SORCERER, VOCATION.ID.MASTER_SORCERER, VOCATION.ID.DRUID, VOCATION.ID.ELDER_DRUID }, - self:getVocation():getId()) + return table.contains({ VOCATION.ID.SORCERER, VOCATION.ID.MASTER_SORCERER, VOCATION.ID.DRUID, VOCATION.ID.ELDER_DRUID }, self:getVocation():getId()) end local ACCOUNT_STORAGES = {} @@ -318,7 +320,7 @@ function Player.getMarriageDescription(thing) else descr = descr .. " " .. firstToUpper(thing:getSubjectPronoun()) .. " " .. thing:getSubjectVerb() .. " " end - descr = descr .. "married to " .. getPlayerNameById(playerSpouse) .. '.' + descr = descr .. "married to " .. getPlayerNameById(playerSpouse) .. "." end return descr end @@ -432,7 +434,7 @@ function Player:createFamiliar(familiarName, timeLeft) self:setStorageValue( FAMILIAR_TIMER[sendMessage].storage, addEvent( - -- Calling function + -- Calling function SendMessageFunction, -- Time for execute event (timeLeft - FAMILIAR_TIMER[sendMessage].countdown) * 1000, @@ -577,7 +579,7 @@ function Player:calculateLootFactor(monster) if self:getStamina() <= 840 then return { factor = 0.0, - msgSuffix = " (due to low stamina)" + msgSuffix = " (due to low stamina)", } end @@ -613,7 +615,7 @@ function Player:calculateLootFactor(monster) return { factor = factor, - msgSuffix = suffix + msgSuffix = suffix, } end diff --git a/data/libs/functions/position.lua b/data/libs/functions/position.lua index a694033762b..36ddc337aed 100644 --- a/data/libs/functions/position.lua +++ b/data/libs/functions/position.lua @@ -7,7 +7,7 @@ Position.directionOffset = { [DIRECTION_SOUTHWEST] = { x = -1, y = 1 }, [DIRECTION_SOUTHEAST] = { x = 1, y = 1 }, [DIRECTION_NORTHWEST] = { x = -1, y = -1 }, - [DIRECTION_NORTHEAST] = { x = 1, y = -1 } + [DIRECTION_NORTHEAST] = { x = 1, y = -1 }, } function Position:getNextPosition(direction, steps) @@ -56,18 +56,16 @@ function Position:isInRange(from, to) nW = { x = (from.x < to.x and from.x or to.x), y = (from.y < to.y and from.y or to.y), - z = (from.z < to.z and from.z or to.z) + z = (from.z < to.z and from.z or to.z), }, sE = { x = (to.x > from.x and to.x or from.x), y = (to.y > from.y and to.y or from.y), - z = (to.z > from.z and to.z or from.z) - } + z = (to.z > from.z and to.z or from.z), + }, } - if self.x >= zone.nW.x and self.x <= zone.sE.x - and self.y >= zone.nW.y and self.y <= zone.sE.y - and self.z >= zone.nW.z and self.z <= zone.sE.z then + if self.x >= zone.nW.x and self.x <= zone.sE.x and self.y >= zone.nW.y and self.y <= zone.sE.y and self.z >= zone.nW.z and self.z <= zone.sE.z then return true end return false @@ -84,7 +82,9 @@ function Position:moveDownstairs() local defaultPosition = self + Position.directionOffset[DIRECTION_SOUTH] local tile = Tile(defaultPosition) - if not tile then return false end + if not tile then + return false + end if not tile:isWalkable(false, false, false, false, true) then for direction = DIRECTION_NORTH, DIRECTION_NORTHEAST do @@ -94,7 +94,9 @@ function Position:moveDownstairs() local position = self + Position.directionOffset[direction] local newTile = Tile(position) - if not newTile then return false end + if not newTile then + return false + end if newTile:isWalkable(false, false, false, false, true) then swap(self, position) @@ -134,8 +136,7 @@ end function Position.removeMonster(centerPosition, rangeX, rangeY) local spectators = Game.getSpectators(centerPosition, false, false, rangeX, rangeX, rangeY, rangeY) - local spectators, - spectator = Game.getSpectators(centerPosition, false, false, rangeX, rangeX, rangeY, rangeY) + local spectators, spectator = Game.getSpectators(centerPosition, false, false, rangeX, rangeX, rangeY, rangeY) for i = 1, #spectators do spectator = spectators[i] if spectator:isMonster() then @@ -177,24 +178,24 @@ end function Position.getDirectionTo(pos1, pos2) local dir = DIRECTION_NORTH - if (pos1.x > pos2.x) then + if pos1.x > pos2.x then dir = DIRECTION_WEST - if (pos1.y > pos2.y) then + if pos1.y > pos2.y then dir = DIRECTION_NORTHWEST - elseif (pos1.y < pos2.y) then + elseif pos1.y < pos2.y then dir = DIRECTION_SOUTHWEST end - elseif (pos1.x < pos2.x) then + elseif pos1.x < pos2.x then dir = DIRECTION_EAST - if (pos1.y > pos2.y) then + if pos1.y > pos2.y then dir = DIRECTION_NORTHEAST - elseif (pos1.y < pos2.y) then + elseif pos1.y < pos2.y then dir = DIRECTION_SOUTHEAST end else - if (pos1.y > pos2.y) then + if pos1.y > pos2.y then dir = DIRECTION_NORTH - elseif (pos1.y < pos2.y) then + elseif pos1.y < pos2.y then dir = DIRECTION_SOUTH end end diff --git a/data/libs/functions/quests.lua b/data/libs/functions/quests.lua index a8f7066d38e..66414115eaf 100644 --- a/data/libs/functions/quests.lua +++ b/data/libs/functions/quests.lua @@ -62,7 +62,7 @@ function Player.resetTrackedMissions(self, missions) missionId = missionId, questName = questName, missionName = self:getMissionName(questId, missionIndex), - missionDesc = self:getMissionDescription(questId, missionIndex) + missionDesc = self:getMissionDescription(questId, missionIndex), } table.insert(PlayerTrackedMissionsData[self:getId()], data) if #PlayerTrackedMissionsData[self:getId()] >= maxAllowed then @@ -124,9 +124,9 @@ function Player.getMissionsData(self, storage) local data = { missionId = mission.missionId, missionName = self:getMissionName(questId, missionId), - missionDesc = self:getMissionDescription(questId, missionId) + missionDesc = self:getMissionDescription(questId, missionId), } - missions[#missions+1] = data + missions[#missions + 1] = data end end end @@ -375,8 +375,7 @@ function Player.updateStorage(self, key, value, oldValue, currentFrameTime) end local function sendPrint(questId, index) - logger.warn("[sendPrint] - Quest id:[{}]] mission:[{}]", - questId, index) + logger.warn("[sendPrint] - Quest id:[{}]] mission:[{}]", questId, index) end for questId = 1, #Quests do diff --git a/data/libs/functions/revscriptsys.lua b/data/libs/functions/revscriptsys.lua index 26b2a5497ab..5a31ec086f3 100644 --- a/data/libs/functions/revscriptsys.lua +++ b/data/libs/functions/revscriptsys.lua @@ -11,8 +11,12 @@ function createFunctions(class) end if add then local str = name:sub(1, 1):upper() .. name:sub(2) - local getFunc = function(self) return func(self) end - local setFunc = function(self, ...) return func(self, ...) end + local getFunc = function(self) + return func(self) + end + local setFunc = function(self, ...) + return func(self, ...) + end local get = "get" .. str local set = "set" .. str if not (rawget(class, get) and rawget(class, set)) then diff --git a/data/libs/functions/spawn.lua b/data/libs/functions/spawn.lua index 1b807461b4a..8ebc01b3744 100644 --- a/data/libs/functions/spawn.lua +++ b/data/libs/functions/spawn.lua @@ -5,7 +5,7 @@ MonsterStorage = { Spawn = { info = 550000, monster_spawn_object = 550001, - } + }, } Spawn = {} SpawnMetatables = {} @@ -22,22 +22,22 @@ setmetatable(Spawn, { ["onSpawn"] = { ["MonsterDeath"] = function(s, monster) monster:setStorageValue(s.storage.object, s) - monster:registerEvent('monsterDeath') - end + monster:registerEvent("monsterDeath") + end, }, ["onDeath"] = { ["Respawn"] = function(s, monster) if monster:getStorageValue(s.storage.info) > 0 then s:spawnMonsterIndex(monster:getStorageValue(s.storage.info)) end - end - } - } + end, + }, + }, } local mt = setmetatable(spawn_data, { __index = Spawn }) table.insert(SpawnMetatables, mt) return mt - end + end, }) -- positions - {monster = "Rat" ,pos = Position(x, y, z), spawntime = 60, status = true} @@ -160,7 +160,7 @@ function Spawn.spawnMonsterIndex(self, index) local config = { spawntime = table.spawntime, monster = table.monster, - pos = table.pos + pos = table.pos, } local func = function(s, monster) monster:setStorageValue(s.storage.info, index) @@ -176,7 +176,7 @@ end function Spawn.executeSpawn(self) local pos = self:getPositions() if not pos then - error('Not set pos') + error("Not set pos") return false end for i, v in pairs(pos) do @@ -187,7 +187,7 @@ end function Spawn.removeSpawn(self) local pos = self:getPositions() if not pos then - error('Not set pos') + error("Not set pos") return false end for i, v in pairs(pos) do @@ -199,7 +199,7 @@ function Spawn.checkMonstersUID(self) local monsters = self:getMonsters() local statistics = { active = 0, - inactive = 0 + inactive = 0, } for i, v in pairs(monsters) do if v ~= nil and v:isMonster() then diff --git a/data/libs/functions/spectators.lua b/data/libs/functions/spectators.lua index 8d3cd5536be..4ca1797f4f2 100644 --- a/data/libs/functions/spectators.lua +++ b/data/libs/functions/spectators.lua @@ -7,13 +7,12 @@ setmetatable(Spectators, { only_player = true, multi_floor = false, blacklist_pos = {}, - creature_detect = {} + creature_detect = {}, } return setmetatable(spectators_data, { __index = Spectators }) - end + end, }) - function Spectators.getOnlyPlayer(self) return self.only_player end @@ -79,18 +78,14 @@ function Spectators.convertPosToRange(self) return { x = (pos.to.x - pos.from.x) / 2, y = (pos.to.y - pos.from.y) / 2, - z = pos.from.z + z = pos.from.z, } end function Spectators.convertPos(self) local pos = self:getCheckPosition() local range = self:convertPosToRange() - return Position( - pos.from.x + range.x, - pos.from.y + range.y, - range.z - ) + return Position(pos.from.x + range.x, pos.from.y + range.y, range.z) end function Spectators.checkCreatureBlacklistPos(self, creature) @@ -150,7 +145,7 @@ end function Spectators.getPlayers(self) local count = 0 if not self:getCreatureDetect() then - error('Not creature detect') + error("Not creature detect") return nil end for _, v in pairs(self:getCreatureDetect()) do diff --git a/data/libs/functions/string.lua b/data/libs/functions/string.lua index 5e1d0c2193d..5d41af47c75 100644 --- a/data/libs/functions/string.lua +++ b/data/libs/functions/string.lua @@ -4,7 +4,7 @@ string.split = function(str, sep) local res = {} for v in str:gmatch("([^" .. sep .. "]+)") do - res[#res+1] = v + res[#res + 1] = v end return res end @@ -13,7 +13,7 @@ end -- @param str (string) - the string to be modified -- @return the string without whitespace at the beginning and end string.trim = function(str) - return str:match '^()%s*$' and '' or str:match '^%s*(.*%S)' + return str:match("^()%s*$") and "" or str:match("^%s*(.*%S)") end --- Function that checks if a string starts with a specific substring @@ -27,7 +27,9 @@ end -- @param str (string) - the string to be modified -- @return the string with each word starting with an uppercase letter string.titleCase = function(str) - return str:gsub("(%a)([%w_']*)", function(first, rest) return first:upper() .. rest:lower() end) + return str:gsub("(%a)([%w_']*)", function(first, rest) + return first:upper() .. rest:lower() + end) end --- Function that converts a time interval into a human-readable format @@ -35,22 +37,22 @@ end -- @return a string representing the time interval in a readable format string.diff = function(diff) local format = { - { 'day', diff / 60 / 60 / 24 }, - { 'hour', diff / 60 / 60 % 24 }, - { 'minute', diff / 60 % 60 }, - { 'second', diff % 60 } + { "day", diff / 60 / 60 / 24 }, + { "hour", diff / 60 / 60 % 24 }, + { "minute", diff / 60 % 60 }, + { "second", diff % 60 }, } local out = {} for k, t in ipairs(format) do local v = math.floor(t[2]) - if (v > 0) then - table.insert(out, (k < #format and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or '')) + if v > 0 then + table.insert(out, (k < #format and (#out > 0 and ", " or "") or " and ") .. v .. " " .. t[1] .. (v ~= 1 and "s" or "")) end end local ret = table.concat(out) - if ret:len() < 16 and ret:find('second') then - local a, b = ret:find(' and ') + if ret:len() < 16 and ret:find("second") then + local a, b = ret:find(" and ") ret = ret:sub(b + 1) end return ret @@ -78,7 +80,7 @@ end string.split = function(str, sep) local res = {} for v in str:gmatch("([^" .. sep .. "]+)") do - res[#res+1] = v + res[#res + 1] = v end return res end @@ -89,7 +91,7 @@ end string.splitTrimmed = function(str, sep) local res = {} for v in str:gmatch("([^" .. sep .. "]+)") do - res[#res+1] = v:trim() + res[#res + 1] = v:trim() end return res end @@ -98,7 +100,7 @@ end -- @param str (string) - the string to be modified -- @return the string without whitespace at the beginning and end string.trim = function(str) - return str:match('^%s*(.*%S)') or '' + return str:match("^%s*(.*%S)") or "" end --- Function to format a string with a table of arguments @@ -106,7 +108,9 @@ end -- @return the formatted string -- Example: string.formatNamed("Hello ${name}!", {name = "World"}) -> "Hello World!" string.formatNamed = function(str, args) - return (str:gsub('($%b{})', function(w) return args[w:sub(3, -2)] or w end)) + return (str:gsub("($%b{})", function(w) + return args[w:sub(3, -2)] or w + end)) end string.capitalize = function(str) diff --git a/data/libs/functions/tables.lua b/data/libs/functions/tables.lua index 0e5878b93a9..1c798ecb2e0 100644 --- a/data/libs/functions/tables.lua +++ b/data/libs/functions/tables.lua @@ -5,7 +5,7 @@ end table.find = function(table, value) for i, v in pairs(table) do - if (v == value) then + if v == value then return i end end @@ -25,7 +25,7 @@ end table.count = function(table, item) local count = 0 for i, n in pairs(table) do - if (item == n) then + if item == n then count = count + 1 end end @@ -37,23 +37,23 @@ table.countElements = table.count table.getCombinations = function(table, num) local a, number, select, newlist = {}, #table, num, {} for i = 1, select do - a[#a+1] = i + a[#a + 1] = i end local newthing = {} - while (true) do + while true do local newrow = {} for i = 1, select do - newrow[#newrow+1] = table[a[i]] + newrow[#newrow + 1] = table[a[i]] end - newlist[#newlist+1] = newrow + newlist[#newlist + 1] = newrow i = select - while (a[i] == (number - select + i)) do + while a[i] == (number - select + i) do i = i - 1 end - if (i < 1) then + if i < 1 then break end @@ -70,18 +70,18 @@ function table.serialize(x, recur) local t = type(x) recur = recur or {} - if (t == nil) then + if t == nil then return "nil" - elseif (t == "string") then + elseif t == "string" then return string.format("%q", x) - elseif (t == "number") then + elseif t == "number" then return tostring(x) - elseif (t == "boolean") then + elseif t == "boolean" then return t and "true" or "false" - elseif (getmetatable(x)) then + elseif getmetatable(x) then error("Can not serialize a table that has a metatable associated with it.") - elseif (t == "table") then - if (table.find(recur, x)) then + elseif t == "table" then + if table.find(recur, x) then error("Can not serialize recursive tables.") end table.append(recur, x) @@ -104,7 +104,9 @@ end function pairsByKeys(t, f) local a = {} - for n in pairs(t) do table.insert(a, n) end + for n in pairs(t) do + table.insert(a, n) + end table.sort(a, f) local i = 0 -- iterator variable local iter = function() -- iterator function diff --git a/data/libs/functions/tile.lua b/data/libs/functions/tile.lua index acf34aed872..70690c65f7a 100644 --- a/data/libs/functions/tile.lua +++ b/data/libs/functions/tile.lua @@ -37,22 +37,38 @@ function Tile.relocateTo(self, toPosition) end function Tile:isWalkable(pz, creature, floorchange, block, proj) - if not self then return false end - if not self:getGround() then return false end - if self:hasProperty(CONST_PROP_BLOCKSOLID) or self:hasProperty(CONST_PROP_BLOCKPROJECTILE) then return false end - if pz and (self:hasFlag(TILESTATE_HOUSE) or self:hasFlag(TILESTATE_PROTECTIONZONE)) then return false end - if creature and self:getTopCreature() ~= nil then return false end - if floorchange and self:hasFlag(TILESTATE_FLOORCHANGE) then return false end + if not self then + return false + end + if not self:getGround() then + return false + end + if self:hasProperty(CONST_PROP_BLOCKSOLID) or self:hasProperty(CONST_PROP_BLOCKPROJECTILE) then + return false + end + if pz and (self:hasFlag(TILESTATE_HOUSE) or self:hasFlag(TILESTATE_PROTECTIONZONE)) then + return false + end + if creature and self:getTopCreature() ~= nil then + return false + end + if floorchange and self:hasFlag(TILESTATE_FLOORCHANGE) then + return false + end if block then local topStackItem = self:getTopTopItem() - if topStackItem and topStackItem:hasProperty(CONST_PROP_BLOCKPATH) then return false end + if topStackItem and topStackItem:hasProperty(CONST_PROP_BLOCKPATH) then + return false + end end if proj then local items = self:getItems() if #items > 0 then for i = 1, #items do local itemType = ItemType(items[i]) - if itemType:getType() ~= ITEM_TYPE_MAGICFIELD and not itemType:isMovable() and items[i]:hasProperty(CONST_PROP_BLOCKSOLID) then return false end + if itemType:getType() ~= ITEM_TYPE_MAGICFIELD and not itemType:isMovable() and items[i]:hasProperty(CONST_PROP_BLOCKSOLID) then + return false + end end end end diff --git a/data/libs/hazard_lib.lua b/data/libs/hazard_lib.lua index 8420adbe938..a93da2a82c0 100644 --- a/data/libs/hazard_lib.lua +++ b/data/libs/hazard_lib.lua @@ -1,5 +1,5 @@ Hazard = { - areas = {} + areas = {}, } function Hazard.new(prototype) @@ -57,7 +57,9 @@ function Hazard:setPlayerCurrentLevel(player, level) end player:setStorageValue(self.storageCurrent, level) local zones = player:getZones() - if not zones then return true end + if not zones then + return true + end for _, zone in ipairs(zones) do local hazard = Hazard.getByName(zone:getName()) if hazard then @@ -93,7 +95,9 @@ end function Hazard:isInZone(position) local zones = position:getZones() - if not zones then return false end + if not zones then + return false + end for _, zone in ipairs(zones) do local hazard = Hazard.getByName(zone:getName()) if hazard then @@ -112,13 +116,17 @@ function Hazard:register() function event.afterEnter(zone, creature) local player = creature:getPlayer() - if not player then return end + if not player then + return + end player:setHazardSystemPoints(self:getPlayerCurrentLevel(player)) end function event.afterLeave(zone, creature) local player = creature:getPlayer() - if not player then return end + if not player then + return + end player:setHazardSystemPoints(0) end @@ -131,7 +139,7 @@ function Hazard.getByName(name) end if not HazardMonster then - HazardMonster = { eventName = 'HazardMonster' } + HazardMonster = { eventName = "HazardMonster" } end function HazardMonster.onSpawn(monster, position) @@ -141,7 +149,9 @@ function HazardMonster.onSpawn(monster, position) end local zones = position:getZones() - if not zones then return true end + if not zones then + return true + end for _, zone in ipairs(zones) do local hazard = Hazard.getByName(zone:getName()) if hazard then diff --git a/data/libs/hireling_lib.lua b/data/libs/hireling_lib.lua index 37e24ba3937..bf21b328661 100644 --- a/data/libs/hireling_lib.lua +++ b/data/libs/hireling_lib.lua @@ -1,7 +1,7 @@ HIRELING_CREDITS = { Developer = 'Leonardo "Leu" Pereira (jlcvp)', Version = "1.0-CoronaVaires", - Date = "29/04/2020" + Date = "29/04/2020", } local DEBUG = true -- print debug to console @@ -18,12 +18,12 @@ function DebugPrint(str) end function printTable(t) - local str = '{' + local str = "{" for k, v in pairs(t) do str = str .. string.format("\n %s = %s", tostring(k), tostring(v)) end - str = str .. '\n}' + str = str .. "\n}" logger.debug(str) end @@ -33,12 +33,12 @@ HIRELING_SKILLS = { BANKER = 1, -- 1<<0 COOKING = 2, -- 1<<1 STEWARD = 4, -- 1<<2 - TRADER = 8 -- 1<<3 + TRADER = 8, -- 1<<3 } HIRELING_SEX = { FEMALE = 2, - MALE = 1 + MALE = 1, } HIRELING_OUTFIT_DEFAULT = { name = "Citizen", female = 1107, male = 1108 } @@ -52,7 +52,7 @@ HIRELING_OUTFITS = { HYDRA = 32, FERUMBRAS = 64, BONELORD = 128, - DRAGON = 256 + DRAGON = 256, } HIRELING_OUTFITS_TABLE = { @@ -64,12 +64,12 @@ HIRELING_OUTFITS_TABLE = { HYDRA = { name = "Hydra Dress", female = 1129, male = 1130 }, SERVANT = { name = "Servant Dress", female = 1117, male = 1118 }, STEWARD = { name = "Stewart Dress", female = 1115, male = 1116 }, - TRADER = { name = "Trader Dress", female = 1111, male = 1112 } + TRADER = { name = "Trader Dress", female = 1111, male = 1112 }, } HIRELING_STORAGE = { SKILL = 28800, - OUTFIT = 28900 + OUTFIT = 28900, } HIRELING_FOODS_BOOST = { @@ -80,7 +80,11 @@ HIRELING_FOODS_BOOST = { } HIRELING_FOODS = { -- only the non-skill ones - 29412, 29413, 29414, 29415, 29416 + 29412, + 29413, + 29414, + 29415, + 29416, } -- [[ LOCAL FUNCTIONS AND UTILS ]] @@ -104,7 +108,9 @@ local function checkHouseAccess(hireling) player = Game.getOfflinePlayer(hireling:getOwnerId()) end - if house:getOwnerGuid() == hireling:getOwnerId() then return true end + if house:getOwnerGuid() == hireling:getOwnerId() then + return true + end -- player is not invited anymore, return to lamp logger.info("Returning Hireling: {} to owner Inbox", hireling:getName()) @@ -139,8 +145,7 @@ local function addStorageCacheValue(player_id, storage, value) end local function initStorageCache() - local sql = string.format("SELECT `player_id`, `key`, `value` FROM `player_storage` " .. - "WHERE `key` IN (%d,%d)", HIRELING_STORAGE.SKILL, HIRELING_STORAGE.OUTFIT) + local sql = string.format("SELECT `player_id`, `key`, `value` FROM `player_storage` " .. "WHERE `key` IN (%d,%d)", HIRELING_STORAGE.SKILL, HIRELING_STORAGE.OUTFIT) local resultId = db.storeQuery(sql) if resultId ~= false then @@ -170,7 +175,7 @@ end Hireling = { id = -1, player_id = -1, - name = 'hireling', + name = "hireling", skills = 0, active = 0, sex = 0, @@ -182,7 +187,7 @@ Hireling = { lookhead = 97, looklegs = 3, looktype = 0, - cid = -1 + cid = -1, } function Hireling:new(o) @@ -205,12 +210,18 @@ function Hireling:getName() end function Hireling:canTalkTo(player) - if not player then return false end + if not player then + return false + end local tile = Tile(player:getPosition()) - if not tile then return false end + if not tile then + return false + end local house = tile:getHouse() - if not house then return false end + if not house then + return false + end local hirelingHouse = Tile(self:getPosition()):getHouse() @@ -235,7 +246,7 @@ function Hireling:getOutfit() lookMount = 0, lookLegs = self.looklegs, lookBody = self.lookbody, - lookFeet = self.lookfeet + lookFeet = self.lookfeet, } return outfit @@ -243,7 +254,7 @@ end function Hireling:getAvailableOutfits() local flags = getStorageForPlayer(self:getOwnerId(), HIRELING_STORAGE.OUTFIT) - local sex = (self.sex == HIRELING_SEX.FEMALE) and 'female' or 'male' + local sex = (self.sex == HIRELING_SEX.FEMALE) and "female" or "male" local outfits = {} -- add default outfit @@ -254,7 +265,7 @@ function Hireling:getAvailableOutfits() if hasBitSet(value, flags) then outfit = { name = HIRELING_OUTFITS_TABLE[key].name, - lookType = HIRELING_OUTFITS_TABLE[key][sex] + lookType = HIRELING_OUTFITS_TABLE[key][sex], } table.insert(outfits, outfit) end @@ -295,7 +306,9 @@ end function Hireling:changeOutfit(outfit) HIRELING_OUTFIT_CHANGING[self:getOwnerId()] = nil --clear flag - if not self:hasOutfit(outfit.lookType) then return end + if not self:hasOutfit(outfit.lookType) then + return + end local npc = Npc(self.cid) local creature = Creature(npc) --maybe self.cid works here too @@ -470,8 +483,22 @@ function HirelingsInit() end function PersistHireling(hireling) - db.query(string.format("INSERT INTO `player_hirelings` (`player_id`,`name`,`active`,`sex`,`posx`,`posy`,`posz`,`lookbody`,`lookfeet`,`lookhead`,`looklegs`,`looktype`) VALUES (%d, %s, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)", - hireling.player_id, db.escapeString(hireling.name), hireling.active, hireling.sex, hireling.posx, hireling.posy, hireling.posz, hireling.lookbody, hireling.lookfeet, hireling.lookhead, hireling.looklegs, hireling.looktype) + db.query( + string.format( + "INSERT INTO `player_hirelings` (`player_id`,`name`,`active`,`sex`,`posx`,`posy`,`posz`,`lookbody`,`lookfeet`,`lookhead`,`looklegs`,`looktype`) VALUES (%d, %s, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)", + hireling.player_id, + db.escapeString(hireling.name), + hireling.active, + hireling.sex, + hireling.posx, + hireling.posy, + hireling.posz, + hireling.lookbody, + hireling.lookfeet, + hireling.lookhead, + hireling.looklegs, + hireling.looktype + ) ) local hirelings = PLAYER_HIRELINGS[hireling.player_id] or {} @@ -486,7 +513,7 @@ function PersistHireling(hireling) local resultId = db.storeQuery(query) if resultId then - local id = Result.getNumber(resultId, 'id') + local id = Result.getNumber(resultId, "id") hireling.id = id return true else @@ -534,7 +561,7 @@ function Player:addNewHireling(name, sex) local saved = PersistHireling(hireling) if not saved then - DebugPrint('Error saving Hireling:' .. name .. ' - player:' .. self:getName()) + DebugPrint("Error saving Hireling:" .. name .. " - player:" .. self:getName()) return false else if not PLAYER_HIRELINGS[self:getGuid()] then @@ -609,7 +636,7 @@ function Player:hasHirelings() end function Player:copyHirelingStorageToCache() - if (self:hasHirelings()) then + if self:hasHirelings() then local storageSkill = self:getStorageValue(HIRELING_STORAGE.SKILL) local storageOutfit = self:getStorageValue(HIRELING_STORAGE.OUTFIT) addStorageCacheValue(self:getGuid(), HIRELING_STORAGE.SKILL, storageSkill) @@ -619,7 +646,9 @@ end function Player:findHirelingLamp(hirelingId) local inbox = self:getSlotItem(CONST_SLOT_STORE_INBOX) - if not inbox then return nil end + if not inbox then + return nil + end local lastIndex = inbox:getSize() - 1 for i = 0, lastIndex do @@ -635,14 +664,14 @@ function Player:sendHirelingSelectionModal(title, message, callback, data) -- callback(playerId, data, hireling) -- get all hireling list local hirelings = self:getHirelings() - local modal = ModalWindow { + local modal = ModalWindow({ title = title, - message = message - } + message = message, + }) local hireling for i = 1, #hirelings do hireling = hirelings[i] - local choice = modal:addChoice(string.format('#%d - %s', i, hireling:getName())) + local choice = modal:addChoice(string.format("#%d - %s", i, hireling:getName())) choice.hireling = hireling end @@ -652,22 +681,24 @@ function Player:sendHirelingSelectionModal(title, message, callback, data) callback(playerId, data, hrlng) end - local internalCancel = function(btn, choice) callback(playerId, data, nil) end + local internalCancel = function(btn, choice) + callback(playerId, data, nil) + end - modal:addButton('Select', internalConfirm) - modal:setDefaultEnterButton('Select') - modal:addButton('Cancel', internalCancel) - modal:setDefaultEscapeButton('Cancel') + modal:addButton("Select", internalConfirm) + modal:setDefaultEnterButton("Select") + modal:addButton("Cancel", internalCancel) + modal:setDefaultEscapeButton("Cancel") modal:sendToPlayer(self) end function Player:showInfoModal(title, message, buttonText) - local modal = ModalWindow { + local modal = ModalWindow({ title = title, - message = message - } - buttonText = buttonText or 'Close' + message = message, + }) + buttonText = buttonText or "Close" modal:addButton(buttonText, function() end) modal:setDefaultEscapeButton(buttonText) @@ -685,7 +716,9 @@ end function Player:enableHirelingSkill(SKILL) local skills = self:getStorageValue(HIRELING_STORAGE.SKILL) - if skills < 0 then skills = 0 end + if skills < 0 then + skills = 0 + end skills = setFlag(SKILL, skills) self:setStorageValue(HIRELING_STORAGE.SKILL, skills) self:copyHirelingStorageToCache() @@ -702,7 +735,9 @@ end function Player:enableHirelingOutfit(OUTFIT) local outfits = self:getStorageValue(HIRELING_STORAGE.OUTFIT) - if outfits < 0 then outfits = 0 end + if outfits < 0 then + outfits = 0 + end outfits = setFlag(OUTFIT, outfits) self:setStorageValue(HIRELING_STORAGE.OUTFIT, outfits) self:copyHirelingStorageToCache() diff --git a/data/libs/loyalty_lib.lua b/data/libs/loyalty_lib.lua index 9a439e2cdd0..7665c5261d8 100644 --- a/data/libs/loyalty_lib.lua +++ b/data/libs/loyalty_lib.lua @@ -25,7 +25,7 @@ local loyaltySystem = { { minPoints = 3240, percentage = 45 }, { minPoints = 3600, percentage = 50 }, }, - messageTemplate = "Due to your long-term loyalty to " .. SERVER_NAME .. " you currently benefit from a ${bonusPercentage}% bonus on all of your skills. (You have ${loyaltyPoints} loyalty points)" + messageTemplate = "Due to your long-term loyalty to " .. SERVER_NAME .. " you currently benefit from a ${bonusPercentage}% bonus on all of your skills. (You have ${loyaltyPoints} loyalty points)", } function Player.initializeLoyaltySystem(self) diff --git a/data/libs/modal_window_lib.lua b/data/libs/modal_window_lib.lua index fa1b2c19dae..9de5e394cc5 100644 --- a/data/libs/modal_window_lib.lua +++ b/data/libs/modal_window_lib.lua @@ -25,7 +25,7 @@ end setmetatable(ModalWindow, { __call = function(self, ...) return ModalWindow.new(...) - end + end, }) function ModalWindow:setTitle(title) diff --git a/data/libs/reward_boss/monster.lua b/data/libs/reward_boss/monster.lua index fb0ebf420a2..84173fefd96 100644 --- a/data/libs/reward_boss/monster.lua +++ b/data/libs/reward_boss/monster.lua @@ -57,6 +57,6 @@ function MonsterType.getBossReward(self, lootFactor, topScore, equipmentOnly, lo return not unique and isEquipment(itemType) end return true - end + end, }, lootTable) end diff --git a/data/libs/reward_boss/reward_boss.lua b/data/libs/reward_boss/reward_boss.lua index af21cc23a01..1a01fbd657b 100644 --- a/data/libs/reward_boss/reward_boss.lua +++ b/data/libs/reward_boss/reward_boss.lua @@ -53,13 +53,13 @@ function InsertItems(buffer, info, parent, items) end function InsertRewardItems(playerGuid, timestamp, itemList) - local maxSidQueryResult = db.query('select max(`sid`) as max_sid from `player_rewards` where player_id = ' .. playerGuid .. ';') - local bagSid = (Result.getNumber(maxSidQueryResult, 'max_sid') or 0) + 1; - local nextSid = bagSid + 1; - local buffer = { 'INSERT INTO `player_rewards` (`player_id`, `pid`, `sid`, `itemtype`, `count`, `attributes`) VALUES' } + local maxSidQueryResult = db.query("select max(`sid`) as max_sid from `player_rewards` where player_id = " .. playerGuid .. ";") + local bagSid = (Result.getNumber(maxSidQueryResult, "max_sid") or 0) + 1 + local nextSid = bagSid + 1 + local buffer = { "INSERT INTO `player_rewards` (`player_id`, `pid`, `sid`, `itemtype`, `count`, `attributes`) VALUES" } local info = { playerGuid = playerGuid, - running = nextSid + running = nextSid, } local bag = Game.createItem(ITEM_REWARD_CONTAINER) bag:setAttribute(ITEM_ATTRIBUTE_DATE, timestamp) @@ -71,7 +71,7 @@ function InsertRewardItems(playerGuid, timestamp, itemList) local total = InsertItems(buffer, info, bagSid, { bag }) if total ~= 0 then - local insertItemsQuery = table.concat(buffer):sub(1, -2) .. ";"; + local insertItemsQuery = table.concat(buffer):sub(1, -2) .. ";" db.query(insertItemsQuery) end end diff --git a/data/libs/vocation.lua b/data/libs/vocation.lua index 3548c8cb841..fd439de6520 100644 --- a/data/libs/vocation.lua +++ b/data/libs/vocation.lua @@ -8,7 +8,7 @@ VOCATION = { MASTER_SORCERER = 5, ELDER_DRUID = 6, ROYAL_PALADIN = 7, - ELITE_KNIGHT = 8 + ELITE_KNIGHT = 8, }, CLIENT_ID = { NONE = 0, @@ -19,13 +19,13 @@ VOCATION = { ELITE_KNIGHT = 11, ROYAL_PALADIN = 12, MASTER_SORCERER = 13, - ELDER_DRUID = 14 + ELDER_DRUID = 14, }, BASE_ID = { NONE = 0, SORCERER = 1, DRUID = 2, PALADIN = 3, - KNIGHT = 4 - } + KNIGHT = 4, + }, } diff --git a/data/libs/window.lua b/data/libs/window.lua index 75371023038..c640355b4e2 100644 --- a/data/libs/window.lua +++ b/data/libs/window.lua @@ -90,5 +90,5 @@ windowTable = { { closedWindow = 33640, openWindow = 33638 }, { closedWindow = 33641, openWindow = 33639 }, { closedWindow = 33644, openWindow = 33642 }, - { closedWindow = 33645, openWindow = 33643 } + { closedWindow = 33645, openWindow = 33643 }, } diff --git a/data/libs/zones_lib.lua b/data/libs/zones_lib.lua index 9622c7b79a2..33565bc9780 100644 --- a/data/libs/zones_lib.lua +++ b/data/libs/zones_lib.lua @@ -54,7 +54,9 @@ end function Zone:isInZone(position) local zones = position:getZones() - if not zones then return false end + if not zones then + return false + end for _, zone in ipairs(zones) do if zone == self then return true @@ -80,14 +82,16 @@ setmetatable(ZoneEvent, { obj.onEnter = nil obj.onLeave = nil return obj - end + end, }) function ZoneEvent:register() if self.beforeEnter then local beforeEnter = EventCallback() function beforeEnter.zoneBeforeCreatureEnter(zone, creature) - if zone ~= self.zone then return true end + if zone ~= self.zone then + return true + end return self.beforeEnter(zone, creature) end @@ -97,7 +101,9 @@ function ZoneEvent:register() if self.beforeLeave then local beforeLeave = EventCallback() function beforeLeave.zoneBeforeCreatureLeave(zone, creature) - if zone ~= self.zone then return true end + if zone ~= self.zone then + return true + end return self.beforeLeave(zone, creature) end @@ -107,7 +113,9 @@ function ZoneEvent:register() if self.afterEnter then local afterEnter = EventCallback() function afterEnter.zoneAfterCreatureEnter(zone, creature) - if zone ~= self.zone then return true end + if zone ~= self.zone then + return true + end self.afterEnter(zone, creature) end @@ -117,7 +125,9 @@ function ZoneEvent:register() if self.afterLeave then local afterLeave = EventCallback() function afterLeave.zoneAfterCreatureLeave(zone, creature) - if zone ~= self.zone then return true end + if zone ~= self.zone then + return true + end self.afterLeave(zone, creature) end diff --git a/data/modules/scripts/blessings/assets.lua b/data/modules/scripts/blessings/assets.lua index 26ab6fbd55a..73d02a272f3 100644 --- a/data/modules/scripts/blessings/assets.lua +++ b/data/modules/scripts/blessings/assets.lua @@ -1,7 +1,7 @@ Blessings.Types = { REGULAR = 1, ENHANCED = 2, - PvP = 3 + PvP = 3, } Blessings.All = { @@ -12,10 +12,9 @@ Blessings.All = { [5] = { id = 5, name = "The Spiritual Shielding", charm = 10343, type = Blessings.Types.REGULAR, losscount = true, inquisition = true }, [6] = { id = 6, name = "The Embrace of Tibia", charm = 10342, type = Blessings.Types.REGULAR, losscount = true, inquisition = true }, [7] = { id = 7, name = "Blood of the Mountain", charm = 25360, type = Blessings.Types.ENHANCED, losscount = true, inquisition = false }, - [8] = { id = 8, name = "Heart of the Mountain", charm = 25361, type = Blessings.Types.ENHANCED, losscount = true, inquisition = false } + [8] = { id = 8, name = "Heart of the Mountain", charm = 25361, type = Blessings.Types.ENHANCED, losscount = true, inquisition = false }, } - Blessings.LossPercent = { [0] = { item = 100, skill = 0 }, [1] = { item = 70, skill = 8 }, @@ -25,10 +24,9 @@ Blessings.LossPercent = { [5] = { item = 0, skill = 40 }, [6] = { item = 0, skill = 48 }, [7] = { item = 0, skill = 56 }, - [8] = { item = 0, skill = 56 } + [8] = { item = 0, skill = 56 }, } - Blessings.BitWiseTable = { [0] = 1, [1] = 2, @@ -45,5 +43,5 @@ Blessings.BitWiseTable = { [12] = 4096, [13] = 8192, [14] = 16384, - [15] = 32768 + [15] = 32768, } diff --git a/data/modules/scripts/blessings/blessings.lua b/data/modules/scripts/blessings/blessings.lua index a60469c0771..b4494c24003 100644 --- a/data/modules/scripts/blessings/blessings.lua +++ b/data/modules/scripts/blessings/blessings.lua @@ -15,8 +15,8 @@ Blessings.Credits = { "WotE data\\movements\\scripts\\quests\\wrath of the emperor\\realmTeleport.lua has line checking if player has bless 1??? wtf", "add blessings module support npc\\lib\\npcsystem\\modules.lua", "Fix store buying bless", - "Check if store is inside lua or source..." - } + "Check if store is inside lua or source...", + }, } Blessings.Config = { @@ -25,7 +25,7 @@ Blessings.Config = { InquisitonBlessPriceMultiplier = 1.1, -- Bless price multiplied by henricus SkulledDeathLoseStoreItem = true, -- Destroy all items on store when dying with red/blackskull InventoryGlowOnFiveBless = true, -- Glow in yellow inventory items when the player has 5 or more bless, - Debug = false -- Prin debug messages in console if enabled + Debug = false, -- Prin debug messages in console if enabled } dofile(CORE_DIRECTORY .. "/modules/scripts/blessings/assets.lua") @@ -63,22 +63,21 @@ Blessings.DebugPrint = function(content, pre, pos) logger.debug(content) logger.debug("[Blessings] END BOOL - {}", pos) else - logger.debug("[Blessings] pre:[{}], content[{}], pos[{}]", - pre, content, pos) + logger.debug("[Blessings] pre:[{}], content[{}], pos[{}]", pre, content, pos) end end Blessings.C_Packet = { - OpenWindow = 0xCF + OpenWindow = 0xCF, } Blessings.S_Packet = { BlessDialog = 0x9B, - BlessStatus = 0x9C + BlessStatus = 0x9C, } function onRecvbyte(player, msg, byte) - if (byte == Blessings.C_Packet.OpenWindow) then + if byte == Blessings.C_Packet.OpenWindow then Blessings.sendBlessDialog(player) end end @@ -91,7 +90,9 @@ Blessings.sendBlessStatus = function(player, curBless) -- why not using ProtocolGame::sendBlessStatus ? local msg = NetworkMessage() msg:addByte(Blessings.S_Packet.BlessStatus) - callback = function(k) return true end + callback = function(k) + return true + end if curBless == nil then curBless = player:getBlessings(callback) -- ex: {1, 2, 5, 7} end @@ -129,7 +130,9 @@ Blessings.sendBlessDialog = function(player) local msg = NetworkMessage() msg:addByte(Blessings.S_Packet.BlessDialog) - callback = function(k) return true end + callback = function(k) + return true + end local curBless = player:getBlessings() msg:addByte(Blessings.Config.HasToF and #Blessings.All or (#Blessings.All - 1)) -- total blessings @@ -174,7 +177,6 @@ Blessings.sendBlessDialog = function(player) msg:addByte(haveSkull and 1 or 0) -- is red/black skull msg:addByte(hasAol and 1 or 0) - -- History local historyAmount = 1 msg:addByte(historyAmount) -- History log count @@ -230,12 +232,12 @@ Blessings.useCharm = function(player, item) end if player:hasBlessing(value.id) then - player:say('You already possess this blessing.', TALKTYPE_MONSTER_SAY) + player:say("You already possess this blessing.", TALKTYPE_MONSTER_SAY) return true end player:addBlessing(value.id, 1) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, value.name .. ' protects you.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, value.name .. " protects you.") player:getPosition():sendMagicEffect(CONST_ME_LOSEENERGY) item:remove(1) return true @@ -244,11 +246,11 @@ Blessings.useCharm = function(player, item) end Blessings.checkBless = function(player) - local result, bless = 'Received blessings:' + local result, bless = "Received blessings:" for k, v in pairs(Blessings.All) do - result = player:hasBlessing(k) and result .. '\n' .. v.name or result + result = player:hasBlessing(k) and result .. "\n" .. v.name or result end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 20 > result:len() and 'No blessings received.' or result) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 20 > result:len() and "No blessings received." or result) return true end @@ -258,15 +260,19 @@ Blessings.doAdventurerBlessing = function(player) end player:addMissingBless(true, true) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You received adventurers blessings for you being level lower than ' .. Blessings.Config.AdventurerBlessingLevel .. '!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You received adventurers blessings for you being level lower than " .. Blessings.Config.AdventurerBlessingLevel .. "!") player:getPosition():sendMagicEffect(CONST_ME_HOLYDAMAGE) return true end Blessings.getInquisitionPrice = function(player) -- Find how many missing bless we have and give out the price - inquifilter = function(b) return b.inquisition end - donthavefilter = function(p, b) return not p:hasBlessing(b) end + inquifilter = function(b) + return b.inquisition + end + donthavefilter = function(p, b) + return not p:hasBlessing(b) + end local missing = #player:getBlessings(inquifilter, donthavefilter) local totalBlessPrice = Blessings.getBlessingsCost(player:getLevel(), false) * missing * Blessings.Config.InquisitonBlessPriceMultiplier return missing, totalBlessPrice @@ -299,7 +305,7 @@ Blessings.DropLoot = function(player, corpse, chance, skulled) for i = 0, inbox:getSize() do local item = inbox:getItem(i) if item then - toBeDeleted[#toBeDeleted+1] = item.uid + toBeDeleted[#toBeDeleted + 1] = item.uid end end if #toBeDeleted > 0 then @@ -338,7 +344,9 @@ Blessings.BuyAllBlesses = function(player) local blessCost = Blessings.getBlessingsCost(player:getLevel(), true) local PvPBlessCost = Blessings.getPvpBlessingCost(player:getLevel(), true) local hasToF = Blessings.Config.HasToF and player:hasBlessing(1) or true - donthavefilter = function(p, b) return not p:hasBlessing(b) end + donthavefilter = function(p, b) + return not p:hasBlessing(b) + end local missingBless = player:getBlessings(nil, donthavefilter) local missingBlessAmt = #missingBless + (hasToF and 0 or 1) local totalCost = blessCost * #missingBless @@ -382,7 +390,6 @@ Blessings.PlayerDeath = function(player, corpse, killer) end --Blessings.ClearBless(player, killer, curBless) IMPLEMENTED IN SOURCE BECAUSE THIS WAS HAPPENING BEFORE SKILL/EXP CALCULATIONS - if not player:getSlotItem(CONST_SLOT_BACKPACK) then player:addItem(ITEM_BAG, 1, false, CONST_SLOT_BACKPACK) end @@ -393,11 +400,15 @@ end function Player.getBlessings(self, filter, hasblessingFilter) local blessings = {} if filter == nil then - filter = function(b) return b.losscount end + filter = function(b) + return b.losscount + end end if hasblessingFilter == nil then - hasblessingFilter = function(p, b) return p:hasBlessing(b) end + hasblessingFilter = function(p, b) + return p:hasBlessing(b) + end end for k, v in pairs(Blessings.All) do if filter(v) and hasblessingFilter(self, k) then diff --git a/data/modules/scripts/daily_reward/daily_reward.lua b/data/modules/scripts/daily_reward/daily_reward.lua index 935cb5a1de9..8f39e6c0287 100644 --- a/data/modules/scripts/daily_reward/daily_reward.lua +++ b/data/modules/scripts/daily_reward/daily_reward.lua @@ -2,7 +2,7 @@ DailyRewardSystem = { Developer = "Westwol, Marcosvf132", Version = "1.3", lastUpdate = "12/10/2020 - 20:30", - ToDo = "Move this system to CPP" + ToDo = "Move this system to CPP", } local ServerPackets = { @@ -20,7 +20,7 @@ local ClientPackets = { OpenRewardHistory = 0xD9, SelectReward = 0xDA, CollectionResource = 0x14, - JokerResource = 0x15 + JokerResource = 0x15, } --[[-- Constants @@ -89,7 +89,7 @@ DailyReward = { lastServerSave = 14110, avoidDouble = 13412, notifyReset = 13413, - avoidDoubleJoker = 13414 + avoidDoubleJoker = 13414, }, strikeBonuses = { @@ -100,7 +100,7 @@ DailyReward = { [4] = { text = "Stamina Regeneration" }, [5] = { text = "Double Hit Point Regeneration" }, [6] = { text = "Double Mana Regeneration" }, - [7] = { text = "Soul Points Regeneration" } + [7] = { text = "Soul Points Regeneration" }, }, rewards = { @@ -109,31 +109,31 @@ DailyReward = { type = DAILY_REWARD_TYPE_ITEM, systemType = DAILY_REWARD_SYSTEM_TYPE_ONE, freeAccount = 5, - premiumAccount = 10 + premiumAccount = 10, }, [2] = { type = DAILY_REWARD_TYPE_ITEM, systemType = DAILY_REWARD_SYSTEM_TYPE_ONE, freeAccount = 5, - premiumAccount = 10 + premiumAccount = 10, }, [3] = { type = DAILY_REWARD_TYPE_PREY_REROLL, systemType = DAILY_REWARD_SYSTEM_TYPE_TWO, freeAccount = 1, - premiumAccount = 2 + premiumAccount = 2, }, [4] = { type = DAILY_REWARD_TYPE_ITEM, systemType = DAILY_REWARD_SYSTEM_TYPE_ONE, freeAccount = 10, - premiumAccount = 20 + premiumAccount = 20, }, [5] = { type = DAILY_REWARD_TYPE_PREY_REROLL, systemType = DAILY_REWARD_SYSTEM_TYPE_TWO, freeAccount = 1, - premiumAccount = 2 + premiumAccount = 2, }, [6] = { type = DAILY_REWARD_TYPE_ITEM, @@ -141,14 +141,14 @@ DailyReward = { items = { 28540, 28541, 28542, 28543, 28544, 28545 }, freeAccount = 1, premiumAccount = 2, - itemCharges = 50 + itemCharges = 50, }, [7] = { type = DAILY_REWARD_TYPE_XP_BOOST, systemType = DAILY_REWARD_SYSTEM_TYPE_TWO, freeAccount = 10, - premiumAccount = 30 - } + premiumAccount = 30, + }, -- Storage reward template --[[[5] = { type = DAILY_REWARD_TYPE_STORAGE, @@ -192,23 +192,29 @@ DailyReward = { } } },]] - } + }, } function onRecvbyte(player, msg, byte) - if (byte == ClientPackets.OpenRewardWall) then + if byte == ClientPackets.OpenRewardWall then DailyReward.loadDailyReward(player:getId(), REWARD_FROM_PANEL) - elseif (byte == ClientPackets.OpenRewardHistory) then + elseif byte == ClientPackets.OpenRewardHistory then player:sendRewardHistory() - elseif (byte == ClientPackets.SelectReward) then + elseif byte == ClientPackets.SelectReward then player:selectDailyReward(msg) end end -- Core functions DailyReward.insertHistory = function(playerId, dayStreak, description) - return db.query(string.format("INSERT INTO `daily_reward_history`(`player_id`, `daystreak`, `timestamp`, \z - `description`) VALUES (%s, %s, %s, %s)", playerId, dayStreak, os.time(), db.escapeString(description))) + return db.query(string.format( + "INSERT INTO `daily_reward_history`(`player_id`, `daystreak`, `timestamp`, \z + `description`) VALUES (%s, %s, %s, %s)", + playerId, + dayStreak, + os.time(), + db.escapeString(description) + )) end DailyReward.retrieveHistoryEntries = function(playerId) @@ -310,7 +316,7 @@ DailyReward.init = function(playerId) if player:getNextRewardTime() < GetDailyRewardLastServerSave() then if player:getStorageValue(DailyReward.storages.notifyReset) ~= GetDailyRewardLastServerSave() then player:setStorageValue(DailyReward.storages.notifyReset, GetDailyRewardLastServerSave()) - timeMath = math.ceil(timeMath / (DailyReward.serverTimeThreshold)) + timeMath = math.ceil(timeMath / DailyReward.serverTimeThreshold) if player:getJokerTokens() >= timeMath then player:setJokerTokens(player:getJokerTokens() - timeMath) player:sendTextMessage(MESSAGE_LOGIN, "You lost " .. timeMath .. " joker tokens to prevent loosing your streak.") @@ -424,9 +430,9 @@ function Player.selectDailyReward(self, msg) -- Items as reward if dailyTable.type == DAILY_REWARD_TYPE_ITEM then local items = {} - local possibleItems = DailyRewardItems[self:getVocation():getBaseId()]; + local possibleItems = DailyRewardItems[self:getVocation():getBaseId()] if dailyTable.items then - possibleItems = dailyTable.items; + possibleItems = dailyTable.items end -- Creating items table @@ -436,12 +442,12 @@ function Player.selectDailyReward(self, msg) for i = 1, columnsPicked do local itemId = msg:getU16() local count = msg:getByte() - orderedCounter = orderedCounter + count; + orderedCounter = orderedCounter + count for index, val in ipairs(possibleItems) do if val == itemId then items[i] = { itemId = itemId, count = count } - totalCounter = totalCounter + count; - break; + totalCounter = totalCounter + count + break end end end diff --git a/data/modules/scripts/gamestore/gamestore.lua b/data/modules/scripts/gamestore/gamestore.lua index 9864dc0bc4f..3b3db208cb5 100644 --- a/data/modules/scripts/gamestore/gamestore.lua +++ b/data/modules/scripts/gamestore/gamestore.lua @@ -6,12 +6,12 @@ OFFER_TYPE_ALLBLESSINGS ]] -- Parser -dofile(CORE_DIRECTORY .. '/modules/scripts/gamestore/init.lua') +dofile(CORE_DIRECTORY .. "/modules/scripts/gamestore/init.lua") -- Config HomeBanners = { images = { "home/banner_armouredarcher.png", "home/banner_podiumoftenacity.png" }, - delay = 10 + delay = 10, } local premiumCategoryName = "Premium Time" @@ -22,7 +22,7 @@ if configManager.getBoolean(configKeys.VIP_SYSTEM_ENABLED) then end local premiumDescription = -"Enhance your gaming experience by gaining additional abilities and advantages:\n\n• access to Premium areas\n• use Tibia's transport system (ships, carpet)\n• more spells\n• rent houses\n• found guilds\n• offline training\n• larger depots\n• and many more\n\n{usablebyallicon} valid for all characters on this account\n{activated}" + "Enhance your gaming experience by gaining additional abilities and advantages:\n\n• access to Premium areas\n• use Tibia's transport system (ships, carpet)\n• more spells\n• rent houses\n• found guilds\n• offline training\n• larger depots\n• and many more\n\n{usablebyallicon} valid for all characters on this account\n{activated}" if configManager.getBoolean(configKeys.VIP_SYSTEM_ENABLED) then local vipBonusExp = configManager.getNumber(configKeys.VIP_BONUS_EXP) local vipBonusLoot = configManager.getNumber(configKeys.VIP_BONUS_LOOT) @@ -119,8 +119,7 @@ GameStore.Categories = { price = 130, id = GameStore.SubActions.BLESSING_ALL_PVE, count = 1, - description = - "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", + description = "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", type = GameStore.OfferTypes.OFFER_TYPE_ALLBLESSINGS, }, { @@ -129,8 +128,7 @@ GameStore.Categories = { price = 650, id = GameStore.SubActions.BLESSING_ALL_PVP, count = 5, - description = - "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", + description = "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", type = GameStore.OfferTypes.OFFER_TYPE_ALLBLESSINGS, }, { @@ -140,8 +138,7 @@ GameStore.Categories = { blessid = 8, count = 1, id = GameStore.SubActions.BLESSING_BLOOD, - description = - "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", + description = "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", type = GameStore.OfferTypes.OFFER_TYPE_BLESSINGS, }, { @@ -160,8 +157,7 @@ GameStore.Categories = { blessid = 7, count = 1, id = GameStore.SubActions.BLESSING_HEART, - description = - "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", + description = "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", type = GameStore.OfferTypes.OFFER_TYPE_BLESSINGS, }, { @@ -171,8 +167,7 @@ GameStore.Categories = { blessid = 6, count = 1, id = GameStore.SubActions.BLESSING_EMBRACE, - description = - "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", + description = "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", type = GameStore.OfferTypes.OFFER_TYPE_BLESSINGS, }, { @@ -182,8 +177,7 @@ GameStore.Categories = { blessid = 4, count = 1, id = GameStore.SubActions.BLESSING_SUNS, - description = - "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", + description = "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", type = GameStore.OfferTypes.OFFER_TYPE_BLESSINGS, }, { @@ -193,8 +187,7 @@ GameStore.Categories = { blessid = 3, count = 1, id = GameStore.SubActions.BLESSING_PHOENIX, - description = - "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", + description = "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", type = GameStore.OfferTypes.OFFER_TYPE_BLESSINGS, }, { @@ -204,8 +197,7 @@ GameStore.Categories = { blessid = 5, count = 1, id = GameStore.SubActions.BLESSING_SPIRITUAL, - description = - "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", + description = "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", type = GameStore.OfferTypes.OFFER_TYPE_BLESSINGS, }, { @@ -215,8 +207,7 @@ GameStore.Categories = { blessid = 2, count = 1, id = GameStore.SubActions.BLESSING_SOLITUDE, - description = - "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", + description = "Reduces your character's chance to lose any items as well as the amount of your character's experience and skill loss upon death:\n\n• 1 blessing = 8.00% less Skill / XP loss, 30% equipment protection\n• 2 blessing = 16.00% less Skill / XP loss, 55% equipment protection\n• 3 blessing = 24.00% less Skill / XP loss, 75% equipment protection\n• 4 blessing = 32.00% less Skill / XP loss, 90% equipment protection\n• 5 blessing = 40.00% less Skill / XP loss, 100% equipment protection\n• 6 blessing = 48.00% less Skill / XP loss, 100% equipment protection\n• 7 blessing = 56.00% less Skill / XP loss, 100% equipment protection\n\n{character} \n{limit|5} \n{info} added directly to the Record of Blessings \n{info} characters with a red or black skull will always lose all equipment upon death", type = GameStore.OfferTypes.OFFER_TYPE_BLESSINGS, }, { @@ -254,8 +245,7 @@ GameStore.Categories = { price = 22, itemtype = 25881, count = 1000, - description = - "Place it in your house and fill up potions to restore your hit points!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", + description = "Place it in your house and fill up potions to restore your hit points!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", type = GameStore.OfferTypes.OFFER_TYPE_HOUSE, }, { @@ -264,8 +254,7 @@ GameStore.Categories = { price = 14, itemtype = 25891, count = 1000, - description = - "Place it in your house and fill up potions to refill your mana!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", + description = "Place it in your house and fill up potions to refill your mana!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", type = GameStore.OfferTypes.OFFER_TYPE_HOUSE, }, { @@ -274,8 +263,7 @@ GameStore.Categories = { price = 22, itemtype = 25899, count = 1000, - description = - "Place it in your house and fill up potions to restore your hit points and mana!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", + description = "Place it in your house and fill up potions to restore your hit points and mana!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", type = GameStore.OfferTypes.OFFER_TYPE_HOUSE, }, { @@ -284,8 +272,7 @@ GameStore.Categories = { price = 5, itemtype = 25879, count = 1000, - description = - "Place it in your house and fill up potions to restore your hit points!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", + description = "Place it in your house and fill up potions to restore your hit points!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", type = GameStore.OfferTypes.OFFER_TYPE_HOUSE, }, { @@ -294,8 +281,7 @@ GameStore.Categories = { price = 5, itemtype = 25889, count = 1000, - description = - "Place it in your house and fill up potions to refill your mana!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", + description = "Place it in your house and fill up potions to refill your mana!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", type = GameStore.OfferTypes.OFFER_TYPE_HOUSE, }, { @@ -304,8 +290,7 @@ GameStore.Categories = { price = 11, itemtype = 25880, count = 1000, - description = - "Place it in your house and fill up potions to restore your hit points!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", + description = "Place it in your house and fill up potions to restore your hit points!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", type = GameStore.OfferTypes.OFFER_TYPE_HOUSE, }, { @@ -314,8 +299,7 @@ GameStore.Categories = { price = 9, itemtype = 25890, count = 1000, - description = - "Place it in your house and fill up potions to refill your mana!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", + description = "Place it in your house and fill up potions to refill your mana!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", type = GameStore.OfferTypes.OFFER_TYPE_HOUSE, }, { @@ -324,8 +308,7 @@ GameStore.Categories = { price = 59, itemtype = 25883, count = 1000, - description = - "Place it in your house and fill up potions to restore your hit points!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", + description = "Place it in your house and fill up potions to restore your hit points!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", type = GameStore.OfferTypes.OFFER_TYPE_HOUSE, }, { @@ -334,8 +317,7 @@ GameStore.Categories = { price = 36, itemtype = 25882, count = 1000, - description = - "Place it in your house and fill up potions to restore your hit points!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", + description = "Place it in your house and fill up potions to restore your hit points!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", type = GameStore.OfferTypes.OFFER_TYPE_HOUSE, }, { @@ -344,8 +326,7 @@ GameStore.Categories = { price = 42, itemtype = 25892, count = 1000, - description = - "Place it in your house and fill up potions to refill your mana!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", + description = "Place it in your house and fill up potions to refill your mana!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", type = GameStore.OfferTypes.OFFER_TYPE_HOUSE, }, { @@ -354,8 +335,7 @@ GameStore.Categories = { price = 42, itemtype = 25900, count = 1000, - description = - "Place it in your house and fill up potions to restore your hit points and mana!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", + description = "Place it in your house and fill up potions to restore your hit points and mana!\n\n{house}\n{box}\n{storeinbox}\n{usablebyallicon} can be used to fill up potions by all characters that have access to the house\n{storeinboxicon} potions created from this cask will be sent to your Store inbox and can only be stored there and in depot box\n{backtoinbox}\n{info} usable 1000 times a piece\n{transferableprice}", type = GameStore.OfferTypes.OFFER_TYPE_HOUSE, }, }, @@ -862,8 +842,7 @@ GameStore.Categories = { price = 75, itemtype = 3203, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck} only buyable if fitting vocation and level of purchasing character\n{battlesign}\n{capacity}\n\nAfter a long time of research, the magicians of Edron succeeded in storing some life energy in a rune. When this energy was unleashed onto a body it was found that an undead creature arose that could be mentally controlled by the user of the rune. This rune is useful to create allies in combat.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck} only buyable if fitting vocation and level of purchasing character\n{battlesign}\n{capacity}\n\nAfter a long time of research, the magicians of Edron succeeded in storing some life energy in a rune. When this energy was unleashed onto a body it was found that an undead creature arose that could be mentally controlled by the user of the rune. This rune is useful to create allies in combat.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, { @@ -881,8 +860,7 @@ GameStore.Categories = { price = 42, itemtype = 3178, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nThe metamorphosis caused by this rune is only superficial, and while casters who are using the rune can take on the exterior form of nearly any inanimate object, they will always retain their original smell and mental abilities. So there is no real practical use for this rune, making this largely a fun rune.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nThe metamorphosis caused by this rune is only superficial, and while casters who are using the rune can take on the exterior form of nearly any inanimate object, they will always retain their original smell and mental abilities. So there is no real practical use for this rune, making this largely a fun rune.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, { @@ -900,8 +878,7 @@ GameStore.Categories = { price = 13, itemtype = 3153, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nIn the old days, many adventurers fell prey to poisonous creatures that were roaming the caves and forests. After many years of research druids finally succeeded in altering the cure poison spell so it could be bound to a rune. By using this rune it is possible to stop the effect of any known poison.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nIn the old days, many adventurers fell prey to poisonous creatures that were roaming the caves and forests. After many years of research druids finally succeeded in altering the cure poison spell so it could be bound to a rune. By using this rune it is possible to stop the effect of any known poison.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, { @@ -910,8 +887,7 @@ GameStore.Categories = { price = 5, itemtype = 3197, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nNothing is worse than being cornered when fleeing from an enemy you just cannot beat, especially if the obstacles in your way are items you could easily remove if only you had the time! However, there is one reliable remedy: The Disintegrate rune will instantly destroy up to 500 movable items that are in your way, making room for a quick escape.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nNothing is worse than being cornered when fleeing from an enemy you just cannot beat, especially if the obstacles in your way are items you could easily remove if only you had the time! However, there is one reliable remedy: The Disintegrate rune will instantly destroy up to 500 movable items that are in your way, making room for a quick escape.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, { @@ -920,8 +896,7 @@ GameStore.Categories = { price = 40, itemtype = 3149, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nUsing the Energy Bomb rune will create a field of deadly energy that deals damage to all who carelessly step into it. Its area of effect is covering a full 9 square metres! Creatures that are caught in the middle of an Energy Bomb are frequently confused by the unexpected effect, and some may even stay in the field of deadly sparks for a while.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nUsing the Energy Bomb rune will create a field of deadly energy that deals damage to all who carelessly step into it. Its area of effect is covering a full 9 square metres! Creatures that are caught in the middle of an Energy Bomb are frequently confused by the unexpected effect, and some may even stay in the field of deadly sparks for a while.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, { @@ -966,8 +941,7 @@ GameStore.Categories = { price = 29, itemtype = 3192, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nThis rune is a deadly weapon in the hands of the skilled user. On releasing it an area of 9 square metres is covered by searing flames that will scorch all those that are unfortunate enough to be caught in them. Worse, many monsters are confused by the unexpected blaze, and with a bit of luck a caster will even manage to trap his opponents by using the spell.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nThis rune is a deadly weapon in the hands of the skilled user. On releasing it an area of 9 square metres is covered by searing flames that will scorch all those that are unfortunate enough to be caught in them. Worse, many monsters are confused by the unexpected blaze, and with a bit of luck a caster will even manage to trap his opponents by using the spell.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, { @@ -1003,8 +977,7 @@ GameStore.Categories = { price = 6, itemtype = 3158, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nParticularly creatures determined by the element fire are vulnerable against this ice-cold rune. Being hit by the magic stored in this rune, an ice arrow seems to pierce the heart of the struck victim. The damage done by this rune is quite impressive which makes this a quite popular rune among Tibian mages.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nParticularly creatures determined by the element fire are vulnerable against this ice-cold rune. Being hit by the magic stored in this rune, an ice arrow seems to pierce the heart of the struck victim. The damage done by this rune is quite impressive which makes this a quite popular rune among Tibian mages.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, { @@ -1013,8 +986,7 @@ GameStore.Categories = { price = 19, itemtype = 3152, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nThis rune is commonly used by young adventurers who are not skilled enough to use the rune's stronger version. Also, since the rune's effectiveness is determined by the user's magic skill, it is still popular among experienced spell casters who use it to get effective healing magic at a cheap price.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nThis rune is commonly used by young adventurers who are not skilled enough to use the rune's stronger version. Also, since the rune's effectiveness is determined by the user's magic skill, it is still popular among experienced spell casters who use it to get effective healing magic at a cheap price.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, { @@ -1023,8 +995,7 @@ GameStore.Categories = { price = 23, itemtype = 3180, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nThis spell causes all particles that are contained in the surrounding air to quickly gather and contract until a solid wall is formed that covers one full square metre. The wall that is formed that way is impenetrable to any missiles or to light and no creature or character can walk through it. However, the wall will only last for a couple of seconds.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nThis spell causes all particles that are contained in the surrounding air to quickly gather and contract until a solid wall is formed that covers one full square metre. The wall that is formed that way is impenetrable to any missiles or to light and no creature or character can walk through it. However, the wall will only last for a couple of seconds.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, { @@ -1033,8 +1004,7 @@ GameStore.Categories = { price = 17, itemtype = 3173, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nThis rune causes an area of 9 square metres to be contaminated with toxic gas that will poison anybody who is caught within it. Conceivable applications include the blocking of areas or the combat against fast-moving or invisible targets. Keep in mind, however, that there are a number of creatures that are immune to poison.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nThis rune causes an area of 9 square metres to be contaminated with toxic gas that will poison anybody who is caught within it. Conceivable applications include the blocking of areas or the combat against fast-moving or invisible targets. Keep in mind, however, that there are a number of creatures that are immune to poison.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, { @@ -1043,8 +1013,7 @@ GameStore.Categories = { price = 10, itemtype = 3176, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nWhen this rune is used a wall of concentrated toxic fumes is created which inflicts a moderate poison on all those who are foolish enough to enter it. The effect is usually impressive enough to discourage monsters from doing so, although few of the stronger ones will hesitate if there is nothing but a poison wall between them and their dinner.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nWhen this rune is used a wall of concentrated toxic fumes is created which inflicts a moderate poison on all those who are foolish enough to enter it. The effect is usually impressive enough to discourage monsters from doing so, although few of the stronger ones will hesitate if there is nothing but a poison wall between them and their dinner.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, { @@ -1053,8 +1022,7 @@ GameStore.Categories = { price = 9, itemtype = 3195, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nSoulfire is an immensely evil spell as it directly targets a creature's very life essence. When the rune is used on a victim, its soul is temporarily moved out of its body, casting it down into the blazing fires of hell itself! Note that the experience and the mental strength of the caster influence the damage that is caused.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nSoulfire is an immensely evil spell as it directly targets a creature's very life essence. When the rune is used on a victim, its soul is temporarily moved out of its body, casting it down into the blazing fires of hell itself! Note that the experience and the mental strength of the caster influence the damage that is caused.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, { @@ -1099,8 +1067,7 @@ GameStore.Categories = { price = 32, itemtype = 3156, count = 250, - description = - "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nBy unleashing this spell, all seeds that are lying dormant in the surrounding quickly sprout and grow into full-sized plants, thus forming an impenetrable thicket. Unfortunately, plant life created this way is short-lived and will collapse within minutes, so the magically created obstacle will not last long.", + description = "{character}\n{storeinbox}\n{vocationlevelcheck}\n{battlesign}\n{capacity}\n\nBy unleashing this spell, all seeds that are lying dormant in the surrounding quickly sprout and grow into full-sized plants, thus forming an impenetrable thicket. Unfortunately, plant life created this way is short-lived and will collapse within minutes, so the magically created obstacle will not last long.", type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, }, }, @@ -1149,8 +1116,7 @@ GameStore.Categories = { name = "Battle Badger", price = 690, id = 147, - description = - "{character}\n{speedboost}\n\nBadgers have been a staple of the Tibian fauna for a long time, and finally some daring souls have braved the challenge to tame some exceptional specimens - and succeeded! While the common badger you can encounter during your travels might seem like a rather unassuming creature, the Battle Badger, the Ether Badger, and the Zaoan Badger are fierce and mighty beasts, which are at your beck and call.", + description = "{character}\n{speedboost}\n\nBadgers have been a staple of the Tibian fauna for a long time, and finally some daring souls have braved the challenge to tame some exceptional specimens - and succeeded! While the common badger you can encounter during your travels might seem like a rather unassuming creature, the Battle Badger, the Ether Badger, and the Zaoan Badger are fierce and mighty beasts, which are at your beck and call.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1198,8 +1164,7 @@ GameStore.Categories = { name = "Brass Speckled Koi", price = 750, id = 208, - description = - "{character}\n{speedboost}\n\nThe vibrant colours and elegance of a Tangerine Flecked Koi, a Brass Speckled Koi, and an Ink Spotted Koi make them a fascinating sight to behold, and their boisterous nature and speed will make you the first to arrive wherever there are riches to gain. Wield your weapon as gracefully and effortlessly as your swimming companion glides through the water, and the two of you will make the perfect and most deadly pair.", + description = "{character}\n{speedboost}\n\nThe vibrant colours and elegance of a Tangerine Flecked Koi, a Brass Speckled Koi, and an Ink Spotted Koi make them a fascinating sight to behold, and their boisterous nature and speed will make you the first to arrive wherever there are riches to gain. Wield your weapon as gracefully and effortlessly as your swimming companion glides through the water, and the two of you will make the perfect and most deadly pair.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1215,8 +1180,7 @@ GameStore.Categories = { name = "Bunny Dray", price = 870, id = 139, - description = - "{character}\n{speedboost}\n\nYour lower back worsens with every trip you spend on the back of your mount and you are looking for a more comfortable alternative to travel through the lands? Say no more! The Bunny Dray comes with two top-performing hares that never get tired thanks to the brand new and highly innovative propulsion technology. Just keep some back-up carrots in your pocket and you will be fine!", + description = "{character}\n{speedboost}\n\nYour lower back worsens with every trip you spend on the back of your mount and you are looking for a more comfortable alternative to travel through the lands? Say no more! The Bunny Dray comes with two top-performing hares that never get tired thanks to the brand new and highly innovative propulsion technology. Just keep some back-up carrots in your pocket and you will be fine!", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1224,8 +1188,7 @@ GameStore.Categories = { name = "Caped Snowman", price = 870, id = 137, - description = - "{character}\n{speedboost}\n\nWhen the nights are getting longer and freezing wind brings driving snow into the land, snowmen rise and shine on every corner. Lately, a peaceful, arcane creature has found shelter in one of them and used its magical power to call the Caped Snowman into being. Wrap yourself up well and warmly and jump on the back of your new frosty companion.", + description = "{character}\n{speedboost}\n\nWhen the nights are getting longer and freezing wind brings driving snow into the land, snowmen rise and shine on every corner. Lately, a peaceful, arcane creature has found shelter in one of them and used its magical power to call the Caped Snowman into being. Wrap yourself up well and warmly and jump on the back of your new frosty companion.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1233,8 +1196,7 @@ GameStore.Categories = { name = "Cave Tarantula", price = 690, id = 117, - description = - "{character}\n{speedboost}\n\nIt is said that the Cave Tarantula was born long before Banor walked the earth of Tibia. While its parents died in the war against the cruel hordes sent by Brog and Zathroth, their child survived by hiding in skulls of burned enemies. It never left its hiding spot and as it grew older, the skulls merged into its body. Now, it is fully-grown and thirsts for revenge.", + description = "{character}\n{speedboost}\n\nIt is said that the Cave Tarantula was born long before Banor walked the earth of Tibia. While its parents died in the war against the cruel hordes sent by Brog and Zathroth, their child survived by hiding in skulls of burned enemies. It never left its hiding spot and as it grew older, the skulls merged into its body. Now, it is fully-grown and thirsts for revenge.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1250,8 +1212,7 @@ GameStore.Categories = { name = "Cinnamon Ibex", price = 750, id = 200, - description = - "{character}\n{speedboost}\n\nNo mountain is too high, no wall too steep to climb for the agile Poppy, Mint and Cinnamon Ibex. They keep their balance on the thinnest of ledges, so you will never stumble, slip or go flying off the edges. Moreover, these sturdy fellows certainly know how to make an entrance as they dive down from the highest peaks and attack opponents with their impressive horns. And if you dare to call them a wild goat, they might kick you with their legs.", + description = "{character}\n{speedboost}\n\nNo mountain is too high, no wall too steep to climb for the agile Poppy, Mint and Cinnamon Ibex. They keep their balance on the thinnest of ledges, so you will never stumble, slip or go flying off the edges. Moreover, these sturdy fellows certainly know how to make an entrance as they dive down from the highest peaks and attack opponents with their impressive horns. And if you dare to call them a wild goat, they might kick you with their legs.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1259,8 +1220,7 @@ GameStore.Categories = { name = "Cony Cart", price = 870, id = 140, - description = - "{character}\n{speedboost}\n\nYour lower back worsens with every trip you spend on the back of your mount and you are looking for a more comfortable alternative to travel through the lands? Say no more! The Cony Cart comes with two top-performing hares that never get tired thanks to the brand new and highly innovative propulsion technology. Just keep some back-up carrots in your pocket and you will be fine!", + description = "{character}\n{speedboost}\n\nYour lower back worsens with every trip you spend on the back of your mount and you are looking for a more comfortable alternative to travel through the lands? Say no more! The Cony Cart comes with two top-performing hares that never get tired thanks to the brand new and highly innovative propulsion technology. Just keep some back-up carrots in your pocket and you will be fine!", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1276,8 +1236,7 @@ GameStore.Categories = { name = "Coral Rhea", price = 500, id = 169, - description = - "{character}\n{speedboost}\n\nThese birds have a strong maternal instinct since their fledglings are completely dependent on their parents for protection. Do not expect them to abandon their brood only because they are carrying you around. In fact, if you were to separate them from their chick, the Savanna Ostrich, Coral Rhea and Eventide Nandu would turn into vicious beings, so don't even try it!", + description = "{character}\n{speedboost}\n\nThese birds have a strong maternal instinct since their fledglings are completely dependent on their parents for protection. Do not expect them to abandon their brood only because they are carrying you around. In fact, if you were to separate them from their chick, the Savanna Ostrich, Coral Rhea and Eventide Nandu would turn into vicious beings, so don't even try it!", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1293,8 +1252,7 @@ GameStore.Categories = { name = "Cranium Spider", price = 690, id = 116, - description = - "{character}\n{speedboost}\n\nIt is said that the Cranium Spider was born long before Banor walked the earth of Tibia. While its parents died in the war against the cruel hordes sent by Brog and Zathroth, their child survived by hiding in skulls of burned enemies. It never left its hiding spot and as it grew older, the skulls merged into its body. Now, it is fully-grown and thirsts for revenge.", + description = "{character}\n{speedboost}\n\nIt is said that the Cranium Spider was born long before Banor walked the earth of Tibia. While its parents died in the war against the cruel hordes sent by Brog and Zathroth, their child survived by hiding in skulls of burned enemies. It never left its hiding spot and as it grew older, the skulls merged into its body. Now, it is fully-grown and thirsts for revenge.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1374,8 +1332,7 @@ GameStore.Categories = { name = "Ebony Tiger", price = 750, id = 123, - description = - "{character}\n{speedboost}\n\nIt is said that in ancient times, the sabre-tooth tiger was already used as a mount by elder warriors of Svargrond. As seafaring began to expand, this noble big cat was also transported to other regions in Tibia. Influenced by the new environment and climatic changes, the fur of the Ebony Tiger has developed its extraordinary colouring over several generations.", + description = "{character}\n{speedboost}\n\nIt is said that in ancient times, the sabre-tooth tiger was already used as a mount by elder warriors of Svargrond. As seafaring began to expand, this noble big cat was also transported to other regions in Tibia. Influenced by the new environment and climatic changes, the fur of the Ebony Tiger has developed its extraordinary colouring over several generations.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1391,8 +1348,7 @@ GameStore.Categories = { name = "Emerald Raven", price = 690, id = 191, - description = - "{character}\n{speedboost}\n\nThe origins of the Emerald Raven, Mystic Raven, and Radiant Raven are shrouded in darkness, as no written record nor tale told by even the most knowing storytellers mentions but a trace of them. Superstition surrounds them, as some see these gigantic birds as an echo of a long forgotten past, while others believe them to herald hitherto unknown events. What is clear is that they are highly intelligent beings which make great companions if they deem somebody worthy.", + description = "{character}\n{speedboost}\n\nThe origins of the Emerald Raven, Mystic Raven, and Radiant Raven are shrouded in darkness, as no written record nor tale told by even the most knowing storytellers mentions but a trace of them. Superstition surrounds them, as some see these gigantic birds as an echo of a long forgotten past, while others believe them to herald hitherto unknown events. What is clear is that they are highly intelligent beings which make great companions if they deem somebody worthy.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1424,8 +1380,7 @@ GameStore.Categories = { name = "Ether Badger", price = 690, id = 148, - description = - "{character}\n{speedboost}\n\nBadgers have been a staple of the Tibian fauna for a long time, and finally some daring souls have braved the challenge to tame some exceptional specimens - and succeeded! While the common badger you can encounter during your travels might seem like a rather unassuming creature, the Battle Badger, the Ether Badger, and the Zaoan Badger are fierce and mighty beasts, which are at your beck and call.", + description = "{character}\n{speedboost}\n\nBadgers have been a staple of the Tibian fauna for a long time, and finally some daring souls have braved the challenge to tame some exceptional specimens - and succeeded! While the common badger you can encounter during your travels might seem like a rather unassuming creature, the Battle Badger, the Ether Badger, and the Zaoan Badger are fierce and mighty beasts, which are at your beck and call.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1433,8 +1388,7 @@ GameStore.Categories = { name = "Eventide Nandu", price = 500, id = 170, - description = - "{character}\n{speedboost}\n\nThese birds have a strong maternal instinct since their fledglings are completely dependent on their parents for protection. Do not expect them to abandon their brood only because they are carrying you around. In fact, if you were to separate them from their chick, the Savanna Ostrich, Coral Rhea and Eventide Nandu would turn into vicious beings, so don't even try it!", + description = "{character}\n{speedboost}\n\nThese birds have a strong maternal instinct since their fledglings are completely dependent on their parents for protection. Do not expect them to abandon their brood only because they are carrying you around. In fact, if you were to separate them from their chick, the Savanna Ostrich, Coral Rhea and Eventide Nandu would turn into vicious beings, so don't even try it!", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1442,8 +1396,7 @@ GameStore.Categories = { name = "Feral Tiger", price = 750, id = 124, - description = - "{character}\n{speedboost}\n\nIt is said that in ancient times, the sabre-tooth tiger was already used as a mount by elder warriors of Svargrond. As seafaring began to expand, this noble big cat was also transported to other regions in Tibia. Influenced by the new environment and climatic changes, the fur of the Feral Tiger has developed its extraordinary colouring over several generations.", + description = "{character}\n{speedboost}\n\nIt is said that in ancient times, the sabre-tooth tiger was already used as a mount by elder warriors of Svargrond. As seafaring began to expand, this noble big cat was also transported to other regions in Tibia. Influenced by the new environment and climatic changes, the fur of the Feral Tiger has developed its extraordinary colouring over several generations.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1459,8 +1412,7 @@ GameStore.Categories = { name = "Festive Snowman", price = 900, id = 135, - description = - "{character}\n{speedboost}\n\nWhen the nights are getting longer and freezing wind brings driving snow into the land, snowmen rise and shine on every corner. Lately, a peaceful, arcane creature has found shelter in one of them and used its magical power to call the Festive Snowman into being. Wrap yourself up well and warmly and jump on the back of your new frosty companion.", + description = "{character}\n{speedboost}\n\nWhen the nights are getting longer and freezing wind brings driving snow into the land, snowmen rise and shine on every corner. Lately, a peaceful, arcane creature has found shelter in one of them and used its magical power to call the Festive Snowman into being. Wrap yourself up well and warmly and jump on the back of your new frosty companion.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1484,8 +1436,7 @@ GameStore.Categories = { name = "Floating Augur", price = 870, id = 155, - description = - "{character}\n{speedboost}\n\nThese creatures are Floating Savants whose mind has been warped and bent to focus their extraordinary mental capabilities on one single goal: to do their master's bidding. Instead of being filled with an endless pursuit of knowledge, their live is now one of continuous thralldom and serfhood. The Floating Sage, the Floating Scholar and the Floating Augur are at your disposal.", + description = "{character}\n{speedboost}\n\nThese creatures are Floating Savants whose mind has been warped and bent to focus their extraordinary mental capabilities on one single goal: to do their master's bidding. Instead of being filled with an endless pursuit of knowledge, their live is now one of continuous thralldom and serfhood. The Floating Sage, the Floating Scholar and the Floating Augur are at your disposal.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1501,8 +1452,7 @@ GameStore.Categories = { name = "Floating Sage", price = 870, id = 153, - description = - "{character}\n{speedboost}\n\nThese creatures are Floating Savants whose mind has been warped and bent to focus their extraordinary mental capabilities on one single goal: to do their master's bidding. Instead of being filled with an endless pursuit of knowledge, their live is now one of continuous thralldom and serfhood. The Floating Sage, the Floating Scholar and the Floating Augur are at your disposal.", + description = "{character}\n{speedboost}\n\nThese creatures are Floating Savants whose mind has been warped and bent to focus their extraordinary mental capabilities on one single goal: to do their master's bidding. Instead of being filled with an endless pursuit of knowledge, their live is now one of continuous thralldom and serfhood. The Floating Sage, the Floating Scholar and the Floating Augur are at your disposal.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1510,8 +1460,7 @@ GameStore.Categories = { name = "Floating Scholar", price = 870, id = 154, - description = - "{character}\n{speedboost}\n\nThese creatures are Floating Savants whose mind has been warped and bent to focus their extraordinary mental capabilities on one single goal: to do their master's bidding. Instead of being filled with an endless pursuit of knowledge, their live is now one of continuous thralldom and serfhood. The Floating Sage, the Floating Scholar and the Floating Augur are at your disposal.", + description = "{character}\n{speedboost}\n\nThese creatures are Floating Savants whose mind has been warped and bent to focus their extraordinary mental capabilities on one single goal: to do their master's bidding. Instead of being filled with an endless pursuit of knowledge, their live is now one of continuous thralldom and serfhood. The Floating Sage, the Floating Scholar and the Floating Augur are at your disposal.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1551,8 +1500,7 @@ GameStore.Categories = { name = "Gloom Widow", price = 690, id = 118, - description = - "{character}\n{speedboost}\n\nIt is said that the Gloom Widow was born long before Banor walked the earth of Tibia. While its parents died in the war against the cruel hordes sent by Brog and Zathroth, their child survived by hiding in skulls of burned enemies. It never left its hiding spot and as it grew older, the skulls merged into its body. Now, it is fully-grown and thirsts for revenge.", + description = "{character}\n{speedboost}\n\nIt is said that the Gloom Widow was born long before Banor walked the earth of Tibia. While its parents died in the war against the cruel hordes sent by Brog and Zathroth, their child survived by hiding in skulls of burned enemies. It never left its hiding spot and as it grew older, the skulls merged into its body. Now, it is fully-grown and thirsts for revenge.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1632,8 +1580,7 @@ GameStore.Categories = { name = "Ink Spotted Koi", price = 750, id = 209, - description = - "{character}\n{speedboost}\n\nThe vibrant colours and elegance of a Tangerine Flecked Koi, a Brass Speckled Koi, and an Ink Spotted Koi make them a fascinating sight to behold, and their boisterous nature and speed will make you the first to arrive wherever there are riches to gain. Wield your weapon as gracefully and effortlessly as your swimming companion glides through the water, and the two of you will make the perfect and most deadly pair.", + description = "{character}\n{speedboost}\n\nThe vibrant colours and elegance of a Tangerine Flecked Koi, a Brass Speckled Koi, and an Ink Spotted Koi make them a fascinating sight to behold, and their boisterous nature and speed will make you the first to arrive wherever there are riches to gain. Wield your weapon as gracefully and effortlessly as your swimming companion glides through the water, and the two of you will make the perfect and most deadly pair.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1673,8 +1620,7 @@ GameStore.Categories = { name = "Jade Shrine", price = 690, id = 196, - description = - "{character}\n{speedboost}\n\nThe famous Wandering Shrines were first raised by the nomad people of the Zaoan steppe. Their exceptional craftsmanship, combining architectonic features with living animals, is acknowledged even far beyond the continent of Zao. These spiritual companions will give you the opportunity to regain your strength during long and exciting journeys.", + description = "{character}\n{speedboost}\n\nThe famous Wandering Shrines were first raised by the nomad people of the Zaoan steppe. Their exceptional craftsmanship, combining architectonic features with living animals, is acknowledged even far beyond the continent of Zao. These spiritual companions will give you the opportunity to regain your strength during long and exciting journeys.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1682,8 +1628,7 @@ GameStore.Categories = { name = "Jousting Horse", price = 870, id = 204, - description = - "{character}\n{speedboost}\n\nA seasoned warrior knows how to make an entry, and so does his faithful companion: Fully armored! Saddle up your impressive Jousting Horse to charge into battle in style, gallop into the arena on the back of your striking Tourney Horse, and ride your distinguished Parade Horse through the streets of Thais to show off your chivalrous qualities. With a horse in full barding, nobody will ever rain on your parade again.", + description = "{character}\n{speedboost}\n\nA seasoned warrior knows how to make an entry, and so does his faithful companion: Fully armored! Saddle up your impressive Jousting Horse to charge into battle in style, gallop into the arena on the back of your striking Tourney Horse, and ride your distinguished Parade Horse through the streets of Thais to show off your chivalrous qualities. With a horse in full barding, nobody will ever rain on your parade again.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1699,8 +1644,7 @@ GameStore.Categories = { name = "Jungle Tiger", price = 750, id = 125, - description = - "{character}\n{speedboost}\n\nIt is said that in ancient times, the sabre-tooth tiger was already used as a mount by elder warriors of Svargrond. As seafaring began to expand, this noble big cat was also transported to other regions in Tibia. Influenced by the new environment and climatic changes, the fur of the Jungle Tiger has developed its extraordinary colouring over several generations.", + description = "{character}\n{speedboost}\n\nIt is said that in ancient times, the sabre-tooth tiger was already used as a mount by elder warriors of Svargrond. As seafaring began to expand, this noble big cat was also transported to other regions in Tibia. Influenced by the new environment and climatic changes, the fur of the Jungle Tiger has developed its extraordinary colouring over several generations.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1732,8 +1676,7 @@ GameStore.Categories = { name = "Marsh Toad", price = 690, id = 120, - description = - "{character}\n{speedboost}\n\nThe Magic Carpet is the perfect mount for those who are too busy to take cFor centuries, humans and monsters have dumped their garbage in the swamps around Venore. The combination of old, rusty weapons, stale mana and broken runes have turned some of the swamp dwellers into gigantic frogs. Benefit from those mutations and make the Marsh Toad a faithful mount for your adventures even beyond the bounds of the swamp.", + description = "{character}\n{speedboost}\n\nThe Magic Carpet is the perfect mount for those who are too busy to take cFor centuries, humans and monsters have dumped their garbage in the swamps around Venore. The combination of old, rusty weapons, stale mana and broken runes have turned some of the swamp dwellers into gigantic frogs. Benefit from those mutations and make the Marsh Toad a faithful mount for your adventures even beyond the bounds of the swamp.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1749,8 +1692,7 @@ GameStore.Categories = { name = "Mint Ibex", price = 750, id = 199, - description = - "{character}\n{speedboost}\n\nNo mountain is too high, no wall too steep to climb for the agile Poppy, Mint and Cinnamon Ibex. They keep their balance on the thinnest of ledges, so you will never stumble, slip or go flying off the edges. Moreover, these sturdy fellows certainly know how to make an entrance as they dive down from the highest peaks and attack opponents with their impressive horns. And if you dare to call them a wild goat, they might kick you with their legs.", + description = "{character}\n{speedboost}\n\nNo mountain is too high, no wall too steep to climb for the agile Poppy, Mint and Cinnamon Ibex. They keep their balance on the thinnest of ledges, so you will never stumble, slip or go flying off the edges. Moreover, these sturdy fellows certainly know how to make an entrance as they dive down from the highest peaks and attack opponents with their impressive horns. And if you dare to call them a wild goat, they might kick you with their legs.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1774,8 +1716,7 @@ GameStore.Categories = { name = "Muffled Snowman", price = 900, id = 136, - description = - "{character}\n{speedboost}\n\nWhen the nights are getting longer and freezing wind brings driving snow into the land, snowmen rise and shine on every corner. Lately, a peaceful, arcane creature has found shelter in one of them and used its magical power to call the Muffled Snowman into being. Wrap yourself up well and warmly and jump on the back of your new frosty companion.", + description = "{character}\n{speedboost}\n\nWhen the nights are getting longer and freezing wind brings driving snow into the land, snowmen rise and shine on every corner. Lately, a peaceful, arcane creature has found shelter in one of them and used its magical power to call the Muffled Snowman into being. Wrap yourself up well and warmly and jump on the back of your new frosty companion.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1783,8 +1724,7 @@ GameStore.Categories = { name = "Mystic Raven", price = 690, id = 192, - description = - "{character}\n{speedboost}\n\nThe origins of the Emerald Raven, Mystic Raven, and Radiant Raven are shrouded in darkness, as no written record nor tale told by even the most knowing storytellers mentions but a trace of them. Superstition surrounds them, as some see these gigantic birds as an echo of a long forgotten past, while others believe them to herald hitherto unknown events. What is clear is that they are highly intelligent beings which make great companions if they deem somebody worthy.", + description = "{character}\n{speedboost}\n\nThe origins of the Emerald Raven, Mystic Raven, and Radiant Raven are shrouded in darkness, as no written record nor tale told by even the most knowing storytellers mentions but a trace of them. Superstition surrounds them, as some see these gigantic birds as an echo of a long forgotten past, while others believe them to herald hitherto unknown events. What is clear is that they are highly intelligent beings which make great companions if they deem somebody worthy.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1816,8 +1756,7 @@ GameStore.Categories = { name = "Nightmarish Crocovile", price = 750, id = 143, - description = - "{character}\n{speedboost}\n\nTo the keen observer, the crocovile is clearly a relative of the crocodile, albeit their look suggests an even more aggressive nature. While it is true that the power of its massive and muscular body can not only crush enemies dead but also break through any gate like a battering ram, a crocovile is, above all, a steadfast companion showing unwavering loyalty to its owner.", + description = "{character}\n{speedboost}\n\nTo the keen observer, the crocovile is clearly a relative of the crocodile, albeit their look suggests an even more aggressive nature. While it is true that the power of its massive and muscular body can not only crush enemies dead but also break through any gate like a battering ram, a crocovile is, above all, a steadfast companion showing unwavering loyalty to its owner.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1841,8 +1780,7 @@ GameStore.Categories = { name = "Obsidian Shrine", price = 690, id = 197, - description = - "{character}\n{speedboost}\n\nThe famous Wandering Shrines were first raised by the nomad people of the Zaoan steppe. Their exceptional craftsmanship, combining architectonic features with living animals, is acknowledged even far beyond the continent of Zao. These spiritual companions will give you the opportunity to regain your strength during long and exciting journeys.", + description = "{character}\n{speedboost}\n\nThe famous Wandering Shrines were first raised by the nomad people of the Zaoan steppe. Their exceptional craftsmanship, combining architectonic features with living animals, is acknowledged even far beyond the continent of Zao. These spiritual companions will give you the opportunity to regain your strength during long and exciting journeys.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1850,8 +1788,7 @@ GameStore.Categories = { name = "Parade Horse", price = 870, id = 203, - description = - "{character}\n{speedboost}\n\nA seasoned warrior knows how to make an entry, and so does his faithful companion: Fully armored! Saddle up your impressive Jousting Horse to charge into battle in style, gallop into the arena on the back of your striking Tourney Horse, and ride your distinguished Parade Horse through the streets of Thais to show off your chivalrous qualities. With a horse in full barding, nobody will ever rain on your parade again.", + description = "{character}\n{speedboost}\n\nA seasoned warrior knows how to make an entry, and so does his faithful companion: Fully armored! Saddle up your impressive Jousting Horse to charge into battle in style, gallop into the arena on the back of your striking Tourney Horse, and ride your distinguished Parade Horse through the streets of Thais to show off your chivalrous qualities. With a horse in full barding, nobody will ever rain on your parade again.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1883,8 +1820,7 @@ GameStore.Categories = { name = "Poppy Ibex", price = 750, id = 198, - description = - "{character}\n{speedboost}\n\nNo mountain is too high, no wall too steep to climb for the agile Poppy, Mint and Cinnamon Ibex. They keep their balance on the thinnest of ledges, so you will never stumble, slip or go flying off the edges. Moreover, these sturdy fellows certainly know how to make an entrance as they dive down from the highest peaks and attack opponents with their impressive horns. And if you dare to call them a wild goat, they might kick you with their legs.", + description = "{character}\n{speedboost}\n\nNo mountain is too high, no wall too steep to climb for the agile Poppy, Mint and Cinnamon Ibex. They keep their balance on the thinnest of ledges, so you will never stumble, slip or go flying off the edges. Moreover, these sturdy fellows certainly know how to make an entrance as they dive down from the highest peaks and attack opponents with their impressive horns. And if you dare to call them a wild goat, they might kick you with their legs.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1900,8 +1836,7 @@ GameStore.Categories = { name = "Rabbit Rickshaw", price = 870, id = 138, - description = - "{character}\n{speedboost}\n\nYour lower back worsens with every trip you spend on the back of your mount and you are looking for a more comfortable alternative to travel through the lands? Say no more! The Rabbit Rickshaw comes with two top-performing hares that never get tired thanks to the brand new and highly innovative propulsion technology. Just keep some back-up carrots in your pocket and you will be fine!", + description = "{character}\n{speedboost}\n\nYour lower back worsens with every trip you spend on the back of your mount and you are looking for a more comfortable alternative to travel through the lands? Say no more! The Rabbit Rickshaw comes with two top-performing hares that never get tired thanks to the brand new and highly innovative propulsion technology. Just keep some back-up carrots in your pocket and you will be fine!", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1909,8 +1844,7 @@ GameStore.Categories = { name = "Radiant Raven", price = 690, id = 193, - description = - "{character}\n{speedboost}\n\nThe origins of the Emerald Raven, Mystic Raven, and Radiant Raven are shrouded in darkness, as no written record nor tale told by even the most knowing storytellers mentions but a trace of them. Superstition surrounds them, as some see these gigantic birds as an echo of a long forgotten past, while others believe them to herald hitherto unknown events. What is clear is that they are highly intelligent beings which make great companions if they deem somebody worthy.", + description = "{character}\n{speedboost}\n\nThe origins of the Emerald Raven, Mystic Raven, and Radiant Raven are shrouded in darkness, as no written record nor tale told by even the most knowing storytellers mentions but a trace of them. Superstition surrounds them, as some see these gigantic birds as an echo of a long forgotten past, while others believe them to herald hitherto unknown events. What is clear is that they are highly intelligent beings which make great companions if they deem somebody worthy.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1950,8 +1884,7 @@ GameStore.Categories = { name = "River Crocovile", price = 750, id = 141, - description = - "{character}\n{speedboost}\n\nTo the keen observer, the crocovile is clearly a relative of the crocodile, albeit their look suggests an even more aggressive nature. While it is true that the power of its massive and muscular body can not only crush enemies dead but also break through any gate like a battering ram, a crocovile is, above all, a steadfast companion showing unwavering loyalty to its owner.", + description = "{character}\n{speedboost}\n\nTo the keen observer, the crocovile is clearly a relative of the crocodile, albeit their look suggests an even more aggressive nature. While it is true that the power of its massive and muscular body can not only crush enemies dead but also break through any gate like a battering ram, a crocovile is, above all, a steadfast companion showing unwavering loyalty to its owner.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1975,8 +1908,7 @@ GameStore.Categories = { name = "Sanguine Frog", price = 690, id = 121, - description = - "{character}\n{speedboost}\n\nFor centuries, humans and monsters have dumped their garbage in the swamps around Venore. The combination of old, rusty weapons, stale mana and broken runes have turned some of the swamp dwellers into gigantic frogs. Benefit from those mutations and make the Sanguine Frog a faithful mount for your adventures even beyond the bounds of the swamp.", + description = "{character}\n{speedboost}\n\nFor centuries, humans and monsters have dumped their garbage in the swamps around Venore. The combination of old, rusty weapons, stale mana and broken runes have turned some of the swamp dwellers into gigantic frogs. Benefit from those mutations and make the Sanguine Frog a faithful mount for your adventures even beyond the bounds of the swamp.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -1984,8 +1916,7 @@ GameStore.Categories = { name = "Savanna Ostrich", price = 500, id = 168, - description = - "{character}\n{speedboost}\n\nThese birds have a strong maternal instinct since their fledglings are completely dependent on their parents for protection. Do not expect them to abandon their brood only because they are carrying you around. In fact, if you were to separate them from their chick, the Savanna Ostrich, Coral Rhea and Eventide Nandu would turn into vicious beings, so don't even try it!", + description = "{character}\n{speedboost}\n\nThese birds have a strong maternal instinct since their fledglings are completely dependent on their parents for protection. Do not expect them to abandon their brood only because they are carrying you around. In fact, if you were to separate them from their chick, the Savanna Ostrich, Coral Rhea and Eventide Nandu would turn into vicious beings, so don't even try it!", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -2105,8 +2036,7 @@ GameStore.Categories = { name = "Swamp Crocovile", price = 750, id = 142, - description = - "{character}\n{speedboost}\n\nTo the keen observer, the crocovile is clearly a relative of the crocodile, albeit their look suggests an even more aggressive nature. While it is true that the power of its massive and muscular body can not only crush enemies dead but also break through any gate like a battering ram, a crocovile is, above all, a steadfast companion showing unwavering loyalty to its owner.", + description = "{character}\n{speedboost}\n\nTo the keen observer, the crocovile is clearly a relative of the crocodile, albeit their look suggests an even more aggressive nature. While it is true that the power of its massive and muscular body can not only crush enemies dead but also break through any gate like a battering ram, a crocovile is, above all, a steadfast companion showing unwavering loyalty to its owner.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -2122,8 +2052,7 @@ GameStore.Categories = { name = "Tangerine Speckled Koi", price = 750, id = 207, - description = - "{character}\n{speedboost}\n\nThe vibrant colours and elegance of a Tangerine Flecked Koi, a Brass Speckled Koi, and an Ink Spotted Koi make them a fascinating sight to behold, and their boisterous nature and speed will make you the first to arrive wherever there are riches to gain. Wield your weapon as gracefully and effortlessly as your swimming companion glides through the water, and the two of you will make the perfect and most deadly pair.", + description = "{character}\n{speedboost}\n\nThe vibrant colours and elegance of a Tangerine Flecked Koi, a Brass Speckled Koi, and an Ink Spotted Koi make them a fascinating sight to behold, and their boisterous nature and speed will make you the first to arrive wherever there are riches to gain. Wield your weapon as gracefully and effortlessly as your swimming companion glides through the water, and the two of you will make the perfect and most deadly pair.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -2155,8 +2084,7 @@ GameStore.Categories = { name = "Topaz Shrine", price = 690, id = 195, - description = - "{character}\n{speedboost}\n\nThe famous Wandering Shrines were first raised by the nomad people of the Zaoan steppe. Their exceptional craftsmanship, combining architectonic features with living animals, is acknowledged even far beyond the continent of Zao. These spiritual companions will give you the opportunity to regain your strength during long and exciting journeys.", + description = "{character}\n{speedboost}\n\nThe famous Wandering Shrines were first raised by the nomad people of the Zaoan steppe. Their exceptional craftsmanship, combining architectonic features with living animals, is acknowledged even far beyond the continent of Zao. These spiritual companions will give you the opportunity to regain your strength during long and exciting journeys.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -2164,8 +2092,7 @@ GameStore.Categories = { name = "Tourney Horse", price = 870, id = 205, - description = - "{character}\n{speedboost}\n\nA seasoned warrior knows how to make an entry, and so does his faithful companion: Fully armored! Saddle up your impressive Jousting Horse to charge into battle in style, gallop into the arena on the back of your striking Tourney Horse, and ride your distinguished Parade Horse through the streets of Thais to show off your chivalrous qualities. With a horse in full barding, nobody will ever rain on your parade again.", + description = "{character}\n{speedboost}\n\nA seasoned warrior knows how to make an entry, and so does his faithful companion: Fully armored! Saddle up your impressive Jousting Horse to charge into battle in style, gallop into the arena on the back of your striking Tourney Horse, and ride your distinguished Parade Horse through the streets of Thais to show off your chivalrous qualities. With a horse in full barding, nobody will ever rain on your parade again.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -2173,8 +2100,7 @@ GameStore.Categories = { name = "Toxic Toad", price = 690, id = 122, - description = - "{character}\n{speedboost}\n\nFor centuries, humans and monsters have dumped their garbage in the swamps around Venore. The combination of old, rusty weapons, stale mana and broken runes have turned some of the swamp dwellers into gigantic frogs. Benefit from those mutations and make the Toxic Toad a faithful mount for your adventures even beyond the bounds of the swamp.", + description = "{character}\n{speedboost}\n\nFor centuries, humans and monsters have dumped their garbage in the swamps around Venore. The combination of old, rusty weapons, stale mana and broken runes have turned some of the swamp dwellers into gigantic frogs. Benefit from those mutations and make the Toxic Toad a faithful mount for your adventures even beyond the bounds of the swamp.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -2246,8 +2172,7 @@ GameStore.Categories = { name = "Zaoan Badger", price = 690, id = 149, - description = - "{character}\n{speedboost}\n\nBadgers have been a staple of the Tibian fauna for a long time, and finally some daring souls have braved the challenge to tame some exceptional specimens - and succeeded! While the common badger you can encounter during your travels might seem like a rather unassuming creature, the Battle Badger, the Ether Badger, and the Zaoan Badger are fierce and mighty beasts, which are at your beck and call.", + description = "{character}\n{speedboost}\n\nBadgers have been a staple of the Tibian fauna for a long time, and finally some daring souls have braved the challenge to tame some exceptional specimens - and succeeded! While the common badger you can encounter during your travels might seem like a rather unassuming creature, the Battle Badger, the Ether Badger, and the Zaoan Badger are fierce and mighty beasts, which are at your beck and call.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, }, @@ -2266,8 +2191,7 @@ GameStore.Categories = { price = 600, sexId = { female = 1450, male = 1449 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nArmed with a powerful crossbow, and gifted with steady hands as well as a sharp eye, the Arbalester is not one to be trifled with. Requiring both skill and strength to properly wield, the arbalest is a mighty tool in the hands of an able marksman, shooting deadly bolts across great distance.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nArmed with a powerful crossbow, and gifted with steady hands as well as a sharp eye, the Arbalester is not one to be trifled with. Requiring both skill and strength to properly wield, the arbalest is a mighty tool in the hands of an able marksman, shooting deadly bolts across great distance.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2276,8 +2200,7 @@ GameStore.Categories = { price = 870, sexId = { female = 885, male = 884 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nFight your bloody battles in the arena and become a darling of the crowd. Once you have made it to the top and everyone is cheering your name, the fashionable outfit of an Arena Champion will show the world what you are made of.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nFight your bloody battles in the arena and become a darling of the crowd. Once you have made it to the top and everyone is cheering your name, the fashionable outfit of an Arena Champion will show the world what you are made of.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2286,8 +2209,7 @@ GameStore.Categories = { price = 600, sexId = { female = 1619, male = 1618 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nArmoured Archers are the epitome of invisible danger. Silently and nimbly, they advance in the background. For hours, they wait patiently, almost motionless, for the decisive moment. Just to be perfectly present in a deadly second.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nArmoured Archers are the epitome of invisible danger. Silently and nimbly, they advance in the background. For hours, they wait patiently, almost motionless, for the decisive moment. Just to be perfectly present in a deadly second.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, home = true, }, @@ -2306,8 +2228,7 @@ GameStore.Categories = { price = 600, sexId = { female = 1246, male = 1245 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nEven the most eager adventurers and toughest warriors need some time to rest and recharge. Enjoy tranquility and peace as you picnic in good company at one of your favourite places in Tibia. Put on your Breezy Garb outfit, grab your walking stick, a basket filled with tasty snacks and then head out into nature!", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nEven the most eager adventurers and toughest warriors need some time to rest and recharge. Enjoy tranquility and peace as you picnic in good company at one of your favourite places in Tibia. Put on your Breezy Garb outfit, grab your walking stick, a basket filled with tasty snacks and then head out into nature!", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2316,8 +2237,7 @@ GameStore.Categories = { price = 750, sexId = { female = 694, male = 695 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nIf you want to make a great entrance at a Tibian costume party, the Ceremonial Garb is certainly a good choice. With a drum over your shoulder and adorned with feathers you are perfectly dressed to lead a carnival parade through the streets of Thais.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nIf you want to make a great entrance at a Tibian costume party, the Ceremonial Garb is certainly a good choice. With a drum over your shoulder and adorned with feathers you are perfectly dressed to lead a carnival parade through the streets of Thais.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2335,8 +2255,7 @@ GameStore.Categories = { price = 900, sexId = { female = 664, male = 665 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nYou have always felt like the cat among the pigeons and have a fable for dark magic? The Chaos Acolyte outfit is a perfect way to express your inner nature. Show your commitment for the higher cause and wreak havoc on your enemies in this unique outfit.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nYou have always felt like the cat among the pigeons and have a fable for dark magic? The Chaos Acolyte outfit is a perfect way to express your inner nature. Show your commitment for the higher cause and wreak havoc on your enemies in this unique outfit.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2345,8 +2264,7 @@ GameStore.Categories = { price = 750, sexId = { female = 635, male = 634 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nYou recently graduated from the Magic Academy and want to bring your knowledge to good use? Congratulations, you are now an honourable disciple of magic! Open up a bottle of well-aged mana and treat yourself with the fashionable Conjurer outfit.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nYou recently graduated from the Magic Academy and want to bring your knowledge to good use? Congratulations, you are now an honourable disciple of magic! Open up a bottle of well-aged mana and treat yourself with the fashionable Conjurer outfit.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2355,8 +2273,7 @@ GameStore.Categories = { price = 600, sexId = { female = 666, male = 667 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nDeath and decay are your ever-present companions? Your enemies are dropping like flies and your path is covered with their bodies? However, as decency demands, you want to at least give them a proper funeral? Then the Death Herald is just the right outfit for you.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nDeath and decay are your ever-present companions? Your enemies are dropping like flies and your path is covered with their bodies? However, as decency demands, you want to at least give them a proper funeral? Then the Death Herald is just the right outfit for you.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2365,8 +2282,7 @@ GameStore.Categories = { price = 870, sexId = { female = 1445, male = 1444 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nA Dragon Knight is ready for everything, channeling the primordial might of the winged, ancient beasts into weapons and armour. Their imposing demeanour and impressive appearance are often enough to quell any animosity towards them, and those who still dare oppose them are not long for this world.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nA Dragon Knight is ready for everything, channeling the primordial might of the winged, ancient beasts into weapons and armour. Their imposing demeanour and impressive appearance are often enough to quell any animosity towards them, and those who still dare oppose them are not long for this world.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2375,8 +2291,7 @@ GameStore.Categories = { price = 750, sexId = { female = 471, male = 472 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nSlaughter through hordes of monsters during your early morning hunt and kiss the hand of Queen Eloise later on at the evening reception in her historical residence. With the Entrepreneur outfit you will cut a fine figure on every occasion.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nSlaughter through hordes of monsters during your early morning hunt and kiss the hand of Queen Eloise later on at the evening reception in her historical residence. With the Entrepreneur outfit you will cut a fine figure on every occasion.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2394,8 +2309,7 @@ GameStore.Categories = { price = 750, sexId = { female = 1576, male = 1575 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThey are skilled, they are disciplined, they wield their weapon with deadly precision as a form of art. Fencers are true masters of the blade who can cut through anything and anyone in the blink of an eye. While being feared for their lethal attacks, they are also admired for their elegant and fierce style, their dashing looks. Do not be on the fence, be a fencer, or at least dress like one with this fashionable, cutting-edge outfit.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThey are skilled, they are disciplined, they wield their weapon with deadly precision as a form of art. Fencers are true masters of the blade who can cut through anything and anyone in the blink of an eye. While being feared for their lethal attacks, they are also admired for their elegant and fierce style, their dashing looks. Do not be on the fence, be a fencer, or at least dress like one with this fashionable, cutting-edge outfit.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2404,8 +2318,7 @@ GameStore.Categories = { price = 750, sexId = { female = 1416, male = 1415 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe Forest Warden watches over all living things in the woods, be they plants or beasts. They have a special connection to the earth they tread on, the air they breathe, and the wind which whispers around them. Naturally, the suit that they don is not made out of dead vegetation, but is a living being itself.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe Forest Warden watches over all living things in the woods, be they plants or beasts. They have a special connection to the earth they tread on, the air they breathe, and the wind which whispers around them. Naturally, the suit that they don is not made out of dead vegetation, but is a living being itself.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2414,8 +2327,7 @@ GameStore.Categories = { price = 750, sexId = { female = 1613, male = 1612 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nTheir imposing appearance alone made many experienced warriors shudder. Frost Tracers are true giants that are used to survive even under the most inhospitable circumstances. Tough, strong and untamable, they follow their own path through roughness and obscurity. Nobody wants to mess with one of their kind.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nTheir imposing appearance alone made many experienced warriors shudder. Frost Tracers are true giants that are used to survive even under the most inhospitable circumstances. Tough, strong and untamable, they follow their own path through roughness and obscurity. Nobody wants to mess with one of their kind.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2424,8 +2336,7 @@ GameStore.Categories = { price = 600, sexId = { female = 1490, male = 1489 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nBeing a Ghost Blade means having mastered the way of the warrior. No matter the circumstances, these fighters retain full control over their body and mind, with the sole focus of vanquishing their foe. So great is their ability that they not only control the weapons in their hands perfectly, but two floating blades following them as well.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nBeing a Ghost Blade means having mastered the way of the warrior. No matter the circumstances, these fighters retain full control over their body and mind, with the sole focus of vanquishing their foe. So great is their ability that they not only control the weapons in their hands perfectly, but two floating blades following them as well.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2434,8 +2345,7 @@ GameStore.Categories = { price = 870, sexId = { female = 909, male = 908 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nFeeling the springy grass under your feet and inhaling the spicy air of the forest is pure satisfaction for your soul? Every animal is your friend and you caringly look after trees and plants all the time? Then it is time to become one with nature: Become a Grove Keeper!", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nFeeling the springy grass under your feet and inhaling the spicy air of the forest is pure satisfaction for your soul? Every animal is your friend and you caringly look after trees and plants all the time? Then it is time to become one with nature: Become a Grove Keeper!", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2444,8 +2354,7 @@ GameStore.Categories = { price = 870, sexId = { female = 1187, male = 1186 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nCarrying the guidon of a unit, always marching in front, is not only an honour but also comes with great responsibility. Guidon bearers wield great power, they lead where others follow and keep the spirits of the troops up as they wave their flag against the golden suns of Tibia.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nCarrying the guidon of a unit, always marching in front, is not only an honour but also comes with great responsibility. Guidon bearers wield great power, they lead where others follow and keep the spirits of the troops up as they wave their flag against the golden suns of Tibia.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2454,8 +2363,7 @@ GameStore.Categories = { price = 750, sexId = { female = 1020, male = 1021 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe Herbalist outfit is the perfect outfit for all herbs collectors. Those of you who are aware that you do not necessarily have to reach into the mouth of a hydra to get a hydra tongue and those who know exactly where to get blood- and shadow-herbs will find a matching outfit for their daily hobby. Show the world your affinity for herbs and impress your friends with your knowledge of medicine and potions.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe Herbalist outfit is the perfect outfit for all herbs collectors. Those of you who are aware that you do not necessarily have to reach into the mouth of a hydra to get a hydra tongue and those who know exactly where to get blood- and shadow-herbs will find a matching outfit for their daily hobby. Show the world your affinity for herbs and impress your friends with your knowledge of medicine and potions.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2482,8 +2390,7 @@ GameStore.Categories = { price = 840, sexId = { female = 900, male = 899 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nDo you feel the adrenaline rushing through your veins when the sun goes down and a full moon lightens the night? Do you have the urge to hunt down your target no matter what? Unleash the beast inside of you and lead your friends to battle with the Lupine Warden outfit!", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nDo you feel the adrenaline rushing through your veins when the sun goes down and a full moon lightens the night? Do you have the urge to hunt down your target no matter what? Unleash the beast inside of you and lead your friends to battle with the Lupine Warden outfit!", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2492,8 +2399,7 @@ GameStore.Categories = { price = 870, sexId = { female = 1057, male = 1056 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe Mercenary carries a powerful, razor-sharp axe on his shoulders that effortlessly cuts through any armour and bone. You should better tell your friends to keep a safe distance, since heads will roll over the blood-soaked battleground after a powerful swing of yours.\nConsidering the sheer size of this axe, it might even be possible to chop onions without shedding a tear.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe Mercenary carries a powerful, razor-sharp axe on his shoulders that effortlessly cuts through any armour and bone. You should better tell your friends to keep a safe distance, since heads will roll over the blood-soaked battleground after a powerful swing of yours.\nConsidering the sheer size of this axe, it might even be possible to chop onions without shedding a tear.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2502,8 +2408,7 @@ GameStore.Categories = { price = 600, sexId = { female = 1383, male = 1382 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nAre you ready for the festive season? Or feeling festive regardless of the time of year? Then the Merry Garb is perfect for you. Donning the outfit not only puts you in a mirthful mood, but spreads blitheness on your travels throughout the lands.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nAre you ready for the festive season? Or feeling festive regardless of the time of year? Then the Merry Garb is perfect for you. Donning the outfit not only puts you in a mirthful mood, but spreads blitheness on your travels throughout the lands.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2512,8 +2417,7 @@ GameStore.Categories = { price = 600, sexId = { female = 1339, male = 1338 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nIf you are fascinated by this particular group of insects and want to show your deep appreciation of these critters, the Moth Cape is for you. The wing-shaped coat and the antennae provide you with the feeling of being a moth without experiencing the downside of inevitably being drawn to light.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nIf you are fascinated by this particular group of insects and want to show your deep appreciation of these critters, the Moth Cape is for you. The wing-shaped coat and the antennae provide you with the feeling of being a moth without experiencing the downside of inevitably being drawn to light.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2522,8 +2426,7 @@ GameStore.Categories = { price = 750, sexId = { female = 1501, male = 1500 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nWhere others not dare to tread due to the biting cold and freezing winds, the Nordic Chieftain feels right at home. Braving the harsh conditions is possible due to a protective layer of warm clothing, as well as suitable armament to fend off any hostile wildlife. The helmet's massive horns are a tad heavy and unwieldy, but show the chieftain's status.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nWhere others not dare to tread due to the biting cold and freezing winds, the Nordic Chieftain feels right at home. Braving the harsh conditions is possible due to a protective layer of warm clothing, as well as suitable armament to fend off any hostile wildlife. The helmet's massive horns are a tad heavy and unwieldy, but show the chieftain's status.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2532,8 +2435,7 @@ GameStore.Categories = { price = 600, sexId = { female = 1174, male = 1173 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nOwl Keepers are often referred to as spirits walking through the forest at night, mere shadows during the day. They are also said to be shamans, protecting the flora and fauna of the Tibian lands. You often see them wearing a stag's antlers on their head and in the company of an owl, for they are as wise and mysterious as these intriguing creatures.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nOwl Keepers are often referred to as spirits walking through the forest at night, mere shadows during the day. They are also said to be shamans, protecting the flora and fauna of the Tibian lands. You often see them wearing a stag's antlers on their head and in the company of an owl, for they are as wise and mysterious as these intriguing creatures.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2542,8 +2444,7 @@ GameStore.Categories = { price = 750, sexId = { female = 956, male = 955 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nYou know how to read hieroglyphs? You admire the exceptional architectural abilities and the unsolved mysteries of an ancient high culture? Next time you pay a visit to your friends, tell them to prepare a bathtub full of milk and honey for you because a Pharaoh is now walking through the streets of Ankrahmun!", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nYou know how to read hieroglyphs? You admire the exceptional architectural abilities and the unsolved mysteries of an ancient high culture? Next time you pay a visit to your friends, tell them to prepare a bathtub full of milk and honey for you because a Pharaoh is now walking through the streets of Ankrahmun!", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2552,8 +2453,7 @@ GameStore.Categories = { price = 750, sexId = { female = 874, male = 873 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nDo you feel the urge to tell people what is really going on in the world? Do you know all answers to the important questions of life? Are you a true philosopher? Then dress like one to showcase the latest fashion for all wise theorists.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nDo you feel the urge to tell people what is really going on in the world? Do you know all answers to the important questions of life? Are you a true philosopher? Then dress like one to showcase the latest fashion for all wise theorists.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2562,8 +2462,7 @@ GameStore.Categories = { price = 870, sexId = { female = 1128, male = 1127 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nIf you cannot decide whether to wrap yourself up as a mummy or flaunt an enormous pumpkin head for your next hunting party, why not combine both? The Pumpkin Mummy outfit is the perfect costume for scary nights and spooky days.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nIf you cannot decide whether to wrap yourself up as a mummy or flaunt an enormous pumpkin head for your next hunting party, why not combine both? The Pumpkin Mummy outfit is the perfect costume for scary nights and spooky days.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2581,8 +2480,7 @@ GameStore.Categories = { price = 750, sexId = { female = 683, male = 684 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nMost of the day, the Ranger is looking over his forest. He is taking care of all animals and plants and tries to keep everything in balance. Intruders are greeted by a warning shot from his deadly longbow. It is the perfect outfit for Paladins who live in close touch with nature.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nMost of the day, the Ranger is looking over his forest. He is taking care of all animals and plants and tries to keep everything in balance. Intruders are greeted by a warning shot from his deadly longbow. It is the perfect outfit for Paladins who live in close touch with nature.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2591,8 +2489,7 @@ GameStore.Categories = { price = 840, sexId = { male = 760, female = 759 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe mutated pumpkin is too weak for your mighty weapons? Time to show that evil vegetable how to scare the living daylight out of people! Put on a scary looking pumpkin on your head and spread terror and fear amongst the Tibian population.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe mutated pumpkin is too weak for your mighty weapons? Time to show that evil vegetable how to scare the living daylight out of people! Put on a scary looking pumpkin on your head and spread terror and fear amongst the Tibian population.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2601,8 +2498,7 @@ GameStore.Categories = { price = 870, sexId = { female = 1385, male = 1384 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nA Rune Master has dedicated their whole life to the study and mastery of runes. They are intrigued by the ancient symbols, shrouded in mystery, and how their magic works. Rune Masters have a deep understanding of the awesome power they are wielding and can make use of the full potential of runes.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nA Rune Master has dedicated their whole life to the study and mastery of runes. They are intrigued by the ancient symbols, shrouded in mystery, and how their magic works. Rune Masters have a deep understanding of the awesome power they are wielding and can make use of the full potential of runes.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2629,8 +2525,7 @@ GameStore.Categories = { price = 600, sexId = { female = 1582, male = 1581 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe path of the Shadowlotus Disciple is a lonesome and threatening one. Only those who forget their name will learn to sneak within shadows. And only those who will overcome their greatest fear can become a true master of assassination.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe path of the Shadowlotus Disciple is a lonesome and threatening one. Only those who forget their name will learn to sneak within shadows. And only those who will overcome their greatest fear can become a true master of assassination.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2639,8 +2534,7 @@ GameStore.Categories = { price = 600, sexId = { female = 1050, male = 1051 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nNeither thick stone walls nor heavily armoured gates can stop the Siege Master, who brings down hostile fortifications in the blink of an eye. Whenever he tenses his muscular arms to lift the powerful battering ram, his enemies' knees begin to buckle. It is the perfect outfit for those who also stand for brute strength and immense destruction.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nNeither thick stone walls nor heavily armoured gates can stop the Siege Master, who brings down hostile fortifications in the blink of an eye. Whenever he tenses his muscular arms to lift the powerful battering ram, his enemies' knees begin to buckle. It is the perfect outfit for those who also stand for brute strength and immense destruction.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2649,8 +2543,7 @@ GameStore.Categories = { price = 600, sexId = { female = 1103, male = 1102 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nFrom an early age, the Sinister Archer has been fascinated by people's dark machinations and perversions. Sinister Archers claim that they advocate the good and that they only use their arrows to pierce the hearts of those who have committed many crimes and misdeeds. However, they are still viewed by the public with much suspicion due to their dubious appearance. To keep their identity secret, they often hide themselves behind a skull-like face guard that can easily withstand even axe and club blows.", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nFrom an early age, the Sinister Archer has been fascinated by people's dark machinations and perversions. Sinister Archers claim that they advocate the good and that they only use their arrows to pierce the hearts of those who have committed many crimes and misdeeds. However, they are still viewed by the public with much suspicion due to their dubious appearance. To keep their identity secret, they often hide themselves behind a skull-like face guard that can easily withstand even axe and club blows.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2668,8 +2561,7 @@ GameStore.Categories = { price = 750, sexId = { female = 1024, male = 1023 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nDo you worship warm temperatures and are opposed to the thought of long and dark winter nights? Do you refuse to spend countless evenings in front of your chimney while ice-cold wind whistles through the cracks and niches of your house? It is time to stop freezing and to become an honourable Sun Priest! With this stylish outfit, you can finally show the world your unconditional dedication and commitment to the sun!", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nDo you worship warm temperatures and are opposed to the thought of long and dark winter nights? Do you refuse to spend countless evenings in front of your chimney while ice-cold wind whistles through the cracks and niches of your house? It is time to stop freezing and to become an honourable Sun Priest! With this stylish outfit, you can finally show the world your unconditional dedication and commitment to the sun!", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -2687,8 +2579,7 @@ GameStore.Categories = { price = 870, sexId = { female = 900, male = 899 }, addon = 3, - description = - "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nYou spend hours in the woods in search of wild and rare animals? Countless stuffed skulls of deer, wolves and other creatures are decorating your walls? Now you have the chance to present your trophies in public. Become a Trophy Hunter and cover your shoulders with the finest bear skulls!", + description = "{character}\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nYou spend hours in the woods in search of wild and rare animals? Countless stuffed skulls of deer, wolves and other creatures are decorating your walls? Now you have the chance to present your trophies in public. Become a Trophy Hunter and cover your shoulders with the finest bear skulls!", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -5914,8 +5805,7 @@ GameStore.Categories = { price = 150, itemtype = { 39788, 39789 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -5924,8 +5814,7 @@ GameStore.Categories = { price = 150, itemtype = { 35936, 35937 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -5934,8 +5823,7 @@ GameStore.Categories = { price = 120, itemtype = { 34320, 34321 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -5944,8 +5832,7 @@ GameStore.Categories = { price = 180, itemtype = { 39437, 39438 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -5954,8 +5841,7 @@ GameStore.Categories = { price = 150, itemtype = { 37201, 37202 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -5964,8 +5850,7 @@ GameStore.Categories = { price = 150, itemtype = { 37031, 37032 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -5974,8 +5859,7 @@ GameStore.Categories = { price = 180, itemtype = { 35859, 35860 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -5984,8 +5868,7 @@ GameStore.Categories = { price = 120, itemtype = { 42359, 42360 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -5994,8 +5877,7 @@ GameStore.Categories = { price = 180, itemtype = { 35871, 35872 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -6004,8 +5886,7 @@ GameStore.Categories = { price = 180, itemtype = { 42287, 42288 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -6014,8 +5895,7 @@ GameStore.Categories = { price = 120, itemtype = { 37793, 37794 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -6024,8 +5904,7 @@ GameStore.Categories = { price = 180, itemtype = { 35883, 35884 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -6034,8 +5913,7 @@ GameStore.Categories = { price = 150, itemtype = { 26096, 26097 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, { @@ -6044,8 +5922,7 @@ GameStore.Categories = { price = 150, itemtype = { 35206, 35207 }, count = 1, - description = - "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", + description = "Sleep in a bed to restore soul, mana and hit points and to train your skills!\n\n{house}\n{boxicon}comes in 2 boxes which can only be unwrapped by purchasing character, put the 2 parts together to get a functional bed\n{storeinbox}\n{usablebyallicon}if not already occupied, it can be used by every Premium character that has access to the house\n{useicon}use it to sleep in it\n{backtoinbox}\n", type = GameStore.OfferTypes.OFFER_TYPE_ITEM_BED, }, }, @@ -6157,8 +6034,7 @@ GameStore.Categories = { count = 1, number = 1, sexId = { female = 1107, male = 1108 }, - description = - "Get your very own hireling to serve you and your guests in your own four walls!\n\n{house} can only be unwrapped in a house owned by the purchasing character\n{boxicon} comes in a magic lamp which can only be used by purchasing character\n{storeinbox}\n{usablebyallicon} can be used by all characters that have access to the house\n{useicon} use the magic lamp to summon your hireling\n{backtoinbox}\n{info} maximum amount that can be owned by character: 10", + description = "Get your very own hireling to serve you and your guests in your own four walls!\n\n{house} can only be unwrapped in a house owned by the purchasing character\n{boxicon} comes in a magic lamp which can only be used by purchasing character\n{storeinbox}\n{usablebyallicon} can be used by all characters that have access to the house\n{useicon} use the magic lamp to summon your hireling\n{backtoinbox}\n{info} maximum amount that can be owned by character: 10", type = GameStore.OfferTypes.OFFER_TYPE_HIRELING, }, { @@ -6238,8 +6114,7 @@ GameStore.Categories = { id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.BANKER, count = 1, number = 1, - description = - "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", + description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", type = GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT, }, { @@ -6249,8 +6124,7 @@ GameStore.Categories = { id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.TRADER, count = 1, number = 1, - description = - "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", + description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", type = GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT, }, { @@ -6260,8 +6134,7 @@ GameStore.Categories = { id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.COOKING, count = 1, number = 1, - description = - "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", + description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", type = GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT, }, { @@ -6271,8 +6144,7 @@ GameStore.Categories = { id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.STEWARD, count = 1, number = 1, - description = - "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", + description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", type = GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT, }, { @@ -6282,8 +6154,7 @@ GameStore.Categories = { id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.SERVANT, count = 1, number = 1, - description = - "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", + description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", type = GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT, }, { @@ -6343,7 +6214,7 @@ GameStore.Categories = { description = "Purchase a boost that increases the experience points your character gains from hunting by 50%!\n\n{character}\n{info} lasts for 1 hour hunting time\n{info} paused if stamina falls under 14 hours\n{info} can be purchased up to 5 times between 2 server saves\n{info} price increases with every purchase\n{info} cannot be purchased if an XP boost is already active", type = GameStore.OfferTypes.OFFER_TYPE_EXPBOOST, }, - } + }, }, -- Extras { @@ -6393,7 +6264,7 @@ GameStore.Categories = { id = GameStore.SubActions.PREY_WILDCARD, count = 5, description = "Use Prey Wildcards to reroll the bonus of an active prey, to lock your active prey or to select a prey of your choice.\n\n{character}\n{info} added directly to Prey dialog\n{info} maximum amount that can be owned by character: 50", - type = GameStore.OfferTypes.OFFER_TYPE_PREYBONUS + type = GameStore.OfferTypes.OFFER_TYPE_PREYBONUS, }, { icons = { "Instant_Reward_Access.png" }, @@ -6402,7 +6273,7 @@ GameStore.Categories = { id = GameStore.SubActions.INSTANT_REWARD, count = 1, description = "No matter where you are in Tibia, claim your daily reward on the spot!\n\n{character}\n{info} added to your reward wall\n{info} maximum amount that can be owned by character: 90", - type = GameStore.OfferTypes.OFFER_TYPE_INSTANT_REWARD_ACCESS + type = GameStore.OfferTypes.OFFER_TYPE_INSTANT_REWARD_ACCESS, }, { icons = { "Charm_Expansion_Offer.png" }, @@ -6410,7 +6281,7 @@ GameStore.Categories = { price = 450, id = GameStore.SubActions.CHARM_EXPANSION, description = "Assign as many of your unlocked Charms as you like and get a 25% discount whenever you are removing a Charm from a creature!\n\n{character}\n{once}", - type = GameStore.OfferTypes.OFFER_TYPE_CHARMS + type = GameStore.OfferTypes.OFFER_TYPE_CHARMS, }, { icons = { "Permanent_Prey_Slot.png" }, @@ -6418,7 +6289,7 @@ GameStore.Categories = { price = 900, id = GameStore.SubActions.PREY_THIRDSLOT_REDIRECT, description = "Get an additional prey slot to activate additional prey!\n\n{character}\n{info} maximum amount that can be owned by character: 3\n{info} added directly to Prey dialog", - type = GameStore.OfferTypes.OFFER_TYPE_PREYSLOT + type = GameStore.OfferTypes.OFFER_TYPE_PREYSLOT, }, { icons = { "Permanent_Hunting_Task_Slot.png" }, @@ -6426,7 +6297,7 @@ GameStore.Categories = { price = 900, id = GameStore.SubActions.TASKHUNTING_THIRDSLOT, description = "Get an additional hunting tasks slot to activate additional hunting task!\n\n{character}\n{info} maximum amount that can be owned by character: 3\n{info} added directly to Hunting Task dialog", - type = GameStore.OfferTypes.OFFER_TYPE_HUNTINGSLOT + type = GameStore.OfferTypes.OFFER_TYPE_HUNTINGSLOT, }, { icons = { "Gold_Converter.png" }, @@ -6452,8 +6323,7 @@ GameStore.Categories = { price = 15, itemtype = 28525, charges = 500, - description = - "Changes automatically either a stack of 100 gold pieces into 1 platinum coin, or a stack of 100 platinum coins into 1 crystal coin!\n\n{character}\n{storeinbox}\n{useicon} use it to activate or deactivate the automatic conversion\n{info} converts all stacks of 100 gold or platinum in the inventory whenever it is activated\n{info} deactivated upon purchase\n{info} usable for 500 conversions a piece", + description = "Changes automatically either a stack of 100 gold pieces into 1 platinum coin, or a stack of 100 platinum coins into 1 crystal coin!\n\n{character}\n{storeinbox}\n{useicon} use it to activate or deactivate the automatic conversion\n{info} converts all stacks of 100 gold or platinum in the inventory whenever it is activated\n{info} deactivated upon purchase\n{info} usable for 500 conversions a piece", type = GameStore.OfferTypes.OFFER_TYPE_CHARGES, }, { @@ -6552,8 +6422,7 @@ GameStore.Categories = { name = "Cerberus Champion", price = 1250, id = 146, - description = - "{info} usable by all characters of the account\n{speedboost}\n\nA fierce and grim guardian of the underworld has risen to fight side by side with the bravest warriors in order to send evil creatures into the realm of the dead. The three headed Cerberus Champion is constantly baying for blood and using its sharp fangs it easily rips apart even the strongest armour and shield.", + description = "{info} usable by all characters of the account\n{speedboost}\n\nA fierce and grim guardian of the underworld has risen to fight side by side with the bravest warriors in order to send evil creatures into the realm of the dead. The three headed Cerberus Champion is constantly baying for blood and using its sharp fangs it easily rips apart even the strongest armour and shield.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -6616,8 +6485,7 @@ GameStore.Categories = { price = 5000, sexId = { female = 1289, male = 1288 }, addon = 3, - description = - "{info} usable by all characters of the account\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe souls of countless slain dragons have been fused over the years with this armour, wrought from the impervious scales of the ancestors of those very same beings, wicked and wise, winged and wild. The Dragon Slayer Outfit has seen an unfathomable amount of bloodshed, but it pales in comparison to the untold lives lost in the strife over the armour itself. Only the mightiest warriors can even begin to dream of ever owning this exceedingly rare token of power.", + description = "{info} usable by all characters of the account\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe souls of countless slain dragons have been fused over the years with this armour, wrought from the impervious scales of the ancestors of those very same beings, wicked and wise, winged and wild. The Dragon Slayer Outfit has seen an unfathomable amount of bloodshed, but it pales in comparison to the untold lives lost in the strife over the armour itself. Only the mightiest warriors can even begin to dream of ever owning this exceedingly rare token of power.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -6684,8 +6552,7 @@ GameStore.Categories = { name = "Jousting Eagle", price = 1250, id = 145, - description = - "{info} usable by all characters of the account\n{speedboost}\n\nHigh above the clouds far away from dry land, the training of giant eagles takes place. Only the cream of the crop is able to survive in such harsh environment long enough to call themselves Jousting Eagles while the weaklings find themselves at the bottom of the sea. The tough ones become noble and graceful mounts that are well known for their agility and endurance.", + description = "{info} usable by all characters of the account\n{speedboost}\n\nHigh above the clouds far away from dry land, the training of giant eagles takes place. Only the cream of the crop is able to survive in such harsh environment long enough to call themselves Jousting Eagles while the weaklings find themselves at the bottom of the sea. The tough ones become noble and graceful mounts that are well known for their agility and endurance.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -6703,8 +6570,7 @@ GameStore.Categories = { price = 1750, sexId = { female = 1207, male = 1206 }, addon = 3, - description = - "{info} usable by all characters of the account\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe Lion of War has fought on countless battlefields and never lost once. Enemies tremble with fear when he batters his sword against his almighty shield. Realising that a Lion of War knows no mercy, his opponents often surrender before the battle even begins.", + description = "{info} usable by all characters of the account\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nThe Lion of War has fought on countless battlefields and never lost once. Enemies tremble with fear when he batters his sword against his almighty shield. Realising that a Lion of War knows no mercy, his opponents often surrender before the battle even begins.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -6767,8 +6633,7 @@ GameStore.Categories = { price = 1750, sexId = { female = 1205, male = 1204 }, addon = 3, - description = - "{info} usable by all characters of the account\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nA Veteran Paladin has mastered the art of distance fighting. No matter how far away his prey may be, a marksman like the Veteran Paladin will always hit with extraordinary precision. No one can escape his keen hawk-eyed vision and even small stones become deadly weapons in his hands.", + description = "{info} usable by all characters of the account\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nA Veteran Paladin has mastered the art of distance fighting. No matter how far away his prey may be, a marksman like the Veteran Paladin will always hit with extraordinary precision. No one can escape his keen hawk-eyed vision and even small stones become deadly weapons in his hands.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, { @@ -6786,8 +6651,7 @@ GameStore.Categories = { price = 1750, sexId = { female = 1203, male = 1202 }, addon = 3, - description = - "{info} usable by all characters of the account\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nAccording to ancient rumours, the pulsating orb that the Void Master balances skilfully on the tip of his staff consists of powerful cosmic spheres. If you gaze too long into the infinite emptiness inside the orb, its powers will absorb your mind.", + description = "{info} usable by all characters of the account\n{info} colours can be changed using the Outfit dialog\n{info} includes basic outfit and 2 addons which can be selected individually\n\nAccording to ancient rumours, the pulsating orb that the Void Master balances skilfully on the tip of his staff consists of powerful cosmic spheres. If you gaze too long into the infinite emptiness inside the orb, its powers will absorb your mind.", type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT, }, }, diff --git a/data/modules/scripts/gamestore/init.lua b/data/modules/scripts/gamestore/init.lua index d879b1ca6cb..9ae19559049 100644 --- a/data/modules/scripts/gamestore/init.lua +++ b/data/modules/scripts/gamestore/init.lua @@ -402,27 +402,27 @@ function parseBuyStoreOffer(playerId, msg) -- All guarding conditions under which the offer should not be processed must be included here if - (table.contains(GameStore.OfferTypes, offer.type) == false) -- we've got an invalid offer type - or not player - or (player:getVocation():getId() == 0) and (not GameStore.haveOfferRook(id)) -- we don't have such offer - or not offer - or (offer.type == GameStore.OfferTypes.OFFER_TYPE_NONE) -- offer is disabled - or ( - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_EXPBOOST - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYBONUS - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYSLOT - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_TEMPLE - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_INSTANT_REWARD_ACCESS - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_POUCH - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_NAMECHANGE - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_SEXCHANGE - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_SKILL - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT - and not offer.id - ) + (table.contains(GameStore.OfferTypes, offer.type) == false) -- we've got an invalid offer type + or not player + or (player:getVocation():getId() == 0) and (not GameStore.haveOfferRook(id)) -- we don't have such offer + or not offer + or (offer.type == GameStore.OfferTypes.OFFER_TYPE_NONE) -- offer is disabled + or ( + offer.type ~= GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_EXPBOOST + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYBONUS + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYSLOT + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_TEMPLE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_INSTANT_REWARD_ACCESS + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_POUCH + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_NAMECHANGE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_SEXCHANGE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_SKILL + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT + and not offer.id + ) then return queueSendStoreAlertToUser("This offer is unavailable [1]", 350, playerId, GameStore.StoreErrors.STORE_ERROR_INFORMATION) end @@ -541,7 +541,7 @@ local function getCategoriesRook() local tmpTable, count = {}, 0 for i, v in pairs(GameStore.Categories) do if v.rookgaard then - tmpTable[#tmpTable+1] = v + tmpTable[#tmpTable + 1] = v count = count + 1 end end @@ -622,16 +622,16 @@ function Player.canBuyOffer(self, offer) end if - offer.type ~= GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_EXPBOOST - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYSLOT - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYBONUS - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_TEMPLE - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_POUCH - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_SKILL - and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT - and not offer.id + offer.type ~= GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_EXPBOOST + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYSLOT + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_PREYBONUS + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_TEMPLE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_POUCH + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_SKILL + and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT + and not offer.id then disabled = 1 end @@ -1675,9 +1675,9 @@ function GameStore.processOutfitPurchase(player, offerSexIdTable, addon) return error({ code = 0, message = "You already own this outfit." }) else if - not (player:addOutfitAddon(looktype, _addon)) -- TFS call failed - or (not player:hasOutfit(looktype, _addon)) -- Additional check; if the looktype doesn't match player sex for example, - -- then the TFS check will still pass... bug? (TODO) + not (player:addOutfitAddon(looktype, _addon)) -- TFS call failed + or (not player:hasOutfit(looktype, _addon)) -- Additional check; if the looktype doesn't match player sex for example, + -- then the TFS check will still pass... bug? (TODO) then error({ code = 0, message = "There has been an issue with your outfit purchase. Your purchase has been cancelled." }) else diff --git a/data/modules/scripts/hirelings/hireling_module.lua b/data/modules/scripts/hirelings/hireling_module.lua index 0ccd135162c..ce928b01fa9 100644 --- a/data/modules/scripts/hirelings/hireling_module.lua +++ b/data/modules/scripts/hirelings/hireling_module.lua @@ -3,7 +3,7 @@ HirelingModule = {} HirelingModule.Credits = { Developer = 'Leonardo "Leu" Pereira (jlcvp)', Version = "1.0", - Date = "30/04/2020 " + Date = "30/04/2020 ", } HirelingModule.S_Packets = { SendOutfitWindow = 0xC8 } @@ -47,7 +47,7 @@ local function parseChangeOutfit(player, msg) end function onRecvbyte(player, msg, byte) - if (byte == HirelingModule.C_Packets.ConfirmOutfitChange) then + if byte == HirelingModule.C_Packets.ConfirmOutfitChange then if not player:isChangingHirelingOutfit() then return end diff --git a/data/modules/scripts/questtrack/questtrack.lua b/data/modules/scripts/questtrack/questtrack.lua index ce44535a470..9f26efb4e33 100644 --- a/data/modules/scripts/questtrack/questtrack.lua +++ b/data/modules/scripts/questtrack/questtrack.lua @@ -3,7 +3,7 @@ function onRecvbyte(player, msg, byte) local quests = {} local missions = msg:getByte() for i = 1, missions do - quests[#quests+1] = msg:getU16() + quests[#quests + 1] = msg:getU16() end player:resetTrackedMissions(quests) end diff --git a/data/npclib/npc.lua b/data/npclib/npc.lua index 4a8a19c1c8c..f4e8feddd96 100644 --- a/data/npclib/npc.lua +++ b/data/npclib/npc.lua @@ -16,7 +16,7 @@ function MsgContains(message, keyword) return true end - return lowerMessage:find(lowerKeyword) and not lowerMessage:find('(%w+)' .. lowerKeyword) + return lowerMessage:find(lowerKeyword) and not lowerMessage:find("(%w+)" .. lowerKeyword) end function MsgFind(message, keyword) @@ -25,9 +25,7 @@ function MsgFind(message, keyword) return true end - return string.find(lowerMessage, lowerKeyword) - and string.find(lowerMessage, lowerKeyword .. '(%w+)') - and string.find(lowerMessage, '(%w+)' .. lowerKeyword) + return string.find(lowerMessage, lowerKeyword) and string.find(lowerMessage, lowerKeyword .. "(%w+)") and string.find(lowerMessage, "(%w+)" .. lowerKeyword) end -- Npc talk @@ -68,10 +66,9 @@ function SayEvent(npcId, playerId, messageDelayed, npcHandler, textType) [TAG_PLAYERNAME] = player:getName(), [TAG_TIME] = getFormattedWorldTime(), [TAG_BLESSCOST] = Blessings.getBlessingsCost(player:getLevel(), false), - [TAG_PVPBLESSCOST] = Blessings.getPvpBlessingCost(player:getLevel(), false) + [TAG_PVPBLESSCOST] = Blessings.getPvpBlessingCost(player:getLevel(), false), } - npc:say(npcHandler:parseMessage(messageDelayed, parseInfo), - textType or TALKTYPE_PRIVATE_NP, false, player, npc:getPosition()) + npc:say(npcHandler:parseMessage(messageDelayed, parseInfo), textType or TALKTYPE_PRIVATE_NP, false, player, npc:getPosition()) end function GetCount(string) diff --git a/data/npclib/npc_system/bank_system.lua b/data/npclib/npc_system/bank_system.lua index 14f896f2bfe..02e47da9de7 100644 --- a/data/npclib/npc_system/bank_system.lua +++ b/data/npclib/npc_system/bank_system.lua @@ -4,8 +4,7 @@ local receiptFormat = "Date: %s\nType: %s\nGold Amount: %d\nReceipt Owner: %s\nR local function GetReceipt(info) local receipt = Game.createItem(info.success and 19598 or 19599) - receipt:setAttribute(ITEM_ATTRIBUTE_TEXT, receiptFormat:format(os.date("%d. %b %Y - %H:%M:%S"), - info.type, info.amount, info.owner, info.recipient, info.message)) + receipt:setAttribute(ITEM_ATTRIBUTE_TEXT, receiptFormat:format(os.date("%d. %b %Y - %H:%M:%S"), info.type, info.amount, info.owner, info.recipient, info.message)) return receipt end @@ -30,8 +29,8 @@ function Npc:parseBankMessages(message, npc, creature, npcHandler) ["bank account"] = { "Every Tibian has one. The big advantage is that you can access your money in every branch of the Tibian Bank! ...", "Would you like to know more about the {basic} functions of your bank account, the {advanced} functions, \z - or are you already bored, perhaps?" - } + or are you already bored, perhaps?", + }, } npcHandler:sendMessages(message, messagesTable, npc, creature, true, 3000) @@ -48,20 +47,48 @@ function Npc:parseBank(message, npc, creature, npcHandler) if MsgContains(message, "balance") then local balance = Bank.balance(player) if balance >= 100000000 then - npcHandler:say(string.format("I think you must be one of the richest inhabitants in the world! \z - Your account balance is %d gold.", balance), npc, creature) + npcHandler:say( + string.format( + "I think you must be one of the richest inhabitants in the world! \z + Your account balance is %d gold.", + balance + ), + npc, + creature + ) return true elseif balance >= 10000000 then - npcHandler:say(string.format("You have made ten millions and it still grows! \z - Your account balance is %d gold.", balance), npc, creature) + npcHandler:say( + string.format( + "You have made ten millions and it still grows! \z + Your account balance is %d gold.", + balance + ), + npc, + creature + ) return true elseif balance >= 1000000 then - npcHandler:say(string.format("Wow, you have reached the magic number of a million gp!!! \z - Your account balance is %d gold!", balance), npc, creature) + npcHandler:say( + string.format( + "Wow, you have reached the magic number of a million gp!!! \z + Your account balance is %d gold!", + balance + ), + npc, + creature + ) return true elseif balance >= 100000 then - npcHandler:say(string.format("You certainly have made a pretty penny. \z - Your account balance is %d gold.", balance), npc, creature) + npcHandler:say( + string.format( + "You certainly have made a pretty penny. \z + Your account balance is %d gold.", + balance + ), + npc, + creature + ) return true else npcHandler:say(string.format("Your account balance is %d gold.", balance), npc, creature) @@ -76,8 +103,7 @@ function Npc:parseBank(message, npc, creature, npcHandler) if string.match(message, "%d+") then count[playerId] = getMoneyCount(message) if isValidMoney(count[playerId]) then - npcHandler:say(string.format("Would you really like to deposit %d gold?", - count[playerId]), npc, creature) + npcHandler:say(string.format("Would you really like to deposit %d gold?", count[playerId]), npc, creature) npcHandler:setTopic(playerId, 2) else npcHandler:say("You do not have enough gold.", npc, creature) @@ -108,8 +134,15 @@ function Npc:parseBank(message, npc, creature, npcHandler) elseif npcHandler:getTopic(playerId) == 2 then if MsgContains(message, "yes") then if Player.depositMoney(player, count[playerId]) then - npcHandler:say(string.format("Alright, we have added the amount of %d gold to your {balance}. \z - You can {withdraw} your money anytime you want to.", count[playerId]), npc, creature) + npcHandler:say( + string.format( + "Alright, we have added the amount of %d gold to your {balance}. \z + You can {withdraw} your money anytime you want to.", + count[playerId] + ), + npc, + creature + ) else npcHandler:say("You do not have enough gold.", npc, creature) end @@ -123,8 +156,7 @@ function Npc:parseBank(message, npc, creature, npcHandler) if string.match(message, "%d+") then count[playerId] = getMoneyCount(message) if isValidMoney(count[playerId]) then - npcHandler:say(string.format("Are you sure you wish to withdraw %d gold from your bank account?", - count[playerId]), npc, creature) + npcHandler:say(string.format("Are you sure you wish to withdraw %d gold from your bank account?", count[playerId]), npc, creature) npcHandler:setTopic(playerId, 7) else npcHandler:say("There is not enough gold on your account.", npc, creature) @@ -139,8 +171,7 @@ function Npc:parseBank(message, npc, creature, npcHandler) elseif npcHandler:getTopic(playerId) == 6 then count[playerId] = getMoneyCount(message) if isValidMoney(count[playerId]) then - npcHandler:say(string.format("Are you sure you wish to withdraw %d gold from your bank account?", - count[playerId]), npc, creature) + npcHandler:say(string.format("Are you sure you wish to withdraw %d gold from your bank account?", count[playerId]), npc, creature) npcHandler:setTopic(playerId, 7) else npcHandler:say("There is not enough gold on your account.", npc, creature) @@ -153,17 +184,19 @@ function Npc:parseBank(message, npc, creature, npcHandler) if not player:withdrawMoney(count[playerId]) then npcHandler:say("There is not enough gold on your account.", npc, creature) else - npcHandler:say(string.format("Here you are, %d gold. Please let me know if there is something else I can do for you.", - count[playerId]), npc, creature) + npcHandler:say(string.format("Here you are, %d gold. Please let me know if there is something else I can do for you.", count[playerId]), npc, creature) end else - npcHandler:say("Whoah, hold on, you have no room in your inventory to carry all those coins. \z - I don't want you to drop it on the floor, maybe come back with a cart!", npc, creature) + npcHandler:say( + "Whoah, hold on, you have no room in your inventory to carry all those coins. \z + I don't want you to drop it on the floor, maybe come back with a cart!", + npc, + creature + ) end npcHandler:setTopic(playerId, 0) elseif MsgContains(message, "no") then - npcHandler:say("The customer is king! Come back anytime you want to if you wish to {withdraw} your money.", - npc, creature) + npcHandler:say("The customer is king! Come back anytime you want to if you wish to {withdraw} your money.", npc, creature) npcHandler:setTopic(playerId, 0) end return true @@ -191,15 +224,14 @@ function Npc:parseBank(message, npc, creature, npcHandler) "druidsample", "sorcerersample", "knightsample", - "paladinsample" + "paladinsample", } if table.contains(arrayDenied, string.gsub(transfer[playerId], " ", "")) then npcHandler:say("This player does not exist.", npc, creature) npcHandler:setTopic(playerId, 0) return true end - npcHandler:say(string.format("So you would like to transfer %d gold to %s?", - count[playerId], string.titleCase(transfer[playerId])), npc, creature) + npcHandler:say(string.format("So you would like to transfer %d gold to %s?", count[playerId], string.titleCase(transfer[playerId])), npc, creature) npcHandler:setTopic(playerId, 13) return true else @@ -245,7 +277,7 @@ function Npc:parseBank(message, npc, creature, npcHandler) "druidsample", "sorcerersample", "knightsample", - "paladinsample" + "paladinsample", } if table.contains(arrayDenied, string.gsub(transfer[playerId], " ", "")) then npcHandler:say("This player does not exist.", npc, creature) @@ -263,8 +295,7 @@ function Npc:parseBank(message, npc, creature, npcHandler) if not player:transferMoneyTo(transfer[playerId], count[playerId]) then npcHandler:say("You cannot transfer money to this account.", npc, creature) else - npcHandler:say(string.format("Very well. You have transferred %d gold to %s.", - count[playerId], string.titleCase(transfer[playerId])), npc, creature) + npcHandler:say(string.format("Very well. You have transferred %d gold to %s.", count[playerId], string.titleCase(transfer[playerId])), npc, creature) transfer[playerId] = nil end elseif MsgContains(message, "no") then @@ -281,8 +312,7 @@ function Npc:parseBank(message, npc, creature, npcHandler) npcHandler:setTopic(playerId, 0) else count[playerId] = getMoneyCount(message) - npcHandler:say(string.format("So you would like me to change %d of your gold coins into %d platinum coins?", - count[playerId] * 100, count[playerId]), npc, creature) + npcHandler:say(string.format("So you would like me to change %d of your gold coins into %d platinum coins?", count[playerId] * 100, count[playerId]), npc, creature) npcHandler:setTopic(playerId, 15) end elseif npcHandler:getTopic(playerId) == 15 then @@ -317,8 +347,7 @@ function Npc:parseBank(message, npc, creature, npcHandler) npcHandler:setTopic(playerId, 0) else count[playerId] = getMoneyCount(message) - npcHandler:say(string.format("So you would like me to change %d of your platinum coins into %d gold coins for you?", - count[playerId] * 100, count[playerId]), npc, creature) + npcHandler:say(string.format("So you would like me to change %d of your platinum coins into %d gold coins for you?", count[playerId] * 100, count[playerId]), npc, creature) npcHandler:setTopic(playerId, 18) end elseif npcHandler:getTopic(playerId) == 18 then @@ -339,8 +368,7 @@ function Npc:parseBank(message, npc, creature, npcHandler) npcHandler:setTopic(playerId, 0) else count[playerId] = getMoneyCount(message) - npcHandler:say(string.format("So you would like me to change %d of your platinum coins into %d crystal coins for you?", - count[playerId] * 100, count[playerId]), npc, creature) + npcHandler:say(string.format("So you would like me to change %d of your platinum coins into %d crystal coins for you?", count[playerId] * 100, count[playerId]), npc, creature) npcHandler:setTopic(playerId, 20) end elseif npcHandler:getTopic(playerId) == 20 then @@ -364,8 +392,7 @@ function Npc:parseBank(message, npc, creature, npcHandler) npcHandler:setTopic(playerId, 0) else count[playerId] = getMoneyCount(message) - npcHandler:say(string.format("So you would like me to change %d of your crystal coins into %d platinum coins for you?", - count[playerId] * 100, count[playerId]), npc, creature) + npcHandler:say(string.format("So you would like me to change %d of your crystal coins into %d platinum coins for you?", count[playerId] * 100, count[playerId]), npc, creature) npcHandler:setTopic(playerId, 22) end elseif npcHandler:getTopic(playerId) == 22 then @@ -408,8 +435,7 @@ function Npc:parseGuildBank(message, npc, creature, playerId, npcHandler) npcHandler:setTopic(playerId, 0) return false end - npcHandler:say(string.format("Would you really like to deposit %d gold to your {guild account}?", - count[playerId]), npc, creature) + npcHandler:say(string.format("Would you really like to deposit %d gold to your {guild account}?", count[playerId]), npc, creature) npcHandler:setTopic(playerId, 123) return true else @@ -420,8 +446,7 @@ function Npc:parseGuildBank(message, npc, creature, playerId, npcHandler) elseif npcHandler:getTopic(playerId) == 122 then count[playerId] = getMoneyCount(message) if isValidMoney(count[playerId]) then - npcHandler:say(string.format("Would you really like to deposit %d gold to your {guild account}?", - count[playerId]), npc, creature) + npcHandler:say(string.format("Would you really like to deposit %d gold to your {guild account}?", count[playerId]), npc, creature) npcHandler:setTopic(playerId, 123) return true else @@ -431,15 +456,21 @@ function Npc:parseGuildBank(message, npc, creature, playerId, npcHandler) end elseif npcHandler:getTopic(playerId) == 123 then if MsgContains(message, "yes") then - npcHandler:say(string.format("Alright, we have placed an order to deposit the amount of %d gold to \z + npcHandler:say( + string.format( + "Alright, we have placed an order to deposit the amount of %d gold to \z your guild account. Please check your inbox for confirmation.", - count[playerId]), npc, creature) + count[playerId] + ), + npc, + creature + ) local guild = player:getGuild() local info = { type = "Guild Deposit", amount = count[playerId], owner = player:getName() .. " of " .. guild:getName(), - recipient = guild:getName() + recipient = guild:getName(), } local amount = tonumber(count[playerId]) if Bank.hasBalance(player, amount) then @@ -490,8 +521,7 @@ function Npc:parseGuildBank(message, npc, creature, playerId, npcHandler) elseif npcHandler:getTopic(playerId) == 124 then count[playerId] = getMoneyCount(message) if isValidMoney(count[playerId]) then - npcHandler:say(string.format("Are you sure you wish to withdraw %d gold from your guild account?", - count[playerId]), npc, creature) + npcHandler:say(string.format("Are you sure you wish to withdraw %d gold from your guild account?", count[playerId]), npc, creature) npcHandler:setTopic(playerId, 125) else npcHandler:say("There is not enough gold on your guild account.", npc, creature) @@ -501,14 +531,20 @@ function Npc:parseGuildBank(message, npc, creature, playerId, npcHandler) elseif npcHandler:getTopic(playerId) == 125 then if MsgContains(message, "yes") then local guild = player:getGuild() - npcHandler:say(string.format("We placed an order to withdraw %d gold from your guild account. \z + npcHandler:say( + string.format( + "We placed an order to withdraw %d gold from your guild account. \z Please check your inbox for confirmation.", - count[playerId]), npc, creature) + count[playerId] + ), + npc, + creature + ) local info = { type = "Guild Withdraw", amount = count[playerId], owner = player:getName() .. " of " .. guild:getName(), - recipient = player:getName() + recipient = player:getName(), } if Bank.hasBalance(guild, tonumber(count[playerId])) then info.message = "We are happy to inform you that your transfer request was successfully carried out." @@ -550,8 +586,7 @@ function Npc:parseGuildBank(message, npc, creature, playerId, npcHandler) npcHandler:say(string.format("So you would like to transfer %d gold from your guild account to guild %s?", count[playerId], guildName), npc, creature) npcHandler:setTopic(playerId, 128) else - npcHandler:say(string.format("Which guild would you like to transfer %d gold to?", - count[playerId]), npc, creature) + npcHandler:say(string.format("Which guild would you like to transfer %d gold to?", count[playerId]), npc, creature) npcHandler:setTopic(playerId, 127) end else @@ -599,14 +634,13 @@ function Npc:parseGuildBank(message, npc, creature, playerId, npcHandler) return true elseif npcHandler:getTopic(playerId) == 128 then if MsgContains(message, "yes") then - npcHandler:say(string.format("We have placed an order to transfer %d gold from your guild account to guild %s. Please check your inbox for confirmation.", - count[playerId], string.titleCase(transfer[playerId])), npc, creature) + npcHandler:say(string.format("We have placed an order to transfer %d gold from your guild account to guild %s. Please check your inbox for confirmation.", count[playerId], string.titleCase(transfer[playerId])), npc, creature) local guild = player:getGuild() local info = { type = "Guild to Guild Transfer", amount = count[playerId], owner = player:getName() .. " of " .. guild:getName(), - recipient = transfer[playerId] + recipient = transfer[playerId], } local amount = tonumber(count[playerId]) if Bank.transferToGuild(guild, transfer[playerId], amount) then diff --git a/data/npclib/npc_system/custom_modules.lua b/data/npclib/npc_system/custom_modules.lua index 270ab11f0ad..10e16b956bd 100644 --- a/data/npclib/npc_system/custom_modules.lua +++ b/data/npclib/npc_system/custom_modules.lua @@ -1,6 +1,6 @@ -- Custom Modules, created to help us in this datapack local travelDiscounts = { - ["postman"] = { price = 10, storage = Storage.Quest.ExampleQuest, value = 1 } + ["postman"] = { price = 10, storage = Storage.Quest.ExampleQuest, value = 1 }, } function StdModule.travelDiscount(npc, player, discounts) @@ -94,47 +94,32 @@ function KeywordHandler:addSpellKeyword(keys, parameters) local localKeys = keys localKeys.callback = FocusModule.messageMatcherDefault - local npcHandler, spellName, price, vocationId = parameters.npcHandler, - parameters.spellName, parameters.price, parameters.vocation - - local spellKeyword = self:addKeyword( - localKeys, - StdModule.say, - { - npcHandler = npcHandler, - text = string.format("Do you want to learn the spell '%s' for %s?\z ", - spellName, price > 0 and price .. ' gold' or 'free') - }, - function(player) - -- This will register for all client id vocations - local vocationClientId = player:getVocation():getBaseId() - if type(vocationId) == "table" then - return table.contains(vocationId, vocationClientId) - else - return vocationId == vocationClientId - end + local npcHandler, spellName, price, vocationId = parameters.npcHandler, parameters.spellName, parameters.price, parameters.vocation + + local spellKeyword = self:addKeyword(localKeys, StdModule.say, { + npcHandler = npcHandler, + text = string.format("Do you want to learn the spell '%s' for %s?\z ", spellName, price > 0 and price .. " gold" or "free"), + }, function(player) + -- This will register for all client id vocations + local vocationClientId = player:getVocation():getBaseId() + if type(vocationId) == "table" then + return table.contains(vocationId, vocationClientId) + else + return vocationId == vocationClientId end - ) - - spellKeyword:addChildKeyword( - { "yes" }, - StdModule.learnSpell, - { - npcHandler = npcHandler, - spellName = spellName, - level = parameters.level, - price = price - } - ) - spellKeyword:addChildKeyword( - { "no" }, - StdModule.say, - { - npcHandler = npcHandler, - text = "Maybe next time.", - reset = true - } - ) + end) + + spellKeyword:addChildKeyword({ "yes" }, StdModule.learnSpell, { + npcHandler = npcHandler, + spellName = spellName, + level = parameters.level, + price = price, + }) + spellKeyword:addChildKeyword({ "no" }, StdModule.say, { + npcHandler = npcHandler, + text = "Maybe next time.", + reset = true, + }) end local hints = { @@ -161,7 +146,7 @@ local hints = { "Baking bread is rather complex. First of all you need a scythe to harvest wheat. \z Then you use the wheat with a millstone to get flour. ...", "This can be be used on water to get dough, which can be used on an oven to bake bread. \z - Use milk instead of water to get cake dough." + Use milk instead of water to get cake dough.", }, [11] = "Dying hurts! Better run away than risk your life. \z You are going to lose experience and skill points when you die.", @@ -194,7 +179,7 @@ local hints = { having to fear negative consequences.", [27] = "The leader of a party has the option to distribute gathered experience among all players in the party. \z If you are the leader, right-click on yourself and select 'Enable Shared Experience'.", - [28] = "There is nothing more I can tell you. If you are still in need of some {hints}, I can repeat them for you." + [28] = "There is nothing more I can tell you. If you are still in need of some {hints}, I can repeat them for you.", } function StdModule.rookgaardHints(npc, player, message, keywords, parameters, node) diff --git a/data/npclib/npc_system/keyword_handler.lua b/data/npclib/npc_system/keyword_handler.lua index 58fe92e954c..677ec7ed90f 100644 --- a/data/npclib/npc_system/keyword_handler.lua +++ b/data/npclib/npc_system/keyword_handler.lua @@ -8,7 +8,7 @@ if KeywordHandler == nil then children = nil, parent = nil, condition = nil, - action = nil + action = nil, } -- Created a new keywordnode with the given keywords, callback function and parameters and without any childNodes. @@ -55,13 +55,13 @@ if KeywordHandler == nil then local data = {} local last = 0 for _, keyword in ipairs(self.keywords) do - if type(keyword) == 'string' then + if type(keyword) == "string" then local a, b = string.find(message, keyword) if a == nil or b == nil or a < last then return false end - if keyword:sub(1, 1) == '%' then - data[#data+1] = tonumber(message:sub(a, b)) or nil + if keyword:sub(1, 1) == "%" then + data[#data + 1] = tonumber(message:sub(a, b)) or nil end last = a end @@ -99,7 +99,7 @@ if KeywordHandler == nil then function KeywordNode:addAliasKeyword(keywords) if #self.children == 0 then - logger.error('[KeywordNode:addAliasKeyword] - No previous node found') + logger.error("[KeywordNode:addAliasKeyword] - No previous node found") return false end @@ -113,14 +113,14 @@ if KeywordHandler == nil then -- Adds a pre-created childNode to this node. Should be used for example if several nodes should have a common child. function KeywordNode:addChildKeywordNode(childNode) - self.children[#self.children+1] = childNode + self.children[#self.children + 1] = childNode childNode.parent = self return childNode end KeywordHandler = { root = nil, - lastNode = nil + lastNode = nil, } -- Creates a new keywordhandler with an empty rootnode. @@ -145,7 +145,7 @@ if KeywordHandler == nil then function KeywordHandler:processMessage(npc, player, message) local node = self:getLastNode(player) if node == nil then - error('No root node found.') + error("No root node found.") return false end diff --git a/data/npclib/npc_system/modules.lua b/data/npclib/npc_system/modules.lua index 0b445f7ed2b..523c332b499 100644 --- a/data/npclib/npc_system/modules.lua +++ b/data/npclib/npc_system/modules.lua @@ -46,15 +46,15 @@ if Modules == nil then return false end - local cost, costMessage = (configManager.getBoolean(configKeys.TOGGLE_TRAVELS_FREE) and 0) or parameters.cost, '%d gold' + local cost, costMessage = (configManager.getBoolean(configKeys.TOGGLE_TRAVELS_FREE) and 0) or parameters.cost, "%d gold" if cost and cost > 0 then if parameters.discount then cost = cost - StdModule.travelDiscount(npc, player, parameters.discount) end - costMessage = cost > 0 and string.format(costMessage, cost) or 'free' + costMessage = cost > 0 and string.format(costMessage, cost) or "free" else - costMessage = 'free' + costMessage = "free" end local parseInfo = { @@ -62,7 +62,7 @@ if Modules == nil then [TAG_TIME] = getFormattedWorldTime(), [TAG_BLESSCOST] = Blessings.getBlessingsCost(player:getLevel(), false), [TAG_PVPBLESSCOST] = Blessings.getPvpBlessingCost(player:getLevel(), false), - [TAG_TRAVELCOST] = costMessage + [TAG_TRAVELCOST] = costMessage, } if parameters.text then npcHandler:say(npcHandler:parseMessage(parameters.text, parseInfo), npc, player) @@ -99,8 +99,7 @@ if Modules == nil then if player:getStorageValue(STORAGEVALUE_PROMOTION) == 1 then npcHandler:say("You are already promoted!", npc, player) elseif player:getLevel() < parameters.level then - npcHandler:say(string.format("I am sorry, but I can only promote you once you have reached level %d.", - parameters.level), npc, player) + npcHandler:say(string.format("I am sorry, but I can only promote you once you have reached level %d.", parameters.level), npc, player) elseif not player:removeMoneyBank(parameters.cost) then npcHandler:say("You do not have enough money!", npc, player) else @@ -131,15 +130,13 @@ if Modules == nil then elseif not player:canLearnSpell(parameters.spellName) then npcHandler:say("You cannot learn this spell.", npc, player) elseif not player:removeMoneyBank(parameters.price) then - npcHandler:say(string.format("You do not have enough money, this spell costs %s gold.", - parameters.price), npc, player) + npcHandler:say(string.format("You do not have enough money, this spell costs %s gold.", parameters.price), npc, player) else npcHandler:say(string.format("You have learned '%s'.", parameters.spellName), npc, player) player:learnSpell(parameters.spellName) end else - npcHandler:say(string.format("You need a premium account in order to buy '%s'.", - parameters.spellName), npc, player) + npcHandler:say(string.format("You need a premium account in order to buy '%s'.", parameters.spellName), npc, player) end npcHandler:resetNpc(player) @@ -158,18 +155,21 @@ if Modules == nil then local parseInfo = { [TAG_BLESSCOST] = Blessings.getBlessingsCost(player:getLevel(), false), - [TAG_PVPBLESSCOST] = Blessings.getPvpBlessingCost(player:getLevel(), false) + [TAG_PVPBLESSCOST] = Blessings.getPvpBlessingCost(player:getLevel(), false), } if player:hasBlessing(parameters.bless) then npcHandler:say("You already possess this blessing.", npc, player) elseif parameters.bless == 3 and player:getStorageValue(Storage.KawillBlessing) ~= 1 then npcHandler:say("You need the blessing of the great geomancer first.", npc, player) elseif parameters.bless == 1 and #player:getBlessings() == 0 and not player:getItemById(3057, true) then - npcHandler:say("You don't have any of the other blessings nor an amulet of loss, \z + npcHandler:say( + "You don't have any of the other blessings nor an amulet of loss, \z so it wouldn't make sense to bestow this protection on you now. \z - Remember that it can only protect you from the loss of those!", npc, player) - elseif not player:removeMoneyBank(type(parameters.cost) == "string" - and npcHandler:parseMessage(parameters.cost, parseInfo) or parameters.cost) then + Remember that it can only protect you from the loss of those!", + npc, + player + ) + elseif not player:removeMoneyBank(type(parameters.cost) == "string" and npcHandler:parseMessage(parameters.cost, parseInfo) or parameters.cost) then npcHandler:say("Oh. You do not have enough money.", npc, player) else npcHandler:say(parameters.text or "You have been blessed by one of the seven gods!", npc, player) @@ -218,14 +218,14 @@ if Modules == nil then elseif not player:removeMoneyBank(cost) then npcHandler:say("You don't have enough money.", npc, player) elseif os.time() < player:getStorageValue(Global.Storage.NpcExhaust) then - npcHandler:say('Sorry, but you need to wait three seconds before travel again.', player) + npcHandler:say("Sorry, but you need to wait three seconds before travel again.", player) playerPosition:sendMagicEffect(CONST_ME_POFF) else npcHandler:removeInteraction(npc, player) npcHandler:say(parameters.text or "Set the sails!", npc, player) local destination = parameters.destination - if type(destination) == 'function' then + if type(destination) == "function" then destination = destination(player) end @@ -253,7 +253,7 @@ if Modules == nil then farewellWords = nil, greetCallback = nil, farewellCallback = nil, - tradeCallback = nil + tradeCallback = nil, } -- Creates a new instance of FocusModule without an associated NpcHandler. @@ -273,7 +273,7 @@ if Modules == nil then end for i, word in pairs(FOCUS_GREETWORDS) do local obj = {} - obj[#obj+1] = word + obj[#obj + 1] = word obj.callback = FOCUS_GREETWORDS.callback or FocusModule.messageMatcher handler.keywordHandler:addKeyword(obj, FocusModule.onGreet, { module = self }) end @@ -283,7 +283,7 @@ if Modules == nil then end for i, word in pairs(FOCUS_FAREWELLWORDS) do local obj = {} - obj[#obj+1] = word + obj[#obj + 1] = word obj.callback = FOCUS_FAREWELLWORDS.callback or FocusModule.messageMatcher handler.keywordHandler:addKeyword(obj, FocusModule.onFarewell, { module = self }) end @@ -293,7 +293,7 @@ if Modules == nil then end for i, word in pairs(FOCUS_TRADE_MESSAGE) do local obj = {} - obj[#obj+1] = word + obj[#obj + 1] = word obj.callback = FOCUS_TRADE_MESSAGE.callback or FocusModule.messageMatcher handler.keywordHandler:addKeyword(obj, FocusModule.onTradeRequest, { module = self }) end @@ -306,8 +306,7 @@ if Modules == nil then self.greetWords = {} end - - if type(message) == 'string' then + if type(message) == "string" then table.insert(self.greetWords, message) else for i = 1, #message do @@ -322,7 +321,7 @@ if Modules == nil then self.farewellWords = {} end - if type(message) == 'string' then + if type(message) == "string" then table.insert(self.farewellWords, message) else for i = 1, #message do @@ -368,9 +367,7 @@ if Modules == nil then function FocusModule.messageMatcher(keywords, message) for i, word in pairs(keywords) do if type(word) == "string" then - if string.find(message, word) - and not string.find(message, "[%w+]" .. word) - and not string.find(message, word .. "[%w+]") then + if string.find(message, word) and not string.find(message, "[%w+]" .. word) and not string.find(message, word .. "[%w+]") then return true end end @@ -379,7 +376,7 @@ if Modules == nil then end KeywordModule = { - npcHandler = nil + npcHandler = nil, } function KeywordModule:new() @@ -400,22 +397,19 @@ if Modules == nil then local keywords = {} for temp in string.gmatch(keys, "[^,]+") do - keywords[#keywords+1] = temp + keywords[#keywords + 1] = temp i = i + 1 end end end function KeywordModule:addKeyword(keywords, reply) - self.npcHandler.keywordHandler:addKeyword( - keywords, StdModule.say, - { - npcHandler = self.npcHandler, - onlyFocus = true, - text = reply, - reset = true - } - ) + self.npcHandler.keywordHandler:addKeyword(keywords, StdModule.say, { + npcHandler = self.npcHandler, + onlyFocus = true, + text = reply, + reset = true, + }) end TravelModule = { @@ -465,9 +459,13 @@ if Modules == nil then elseif i == 6 then premium = temp == "true" else - logger.warn("[TravelModule:parseDestinations] - Npc: {}] \z + logger.warn( + "[TravelModule:parseDestinations] - Npc: {}] \z Unknown parameter found in travel destination parameter. temp[{}], destination[{}]", - npc:getName(), temp, destination) + npc:getName(), + temp, + destination + ) end i = i + 1 end @@ -475,33 +473,32 @@ if Modules == nil then if name and x and y and z and cost then self:addDestination(name, { x = x, y = y, z = z }, cost, premium) else - logger.warn("[TravelModule:parseDestinations] - Npc: {}] Parameter(s) missing for travel destination: x = {}, y = {}, z = {}", - npc:getName(), x, y, z) + logger.warn("[TravelModule:parseDestinations] - Npc: {}] Parameter(s) missing for travel destination: x = {}, y = {}, z = {}", npc:getName(), x, y, z) end end end function TravelModule:addDestination(name, position, price, premium) - self.destinations[#self.destinations+1] = name + self.destinations[#self.destinations + 1] = name local parameters = { cost = price, destination = position, premium = premium, - module = self + module = self, } local keywords = {} - keywords[#keywords+1] = name + keywords[#keywords + 1] = name local keywords2 = {} - keywords2[#keywords2+1] = "bring me to " .. name + keywords2[#keywords2 + 1] = "bring me to " .. name local node = self.npcHandler.keywordHandler:addKeyword(keywords, TravelModule.travel, parameters) self.npcHandler.keywordHandler:addKeyword(keywords2, TravelModule.bringMeTo, parameters) node:addChildKeywordNode(self.yesNode) node:addChildKeywordNode(self.noNode) - self.npcHandler.keywordHandler:addKeyword({ 'yes' }, TravelModule.onConfirm, { module = self }) - self.npcHandler.keywordHandler:addKeyword({ 'no' }, TravelModule.onDecline, { module = self }) + self.npcHandler.keywordHandler:addKeyword({ "yes" }, TravelModule.onConfirm, { module = self }) + self.npcHandler.keywordHandler:addKeyword({ "no" }, TravelModule.onDecline, { module = self }) end -- TODO(Eduardo): Need fix this function, is not ok @@ -513,8 +510,7 @@ if Modules == nil then local cost = (configManager.getBoolean(configKeys.TOGGLE_TRAVELS_FREE) and 0) or parameters.cost - module.npcHandler:say(string.format("Do you want to travel to '%s' for '%d' gold coins?", - keywords[1], cost), npc, player) + module.npcHandler:say(string.format("Do you want to travel to '%s' for '%d' gold coins?", keywords[1], cost), npc, player) return true end @@ -560,7 +556,7 @@ if Modules == nil then return false end local parseInfo = { - [TAG_PLAYERNAME] = Player(player):getName() + [TAG_PLAYERNAME] = Player(player):getName(), } local msg = module.npcHandler:parseMessage(module.npcHandler:getMessage(MESSAGE_DECLINE), parseInfo) module.npcHandler:say(msg, npc, player) diff --git a/data/npclib/npc_system/npc_handler.lua b/data/npclib/npc_system/npc_handler.lua index b3cd44e610f..980e9d5f371 100644 --- a/data/npclib/npc_system/npc_handler.lua +++ b/data/npclib/npc_system/npc_handler.lua @@ -94,8 +94,8 @@ if NpcHandler == nil then [MESSAGE_ONCLOSESHOP] = "Thank you, come back whenever you're in need of something else.", [MESSAGE_ALREADYFOCUSED] = "|PLAYERNAME|, I am already talking to you.", [MESSAGE_WALKAWAY_MALE] = "", - [MESSAGE_WALKAWAY_FEMALE] = "" - } + [MESSAGE_WALKAWAY_FEMALE] = "", + }, } -- Creates a new NpcHandler with an empty callbackFunction stack. @@ -265,7 +265,7 @@ if NpcHandler == nil then -- Variables "greetCallback, farewellCallback and tradeCallback" are boolean value, true by default function NpcHandler:addModule(module, initNpcName, greetCallback, farewellCallback, tradeCallback) if self.modules ~= nil then - self.modules[#self.modules+1] = module + self.modules[#self.modules + 1] = module self.npcName = initNpcName if greetCallback == nil then logger.warn("[NpcHandler:addModule] - Greet callback is missing for npc with name: {}, setting to true", initNpcName) @@ -347,7 +347,7 @@ if NpcHandler == nil then -- Translates all message tags found in msg using parseInfo function NpcHandler:parseMessage(msg, parseInfo) local ret = msg - if type(ret) == 'string' then + if type(ret) == "string" then for search, replace in pairs(parseInfo) do ret = string.gsub(ret, search, replace) end @@ -431,9 +431,7 @@ if NpcHandler == nil then end if self.keywordHandler ~= nil then - if self:checkInteraction(npc, player) - and msgtype == TALKTYPE_PRIVATE_PN - or not self:checkInteraction(npc, player) then + if self:checkInteraction(npc, player) and msgtype == TALKTYPE_PRIVATE_PN or not self:checkInteraction(npc, player) then local ret = self.keywordHandler:processMessage(npc, player, msg) if not ret then callback = self:getCallback(CALLBACK_MESSAGE_DEFAULT) @@ -608,18 +606,19 @@ if NpcHandler == nil then self.talkDelay = delay end -- The "self.talkDelayTimeForOutgoingMessages * 1000" = Interval for sending subsequent messages from the first - npc:sayWithDelay(npcUniqueId, msgs[messagesTable], TALKTYPE_PRIVATE_NP, ((messagesTable - 1) * self.talkDelay + self.talkDelayTimeForOutgoingMessages * 1000), - self.eventDelayedSay[playerId][messagesTable], playerUniqueId) - ret[#ret+1] = self.eventDelayedSay[playerId][messagesTable] + npc:sayWithDelay(npcUniqueId, msgs[messagesTable], TALKTYPE_PRIVATE_NP, ((messagesTable - 1) * self.talkDelay + self.talkDelayTimeForOutgoingMessages * 1000), self.eventDelayedSay[playerId][messagesTable], playerUniqueId) + ret[#ret + 1] = self.eventDelayedSay[playerId][messagesTable] end - return (ret) + return ret end -- Makes the npc represented by this instance of NpcHandler say something. -- This implements the currently set type of talkdelay. -- The "delay" variable sets the delay for the interval between messages function NpcHandler:say(message, npc, player, delay, textType) - if not player then return end + if not player then + return + end local playerId = player:getId() if type(message) == "table" then return self:doNPCTalkALot(message, delay, npc, player) diff --git a/data/scripts/eventcallbacks/creature/on_hear.lua b/data/scripts/eventcallbacks/creature/on_hear.lua index 28c9d0e4492..871f6456c9a 100644 --- a/data/scripts/eventcallbacks/creature/on_hear.lua +++ b/data/scripts/eventcallbacks/creature/on_hear.lua @@ -1,6 +1,5 @@ local callback = EventCallback() -function callback.creatureOnHear(creature, speaker, words, type) -end +function callback.creatureOnHear(creature, speaker, words, type) end callback:register() diff --git a/data/scripts/eventcallbacks/monster/on_spawn.lua b/data/scripts/eventcallbacks/monster/on_spawn.lua index 21f69aab5aa..e0480d8e325 100644 --- a/data/scripts/eventcallbacks/monster/on_spawn.lua +++ b/data/scripts/eventcallbacks/monster/on_spawn.lua @@ -1,7 +1,5 @@ local function handleCobra(monster) - if monster:getName():lower() == "cobra scout" or - monster:getName():lower() == "cobra vizier" or - monster:getName():lower() == "cobra assassin" then + if monster:getName():lower() == "cobra scout" or monster:getName():lower() == "cobra vizier" or monster:getName():lower() == "cobra assassin" then if getGlobalStorageValue(GlobalStorage.CobraBastionFlask) >= os.time() then monster:setHealth(monster:getMaxHealth() * 0.75) end @@ -9,15 +7,14 @@ local function handleCobra(monster) end local function handleIronServantReplica(monster) - if monster:getName():lower() ~= 'iron servant replica' then + if monster:getName():lower() ~= "iron servant replica" then return end local chance = math.random(100) - if Game.getStorageValue(GlobalStorage.ForgottenKnowledge.MechanismDiamond) >= 1 - and Game.getStorageValue(GlobalStorage.ForgottenKnowledge.MechanismGolden) >= 1 then + if Game.getStorageValue(GlobalStorage.ForgottenKnowledge.MechanismDiamond) >= 1 and Game.getStorageValue(GlobalStorage.ForgottenKnowledge.MechanismGolden) >= 1 then if chance > 30 then - local monsterType = math.random(2) == 1 and 'diamond servant replica' or 'golden servant replica' + local monsterType = math.random(2) == 1 and "diamond servant replica" or "golden servant replica" Game.createMonster(monsterType, monster:getPosition(), false, true) monster:remove() end @@ -25,13 +22,13 @@ local function handleIronServantReplica(monster) end if Game.getStorageValue(GlobalStorage.ForgottenKnowledge.MechanismDiamond) >= 1 and chance > 30 then - Game.createMonster('diamond servant replica', monster:getPosition(), false, true) + Game.createMonster("diamond servant replica", monster:getPosition(), false, true) monster:remove() return end if Game.getStorageValue(GlobalStorage.ForgottenKnowledge.MechanismGolden) >= 1 and chance > 30 then - Game.createMonster('golden servant replica', monster:getPosition(), false, true) + Game.createMonster("golden servant replica", monster:getPosition(), false, true) monster:remove() end end @@ -39,7 +36,9 @@ end local callback = EventCallback() function callback.monsterOnSpawn(monster, position) - if not monster then return end + if not monster then + return + end HazardMonster.onSpawn(monster, position) if monster:getType():isRewardBoss() then diff --git a/data/scripts/eventcallbacks/monster/ondroploot__base.lua b/data/scripts/eventcallbacks/monster/ondroploot__base.lua index ea9ec29e3cf..5cdf62b5893 100644 --- a/data/scripts/eventcallbacks/monster/ondroploot__base.lua +++ b/data/scripts/eventcallbacks/monster/ondroploot__base.lua @@ -10,12 +10,14 @@ function callback.monsterOnDropLoot(monster, corpse) msgSuffix = config.msgSuffix end local mType = monster:getType() - if not mType then return end + if not mType then + return + end local charm = player and player:getCharmMonsterType(CHARM_GUT) local gut = charm and charm:raceId() == mType:raceId() - local lootTable = mType:generateLootRoll({ factor = factor, gut = gut, }, {}) + local lootTable = mType:generateLootRoll({ factor = factor, gut = gut }, {}) corpse:addLoot(lootTable) for _, item in ipairs(lootTable) do if item.gut then diff --git a/data/scripts/eventcallbacks/monster/ondroploot_boosted.lua b/data/scripts/eventcallbacks/monster/ondroploot_boosted.lua index 46835912f43..613d1943f7b 100644 --- a/data/scripts/eventcallbacks/monster/ondroploot_boosted.lua +++ b/data/scripts/eventcallbacks/monster/ondroploot_boosted.lua @@ -1,17 +1,27 @@ local callback = EventCallback() function callback.monsterOnDropLoot(monster, corpse) - if configManager.getNumber(configKeys.RATE_LOOT) == 0 then return end + if configManager.getNumber(configKeys.RATE_LOOT) == 0 then + return + end local mType = monster:getType() - if mType:isRewardBoss() then return end - if monster:getName():lower() ~= Game.getBoostedCreature():lower() then return end + if mType:isRewardBoss() then + return + end + if monster:getName():lower() ~= Game.getBoostedCreature():lower() then + return + end local player = Player(corpse:getCorpseOwner()) - if not player then return end - if player:getStamina() <= 840 then return end + if not player then + return + end + if player:getStamina() <= 840 then + return + end local factor = 1.0 local msgSuffix = " (boosted loot)" - corpse:addLoot(mType:generateLootRoll({ factor = factor, gut = false, }, {})) + corpse:addLoot(mType:generateLootRoll({ factor = factor, gut = false }, {})) local existingSuffix = corpse:getAttribute(ITEM_ATTRIBUTE_LOOTMESSAGE_SUFFIX) or "" corpse:setAttribute(ITEM_ATTRIBUTE_LOOTMESSAGE_SUFFIX, existingSuffix .. msgSuffix) diff --git a/data/scripts/eventcallbacks/monster/ondroploot_hazard.lua b/data/scripts/eventcallbacks/monster/ondroploot_hazard.lua index 5f720b1aa75..e628c475002 100644 --- a/data/scripts/eventcallbacks/monster/ondroploot_hazard.lua +++ b/data/scripts/eventcallbacks/monster/ondroploot_hazard.lua @@ -1,13 +1,23 @@ local callback = EventCallback() function callback.monsterOnDropLoot(monster, corpse) - if configManager.getNumber(configKeys.RATE_LOOT) == 0 then return end + if configManager.getNumber(configKeys.RATE_LOOT) == 0 then + return + end local mType = monster:getType() - if mType:isRewardBoss() then return end - if not monster:hazard() then return end + if mType:isRewardBoss() then + return + end + if not monster:hazard() then + return + end local player = Player(corpse:getCorpseOwner()) - if not player then return end - if player:getStamina() <= 840 then return end + if not player then + return + end + if player:getStamina() <= 840 then + return + end local factor = 1.0 local msgSuffix = "" @@ -27,7 +37,7 @@ function callback.monsterOnDropLoot(monster, corpse) local lootTable = {} for _ = 1, rolls do - lootTable = mType:generateLootRoll({ factor = factor, gut = false, }, lootTable) + lootTable = mType:generateLootRoll({ factor = factor, gut = false }, lootTable) end corpse:addLoot(lootTable) diff --git a/data/scripts/eventcallbacks/monster/ondroploot_prey.lua b/data/scripts/eventcallbacks/monster/ondroploot_prey.lua index 0deb806202c..f6e8551880e 100644 --- a/data/scripts/eventcallbacks/monster/ondroploot_prey.lua +++ b/data/scripts/eventcallbacks/monster/ondroploot_prey.lua @@ -1,12 +1,20 @@ local callback = EventCallback() function callback.monsterOnDropLoot(monster, corpse) - if configManager.getNumber(configKeys.RATE_LOOT) == 0 then return end + if configManager.getNumber(configKeys.RATE_LOOT) == 0 then + return + end local mType = monster:getType() - if mType:isRewardBoss() then return end + if mType:isRewardBoss() then + return + end local player = Player(corpse:getCorpseOwner()) - if not player then return end - if player:getStamina() <= 840 then return end + if not player then + return + end + if player:getStamina() <= 840 then + return + end local factor = 1.0 local msgSuffix = "" @@ -40,7 +48,7 @@ function callback.monsterOnDropLoot(monster, corpse) msgSuffix = msgSuffix .. " (active prey bonus)" end - corpse:addLoot(mType:generateLootRoll({ factor = factor, gut = false, }, {})) + corpse:addLoot(mType:generateLootRoll({ factor = factor, gut = false }, {})) local existingSuffix = corpse:getAttribute(ITEM_ATTRIBUTE_LOOTMESSAGE_SUFFIX) or "" corpse:setAttribute(ITEM_ATTRIBUTE_LOOTMESSAGE_SUFFIX, existingSuffix .. msgSuffix) end diff --git a/data/scripts/eventcallbacks/monster/ondroploot_wealth_duplex.lua b/data/scripts/eventcallbacks/monster/ondroploot_wealth_duplex.lua index fd60371e680..add4273dad7 100644 --- a/data/scripts/eventcallbacks/monster/ondroploot_wealth_duplex.lua +++ b/data/scripts/eventcallbacks/monster/ondroploot_wealth_duplex.lua @@ -1,12 +1,20 @@ local callback = EventCallback() function callback.monsterOnDropLoot(monster, corpse) - if configManager.getNumber(configKeys.RATE_LOOT) == 0 then return end + if configManager.getNumber(configKeys.RATE_LOOT) == 0 then + return + end local mType = monster:getType() - if mType:isRewardBoss() then return end + if mType:isRewardBoss() then + return + end local player = Player(corpse:getCorpseOwner()) - if not player then return end - if player:getStamina() <= 840 then return end + if not player then + return + end + if player:getStamina() <= 840 then + return + end local factor = 1.0 local msgSuffix = "" @@ -45,7 +53,9 @@ function callback.monsterOnDropLoot(monster, corpse) rolls = math.floor(rolls) end - if rolls == 0 then return end + if rolls == 0 then + return + end if configManager.getBoolean(PARTY_SHARE_LOOT_BOOSTS) and rolls > 1 then msgSuffix = msgSuffix .. " (active wealth duplex, " .. rolls .. " extra rolls)" @@ -55,7 +65,7 @@ function callback.monsterOnDropLoot(monster, corpse) local lootTable = {} for _ = 1, rolls do - lootTable = mType:generateLootRoll({ factor = factor, gut = false, }, lootTable) + lootTable = mType:generateLootRoll({ factor = factor, gut = false }, lootTable) end corpse:addLoot(lootTable) diff --git a/data/scripts/eventcallbacks/monster/postdroploot_analyzer.lua b/data/scripts/eventcallbacks/monster/postdroploot_analyzer.lua index 456d45e012f..371bdd01b65 100644 --- a/data/scripts/eventcallbacks/monster/postdroploot_analyzer.lua +++ b/data/scripts/eventcallbacks/monster/postdroploot_analyzer.lua @@ -2,10 +2,16 @@ local callback = EventCallback() function callback.monsterPostDropLoot(monster, corpse) local player = Player(corpse:getCorpseOwner()) - if not player then return end - if player:getStamina() <= 840 then return end + if not player then + return + end + if player:getStamina() <= 840 then + return + end local mType = monster:getType() - if not mType then return end + if not mType then + return + end local participants = { player } local party = player:getParty() diff --git a/data/scripts/eventcallbacks/player/on_look.lua b/data/scripts/eventcallbacks/player/on_look.lua index b74db9fbef4..359cc8a8bee 100644 --- a/data/scripts/eventcallbacks/player/on_look.lua +++ b/data/scripts/eventcallbacks/player/on_look.lua @@ -7,10 +7,7 @@ function callback.playerOnLook(player, thing, position, distance) description = description .. "a honeyflower patch." elseif thing.actionid == 5641 then description = description .. "a banana palm." - elseif thing.itemid >= ITEM_HEALTH_CASK_START and thing.itemid <= ITEM_HEALTH_CASK_END - or thing.itemid >= ITEM_MANA_CASK_START and thing.itemid <= ITEM_MANA_CASK_END - or thing.itemid >= ITEM_SPIRIT_CASK_START and thing.itemid <= ITEM_SPIRIT_CASK_END - or thing.itemid >= ITEM_KEG_START and thing.itemid <= ITEM_KEG_END then + elseif thing.itemid >= ITEM_HEALTH_CASK_START and thing.itemid <= ITEM_HEALTH_CASK_END or thing.itemid >= ITEM_MANA_CASK_START and thing.itemid <= ITEM_MANA_CASK_END or thing.itemid >= ITEM_SPIRIT_CASK_START and thing.itemid <= ITEM_SPIRIT_CASK_END or thing.itemid >= ITEM_KEG_START and thing.itemid <= ITEM_KEG_END then description = description .. thing:getDescription(distance) local charges = thing:getCharges() if charges then @@ -23,11 +20,8 @@ function callback.playerOnLook(player, thing, position, distance) description = description .. thing:getDescription(distance) if thing:isMonster() then local master = thing:getMaster() - if master and table.contains({ 'sorcerer familiar', 'knight familiar', 'druid familiar', 'paladin familiar' }, - thing:getName():lower()) then - description = string.format('%s (Master: %s). \z It will disappear in %s', - description, master:getName(), getTimeInWords(master:getStorageValue(Global.Storage.FamiliarSummon) - os.time()) - ) + if master and table.contains({ "sorcerer familiar", "knight familiar", "druid familiar", "paladin familiar" }, thing:getName():lower()) then + description = string.format("%s (Master: %s). \z It will disappear in %s", description, master:getName(), getTimeInWords(master:getStorageValue(Global.Storage.FamiliarSummon) - os.time())) end end end @@ -68,10 +62,7 @@ function callback.playerOnLook(player, thing, position, distance) description = string.format(str, description, thing:getHealth(), thing:getMaxHealth()) .. "." end - description = string.format( - "%s\nPosition: %d, %d, %d", - description, position.x, position.y, position.z - ) + description = string.format("%s\nPosition: %d, %d, %d", description, position.x, position.y, position.z) if thing:isCreature() then local speedBase = thing:getBaseSpeed() diff --git a/data/scripts/talkactions/gm/ban.lua b/data/scripts/talkactions/gm/ban.lua index 2ad862b0830..8a45a6c7d1b 100644 --- a/data/scripts/talkactions/gm/ban.lua +++ b/data/scripts/talkactions/gm/ban.lua @@ -12,9 +12,9 @@ function ban.onSay(player, words, param) end local name = param - local reason = '' + local reason = "" - local separatorPos = param:find(',') + local separatorPos = param:find(",") if separatorPos then name = param:sub(0, separatorPos - 1) reason = string.trim(param:sub(separatorPos + 1)) @@ -32,15 +32,13 @@ function ban.onSay(player, words, param) end local timeNow = os.time() - db.query("INSERT INTO `account_bans` (`account_id`, `reason`, `banned_at`, `expires_at`, `banned_by`) VALUES (" .. - accountId .. ", " .. db.escapeString(reason) .. ", " .. timeNow .. ", " .. timeNow + (banDays * 86400) .. ", " .. player:getGuid() .. ")") + db.query("INSERT INTO `account_bans` (`account_id`, `reason`, `banned_at`, `expires_at`, `banned_by`) VALUES (" .. accountId .. ", " .. db.escapeString(reason) .. ", " .. timeNow .. ", " .. timeNow + (banDays * 86400) .. ", " .. player:getGuid() .. ")") local target = Player(name) if target then local text = target:getName() .. " has been banned" player:sendTextMessage(MESSAGE_ADMINISTRADOR, text) - Webhook.sendMessage("Player Banned", text .. " reason: " .. reason .. ". (by: " .. player:getName() .. ")", - WEBHOOK_COLOR_WARNING, announcementChannels["serverAnnouncements"]) + Webhook.sendMessage("Player Banned", text .. " reason: " .. reason .. ". (by: " .. player:getName() .. ")", WEBHOOK_COLOR_WARNING, announcementChannels["serverAnnouncements"]) target:remove() else player:sendTextMessage(MESSAGE_ADMINISTRADOR, name .. " has been banned.") diff --git a/data/scripts/talkactions/gm/count_monsters.lua b/data/scripts/talkactions/gm/count_monsters.lua index 1e0d29607ff..1cd9744b908 100644 --- a/data/scripts/talkactions/gm/count_monsters.lua +++ b/data/scripts/talkactions/gm/count_monsters.lua @@ -1,5 +1,5 @@ -local xml_monster_dir = DATA_DIRECTORY .. '/world/otservbr-monster.xml' -local new_file_name = 'monster_count.txt' +local xml_monster_dir = DATA_DIRECTORY .. "/world/otservbr-monster.xml" +local new_file_name = "monster_count.txt" local count_monsters = TalkAction("/countmonsters") @@ -24,10 +24,10 @@ function count_monsters.onSay(player, words, param) end end - writing_file:write('--- Total of monsters on server ---\n') + writing_file:write("--- Total of monsters on server ---\n") for monster, count in pairsByKeys(monsters) do - writing_file:write(monster .. ' - ' .. count .. '\n') + writing_file:write(monster .. " - " .. count .. "\n") end writing_file:close() diff --git a/data/scripts/talkactions/gm/getlook.lua b/data/scripts/talkactions/gm/getlook.lua index 3fad296ca08..6b8e774cd4f 100644 --- a/data/scripts/talkactions/gm/getlook.lua +++ b/data/scripts/talkactions/gm/getlook.lua @@ -16,7 +16,7 @@ function getlook.onSay(player, words, param) end local lookt = creature:getOutfit() - player:sendTextMessage(MESSAGE_HOTKEY_PRESSED, "") + player:sendTextMessage(MESSAGE_HOTKEY_PRESSED, '') return true end diff --git a/data/scripts/talkactions/gm/info.lua b/data/scripts/talkactions/gm/info.lua index 7d118ae4449..f6f3c5dd9a7 100644 --- a/data/scripts/talkactions/gm/info.lua +++ b/data/scripts/talkactions/gm/info.lua @@ -17,29 +17,29 @@ function info.onSay(player, words, param) local targetIp = target:getIp() - local text = 'Player Info: \n\n' - text = text .. 'Name: ' .. target:getName() .. '\n' - text = text .. 'Access: ' .. (target:getGroup():getAccess() and '1' or '0') .. '\n' - text = text .. 'Speed: ' .. target:getSpeed() .. '\n' - text = text .. 'Position: ' .. string.format("(%0.5d / %0.5d / %0.3d)", target:getPosition().x, target:getPosition().y, target:getPosition().z) .. '\n' - text = text .. 'IP: ' .. Game.convertIpToString(targetIp) .. '\n\n' - - text = text .. 'Skills: \n\n' - text = text .. '* Level: ' .. target:getLevel() .. '\n' - text = text .. '* Skill Axe: ' .. target:getSkillLevel(SKILL_AXE) .. '\n' - text = text .. '* Skill Club: ' .. target:getSkillLevel(SKILL_CLUB) .. '\n' - text = text .. '* Skill Distance: ' .. target:getSkillLevel(SKILL_DISTANCE) .. '\n' - text = text .. '* Skill Fist: ' .. target:getSkillLevel(SKILL_FIST) .. '\n' - text = text .. '* Skill Magic: ' .. target:getMagicLevel() .. '\n' - text = text .. '* Skill Shield: ' .. target:getSkillLevel(SKILL_SHIELD) .. '\n' - text = text .. '* Skill Sword: ' .. target:getSkillLevel(SKILL_SWORD) .. '\n' + local text = "Player Info: \n\n" + text = text .. "Name: " .. target:getName() .. "\n" + text = text .. "Access: " .. (target:getGroup():getAccess() and "1" or "0") .. "\n" + text = text .. "Speed: " .. target:getSpeed() .. "\n" + text = text .. "Position: " .. string.format("(%0.5d / %0.5d / %0.3d)", target:getPosition().x, target:getPosition().y, target:getPosition().z) .. "\n" + text = text .. "IP: " .. Game.convertIpToString(targetIp) .. "\n\n" + + text = text .. "Skills: \n\n" + text = text .. "* Level: " .. target:getLevel() .. "\n" + text = text .. "* Skill Axe: " .. target:getSkillLevel(SKILL_AXE) .. "\n" + text = text .. "* Skill Club: " .. target:getSkillLevel(SKILL_CLUB) .. "\n" + text = text .. "* Skill Distance: " .. target:getSkillLevel(SKILL_DISTANCE) .. "\n" + text = text .. "* Skill Fist: " .. target:getSkillLevel(SKILL_FIST) .. "\n" + text = text .. "* Skill Magic: " .. target:getMagicLevel() .. "\n" + text = text .. "* Skill Shield: " .. target:getSkillLevel(SKILL_SHIELD) .. "\n" + text = text .. "* Skill Sword: " .. target:getSkillLevel(SKILL_SWORD) .. "\n" player:popupFYI(text) local players = {} for _, targetPlayer in ipairs(Game.getPlayers()) do if targetPlayer:getIp() == targetIp and targetPlayer ~= target then - players[#players+1] = targetPlayer:getName() .. " [" .. targetPlayer:getLevel() .. "]" + players[#players + 1] = targetPlayer:getName() .. " [" .. targetPlayer:getLevel() .. "]" end end diff --git a/data/scripts/talkactions/gm/kick.lua b/data/scripts/talkactions/gm/kick.lua index 732f24a1670..fe7581b40e3 100644 --- a/data/scripts/talkactions/gm/kick.lua +++ b/data/scripts/talkactions/gm/kick.lua @@ -15,8 +15,7 @@ function kick.onSay(player, words, param) return true end - Webhook.sendMessage("Player Kicked", target:getName() .. " has been kicked by " .. player:getName(), - WEBHOOK_COLOR_WARNING, announcementChannels["serverAnnouncements"]) + Webhook.sendMessage("Player Kicked", target:getName() .. " has been kicked by " .. player:getName(), WEBHOOK_COLOR_WARNING, announcementChannels["serverAnnouncements"]) target:remove() return true end diff --git a/data/scripts/talkactions/gm/looktype.lua b/data/scripts/talkactions/gm/looktype.lua index 9fc86010f4c..28662a54f93 100644 --- a/data/scripts/talkactions/gm/looktype.lua +++ b/data/scripts/talkactions/gm/looktype.lua @@ -1,31 +1,365 @@ -- keep it ordered local invalidTypes = { - 1, 135, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 411, 415, 424, 439, 440, 468, 469, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 485, 501, 518, 519, 520, 524, 525, 536, 543, - 549, 576, 581, 582, 597, 616, 623, 625, 638, 639, 640, 641, 642, 643, 645, - 646, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 700, 701, - 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 713, 715, 718, 719, 722, - 723, 737, 741, 742, 743, 744, 748, 751, 752, 753, 754, 755, 756, 757, 758, - 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, - 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, - 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, - 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, - 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, - 839, 840, 841, 847, 861, 864, 865, 866, 867, 871, 872, 880, 891, 892, 893, - 894, 895, 896, 897, 898, 911, 912, 917, 930, 941, 942, 946, 953, 954, 959, - 983, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, - 1008, 1009, 1010, 1012, 1014, 1015, 1022, 1028, 1074, 1075, 1080, 1081, 1082, - 1083, 1084, 1085, 1086, 1087, 1089, 1090, 1096, 1097, 1098, 1099, 1100, 1141, - 1145, 1153, 1154, 1155, 1156, 1160, 1170, 1171, 1172, 1176, 1177, 1178, 1182, - 1192, 1193, 1194, 1198, 1215, 1216, 1225, 1226, 1227, 1228, 1235, 1236, 1237, - 1238, 1239, 1240, 1241, 1242, 1250, 1254, 1263, 1267, 1273, 1274, 1287, 1302, - 1318, 1319, 1320, 1327, 1328, 1329, 1330, 1340, 1343, 1345, 1347, 1348, 1349, - 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, - 1368, 1369, 1370, 1374, 1375, 1376, 1388, 1392, 1395, 1400, 1402, 1404, 1409, - 1410, 1411, 1420, 1421, 1427, 1429, 1432, 1433, 1434, 1435, 1438, 1442, 1443, - 1451, 1452, 1458, 1462 + 1, + 135, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 411, + 415, + 424, + 439, + 440, + 468, + 469, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 501, + 518, + 519, + 520, + 524, + 525, + 536, + 543, + 549, + 576, + 581, + 582, + 597, + 616, + 623, + 625, + 638, + 639, + 640, + 641, + 642, + 643, + 645, + 646, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 713, + 715, + 718, + 719, + 722, + 723, + 737, + 741, + 742, + 743, + 744, + 748, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 847, + 861, + 864, + 865, + 866, + 867, + 871, + 872, + 880, + 891, + 892, + 893, + 894, + 895, + 896, + 897, + 898, + 911, + 912, + 917, + 930, + 941, + 942, + 946, + 953, + 954, + 959, + 983, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1005, + 1006, + 1007, + 1008, + 1009, + 1010, + 1012, + 1014, + 1015, + 1022, + 1028, + 1074, + 1075, + 1080, + 1081, + 1082, + 1083, + 1084, + 1085, + 1086, + 1087, + 1089, + 1090, + 1096, + 1097, + 1098, + 1099, + 1100, + 1141, + 1145, + 1153, + 1154, + 1155, + 1156, + 1160, + 1170, + 1171, + 1172, + 1176, + 1177, + 1178, + 1182, + 1192, + 1193, + 1194, + 1198, + 1215, + 1216, + 1225, + 1226, + 1227, + 1228, + 1235, + 1236, + 1237, + 1238, + 1239, + 1240, + 1241, + 1242, + 1250, + 1254, + 1263, + 1267, + 1273, + 1274, + 1287, + 1302, + 1318, + 1319, + 1320, + 1327, + 1328, + 1329, + 1330, + 1340, + 1343, + 1345, + 1347, + 1348, + 1349, + 1350, + 1351, + 1352, + 1353, + 1354, + 1355, + 1356, + 1357, + 1358, + 1359, + 1360, + 1361, + 1362, + 1368, + 1369, + 1370, + 1374, + 1375, + 1376, + 1388, + 1392, + 1395, + 1400, + 1402, + 1404, + 1409, + 1410, + 1411, + 1420, + 1421, + 1427, + 1429, + 1432, + 1433, + 1434, + 1435, + 1438, + 1442, + 1443, + 1451, + 1452, + 1458, + 1462, } local looktype = TalkAction("/looktype") diff --git a/data/scripts/talkactions/gm/magic_effect.lua b/data/scripts/talkactions/gm/magic_effect.lua index 79f64771ad8..6bd9e831159 100644 --- a/data/scripts/talkactions/gm/magic_effect.lua +++ b/data/scripts/talkactions/gm/magic_effect.lua @@ -10,7 +10,7 @@ function magicEffect.onSay(player, words, param) end local effect = tonumber(param) - if (effect ~= nil and effect > 0) then + if effect ~= nil and effect > 0 then player:getPosition():sendMagicEffect(effect) end diff --git a/data/scripts/talkactions/gm/mc_check.lua b/data/scripts/talkactions/gm/mc_check.lua index 49c8272c842..c93661053e4 100644 --- a/data/scripts/talkactions/gm/mc_check.lua +++ b/data/scripts/talkactions/gm/mc_check.lua @@ -16,7 +16,7 @@ function mcCheck.onSay(player, words, param) ipList[ip] = {} list = ipList[ip] end - list[#list+1] = tmpPlayer + list[#list + 1] = tmpPlayer end end diff --git a/data/scripts/talkactions/gm/spy.lua b/data/scripts/talkactions/gm/spy.lua index 9a47994e451..4466bc70d6d 100644 --- a/data/scripts/talkactions/gm/spy.lua +++ b/data/scripts/talkactions/gm/spy.lua @@ -33,7 +33,7 @@ function spy.onSay(player, words, param) -- create log logCommand(player, words, param) - if (param == "") then + if param == "" then player:sendCancelMessage("Write the name of the character to be spyed.") return true end diff --git a/data/scripts/talkactions/gm/teleport_set_destination.lua b/data/scripts/talkactions/gm/teleport_set_destination.lua index 5fa5b18857d..cc1520db08e 100644 --- a/data/scripts/talkactions/gm/teleport_set_destination.lua +++ b/data/scripts/talkactions/gm/teleport_set_destination.lua @@ -18,7 +18,7 @@ function teleportSetDestination.onSay(player, words, param) if teleport then local split = param:split(",") -- Split always return a table, even if it's empty if #split ~= 3 then - player:sendCancelMessage("You need to declare the X, Y of Z of destination. Please use \"/teleport X, Y, Z\".") + player:sendCancelMessage('You need to declare the X, Y of Z of destination. Please use "/teleport X, Y, Z".') return true else local destPosition = Position(split[1], split[2], split[3]) diff --git a/data/scripts/talkactions/gm/teleport_to_player.lua b/data/scripts/talkactions/gm/teleport_to_player.lua index 5bd68312f43..73eab7b5bec 100644 --- a/data/scripts/talkactions/gm/teleport_to_player.lua +++ b/data/scripts/talkactions/gm/teleport_to_player.lua @@ -25,7 +25,7 @@ function teleportToCreature.onSay(player, words, param) table.insert(playerList, targetPlayer) end end - :: continue :: + ::continue:: end if #playerList == 0 then @@ -33,10 +33,10 @@ function teleportToCreature.onSay(player, words, param) return false end - local window = ModalWindow { + local window = ModalWindow({ title = "Teleport to Player", - message = 'select player to teleport' - } + message = "select player to teleport", + }) for _, targetPlayer in pairs(playerList) do if targetPlayer then window:addChoice(targetPlayer:getName(), function(player, button, choice) diff --git a/data/scripts/talkactions/gm/unban.lua b/data/scripts/talkactions/gm/unban.lua index d6dbca7aa40..d791d85b4e7 100644 --- a/data/scripts/talkactions/gm/unban.lua +++ b/data/scripts/talkactions/gm/unban.lua @@ -19,8 +19,7 @@ function unban.onSay(player, words, param) Result.free(resultId) local text = param .. " has been unbanned." player:sendTextMessage(MESSAGE_ADMINISTRADOR, text) - Webhook.sendMessage("Player Unbanned", text .. " (by: " .. player:getName() .. ")", - WEBHOOK_COLOR_WARNING, announcementChannels["serverAnnouncements"]) + Webhook.sendMessage("Player Unbanned", text .. " (by: " .. player:getName() .. ")", WEBHOOK_COLOR_WARNING, announcementChannels["serverAnnouncements"]) return true end diff --git a/data/scripts/talkactions/god/add_addon.lua b/data/scripts/talkactions/god/add_addon.lua index 57f8dfb9a8d..c9f7003ee77 100644 --- a/data/scripts/talkactions/god/add_addon.lua +++ b/data/scripts/talkactions/god/add_addon.lua @@ -8,10 +8,10 @@ function addons.onSay(player, words, param) local split = param:split(",") local name = split[1] - if param == '' then + if param == "" then target = player:getTarget() if not target then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Gives players the ability to wear addon for a specific outfit. Usage: /addaddon , ') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Gives players the ability to wear addon for a specific outfit. Usage: /addaddon , ") return true end else @@ -19,24 +19,24 @@ function addons.onSay(player, words, param) end if not target then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Player ' .. name .. ' is currently not online.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Player " .. name .. " is currently not online.") return false end local looktype = tonumber(split[2]) if not looktype then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Invalid looktype.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid looktype.") return false end local addons = tonumber(split[3]) if not addons or addons < 0 or addons > 3 then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Invalid addon.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid addon.") return false end target:addOutfitAddon(looktype, addons) - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Addon for looktype ' .. looktype .. 'a for ' .. target:getName() .. ' set to ' .. addons .. '.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Addon for looktype " .. looktype .. "a for " .. target:getName() .. " set to " .. addons .. ".") return false end diff --git a/data/scripts/talkactions/god/add_addons.lua b/data/scripts/talkactions/god/add_addons.lua index 50f3637fa9e..0fdfc3768ea 100644 --- a/data/scripts/talkactions/god/add_addons.lua +++ b/data/scripts/talkactions/god/add_addons.lua @@ -4,21 +4,220 @@ local addons = TalkAction("/addaddons") local looktypes = { -- Female Outfits - 136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, - 324, 329, 336, 366, 431, 433, 464, 466, 471, 513, 514, 542, 575, 578, 618, 620, 632, 635, 636, 664, - 666, 683, 694, 696, 698, 724, 732, 745, 749, 759, 845, 852, 874, 885, 900, 909, 929, 956, 958, 963, - 965, 967, 969, 971, 973, 975, 1020, 1024, 1043, 1050, 1057, 1070, 1095, 1103, 1128, 1147, 1162, 1174, 1187, - 1203, 1205, 1207, 1211, 1244, 1246, 1252, 1271, 1280, 1283, 1289, 1293, 1323, 1332, 1339, 1372, 1383, 1385, - 1387, 1416, 1437, 1445, 1450, 1456, 1461, 1490, 1501, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 147, + 148, + 149, + 150, + 155, + 156, + 157, + 158, + 252, + 269, + 270, + 279, + 288, + 324, + 329, + 336, + 366, + 431, + 433, + 464, + 466, + 471, + 513, + 514, + 542, + 575, + 578, + 618, + 620, + 632, + 635, + 636, + 664, + 666, + 683, + 694, + 696, + 698, + 724, + 732, + 745, + 749, + 759, + 845, + 852, + 874, + 885, + 900, + 909, + 929, + 956, + 958, + 963, + 965, + 967, + 969, + 971, + 973, + 975, + 1020, + 1024, + 1043, + 1050, + 1057, + 1070, + 1095, + 1103, + 1128, + 1147, + 1162, + 1174, + 1187, + 1203, + 1205, + 1207, + 1211, + 1244, + 1246, + 1252, + 1271, + 1280, + 1283, + 1289, + 1293, + 1323, + 1332, + 1339, + 1372, + 1383, + 1385, + 1387, + 1416, + 1437, + 1445, + 1450, + 1456, + 1461, + 1490, + 1501, -- Male Outfits - 128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, - 325, 328, 335, 367, 430, 432, 463, 465, 472, 512, 516, 541, 574, 577, 610, 619, 633, 634, 637, 665, - 667, 684, 695, 697, 699, 725, 733, 746, 750, 760, 846, 853, 873, 884, 899, 908, 931, 955, 957, 962, - 964, 966, 968, 970, 972, 974, 1021, 1023, 1042, 1051, 1056, 1069, 1094, 1102, 1127, 1146, 1161, 1173, 1186, - 1202, 1204, 1206, 1210, 1243, 1245, 1251, 1270, 1279, 1282, 1288, 1292, 1322, 1331, 1338, 1371, 1382, 1384, - 1386, 1415, 1436, 1444, 1449, 1457, 1460, 1489, 1500 - + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 143, + 144, + 145, + 146, + 151, + 152, + 153, + 154, + 251, + 268, + 273, + 278, + 289, + 325, + 328, + 335, + 367, + 430, + 432, + 463, + 465, + 472, + 512, + 516, + 541, + 574, + 577, + 610, + 619, + 633, + 634, + 637, + 665, + 667, + 684, + 695, + 697, + 699, + 725, + 733, + 746, + 750, + 760, + 846, + 853, + 873, + 884, + 899, + 908, + 931, + 955, + 957, + 962, + 964, + 966, + 968, + 970, + 972, + 974, + 1021, + 1023, + 1042, + 1051, + 1056, + 1069, + 1094, + 1102, + 1127, + 1146, + 1161, + 1173, + 1186, + 1202, + 1204, + 1206, + 1210, + 1243, + 1245, + 1251, + 1270, + 1279, + 1282, + 1288, + 1292, + 1322, + 1331, + 1338, + 1371, + 1382, + 1384, + 1386, + 1415, + 1436, + 1444, + 1449, + 1457, + 1460, + 1489, + 1500, } function addons.onSay(player, words, param) @@ -26,10 +225,10 @@ function addons.onSay(player, words, param) logCommand(player, words, param) local target - if param == '' then + if param == "" then target = player:getTarget() if not target then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Gives players the ability to wear all addons. Usage: /addaddons ') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Gives players the ability to wear all addons. Usage: /addaddons ") return true end else @@ -37,12 +236,12 @@ function addons.onSay(player, words, param) end if not target then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Player ' .. param .. ' is currently not online.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Player " .. param .. " is currently not online.") return true end if player:getAccountType() < ACCOUNT_TYPE_GOD then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Cannot perform action.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Cannot perform action.") return true end @@ -50,8 +249,8 @@ function addons.onSay(player, words, param) target:addOutfitAddon(looktypes[i], 3) end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'All addons unlocked for ' .. target:getName() .. '.') - target:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'All of your addons have been unlocked!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "All addons unlocked for " .. target:getName() .. ".") + target:sendTextMessage(MESSAGE_EVENT_ADVANCE, "All of your addons have been unlocked!") return true end diff --git a/data/scripts/talkactions/god/add_mount.lua b/data/scripts/talkactions/god/add_mount.lua index a1dfb66dd65..813f46f38a9 100644 --- a/data/scripts/talkactions/god/add_mount.lua +++ b/data/scripts/talkactions/god/add_mount.lua @@ -25,8 +25,7 @@ function addOutfit.onSay(player, words, param) target:sendTextMessage(MESSAGE_ADMINISTRADOR, "" .. player:getName() .. " has been added a new mount for you.") player:sendTextMessage(MESSAGE_ADMINISTRADOR, "You have sucessfull added mount " .. mount .. " to the player " .. target:getName() .. ".") if printConsole then - logger.info("[addOutfit.onSay] - Player: {} has been added mount: {} to the player: {}", - player:getName(), lookType, target:getName()) + logger.info("[addOutfit.onSay] - Player: {} has been added mount: {} to the player: {}", player:getName(), lookType, target:getName()) end return true end diff --git a/data/scripts/talkactions/god/add_mounts.lua b/data/scripts/talkactions/god/add_mounts.lua index 22b73824108..ff48fac905d 100644 --- a/data/scripts/talkactions/god/add_mounts.lua +++ b/data/scripts/talkactions/god/add_mounts.lua @@ -3,10 +3,10 @@ local mounts = TalkAction("/addmounts") function mounts.onSay(player, words, param) local target - if param == '' then + if param == "" then target = player:getTarget() if not target then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Unlocks all mounts for certain player. Usage: /mounts ') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Unlocks all mounts for certain player. Usage: /mounts ") return true end else @@ -14,7 +14,7 @@ function mounts.onSay(player, words, param) end if not target then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Player ' .. param .. ' is not currently online.') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Player " .. param .. " is not currently online.") return true end @@ -22,8 +22,8 @@ function mounts.onSay(player, words, param) target:addMount(i) end - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'All mounts unlocked for: ' .. target:getName()) - target:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'All of your mounts have been unlocked!') + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "All mounts unlocked for: " .. target:getName()) + target:sendTextMessage(MESSAGE_EVENT_ADVANCE, "All of your mounts have been unlocked!") return true end diff --git a/data/scripts/talkactions/god/add_outfit.lua b/data/scripts/talkactions/god/add_outfit.lua index 833992210ae..825aaf84c7e 100644 --- a/data/scripts/talkactions/god/add_outfit.lua +++ b/data/scripts/talkactions/god/add_outfit.lua @@ -27,8 +27,7 @@ function addOutfit.onSay(player, words, param) target:sendTextMessage(MESSAGE_ADMINISTRADOR, "" .. player:getName() .. " has been added a new outfit for you.") player:sendTextMessage(MESSAGE_ADMINISTRADOR, "You have sucessfull added looktype " .. lookType .. " to the player " .. target:getName() .. ".") if printConsole then - logger.info("[addOutfit.onSay] - Player: {} has been added looktype: {} to the player: {}", - player:getName(), lookType, target:getName()) + logger.info("[addOutfit.onSay] - Player: {} has been added looktype: {} to the player: {}", player:getName(), lookType, target:getName()) end return true else diff --git a/data/scripts/talkactions/god/attributes.lua b/data/scripts/talkactions/god/attributes.lua index 9bf6e957b22..1c1ed8a9bf1 100644 --- a/data/scripts/talkactions/god/attributes.lua +++ b/data/scripts/talkactions/god/attributes.lua @@ -1,52 +1,262 @@ local itemFunctions = { - ["actionid"] = { isActive = true, targetFunction = function(item, target) return item:setActionId(target) end }, - ["action"] = { isActive = true, targetFunction = function(item, target) return item:setActionId(target) end }, - ["aid"] = { isActive = true, targetFunction = function(item, target) return item:setActionId(target) end }, - ["uniqueid"] = { isActive = true, targetFunction = function(item, target) return item:setAttribute(ITEM_ATTRIBUTE_UNIQUEID, target) end }, - ["unique"] = { isActive = true, targetFunction = function(item, target) return item:setAttribute(ITEM_ATTRIBUTE_UNIQUEID, target) end }, - ["uid"] = { isActive = true, targetFunction = function(item, target) return item:setAttribute(ITEM_ATTRIBUTE_UNIQUEID, target) end }, - ["description"] = { isActive = true, targetFunction = function(item, target) return item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, target) end }, - ["desc"] = { isActive = true, targetFunction = function(item, target) return item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, target) end }, - ["name"] = { isActive = true, targetFunction = function(item, target) return item:setAttribute(ITEM_ATTRIBUTE_NAME, target) end }, - ["remove"] = { isActive = true, targetFunction = function(item, target) return item:remove() end }, - ["decay"] = { isActive = true, targetFunction = function(item, target) return item:decay() end }, - ["transform"] = { isActive = true, targetFunction = function(item, target) return item:transform(target) end }, - ["clone"] = { isActive = true, targetFunction = function(item, target) return item:clone() end }, - ["attack"] = { isActive = true, targetFunction = function(item, target) return item:setAttribute(ITEM_ATTRIBUTE_ATTACK, target) end }, - ["defense"] = { isActive = true, targetFunction = function(item, target) return item:setAttribute(ITEM_ATTRIBUTE_DEFENSE, target) end }, - ["extradefense"] = { isActive = true, targetFunction = function(item, target) return item:setAttribute(ITEM_ATTRIBUTE_EXTRADEFENSE, target) end }, - ["charge"] = { isActive = true, targetFunction = function(item, target) return item:setAttribute(ITEM_ATTRIBUTE_CHARGES, target) end }, - ["armor"] = { isActive = true, targetFunction = function(item, target) return item:setAttribute(ITEM_ATTRIBUTE_ARMOR, target) end } + ["actionid"] = { + isActive = true, + targetFunction = function(item, target) + return item:setActionId(target) + end, + }, + ["action"] = { + isActive = true, + targetFunction = function(item, target) + return item:setActionId(target) + end, + }, + ["aid"] = { + isActive = true, + targetFunction = function(item, target) + return item:setActionId(target) + end, + }, + ["uniqueid"] = { + isActive = true, + targetFunction = function(item, target) + return item:setAttribute(ITEM_ATTRIBUTE_UNIQUEID, target) + end, + }, + ["unique"] = { + isActive = true, + targetFunction = function(item, target) + return item:setAttribute(ITEM_ATTRIBUTE_UNIQUEID, target) + end, + }, + ["uid"] = { + isActive = true, + targetFunction = function(item, target) + return item:setAttribute(ITEM_ATTRIBUTE_UNIQUEID, target) + end, + }, + ["description"] = { + isActive = true, + targetFunction = function(item, target) + return item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, target) + end, + }, + ["desc"] = { + isActive = true, + targetFunction = function(item, target) + return item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, target) + end, + }, + ["name"] = { + isActive = true, + targetFunction = function(item, target) + return item:setAttribute(ITEM_ATTRIBUTE_NAME, target) + end, + }, + ["remove"] = { + isActive = true, + targetFunction = function(item, target) + return item:remove() + end, + }, + ["decay"] = { + isActive = true, + targetFunction = function(item, target) + return item:decay() + end, + }, + ["transform"] = { + isActive = true, + targetFunction = function(item, target) + return item:transform(target) + end, + }, + ["clone"] = { + isActive = true, + targetFunction = function(item, target) + return item:clone() + end, + }, + ["attack"] = { + isActive = true, + targetFunction = function(item, target) + return item:setAttribute(ITEM_ATTRIBUTE_ATTACK, target) + end, + }, + ["defense"] = { + isActive = true, + targetFunction = function(item, target) + return item:setAttribute(ITEM_ATTRIBUTE_DEFENSE, target) + end, + }, + ["extradefense"] = { + isActive = true, + targetFunction = function(item, target) + return item:setAttribute(ITEM_ATTRIBUTE_EXTRADEFENSE, target) + end, + }, + ["charge"] = { + isActive = true, + targetFunction = function(item, target) + return item:setAttribute(ITEM_ATTRIBUTE_CHARGES, target) + end, + }, + ["armor"] = { + isActive = true, + targetFunction = function(item, target) + return item:setAttribute(ITEM_ATTRIBUTE_ARMOR, target) + end, + }, } local creatureFunctions = { - ["health"] = { isActive = true, targetFunction = function(creature, target) return creature:addHealth(target) end }, - ["mana"] = { isActive = true, targetFunction = function(creature, target) return creature:addMana(target) end }, - ["speed"] = { isActive = true, targetFunction = function(creature, target) return creature:changeSpeed(target) end }, - ["droploot"] = { isActive = true, targetFunction = function(creature, target) return creature:setDropLoot(target) end }, - ["skull"] = { isActive = true, targetFunction = function(creature, target) return creature:setSkull(target) end }, - ["direction"] = { isActive = true, targetFunction = function(creature, target) return creature:setDirection(target) end }, - ["maxHealth"] = { isActive = true, targetFunction = function(creature, target) return creature:setMaxHealth(target) end }, - ["say"] = { isActive = true, targetFunction = function(creature, target) creature:say(target, TALKTYPE_SAY) end } + ["health"] = { + isActive = true, + targetFunction = function(creature, target) + return creature:addHealth(target) + end, + }, + ["mana"] = { + isActive = true, + targetFunction = function(creature, target) + return creature:addMana(target) + end, + }, + ["speed"] = { + isActive = true, + targetFunction = function(creature, target) + return creature:changeSpeed(target) + end, + }, + ["droploot"] = { + isActive = true, + targetFunction = function(creature, target) + return creature:setDropLoot(target) + end, + }, + ["skull"] = { + isActive = true, + targetFunction = function(creature, target) + return creature:setSkull(target) + end, + }, + ["direction"] = { + isActive = true, + targetFunction = function(creature, target) + return creature:setDirection(target) + end, + }, + ["maxHealth"] = { + isActive = true, + targetFunction = function(creature, target) + return creature:setMaxHealth(target) + end, + }, + ["say"] = { + isActive = true, + targetFunction = function(creature, target) + creature:say(target, TALKTYPE_SAY) + end, + }, } local playerFunctions = { - ["fyi"] = { isActive = true, targetFunction = function(player, target) return player:popupFYI(target) end }, - ["tutorial"] = { isActive = true, targetFunction = function(player, target) return player:sendTutorial(target) end }, - ["guildnick"] = { isActive = true, targetFunction = function(player, target) return player:setGuildNick(target) end }, - ["group"] = { isActive = true, targetFunction = function(player, target) return player:setGroup(Group(target)) end }, - ["vocation"] = { isActive = true, targetFunction = function(player, target) return player:setVocation(Vocation(target)) end }, - ["stamina"] = { isActive = true, targetFunction = function(player, target) return player:setStamina(target) end }, - ["town"] = { isActive = true, targetFunction = function(player, target) return player:setTown(Town(target)) end }, - ["balance"] = { isActive = true, targetFunction = function(player, target) return player:setBankBalance(target + player:getBankBalance()) end }, - ["save"] = { isActive = true, targetFunction = function(player, target) return player:save() end }, - ["type"] = { isActive = true, targetFunction = function(player, target) return player:setAccountType(target) end }, - ["skullTime"] = { isActive = true, targetFunction = function(player, target) return player:setSkullTime(target) end }, - ["maxMana"] = { isActive = true, targetFunction = function(player, target) return player:setMaxMana(target) end }, - ["maxHealth"] = { isActive = true, targetFunction = function(player, target) return player:setMaxHealth(target) end }, - ["addItem"] = { isActive = true, targetFunction = function(player, target) return player:addItem(target, 1) end }, - ["removeItem"] = { isActive = true, targetFunction = function(player, target) return player:removeItem(target, 1) end }, - ["premium"] = { isActive = true, targetFunction = function(player, target) return player:addPremiumDays(target) end } + ["fyi"] = { + isActive = true, + targetFunction = function(player, target) + return player:popupFYI(target) + end, + }, + ["tutorial"] = { + isActive = true, + targetFunction = function(player, target) + return player:sendTutorial(target) + end, + }, + ["guildnick"] = { + isActive = true, + targetFunction = function(player, target) + return player:setGuildNick(target) + end, + }, + ["group"] = { + isActive = true, + targetFunction = function(player, target) + return player:setGroup(Group(target)) + end, + }, + ["vocation"] = { + isActive = true, + targetFunction = function(player, target) + return player:setVocation(Vocation(target)) + end, + }, + ["stamina"] = { + isActive = true, + targetFunction = function(player, target) + return player:setStamina(target) + end, + }, + ["town"] = { + isActive = true, + targetFunction = function(player, target) + return player:setTown(Town(target)) + end, + }, + ["balance"] = { + isActive = true, + targetFunction = function(player, target) + return player:setBankBalance(target + player:getBankBalance()) + end, + }, + ["save"] = { + isActive = true, + targetFunction = function(player, target) + return player:save() + end, + }, + ["type"] = { + isActive = true, + targetFunction = function(player, target) + return player:setAccountType(target) + end, + }, + ["skullTime"] = { + isActive = true, + targetFunction = function(player, target) + return player:setSkullTime(target) + end, + }, + ["maxMana"] = { + isActive = true, + targetFunction = function(player, target) + return player:setMaxMana(target) + end, + }, + ["maxHealth"] = { + isActive = true, + targetFunction = function(player, target) + return player:setMaxHealth(target) + end, + }, + ["addItem"] = { + isActive = true, + targetFunction = function(player, target) + return player:addItem(target, 1) + end, + }, + ["removeItem"] = { + isActive = true, + targetFunction = function(player, target) + return player:removeItem(target, 1) + end, + }, + ["premium"] = { + isActive = true, + targetFunction = function(player, target) + return player:addPremiumDays(target) + end, + }, } local attributes = TalkAction("/attr") @@ -65,35 +275,35 @@ function attributes.onSay(player, words, param) local split = param:split(",") local itemFunction, creatureFunction, playerFunction = itemFunctions[split[1]:lower()], creatureFunctions[split[1]:lower()], playerFunctions[split[1]:lower()] - if (itemFunction and itemFunction.isActive) then + if itemFunction and itemFunction.isActive then local item = Tile(position):getTopVisibleThing(player) - if (not item or not item:isItem()) then + if not item or not item:isItem() then player:sendCancelMessage("Item not found.") return true end - if (itemFunction.targetFunction(item, split[2])) then + if itemFunction.targetFunction(item, split[2]) then position:sendMagicEffect(CONST_ME_MAGIC_GREEN) else player:sendCancelMessage("You cannot add that attribute to this item.") end - elseif (creatureFunction and creatureFunction.isActive) then + elseif creatureFunction and creatureFunction.isActive then local creature = Tile(position):getTopCreature() - if (not creature or not creature:isCreature()) then + if not creature or not creature:isCreature() then player:sendCancelMessage("Creature not found.") return true end - if (creatureFunction.targetFunction(creature, split[2])) then + if creatureFunction.targetFunction(creature, split[2]) then position:sendMagicEffect(CONST_ME_MAGIC_GREEN) else player:sendCancelMessage("You cannot add that attribute to this creature.") end - elseif (playerFunction and playerFunction.isActive) then + elseif playerFunction and playerFunction.isActive then local targetPlayer = Tile(position):getTopCreature() - if (not targetPlayer or not targetPlayer:getPlayer()) then + if not targetPlayer or not targetPlayer:getPlayer() then player:sendCancelMessage("Player not found.") return true end - if (playerFunction.targetFunction(targetPlayer, split[2])) then + if playerFunction.targetFunction(targetPlayer, split[2]) then position:sendMagicEffect(CONST_ME_MAGIC_GREEN) else player:sendCancelMessage("You cannot add that attribute to this player.") diff --git a/data/scripts/talkactions/god/charms.lua b/data/scripts/talkactions/god/charms.lua index f7574a5bf2a..14dde0a58d7 100644 --- a/data/scripts/talkactions/god/charms.lua +++ b/data/scripts/talkactions/god/charms.lua @@ -138,7 +138,7 @@ function setBestiary.onSay(player, words, param) local monsterName = split[2] local mType = MonsterType(monsterName) - if not (mType) or (mType and mType:raceId() == 0) then + if not mType or (mType and mType:raceId() == 0) then player:sendCancelMessage("This monster has no bestiary. Type the name exactly as in game.") return true end diff --git a/data/scripts/talkactions/god/close_server.lua b/data/scripts/talkactions/god/close_server.lua index 96e98c3c78f..9f020e289d6 100644 --- a/data/scripts/talkactions/god/close_server.lua +++ b/data/scripts/talkactions/god/close_server.lua @@ -6,8 +6,7 @@ function closeServer.onSay(player, words, param) if param == "shutdown" then Game.setGameState(GAME_STATE_SHUTDOWN) - Webhook.sendMessage("Server Shutdown", "Server was shutdown by: " .. player:getName(), - WEBHOOK_COLOR_WARNING, announcementChannels["serverAnnouncements"]) + Webhook.sendMessage("Server Shutdown", "Server was shutdown by: " .. player:getName(), WEBHOOK_COLOR_WARNING, announcementChannels["serverAnnouncements"]) elseif param == "save" then if configManager.getBoolean(configKeys.GLOBAL_SERVER_SAVE_CLEAN_MAP) then cleanMap() @@ -21,15 +20,14 @@ function closeServer.onSay(player, words, param) -- Updating daily reward next server save. UpdateDailyRewardGlobalStorage(DailyReward.storages.lastServerSave, os.time()) -- Reset gamestore exp boost count. - db.query('UPDATE `player_storage` SET `value` = 0 WHERE `player_storage`.`key` = 51052') + db.query("UPDATE `player_storage` SET `value` = 0 WHERE `player_storage`.`key` = 51052") elseif param == "maintainance" then Game.setGameState(GAME_STATE_MAINTAIN) player:sendTextMessage(MESSAGE_ADMINISTRADOR, "Server is set to maintenance mode.") else Game.setGameState(GAME_STATE_CLOSED) player:sendTextMessage(MESSAGE_ADMINISTRADOR, "Server is now closed.") - Webhook.sendMessage("Server Closed", "Server was closed by: " .. player:getName(), - WEBHOOK_COLOR_WARNING, announcementChannels["serverAnnouncements"]) + Webhook.sendMessage("Server Closed", "Server was closed by: " .. player:getName(), WEBHOOK_COLOR_WARNING, announcementChannels["serverAnnouncements"]) end return true end diff --git a/data/scripts/talkactions/god/create_item.lua b/data/scripts/talkactions/god/create_item.lua index 588f61f79b9..4ad618120e0 100644 --- a/data/scripts/talkactions/god/create_item.lua +++ b/data/scripts/talkactions/god/create_item.lua @@ -1,5 +1,23 @@ local invalidIds = { - 1, 2, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15, 19, 21, 26, 27, 28, 35, 43 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 10, + 11, + 13, + 14, + 15, + 19, + 21, + 26, + 27, + 28, + 35, + 43, } local createItem = TalkAction("/i") @@ -29,9 +47,9 @@ function createItem.onSay(player, words, param) if itemType:isStackable() then count = math.min(10000, math.max(1, count)) elseif not itemType:isFluidContainer() then - local min = 100; - if (charges > 0) then - min = charges; + local min = 100 + if charges > 0 then + min = charges end count = math.min(min, math.max(1, count)) else diff --git a/data/scripts/talkactions/god/create_spawn.lua b/data/scripts/talkactions/god/create_spawn.lua index 513112943cc..61cccde5220 100644 --- a/data/scripts/talkactions/god/create_spawn.lua +++ b/data/scripts/talkactions/god/create_spawn.lua @@ -16,8 +16,8 @@ function createMonster.onSay(player, words, param) spawntime = tonumber(parameter[2]) or 60, monster = parameter[1], pos = player:getPosition(), - status = true - } + status = true, + }, } spawn:setPositions(config) spawn:executeSpawn() diff --git a/data/scripts/talkactions/god/inbox_command.lua b/data/scripts/talkactions/god/inbox_command.lua index 701668bf476..59d7dbec3a8 100644 --- a/data/scripts/talkactions/god/inbox_command.lua +++ b/data/scripts/talkactions/god/inbox_command.lua @@ -1,27 +1,27 @@ local inboxCommand = TalkAction("/inbox") function inboxCommand.onSay(player, words, param) - param = param:split(',') + param = param:split(",") player:getPosition():sendMagicEffect(CONST_ME_TUTORIALSQUARE) local target = Creature(param[1]) if target then local inbox = target:getSlotItem(CONST_SLOT_STORE_INBOX) local inboxSize = inbox:getSize() if inbox and inboxSize > 0 then - if param[2] == 'remove' then + if param[2] == "remove" then for i = 0, inboxSize do local item = inbox:getItem(i) if item and item:getId() == tonumber(param[3]) then local itemToDelete = Item(item.uid) if itemToDelete then itemToDelete:remove() - player:say(item:getId() .. ' removed') + player:say(item:getId() .. " removed") end end end - elseif param[2] == 'add' then + elseif param[2] == "add" then inbox:addItem(tonumber(param[3]), 1, INDEX_WHEREEVER, FLAG_NOLIMIT) - player:say(tonumber(param[3]) .. ' added') + player:say(tonumber(param[3]) .. " added") end end else diff --git a/data/scripts/talkactions/god/ip_ban.lua b/data/scripts/talkactions/god/ip_ban.lua index be653a90f36..9826d726c87 100644 --- a/data/scripts/talkactions/god/ip_ban.lua +++ b/data/scripts/talkactions/god/ip_ban.lua @@ -38,8 +38,7 @@ function ipBan.onSay(player, words, param) end local timeNow = os.time() - db.query("INSERT INTO `ip_bans` (`ip`, `reason`, `banned_at`, `expires_at`, `banned_by`) VALUES (" .. - targetIp .. ", '', " .. timeNow .. ", " .. timeNow + (ipBanDays * 86400) .. ", " .. player:getGuid() .. ")") + db.query("INSERT INTO `ip_bans` (`ip`, `reason`, `banned_at`, `expires_at`, `banned_by`) VALUES (" .. targetIp .. ", '', " .. timeNow .. ", " .. timeNow + (ipBanDays * 86400) .. ", " .. player:getGuid() .. ")") player:sendTextMessage(MESSAGE_ADMINISTRADOR, targetName .. " has been IP banned.") return true end diff --git a/data/scripts/talkactions/god/open_server.lua b/data/scripts/talkactions/god/open_server.lua index 76592779634..f098d05bb99 100644 --- a/data/scripts/talkactions/god/open_server.lua +++ b/data/scripts/talkactions/god/open_server.lua @@ -6,8 +6,7 @@ function openServer.onSay(player, words, param) Game.setGameState(GAME_STATE_NORMAL) player:sendTextMessage(MESSAGE_ADMINISTRADOR, "Server is now open.") - Webhook.sendMessage("Server Open", "Server was opened by: " .. player:getName(), - WEBHOOK_COLOR_WARNING, announcementChannels["serverAnnouncements"]) + Webhook.sendMessage("Server Open", "Server was opened by: " .. player:getName(), WEBHOOK_COLOR_WARNING, announcementChannels["serverAnnouncements"]) return true end diff --git a/data/scripts/talkactions/god/reload.lua b/data/scripts/talkactions/god/reload.lua index 885fa5c5655..290288a19df 100644 --- a/data/scripts/talkactions/god/reload.lua +++ b/data/scripts/talkactions/god/reload.lua @@ -5,7 +5,6 @@ -- -- This script should be used in test environments only. - function Player.reloadTalkaction(self, words, param) local reloadTypes = { ["all"] = RELOAD_TYPE_ALL, @@ -51,7 +50,7 @@ function Player.reloadTalkaction(self, words, param) ["imbuements"] = RELOAD_TYPE_IMBUEMENTS, ["group"] = RELOAD_TYPE_GROUPS, - ["groups"] = RELOAD_TYPE_GROUPS + ["groups"] = RELOAD_TYPE_GROUPS, } if not configManager.getBoolean(configKeys.ALLOW_RELOAD) then diff --git a/data/scripts/talkactions/god/sound.lua b/data/scripts/talkactions/god/sound.lua index a5c1d94b9dc..ca20b9813e2 100644 --- a/data/scripts/talkactions/god/sound.lua +++ b/data/scripts/talkactions/god/sound.lua @@ -10,9 +10,9 @@ function areasound.onSay(player, words, param) end local split = param:split(",") - if not (split[2]) then + if not split[2] then local primaryEffect = tonumber(param) - if (primaryEffect == nil or primaryEffect == 0) then + if primaryEffect == nil or primaryEffect == 0 then player:sendCancelMessage("Invalid command param.") return true end @@ -24,7 +24,7 @@ function areasound.onSay(player, words, param) local primaryEffect = tonumber(split[1]) local secondaryEffect = tonumber(split[2]) - if (primaryEffect == nil or secondaryEffect == nil) then + if primaryEffect == nil or secondaryEffect == nil then player:sendCancelMessage("Invalid command params.") return true end @@ -51,9 +51,9 @@ function internalsound.onSay(player, words, param) end local split = param:split(",") - if not (split[2]) then + if not split[2] then local primaryEffect = tonumber(param) - if (primaryEffect == nil or primaryEffect == 0) then + if primaryEffect == nil or primaryEffect == 0 then player:sendCancelMessage("Invalid command param.") return true end @@ -65,7 +65,7 @@ function internalsound.onSay(player, words, param) local primaryEffect = tonumber(split[1]) local secondaryEffect = tonumber(split[2]) - if (primaryEffect == nil or secondaryEffect == nil) then + if primaryEffect == nil or secondaryEffect == nil then player:sendCancelMessage("Invalid command params.") return true end @@ -92,9 +92,9 @@ function globalsound.onSay(player, words, param) end local split = param:split(",") - if not (split[2]) then + if not split[2] then local primaryEffect = tonumber(param) - if (primaryEffect == nil or primaryEffect == 0) then + if primaryEffect == nil or primaryEffect == 0 then player:sendCancelMessage("Invalid command param.") return true end @@ -108,7 +108,7 @@ function globalsound.onSay(player, words, param) local primaryEffect = tonumber(split[1]) local secondaryEffect = tonumber(split[2]) - if (primaryEffect == nil or secondaryEffect == nil) then + if primaryEffect == nil or secondaryEffect == nil then player:sendCancelMessage("Invalid command params.") return true end diff --git a/data/scripts/talkactions/god/vip_manager.lua b/data/scripts/talkactions/god/vip_manager.lua index 75161116fc3..16c7629f176 100644 --- a/data/scripts/talkactions/god/vip_manager.lua +++ b/data/scripts/talkactions/god/vip_manager.lua @@ -2,24 +2,24 @@ local vipGod = TalkAction("/vip") local config = { minDays = 1, -- minimum number of days that can be added - maxDays = 90 -- maximum days that can be added + maxDays = 90, -- maximum days that can be added } function vipGod.onSay(player, words, param) if not configManager.getBoolean(configKeys.VIP_SYSTEM_ENABLED) then - player:sendCancelMessage('Vip System are not enabled!') + player:sendCancelMessage("Vip System are not enabled!") return true end -- create log logCommand(player, words, param) - local params = param:split(',') + local params = param:split(",") local action = params[1]:trim():lower() local targetName = params[2]:trim() if not action or not targetName then - player:sendTextMessage(MESSAGE_LOOK, 'Command invalid.\nUsage:\n/vip , , [, ]\n\nAvailable actions:\ncheck, adddays, removedays, remove') + player:sendTextMessage(MESSAGE_LOOK, "Command invalid.\nUsage:\n/vip , , [, ]\n\nAvailable actions:\ncheck, adddays, removedays, remove") return true end @@ -33,16 +33,16 @@ function vipGod.onSay(player, words, param) targetName = target:getName() if action == "check" then - player:sendTextMessage(MESSAGE_STATUS, string.format('"%s" has %s VIP day(s) left.', targetName, (targetVipDays == 0xFFFF and 'infinite' or targetVipDays))) + player:sendTextMessage(MESSAGE_STATUS, string.format('"%s" has %s VIP day(s) left.', targetName, (targetVipDays == 0xFFFF and "infinite" or targetVipDays))) elseif action == "adddays" then local amount = tonumber(params[3]) if not amount or amount <= 0 then - player:sendCancelMessage(' has to be a numeric value.') + player:sendCancelMessage(" has to be a numeric value.") return true end if amount < config.minDays or amount > config.maxDays then - player:sendTextMessage(MESSAGE_LOOK, string.format('You can only add %d to %d VIP days at a time.', config.minDays, config.maxDays)) + player:sendTextMessage(MESSAGE_LOOK, string.format("You can only add %d to %d VIP days at a time.", config.minDays, config.maxDays)) return true end @@ -50,28 +50,28 @@ function vipGod.onSay(player, words, param) target:onAddVip(amount) target:getPosition():sendMagicEffect(CONST_ME_HOLYAREA) player:sendTextMessage(MESSAGE_STATUS, string.format('"%s" received %d VIP day(s) and now has %d VIP day(s)', targetName, amount, target:getVipDays())) - elseif action == 'removedays' then + elseif action == "removedays" then local amount = tonumber(params[3]) if not amount then - player:sendTextMessage(MESSAGE_LOOK, ' has to be a numeric value.') + player:sendTextMessage(MESSAGE_LOOK, " has to be a numeric value.") return true end if amount > targetVipDays then target:removePremiumDays(targetVipDays) target:onRemoveVip() target:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) - player:sendTextMessage(MESSAGE_STATUS, string.format('You removed all VIP days from %s.', targetName)) + player:sendTextMessage(MESSAGE_STATUS, string.format("You removed all VIP days from %s.", targetName)) else target:removePremiumDays(amount) - player:sendTextMessage(MESSAGE_STATUS, string.format('%s lost %s VIP day(s) and now has %s VIP day(s).', targetName, amount, target:getVipDays())) + player:sendTextMessage(MESSAGE_STATUS, string.format("%s lost %s VIP day(s) and now has %s VIP day(s).", targetName, amount, target:getVipDays())) end - elseif action == 'remove' then + elseif action == "remove" then target:removePremiumDays(targetVipDays) target:onRemoveVip() target:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) - player:sendTextMessage(MESSAGE_STATUS, string.format('You removed all VIP days from %s.', targetName)) + player:sendTextMessage(MESSAGE_STATUS, string.format("You removed all VIP days from %s.", targetName)) else - player:sendTextMessage(MESSAGE_LOOK, 'Action is required.\nUsage:\n/vip , , [, ]\n\nAvailable actions:\ncheck, adddays, removedays, remove') + player:sendTextMessage(MESSAGE_LOOK, "Action is required.\nUsage:\n/vip , , [, ]\n\nAvailable actions:\ncheck, adddays, removedays, remove") return true end return true diff --git a/data/scripts/talkactions/god/zones.lua b/data/scripts/talkactions/god/zones.lua index 2a69c40dd28..75f70af6507 100644 --- a/data/scripts/talkactions/god/zones.lua +++ b/data/scripts/talkactions/god/zones.lua @@ -85,7 +85,9 @@ function zones.onSay(player, words, param) return false end local zone = zoneFromParam() - if not zone then return false end + if not zone then + return false + end return command(zone) end diff --git a/data/scripts/talkactions/player/auto_loot.lua b/data/scripts/talkactions/player/auto_loot.lua index dc01b138b8d..0b03b0101bd 100644 --- a/data/scripts/talkactions/player/auto_loot.lua +++ b/data/scripts/talkactions/player/auto_loot.lua @@ -4,8 +4,7 @@ function autoLoot.onSay(player, words, param) if not configManager.getBoolean(configKeys.AUTOLOOT) then return true end - if (configManager.getBoolean(configKeys.VIP_SYSTEM_ENABLED) and - configManager.getBoolean(configKeys.VIP_AUTOLOOT_VIP_ONLY) and not player:isVip()) then + if configManager.getBoolean(configKeys.VIP_SYSTEM_ENABLED) and configManager.getBoolean(configKeys.VIP_AUTOLOOT_VIP_ONLY) and not player:isVip() then player:sendCancelMessage("You need to be VIP to use this command!") return true end diff --git a/data/scripts/talkactions/player/bank.lua b/data/scripts/talkactions/player/bank.lua index 807541a9dd3..b25c2811938 100644 --- a/data/scripts/talkactions/player/bank.lua +++ b/data/scripts/talkactions/player/bank.lua @@ -1,6 +1,6 @@ local config = { enabled = true, - messageStyle = MESSAGE_LOOK + messageStyle = MESSAGE_LOOK, } if not config.enabled then diff --git a/data/scripts/talkactions/player/server_info.lua b/data/scripts/talkactions/player/server_info.lua index 79c13976eff..5c19c48df7f 100644 --- a/data/scripts/talkactions/player/server_info.lua +++ b/data/scripts/talkactions/player/server_info.lua @@ -5,33 +5,71 @@ function serverInfo.onSay(player, words, param) local useStages = configManager.getBoolean(configKeys.RATE_USE_STAGES) if not useStages then text = "Server Info Rates: \n" - .. "\nExp rate: " .. configManager.getNumber(configKeys.RATE_EXPERIENCE) .. "x" - .. "\nSkill rate: " .. configManager.getNumber(configKeys.RATE_SKILL) .. "x" - .. "\nMagic rate: " .. configManager.getNumber(configKeys.RATE_MAGIC) .. "x" - .. "\nLoot rate: " .. configManager.getNumber(configKeys.RATE_LOOT) .. "x" - .. "\nSpawns rate: " .. configManager.getNumber(configKeys.RATE_SPAWN) .. "x" + .. "\nExp rate: " + .. configManager.getNumber(configKeys.RATE_EXPERIENCE) + .. "x" + .. "\nSkill rate: " + .. configManager.getNumber(configKeys.RATE_SKILL) + .. "x" + .. "\nMagic rate: " + .. configManager.getNumber(configKeys.RATE_MAGIC) + .. "x" + .. "\nLoot rate: " + .. configManager.getNumber(configKeys.RATE_LOOT) + .. "x" + .. "\nSpawns rate: " + .. configManager.getNumber(configKeys.RATE_SPAWN) + .. "x" else local configRateSkill = configManager.getNumber(configKeys.RATE_SKILL) text = "Server Info Stages Rates: \n" - .. "\nExp rate stages: " .. getRateFromTable(experienceStages, player:getLevel(), expstagesrate) .. "x" - .. "\nSword Skill Stages rate: " .. getRateFromTable(skillsStages, player:getSkillLevel(SKILL_SWORD), configRateSkill) .. "x" - .. "\nClub Skill Stages rate: " .. getRateFromTable(skillsStages, player:getSkillLevel(SKILL_CLUB), configRateSkill) .. "x" - .. "\nAxe Skill Stages rate: " .. getRateFromTable(skillsStages, player:getSkillLevel(SKILL_AXE), configRateSkill) .. "x" - .. "\nDistance Skill Stages rate: " .. getRateFromTable(skillsStages, player:getSkillLevel(SKILL_DISTANCE), configRateSkill) .. "x" - .. "\nShield Skill Stages rate: " .. getRateFromTable(skillsStages, player:getSkillLevel(SKILL_SHIELD), configRateSkill) .. "x" - .. "\nFist Skill Stages rate: " .. getRateFromTable(skillsStages, player:getSkillLevel(SKILL_FIST), configRateSkill) .. "x" - .. "\nMagic rate: " .. getRateFromTable(magicLevelStages, player:getBaseMagicLevel(), configManager.getNumber(configKeys.RATE_MAGIC)) .. "x" - .. "\nLoot rate: " .. configManager.getNumber(configKeys.RATE_LOOT) .. "x" - .. "\nSpawns rate: " .. configManager.getNumber(configKeys.RATE_SPAWN) .. "x" + .. "\nExp rate stages: " + .. getRateFromTable(experienceStages, player:getLevel(), expstagesrate) + .. "x" + .. "\nSword Skill Stages rate: " + .. getRateFromTable(skillsStages, player:getSkillLevel(SKILL_SWORD), configRateSkill) + .. "x" + .. "\nClub Skill Stages rate: " + .. getRateFromTable(skillsStages, player:getSkillLevel(SKILL_CLUB), configRateSkill) + .. "x" + .. "\nAxe Skill Stages rate: " + .. getRateFromTable(skillsStages, player:getSkillLevel(SKILL_AXE), configRateSkill) + .. "x" + .. "\nDistance Skill Stages rate: " + .. getRateFromTable(skillsStages, player:getSkillLevel(SKILL_DISTANCE), configRateSkill) + .. "x" + .. "\nShield Skill Stages rate: " + .. getRateFromTable(skillsStages, player:getSkillLevel(SKILL_SHIELD), configRateSkill) + .. "x" + .. "\nFist Skill Stages rate: " + .. getRateFromTable(skillsStages, player:getSkillLevel(SKILL_FIST), configRateSkill) + .. "x" + .. "\nMagic rate: " + .. getRateFromTable(magicLevelStages, player:getBaseMagicLevel(), configManager.getNumber(configKeys.RATE_MAGIC)) + .. "x" + .. "\nLoot rate: " + .. configManager.getNumber(configKeys.RATE_LOOT) + .. "x" + .. "\nSpawns rate: " + .. configManager.getNumber(configKeys.RATE_SPAWN) + .. "x" end - text = text .. "\n\nMore Server Info: \n" - .. "\nLevel to buy house: " .. configManager.getNumber(configKeys.HOUSE_BUY_LEVEL) - .. "\nProtection level: " .. configManager.getNumber(configKeys.PROTECTION_LEVEL) - .. "\nWorldType: " .. configManager.getString(configKeys.WORLD_TYPE) - .. "\nKills/day to red skull: " .. configManager.getNumber(configKeys.DAY_KILLS_TO_RED) - .. "\nKills/week to red skull: " .. configManager.getNumber(configKeys.WEEK_KILLS_TO_RED) - .. "\nKills/month to red skull: " .. configManager.getNumber(configKeys.MONTH_KILLS_TO_RED) - .. "\nServer Save: " .. configManager.getString(configKeys.GLOBAL_SERVER_SAVE_TIME) + text = text + .. "\n\nMore Server Info: \n" + .. "\nLevel to buy house: " + .. configManager.getNumber(configKeys.HOUSE_BUY_LEVEL) + .. "\nProtection level: " + .. configManager.getNumber(configKeys.PROTECTION_LEVEL) + .. "\nWorldType: " + .. configManager.getString(configKeys.WORLD_TYPE) + .. "\nKills/day to red skull: " + .. configManager.getNumber(configKeys.DAY_KILLS_TO_RED) + .. "\nKills/week to red skull: " + .. configManager.getNumber(configKeys.WEEK_KILLS_TO_RED) + .. "\nKills/month to red skull: " + .. configManager.getNumber(configKeys.MONTH_KILLS_TO_RED) + .. "\nServer Save: " + .. configManager.getString(configKeys.GLOBAL_SERVER_SAVE_TIME) player:showTextDialog(34266, text) return true end diff --git a/data/scripts/talkactions/player/vip.lua b/data/scripts/talkactions/player/vip.lua index 99ff86b0ff7..65ca4be99f8 100644 --- a/data/scripts/talkactions/player/vip.lua +++ b/data/scripts/talkactions/player/vip.lua @@ -2,7 +2,7 @@ local vip = TalkAction("!checkvip", "!vip") function vip.onSay(player, words, param) if not player:isVip() then - local msg = 'You do not have VIP on your account.' + local msg = "You do not have VIP on your account." player:sendCancelMessage(msg) player:sendTextMessage(MESSAGE_STATUS, msg) else diff --git a/data/stages.lua b/data/stages.lua index 329efa3f964..0b7888c8ff5 100644 --- a/data/stages.lua +++ b/data/stages.lua @@ -5,71 +5,84 @@ experienceStages = { { minlevel = 1, maxlevel = 8, - multiplier = 7 - }, { - minlevel = 9, - maxlevel = 20, - multiplier = 6 -}, { - minlevel = 21, - maxlevel = 50, - multiplier = 5 -}, { - minlevel = 51, - maxlevel = 100, - multiplier = 4 -}, { - minlevel = 101, - multiplier = 2 -} + multiplier = 7, + }, + { + minlevel = 9, + maxlevel = 20, + multiplier = 6, + }, + { + minlevel = 21, + maxlevel = 50, + multiplier = 5, + }, + { + minlevel = 51, + maxlevel = 100, + multiplier = 4, + }, + { + minlevel = 101, + multiplier = 2, + }, } skillsStages = { { minlevel = 10, maxlevel = 60, - multiplier = 15 - }, { - minlevel = 61, - maxlevel = 80, - multiplier = 10 -}, { - minlevel = 81, - maxlevel = 110, - multiplier = 6 -}, { - minlevel = 111, - maxlevel = 125, - multiplier = 4 -}, { - minlevel = 126, - multiplier = 2 -} + multiplier = 15, + }, + { + minlevel = 61, + maxlevel = 80, + multiplier = 10, + }, + { + minlevel = 81, + maxlevel = 110, + multiplier = 6, + }, + { + minlevel = 111, + maxlevel = 125, + multiplier = 4, + }, + { + minlevel = 126, + multiplier = 2, + }, } magicLevelStages = { { minlevel = 0, maxlevel = 60, - multiplier = 10 - }, { - minlevel = 61, - maxlevel = 80, - multiplier = 7 -}, { - minlevel = 81, - maxlevel = 100, - multiplier = 5 -}, { - minlevel = 101, - maxlevel = 110, - multiplier = 4 -}, { - minlevel = 111, - maxlevel = 125, - multiplier = 3 -}, { - minlevel = 126, - multiplier = 2 -} + multiplier = 10, + }, + { + minlevel = 61, + maxlevel = 80, + multiplier = 7, + }, + { + minlevel = 81, + maxlevel = 100, + multiplier = 5, + }, + { + minlevel = 101, + maxlevel = 110, + multiplier = 4, + }, + { + minlevel = 111, + maxlevel = 125, + multiplier = 3, + }, + { + minlevel = 126, + multiplier = 2, + }, } From 18fcc0798aa304a0efca0bf7f8bfa3aa5282bb95 Mon Sep 17 00:00:00 2001 From: Luan Santos Date: Sun, 10 Sep 2023 23:09:56 -0700 Subject: [PATCH 06/10] feat: chain improvements for lower range (#1554) The C++ chain system works well today if the chain ability can hit further than 2 squares. But for 1 tile chaining it tends to pick too few targets and be sub-optimal. This isn't a big issue with the current spells/monsters in the datapack but it poses a limitation to developing chain abilities with shorter range. This PR fixes that by re-working the chain algorithm to do more efficient backtracking in order to pick a good set of targets to hit. --- src/creatures/combat/combat.cpp | 144 ++++++++++++------- src/creatures/combat/combat.hpp | 3 +- src/creatures/players/wheel/player_wheel.cpp | 6 - src/game/game.cpp | 2 +- src/game/movement/position.hpp | 5 + 5 files changed, 97 insertions(+), 63 deletions(-) diff --git a/src/creatures/combat/combat.cpp b/src/creatures/combat/combat.cpp index 5ccbca9bda3..6b5b1a9ae5c 100644 --- a/src/creatures/combat/combat.cpp +++ b/src/creatures/combat/combat.cpp @@ -878,6 +878,14 @@ void Combat::addDistanceEffect(Creature* caster, const Position &fromPos, const case WEAPON_CLUB: effect = CONST_ANI_WHIRLWINDCLUB; break; + case WEAPON_MISSILE: { + auto weapon = player->getWeapon(); + if (weapon) { + const auto &iType = Item::items[weapon->getID()]; + effect = iType.shootType; + } + break; + } default: effect = CONST_ANI_NONE; break; @@ -908,36 +916,33 @@ void Combat::doChainEffect(const Position &origin, const Position &dest, uint8_t } bool Combat::doCombatChain(Creature* caster, Creature* target, bool aggressive) const { - auto targets = std::vector(); - auto targetSet = std::set(); - auto visitedChain = std::set(); - if (target != nullptr) { - targets.push_back(target); - targetSet.insert(target->getID()); - } - if (caster != nullptr) { - visitedChain.insert(caster->getID()); - } - if (params.chainCallback) { - uint8_t maxTargets, chainDistance; - bool backtracking = false; - params.chainCallback->onChainCombat(caster, maxTargets, chainDistance, backtracking); - pickChainTargets(caster, targets, targetSet, visitedChain, params, chainDistance, maxTargets, backtracking, aggressive); - } - if (targets.empty() || targets.size() == 1 && targets[0] == caster) { + if (!params.chainCallback) { return false; } - Creature* previousTarget = caster; - for (auto currentTarget : targets) { - if (currentTarget == caster) { - continue; + + uint8_t maxTargets; + uint8_t chainDistance; + bool backtracking = false; + params.chainCallback->onChainCombat(caster, maxTargets, chainDistance, backtracking); + auto targets = pickChainTargets(caster, params, chainDistance, maxTargets, backtracking, aggressive, target); + + g_logger().debug("[{}] Chain targets: {}", __FUNCTION__, targets.size()); + if (targets.empty() || targets.size() == 1 && targets.begin()->second.empty()) { + return false; + } + + for (const auto &[from, toVector] : targets) { + auto combat = this; + for (auto to : toVector) { + auto nextTarget = g_game().getCreatureByID(to); + if (!nextTarget) { + continue; + } + combat->doChainEffect(from, nextTarget->getPosition(), combat->params.chainEffect); + combat->doCombat(caster, nextTarget, from); } - g_logger().debug("Combat: {} -> {}", previousTarget ? previousTarget->getName() : "none", currentTarget ? currentTarget->getName() : "none"); - auto origin = previousTarget != nullptr ? previousTarget->getPosition() : Position(); - doChainEffect(origin, currentTarget->getPosition(), params.chainEffect); - doCombat(caster, currentTarget, origin); - previousTarget = currentTarget; } + return true; } @@ -1372,55 +1377,84 @@ void Combat::setRuneSpellName(const std::string &value) { runeSpellName = value; } -void Combat::pickChainTargets(Creature* caster, std::vector &targets, std::set &targetSet, std::set &visited, const CombatParams ¶ms, uint8_t chainDistance, uint8_t maxTargets, bool backtracking, bool aggressive) { - if (maxTargets == 0 || targets.size() > maxTargets) { - return; +std::vector>> Combat::pickChainTargets(Creature* caster, const CombatParams ¶ms, uint8_t chainDistance, uint8_t maxTargets, bool backtracking, bool aggressive, Creature* initialTarget /* = nullptr */) { + if (!caster) { + return {}; } - // we need a target to chain from - if (targets.empty()) { - return; + + std::vector>> resultMap; + std::vector targets; + std::set visited; + + if (initialTarget && initialTarget != caster) { + targets.push_back(initialTarget); + visited.insert(initialTarget->getID()); + resultMap.push_back({ caster->getPosition(), { initialTarget->getID() } }); + } else { + targets.push_back(caster); + maxTargets++; } - auto currentTarget = targets.back(); - SpectatorHashSet spectators; - g_game().map.getSpectators(spectators, currentTarget->getPosition(), false, false, chainDistance, chainDistance, chainDistance, chainDistance); - g_logger().debug("Combat::pickChainTargets: currentTarget: {}, spectators: {}", currentTarget->getName(), spectators.size()); - auto maxBacktrackingAttempts = 10; - for (auto attempts = 0; targets.size() <= maxTargets && attempts < maxBacktrackingAttempts; ++attempts) { - auto closestDistance = std::numeric_limits::max(); + const int maxBacktrackingAttempts = 10; // Can be adjusted as needed + while (!targets.empty() && targets.size() <= maxTargets) { + Creature* currentTarget = targets.back(); + SpectatorHashSet spectators; + g_game().map.getSpectators(spectators, currentTarget->getPosition(), false, false, chainDistance, chainDistance, chainDistance, chainDistance); + g_logger().debug("Combat::pickChainTargets: currentTarget: {}, spectators: {}", currentTarget->getName(), spectators.size()); + + double closestDistance = std::numeric_limits::max(); Creature* closestSpectator = nullptr; - for (auto spectator : spectators) { - Creature* creature = spectator; - if (creature == nullptr || visited.contains(creature->getID())) { + for (Creature* spectator : spectators) { + if (!spectator || visited.contains(spectator->getID())) { continue; } - bool canCombat = canDoCombat(caster, creature, aggressive) == RETURNVALUE_NOERROR; - bool pick = params.chainPickerCallback ? params.chainPickerCallback->onChainCombat(caster, creature) : true; - bool hasSight = g_game().isSightClear(currentTarget->getPosition(), creature->getPosition(), true); - if (!canCombat || !pick || !hasSight) { - visited.insert(creature->getID()); + if (!isValidChainTarget(caster, currentTarget, spectator, params, aggressive)) { + visited.insert(spectator->getID()); continue; } - auto distance = Position::getDiagonalDistance(currentTarget->getPosition(), creature->getPosition()); + double distance = Position::getEuclideanDistance(currentTarget->getPosition(), spectator->getPosition()); if (distance < closestDistance) { closestDistance = distance; closestSpectator = spectator; } } - if (closestSpectator != nullptr) { + if (closestSpectator) { g_logger().debug("Combat::pickChainTargets: closestSpectator: {}", closestSpectator->getName()); + + bool found = false; + for (auto &[pos, vec] : resultMap) { + if (pos == currentTarget->getPosition()) { + vec.push_back(closestSpectator->getID()); + found = true; + break; + } + } + if (!found) { + resultMap.push_back({ currentTarget->getPosition(), { closestSpectator->getID() } }); + } + targets.push_back(closestSpectator); - targetSet.insert(closestSpectator->getID()); visited.insert(closestSpectator->getID()); - pickChainTargets(caster, targets, targetSet, visited, params, chainDistance, maxTargets, backtracking, aggressive); - } - - if (!backtracking || closestSpectator == nullptr) { - break; + continue; + } else if (backtracking) { + targets.pop_back(); + if (targets.size() <= maxBacktrackingAttempts) { + continue; + } } + break; } + + return resultMap; +} + +bool Combat::isValidChainTarget(Creature* caster, Creature* currentTarget, Creature* potentialTarget, const CombatParams ¶ms, bool aggressive) { + bool canCombat = canDoCombat(caster, potentialTarget, aggressive) == RETURNVALUE_NOERROR; + bool pick = params.chainPickerCallback ? params.chainPickerCallback->onChainCombat(caster, potentialTarget) : true; + bool hasSight = g_game().isSightClear(currentTarget->getPosition(), potentialTarget->getPosition(), true); + return canCombat && pick && hasSight; } //**********************************************************// diff --git a/src/creatures/combat/combat.hpp b/src/creatures/combat/combat.hpp index 5a66c04847f..241d1c05f63 100644 --- a/src/creatures/combat/combat.hpp +++ b/src/creatures/combat/combat.hpp @@ -324,7 +324,8 @@ class Combat { private: static void doChainEffect(const Position &origin, const Position &pos, uint8_t effect); - static void pickChainTargets(Creature* caster, std::vector &targets, std::set &targetSet, std::set &visited, const CombatParams ¶ms, uint8_t chainDistance, uint8_t maxTargets, bool backtracking, bool aggressive); + static std::vector>> pickChainTargets(Creature* caster, const CombatParams ¶ms, uint8_t chainDistance, uint8_t maxTargets, bool aggressive, bool backtracking, Creature* initialTarget = nullptr); + static bool isValidChainTarget(Creature* caster, Creature* currentTarget, Creature* potentialTarget, const CombatParams ¶ms, bool aggressive); static void doCombatDefault(Creature* caster, Creature* target, const CombatParams ¶ms); diff --git a/src/creatures/players/wheel/player_wheel.cpp b/src/creatures/players/wheel/player_wheel.cpp index 8683e67a650..06a25f4d743 100644 --- a/src/creatures/players/wheel/player_wheel.cpp +++ b/src/creatures/players/wheel/player_wheel.cpp @@ -880,12 +880,6 @@ void PlayerWheel::loadDBPlayerSlotPointsOnLogin() { bool PlayerWheel::saveDBPlayerSlotPointsOnLogout() const { Database &db = Database::getInstance(); std::ostringstream query; - query << "DELETE FROM `player_wheeldata` WHERE `player_id` = " << m_player.getGUID(); - if (!db.executeQuery(query.str())) { - return false; - } - query.str(std::string()); - DBInsert insertWheelData("INSERT INTO `player_wheeldata` (`player_id`, `slot`) VALUES "); insertWheelData.upsert({ "slot" }); PropWriteStream stream; diff --git a/src/game/game.cpp b/src/game/game.cpp index 9a2aa4c12c0..2414ad7da3b 100644 --- a/src/game/game.cpp +++ b/src/game/game.cpp @@ -2525,7 +2525,7 @@ void Game::internalQuickLootCorpse(Player* player, Container* corpse) { ss << " (automatic looting)"; } ss << "."; - player->sendTextMessage(MESSAGE_LOOT, ss.str()); + player->sendTextMessage(MESSAGE_STATUS, ss.str()); if (shouldNotifyCapacity) { ss.str(std::string()); diff --git a/src/game/movement/position.hpp b/src/game/movement/position.hpp index ad6aa8ca826..2f79453eb39 100644 --- a/src/game/movement/position.hpp +++ b/src/game/movement/position.hpp @@ -62,6 +62,11 @@ struct Position { static int32_t getDiagonalDistance(const Position &p1, const Position &p2) { return std::max(Position::getDistanceX(p1, p2), Position::getDistanceY(p1, p2)); } + static double getEuclideanDistance(const Position &p1, const Position &p2) { + int32_t dx = Position::getDistanceX(p1, p2); + int32_t dy = Position::getDistanceY(p1, p2); + return std::sqrt(dx * dx + dy * dy); + } static Direction getRandomDirection(); From be8f2e8719a96f0218cfeddbf33a5536e9cdf76d Mon Sep 17 00:00:00 2001 From: Luan Santos Date: Mon, 11 Sep 2023 08:06:21 -0700 Subject: [PATCH 07/10] fix: equipping ammo to quiver correctly (#1559) --- src/creatures/players/player.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/creatures/players/player.cpp b/src/creatures/players/player.cpp index 756e256fcba..c1667482c86 100644 --- a/src/creatures/players/player.cpp +++ b/src/creatures/players/player.cpp @@ -3471,8 +3471,10 @@ Cylinder* Player::queryDestination(int32_t &index, const Thing &thing, Item** de *destItem = destThing->getItem(); } - // force quiver/shield any slot right to player cylinder - if (index == CONST_SLOT_RIGHT) { + const Item* item = thing.getItem(); + bool movingAmmoToQuiver = item && *destItem && (*destItem)->isQuiver() && item->isAmmo(); + // force shield any slot right to player cylinder + if (index == CONST_SLOT_RIGHT && !movingAmmoToQuiver) { return this; } From 1bc36670bbdc13118c1f9ec15e9721f5a6f48686 Mon Sep 17 00:00:00 2001 From: Renato Machado Date: Mon, 11 Sep 2023 23:49:05 -0300 Subject: [PATCH 08/10] fix: start server with visual studio solution (#1593) The default behavior when moving an object to another property is for the old property to lose the object reference, but with clang, it seems that this only happens after a while, as if there was a garbage collector. --- src/game/scheduling/task.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/game/scheduling/task.hpp b/src/game/scheduling/task.hpp index 72379a8ec31..1424679e831 100644 --- a/src/game/scheduling/task.hpp +++ b/src/game/scheduling/task.hpp @@ -14,12 +14,12 @@ class Task { // DO NOT allocate this class on the stack Task(std::function &&f, std::string context) : context(std::move(context)), func(std::move(f)) { - assert(!context.empty() && "Context cannot be empty!"); + assert(!this->context.empty() && "Context cannot be empty!"); } Task(std::function &&f, std::string context, uint32_t delay) : delay(delay), context(std::move(context)), func(std::move(f)) { - assert(!context.empty() && "Context cannot be empty!"); + assert(!this->context.empty() && "Context cannot be empty!"); } virtual ~Task() = default; From 4275713ea04e8b9cc01adc3cc74ea925c952bafd Mon Sep 17 00:00:00 2001 From: Eduardo Dantas Date: Tue, 12 Sep 2023 00:21:00 -0300 Subject: [PATCH 09/10] feat: protocol 13.21 (#1523) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New features: • StoreInbox pagination • StoreInbox showing items inside wrap container • StoreInbox (containers) filters. Clients for tests: https://github.com/dudantas/tibia-client/releases/tag/13.21.13839 Assets editor: https://github.com/Arch-Mina/Assets-Editor/pull/7 Thanks, @marcosvf132, for providing bytes. Co-authored-by: Luan Santos --- data-otservbr-global/npc/emael.lua | 2 +- data-otservbr-global/npc/emperor_kruzak.lua | 2 +- data-otservbr-global/npc/hireling.lua | 2 +- data-otservbr-global/npc/king_tibianus.lua | 2 +- data-otservbr-global/npc/queen_eloise.lua | 2 +- data-otservbr-global/npc/walter_jaeger.lua | 2 +- data/events/scripts/player.lua | 11 +- data/items/appearances.dat | Bin 4017429 -> 4040514 bytes data/libs/hireling_lib.lua | 4 +- .../scripts/daily_reward/daily_reward.lua | 2 +- data/modules/scripts/gamestore/init.lua | 9 +- .../eventcallbacks/player/on_rotate_item.lua | 2 +- data/scripts/talkactions/god/goto_house.lua | 28 ++ src/config/config_definitions.hpp | 2 +- src/config/configmanager.cpp | 2 +- src/core.hpp | 2 +- src/creatures/players/player.cpp | 2 +- src/enums/item_attribute.hpp | 1 + src/game/game.cpp | 38 ++- src/game/game.hpp | 2 +- src/items/containers/container.cpp | 92 +++++- src/items/containers/container.hpp | 6 + src/items/functions/item/attribute.hpp | 1 + src/items/functions/item/item_parse.cpp | 1 - src/items/item.cpp | 15 + src/items/items.cpp | 1 + src/items/items.hpp | 1 + src/items/items_definitions.hpp | 126 ++++++++ .../creatures/creature_functions.cpp | 2 +- .../creatures/player/player_functions.cpp | 19 ++ .../creatures/player/player_functions.hpp | 2 + src/protobuf/CMakeLists.txt | 2 +- src/protobuf/appearances.pb.cc | 289 +++++++++++------- src/protobuf/appearances.pb.h | 86 ++++++ src/protobuf/appearances.proto | 2 + src/server/network/protocol/protocolgame.cpp | 97 +++++- src/utils/tools.cpp | 21 +- src/utils/tools.hpp | 1 + 38 files changed, 717 insertions(+), 164 deletions(-) create mode 100644 data/scripts/talkactions/god/goto_house.lua diff --git a/data-otservbr-global/npc/emael.lua b/data-otservbr-global/npc/emael.lua index b2e27b43f77..a7de2721fb2 100644 --- a/data-otservbr-global/npc/emael.lua +++ b/data-otservbr-global/npc/emael.lua @@ -68,7 +68,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:removeMoney(1000000) then npcHandler:say("Ah, I see you killed a lot of dangerous creatures. Here's your podium of vigour!", npc, creature) local inbox = player:getSlotItem(CONST_SLOT_STORE_INBOX) - if inbox and inbox:getEmptySlots() > 0 then + if inbox then local decoKit = inbox:addItem(23398, 1) if decoKit then decoKit:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Unwrap it in your own house to create a <" .. ItemType(38707):getName() .. ">.") diff --git a/data-otservbr-global/npc/emperor_kruzak.lua b/data-otservbr-global/npc/emperor_kruzak.lua index 9aa681d756d..53ce265ffab 100644 --- a/data-otservbr-global/npc/emperor_kruzak.lua +++ b/data-otservbr-global/npc/emperor_kruzak.lua @@ -81,7 +81,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.OutfitQuest.GoldenOutfit) < 1 then if player:getMoney() + player:getBankBalance() >= 500000000 then local inbox = player:getSlotItem(CONST_SLOT_STORE_INBOX) - if inbox and inbox:getEmptySlots() > 0 then + if inbox then local decoKit = inbox:addItem(23398, 1) local decoItemName = ItemType(31510):getName() decoKit:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "You bought this item in the Store.\nUnwrap it in your own house to create a " .. decoItemName .. ".") diff --git a/data-otservbr-global/npc/hireling.lua b/data-otservbr-global/npc/hireling.lua index a22763aad6f..c96c8330e05 100644 --- a/data-otservbr-global/npc/hireling.lua +++ b/data-otservbr-global/npc/hireling.lua @@ -480,7 +480,7 @@ function createHirelingType(HirelingName) if player:getFreeCapacity() < itType:getWeight(1) then npcHandler:say("Sorry, but you don't have enough capacity.", npc, creature) - elseif not inbox or inbox:getEmptySlots() == 0 then + elseif not inbox then player:getPosition():sendMagicEffect(CONST_ME_POFF) npcHandler:say("Sorry, you don't have enough room on your inbox", npc, creature) elseif not player:removeMoneyBank(15000) then diff --git a/data-otservbr-global/npc/king_tibianus.lua b/data-otservbr-global/npc/king_tibianus.lua index ccf5d5cf2b5..a8a24facf67 100644 --- a/data-otservbr-global/npc/king_tibianus.lua +++ b/data-otservbr-global/npc/king_tibianus.lua @@ -86,7 +86,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.OutfitQuest.GoldenOutfit) < 1 then if player:getMoney() + player:getBankBalance() >= 500000000 then local inbox = player:getSlotItem(CONST_SLOT_STORE_INBOX) - if inbox and inbox:getEmptySlots() > 0 then + if inbox then local decoKit = inbox:addItem(23398, 1) local decoItemName = ItemType(31510):getName() decoKit:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Unwrap it in your own house to create a " .. decoItemName .. ".") diff --git a/data-otservbr-global/npc/queen_eloise.lua b/data-otservbr-global/npc/queen_eloise.lua index 6b08660b923..c44617b10dd 100644 --- a/data-otservbr-global/npc/queen_eloise.lua +++ b/data-otservbr-global/npc/queen_eloise.lua @@ -76,7 +76,7 @@ local function creatureSayCallback(npc, creature, type, message) if player:getStorageValue(Storage.OutfitQuest.GoldenOutfit) < 1 then if player:getMoney() + player:getBankBalance() >= 500000000 then local inbox = player:getSlotItem(CONST_SLOT_STORE_INBOX) - if inbox and inbox:getEmptySlots() > 0 then + if inbox then local decoKit = inbox:addItem(23398, 1) local decoItemName = ItemType(31510):getName() decoKit:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "You bought this item in the Store.\nUnwrap it in your own house to create a " .. decoItemName .. ".") diff --git a/data-otservbr-global/npc/walter_jaeger.lua b/data-otservbr-global/npc/walter_jaeger.lua index 5ddd2463376..340aaae1eb6 100644 --- a/data-otservbr-global/npc/walter_jaeger.lua +++ b/data-otservbr-global/npc/walter_jaeger.lua @@ -282,7 +282,7 @@ local function processItemInboxPurchase(player, name, id) end local inbox = player:getSlotItem(CONST_SLOT_STORE_INBOX) - if inbox and inbox:getEmptySlots() > 0 then + if inbox then local decoKit = inbox:addItem(23398, 1) if decoKit then decoKit:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "You bought this item with the Walter Jaeger.\nUnwrap it in your own house to create a <" .. name .. ">.") diff --git a/data/events/scripts/player.lua b/data/events/scripts/player.lua index a93ffe80ea3..10c8c0e76bc 100644 --- a/data/events/scripts/player.lua +++ b/data/events/scripts/player.lua @@ -1,6 +1,3 @@ -CONTAINER_WEIGHT_CHECK = true -- true = enable / false = disable -CONTAINER_WEIGHT_MAX = 1000000 -- 1000000 = 10k = 10000.00 oz - local storeItemID = { -- registered item ids here are not tradable with players -- these items can be set to moveable at items.xml @@ -240,19 +237,13 @@ function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, return false end - -- No move if item count > 20 items + -- No move if tile item count > 20 items local tile = Tile(toPosition) if tile and tile:getItemCount() > 20 then self:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE) return false end - -- No move parcel very heavy - if CONTAINER_WEIGHT_CHECK and ItemType(item:getId()):isContainer() and item:getWeight() > CONTAINER_WEIGHT_MAX then - self:sendCancelMessage("Your cannot move this item too heavy.") - return false - end - -- Players cannot throw items on teleports if blockTeleportTrashing and toPosition.x ~= CONTAINER_POSITION then local thing = Tile(toPosition):getItemByType(ITEM_TYPE_TELEPORT) diff --git a/data/items/appearances.dat b/data/items/appearances.dat index 58614bcd4bf0315a97a878de2e129ff505412f4f..9f0de0ece0e4bec148068da6f1889b9fa91ad272 100644 GIT binary patch delta 847723 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%0D2%&q(l-an}M`O0E7z z_pY~zyaRXP-e1xxuhd@}r(#Oe(^MP2+jR`%7BomHJELR7`1_JhkNYrI;IX?Y=`oe&CFT?eYU#7xt?kcq%n8O%i`FHfw{@ z)%<& z%cz)5mQZWZYoC7n-KRf9zxLxtAAa}ghY^)|Z|ol-0|y#UH=M|do&=L20R*Nz!hCA@ zUlBFM@2lqF69!fiW03J))Ko&I!E~4bGhx;vYSgj?cN#Iapqf{P)=kQP()t)ByVKjFy<@tKJ@v@ejCM$;kaZWXMXxVA< z(=;}KwQ16II(l82RGC3jtY_XcSkMh=OYAcZtDm+pO_t0umRUBX@mINamRb@&n}g@( zH0eLbh?MmR={J>HoSMz^&skHsaSWSd)R!H~SGS#o@kZwmzug<(QrnRxM`knKI_2D% zCY9!JBXM<(5z%EA4YM2ez+Tt~`{4i_ghQrP`Y@<`6{q5Nr^zceW4s(oG}?4Ig5xM0 zgX3@lPQoe30k>(D_JGP)aVq|(x1e!yJjrO+B^O5?0$1UhX_dYXDqqE^_={#`GA7jWm(zBmMXwupZ^A9O4R_!! z+=Kg20uLZ=9tTnw2!miS41u9A42Hu97zv|bG>n-iK`F*;snxJifYeMjn)MoscO1mS zc$feaVG>M+1fZj?22)@vOoQn#17^Z3m<@9v5t6_Lc9`p(TcSMgFxvD=#^C@bq(Ca9 z!8}L@7i2&tWWjt`01IIeEQTep6qdnqSOF_xmAP2IIE{9_R^wO$*{~MY!Ft#L8(|Y{ zhApraw!wDT0XtzA?1nwC7xuw^H~{y5A$-GpKAV=m&-!x;h#P8sW zrTsi3S35ROYNoTx9-k+=%QzHtf~il!Dae^8YcsexGL{(SWX&QYP+DdfVPS5vJdg`{ zkUuZ5RWs?4#RJf;(*w$j9$nR6CS@2=K?UR%!f80;E$p?Rv!u_#dALwIgW>>x>GmV* zx=*GN7IcxUOHc&Gk3!1Hl1vJ{jQ0v$g=^m2X7bN3su>cS#cS>BcyGW>xCOW2&OCW3 z%lJ6tF6n!4A4=fCJbF^RU8RL&E-)&}Jvt+eEaCd#0mM0Z8Vv(s5DbPPPFdTfo_UQu zX1-BBavm4F>EMD4$b>AI4+{!>(aric^q1HLM8~DGBfvly1cPA+425Co>f7=jvSfi# zH*z?R5ik-)!Dtu*V_{sn+*x4!D8(Z}qhwu|de6(ZCBgo3a-mT-d?mA81*>5VWW(A5 znPs5|;LJo0fxQYDxVg_FqgGHnMU96EFfsjKS94U*B)pR$0mPfzOsX$7>IO~0F%_o4 zbaS#jUFw&YfealKIRo!Zm<6+84kSVn*t`q)W8_d8au^JU5ik-)!Dtv`Ht@_P+=EMD4$b_tP>A%$YG;%)a1+Wkn!D3hf zOJNx?UsUZSuP!sftjlq%fR(T+J+M_hwPDv&8+HYGVIlo7FIZ-TC%D;tb}lpA+M0C9 zSkARlcDfiFszk{B=6sCsntX7U zZM+#+fVU7%n?=F6-B^ez%ad6}G{4*a15qh1Qhz>$zv!Rp1*|rT=

bp(hRAP@Q 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∈+&FH_T&^cFU>0*rsBEDEALMwPjv3Z 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�LRQSe1PE;u~-y?Nj zDX}lVLUEf4CF&K@Hy6rNPu8w2+g>5lmO?qHg0Pi(5ai*vM-M7q=#Z~^P~jqnOg8O- z9!95r_T?NdAP(Xo0R$2u2`0cqm;{qy3QUD$DC;j9|EL`4<*ELfWYpn~yDL_|%Ca{k zppxu=)d=gCLjGwm9cI8xm<6+84$OslFdr7cLRbW;P}W~I{!uww%0A>AU;~$k%(!eP(d@y}*%ckY!&)1D6{Wg+y6KsYp zuobq!cGv+sVHfO%J+K${!G0*~FB|`;oRU>$_i4nn+Ez_@A68GEb?V~`30<1Otb$GUfo zDD9Tlazo#{Mt|+LDeCn#{G?eQ;{)xE>6zEZ_(;3!E#MpNp6Q(Op3zskUz+EA;{yq; z8O|rU-sS9j!uymL6{l8Wk-8rkA8JEPG4TUZqD{e?KGAj*%Fw>Xr`pa!x!TwGQQK80 z1Ns?1HQ&vlV-M_weXt)6KssbVCLDxAaJW#spA)tXt6-(nLzB2A3p7R;l-x#3f6w3Dg#z5^{p)?-AiRyXps%y#O0c3tACM+cA3Yo9M zHMkBpApgoI^((?#3^&g>a*j5a2A>ms z3w;~zoRL;P8qMX@=f)tvyEyK_eaij9nCJI^<*2ijB8QyiDFK3h|CVF)2VWW=`$gj& z3d7E-x|=Jj{*}?+Z#do<7;%=BML7OAQBmf8#R^B_8wI1iIbM)ozcxPc8-rskj5D1r zzA--Z8;`>Zwnt@GkeqMmoLIbea6GEdAit|w^cGytl5*b}bNp_woDT(F{i59Yj#@c! zxWH{X7k+OH@blm(grcmHZhZEi#vgvgIBvo%Z)8{L`77NR@B?kWjrR`R&GL5R{2%DC zd+7V{AWL=QY`>^%dJCenRb{$M{RcRBGBZHd7#0!Dfx&Gn4=m(kB} z6yDJ=Ci`IzI=*N6@ANa37)!!981F5st2{HD>RtbtL1D#fgIIIb$-mISb{r0fd$g8+ z_{HN$0P&VF+iy7!%&mZxIVA&e?QhgC4aX{2Z92dE9p@SxYhhiE!+ETU_zp6n{nn#5 zz(#MNITTI|qDGtWZiX#oQ^x(lCfmhVT=JLz~cAhYZms|{fQ9K?GF4nJI@E}MstmC}djs;lWtgL>`bZk?!s`Z)H>JC59%=LoFT_y<#c&gD!ELw$ci~=+bRA{v55Ldy z1Bl|P(GZA+p)d@FLku6F9%XzX6Gj^!g^$275=Oyj7z1Nr9E=C6H~2OAdW;bjZo?4^ zc5px(#6toIBzl8CD%t&h9%~E?Pr^F^Cc-3`3{zk#Btwcf$7k}OD(MQLW^D8vOo zo6YF0F8p1#8SkkJe&`VC8*6m&TeO%HSXjJRQs-4~EE%zeRl7Jr2H3fzwd|B!wHpb> z8osZ(7S_Rf*Z>=06KvinQys<$pDpKj;5EK{Z7JBr;csG`@w2h-97k0+0O^ncnQ#ye z@!jo2npxF1GGCm4hHD0zYyNycG{Is!-G7#xQa za1u^=SJ6kRB^pDG8I&>;X2EQj19M>>%=eal)Mpz_SiFqiI`fi@pN!KKaR$yp7Gy&X zoP+b{B<0t--NiQ5s4j66sQm)USqO_D6&Ax1SPIL|mx&%Tk=k!pwYNy*B;$AE0_Ekx zMYsfca2c+^Rkq_KV|hOufON=!OgIRKyfJS}(oEww_2qL4)ur_;>U@{F-Glq^0HTN< z0?{zk%w?HPoe$$U0!QH(9ETHd5>A_&-HWY_OT?7gYjSm8^nSg z9AukooHb6fdQxIj`aT!c%I2bbXrT>V>?*pd&~N5q$}S+ZXqUdUd2gUEa+ z04KP>4IU^gyI*cu#C}kOw-|21Ew~ML;4a)N8@)Ew7*z6!d%iLiDDN#celemhuq7ZG zhQcry4lyu-&#Nag%wJl<-aHb=C>RZ6U@VM-@nAIrpId7D=@Waw+@&upHGYyS!QAUO z?bo``m+ZI)mQmpeWSIz)U@}aBsgMjw7s~9o+m};e@0abXs0t5U!M;14pcya|X2EQj z19M^Cg_8a9t(C?wV?K@run-nODlCR2u+$8EJgv(hRGyf~1v@2CHB-tbw(# z?oq`8<;*H$h|hW&I=L}7C6qQVP>!r-{Oq{k-C4h1WBevt8q@rxiN-t9f2}cG&OMax ztz*YKPMK;Sxw(#!c7m0hgi~-D&cIp7g6s=w?|WOa*E7CyaGZnlZ~=1RB3yzzGw{#` zc0s;X?=AkTjqHL~NxcTw;RfVG0XV^B=IXPFUC@og1BFlo#c&gD!EH0J*JgIXyR_fC z3l?u?7raOEeRu#-xeO|ZhM_PlSM7p*C2xx{#2Ahv21dY07zLwY42(4cFKneB`A|Lk z;RM4H94i1Qecu2@q!=>yl_^<7Bk&u)KNiYE>!X%gsQ~oW>_dAT=e3Em^9!&jr zvTvjiJq@PA444VCU^dLjEpvFhx04-YF5V@46LcvogXORSRzljfhtb2d`MHdbFp=HH zuf_s0Erdmo3X5S0EQMv>RrHY&dl=2jajbxqkOr$@HLQWPW?=MQM)Sg#c9}51e;+CY=v#G-P;r9A=Q6BZP7e1dhV7+>+f=(ivXIah!mYa0*Vt88{1BW}qX3og*i=e^4_T#3<*b&C#u!0R@!43|HgLpGA^f)_$n8mL_7>T4N!33BHlVCDTfvIM$ zIVY%nGL96O2Gd~%%!FAm+YC%OX+%k%Z+QX0?yZcN7f*5UnMeA3SO5!Q5v0OmSVBIv zBR_GPX?!V;Ww0Dpz)DDiRj}F&>~MzuZy7`X|6?0N<>VPUXdUV6VFPT0O|TiZz*d_2 z*Zq0#S-NT)N!wuu?1Wvg8}`87vRM{q8F3XxaW!Rhk)I5m6&6WX7WuXQrsDsq_P^x& zzO}!VYuU!jn*FGB%;6tEL*wM@9HW;uEKWA%7$1iXkK^es7y%<;6pV&3fWP$ zk&L-vJg1#Ym5dwQbs;th&d1I#l79L47sSbQr5DD@6=fI2Nvi_mB`q~h1}VEZPIh7g zmc;pYZ0dcBPf)d*JfLF>j|h=J@{Nk}jMJ#6Esc}DPUBfE(IzQQqq}yVM@f`jP^3QJ zLGeW;AJ2$&acOo@k*szZ-Lz$K^1wx1Q;Vdl8@<>JN_KM>$&w=3=_YZh=?wSqud-#P z=&`lWJL2q{>f8fgXKrlIkwPf>@$xSBdkAC zCqy!omv>U+74m`(_S{4~WJ~u{qL+Z#!Mf}U?*crKgq)u(ID{=gc%qilEH+P^N zD&iliE4-C@T3cBpU5e?_G_S2C6ND>Cbq`i%l2 zr*YYGI?RBXTn+8c`?b^V8nvHa!$4jO>tH=>fQ_&THp3R!3fo{i?0}uH3wFaE=7?|9 zU4h?7Xx&bgWb8eoe>0qsdto2!hXarf8ITDF;SjL$);(0_=ha?bQ9ixT;9e6a`|lh7 z(Drz3FB$QGUN}r^9&ne-kvKW|z<4U+Fu9MyF*pt<;3S-a({KjP#>MAYK8>GdsU2|y znFZO91Lxp8T!37-2$xj&A9eFsybM?1DqMr>aDz#y<%{~WlHaph1=&*0(xPrY?gDUv z3*6v=!oP&Rtyx<9H=dttDhD*nGup-?3GlJ-5qht+$VWaFo<=i8q7qxYLYKWhmSAmb zkzDYxjF64<`Cso3k6B*Uwin69$1FXy9Ys>TyyabOXOVna-tvxmyk%>73%3OEWE-~R z=Km*sEiKeN^$Dm!zjJshE>^1G~B56^b zKvX=>Ajhi*yPM14iRA)hB&h+>c!$C;7#`18CDw)1mkgCJ2G0l>38UiWaX*Vi0{vLa zXs>7&Fecvn=pC;p^S%vRdRC@}F)CtgyiD=4wA03!**wZQK3FMWxx7cg8XKYcQ(u^sa-e;C`f=h)`K(!W}n)ROU} z#!(m9Qa0fhL!u;G7imzP9Df}N>PG)Y^7Vg6@ZRm8TAix>Er&P3trGq=bdsmmZzP>- zu#Uea^sixQ|94+#eM`9PAXtqN@BRPxP2s)&|H(izCD8Ju78}po3oW6tD6q_UIjbT{ z#!Ha+)wBdZGnY=E2lHV;8C%w`(v>coZu;c=4=c5j-=AnuRi@OWb!z+xEQAE_Rt}L+ zEBmQdizY6@TQdICSS)$3Zns+0Z<4pN;qs@7N+oKFNou?#*Rpi+FBytzIPz?MyxdT} ze;A9w@1|8W{3UFe_e0;mctKtTYGU z`u~vN9e{cW&HY;r65jGpBljv;4Qt}djJ>=N*75JDo#n;a6!q^3U1ULRa;&ACb+8^b z#Fvb{!vB!q9bz5oP}JXYcoTkC2^%S56KsYp^sE|tJL<5Gza=pC!o{!dzbAMH;AMP+@{`OGrL25_M6>Ape$zxMQ35oaL_vdfO3)BicOvpf|>dHoC3wfkKc%9$^x4FrhHhef%!sXM3M0rRpH1U`NX1Piz!dYxmWDXcDf`pqmZ<*Zm4w$CW zlLTq-Nq7xuxu8}J8L8xZpM?8MU*E8rvLS*&WP2!!kiPdQ;l8)dP2{OY)arqGwEU?N zdG~(G09@VJQd<@vwIK=Ww1CggD-msqI+2K>rs$=_umtJVnXr*c3^!9YDiM>Qj^1HX zq{Ij_rCDRdNK<^Q#3)ltRARJOwA03z&Pq*ijx|LWCB`L)b58wm`K5^^kZ*@@%gQo! z^0G*!S0Vf zi6m20ZibkUz!zmW+nQ)Pe^t&&rdX`R5!wo|&=kFuSY(RvN~D@%yAq2{aaV~YrfAce;paE6bohON)RviPDJt!o zhiS)E+6pr*pbcqfAEtFjYH4QLA4;q;#d0N9o8qbxYZ9bfTN-rC+ynZw#ktnI!NSC* z#5yy4rxNQ;abJlIrfAm=vC$M?DY1#c8QVNuX0&5_ZZ=a+s+29JsNNn?I^SgFKzQ(RY~bU$m*0kOkOd0&Z={j8m~({%1u&Rr!Up(D$?&4dn0>@meRO6)bo zOeOZ2;mjoW-W- zsl-iFj8Nj1DK;o^+Z2UL+%fmBrq3bnn%nCmCGMGF6O_1bicBRQn4)4gM3j^qlb%sx zh*wzT$8MI|FGLGJmthzThZqGUx7S2E#9y9186F~Uyl8nj z;eMU+^1$EHR=$1SQoH;F(kIGCC&N3)xl`fwy&>{Nn5BXGX;+I+5pdY_Jstj(ym6Y; zbKNa}%D+yBf2fvTlsQxD>(bywOK{LRia8G#AQvveCE;#%%P&EBEMJBza22k>b#GcP zY59_+x#b3qd?)}XxWEk_D5UOz7s8v>7?Q}_%wQ-CgW-v)^q%THJbbIK9-rHL@?}eH zpO{2{c`Y}*S#vuv4v2$zNC1IENP-D45hlT8Z&?E*@D-Xe1;=V7umBdqB1km@*7vZ~4p@w12`q(WRCuo|JWSqv(ej#ndnvGT z$>Yi2zG?}Q&SQA%*SJ?Lk8AsiWX-D5A5 z%P@ueb<3MtrWro4C*oj{7`@1w+0*ih99YWrr3Sq$A8UtA_l#bax3!V`EgyjxvA^~n?$^c&E%=`lDR$>tk6U8&^<}*^ERPp=@TNtW)-2qB#3n+G?&; zY1EII<-l5M`cXe}9!iwhencEj6w61P&gS-`dyXW^9pyZlC@nw49%J>&9#51B%AQD+ zbY)K_%47YprxK-;vZoW}8)eTV%JKdbwxvIXo%M<~K3VKXt$Zrik;nm-5G|V)Ukj@% zeU->bl%EHX?_8oRQ1*PH$Aw=fs~);U8zMXeT2B| zZAKgIinm$1eE$(YHr%O_gO#Z&f){MB_{h>k^LU+2v^h4Z`mv>n{|PR;o`h3yx=5b? z*z&sn8J5pN7GxL6H08@-`5c^w3q|rk`Epsl2$vwQNIv+)^161F27Y3RR38X9_6Z%0 zE&nO=#N{Gs{i$W1cBM$perow%yILf@{$ZJ;UGv)Z(&{tD;Oo2DKE3~8X({=iSrTNi zlH)$Ne4ynsU3|`zP(bt-T)TF9Z5>(gg{6^pewQ5i!qUocQ4KeEpb(0n7;eI?qLTl8 z4*b#*W8B7Z2kyc>xDO8?s+j*l7fY`{xD_to8%uTR`<3MzBO32e7zV>321dY07*$+S zY_-gW6{W@3mO;j7yklT2jDzuD1slXZDm%)s<8VM6#6toIBtp`oz$)_K8_W07Dl06w zLS!;&DUZ^sOYXN+a2np}Fau`7ESL>*U~aK||D9z+g?TK`FZPp+Y_50w^E=C1GVOb^ zF2%hJmct5I32CqjR+}sO@t>92& zBv}{PX7B%K8K`Y9mW@AJj%z!LCFv(ij@-ROO7y>&!*>X$N|K;E5qw8iNi2i0T;jAxX4orhv>R#pQ#(;CD@Iy=3X0jnbOIw` z6pV&3Tcpb<%jb=brE`}ioPd*X3Qn6=Eh|6il5(!$OR{(rubCP=ieKohMq7gZ-{q|? z`^c+BEtU(TnY4#2mg-~JlF^IhS!_V`;;J2+nE%BuAJRmIWQNs}_%R$_P8Q4jF_y+Y zrUOJ$7~jcUppNWWDNcy~9fc_1yv2XawnO>k{l zIM!18f7ABfaaCMv-}lGaR#5C%Q1%RJ#9or9iHRk}^kS-si81CRIq9aKlaqqIp@0aN zY}jmyy|K3q6&u(P1hHbF*?Sl1@P60cL*jkT{oL>Ke4h9HK!)1zKg$9K1y(^70(E?WqzuFh}QkymFqVi&XPaY@0*b2qvfSmtrN( zu)~J1w^!TM$I<*+Is_-e{h^vuiR2o7THB_r6d`=m&hhtk*a^E}H|*h^r#!#j;taLc zmtmpSp1$dL_d*6_!am^jui8}owX-F1Hq`owcCJKT46`oP&X-6@n01wQp+pwXwJz2! zmdLB&))m^N5~&WiuGB7<$jW)vWtJj6sz)wF)(#f;H$R+m;;B45T^k7`vV@>GH~U4Hi> zU8_WEhE`L;-~6prT2QGJF0f{46G~;(LhA`Fc)I5w=BpP`tvS2p)+3F($sHvYMTz%f zmc2Mi1}&zpOQPg6)7lnO=gCevsN$zMrAGOuI;HOtkNt3ob%6BtX4#G<9QBh*W#ntbDUOxY2vhY(3VF@52y7x zZAFy)r0mKlNmX`Llr(l>lQ=+K*5STR`feAjhBdGj)`1I18I?hWBH0qGZB4uH}2LwLa!9@Bq$(W`aZ5!)Evh_NW=o#U3-m$FV2O z@JVc*yTJFP@j7cCcY*mh3(N$C*djB03VYfNpTV9r!{@N)&F}^6MR$SIwM*>V>uLJS zQS#P$>kD-*$uE7m&+YzccZe{@Xp>~?um>)a;||<~Vz>t-Pzq&G4ws{NIptYqY2}OZ z)MQSe6`W`{aH6b?l4mwpM|7(oQ594}4FuVEodPDpB$y19Q9k`g$f?gd_lndRybXK2 zQ*#;rX`e3q?!uTK;@hcGl0?~jmJCvXEsC9HnMBZw8@E$)))L|kv14+ z!yMCwU_&9y=9w}=-_3LklQvnOckdi?i3zt!?j~MUVQQd$DU8m-OXbHDURjyulq{v^ zmGa&PI-*ooY_|50d7D{eq+1O4nnwW<5NVT=&DK$FE$I0+d1s6D4Y!U$+ia4&#f*r#t2MZFHPWVzg|VwTG9T0%O5p zlfrG**;;;ve7&8n06X|6<~L5;P9X(2mAI!wVTQ#2)S#_Akjh&;jDm)yS~qD?rNTJH zU)rUS0?{vxftsyUKEis2H_>S@Skg zpL%{Gzqew(-gdhvKAOtyVnh{FDyJs%i_clgX-AxEZOG1DbY9N>Je2zANaK!DMqE=z zDX&~YJS3DdMEJc=KPI(rSWn*AZ4K~UNaHPn#jpgH!ZMpW&U*_pk~EaG-8`)86hxnRI5F7=82^;e2;bQ(}|S402aa`)7I+6=q0cemcepZ@o$#={lAl816vQ1 zptlA#68$89f+~8sTgUL6HVwq5OJ{yxmTpbdR+h?`yX1-$*=)7!X`+8&9LRKgw16@wzY@;BZ)*^K^Uo~9+LvaJI> zp~v=fKgsR;$A0S|PiVt_E59Brl{@>bh1znP9M0jOT49s=2e2z`GDz7~Hu+rHB=)(t z^bWG&0Bz&6Nw#wCDUCeHVK>t$Jr8n?Gs`LOD$7h|)0K7EWW8J4DPqH zkV9x@F#A&3V5iuya&u6px{{$%tmVHnDrUA*Iv-|1%yIUX+uCIMVf=HPvR>H`M*hmr z+-JT=l(osT$|l?77iBltq~M6PgQOp!)*IcTueQl1&5jb8Vv{G7-E5N|l-**JMapiq z$+4ppzKy2H#csFBL&~PwWSp|0P6^Frki=qve!Jv*XrY^$!p}SSnAd@FBv7OXVjOK0^3tsVpVz zlS}xRNp7i}J#HQ7a~yrbEfO$!KruM-YN3Xo@XYysuHDyidKL#!YRF#-5e_K z7Fc^VJxe9e!FjkqM>yrHfG#aBB5uKLxC3{I=;yEhAWpqu19`5{8rXCT|5Drv+hBWW z6VJS_n_ly4Asv%_8p%Q{g85*XP{pA)-Ia`S`j%YPm#zrN|O>s_%3R5&ci>NI1 zO!qMOta^Wg2C6QVx6fL;*RLjA#Ss5G1=>~0no`eP6MIPM6;#HpLzq}5MmOGXuTW0q zP!YAxKId>wG@TR7lpiVQB%G6BN|}6H(727*&RM%QQ4SR`rA$pI5_*n)w|5CIVH6Yc z!s*U2$;{FHytQlnsW_*VsrfN{<*V~n|N7H#Of8eJ^PD}Vmx-f<%IBY_@-xaj^BXt1 zfSBnPt>nQAoLUdq`}Iivbk(=WskANl|62g zOl42lq(a$~HtBJREtSV8N!fgxOjEYNChL?fw8_xRJi4g3L`{lp()=>cQ*LKZ?X+9B zl_{5rJi`)H|j|+gp_%9ureh=P0{5#BFq#cm6&Ua-;@Y1^Xx;5*{ig9Woqx@I5wR%${A_yCOvK- z#1wBUF~3ZLcD8RNlaz=mljs}dwUtT89kr2fPV$GO^yo+RNkxWn;}fVfIZD zIm|s_qY`nZIHyE>nN+Cc31mM*nUCMXnP{&6XG$z^uRmAy<~pS+=OR;FQ)00x+TBJh zF~!qLEH&5io7+@>nS0eauvE-)GiHy9Sz)g79VJ$p!pbUYtIYL(L5ZX?`RERHb-LHT zyXGpB6s1?2D^zudg4dX$+g-%kGX59Jk^1^wvad5&ae|6jUnX*wyvb#}F3NfzSI!MA zTFn()znB*RHkvEaub7xkrg&e8lrm5EF|C;HV>3tJmNH2!ru*1Jc(b{dmsHBF=32JA z$ML_7*zJ&NuHZAu>2atCPoMHHFR}c=Scf2M{}7*_n_@^?;PE=-R_;nS5B2s**&IcQi@17oAD7P_L|~jB{EDArbMPG zwkWaB6ql69GDYh$M7FsdhSJp9eseo~rDAf*WKtR1;edNPbk`1=4Sh>R9x_G8a>QX% zJg3AFQ~apJQL~jD<&>Ulwttq2IcCO`sF>qs6L+dWoG`^JN}M$JvVSR&S0>>V)F_{V zlr1QeE6Ns{2UM?03g!+vN1Ly_qr|B)`KFQ-r_EJ%Dd!ney8rl$|AgV&dHuWDdHuaQ*v3v zN4Uz$B0@0bo~DX8Kum48ig1Owvfb(+DoydG5>=*{phUGPRw_|risOhnL2_$GKpUy2 z5pl~Vei{o)V@li{y_JmCbYJZ@-M*$jqTR8{Dit}QTux{@moMc~*Mgl?F1?kVTrRij zGu!ev7BY!brdf18V{ys`Wv6%|BkK|u<&@{@>VEQIT^4C`i$2f_+#Sj{G&rN35~J*0n`9}=M7q_=PA``}_4Qs_j8n$cM;F^9 zMA`IE*{w26|W7`a?j^_Vdbl z9tn{kFdw48#*!QAi!{4aavRcOdqc(22pj8^KFVf<%4lUBG?KEJp|VEVIHwdU%M`!f zUV1Ni^Q}%@dj!sm<_Q%9!)%xXArJ~-Fc-q3efkI0k&)3fYus}K2aEIUWBsJLx8CK0 zc|=D*BnZrhD6l~^#DE=Q!2xj)4+)S63t%BEg2k`|mclYv9?ipsrOl$$S7r_5;l?zK z?fp*Aw%JPDHrNiSkOn*cOWM&*^v>G6XqnJNXF929Ny0YWNwQtA8}^Xg)v8WEdF3T* zJ<)yij!n~X?}ZG={P*YvGQ)?RVqdhx`{@0&tY|r`Y<9FXXsRVu>zPpqK0cQ!HgY$3!F2W_a3|HW4w7k+ne^$P3skfEZE%del*YIA4 z8*meD!ELw$ccIvw(Xm8cTWhvn>4EKZZX|$AX9zyuH76&#z8zJKq9Ej3$P1e5iI_1 zG8=95u5T`(x=UdhEQb}a5>`PHIKc(0VGXQ>b+8_iVFPT0O^^bcolW{rmgY;FO_A{( z9&aGs+UlKsmr#SHund;N3RoHAd47;SLidq{ZFOJYRd|!Y2`*R-Yuu?uKeLwbI#>_M zumLv0CP;zJum!flHrNiSkOn(oC+wo}xkCO?ZqCu_%k_2~+gqH{p*;s+bh*6NUhkpB zl*=E=+RLT+aj#agy*)>5tSPQ4;VAb^|K8pY5ogAXP-1tCjPaw)JuwoDZ4pmjn*fQh z02Y=@YzMusl>6y{ygtDLN6F*pt< z;3VWhJ`_M96u~Jt4QJpioD1cXKmAup>8SS^vDL}#0N4(xkOn(oC+vdVum{p%FJwR_ z?1L=GhW$KF^Ve5)J0Hs2cW@Cd!DYAtSK%65hZ~_y`oAElkMw>-#_s9Kj4h{`b#|0h z@6#>E$-xB&;Sd~#BXAUQ;TRleXZnxanoc9%WTkXA+zF?AqU#T8w?ZXa+4LC6AztPu zb!sdP4JHTOuR;R|X_+zduE7b+S?-zWbCJPTbCs)cT^l)K=qvsCe?_F4rb54ou!V=CqB~978p>kc>;!tLAz+Q052xTuir9U87yXyg7J8)L?(P zJk=9t4%JdOqoyk70aL72;-D!ClsHuGxteU)iwYlRNk`x)Ttk*HZ$Kgb|G~3?Z zR|bCFrG+dawbx0!d5~{b_=Iv6;3$Nma?gFNX1!U+DR+gr;i$xEdbHkD@QhjOdCGaV zT$U;4IkRq8amtu!0nKDvm$nV1Z6DHHFyo#=$YvGSG=!&bU-zL&E)l1u>s_J}UN%LM z5?4&owlCtUDPC3Lnkl9um%GGVO)V57q%8Gt$(h_{7P*yGl{q*kM<%BDsvYhuMS~hAa4{#%~eifc- zj^+OPL-lJ22UWV&Qg_gaGv9TfIiIY0^y5rDMs23)O&heqMyDDSDfTG>Gw52lWHVx;q6 zUUaywQjHr-$6FjDu6DHD>cONQvk&*ib^-0>GEyrs;{qNdE?dQ2s%Ny9cad5dZLYS{ zTopGYt2Qn}$)B>=X|%^ll^5+P{ZWLhQtt1RyUNVGOo_wMo{~K`?J{gQ8D_YxF7t=e)-&zm9Ip4*X1T4uXitzb*e)+V!2`C3o*>0+x9G3Uv3uqa zj#bVOy9{}X%Z_Z7Jk%~{pI|G6+2u>+?EWOqxh&;LoZ)7{!OA($6x)@EFvVSjCDQIA zbv|$9Cl5SD@!~F?nIzpM_SB-x#jSpdd^WqJKSjyWcDeVIx}dj9m#49IyS#ywzJoh^ zF>Qn1MRV9?_0yz`vr7@SO}w4)IwZmZSO|+)@X*hi_|?8P;VtimyiRWvFy`2D{QO&nvsiF8@%rDpVFdqxb7m&Cyx|L19eh z1hra)mG9rQe0xy;yXTiCKR&B>?K6=ilVCDTfm*G?%J*;Dll{Tx^xl20I~gFtO}GWO z;SSt|Vz>t-Pzq(vCZ3$Hwr|par*14biS>7a3s%D#SPSc5JtV^h*a(|wCwINKJkNrs zQmtt)9cI8xm<7Qw8|FX=ghE)Dx#005`H9Pn7g+FI+~F_}A|Mh3=0g^8f+r|fpS%v3hjE*q4c zUf~(O)_+;|walpChkXC&=_ilA%m{a;8TGr0npGRMT15q$QTJ5T?AoaAuMjoIjQaW& zqC#q;D6p}t!lnNIwfhzJ=+Fu&enmfMSvtLmWW1{Pk)}2V4RuE9pKBq9^;z&MmGZ55nED)f>q1OKM|ZKx*??lQ;B-wTKD{JJQlB$!}2oBPp`~4Sl#4Ss^Xn z)Q4(PA+NuwKd!|elDTi{&-`z_I{)}v`V;1Z{=Vw^Va;0%aPQrcb8qQSYV#|k``h{( zT2zGuy{*5g*(xOWZT(fP;DluT*rvTaIZFSV7F{7rN9lvLmdzfbgL zGU6SE-=Uj0FP1d&YbC+&=mX`tl9})5FUZ&wLjLdS!?gGc8T&5Pn2{(8-evJ+iE}7b4SP5SW)1Q2ll`OF(CH}mdD-$F zYHzI?s8mL+`U2G;lf3)zY*l#^@o42vCS+r*lu+ThLtgbBjh|Q{E#JqvphAW!Tj7*1 z-e-T!vP%?N#*XV;S32$J)J3ko&z;@5GQ6i(tH@(@nn=JH$~e>2z6soQ?zCH9Xx z_2v1oRAYlMMFNWtsgSv2^+8g!m-dhNkh5v|Sp9KhQ3ao5z!F#r%V0UIfRz z(z?iRAL_qoId*yFBfYb99H+NxaKP>}s4v6TVefHPd3_v9I%r0RsOUrYNAFV6ht23Z z9}#`z{^)@p5q;DhJ*YwM{V_{b%&H1W{YZaWORA8Df74%<4*OYyF@Mv)(Oea>|8M$q z^#u5xkGV+B$WcGe2=s3u@gK8+8XrI&`B>-weFw$ZAOdz<^vC?a%N~P_ux;5y^sN!wQ1rGKUO!n$9R32)^Z>I zEXaoakW-sx>b(cL$^LKkM#)cqujgrU`!Kg)sA&)3qo4XxRQ5opKcm-Z^3*@|ZrU-s zeDhCzpmy9YOa7@Zk-lHC55MsXch67SrScbjftF{Ngn#J^WWbM|n@Pp5`tNf1SG`T- z&!oHYs~)En@|O8;lyI~{GJezdYPl5>@w>iFJ60iY{h_Byiz5Mi4^%)!3o1Nw%zYT7 zuam<^0@~I;i}!4WJTyT+qn)deb`$Ab&R59ziTX=grBk*|m*-R95dMZ2W)e0$}N|i1%Vwy&xD|UIyw9}?h(6tKLHjVh}6>@nR=bsxi!E}#( zb~+VxgvsyIsYqOyET2yP_%O*cZIc<~ziOAKXApnQF5k@{zS=2?rai3UuQP;VA2(vnI2Ih>!OSdrsB8kk`zoeL^*G} z1rxn7dJLxaHBM6p})_XP3rv@R!)-ajd0; zzT8;e$SQN@Q0~17Su}@ME~!wTQuNYFD?G2lw+SH<(I4E8d|C85gR5sLeknyF>|J(P~zYP07xUb%PuHI1+-mTM8+IThW zDdSpp87eF0G9D=KtJhG{=W+!hyQOlj{+Je)Baentv)ZdYe(e%Y!oRNZGQwF;r%g_W zb2MR_&7=1(<8omh>xE@U@RRU)Y`${$F5)LUm8ji$Zpb43iJ%>m#%v zmn>CwL73c9c7jVDiNa2el?lpDi zB4)r$nB@-3foQ$I1V!sZTLj~n4RavG9afRwwg@F026G`C=Ecg*7&1+b(MPq2z!3=o z^C8L|IkUBma5ThtZ2t$;UvIVaFvvS_A+AMGS&`f` zQEyvEi!GKB3%HrPxKe@^FhpHaDMuIR)3l|P^1(v=9|5-`xV;84~ z^8j&v)V!JWSfsc6AF9^1j@TCKZM0>TvSzV<+jn0sZ-YZN?1vmUkQ=VIWl;5L^X8Gu zbZ;Kd>aBba5^)F)!x1}p>o2Og7N1=~ z=ZXDsh2H!Bp9fG4<*Su+xoayWW~DwxTURNSEA`RZ`bv3cl|D*Kt`wgn?wssh#Z|@z zw-}{utdzee>F;WrDrIMq{*IPXDORWcp0>GCep7Z!r8q~nHKfwXHP6;c8S2u~zsLZm;y5sr1zhsJGK5?vvOnC@qy8WFN0f{H{b=r9`f#_uo;e zPJT@BR;kW=?WEos&SSf3^Yvdt(p_eee^+9+J3Sv3l1|%WX44xA z)2XkHRRfkb@@g_E*Tkw(i=RwTVr{G%y7hkFhM0mS=<>rx@@z8mB&wJcGtXfqHk*0s zZSn|rtsYk*qf%bq#0JQ$RD(F)qpnorH@9Wz<}c-&*ju)qV({KJMeiilDl~Z$H}>92 zA@_cF>UJ{46z(h=Q#fRED&=5`K3_XfDPL~ZCu;{Q<@RQ-V75@lEu03iUu|X0Q@2pe z)>w&E;t3>7#9TC$BvXwwALhWvZFde;X+g?$TdTBF!v4 zNQv6gmv3VSUBsP~NA13boFmGu#)ta0l~&s+Z*iFP+^+Wtf3=I3L@xDhDnD!|`_eEq zEh*nsm?DiNYVOiI+i5fAG7U(jEyLY&mkv;NN~$M*eX1w^Tq>8bg(swWnx3Hs-uY?l ze}^ii)eil-cDPdN?$r0nwo5efk)3*qcC<2i?k;^$9WA#~_U+a`mu6!-HI#$9+4bJs zqYtx8;*xd$#~pOpu!j|xtkfR;p@^KO4dubTH0T5A`jEfWv~+#=U+PM_KCD)~uie-! zbN6x!0J~FJ#)9|u(pgP%Nv90fVX{l!Fzu8Kb@@^$TQj)$SiVzcWb)9?ed8uIQ~y>w zQ7I4Y)4NGu3swDipWfAyS9@qK+(*Oaxera|Mm1+<^vS}Bcp%GD><3x;#M%*mX%=n1 z!#rZTWg~W)N6fpX;D~wTfAi&uU)6p0=k_ylbKiHLuwU=`Km29bCEw&wv0bq;Er**d zyJKZ%4%=>7n0iyJyS67*Ivl_*50hsP@RWFpOMW}RejT!2)*aAi_gv6 zh7GV0HbDw(hAkN~{-9o>USj_2kRGCCoRE=!@a1re!}LF?Niy>=J5O4YY*cnfl3Y}l zx4_yQ!N%|uR$05#^EO)W5o#SD&IAbzS>wXxn6k$fOXH*TTWLq->Mrk&^7c`V>X11N zyyWMj`q%&EmS1COn#+lA#~}uRunTs>9!NhV-)?9&ME;qp_xPXB+U3Xo*XQ*oj_X6} z1mrWOD1bsJf>UrB&cInXS1B*#bF1Oz34P5ID)D)^02kpBT!t%f6|TW`xB)le7TktA zpnP{Llh2*hpQ;mZ7f}rNpae>x49cMbDl3y&s#fO-l~9$aN>)oyOHxZzOIEc|wNbUI zf@-LNpeo+;2j$DJOb#i~pQxjy$I78XZgA|4l{Q8C^IAr%d{l(ajFrVj+?(1LE4Pan z)@H@Zqo?$jwd`1#c}jmq+fTkz`YT#ataLt2{DD~cQrUyCvi3Cbhhn8l*~76i;tc2V zBe60|*`u+Nqik-hv_6ZS>XLVrT@fY@WmksD*|X%E=8|6LuoJ7~r*quenN%fPlsy(J zb6N?!W#e{b{!|$icOOL*Bfkztd*gNk*hF z!?a2hmh6wTr`1f{4frO2elEOOC#yAZ7L6Yav+uLh2+x6#Dlz)C>Mt>uc>o!TBMjzN z$>z)Y5btop^B|(iOAZVQY%T4t@DMl>kHGvY&&%{GSTMSEJDJ+BKumV=XDo6q+D4zl}zQ? zjwe;+JdCH_4bDkvN=+h1Ka{qkN@7!Z7vX&+cAD!vLy28g((g6DHnRQ(Z)WT^V@|1< zJ!Wfo-=w9}S-{>Z^|YeB%<12wzC5G68F(}A_fAsYeR#9(_ij_(Y`pvL_f{xx4&DRz zdk5aadl2uT`@P>Q?_s=0?)N4s?@_$D_j|7>?=if`@Ar1SjrRoJllOZ+!t0xdHy;Y1 z5Q^Ybm4w{Zhxnc*dQ5#-rP{MQ@3_mVPsK6Kblg#n={RPXj!wlmX5yG-I$l?fU>vin zJx{1Ylw%H#5Yv&V9HBVEOh-oo3UYDPs+H;n;0DT9)J3 zgCpH^JgFReab%c|@0BAH$3C-Bl9VG0N4Dv>q8$5i$^qMYsf)@84SAS5d+hyjS5GT!$NQ)7)BXRDxSLZo?h83&n8H+*)@?;8TL5 z6w08yTG~{zwJHc#LX{hN2Veba!Zphts^K`RQCp1fkE-=n^(W$(RO30w8q~0= zlW|Nj9RrnPDvoKU<5T6Bj$?-D5FD17HGJ#2xl<=Oq*O2}9u?8l@U_fAG~a@F!QfCM zV_1#*V2qfCo{J7Q^$zqrbcCsE(2;2IXc=4w$9x=7rsHSju;GX{9cz>$28Z2r+`!=* zi^BnN5Dy8ESi_ea#t`2HgcrghSPV;GX^nhCT$^Qtm%|EJ39BGUtxQwi;L6n~*@?#m zt6>eSg>^Mzu^8Qb))P*K4Y09B23w4Wd^QnIfz7a`Mt)Pit%SG1c1W#}ZOWHMcn9o+ zT{LrDNT1H%DUg?a@IQ4 z+g#U_m_c&&HdmJhh?x%0+gz_JG0Pzbn(%7Z1SNtUQlmtY60;rB%LkE<@R{!7O$e9? zvs_Zsz0p->DIMt$ ze{ZyytvS`3O!Ljw+^R&B*_wB~S)k2q%?BG36K%HQ7fQr9WI|(F(e7@|06D3g2%2=T z+o@Xf%_cZw&DNZ)gu`sj6eZ%^t=UtHcQ<5DEy3M}J$+`=Y;zz4Lfy^xm?Zkpu4`z! zwXhD>yW7xT&Jdv`x*O78+B8M%ceiF=ZGqX4f8ew%tZm3O9M{?+v(4_P^ot$Rs2Odt z#B_ew4ChjZOjpiicS8osE#+M1kOs|hhPhjl8_mseE_cXOL5;w9x=X||Qo0lz}vDzVf+Zeh$*pfVJ9P(UC;~{OWL;g@Ur$*Mb zWWQNwwq~7HBwFuoO<(ENitKY;@^mYM`!c*8qinK65?dKPwGAXvHk@Wv{*7VMyS1_o zdA~LOO%9pmwqdeS*?BIxplpgmTKi%*yYurEpDzp9;$A%O*tnP6R+4?GMubbURLYbv zsZe&CxmM4#A;)&Nct|@?BN1&_fmHWeKBT3w2ee_ucDPs6UtVuZ;+<^2XS(Pz3t`#C z_PbTn#wt5h)NY5IY-{w^HiwCKJM2L^sdh#W?NE*UUD?BwkG1R}S4>0ha-D5Q)goQ; zZ8iVtZr`3F(jC&jJz0;`$hh{@a|;jS+S3wS!(^MX+rs3!vU?rU(T^Q{dzifGNBYz- znc{~(!y#*x&1B^Rcnz^$2lleGuqF{7wzbOO4lH4xLxy+aZN;yM(T>*0x1H!8qLmPr zxH^z`KKqffQ7&oP5u0VM@tBURadzz*N20X-4q4Ta#oJs`plogpQ+TkZ$5?Y^kF(~= z<~St6pXx@l8T?5XuHZa}octvWP>qi&%rw4m%{%N|qgLIjsC@bZ#j9 zbfb%QvPMSf6rNWjQ?QmJwat21XKn0evw9g6a?~LK28HC;$ZH18x-(3I43=9^BS{8D z>~c42J1I8End@%b0O=Kg*c~QM29R@4n0y~Vj$;lxtq0}_;yB|G*|q^&a8M|?TSxEY5DH9Z7=Ipx_Ea3 zx0mxu6xB#&XQPLF-G!#;(}kuuT_bOGVLb}m?HnKryO1ow-PrBrh!Tk|xzdHI6gv1; z!02T;!)f={Kk8WJvjVOL`M2YSBH4Lx}&CM)WWS^xlPgH|&9Q(<;3eG9VN7fhW5ROVP$kbPuDA zjPFS^#om?aJ&ng&USb$<8Lq%pxTeN1>Mawkm(jDubv%k2a1(CT$gp0@miy4LEfHc zOY(uOVe81g?5xvS*nwV#pFGspXk(dydbzK$$}*EcO<&`E%PayP^dk^VU|T=qgN|2D zHVV9YA4*>Xx0S+0bsmtR*ILw*q|rt*`KdpRp8qsEctn3=mV}NVG~ywHznMR1d}|4z z%+(JX!In@0!yhtc|DP59z{3>2Y-RJI%tPI#mn?nQ2-NZxN>PN-N$x$YHguZ!3@`>+ z!YKZ^0Y;cRkUzlarcIBNh69a=|eTTIbTl z;V{p%|E9zD_y0h?8pMLib7jgPqnEt@3hTFNkP#}uD)ibT#$=1I@Z*md5tjJ`zJ1hK zVwoA|Bdf+X?v7gGJ4}`; z8y+XQ$}V+Dy&*JL$Q(6eyH)F zCUG(qYl&hdHxH#}vJtpC)OgquO`!8IJTU~`7)GPpgTz(SBS2OTV^v~JaZU+`DLM{E z#JPnouMg)iXln1=qd{OIJM#k8{Rv}~+}!?9ebL|MpFVY;FuL_$NYo-&3`<}sEQ95+ z0#?E*NCGFg+{FZIRk!5Y69&)xU+>(u!6G&^$V*QdJtX2ugMV}4SprL887zktf1y&Q zOY=9#yBaSj&p`R&X=AQsO^|ow2xE_BE#7Yrc?ZbV5p2oyH9YvrXcr(|pW%pGN8Ipd zj2Jml?A=%{J)@d9Pue`oxoXZadFEN;Da(42%z4(BU`Zy>;yGibWdnh<=Zra)jRanQ z-iWenB5>n*BhivVfD1~Ff>G>%PrPV|Wecvn7meTK#dmOh_>%Dt%QoeD$#~DQoxtFi zjnS4=0h8&Cm5Lj+=8H%3_w6DWDz_*pBPFXP`}4?LYA3*TUWGoRi0 zOT`N~nzLuSn zz4*Hu9m9(u{K@S5(MF(UZ?u;*JKe=k#`ibs%eK)Rw|rav;gQBxxu-zPlJ6+j^r!6`TmXW%THgY!Y&{h#0k0_pd=)lY8rY~5Lgjy39u z^?jpH&kH2D2$$e8T!E`_4X(otxcT1}&`8qWH+uA3&V|zoSP82j37p`9)vyNEx|;lZ z4MvSI2K2l|;kV%q+=XJe2PIGnWl;X#F1$hH2Q*`+Z##Fb=PCJCrw&6U}={(&*D z=adPY5n&okhZ!&vWA*yGChAc7jxsepCP&X!tMEe z+DQtLeRj~l?Sx&h8}>jt?1c=-gnf_&*%b6&%J7x(9~`Wb-FR7wP^9d+K(VJn@M!ShlaH&J#W{9???W(Sx;vapEF*q@=tG|x zPg>##{PL+W#1c;+KFHkiIU|NSX>#FnqqoJzu-)~VZpb5FQ0rAJ|FtiSmn}&I62GAOP6C&{F!C)f z0u$mo_p@vzF!Glk@3}j!qKScZW!zWBx7y_zIr0@9(Ke!+d~N*8vYkNlZ`rzzuW8Gj zE*bnS1Fjq;4#mlrO4RwrBkbR@fd_s=1>*RH=d0gv);=63zkb7hawJYxnzrB@F2eSd z@R*{3pY$8g%ItE3y_g?ghIo%N*cy zoL%7roP<1fv~Rhqlux(-3ZaOB(sx``pNf<3mEGf##otl8({Xa>J4P*M;$-}ze9qhF zdsgIZoE+#9&{;nFo~oUTlL_CG;(VM$|G@2tBg%QfOy2Sbl3z5Fzw`q!m)yy9nWADY zyYoEcbA=jQg==mr-+tb$yEx-p_{i9jMn2N%N6%uu{E2Je*AYI~Np}Noy6vCo>r3C9 zwryqGj}%RHj{Io!_P#}u+i-{D!1Y^Q4#D$v{AJirtQ%FK$ll&}i7tkFwMlZ$@vqFJ z9~s|X`^i&F%g>y!Yun(RpK*HH-~owHqIPu;C{eq*-v8kIls3UTxywI{e`uB+gyMcN z{;64Z66)}q@q=dBMJW6a<3~-Ez#;XBxDps@WU~K*jGJg=_SuKXf^66iIdA|D!XY>e zN8qT(O7oT--cDXKiADCw#dQph!wEPEd5{kUPzXhE%46MGg{&=;cTP3_uF1s(oqJlY zs9j5yxq1d=Y9(>fGnhTGG*05e*|UELW|hn0WM(kCB{n6PeYZSL?x;i+aiY)0U&$yE z+q5#yXV7ErOO(3J8n%5*!oF$SQW9pfd8^`N(`<57$H@hiqb5$;&hgmi=CFfbqZY$M zIL0F9aI54xN{`}5-!X?n=?3c7eAMk)H9L}tR0BhZGxG)hm1UxG|Cz;AtK3;GD0P!w zKGgWka?5R7%Y;ydEVoT@J=AzzjVYfDGsb8)F3W+x_vt9x!`RYysKtpeBhzx1z>>Mf zUM(nIz7J=eCd8|z;+OyNa=^6OJX&c|ygWLO_{s6|={(}6#LIls?p5(IB6T9v6+@;B zj8Nwm1}mo`jLs4gK^w%@stlzZ9yQ1k=LrPJkVw|0n7X*v?1%f*gKjr1)>ckNlJ_2o zXicVE5>yGw5Joa8uRGD-l>5&_;kAjDkw{CvA&152Zz&~lqxr@^-7V{0Vgg&FcKKF0 zF`qKbR_|H6F?!Z+o>uZv6!Cv9ajsH-E-_UpRjp%DEHNfh4!rB_Cmn6<2X z^B2v5qrIEUzmz*RQo?Oq2J#-yRvSkyZ;oBJ8P99Wugl2coqXlhXk&+#?vmCqH2+?g z_&w5&PcLG~IhAb|!?wUKh+!K{iusqOPn%=`z+DMLHm{0W_rp& zx=b_Ek4nrjGc7WOJ5!#@R6(X<2bTer1jfg)QK|@BjWb-9Y65Zb+yJN{FfzdilxB76 z)RiX^xde+$pwt6l@@*oA^&V5?Cs6gEiSER$q48qe3UOeABsg~syQz&!b4k0?>fGIE)ronWW0W)D11W)wt z|CS6dY&t@ky~>mrIqe(PmBxz==O43)odY2d3Slr8!eJgnKqLsvhbXW?G{k@%V!;7% z5Dy8E2n%2#EP}fp;mY_UFM>(sEXC*0*Me0e$ z2q{n@-w!(S*?p4npft%xrX-Pz-i{dvj89Z|$J7JHr>d)yB0T&qmqahSjG5Y%TXMo> zbhqqf5e-%wBP|&O4y@+(%y+A~%FOhrpQJ-;=4?8;+GrskuHnist2Wi~HQZs!u2rwD zHOAFneWOv}nj3QKp?dyubS=l`-9s`wgSHyFj)Q7aqgO#{>N+$f`rOWs0jduUveCshZ*=Vn=+9RWrxxI01 zl{8=1$&fY491Ki(vsXC}hed8+>+Ey!f-*KFUWzt$vC8rd)HL)j(Ok5Ru3M0yrqqath@x0{#0sqa$^HS7?jW>R?@wB|$ zme3YLmcvBW+rqAVgun{~G)KIIZeer9(J?9;&!V;(&u9tp^6ggRslkaXZUHQWMX(r_ zz*1NS%V7nqgjJ9PPH<7h;w_!^x`CSrxqlYtb3tz)YquFs$egX6{VaiL@oEl&QS#+> zcD(ytUu!$!rFp8+%YP>&?SkE~2hvTe^e%VyN5wsbK};$=*!^XUlHqCWUPo24s2%&; zG~)wHZmqhk)UjIi(GFvr<#??s++lnuFShT}SWc`qeB|Ao#)p=ZwUI}Z%Bxkc?n33) zs!XK{YSoC{sKQ#6s#H;}dTbBsRIN%@>U6E@pN=|%a`!ZA(&b+*Yn3&~m@=t~TMGe6yd^Ja*)aPVHpPevU1VXd^}YIjj&# zGdk(gHpde~^49XCDcpI!`%APDN6vkDa#hUgt8y)eMPPdu`?r&R2Ru$h8yRze00n4Y4#-(Y`%1yO4o{?5td-m%{gv#^~t7Q`ymGosE(oA zaH)HO%f|mM;+!$>>J*H>HxY=R^4vbTU^7F%AxZRjUH=+e>>D3c`UM(;C4%`P_Wmc$~Xx8DN13tCSs0w=gUss8D=8nFh}!a7(F$*`fem@%h~-o{b3RxTWa z<8T5_LLTJD`}BWIhQB+o4IOe*-zDQK?RvZnzRdmdgj_N9H|Ze3m)UU^ znPR&Vtc*M6t`dt)5qJf$z!dK(vBVUiN-Q+RP9>JQ1s^$G;TXITFU_tR{j{6${QaHf z-ilY#!18YSRfcZ2~WX8h_&pc))TMMVHL;AS`~3GUM{JK z3?i)8xpXUumshS6Q5x@=HhbZ9mRV+sJSEEG<@R-kU={Jw?FP0oUdAe06)&Rf372Hw zpoAk~V!4T}j+a5oo^;7q%GNOCQZ^_-a+RHsAdPQfCnm^nWhW)bPs&bCkmbrwNsyvj zlsh#++T6zGx#Z>B_>YFkBxR>1$cEcow&(J;0@jkrs&u)-_4_^o?-0B&!qNyB?2$P1Ill?_gi@06XLAd8iqlOTD@h9pSy5-hhNMwHOGgeJ(( zCEV=|OOVyd&P|YOCG=k53DUh3J1;>#EhT+Kg2X5rnIH$0l?16@hMk`vgRwqQ35-o4 z8e$UU*D_;}kDYKVI3O-TTu<_|uDmj%qZXea6=gI@LW1-w=aMrq!AJDbepZ=LPTMR< zP`{XZNL$Fd=X7K$LFHVOAWbT`jkh>K9#M8lf_$v((gX=pHa|?ZC|eLFmy}(WAgwFu zm6s>TOUkZDkSWTpOpqG zX8UHbS;tm$%Rk!_@ROC*oR0R_szRl5YE|i8<$rC<*ARoeq<3 zb+Bi`WON7hUp^Mv6-=2~qZ3n4~Cs zK1?nsyDmXmTCf+wWT>+16XXkJlW8zzHzddoWj7|s4P`eah+kdoWtTjoY)XQBuk7Xo zabTO~(y1MT<8Weg??Fw@_j%7f-}&R&@B4dKnKiSgu9;b5 zt0SGB(kqMhlwPCqV=4aoAEg?VRdxlzzZaXRicyh@+Ebapqe@S!R8>ZmwI*GfT1i?u z>uzNakaCcv(aTwHQT7nxFbCrcj5(3yta~~a5hxxZRVOxflYP#54d){Sj*gHE;^!tV zW%U}iW0dtN%OX9F(_J|yaDG$HNt`qs?bHbAcdC(_oS=Yq+7i{uACn5=qKfs@}yj{QiiLP%XY!* zkL7hY+ZCF!wLERQigOP~yEa0STsTB^aA78{6YaI3c1`&bCE+2Q8T1-blaMR7b;NnKsZG|Kh>y;e2>)bT4|G2TD?fp-Z@|2 zRn}JE!T#YJ&FYQ(m$Q>t0V|;Z9@l@5%b=#dU8HZt|4Gr#9$p>f>VL23sV$7L`w-cB zw_*nguB5wnTt)L%!x~r%>!1+U!v;`kN~<)bm9JvTCnlYvYuA!{%PZCt7gycwf2X>p zb!$|S(f_;EIak)*J8Y!Un_x3+fvvC&w!@Bpq5mF#?32mOhE=N~jKkq?!Q`H`s_Aa7hbd45 z#c+gE5f475mo%uZt5m42yH!3)^cWn66RbeP)N|h5NzqPDaXjZ8QJsc;bd-kK2lCv6 z)J|Jz6>E^T>0w%Tq;@)57KJkaXqXabIpEgNJ8I{0vK6J^nTIHm>KH;03q{ zm!?QTieD$0UQ@5(dYQl#xC+-;MrwG?%Oq&mInJvwIvcnlZdfV(l(;!X)~EXEGERw- zDKgVdXRIMQxzqf-rK~%_GjvC%`FTn^cXm{_m`|t86%F|XrQMn$mz((Nl7rwxnf5Vm zXk9t~Q2t!dv@V05GpCbJn-%3{4-Rs7sp9a$8nq?LL$Bp>kEY&-2lmBl$gBeH9$uh? zHZ;Z2X1`j9VRqpyAJk&9!&4lu5=>AjBkU;*%W35(Ut4#3YGeveZ`UU0 zD67IqB}QA>SE}qGWDk8Td(}F$c)Pb_`pHUS zPEk_zyvaxt%8z#VE$iaPIPwfqeyk&&q5QE9zZn0iIO>Xbtr8tJY{nL|{Pfl^XD6v3^L{ikF{Wq0JN>SU9w>0Jh zl3KD|=<>N2DN|A$Z%xD@oKmFceKxZd_|B=cCM`t{dg-m5r{Ygbky_q*fb#{qMK0z@ zzjVz{26^jl&X)*W&XEXjy}k33T{)`~&l9-7DN7^P7Q=^$r>97>ryF|8 zdp;by9;n0Jpt`jrL?vaUsP`#a+A>qDP3*dgW~Debu~s?-vPrU!hx;>1n{Fk|R!K8T zldhv=ODcC-hW}94Pg)q{oJrMcu-qS&xRN77J!|;MEQ9K2rO1}N#*O5vO3ATSoJJ;9 zd{Dw_Ui-Z1A^l9&`u$4U2fUr2Qs2K-n!1%#ZH`s4f-j44uHz5t>`Ov^isN4X5E34W zg-XmzQ8)J6TGo{2eq^7YA}{;tEwu$HG6X9X@33z6cIJNTPLiD$@kcD?U-r{GIWNIq zYXAGa<(>MJy%a6q)n}u=nj=xa*41TQeWtR^`sW|090e)zia-BE3x8(l^gXkh^!C?v zZG}}!q6+u8&y2n2%$<|nNNttX{+bP_Y_%nNDY3@hem{v&Vy#`6vZeuL)}_ed1~k6G z0~&vt2u~=JXMKtcYp8q5fQIDRU>7Z&ud()A=h63ux}Ox2;CzF?O?#ld^JUhaEB3V~ z(D^FW>g+dbyZui8@x`EM8?y}{&EYh2+Zc>j3lwLS7kTp)tqLIdDP6IXgQF; z9KLX~er1`7v_+RTvq%+7I z2)X0TnD$$~ugl;&NZXClX)RSbPdKI(-v^WO#x9pj`F5ONL)l!2bS_`NlRoc?YNS%-F{Otr+9N=&mvJVFM} z^RupJmLqK$RJ^wxmrf<2$e}&PLeZ)C^E+ z4ytPh^325a1k!SWw^o$HRy$k9i_@G z-C1Hg>P@w)DYCL7MX!;39d5u)D1lpW8}7i}(xQFq^VN}$J5lsbw2bYfcQo#id>EGt8o&UzE=L5}>;nLX#wTuD@RSgx#Bc6hGbRCYwJ z7|&sYa-|2>HlNuY{2Uu(aH^y|r#F$BS-xJH|8l9ihO9BzKSVd#Z=nk`tSMW&&huN^8E``G=Yp0VG>NXd=*o^im9~6_22W$ z-pO25oO(g8;gU$kBuGvb=NI(=m%ALY@4@|OY5yXZW>ZK@fz(t9Mr&!QvX*?>gJ`*- z?9do7U&2mJmDgX=J808VCFUhgXwp-qP}z)B$K^nSm)Sia>{mMd9tm%empMPql;}3T zezF5!%S?4#9JzL*NU3;1iL6w|ne$(ku)kuw&=Om_>Fu;^%2weU0mU!s)os(+GM0W( zt)_hN3f0cAS~B4kYC`0^Li3cZ#YuMgSJ{;`ZOdLi>ZDUmdBKvp{Dr5@N|i0gO*hH5 z!ls;fl^tASTVGQ=yF0vUl4S64p56~-kte+^2}<^A#|E^iI~C=n%AxL!J>))NZFZ{E zc#TCj$7ODthuM0YGv zwWr=r{u;({zrhN_OMdD}6B)-t>Gkg;#jih@+hRKew`vPan!ti^9)SEfo!Wmlz2e`QyvN|dr| z?AAkey-DG7kF2|^K zIIEOXh;vyv>v8J6hqD3a<@dCPp@y=jI$R<8<{KG`!sJ@j5JYpc#OQS zY;djwD?2Jz4!zHxwDx_P?GO#M(YfN%o5YY@X|3#t7>VpnreAxLDabDPoP4e

Er= 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

mzmp?omNOwuPf#aw-&72G`7 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ɀSFWIz7b6)W*mRi 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 z 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

4#$KyU!cPGJmA8PQSMjvXrlVD1| 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 u60hPKu9vD8%Y diff --git a/data/libs/hireling_lib.lua b/data/libs/hireling_lib.lua index bf21b328661..beadcdb6cf1 100644 --- a/data/libs/hireling_lib.lua +++ b/data/libs/hireling_lib.lua @@ -394,7 +394,7 @@ function Hireling:returnToLamp(player_id) end local inbox = owner:getSlotItem(CONST_SLOT_STORE_INBOX) - if not inbox or inbox:getEmptySlots() < 1 then + if not inbox then owner:getPosition():sendMagicEffect(CONST_ME_POFF) return owner:sendTextMessage(MESSAGE_FAILURE, "You don't have enough room in your inbox.") end @@ -553,7 +553,7 @@ function Player:addNewHireling(name, sex) end local inbox = self:getSlotItem(CONST_SLOT_STORE_INBOX) - if not inbox or inbox:getEmptySlots() < 1 then + if not inbox then self:getPosition():sendMagicEffect(CONST_ME_POFF) self:sendTextMessage(MESSAGE_FAILURE, "You don't have enough room in your inbox.") return false diff --git a/data/modules/scripts/daily_reward/daily_reward.lua b/data/modules/scripts/daily_reward/daily_reward.lua index 8f39e6c0287..c319a37923c 100644 --- a/data/modules/scripts/daily_reward/daily_reward.lua +++ b/data/modules/scripts/daily_reward/daily_reward.lua @@ -463,7 +463,7 @@ function Player.selectDailyReward(self, msg) -- Adding items to store inbox local inbox = self:getSlotItem(CONST_SLOT_STORE_INBOX) - if inbox and inbox:getEmptySlots() < columnsPicked then + if inbox then self:sendError("You do not have enough space in your store inbox.") return false end diff --git a/data/modules/scripts/gamestore/init.lua b/data/modules/scripts/gamestore/init.lua index 9ae19559049..20b3cf74803 100644 --- a/data/modules/scripts/gamestore/init.lua +++ b/data/modules/scripts/gamestore/init.lua @@ -1503,7 +1503,7 @@ function GameStore.processItemPurchase(player, offerId, offerCount, moveable) end local inbox = player:getSlotItem(CONST_SLOT_STORE_INBOX) - if inbox and inbox:getEmptySlots() > offerCount then + if inbox then for t = 1, offerCount do local inboxItem = inbox:addItem(offerId, offerCount or 1) if moveable ~= true and inboxItem then @@ -1521,7 +1521,7 @@ function GameStore.processChargesPurchase(player, itemtype, name, charges, movea end local inbox = player:getSlotItem(CONST_SLOT_STORE_INBOX) - if inbox and inbox:getEmptySlots() > 1 then + if inbox then local inboxItem = inbox:addItem(itemtype, charges) if moveable ~= true and inboxItem then @@ -1582,7 +1582,7 @@ function GameStore.processStackablePurchase(player, offerId, offerCount, offerNa end local inbox = player:getSlotItem(CONST_SLOT_STORE_INBOX) - if inbox and inbox:getEmptySlots() > 0 then + if inbox then if (isKeg and offerCount > 500) or offerCount > 100 then local parcel = inbox:addItem(PARCEL_ID, 1) parcel:setAttribute(ITEM_ATTRIBUTE_STORE, systemTime()) @@ -1637,7 +1637,7 @@ function GameStore.processHouseRelatedPurchase(player, offer) if type(itemIds) ~= "table" then itemIds = { itemIds } end - if inbox and inbox:getEmptySlots() >= #itemIds then + if inbox then for _, itemId in ipairs(itemIds) do local decoKit = inbox:addItem(23398, 1) if decoKit then @@ -1652,6 +1652,7 @@ function GameStore.processHouseRelatedPurchase(player, offer) end end end + player:sendUpdateContainer(inbox) else return error({ code = 0, message = "Please make sure you have free slots in your store inbox." }) end diff --git a/data/scripts/eventcallbacks/player/on_rotate_item.lua b/data/scripts/eventcallbacks/player/on_rotate_item.lua index 407402056b8..3692fcdc655 100644 --- a/data/scripts/eventcallbacks/player/on_rotate_item.lua +++ b/data/scripts/eventcallbacks/player/on_rotate_item.lua @@ -1,7 +1,7 @@ local callback = EventCallback() function callback.playerOnRotateItem(player, item, position) - if item:getActionId() == 100 then + if item:getActionId() == IMMOVABLE_ACTION_ID then player:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE) return false end diff --git a/data/scripts/talkactions/god/goto_house.lua b/data/scripts/talkactions/god/goto_house.lua new file mode 100644 index 00000000000..407649c8329 --- /dev/null +++ b/data/scripts/talkactions/god/goto_house.lua @@ -0,0 +1,28 @@ +local sellHouse = TalkAction("/gotohouse") + +function sellHouse.onSay(player, words, param) + local targetPlayer = Player(param) + if targetPlayer then + local targetHouse = targetPlayer:getHouse() + if not targetHouse then + targetPlayer:sendCancelMessage(string.format("The player %s not have house.", player:getName())) + return + end + + targetPlayer:teleportTo(targetHouse:getExitPosition()) + else + local house = player:getHouse() + if not house then + player:sendCancelMessage("You not have house. For goto house of one player use the player name param, usage: /gotohouse playername") + return + end + + player:teleportTo(house:getExitPosition()) + end + + return false +end + +sellHouse:separator(" ") +sellHouse:groupType("god") +sellHouse:register() diff --git a/src/config/config_definitions.hpp b/src/config/config_definitions.hpp index ee6a18d17ff..98f72a90be1 100644 --- a/src/config/config_definitions.hpp +++ b/src/config/config_definitions.hpp @@ -156,7 +156,7 @@ enum integerConfig_t { STATUS_PORT, STAIRHOP_DELAY, MAX_CONTAINER, - MAX_ITEM, + MAX_CONTAINER_ITEM, MARKET_OFFER_DURATION, DEPOT_BOXES, FREE_DEPOT_LIMIT, diff --git a/src/config/configmanager.cpp b/src/config/configmanager.cpp index 8888ea1deee..6f04e53201b 100644 --- a/src/config/configmanager.cpp +++ b/src/config/configmanager.cpp @@ -236,7 +236,7 @@ bool ConfigManager::load() { integer[WHITE_SKULL_TIME] = getGlobalNumber(L, "whiteSkullTime", 15 * 60 * 1000); integer[STAIRHOP_DELAY] = getGlobalNumber(L, "stairJumpExhaustion", 2000); integer[MAX_CONTAINER] = getGlobalNumber(L, "maxContainer", 500); - integer[MAX_ITEM] = getGlobalNumber(L, "maxItem", 10000); + integer[MAX_CONTAINER_ITEM] = getGlobalNumber(L, "maxItem", 5000); integer[EXP_FROM_PLAYERS_LEVEL_RANGE] = getGlobalNumber(L, "expFromPlayersLevelRange", 75); integer[CHECK_EXPIRED_MARKET_OFFERS_EACH_MINUTES] = getGlobalNumber(L, "checkExpiredMarketOffersEachMinutes", 60); integer[MAX_MARKET_OFFERS_AT_A_TIME_PER_PLAYER] = getGlobalNumber(L, "maxMarketOffersAtATimePerPlayer", 100); diff --git a/src/core.hpp b/src/core.hpp index ab48ea9d7d2..40e60b2dc27 100644 --- a/src/core.hpp +++ b/src/core.hpp @@ -16,7 +16,7 @@ static constexpr auto STATUS_SERVER_DEVELOPERS = "OpenTibiaBR Organization"; static constexpr auto AUTHENTICATOR_DIGITS = 6U; static constexpr auto AUTHENTICATOR_PERIOD = 30U; -static constexpr auto CLIENT_VERSION = 1320; +static constexpr auto CLIENT_VERSION = 1321; #define CLIENT_VERSION_UPPER (CLIENT_VERSION / 100) #define CLIENT_VERSION_LOWER (CLIENT_VERSION % 100) diff --git a/src/creatures/players/player.cpp b/src/creatures/players/player.cpp index c1667482c86..5b77ac27ded 100644 --- a/src/creatures/players/player.cpp +++ b/src/creatures/players/player.cpp @@ -1928,7 +1928,7 @@ void Player::onCloseContainer(const Container* container) { } void Player::onSendContainer(const Container* container) { - if (!client) { + if (!client || !container) { return; } diff --git a/src/enums/item_attribute.hpp b/src/enums/item_attribute.hpp index 40934aa61ee..a245f3d5eb9 100644 --- a/src/enums/item_attribute.hpp +++ b/src/enums/item_attribute.hpp @@ -44,6 +44,7 @@ enum ItemAttribute_t : uint64_t { STORE = 31, CUSTOM = 32, LOOTMESSAGE_SUFFIX = 33, + STORE_INBOX_CATEGORY = 34, }; enum ItemDecayState_t : uint8_t { diff --git a/src/game/game.cpp b/src/game/game.cpp index 2414ad7da3b..db498e7d8ef 100644 --- a/src/game/game.cpp +++ b/src/game/game.cpp @@ -616,7 +616,12 @@ Thing* Game::internalGetThing(Player* player, const Position &pos, int32_t index } uint8_t slot = pos.z; - return parentContainer->getItemByIndex(player->getContainerIndex(fromCid) + slot); + auto containerIndex = player->getContainerIndex(fromCid) + slot; + if (parentContainer->isStoreInboxFiltered()) { + return parentContainer->getFilteredItemByIndex(containerIndex); + } + + return parentContainer->getItemByIndex(containerIndex); } else if (pos.y == 0x20 || pos.y == 0x21) { // '0x20' -> From depot. // '0x21' -> From inbox. @@ -1590,8 +1595,9 @@ ReturnValue Game::checkMoveItemToCylinder(Player* player, Cylinder* fromCylinder } const Container* topParentContainer = toCylinderContainer->getRootContainer(); - - if (!item->isStoreItem() && (containerID == ITEM_STORE_INBOX || topParentContainer->getParent() && topParentContainer->getParent()->getContainer() && topParentContainer->getParent()->getContainer()->getID() == ITEM_STORE_INBOX)) { + const auto parentContainer = topParentContainer->getParent() ? topParentContainer->getParent()->getContainer() : nullptr; + auto isStoreInbox = parentContainer && parentContainer->isStoreInbox(); + if (!item->isStoreItem() && (containerID == ITEM_STORE_INBOX || isStoreInbox)) { return RETURNVALUE_CONTAINERNOTENOUGHROOM; } @@ -1605,7 +1611,7 @@ ReturnValue Game::checkMoveItemToCylinder(Player* player, Cylinder* fromCylinder isValidMoveItem = true; } - if (topParentContainer->getParent() && topParentContainer->getParent()->getContainer() && (topParentContainer->getParent()->getContainer()->isDepotChest() || topParentContainer->getParent()->getContainer()->getID() == ITEM_STORE_INBOX)) { + if (parentContainer && (parentContainer->isDepotChest() || isStoreInbox)) { isValidMoveItem = true; } @@ -1859,9 +1865,18 @@ ReturnValue Game::internalMoveItem(Cylinder* fromCylinder, Cylinder* toCylinder, return retMaxCount; } - // looting analyser from this point forward + auto fromContainer = fromCylinder ? fromCylinder->getContainer() : nullptr; + auto toContainer = toCylinder ? toCylinder->getContainer() : nullptr; + auto player = actor ? actor->getPlayer() : nullptr; + if (player) { + // Update containers + player->onSendContainer(toContainer); + player->onSendContainer(fromContainer); + } + + // Actor related actions if (fromCylinder && actor && toCylinder) { - if (!fromCylinder->getContainer() || !actor->getPlayer() || !toCylinder->getContainer()) { + if (!fromContainer || !toContainer || !player) { return ret; } @@ -1876,7 +1891,8 @@ ReturnValue Game::internalMoveItem(Cylinder* fromCylinder, Cylinder* toCylinder, return ret; } - if (it.isCorpse && toCylinder->getContainer()->getTopParent() == player && item->getIsLootTrackeable()) { + // Looting analyser + if (it.isCorpse && toContainer->getTopParent() == player && item->getIsLootTrackeable()) { player->sendLootStats(item, static_cast(item->getItemCount())); } } @@ -4114,7 +4130,7 @@ void Game::playerStashWithdraw(uint32_t playerId, uint16_t itemId, uint32_t coun } } -void Game::playerSeekInContainer(uint32_t playerId, uint8_t containerId, uint16_t index) { +void Game::playerSeekInContainer(uint32_t playerId, uint8_t containerId, uint16_t index, uint8_t containerCategory) { Player* player = getPlayerByID(playerId); if (!player) { return; @@ -4125,6 +4141,12 @@ void Game::playerSeekInContainer(uint32_t playerId, uint8_t containerId, uint16_ return; } + if (container->isStoreInbox()) { + auto enumName = magic_enum::enum_name(static_cast(containerCategory)).data(); + container->setAttribute(ItemAttribute_t::STORE_INBOX_CATEGORY, enumName); + g_logger().debug("Setting new container with store inbox category name {}", enumName); + } + if ((index % container->capacity()) != 0 || index >= container->size()) { return; } diff --git a/src/game/game.hpp b/src/game/game.hpp index 996491b1495..047a7f47484 100644 --- a/src/game/game.hpp +++ b/src/game/game.hpp @@ -295,7 +295,7 @@ class Game { void playerWrapableItem(uint32_t playerId, const Position &pos, uint8_t stackPos, const uint16_t itemId); void playerWriteItem(uint32_t playerId, uint32_t windowTextId, const std::string &text); void playerBrowseField(uint32_t playerId, const Position &pos); - void playerSeekInContainer(uint32_t playerId, uint8_t containerId, uint16_t index); + void playerSeekInContainer(uint32_t playerId, uint8_t containerId, uint16_t index, uint8_t containerCategory); void playerUpdateHouseWindow(uint32_t playerId, uint8_t listId, uint32_t windowTextId, const std::string &text); void playerRequestTrade(uint32_t playerId, const Position &pos, uint8_t stackPos, uint32_t tradePlayerId, uint16_t itemId); void playerAcceptTrade(uint32_t playerId); diff --git a/src/items/containers/container.cpp b/src/items/containers/container.cpp index ea3259a685d..fbe9486c3bb 100644 --- a/src/items/containers/container.cpp +++ b/src/items/containers/container.cpp @@ -16,8 +16,11 @@ Container::Container(uint16_t type) : Container(type, items[type].maxItems) { - if (getID() == ITEM_GOLD_POUCH) { + m_maxItems = static_cast(g_configManager().getNumber(MAX_CONTAINER_ITEM)); + if (getID() == ITEM_GOLD_POUCH || isStoreInbox()) { pagination = true; + m_maxItems = 2000; + maxSize = 32; } } @@ -229,10 +232,86 @@ std::ostringstream &Container::getContentDescription(std::ostringstream &os, boo return os; } +bool Container::isStoreInbox() const { + return getID() == ITEM_STORE_INBOX; +} + +bool Container::isStoreInboxFiltered() const { + auto attribute = getAttribute(ItemAttribute_t::STORE_INBOX_CATEGORY); + if (isStoreInbox() && !attribute.empty() && attribute != "All") { + return true; + } + + return false; +} + +std::deque Container::getStoreInboxFilteredItems() const { + const auto enumName = getAttribute(ItemAttribute_t::STORE_INBOX_CATEGORY); + ItemDeque storeInboxFilteredList; + if (isStoreInboxFiltered()) { + for (Item* item : getItemList()) { + auto itemId = item->getID(); + auto attribute = item->getCustomAttribute("unWrapId"); + uint16_t unWrapId = attribute ? static_cast(attribute->getInteger()) : 0; + if (unWrapId != 0) { + itemId = unWrapId; + } + const auto &itemType = Item::items.getItemType(itemId); + auto primaryType = toPascalCase(itemType.m_primaryType); + auto name = toPascalCase(enumName); + g_logger().debug("Get filtered items, primaty type {}, enum name {}", primaryType, name); + if (primaryType == name) { + storeInboxFilteredList.push_back(item); + } + } + } + + return storeInboxFilteredList; +} + +phmap::flat_hash_set Container::getStoreInboxValidCategories() const { + phmap::flat_hash_set validCategories; + for (const auto &item : itemlist) { + auto itemId = item->getID(); + auto attribute = item->getCustomAttribute("unWrapId"); + uint16_t unWrapId = attribute ? static_cast(attribute->getInteger()) : 0; + if (unWrapId != 0) { + itemId = unWrapId; + } + const auto &itemType = Item::items.getItemType(itemId); + auto convertedString = toPascalCase(itemType.m_primaryType); + g_logger().debug("Store item '{}', primary type {}", itemId, convertedString); + auto category = magic_enum::enum_cast(convertedString); + if (category.has_value()) { + g_logger().debug("Adding valid category {}", static_cast(category.value())); + validCategories.insert(category.value()); + } + } + + return validCategories; +} + +Item* Container::getFilteredItemByIndex(size_t index) const { + const auto &filteredItems = getStoreInboxFilteredItems(); + if (index >= filteredItems.size()) { + return nullptr; + } + + auto item = filteredItems[index]; + + auto it = std::find(itemlist.begin(), itemlist.end(), item); + if (it == itemlist.end()) { + return nullptr; + } + + return *it; +} + Item* Container::getItemByIndex(size_t index) const { if (index >= size()) { return nullptr; } + return itemlist[index]; } @@ -366,22 +445,21 @@ ReturnValue Container::queryAdd(int32_t addIndex, const Thing &addThing, uint32_ } if (const Container* topParentContainer = getTopParentContainer()) { - uint32_t maxItem = static_cast(g_configManager().getNumber(MAX_ITEM)); if (const Container* addContainer = item->getContainer()) { uint32_t addContainerCount = addContainer->getContainerHoldingCount() + 1; uint32_t maxContainer = static_cast(g_configManager().getNumber(MAX_CONTAINER)); if (addContainerCount + topParentContainer->getContainerHoldingCount() > maxContainer) { - return RETURNVALUE_NOTPOSSIBLE; + return RETURNVALUE_CONTAINERISFULL; } uint32_t addItemCount = addContainer->getItemHoldingCount() + 1; - if (addItemCount + topParentContainer->getItemHoldingCount() > maxItem) { - return RETURNVALUE_NOTPOSSIBLE; + if (addItemCount + topParentContainer->getItemHoldingCount() > m_maxItems) { + return RETURNVALUE_CONTAINERISFULL; } } - if (topParentContainer->getItemHoldingCount() + 1 > maxItem) { - return RETURNVALUE_NOTPOSSIBLE; + if (topParentContainer->getItemHoldingCount() + 1 > m_maxItems) { + return RETURNVALUE_CONTAINERISFULL; } } diff --git a/src/items/containers/container.hpp b/src/items/containers/container.hpp index 30bc4003229..b58929b3628 100644 --- a/src/items/containers/container.hpp +++ b/src/items/containers/container.hpp @@ -115,6 +115,11 @@ class Container : public Item, public Cylinder { bool hasParent() const; void addItem(Item* item); StashContainerList getStowableItems() const; + bool isStoreInbox() const; + bool isStoreInboxFiltered() const; + std::deque getStoreInboxFilteredItems() const; + phmap::flat_hash_set getStoreInboxValidCategories() const; + Item* getFilteredItemByIndex(size_t index) const; Item* getItemByIndex(size_t index) const; bool isHoldingItem(const Item* item) const; bool isHoldingItemWithId(const uint16_t id) const; @@ -168,6 +173,7 @@ class Container : public Item, public Cylinder { protected: std::ostringstream &getContentDescription(std::ostringstream &os, bool oldProtocol) const; + uint32_t m_maxItems; uint32_t maxSize; uint32_t totalWeight = 0; ItemDeque itemlist; diff --git a/src/items/functions/item/attribute.hpp b/src/items/functions/item/attribute.hpp index 20cf4369435..4a68cc0ec7b 100644 --- a/src/items/functions/item/attribute.hpp +++ b/src/items/functions/item/attribute.hpp @@ -57,6 +57,7 @@ class ItemAttributeHelper { case ItemAttribute_t::PLURALNAME: case ItemAttribute_t::SPECIAL: case ItemAttribute_t::LOOTMESSAGE_SUFFIX: + case ItemAttribute_t::STORE_INBOX_CATEGORY: return true; default: return false; diff --git a/src/items/functions/item/item_parse.cpp b/src/items/functions/item/item_parse.cpp index 0500d82915c..2172326f097 100644 --- a/src/items/functions/item/item_parse.cpp +++ b/src/items/functions/item/item_parse.cpp @@ -56,7 +56,6 @@ void ItemParse::initParse(const std::string &tmpStrValue, pugi::xml_node attribu ItemParse::parseMagicLevelPoint(tmpStrValue, valueAttribute, itemType); ItemParse::parseFieldAbsorbPercent(tmpStrValue, valueAttribute, itemType); ItemParse::parseAbsorbPercent(tmpStrValue, valueAttribute, itemType); - ItemParse::parseSupressDrunk(tmpStrValue, valueAttribute, itemType); ItemParse::parseField(tmpStrValue, attributeNode, valueAttribute, itemType); ItemParse::parseReplaceable(tmpStrValue, valueAttribute, itemType); diff --git a/src/items/item.cpp b/src/items/item.cpp index 45c977fe05e..f38ac6c9ec1 100644 --- a/src/items/item.cpp +++ b/src/items/item.cpp @@ -794,6 +794,17 @@ Attr_ReadValue Item::readAttr(AttrTypes_t attr, PropStream &propStream) { break; } + case ATTR_STORE_INBOX_CATEGORY: { + std::string category; + if (!propStream.readString(category)) { + g_logger().error("[{}] failed to read store inbox category from item {}", __FUNCTION__, getName()); + return ATTR_READ_ERROR; + } + + setAttribute(ItemAttribute_t::STORE_INBOX_CATEGORY, category); + break; + } + default: return ATTR_READ_ERROR; } @@ -954,6 +965,10 @@ void Item::serializeAttr(PropWriteStream &propWriteStream) const { propWriteStream.write(ATTR_AMOUNT); propWriteStream.write(getAttribute(AMOUNT)); } + if (hasAttribute(STORE_INBOX_CATEGORY)) { + propWriteStream.write(ATTR_STORE_INBOX_CATEGORY); + propWriteStream.writeString(getString(ItemAttribute_t::STORE_INBOX_CATEGORY)); + } // Serialize custom attributes, only serialize if the map not is empty if (hasCustomAttribute()) { diff --git a/src/items/items.cpp b/src/items/items.cpp index 6611af095b8..986f2b2728d 100644 --- a/src/items/items.cpp +++ b/src/items/items.cpp @@ -176,6 +176,7 @@ void Items::loadFromProtobuf() { iType.clockExpire = object.flags().clockexpire(); iType.expire = object.flags().expire(); iType.expireStop = object.flags().expirestop(); + iType.isWrapKit = object.flags().wrapkit(); if (!iType.name.empty()) { nameToItems.insert({ asLowerCaseString(iType.name), diff --git a/src/items/items.hpp b/src/items/items.hpp index 6d0559cc0f7..b21dbc7e414 100644 --- a/src/items/items.hpp +++ b/src/items/items.hpp @@ -341,6 +341,7 @@ class ItemType { bool isCorpse = false; bool loaded = false; bool spellbook = false; + bool isWrapKit = false; }; class Items { diff --git a/src/items/items_definitions.hpp b/src/items/items_definitions.hpp index 0c38634fcf3..8b54fa679b5 100644 --- a/src/items/items_definitions.hpp +++ b/src/items/items_definitions.hpp @@ -60,6 +60,7 @@ enum ReturnValue { RETURNVALUE_CANNOTPICKUP, RETURNVALUE_THISISIMPOSSIBLE, RETURNVALUE_DEPOTISFULL, + RETURNVALUE_CONTAINERISFULL, RETURNVALUE_CREATUREDOESNOTEXIST, RETURNVALUE_CANNOTUSETHISOBJECT, RETURNVALUE_PLAYERWITHTHISNAMEISNOTONLINE, @@ -234,6 +235,7 @@ enum AttrTypes_t { ATTR_AMOUNT = 39, ATTR_TIER = 40, ATTR_CUSTOM = 41, + ATTR_STORE_INBOX_CATEGORY = 42, // Always the last ATTR_NONE = 0 @@ -261,6 +263,130 @@ enum ImbuementTypes_t : int64_t { IMBUEMENT_INCREASE_CAPACITY = 17 }; +enum class ContainerCategory_t : uint8_t { + All, + Ammunition, + AmuletsAndNecklaces, + Animals, + Annelids, + Arachnids, + Armors, + ArtificialTiles, + AstralShapers, + AttackRunes, + AxeWeapons, + Bats, + Bears, + Birds, + BlessingCharms, + Blobs, + Books, + Boots, + Bushes, + Cactuses, + Canines, + Casks, + Closets, + ClothingAccessories, + ClubWeapons, + Coffins, + Constructions, + Containers, + ContestPrizes, + CreatureProducts, + Decoration, + Demons, + DistanceWeapons, + DocumentsAndPapers, + DollsAndBears, + Doors, + Dragons, + Dreamhaunters, + Dropdowns, + EnchantedItems, + EventCreatures, + ExerciseWeapons, + FansiteItems, + Ferns, + Fields, + Flags, + FloorDecorations, + FloraAndMinerals, + Flowers, + FluidContainers, + Food, + Furniture, + GameTokens, + Ghosts, + Glires, + Grass, + HealingRunes, + Helmets, + HiveBorn, + Illumination, + Keys, + KitchenTools, + Ladders, + Legs, + LightSources, + Liquids, + MachinesObjects, + Machines, + MagicalItems, + Metals, + Mollusks, + Mushrooms, + MusicalInstruments, + NaturalProducts, + NaturalTiles, + OtherItems, + Outlaws, + PaintingEquipment, + PartyItems, + Pillars, + PlantsAndHerbs, + Plants, + Portals, + QuestItems, + QuestObjects, + Quivers, + Refuse, + Remains, + Rings, + Rocks, + Rods, + Rubbish, + Shields, + ShrinesAndAltars, + Signs, + Skeletons, + Spellbooks, + Stairs, + Statues, + SupportRunes, + SwordWeapons, + Tables, + TamingItems, + Teleporters, + ToolsObjects, + Tools, + TortureInstruments, + TournamentRewards, + TrainingWeapons, + Transportation, + Traps, + Trees, + Trophies, + UndeadHumanoids, + Ungulates, + Utilities, + Valuables, + WallHangings, + Walls, + Wands, + Windows +}; + enum SlotPositionBits : uint32_t { SLOTP_WHEREEVER = 0xFFFFFFFF, SLOTP_HEAD = 1 << 0, diff --git a/src/lua/functions/creatures/creature_functions.cpp b/src/lua/functions/creatures/creature_functions.cpp index b97f3eff491..6abea6b2084 100644 --- a/src/lua/functions/creatures/creature_functions.cpp +++ b/src/lua/functions/creatures/creature_functions.cpp @@ -766,7 +766,7 @@ int CreatureFunctions::luaCreatureTeleportTo(lua_State* L) { const Position oldPosition = creature->getPosition(); if (auto ret = g_game().internalTeleport(creature, position, pushMovement); ret != RETURNVALUE_NOERROR) { - g_logger().error("[{}] Failed to teleport creature {}, on position {}, error code: {}", __FUNCTION__, creature->getName(), oldPosition.toString(), getReturnMessage(ret)); + g_logger().debug("[{}] Failed to teleport creature {}, on position {}, error code: {}", __FUNCTION__, creature->getName(), oldPosition.toString(), getReturnMessage(ret)); pushBoolean(L, false); return 1; } diff --git a/src/lua/functions/creatures/player/player_functions.cpp b/src/lua/functions/creatures/player/player_functions.cpp index 97c3de27cb5..4b72347b231 100644 --- a/src/lua/functions/creatures/player/player_functions.cpp +++ b/src/lua/functions/creatures/player/player_functions.cpp @@ -1945,6 +1945,25 @@ int PlayerFunctions::luaPlayerSendContainer(lua_State* L) { return 1; } +int PlayerFunctions::luaPlayerSendUpdateContainer(lua_State* L) { + // player:sendUpdateContainer(container) + Player* player = getUserdata(L, 1); + if (!player) { + lua_pushnil(L); + return 1; + } + + const auto container = getUserdata(L, 2); + if (!container) { + reportErrorFunc("Container is nullptr"); + return 1; + } + + player->onSendContainer(container); + pushBoolean(L, true); + return 1; +} + int PlayerFunctions::luaPlayerGetMoney(lua_State* L) { // player:getMoney() Player* player = getUserdata(L, 1); diff --git a/src/lua/functions/creatures/player/player_functions.hpp b/src/lua/functions/creatures/player/player_functions.hpp index 5637b439e0e..ff047fb125d 100644 --- a/src/lua/functions/creatures/player/player_functions.hpp +++ b/src/lua/functions/creatures/player/player_functions.hpp @@ -177,6 +177,7 @@ class PlayerFunctions final : LuaScriptInterface { registerMethod(L, "Player", "removeStashItem", PlayerFunctions::luaPlayerRemoveStashItem); registerMethod(L, "Player", "removeItem", PlayerFunctions::luaPlayerRemoveItem); registerMethod(L, "Player", "sendContainer", PlayerFunctions::luaPlayerSendContainer); + registerMethod(L, "Player", "sendUpdateContainer", PlayerFunctions::luaPlayerSendUpdateContainer); registerMethod(L, "Player", "getMoney", PlayerFunctions::luaPlayerGetMoney); registerMethod(L, "Player", "addMoney", PlayerFunctions::luaPlayerAddMoney); @@ -515,6 +516,7 @@ class PlayerFunctions final : LuaScriptInterface { static int luaPlayerRemoveStashItem(lua_State* L); static int luaPlayerRemoveItem(lua_State* L); static int luaPlayerSendContainer(lua_State* L); + static int luaPlayerSendUpdateContainer(lua_State* L); static int luaPlayerGetMoney(lua_State* L); static int luaPlayerAddMoney(lua_State* L); diff --git a/src/protobuf/CMakeLists.txt b/src/protobuf/CMakeLists.txt index 0a897799764..4ca2bac2ce2 100644 --- a/src/protobuf/CMakeLists.txt +++ b/src/protobuf/CMakeLists.txt @@ -22,7 +22,7 @@ add_custom_command( ${CMAKE_CURRENT_BINARY_DIR}/appearances.pb.cc ${CMAKE_CURRENT_SOURCE_DIR}/appearances.pb.cc - # Copy files "appearances.pb.hpp" to the "src/protobuf" folder + # Copy files "appearances.pb.h" to the "src/protobuf" folder COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/appearances.pb.h ${CMAKE_CURRENT_SOURCE_DIR}/appearances.pb.h diff --git a/src/protobuf/appearances.pb.cc b/src/protobuf/appearances.pb.cc index cc96bcf7310..ced2a617345 100644 --- a/src/protobuf/appearances.pb.cc +++ b/src/protobuf/appearances.pb.cc @@ -223,7 +223,8 @@ PROTOBUF_CONSTEXPR AppearanceFlags::AppearanceFlags( , /*decltype(_impl_.wearout_)*/false , /*decltype(_impl_.clockexpire_)*/false , /*decltype(_impl_.expire_)*/false - , /*decltype(_impl_.expirestop_)*/false} {} + , /*decltype(_impl_.expirestop_)*/false + , /*decltype(_impl_.wrapkit_)*/false} {} struct AppearanceFlagsDefaultTypeInternal { PROTOBUF_CONSTEXPR AppearanceFlagsDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} @@ -477,7 +478,8 @@ PROTOBUF_CONSTEXPR SpecialMeaningAppearanceIds::SpecialMeaningAppearanceIds( , /*decltype(_impl_.crystal_coin_id_)*/0u , /*decltype(_impl_.tibia_coin_id_)*/0u , /*decltype(_impl_.stamped_letter_id_)*/0u - , /*decltype(_impl_.supply_stash_id_)*/0u} {} + , /*decltype(_impl_.supply_stash_id_)*/0u + , /*decltype(_impl_.reward_chest_id_)*/0u} {} struct SpecialMeaningAppearanceIdsDefaultTypeInternal { PROTOBUF_CONSTEXPR SpecialMeaningAppearanceIdsDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} @@ -679,6 +681,7 @@ const uint32_t TableStruct_appearances_2eproto::offsets[] PROTOBUF_SECTION_VARIA PROTOBUF_FIELD_OFFSET(::Canary::protobuf::appearances::AppearanceFlags, _impl_.clockexpire_), PROTOBUF_FIELD_OFFSET(::Canary::protobuf::appearances::AppearanceFlags, _impl_.expire_), PROTOBUF_FIELD_OFFSET(::Canary::protobuf::appearances::AppearanceFlags, _impl_.expirestop_), + PROTOBUF_FIELD_OFFSET(::Canary::protobuf::appearances::AppearanceFlags, _impl_.wrapkit_), 0, 15, 16, @@ -735,6 +738,7 @@ const uint32_t TableStruct_appearances_2eproto::offsets[] PROTOBUF_SECTION_VARIA 52, 53, 54, + 55, PROTOBUF_FIELD_OFFSET(::Canary::protobuf::appearances::AppearanceFlagUpgradeClassification, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::Canary::protobuf::appearances::AppearanceFlagUpgradeClassification, _internal_metadata_), ~0u, // no _extensions_ @@ -897,12 +901,14 @@ const uint32_t TableStruct_appearances_2eproto::offsets[] PROTOBUF_SECTION_VARIA PROTOBUF_FIELD_OFFSET(::Canary::protobuf::appearances::SpecialMeaningAppearanceIds, _impl_.tibia_coin_id_), PROTOBUF_FIELD_OFFSET(::Canary::protobuf::appearances::SpecialMeaningAppearanceIds, _impl_.stamped_letter_id_), PROTOBUF_FIELD_OFFSET(::Canary::protobuf::appearances::SpecialMeaningAppearanceIds, _impl_.supply_stash_id_), + PROTOBUF_FIELD_OFFSET(::Canary::protobuf::appearances::SpecialMeaningAppearanceIds, _impl_.reward_chest_id_), 0, 1, 2, 3, 4, 5, + 6, }; static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, 9, -1, sizeof(::Canary::protobuf::appearances::Coordinate)}, @@ -913,24 +919,24 @@ static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protode { 70, 85, -1, sizeof(::Canary::protobuf::appearances::SpriteInfo)}, { 94, 103, -1, sizeof(::Canary::protobuf::appearances::FrameGroup)}, { 106, 117, -1, sizeof(::Canary::protobuf::appearances::Appearance)}, - { 122, 184, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlags)}, - { 240, 247, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagUpgradeClassification)}, - { 248, 255, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagBank)}, - { 256, 263, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagWrite)}, - { 264, 271, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagWriteOnce)}, - { 272, 280, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagLight)}, - { 282, 289, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagHeight)}, - { 290, 298, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagShift)}, - { 300, 307, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagClothes)}, - { 308, 315, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagDefaultAction)}, - { 316, 327, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagMarket)}, - { 332, 344, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagNPC)}, - { 350, 357, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagAutomap)}, - { 358, 365, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagHook)}, - { 366, 373, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagLenshelp)}, - { 374, 381, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagChangedToExpire)}, - { 382, 389, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagCyclopedia)}, - { 390, 402, -1, sizeof(::Canary::protobuf::appearances::SpecialMeaningAppearanceIds)}, + { 122, 185, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlags)}, + { 242, 249, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagUpgradeClassification)}, + { 250, 257, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagBank)}, + { 258, 265, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagWrite)}, + { 266, 273, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagWriteOnce)}, + { 274, 282, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagLight)}, + { 284, 291, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagHeight)}, + { 292, 300, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagShift)}, + { 302, 309, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagClothes)}, + { 310, 317, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagDefaultAction)}, + { 318, 329, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagMarket)}, + { 334, 346, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagNPC)}, + { 352, 359, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagAutomap)}, + { 360, 367, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagHook)}, + { 368, 375, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagLenshelp)}, + { 376, 383, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagChangedToExpire)}, + { 384, 391, -1, sizeof(::Canary::protobuf::appearances::AppearanceFlagCyclopedia)}, + { 392, 405, -1, sizeof(::Canary::protobuf::appearances::SpecialMeaningAppearanceIds)}, }; static const ::_pb::Message* const file_default_instances[] = { @@ -999,7 +1005,7 @@ const char descriptor_table_protodef_appearances_2eproto[] PROTOBUF_SECTION_VARI "2\'.Canary.protobuf.appearances.FrameGrou" "p\022;\n\005flags\030\003 \001(\0132,.Canary.protobuf.appea" "rances.AppearanceFlags\022\014\n\004name\030\004 \001(\014\022\023\n\013" - "description\030\005 \001(\014\"\235\017\n\017AppearanceFlags\022=\n" + "description\030\005 \001(\014\"\256\017\n\017AppearanceFlags\022=\n" "\004bank\030\001 \001(\0132/.Canary.protobuf.appearance" "s.AppearanceFlagBank\022\014\n\004clip\030\002 \001(\010\022\016\n\006bo" "ttom\030\003 \001(\010\022\013\n\003top\030\004 \001(\010\022\021\n\tcontainer\030\005 \001" @@ -1048,81 +1054,82 @@ const char descriptor_table_protodef_appearances_2eproto[] PROTOBUF_SECTION_VARI "everse_addons_south\0303 \001(\010\022\034\n\024reverse_add" "ons_north\0304 \001(\010\022\017\n\007wearout\0305 \001(\010\022\023\n\013cloc" "kexpire\0306 \001(\010\022\016\n\006expire\0307 \001(\010\022\022\n\nexpires" - "top\0308 \001(\010\"E\n#AppearanceFlagUpgradeClassi" - "fication\022\036\n\026upgrade_classification\030\001 \001(\r" - "\"\'\n\022AppearanceFlagBank\022\021\n\twaypoints\030\001 \001(" - "\r\".\n\023AppearanceFlagWrite\022\027\n\017max_text_len" - "gth\030\001 \001(\r\"7\n\027AppearanceFlagWriteOnce\022\034\n\024" - "max_text_length_once\030\001 \001(\r\"8\n\023Appearance" - "FlagLight\022\022\n\nbrightness\030\001 \001(\r\022\r\n\005color\030\002" - " \001(\r\")\n\024AppearanceFlagHeight\022\021\n\televatio" - "n\030\001 \001(\r\"+\n\023AppearanceFlagShift\022\t\n\001x\030\001 \001(" - "\r\022\t\n\001y\030\002 \001(\r\"%\n\025AppearanceFlagClothes\022\014\n" - "\004slot\030\001 \001(\r\"Y\n\033AppearanceFlagDefaultActi" - "on\022:\n\006action\030\001 \001(\0162*.Canary.protobuf.app" - "earances.PLAYER_ACTION\"\362\001\n\024AppearanceFla" - "gMarket\022<\n\010category\030\001 \001(\0162*.Canary.proto" - "buf.appearances.ITEM_CATEGORY\022\032\n\022trade_a" - "s_object_id\030\002 \001(\r\022\031\n\021show_as_object_id\030\003" - " \001(\r\022N\n\026restrict_to_profession\030\005 \003(\0162..C" - "anary.protobuf.appearances.PLAYER_PROFES" - "SION\022\025\n\rminimum_level\030\006 \001(\r\"\245\001\n\021Appearan" - "ceFlagNPC\022\014\n\004name\030\001 \001(\014\022\020\n\010location\030\002 \001(" - "\014\022\022\n\nsale_price\030\003 \001(\r\022\021\n\tbuy_price\030\004 \001(\r" - "\022\037\n\027currency_object_type_id\030\005 \001(\r\022(\n cur" - "rency_quest_flag_display_name\030\006 \001(\014\"&\n\025A" - "ppearanceFlagAutomap\022\r\n\005color\030\001 \001(\r\"O\n\022A" - "ppearanceFlagHook\0229\n\tdirection\030\001 \001(\0162&.C" - "anary.protobuf.appearances.HOOK_TYPE\"$\n\026" - "AppearanceFlagLenshelp\022\n\n\002id\030\001 \001(\r\"=\n\035Ap" - "pearanceFlagChangedToExpire\022\034\n\024former_ob" - "ject_typeid\030\001 \001(\r\"3\n\030AppearanceFlagCyclo" - "pedia\022\027\n\017cyclopedia_type\030\001 \001(\r\"\261\001\n\033Speci" - "alMeaningAppearanceIds\022\024\n\014gold_coin_id\030\001" - " \001(\r\022\030\n\020platinum_coin_id\030\002 \001(\r\022\027\n\017crysta" - "l_coin_id\030\003 \001(\r\022\025\n\rtibia_coin_id\030\004 \001(\r\022\031" - "\n\021stamped_letter_id\030\005 \001(\r\022\027\n\017supply_stas" - "h_id\030\006 \001(\r*\224\001\n\rPLAYER_ACTION\022\026\n\022PLAYER_A" - "CTION_NONE\020\000\022\026\n\022PLAYER_ACTION_LOOK\020\001\022\025\n\021" - "PLAYER_ACTION_USE\020\002\022\026\n\022PLAYER_ACTION_OPE" - "N\020\003\022$\n PLAYER_ACTION_AUTOWALK_HIGHLIGHT\020" - "\004*\315\005\n\rITEM_CATEGORY\022\030\n\024ITEM_CATEGORY_ARM" - "ORS\020\001\022\031\n\025ITEM_CATEGORY_AMULETS\020\002\022\027\n\023ITEM" - "_CATEGORY_BOOTS\020\003\022\034\n\030ITEM_CATEGORY_CONTA" - "INERS\020\004\022\034\n\030ITEM_CATEGORY_DECORATION\020\005\022\026\n" - "\022ITEM_CATEGORY_FOOD\020\006\022\036\n\032ITEM_CATEGORY_H" - "ELMETS_HATS\020\007\022\026\n\022ITEM_CATEGORY_LEGS\020\010\022\030\n" - "\024ITEM_CATEGORY_OTHERS\020\t\022\031\n\025ITEM_CATEGORY" - "_POTIONS\020\n\022\027\n\023ITEM_CATEGORY_RINGS\020\013\022\027\n\023I" - "TEM_CATEGORY_RUNES\020\014\022\031\n\025ITEM_CATEGORY_SH" - "IELDS\020\r\022\027\n\023ITEM_CATEGORY_TOOLS\020\016\022\033\n\027ITEM" - "_CATEGORY_VALUABLES\020\017\022\034\n\030ITEM_CATEGORY_A" - "MMUNITION\020\020\022\026\n\022ITEM_CATEGORY_AXES\020\021\022\027\n\023I" - "TEM_CATEGORY_CLUBS\020\022\022\"\n\036ITEM_CATEGORY_DI" - "STANCE_WEAPONS\020\023\022\030\n\024ITEM_CATEGORY_SWORDS" - "\020\024\022\034\n\030ITEM_CATEGORY_WANDS_RODS\020\025\022!\n\035ITEM" - "_CATEGORY_PREMIUM_SCROLLS\020\026\022\035\n\031ITEM_CATE" - "GORY_TIBIA_COINS\020\027\022#\n\037ITEM_CATEGORY_CREA" - "TURE_PRODUCTS\020\030\022\030\n\024ITEM_CATEGORY_QUIVER\020" - "\031*\355\001\n\021PLAYER_PROFESSION\022\"\n\025PLAYER_PROFES" - "SION_ANY\020\377\377\377\377\377\377\377\377\377\001\022\032\n\026PLAYER_PROFESSION" - "_NONE\020\000\022\034\n\030PLAYER_PROFESSION_KNIGHT\020\001\022\035\n" - "\031PLAYER_PROFESSION_PALADIN\020\002\022\036\n\032PLAYER_P" - "ROFESSION_SORCERER\020\003\022\033\n\027PLAYER_PROFESSIO" - "N_DRUID\020\004\022\036\n\032PLAYER_PROFESSION_PROMOTED\020" - "\n*\203\001\n\023ANIMATION_LOOP_TYPE\022)\n\034ANIMATION_L" - "OOP_TYPE_PINGPONG\020\377\377\377\377\377\377\377\377\377\001\022 \n\034ANIMATIO" - "N_LOOP_TYPE_INFINITE\020\000\022\037\n\033ANIMATION_LOOP" - "_TYPE_COUNTED\020\001*4\n\tHOOK_TYPE\022\023\n\017HOOK_TYP" - "E_SOUTH\020\001\022\022\n\016HOOK_TYPE_EAST\020\002*\201\001\n\021FIXED_" - "FRAME_GROUP\022!\n\035FIXED_FRAME_GROUP_OUTFIT_" - "IDLE\020\000\022#\n\037FIXED_FRAME_GROUP_OUTFIT_MOVIN" - "G\020\001\022$\n FIXED_FRAME_GROUP_OBJECT_INITIAL\020" - "\002" + "top\0308 \001(\010\022\017\n\007wrapkit\0309 \001(\010\"E\n#Appearance" + "FlagUpgradeClassification\022\036\n\026upgrade_cla" + "ssification\030\001 \001(\r\"\'\n\022AppearanceFlagBank\022" + "\021\n\twaypoints\030\001 \001(\r\".\n\023AppearanceFlagWrit" + "e\022\027\n\017max_text_length\030\001 \001(\r\"7\n\027Appearance" + "FlagWriteOnce\022\034\n\024max_text_length_once\030\001 " + "\001(\r\"8\n\023AppearanceFlagLight\022\022\n\nbrightness" + "\030\001 \001(\r\022\r\n\005color\030\002 \001(\r\")\n\024AppearanceFlagH" + "eight\022\021\n\televation\030\001 \001(\r\"+\n\023AppearanceFl" + "agShift\022\t\n\001x\030\001 \001(\r\022\t\n\001y\030\002 \001(\r\"%\n\025Appeara" + "nceFlagClothes\022\014\n\004slot\030\001 \001(\r\"Y\n\033Appearan" + "ceFlagDefaultAction\022:\n\006action\030\001 \001(\0162*.Ca" + "nary.protobuf.appearances.PLAYER_ACTION\"" + "\362\001\n\024AppearanceFlagMarket\022<\n\010category\030\001 \001" + "(\0162*.Canary.protobuf.appearances.ITEM_CA" + "TEGORY\022\032\n\022trade_as_object_id\030\002 \001(\r\022\031\n\021sh" + "ow_as_object_id\030\003 \001(\r\022N\n\026restrict_to_pro" + "fession\030\005 \003(\0162..Canary.protobuf.appearan" + "ces.PLAYER_PROFESSION\022\025\n\rminimum_level\030\006" + " \001(\r\"\245\001\n\021AppearanceFlagNPC\022\014\n\004name\030\001 \001(\014" + "\022\020\n\010location\030\002 \001(\014\022\022\n\nsale_price\030\003 \001(\r\022\021" + "\n\tbuy_price\030\004 \001(\r\022\037\n\027currency_object_typ" + "e_id\030\005 \001(\r\022(\n currency_quest_flag_displa" + "y_name\030\006 \001(\014\"&\n\025AppearanceFlagAutomap\022\r\n" + "\005color\030\001 \001(\r\"O\n\022AppearanceFlagHook\0229\n\tdi" + "rection\030\001 \001(\0162&.Canary.protobuf.appearan" + "ces.HOOK_TYPE\"$\n\026AppearanceFlagLenshelp\022" + "\n\n\002id\030\001 \001(\r\"=\n\035AppearanceFlagChangedToEx" + "pire\022\034\n\024former_object_typeid\030\001 \001(\r\"3\n\030Ap" + "pearanceFlagCyclopedia\022\027\n\017cyclopedia_typ" + "e\030\001 \001(\r\"\312\001\n\033SpecialMeaningAppearanceIds\022" + "\024\n\014gold_coin_id\030\001 \001(\r\022\030\n\020platinum_coin_i" + "d\030\002 \001(\r\022\027\n\017crystal_coin_id\030\003 \001(\r\022\025\n\rtibi" + "a_coin_id\030\004 \001(\r\022\031\n\021stamped_letter_id\030\005 \001" + "(\r\022\027\n\017supply_stash_id\030\006 \001(\r\022\027\n\017reward_ch" + "est_id\030\007 \001(\r*\224\001\n\rPLAYER_ACTION\022\026\n\022PLAYER" + "_ACTION_NONE\020\000\022\026\n\022PLAYER_ACTION_LOOK\020\001\022\025" + "\n\021PLAYER_ACTION_USE\020\002\022\026\n\022PLAYER_ACTION_O" + "PEN\020\003\022$\n PLAYER_ACTION_AUTOWALK_HIGHLIGH" + "T\020\004*\315\005\n\rITEM_CATEGORY\022\030\n\024ITEM_CATEGORY_A" + "RMORS\020\001\022\031\n\025ITEM_CATEGORY_AMULETS\020\002\022\027\n\023IT" + "EM_CATEGORY_BOOTS\020\003\022\034\n\030ITEM_CATEGORY_CON" + "TAINERS\020\004\022\034\n\030ITEM_CATEGORY_DECORATION\020\005\022" + "\026\n\022ITEM_CATEGORY_FOOD\020\006\022\036\n\032ITEM_CATEGORY" + "_HELMETS_HATS\020\007\022\026\n\022ITEM_CATEGORY_LEGS\020\010\022" + "\030\n\024ITEM_CATEGORY_OTHERS\020\t\022\031\n\025ITEM_CATEGO" + "RY_POTIONS\020\n\022\027\n\023ITEM_CATEGORY_RINGS\020\013\022\027\n" + "\023ITEM_CATEGORY_RUNES\020\014\022\031\n\025ITEM_CATEGORY_" + "SHIELDS\020\r\022\027\n\023ITEM_CATEGORY_TOOLS\020\016\022\033\n\027IT" + "EM_CATEGORY_VALUABLES\020\017\022\034\n\030ITEM_CATEGORY" + "_AMMUNITION\020\020\022\026\n\022ITEM_CATEGORY_AXES\020\021\022\027\n" + "\023ITEM_CATEGORY_CLUBS\020\022\022\"\n\036ITEM_CATEGORY_" + "DISTANCE_WEAPONS\020\023\022\030\n\024ITEM_CATEGORY_SWOR" + "DS\020\024\022\034\n\030ITEM_CATEGORY_WANDS_RODS\020\025\022!\n\035IT" + "EM_CATEGORY_PREMIUM_SCROLLS\020\026\022\035\n\031ITEM_CA" + "TEGORY_TIBIA_COINS\020\027\022#\n\037ITEM_CATEGORY_CR" + "EATURE_PRODUCTS\020\030\022\030\n\024ITEM_CATEGORY_QUIVE" + "R\020\031*\355\001\n\021PLAYER_PROFESSION\022\"\n\025PLAYER_PROF" + "ESSION_ANY\020\377\377\377\377\377\377\377\377\377\001\022\032\n\026PLAYER_PROFESSI" + "ON_NONE\020\000\022\034\n\030PLAYER_PROFESSION_KNIGHT\020\001\022" + "\035\n\031PLAYER_PROFESSION_PALADIN\020\002\022\036\n\032PLAYER" + "_PROFESSION_SORCERER\020\003\022\033\n\027PLAYER_PROFESS" + "ION_DRUID\020\004\022\036\n\032PLAYER_PROFESSION_PROMOTE" + "D\020\n*\203\001\n\023ANIMATION_LOOP_TYPE\022)\n\034ANIMATION" + "_LOOP_TYPE_PINGPONG\020\377\377\377\377\377\377\377\377\377\001\022 \n\034ANIMAT" + "ION_LOOP_TYPE_INFINITE\020\000\022\037\n\033ANIMATION_LO" + "OP_TYPE_COUNTED\020\001*4\n\tHOOK_TYPE\022\023\n\017HOOK_T" + "YPE_SOUTH\020\001\022\022\n\016HOOK_TYPE_EAST\020\002*\201\001\n\021FIXE" + "D_FRAME_GROUP\022!\n\035FIXED_FRAME_GROUP_OUTFI" + "T_IDLE\020\000\022#\n\037FIXED_FRAME_GROUP_OUTFIT_MOV" + "ING\020\001\022$\n FIXED_FRAME_GROUP_OBJECT_INITIA" + "L\020\002" ; static ::_pbi::once_flag descriptor_table_appearances_2eproto_once; const ::_pbi::DescriptorTable descriptor_table_appearances_2eproto = { - false, false, 6201, descriptor_table_protodef_appearances_2eproto, + false, false, 6243, descriptor_table_protodef_appearances_2eproto, "appearances.proto", &descriptor_table_appearances_2eproto_once, nullptr, 0, 26, schemas, file_default_instances, TableStruct_appearances_2eproto::offsets, @@ -4077,6 +4084,9 @@ class AppearanceFlags::_Internal { static void set_has_expirestop(HasBits* has_bits) { (*has_bits)[1] |= 4194304u; } + static void set_has_wrapkit(HasBits* has_bits) { + (*has_bits)[1] |= 8388608u; + } }; const ::Canary::protobuf::appearances::AppearanceFlagBank& @@ -4206,7 +4216,8 @@ AppearanceFlags::AppearanceFlags(const AppearanceFlags& from) , decltype(_impl_.wearout_){} , decltype(_impl_.clockexpire_){} , decltype(_impl_.expire_){} - , decltype(_impl_.expirestop_){}}; + , decltype(_impl_.expirestop_){} + , decltype(_impl_.wrapkit_){}}; _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_bank()) { @@ -4255,8 +4266,8 @@ AppearanceFlags::AppearanceFlags(const AppearanceFlags& from) _this->_impl_.upgradeclassification_ = new ::Canary::protobuf::appearances::AppearanceFlagUpgradeClassification(*from._impl_.upgradeclassification_); } ::memcpy(&_impl_.clip_, &from._impl_.clip_, - static_cast(reinterpret_cast(&_impl_.expirestop_) - - reinterpret_cast(&_impl_.clip_)) + sizeof(_impl_.expirestop_)); + static_cast(reinterpret_cast(&_impl_.wrapkit_) - + reinterpret_cast(&_impl_.clip_)) + sizeof(_impl_.wrapkit_)); // @@protoc_insertion_point(copy_constructor:Canary.protobuf.appearances.AppearanceFlags) } @@ -4323,6 +4334,7 @@ inline void AppearanceFlags::SharedCtor( , decltype(_impl_.clockexpire_){false} , decltype(_impl_.expire_){false} , decltype(_impl_.expirestop_){false} + , decltype(_impl_.wrapkit_){false} }; } @@ -4453,10 +4465,10 @@ void AppearanceFlags::Clear() { reinterpret_cast(&_impl_.reverse_addons_east_) - reinterpret_cast(&_impl_.unwrap_)) + sizeof(_impl_.reverse_addons_east_)); } - if (cached_has_bits & 0x007f0000u) { + if (cached_has_bits & 0x00ff0000u) { ::memset(&_impl_.reverse_addons_west_, 0, static_cast( - reinterpret_cast(&_impl_.expirestop_) - - reinterpret_cast(&_impl_.reverse_addons_west_)) + sizeof(_impl_.expirestop_)); + reinterpret_cast(&_impl_.wrapkit_) - + reinterpret_cast(&_impl_.reverse_addons_west_)) + sizeof(_impl_.wrapkit_)); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); @@ -4961,6 +4973,15 @@ const char* AppearanceFlags::_InternalParse(const char* ptr, ::_pbi::ParseContex } else goto handle_unusual; continue; + // optional bool wrapkit = 57; + case 57: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 200)) { + _Internal::set_has_wrapkit(&_impl_._has_bits_); + _impl_.wrapkit_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } else + goto handle_unusual; + continue; default: goto handle_unusual; } // switch @@ -5359,6 +5380,12 @@ uint8_t* AppearanceFlags::_InternalSerialize( target = ::_pbi::WireFormatLite::WriteBoolToArray(56, this->_internal_expirestop(), target); } + // optional bool wrapkit = 57; + if (cached_has_bits & 0x00800000u) { + target = stream->EnsureSpace(target); + target = ::_pbi::WireFormatLite::WriteBoolToArray(57, this->_internal_wrapkit(), target); + } + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); @@ -5666,7 +5693,7 @@ size_t AppearanceFlags::ByteSizeLong() const { } } - if (cached_has_bits & 0x007f0000u) { + if (cached_has_bits & 0x00ff0000u) { // optional bool reverse_addons_west = 50; if (cached_has_bits & 0x00010000u) { total_size += 2 + 1; @@ -5702,6 +5729,11 @@ size_t AppearanceFlags::ByteSizeLong() const { total_size += 2 + 1; } + // optional bool wrapkit = 57; + if (cached_has_bits & 0x00800000u) { + total_size += 2 + 1; + } + } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } @@ -5900,7 +5932,7 @@ void AppearanceFlags::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const } _this->_impl_._has_bits_[1] |= cached_has_bits; } - if (cached_has_bits & 0x007f0000u) { + if (cached_has_bits & 0x00ff0000u) { if (cached_has_bits & 0x00010000u) { _this->_impl_.reverse_addons_west_ = from._impl_.reverse_addons_west_; } @@ -5922,6 +5954,9 @@ void AppearanceFlags::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const if (cached_has_bits & 0x00400000u) { _this->_impl_.expirestop_ = from._impl_.expirestop_; } + if (cached_has_bits & 0x00800000u) { + _this->_impl_.wrapkit_ = from._impl_.wrapkit_; + } _this->_impl_._has_bits_[1] |= cached_has_bits; } _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); @@ -5945,8 +5980,8 @@ void AppearanceFlags::InternalSwap(AppearanceFlags* other) { swap(_impl_._has_bits_[1], other->_impl_._has_bits_[1]); _impl_.npcsaledata_.InternalSwap(&other->_impl_.npcsaledata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< - PROTOBUF_FIELD_OFFSET(AppearanceFlags, _impl_.expirestop_) - + sizeof(AppearanceFlags::_impl_.expirestop_) + PROTOBUF_FIELD_OFFSET(AppearanceFlags, _impl_.wrapkit_) + + sizeof(AppearanceFlags::_impl_.wrapkit_) - PROTOBUF_FIELD_OFFSET(AppearanceFlags, _impl_.bank_)>( reinterpret_cast(&_impl_.bank_), reinterpret_cast(&other->_impl_.bank_)); @@ -9523,6 +9558,9 @@ class SpecialMeaningAppearanceIds::_Internal { static void set_has_supply_stash_id(HasBits* has_bits) { (*has_bits)[0] |= 32u; } + static void set_has_reward_chest_id(HasBits* has_bits) { + (*has_bits)[0] |= 64u; + } }; SpecialMeaningAppearanceIds::SpecialMeaningAppearanceIds(::PROTOBUF_NAMESPACE_ID::Arena* arena, @@ -9542,12 +9580,13 @@ SpecialMeaningAppearanceIds::SpecialMeaningAppearanceIds(const SpecialMeaningApp , decltype(_impl_.crystal_coin_id_){} , decltype(_impl_.tibia_coin_id_){} , decltype(_impl_.stamped_letter_id_){} - , decltype(_impl_.supply_stash_id_){}}; + , decltype(_impl_.supply_stash_id_){} + , decltype(_impl_.reward_chest_id_){}}; _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&_impl_.gold_coin_id_, &from._impl_.gold_coin_id_, - static_cast(reinterpret_cast(&_impl_.supply_stash_id_) - - reinterpret_cast(&_impl_.gold_coin_id_)) + sizeof(_impl_.supply_stash_id_)); + static_cast(reinterpret_cast(&_impl_.reward_chest_id_) - + reinterpret_cast(&_impl_.gold_coin_id_)) + sizeof(_impl_.reward_chest_id_)); // @@protoc_insertion_point(copy_constructor:Canary.protobuf.appearances.SpecialMeaningAppearanceIds) } @@ -9564,6 +9603,7 @@ inline void SpecialMeaningAppearanceIds::SharedCtor( , decltype(_impl_.tibia_coin_id_){0u} , decltype(_impl_.stamped_letter_id_){0u} , decltype(_impl_.supply_stash_id_){0u} + , decltype(_impl_.reward_chest_id_){0u} }; } @@ -9591,10 +9631,10 @@ void SpecialMeaningAppearanceIds::Clear() { (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; - if (cached_has_bits & 0x0000003fu) { + if (cached_has_bits & 0x0000007fu) { ::memset(&_impl_.gold_coin_id_, 0, static_cast( - reinterpret_cast(&_impl_.supply_stash_id_) - - reinterpret_cast(&_impl_.gold_coin_id_)) + sizeof(_impl_.supply_stash_id_)); + reinterpret_cast(&_impl_.reward_chest_id_) - + reinterpret_cast(&_impl_.gold_coin_id_)) + sizeof(_impl_.reward_chest_id_)); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); @@ -9661,6 +9701,15 @@ const char* SpecialMeaningAppearanceIds::_InternalParse(const char* ptr, ::_pbi: } else goto handle_unusual; continue; + // optional uint32 reward_chest_id = 7; + case 7: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 56)) { + _Internal::set_has_reward_chest_id(&has_bits); + _impl_.reward_chest_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } else + goto handle_unusual; + continue; default: goto handle_unusual; } // switch @@ -9728,6 +9777,12 @@ uint8_t* SpecialMeaningAppearanceIds::_InternalSerialize( target = ::_pbi::WireFormatLite::WriteUInt32ToArray(6, this->_internal_supply_stash_id(), target); } + // optional uint32 reward_chest_id = 7; + if (cached_has_bits & 0x00000040u) { + target = stream->EnsureSpace(target); + target = ::_pbi::WireFormatLite::WriteUInt32ToArray(7, this->_internal_reward_chest_id(), target); + } + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); @@ -9745,7 +9800,7 @@ size_t SpecialMeaningAppearanceIds::ByteSizeLong() const { (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; - if (cached_has_bits & 0x0000003fu) { + if (cached_has_bits & 0x0000007fu) { // optional uint32 gold_coin_id = 1; if (cached_has_bits & 0x00000001u) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_gold_coin_id()); @@ -9776,6 +9831,11 @@ size_t SpecialMeaningAppearanceIds::ByteSizeLong() const { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_supply_stash_id()); } + // optional uint32 reward_chest_id = 7; + if (cached_has_bits & 0x00000040u) { + total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_reward_chest_id()); + } + } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } @@ -9796,7 +9856,7 @@ void SpecialMeaningAppearanceIds::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; - if (cached_has_bits & 0x0000003fu) { + if (cached_has_bits & 0x0000007fu) { if (cached_has_bits & 0x00000001u) { _this->_impl_.gold_coin_id_ = from._impl_.gold_coin_id_; } @@ -9815,6 +9875,9 @@ void SpecialMeaningAppearanceIds::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to if (cached_has_bits & 0x00000020u) { _this->_impl_.supply_stash_id_ = from._impl_.supply_stash_id_; } + if (cached_has_bits & 0x00000040u) { + _this->_impl_.reward_chest_id_ = from._impl_.reward_chest_id_; + } _this->_impl_._has_bits_[0] |= cached_has_bits; } _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); @@ -9836,8 +9899,8 @@ void SpecialMeaningAppearanceIds::InternalSwap(SpecialMeaningAppearanceIds* othe _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::PROTOBUF_NAMESPACE_ID::internal::memswap< - PROTOBUF_FIELD_OFFSET(SpecialMeaningAppearanceIds, _impl_.supply_stash_id_) - + sizeof(SpecialMeaningAppearanceIds::_impl_.supply_stash_id_) + PROTOBUF_FIELD_OFFSET(SpecialMeaningAppearanceIds, _impl_.reward_chest_id_) + + sizeof(SpecialMeaningAppearanceIds::_impl_.reward_chest_id_) - PROTOBUF_FIELD_OFFSET(SpecialMeaningAppearanceIds, _impl_.gold_coin_id_)>( reinterpret_cast(&_impl_.gold_coin_id_), reinterpret_cast(&other->_impl_.gold_coin_id_)); diff --git a/src/protobuf/appearances.pb.h b/src/protobuf/appearances.pb.h index 64f6a7485db..65bc2c7e9cc 100644 --- a/src/protobuf/appearances.pb.h +++ b/src/protobuf/appearances.pb.h @@ -2307,6 +2307,7 @@ class AppearanceFlags final : kClockexpireFieldNumber = 54, kExpireFieldNumber = 55, kExpirestopFieldNumber = 56, + kWrapkitFieldNumber = 57, }; // repeated .Canary.protobuf.appearances.AppearanceFlagNPC npcsaledata = 40; int npcsaledata_size() const; @@ -3116,6 +3117,19 @@ class AppearanceFlags final : void _internal_set_expirestop(bool value); public: + // optional bool wrapkit = 57; + bool has_wrapkit() const; + private: + bool _internal_has_wrapkit() const; + public: + void clear_wrapkit(); + bool wrapkit() const; + void set_wrapkit(bool value); + private: + bool _internal_wrapkit() const; + void _internal_set_wrapkit(bool value); + public: + // @@protoc_insertion_point(class_scope:Canary.protobuf.appearances.AppearanceFlags) private: class _Internal; @@ -3182,6 +3196,7 @@ class AppearanceFlags final : bool clockexpire_; bool expire_; bool expirestop_; + bool wrapkit_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_appearances_2eproto; @@ -6066,6 +6081,7 @@ class SpecialMeaningAppearanceIds final : kTibiaCoinIdFieldNumber = 4, kStampedLetterIdFieldNumber = 5, kSupplyStashIdFieldNumber = 6, + kRewardChestIdFieldNumber = 7, }; // optional uint32 gold_coin_id = 1; bool has_gold_coin_id() const; @@ -6145,6 +6161,19 @@ class SpecialMeaningAppearanceIds final : void _internal_set_supply_stash_id(uint32_t value); public: + // optional uint32 reward_chest_id = 7; + bool has_reward_chest_id() const; + private: + bool _internal_has_reward_chest_id() const; + public: + void clear_reward_chest_id(); + uint32_t reward_chest_id() const; + void set_reward_chest_id(uint32_t value); + private: + uint32_t _internal_reward_chest_id() const; + void _internal_set_reward_chest_id(uint32_t value); + public: + // @@protoc_insertion_point(class_scope:Canary.protobuf.appearances.SpecialMeaningAppearanceIds) private: class _Internal; @@ -6161,6 +6190,7 @@ class SpecialMeaningAppearanceIds final : uint32_t tibia_coin_id_; uint32_t stamped_letter_id_; uint32_t supply_stash_id_; + uint32_t reward_chest_id_; }; union { Impl_ _impl_; }; friend struct ::TableStruct_appearances_2eproto; @@ -10187,6 +10217,34 @@ inline void AppearanceFlags::set_expirestop(bool value) { // @@protoc_insertion_point(field_set:Canary.protobuf.appearances.AppearanceFlags.expirestop) } +// optional bool wrapkit = 57; +inline bool AppearanceFlags::_internal_has_wrapkit() const { + bool value = (_impl_._has_bits_[1] & 0x00800000u) != 0; + return value; +} +inline bool AppearanceFlags::has_wrapkit() const { + return _internal_has_wrapkit(); +} +inline void AppearanceFlags::clear_wrapkit() { + _impl_.wrapkit_ = false; + _impl_._has_bits_[1] &= ~0x00800000u; +} +inline bool AppearanceFlags::_internal_wrapkit() const { + return _impl_.wrapkit_; +} +inline bool AppearanceFlags::wrapkit() const { + // @@protoc_insertion_point(field_get:Canary.protobuf.appearances.AppearanceFlags.wrapkit) + return _internal_wrapkit(); +} +inline void AppearanceFlags::_internal_set_wrapkit(bool value) { + _impl_._has_bits_[1] |= 0x00800000u; + _impl_.wrapkit_ = value; +} +inline void AppearanceFlags::set_wrapkit(bool value) { + _internal_set_wrapkit(value); + // @@protoc_insertion_point(field_set:Canary.protobuf.appearances.AppearanceFlags.wrapkit) +} + // ------------------------------------------------------------------- // AppearanceFlagUpgradeClassification @@ -11319,6 +11377,34 @@ inline void SpecialMeaningAppearanceIds::set_supply_stash_id(uint32_t value) { // @@protoc_insertion_point(field_set:Canary.protobuf.appearances.SpecialMeaningAppearanceIds.supply_stash_id) } +// optional uint32 reward_chest_id = 7; +inline bool SpecialMeaningAppearanceIds::_internal_has_reward_chest_id() const { + bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0; + return value; +} +inline bool SpecialMeaningAppearanceIds::has_reward_chest_id() const { + return _internal_has_reward_chest_id(); +} +inline void SpecialMeaningAppearanceIds::clear_reward_chest_id() { + _impl_.reward_chest_id_ = 0u; + _impl_._has_bits_[0] &= ~0x00000040u; +} +inline uint32_t SpecialMeaningAppearanceIds::_internal_reward_chest_id() const { + return _impl_.reward_chest_id_; +} +inline uint32_t SpecialMeaningAppearanceIds::reward_chest_id() const { + // @@protoc_insertion_point(field_get:Canary.protobuf.appearances.SpecialMeaningAppearanceIds.reward_chest_id) + return _internal_reward_chest_id(); +} +inline void SpecialMeaningAppearanceIds::_internal_set_reward_chest_id(uint32_t value) { + _impl_._has_bits_[0] |= 0x00000040u; + _impl_.reward_chest_id_ = value; +} +inline void SpecialMeaningAppearanceIds::set_reward_chest_id(uint32_t value) { + _internal_set_reward_chest_id(value); + // @@protoc_insertion_point(field_set:Canary.protobuf.appearances.SpecialMeaningAppearanceIds.reward_chest_id) +} + #ifdef __GNUC__ #pragma GCC diagnostic pop #endif // __GNUC__ diff --git a/src/protobuf/appearances.proto b/src/protobuf/appearances.proto index 2bb1690fc31..ed924febfc4 100644 --- a/src/protobuf/appearances.proto +++ b/src/protobuf/appearances.proto @@ -177,6 +177,7 @@ message AppearanceFlags { optional bool clockexpire = 54; optional bool expire = 55; optional bool expirestop = 56; + optional bool wrapkit = 57; } message AppearanceFlagUpgradeClassification { @@ -261,6 +262,7 @@ message SpecialMeaningAppearanceIds { optional uint32 tibia_coin_id = 4; optional uint32 stamped_letter_id = 5; optional uint32 supply_stash_id = 6; + optional uint32 reward_chest_id = 7; } enum FIXED_FRAME_GROUP { diff --git a/src/server/network/protocol/protocolgame.cpp b/src/server/network/protocol/protocolgame.cpp index 4dbb0d33056..86911d85532 100644 --- a/src/server/network/protocol/protocolgame.cpp +++ b/src/server/network/protocol/protocolgame.cpp @@ -207,6 +207,32 @@ namespace { } } } + + /** + * @brief Sends the container category to the network message. + * + * @note The default value is "all", which is the first enum (0). The message must always start with "All". + * + * @details for example of enum see the ContainerCategory_t + * + * @param msg The network message to send the category to. + */ + template + void sendContainerCategory(NetworkMessage &msg, phmap::flat_hash_set categories = {}, uint8_t categoryType = 0) { + msg.addByte(categoryType); + g_logger().debug("Sendding category type '{}', categories total size '{}'", categoryType, categories.size()); + msg.addByte(categories.size()); + for (auto value : categories) { + if (value == T::All) { + continue; + } + + g_logger().debug("Sendding category number '{}', category name '{}'", static_cast(value), magic_enum::enum_name(value).data()); + msg.addByte(static_cast(value)); + msg.addString(toStartCaseWithSpace(magic_enum::enum_name(value).data())); + } + } + } // namespace ProtocolGame::ProtocolGame(Connection_ptr initConnection) : @@ -277,6 +303,10 @@ void ProtocolGame::AddItem(NetworkMessage &msg, uint16_t id, uint8_t count, uint msg.add(it.charges); msg.addByte(0x01); // Brand-new } + + if (it.isWrapKit && !oldProtocol) { + msg.add(0x00); + } } void ProtocolGame::AddItem(NetworkMessage &msg, const Item* item) { @@ -404,6 +434,15 @@ void ProtocolGame::AddItem(NetworkMessage &msg, const Item* item) { msg.addByte(item->getSubType() == it.charges ? 0x01 : 0x00); // Brand-new } } + + if (it.isWrapKit && !oldProtocol) { + uint16_t unWrapId = item->getCustomAttribute("unWrapId") ? static_cast(item->getCustomAttribute("unWrapId")->getInteger()) : 0; + if (unWrapId != 0) { + msg.add(unWrapId); + } else { + msg.add(0x00); + } + } } void ProtocolGame::release() { @@ -1275,7 +1314,8 @@ void ProtocolGame::parsePacketFromDispatcher(NetworkMessage msg, uint8_t recvbyt // case 0xDF, 0xE0, 0xE1, 0xFB, 0xFC, 0xFD, 0xFE Premium Shop. default: - g_logger().debug("Player: {} sent an unknown packet header: x0{}", player->getName(), static_cast(recvbyte)); + std::string hexString = fmt::format("0x{:02x}", recvbyte); + g_logger().debug("Player '{}' sent unknown packet header: hex[{}], decimal[{}]", player->getName(), asUpperCaseString(hexString), recvbyte); break; } } @@ -3069,7 +3109,8 @@ void ProtocolGame::parseBrowseField(NetworkMessage &msg) { void ProtocolGame::parseSeekInContainer(NetworkMessage &msg) { uint8_t containerId = msg.getByte(); uint16_t index = msg.get(); - addGameTask(&Game::playerSeekInContainer, player->getID(), containerId, index); + auto primaryType = msg.getByte(); + addGameTask(&Game::playerSeekInContainer, player->getID(), containerId, index, primaryType); } // Send methods @@ -4186,6 +4227,10 @@ void ProtocolGame::sendUnjustifiedPoints(const uint8_t &dayProgress, const uint8 } void ProtocolGame::sendContainer(uint8_t cid, const Container* container, bool hasParent, uint16_t firstIndex) { + if (!player) { + return; + } + NetworkMessage msg; msg.addByte(0x6E); @@ -4199,6 +4244,8 @@ void ProtocolGame::sendContainer(uint8_t cid, const Container* container, bool h msg.addString(container->getName()); } + const auto itemsStoreInboxToSend = container->getStoreInboxFilteredItems(); + msg.addByte(container->capacity()); msg.addByte(hasParent ? 0x01 : 0x00); @@ -4212,6 +4259,9 @@ void ProtocolGame::sendContainer(uint8_t cid, const Container* container, bool h msg.addByte(container->hasPagination() ? 0x01 : 0x00); // Pagination uint32_t containerSize = container->size(); + if (!itemsStoreInboxToSend.empty()) { + containerSize = itemsStoreInboxToSend.size(); + } msg.add(containerSize); msg.add(firstIndex); @@ -4223,17 +4273,58 @@ void ProtocolGame::sendContainer(uint8_t cid, const Container* container, bool h maxItemsToSend = container->capacity(); } + const ItemDeque &itemList = container->getItemList(); if (firstIndex >= containerSize) { msg.addByte(0x00); + } else if (container->getID() == ITEM_STORE_INBOX && !itemsStoreInboxToSend.empty()) { + msg.addByte(std::min(maxItemsToSend, containerSize)); + for (const auto item : itemsStoreInboxToSend) { + AddItem(msg, item); + } } else { msg.addByte(std::min(maxItemsToSend, containerSize)); uint32_t i = 0; - const ItemDeque &itemList = container->getItemList(); for (ItemDeque::const_iterator it = itemList.begin() + firstIndex, end = itemList.end(); i < maxItemsToSend && it != end; ++it, ++i) { AddItem(msg, *it); } } + + // From here on down is for version 13.21+ + if (oldProtocol) { + writeToOutputBuffer(msg); + return; + } + + if (container->isStoreInbox()) { + auto categories = container->getStoreInboxValidCategories(); + const auto enumName = container->getAttribute(ItemAttribute_t::STORE_INBOX_CATEGORY); + auto category = magic_enum::enum_cast(enumName); + if (category.has_value()) { + bool toSendCategory = false; + // Check if category exist in the deque + for (const auto &tempCategory : categories) { + if (tempCategory == category.value()) { + toSendCategory = true; + g_logger().debug("found category {}", toSendCategory); + } + } + + if (!toSendCategory) { + Container* container = player->getContainerByID(cid); + if (container) { + container->removeAttribute(ItemAttribute_t::STORE_INBOX_CATEGORY); + } + } + sendContainerCategory(msg, categories, static_cast(category.value())); + } else { + sendContainerCategory(msg, categories); + } + } else { + msg.addByte(0x00); + msg.addByte(0x00); + } + writeToOutputBuffer(msg); } diff --git a/src/utils/tools.cpp b/src/utils/tools.cpp index 6040f029383..f7f0a725177 100644 --- a/src/utils/tools.cpp +++ b/src/utils/tools.cpp @@ -303,7 +303,7 @@ std::string toPascalCase(const std::string &str) { result += std::toupper(ch); capitalizeNext = false; } else { - result += std::tolower(ch); + result += ch; // Keep the character as is. } } } @@ -343,6 +343,22 @@ std::string toKebabCase(const std::string &str) { return result; } +std::string toStartCaseWithSpace(const std::string &str) { + std::string result; + for (size_t i = 0; i < str.length(); ++i) { + char ch = str[i]; + if (i == 0 || std::isupper(ch)) { + if (i > 0) { + result += ' '; + } + result += std::toupper(ch); + } else { + result += std::tolower(ch); + } + } + return result; +} + StringVector explodeString(const std::string &inString, const std::string &separator, int32_t limit /* = -1*/) { StringVector returnVector; std::string::size_type start = 0, end = 0; @@ -1258,6 +1274,9 @@ const char* getReturnMessage(ReturnValue value) { case RETURNVALUE_DEPOTISFULL: return "You cannot put more items in this depot."; + case RETURNVALUE_CONTAINERISFULL: + return "You cannot put more items in this container."; + case RETURNVALUE_CANNOTUSETHISOBJECT: return "You cannot use this object."; diff --git a/src/utils/tools.hpp b/src/utils/tools.hpp index dd47aea55eb..e6f70973344 100644 --- a/src/utils/tools.hpp +++ b/src/utils/tools.hpp @@ -33,6 +33,7 @@ std::string toCamelCase(const std::string &str); std::string toPascalCase(const std::string &str); std::string toSnakeCase(const std::string &str); std::string toKebabCase(const std::string &str); +std::string toStartCaseWithSpace(const std::string &str); using StringVector = std::vector; using IntegerVector = std::vector; From 0c7a52aab8d8e3edc9c1b9a0000fa395c94e77fe Mon Sep 17 00:00:00 2001 From: Luan Santos Date: Mon, 11 Sep 2023 23:08:25 -0700 Subject: [PATCH 10/10] feat: multiple creature icons (#1585) The Tibia client can support up to 3 of these quest icons. And now so can we, you can manage these like so: ```lua player:setIcon("magma-bubble", CreatureIconCategory_Quests, CreatureIconQuests_GreenShield, 0) player:setIcon("something", CreatureIconCategory_Quests, CreatureIconQuests_Hazard, 5) player:setIcon("something-else", CreatureIconCategory_Quests, CreatureIconQuests_WhiteCross, 15) player:removeIcon("magma-bubble") player:removeIcon("something") player:removeIcon("something-else") ``` I've also migrated forge and hazard systems to use the new icons, which should in turn serve as a living example of how to use them. Here's a demo: https://github.com/opentibiabr/canary/assets/223760/937f9638-0155-4fb1-8c52-8957b5718e26 --- .../magma_bubble_fight.lua | 33 ++++++-- data/libs/functions/creature.lua | 4 - src/creatures/creature.cpp | 3 +- src/creatures/creature.hpp | 38 +++++++-- src/creatures/monsters/monster.cpp | 6 +- src/creatures/monsters/monster.hpp | 15 ++-- src/creatures/players/player.cpp | 4 +- .../creatures/creature_functions.cpp | 81 +++++++++++++++---- .../creatures/creature_functions.hpp | 6 ++ .../creatures/monster/monster_functions.cpp | 7 +- src/server/network/protocol/protocolgame.cpp | 12 +-- 11 files changed, 151 insertions(+), 58 deletions(-) diff --git a/data-otservbr-global/scripts/quests/primal_ordeal_quest/magma_bubble_fight.lua b/data-otservbr-global/scripts/quests/primal_ordeal_quest/magma_bubble_fight.lua index 2c5d8957a28..f13c55d89e4 100644 --- a/data-otservbr-global/scripts/quests/primal_ordeal_quest/magma_bubble_fight.lua +++ b/data-otservbr-global/scripts/quests/primal_ordeal_quest/magma_bubble_fight.lua @@ -95,25 +95,25 @@ end encounter:register() local function addShieldStack(player) - local currentIcon = player:getIcon() + local currentIcon = player:getIcon("magma-bubble") if not currentIcon or currentIcon.category ~= CreatureIconCategory_Quests or currentIcon.icon ~= CreatureIconQuests_GreenShield then - player:setIcon(CreatureIconCategory_Quests, CreatureIconQuests_GreenShield, 5) + player:setIcon("magma-bubble", CreatureIconCategory_Quests, CreatureIconQuests_GreenShield, 5) return true end - player:setIcon(CreatureIconCategory_Quests, CreatureIconQuests_GreenShield, currentIcon.count + 5) + player:setIcon("magma-bubble", CreatureIconCategory_Quests, CreatureIconQuests_GreenShield, currentIcon.count + 5) end local function tickShields(player) - local currentIcon = player:getIcon() + local currentIcon = player:getIcon("magma-bubble") if not currentIcon or currentIcon.category ~= CreatureIconCategory_Quests or currentIcon.icon ~= CreatureIconQuests_GreenShield then return 0 end if currentIcon.count <= 0 then - player:clearIcon() + player:removeIcon("magma-bubble") return 0 end local newCount = currentIcon.count - 1 - player:setIcon(CreatureIconCategory_Quests, CreatureIconQuests_GreenShield, newCount) + player:setIcon("magma-bubble", CreatureIconCategory_Quests, CreatureIconQuests_GreenShield, newCount) return newCount end @@ -294,3 +294,24 @@ function magmaBubbleDeath.onDeath() end magmaBubbleDeath:register() + +local zoneEvent = ZoneEvent(bossZone) +function zoneEvent.afterEnter(_zone, creature) + local player = creature:getPlayer() + if not player then + return false + end + + player:setIcon("magma-bubble", CreatureIconCategory_Quests, CreatureIconQuests_GreenShield, 0) +end + +function zoneEvent.afterLeave(_zone, creature) + local player = creature:getPlayer() + if not player then + return false + end + + player:removeIcon("magma-bubble") +end + +zoneEvent:register() diff --git a/data/libs/functions/creature.lua b/data/libs/functions/creature.lua index 04dcb9e8473..86245cc2491 100644 --- a/data/libs/functions/creature.lua +++ b/data/libs/functions/creature.lua @@ -203,7 +203,3 @@ function Creature:addEventStamina(target) end end end - -function Creature:clearIcon() - self:setIcon(0, 0) -end diff --git a/src/creatures/creature.cpp b/src/creatures/creature.cpp index bc5fda492e7..78d7720bf57 100644 --- a/src/creatures/creature.cpp +++ b/src/creatures/creature.cpp @@ -1788,8 +1788,7 @@ const phmap::parallel_flat_hash_set> Creature::getZones() return Zone::getZones(getPosition()); } -void Creature::setIcon(CreatureIcon icon) { - creatureIcon = icon; +void Creature::iconChanged() const { if (!tile) { return; } diff --git a/src/creatures/creature.hpp b/src/creatures/creature.hpp index 9070ae41230..3349ddb83a9 100644 --- a/src/creatures/creature.hpp +++ b/src/creatures/creature.hpp @@ -222,16 +222,41 @@ class Creature : virtual public Thing { varBuffs[buff] += modifier; } - virtual CreatureIcon getIcon() const { - return creatureIcon; + virtual std::vector getIcons() const { + std::vector icons; + icons.reserve(creatureIcons.size()); + for (const auto &[_, icon] : creatureIcons) { + if (icon.isSet()) { + icons.push_back(icon); + } + } + return icons; + } + + virtual CreatureIcon getIcon(const std::string &key) const { + if (!creatureIcons.contains(key)) { + return CreatureIcon(); + } + return creatureIcons.at(key); } - void setIcon(CreatureIcon icon); + void setIcon(const std::string &key, CreatureIcon icon) { + creatureIcons[key] = icon; + iconChanged(); + } + + void removeIcon(const std::string &key) { + creatureIcons.erase(key); + iconChanged(); + } - void clearIcon() { - setIcon(CreatureIcon()); + void clearIcons() { + creatureIcons.clear(); + iconChanged(); } + void iconChanged() const; + const Outfit_t getCurrentOutfit() const { return currentOutfit; } @@ -726,7 +751,8 @@ class Creature : virtual public Thing { uint8_t wheelOfDestinyDrainBodyDebuff = 0; - CreatureIcon creatureIcon = CreatureIcon(); + // use map here instead of phmap to keep the keys in a predictable order + std::map creatureIcons = {}; // creature script events bool hasEventRegistered(CreatureEventType_t event) const { diff --git a/src/creatures/monsters/monster.cpp b/src/creatures/monsters/monster.cpp index f344529a4d2..43d41567bfa 100644 --- a/src/creatures/monsters/monster.cpp +++ b/src/creatures/monsters/monster.cpp @@ -2122,12 +2122,12 @@ void Monster::configureForgeSystem() { if (monsterForgeClassification == ForgeClassifications_t::FORGE_FIENDISH_MONSTER) { setForgeStack(15); - setIcon(CreatureIcon(CreatureIconModifications_t::Fiendish, 0 /* don't show stacks on fiends */)); + setIcon("forge", CreatureIcon(CreatureIconModifications_t::Fiendish, 0 /* don't show stacks on fiends */)); g_game().updateCreatureIcon(this); } else if (monsterForgeClassification == ForgeClassifications_t::FORGE_INFLUENCED_MONSTER) { auto stack = static_cast(normal_random(1, 5)); setForgeStack(stack); - setIcon(CreatureIcon(CreatureIconModifications_t::Influenced, stack)); + setIcon("forge", CreatureIcon(CreatureIconModifications_t::Influenced, stack)); g_game().updateCreatureIcon(this); } @@ -2153,7 +2153,7 @@ void Monster::clearFiendishStatus() { health = mType->info.health * mType->getHealthMultiplier(); healthMax = mType->info.healthMax * mType->getHealthMultiplier(); - clearIcon(); + removeIcon("forge"); g_game().updateCreatureIcon(this); g_game().sendUpdateCreature(this); } diff --git a/src/creatures/monsters/monster.hpp b/src/creatures/monsters/monster.hpp index f1c966fcbc3..a479b494a9a 100644 --- a/src/creatures/monsters/monster.hpp +++ b/src/creatures/monsters/monster.hpp @@ -160,18 +160,19 @@ class Monster final : public Creature { return challengeFocusDuration > 0; } - CreatureIcon getIcon() const override { - if (creatureIcon.isSet()) { - return creatureIcon; + std::vector getIcons() const override { + const auto creatureIcons = Creature::getIcons(); + if (!creatureIcons.empty()) { + return creatureIcons; } if (challengeMeleeDuration > 0 && mType->info.targetDistance > targetDistance) { - return CreatureIcon(CreatureIconModifications_t::TurnedMelee); + return { CreatureIcon(CreatureIconModifications_t::TurnedMelee) }; } else if (varBuffs[BUFF_DAMAGERECEIVED] > 100) { - return CreatureIcon(CreatureIconModifications_t::HigherDamageReceived); + return { CreatureIcon(CreatureIconModifications_t::HigherDamageReceived) }; } else if (varBuffs[BUFF_DAMAGEDEALT] < 100) { - return CreatureIcon(CreatureIconModifications_t::LowerDamageDealt); + return { CreatureIcon(CreatureIconModifications_t::LowerDamageDealt) }; } - return CreatureIcon(); + return {}; } void setNormalCreatureLight() override; diff --git a/src/creatures/players/player.cpp b/src/creatures/players/player.cpp index 5b77ac27ded..b018a9d5e25 100644 --- a/src/creatures/players/player.cpp +++ b/src/creatures/players/player.cpp @@ -7569,9 +7569,9 @@ void Player::setHazardSystemPoints(int32_t count) { addStorageValue(STORAGEVALUE_HAZARDCOUNT, std::max(0, std::min(0xFFFF, count)), true); reloadHazardSystemPointsCounter = true; if (count > 0) { - setIcon(CreatureIcon(CreatureIconQuests_t::Hazard, count)); + setIcon("hazard", CreatureIcon(CreatureIconQuests_t::Hazard, count)); } else { - clearIcon(); + removeIcon("hazard"); } } diff --git a/src/lua/functions/creatures/creature_functions.cpp b/src/lua/functions/creatures/creature_functions.cpp index 6abea6b2084..d1ec3d19dab 100644 --- a/src/lua/functions/creatures/creature_functions.cpp +++ b/src/lua/functions/creatures/creature_functions.cpp @@ -982,46 +982,95 @@ int CreatureFunctions::luaCreatureGetZones(lua_State* L) { } int CreatureFunctions::luaCreatureSetIcon(lua_State* L) { - // creature:setIcon(category, icon[, number]) - Creature* creature = getUserdata(L, 1); + // creature:setIcon(key, category, icon[, number]) + auto creature = getUserdata(L, 1); if (!creature) { reportErrorFunc(getErrorDesc(LUA_ERROR_CREATURE_NOT_FOUND)); pushBoolean(L, false); return 1; } - auto category = getNumber(L, 2); - auto count = getNumber(L, 4, 0); + const auto key = getString(L, 2); + auto category = getNumber(L, 3); + auto count = getNumber(L, 5, 0); CreatureIcon creatureIcon; if (category == CreatureIconCategory_t::Modifications) { - auto icon = getNumber(L, 3); + auto icon = getNumber(L, 5); creatureIcon = CreatureIcon(icon, count); } else { - auto icon = getNumber(L, 3); + auto icon = getNumber(L, 4); creatureIcon = CreatureIcon(icon, count); } - creature->setIcon(creatureIcon); + creature->setIcon(key, creatureIcon); pushBoolean(L, true); return 1; } -int CreatureFunctions::luaCreatureGetIcon(lua_State* L) { - // creature:getIcon() - Creature* creature = getUserdata(L, 1); +int CreatureFunctions::luaCreatureGetIcons(lua_State* L) { + // creature:getIcons() + const auto creature = getUserdata(L, 1); if (!creature) { reportErrorFunc(getErrorDesc(LUA_ERROR_CREATURE_NOT_FOUND)); pushBoolean(L, false); return 1; } - auto creatureIcon = creature->getIcon(); - if (creatureIcon.isNone()) { + auto icons = creature->getIcons(); + lua_createtable(L, static_cast(icons.size()), 0); + for (auto &icon : icons) { + lua_createtable(L, 0, 3); + setField(L, "category", static_cast(icon.category)); + setField(L, "icon", icon.serialize()); + setField(L, "count", icon.count); + lua_rawseti(L, -2, static_cast(icon.category)); + } + return 1; +} + +int CreatureFunctions::luaCreatureGetIcon(lua_State* L) { + // creature:getIcon(key) + const auto creature = getUserdata(L, 1); + if (!creature) { + reportErrorFunc(getErrorDesc(LUA_ERROR_CREATURE_NOT_FOUND)); + pushBoolean(L, false); + return 1; + } + const auto key = getString(L, 2); + auto icon = creature->getIcon(key); + if (icon.isSet()) { + lua_createtable(L, 0, 3); + setField(L, "category", static_cast(icon.category)); + setField(L, "icon", icon.serialize()); + setField(L, "count", icon.count); + } else { lua_pushnil(L); + } + return 1; +} + +int CreatureFunctions::luaCreatureRemoveIcon(lua_State* L) { + // creature:removeIcon(key) + auto creature = getUserdata(L, 1); + if (!creature) { + reportErrorFunc(getErrorDesc(LUA_ERROR_CREATURE_NOT_FOUND)); + pushBoolean(L, false); return 1; } - lua_createtable(L, 0, 3); - setField(L, "category", static_cast(creatureIcon.category)); - setField(L, "icon", creatureIcon.serialize()); - setField(L, "count", creatureIcon.count); + const auto key = getString(L, 2); + creature->removeIcon(key); + pushBoolean(L, true); + return 1; +} + +int CreatureFunctions::luaCreatureClearIcons(lua_State* L) { + // creature:clearIcons() + auto creature = getUserdata(L, 1); + if (!creature) { + reportErrorFunc(getErrorDesc(LUA_ERROR_CREATURE_NOT_FOUND)); + pushBoolean(L, false); + return 1; + } + creature->clearIcons(); + pushBoolean(L, true); return 1; } diff --git a/src/lua/functions/creatures/creature_functions.hpp b/src/lua/functions/creatures/creature_functions.hpp index 1d1b22a9f71..426e4859104 100644 --- a/src/lua/functions/creatures/creature_functions.hpp +++ b/src/lua/functions/creatures/creature_functions.hpp @@ -82,6 +82,9 @@ class CreatureFunctions final : LuaScriptInterface { registerMethod(L, "Creature", "getZones", CreatureFunctions::luaCreatureGetZones); registerMethod(L, "Creature", "setIcon", CreatureFunctions::luaCreatureSetIcon); registerMethod(L, "Creature", "getIcon", CreatureFunctions::luaCreatureGetIcon); + registerMethod(L, "Creature", "getIcons", CreatureFunctions::luaCreatureGetIcons); + registerMethod(L, "Creature", "removeIcon", CreatureFunctions::luaCreatureRemoveIcon); + registerMethod(L, "Creature", "clearIcons", CreatureFunctions::luaCreatureClearIcons); CombatFunctions::init(L); MonsterFunctions::init(L); @@ -178,5 +181,8 @@ class CreatureFunctions final : LuaScriptInterface { static int luaCreatureGetZones(lua_State* L); static int luaCreatureSetIcon(lua_State* L); + static int luaCreatureGetIcons(lua_State* L); static int luaCreatureGetIcon(lua_State* L); + static int luaCreatureRemoveIcon(lua_State* L); + static int luaCreatureClearIcons(lua_State* L); }; diff --git a/src/lua/functions/creatures/monster/monster_functions.cpp b/src/lua/functions/creatures/monster/monster_functions.cpp index 0989be8449c..bca5a2e421e 100644 --- a/src/lua/functions/creatures/monster/monster_functions.cpp +++ b/src/lua/functions/creatures/monster/monster_functions.cpp @@ -470,12 +470,7 @@ int MonsterFunctions::luaMonsterSetForgeStack(lua_State* L) { auto icon = stack < 15 ? CreatureIconModifications_t::Influenced : CreatureIconModifications_t::Fiendish; - monster->setIcon(CreatureIcon( - icon, - icon == CreatureIconModifications_t::Influenced - ? static_cast(stack) - : 0 // don't show the stack for fiendish - )); + monster->setIcon("forge", CreatureIcon(icon, icon == CreatureIconModifications_t::Influenced ? static_cast(stack) : 0)); g_game().updateCreatureIcon(monster); g_game().sendUpdateCreature(monster); return 1; diff --git a/src/server/network/protocol/protocolgame.cpp b/src/server/network/protocol/protocolgame.cpp index 86911d85532..f4b70f31d4d 100644 --- a/src/server/network/protocol/protocolgame.cpp +++ b/src/server/network/protocol/protocolgame.cpp @@ -3175,12 +3175,12 @@ void ProtocolGame::addCreatureIcon(NetworkMessage &msg, const Creature* creature return; } - const auto icon = creature->getIcon(); - // 0 = no icon, 1 = we'll send an icon - if (icon.isNone()) { - msg.addByte(0); - } else { - msg.addByte(1); + const auto icons = creature->getIcons(); + // client only supports 3 icons, otherwise it will crash + const auto count = icons.size() > 3 ? 3 : icons.size(); + msg.addByte(count); + for (uint8_t i = 0; i < count; ++i) { + const auto &icon = icons[i]; msg.addByte(icon.serialize()); msg.addByte(static_cast(icon.category)); msg.add(icon.count);

{BF5q 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�vOSifOlyw1VdFnZW;P|q!f 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